A personal toolbox of standalone, numbered utilities for systems, networking, DevOps, security, automation, media, firmware, and everyday problem-solving. Each tool lives in its own directory with its own README, scripts, and dependencies, so you can copy or use any single one without the rest of the repo.
  • Python 94.5%
  • Shell 5.4%
  • Dockerfile 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
JD Bungart 18163d1023 png-to-web-icons: add PNG logo to web icon set generator
Builds a complete icon set from one PNG logo: the logo at twelve sizes on
transparent, black and white backgrounds, favicon.ico and PNG favicons, Apple
touch icons, PWA and maskable Android icons, a Windows tile, Open Graph cards,
site.webmanifest and browserconfig.xml. The logo is trimmed, its alpha haze
cleaned, and centred with a margin suited to each use. A README in the output
folder lists every file with its size, the settings and the <head> tags.

Every output is rebuilt from pixel data. Only chunks that change how the
pixels display are carried over (iCCP, sRGB, gAMA, cHRM, cICP, pHYs); C2PA
credentials, EXIF, XMP and other text, timestamps and private chunks are
dropped, as is anything after IEND. Each PNG written is re-read and checked
chunk by chunk. --strip-source removes the same metadata from the input in
place by dropping chunks, without re-encoding the image data.

Existing output is refused unless --force is given, files are written under a
temporary name and renamed into place, and --dry-run shows the metadata
decisions and the file list without writing. Each step is printed as it
happens; --quiet prints errors only.

Verified with Pillow 12.3 on Python 3.14 against an ImageMagick-rewritten
logo, an image with a C2PA manifest, 16-bit and palette PNGs, and
truncated, corrupt, animated and ICC-bomb inputs. ruff (all rules, see
ruff.toml) and mypy --strict pass.
2026-09-16 05:55:47 +08:00
00-template jdneer-toolbox 2026-08-30 01:55:40 +08:00
01-fat32-usb-image-builder jdneer-toolbox 2026-08-30 01:55:40 +08:00
02-dedupe-movies jdneer-toolbox 2026-08-30 01:55:40 +08:00
03-dedupe-tv-shows jdneer-toolbox 2026-08-30 01:55:40 +08:00
04-purge-forgejo-action-runs purge-forgejo-action-runs: correct the token scope, stop on refusal 2026-08-30 02:02:24 +08:00
05-arw-to-jpg arw-to-jpg: add Sony ARW to JPEG converter 2026-09-07 22:57:55 +08:00
06-png-to-web-icons png-to-web-icons: add PNG logo to web icon set generator 2026-09-16 05:55:47 +08:00
.gitignore jdneer-toolbox 2026-08-30 01:55:40 +08:00
LICENSE jdneer-toolbox 2026-08-30 01:55:40 +08:00
README.md png-to-web-icons: add PNG logo to web icon set generator 2026-09-16 05:55:47 +08:00

jdneer-toolbox

A personal toolbox of standalone, numbered utilities for systems, networking, DevOps, security, automation, media, firmware, and everyday problem-solving. Each tool lives in its own directory with its own README, scripts, and dependencies, so you can copy or use any single one without the rest of the repo.

Tools

# Tool Description
00 template README template and structure for new tools
01 fat32-usb-image-builder Build a mountable FAT32 USB mass-storage image from files in src/
02 dedupe-movies Deduplicate a Jellyfin movie library by IMDb ID, keeping the best-quality copy
03 dedupe-tv-shows Deduplicate a Jellyfin TV library by IMDb ID, keeping the most complete copy without losing episodes
04 purge-forgejo-action-runs Bulk-delete Forgejo Actions workflow runs for the repository a checkout points at, keeping the newest N
05 arw-to-jpg Batch-convert Sony ARW raws to sRGB JPEGs with LibRaw, carrying camera, lens and exposure metadata over
06 png-to-web-icons Turn one PNG logo into a full favicon, PWA, Apple, Windows and social icon set, stripping C2PA, EXIF and text metadata

Layout

Each tool lives in its own numbered directory:

NN-short-name/
├── README.md          # Tool-specific documentation
├── .gitignore         # Tool-specific exclusions
└── ...                # The tool itself

The root README.md indexes the tools. The root .gitignore handles global exclusions (AI artifacts, OS files, IDE files, model downloads). Each tool's own .gitignore handles its build artifacts and input/output directories.

Adding a new tool

  1. Copy 00-template/README.md to NN-tool-name/README.md and fill it in.
  2. Add the tool, its own .gitignore, and any wrappers it needs.
  3. Add a row to the table above.
  4. Keep the tool self-contained so it can be used independently.

License

MIT

Repository

Remote: ssh://git@git.jdneer.com:29500/jd/jdneer-toolbox.git