Changelog
Releases are listed newest first, with changes grouped into Added, Changed, Fixed and Removed. Notes for the next release appear under Unreleased until they ship. This page uses the repository’s CHANGELOG.md; each download keeps the notes packaged with that release. Formatted per Keep a Changelog.
Unreleased
Changed
- Website guidance now follows download, verification, installation, first use, reference and maintenance in order. Manual and Homebrew paths stay separate, and upgrade/uninstall instructions match the chosen installation method.
- Restored the download label “macOS Silicon Download” and grouped existing release notes by topic within their change categories, without changing release dates or version history.
0.96.5 — 2026-10-03
Added
- Public asset paths via
--public-path, applied consistently to the HTML snippet,site.webmanifestandbrowserconfig.xml, independently of the output directory. - Opaque background colours via
--background, with--apple-backgroundand--maskable-backgroundoverrides; the global colour also sets the HTML theme and XML tile colours. - Local preview contact sheet via
--preview, showing this run's icons at tab size and against light/dark backgrounds with Apple and maskable mask simulations. - Vector output via
--svg-outputfrom SVG/SVGZ input, with optional explicit dark-theme artwork brightness via--svg-dark-brightness. - Website changelog page at
/changelog/, rendered from this file at build time and linked from the home page, README and sitemap; the export gate verifies it renders the release history. - Website analytics use the shared odd.fyi PostHog project through build configuration, including masked-input replay, web vitals, error capture and download/outbound click events. The CLI and generated files remain telemetry-free.
scripts/release.shrelease packager and this changelog.
Changed
- Favico is fully standalone, using Clap and CliClack for grouped help, inline progress and concise terminal results. Plain output is used for pipes, CI and basic terminals.
- Default output now lives beside the source image; explicit
-oremains relative to the working directory when given a relative path. - Help explicitly distinguishes the default subfolder beside the source from writing directly into
-o DIR, including how relative output paths resolve. - Interactive help and argument errors now share the CLI's side-rail presentation;
-hand--helpshow the same grouped guide. Early input errors include the same header as generation and update checks. Piped output remains plain, and version output remains one line. --check-updatesis a standalone action with explicit success/failure feedback. Generation no longer checks for updates or makes network requests.- Generated-asset conflicts are checked before writes; later per-file failures preserve successful output accounting. Results distinguish written/replaced, skipped, kept and retained files.
site.webmanifestandbrowserconfig.xmlare handled identically: an existing file is kept and reported as a warning unless--overwriteis set, instead of aborting the run.- The core generator emits progress events instead of terminal output and now owns integration-snippet writing, using the same safety and failure reporting as other assets.
favico_corepublic API trimmed to what the binary and library actually use.FaviconGenerator::generate_allis now synchronous (itsasyncwas unused), and the source is parsed and rasterised once per run, with the parsed vector tree reused for--svg-output.GenerationResultnow reports the loaded source dimensions and whether the source was a vector document.--svg-outputprerequisite message deduplicated into a sharedfavico_core::SVG_SOURCE_REQUIREDconstant and reworded.- Clearer setup and output guidance across the website, README and CLI; smaller raster sources are supported, and 1200×1200 is a recommendation for filling the full set, not an input requirement.
- Restored the CLI and website tagline: “One logo goes in — 38 icons come out”, counting 37 PNGs and one ICO in the full default set; manifests and optional outputs are additional. The count uses numerals for readability.
- Preview downloads stay on the preview site, release links open the changelog, and installation commands no longer remove macOS quarantine.
- Website prepared for
favico.odd.fyion Cloudflare Pages Git integration, using pnpm, Next.js 16 static export, explicit lint and export/checksum validation. - Copyright notices now read as a 2025-2026 year range across the licence, README, CLI constant and source headers, and the RSS feed; website notices generate the end year at build time.
- Release preparation and packaging are separate clean-source stages, with locked builds, real/synthetic image smoke checks, extracted-archive validation, SHA-256 checksums and build provenance. Commit, tag, publication and rollback steps are documented and remain explicit maintainer actions.
scripts/release.shrefuses uncommitted source and existing release outputs instead of warning or overwriting a version.- Release candidates are validated before download metadata changes, with recovery on ordinary write failures and the same website checks locally and on Cloudflare.
- Release preparation also updates the website package version; export checks verify package, lockfile, page and RSS versions alongside download metadata and checksums.
Fixed
- ICO conflict checks now use the same eligible sizes as generation, reporting an existing ICO as retained when the source cannot supply any ICO size.
- Retained-output reporting recognises supported light/dark background variants, including configured custom filenames, without deleting them.
- Tiny sources no longer silently upscale the
favicon.pngalias; it stays at or below 32×32. - Invalid source decoding leaves no output directory behind.
- Skip messages are aggregated; existing aliases cannot be silently kept, and stale output from previous runs is reported without deleting anything.
- SVG dark-mode artwork now uses a native SVG
feComponentTransferfilter, which browsers paint, instead of a CSSbrightness()filter that was computed but not applied. - The preview contact sheet permits
file:images, so it can be opened directly as well as served. - The CLI reports source dimensions from a single load instead of loading the image twice.
- Help text describes each processing mode once and no longer claims every target is square.
- Progress no longer collides with ordinary output.
- Version output is one line; option validation reports the actual option problem instead of suggesting that the input file is missing.
- Download and checksum links no longer trigger page-prefetch requests for archive files.
- Updated affected Rust and website image-processing dependencies. A local depth guard protects the website's lint tooling against deeply nested brace patterns pending an upstream fix.
Removed
- The private shared CLI Git dependency, fleet configuration, private-build SSH requirement and Tokio runtime. CLI policy and update handling are owned locally.
- Library terminal controls (
with_progress,set_no_color); usegenerate_with_progressto observe generation events. Whole-directory statistics are no longer printed as part of CLI completion. - Test-only and dead library API:
get_output_structure,cleanup_existing,preview_output,get_output_pathand the unused output subdirectory/platform organiser,detect_format,crop_to_square,fit_to_square,create_light_variant/create_dark_variant,with_max_file_size,user_friendly_message,default_config,config_with_priority,validate_input_image,get_size_info, andPrioritystring parsing. - The no-op
ImageProcessor::optimize_for_weband theoptimize_filesconfig field. - The unreachable TOML error path, the
tomlandanyhowdependencies fromfavico_core, and the commented-out test modules. - Unused
favico_coredev-dependencies (tokio,assert_cmd,predicates); the generator no longer exposes anasyncAPI.
0.95.5 - 0.95.6
- Early 0.95.x builds were released before this changelog was introduced; their notes are not recorded here.
2025-09-09
- Initial commit: one image in, a truckload of icons out. Manifests, HTML head bits, the lot. Builds, tests, and a release script to boot.