[3.0.0] - 2026-05-10
Breaking Changes
| v2.x | v3.0 |
|---|---|
-h <n> (height) |
--height <n> |
-H, --help |
-h, --help (standard) |
-p ti-branding [--adaptive …] |
imgconvert brand <master> --sdk android [--adaptive …] |
-p alloy --modern |
removed; use brand subcommand |
-p alloy (legacy multi-scale) |
imgconvert alloy <source> |
imgconvert config |
imgconvert config init |
--replace-originals |
--replace (old name kept as hidden alias) |
imgconvert brandrequires--sdk <target>— no more default. Valid target:android(kotlin, react-native, flutter planned for a future release). For Titanium projects, usepurgetss brandwhich has first-class support (master auto-discovery from./purgetss/brand/, config file integration, etc.).DefaultIcon.pngpadding semantics changed —imgconvert brandno longer accepts--ios-padding. The universalDefaultIcon.pngnow uses--padding(the Android safe-zone) because Android falls back to it when adaptive icons aren't present, keeping the logo launcher-mask-safe.
New Features
- Commander.js subcommands:
brand,alloy,config,helpas first-class subcommands - Per-subcommand
--help:imgconvert brand --helpshows only brand flags - Topic-based help:
imgconvert help <topic>forcrop,resize,rename,presets,brand,alloy - Shell completions (bash / zsh / fish) via
imgconvert completionssubcommand:imgconvert completions— interactive install (auto-detects shell from$SHELL)imgconvert completions <shell>— direct install forbash,zsh, orfishimgconvert completions uninstall— removes every installed completion file and the rc-file block it addedimgconvert completions print <shell>— prints the script to stdout (for scripts / CI / custom install paths)- Installs are idempotent (no duplicate
fpathblock on re-runs), guarded by marker comments in~/.zshrc. - zsh output uses
_describeunder the group headerimgconvert commands, so subcommands render in column format with descriptions.
- Typo suggestions: Unknown commands suggest the closest match
- Update notifications: Notified when a newer version is available (respects
IMGCONVERT_NO_UPDATE_CHECK=1) - Standard
-hfor help: Follows CLI conventions (was height in v2) InvalidArgumentError: Clean error messages for invalid--width,--height,--quality--sdk <target>forbrand: Targetandroidemits the standard Androidres/tree atapp/src/main/res/. More SDK targets (kotlin, react-native, flutter) planned for a future release.--canvassymmetric resize: pads when the target is larger AND crops when the target is smaller.--positioncontrols the anchor in both directions — e.g.--canvas --height 2688 --position topkeeps the top of the image and drops pixels from the bottom.
Other
gen-ios()now accepts bothandroidPaddingandiosPaddingsoDefaultIcon.pngandDefaultIcon-ios.pngcan use different values (Android safe-zone vs iOS aesthetic).- Default
--paddinglowered from 20 to 15 (matches real-world apps like Gmail/Chrome; range 12-20). Spec floor is 19.44% but modern launchers are permissive; 15% gives logos better visual presence while staying safe on circular-mask launchers (Pixel, Oppo).
Legacy-Compatibility Shims
To ease the v2 → v3 transition, two shims rewrite argv and emit a deprecation warning on stderr. Both will be removed in v4.
-h <positive-int>is rewritten to--height <n>imgconvert config(no subcommand) is rewritten toimgconvert config init