Favico

One logo goes in —
38 icons come out.

Favico turns one logo into the complete favicon set your site needs — every icon size, both manifests and a copy-paste HTML snippet. One command, ready to integrate. Less time exporting the same logo, more time finishing the site.

That’s 37 PNGs and one ICO in a single run. Feed it an SVG and every icon starts from a high-resolution render; a 1200×1200 raster fills the full set, and smaller sources still produce every size they can supply — no upscaling, with proportions preserved by default.

Copyright © 2025-2026Igor Maric. All rights reserved.

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.webmanifest and browserconfig.xml, independently of the output directory.
  • Opaque background colours via --background, with --apple-background and --maskable-background overrides; 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-output from 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.sh release 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 -o remains 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; -h and --help show 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-updates is 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.webmanifest and browserconfig.xml are handled identically: an existing file is kept and reported as a warning unless --overwrite is 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_core public API trimmed to what the binary and library actually use.
  • FaviconGenerator::generate_all is now synchronous (its async was unused), and the source is parsed and rasterised once per run, with the parsed vector tree reused for --svg-output.
  • GenerationResult now reports the loaded source dimensions and whether the source was a vector document.
  • --svg-output prerequisite message deduplicated into a shared favico_core::SVG_SOURCE_REQUIRED constant 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.fyi on 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.sh refuses 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.png alias; 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 feComponentTransfer filter, which browsers paint, instead of a CSS brightness() 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); use generate_with_progress to 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_path and 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, and Priority string parsing.
  • The no-op ImageProcessor::optimize_for_web and the optimize_files config field.
  • The unreachable TOML error path, the toml and anyhow dependencies from favico_core, and the commented-out test modules.
  • Unused favico_core dev-dependencies (tokio, assert_cmd, predicates); the generator no longer exposes an async API.

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.