All notable changes to icon-maker are documented here.
The format follows Keep a Changelog,
and the project adheres to Semantic Versioning.
- Added provider-neutral
--briefschema version 2 withrequestTypevaluesdirection-discovery,direction-review,image-generation, andcompile; machine-readable target constraints, bounded local brand evidence, source-contract, provider-boundary, and approval metadata remain offline.imagePromptis non-null only for an explicitly approved image-generation request. - Added lossless direction round trips through
--direction-name,--concept,--expresses,--visual-metaphor,--mood,--tradeoff, optional--palette/--avoid, and matchingdesignconfig fields. Partial input is retained for review before--approve-directionordesign.approved: true. - Added explicit
--placeholdermode for deterministic temporary artwork. - Added
--source <path>for compiling a project-local SVG or PNG directly, including source metadata and raster upscaling warnings in JSON results. - Added
--adaptive-sourceandmark.source.adaptiveForegroundfor supplying the transparent foreground that Expo adaptive icons require. - Added the
appletarget with an iOS single-size entry, the complete macOS size matrix, and XcodeAppIcon.appiconset/Contents.jsongeneration. - Added safe Xcode asset-catalog autodetection plus explicit
apple.assetCatalog/apple.appIconSetrouting for ambiguous projects.
- Split icon compilation into explicit prepare, output-plan, render, and write phases while preserving the all-render-and-validate-before-write invariant.
- Centralized source/output containment and real-file identity checks in one path-safety policy shared by generation, source loading, and Apple routing.
- Replaced the CLI parser's option branch chain with value/flag definitions and an isolated option-combination validator.
- Missing approved source artwork is now a usage error. The built-in geometric
mark is no longer an implicit fallback when
mark.sourceis absent. - The agent skill now blocks image generation while direction is missing or unapproved, offers exactly three complete text-only hypotheses when needed, preserves a selected hypothesis through direction approval, then presents the generated candidate for separate artwork approval before compilation.
- The skill continues to forbid hand-authored SVG synthesis as a fallback.
- Image-generation handoff now prefers a 1024px PNG; SVG remains accepted when it is native vector artwork from a trusted source.
- Added packed-install smoke coverage so CI verifies the packed tarball inside a fresh consumer project through both the CLI and programmatic API.
- Clarified pre-release local/source-checkout usage before npm publication.
- Narrowed the public API surface to the documented
makeIcons()export. - Consolidated target mark presets and patch roles into target metadata.
- Reused same-size raster outputs within one generation run to avoid duplicate PNG work for multi-target and container outputs.
- Apple source outputs flatten onto the configured background and are encoded as RGB PNGs without an alpha channel.
- External sources render once per background variant; smaller PNG, ICO, and ICNS entries reuse an alpha-aware downsampled pixel buffer from a canonical master so output does not depend on other selected targets.
- Existing generated files are left untouched when their bytes are already current, preserving Xcode and other incremental-build timestamps.
- Report CLI usage errors, including unknown flags and unknown targets, with
the documented exit code
2and parseable--jsonerror output. - Keep
--jsonstdout parseable even when a trusted local.jsconfig writes synchronous or delayed incidental output while loading. - Honor
--init --config <path>by creating and reporting the requested config file, including data-only.jsonconfigs. - Render non-square
mark.sourceSVGs into square PNG/ICO/ICNS canvases and reject source paths that resolve outside the target directory. - Refuse source/output collisions and output paths that escape through symlinks before rendering or writing any generated files.
- Preserve empty Xcode appearance slots and metadata, detect the selected App Icon set name, and refuse to overwrite sets that reference unmanaged files.
- Unwrap exact fenced SVG responses, reject surrounding prose, and identify PNG input before scanning text content for SVG markup.
- Warn when
--patchhas no matching manifest instead of silently returning an empty patch list.
- Initial deterministic icon compiler with SVG source and PNG outputs for
browser-extension,expo,electron,vscode,pwa,mcp-connector, andgenerictargets. - CLI with target autodetection, optional path argument,
--json,--dry-run,--out-dir,--preview,--patch, and target-aware--init. - Programmatic
makeIcons()API. - Claude Code skill and plugin metadata for agent discovery.
- Manifest patching for extension
manifest.json, Expoapp.json, packageiconfields, and PWApublic/manifest.json. - Transparent Expo adaptive icon foreground output.
- PNG-backed
.icoand.icnscontainers for Electron and web/PWA surfaces. mark.sourcesupport for compiling a finished SVG brand mark into the same platform output sets.icon-preview.htmlcontact sheet generation.- JSON patch writes preserve indentation/EOLs and skip already-current files.