Skip to content

1.2.0 — resync catalog with upstream Solar (1,247 → 1,269 icons) - #6

Merged
sovanken merged 1 commit into
mainfrom
sync/solar-1.2.0
Aug 26, 2026
Merged

1.2.0 — resync catalog with upstream Solar (1,247 → 1,269 icons)#6
sovanken merged 1 commit into
mainfrom
sync/solar-1.2.0

Conversation

@sovanken

Copy link
Copy Markdown
Owner

Summary

Solar has added icons in the twelve days since 1.1.0 shipped (2026-08-14). This picks up 22 new icons (1,247 → 1,269, 7,614 SVG variants) and fixes a generator bug that would have deleted 1.1.0's deprecated constants.

Type of change

  • New feature (non-breaking change that adds functionality)
  • Bug fix (non-breaking change that fixes an issue)

Added — 22 icons

Group Icons
Wi-Fi wi-fi, wi-fi-high, wi-fi-low, wi-fi-none, wi-fi-off, wi-fi-cog, wi-fi-cross
UI primitives add, close, minus, question-mark, exclamation-mark
Camera / video webcam, webcam-off, videocamera-off
Scanning barcode, barcode-scan, binoculars
Other bot, brain, paint-brush, toolbox

All 23 new names (including ticket-star) resolve in all 6 styles.

Changed

  • ticker-starticket-star upstream (typo fix). Old name kept as a @Deprecated constant; legacyAliases now holds 57 entries.
  • bold/logout is fixed. 1.1.0 shipped it malformed — the door rendered as a clipped crescent instead of a closed shape. It is the only glyph whose appearance changes, and it changes from wrong to right.

The generator bug this fixes

Running the sync reported "1 deprecated alias" where 57 were expected. Cause: previously_shipped() read only the all list, but retired names live in legacyAliases precisely because all excludes them. So a regeneration saw 1.1.0's 56 renamed constants as nonexistent and dropped them — SolarIcons.magnifer and 55 others would have vanished, breaking every 1.1.0 consumer on upgrade.

It now reads both lists, carries every previously retired name forward, re-resolves any whose replacement has itself since been renamed, and treats the union of current and retired names as the set it may never drop. Verified: 0 constants lost, 1,303 exposed before → 1,326 after.

How "no visual change" was established

A linear-only sweep would have missed bold/logout. Coverage here is:

  1. All 1,247 icons from 1.1.0 rendered at both versions and pixel-diffed in linear — 0 redraws.
  2. Every asset whose bytes changed after regeneration diffed in its own style — 26 files spanning all six styles.

Since the SVGO pass is deterministic, a changed glyph necessarily changes bytes, so (2) is a superset of the visual changes and the two together cover every style. Apart from bold/logout at 39.7%, the worst difference was 0.29% — anti-aliasing.

The comparator self-validates before reporting (identical icons must score ~0%, unrelated icons must score high) and refuses to emit a sweep otherwise, because a broken comparator looks exactly like "everything changed".

Checklist

  • flutter analyze reports zero errors
  • flutter test passes locally (40 tests)
  • Public API changes are documented via dartdoc
  • CHANGELOG.md has an entry describing the change
  • dart format clean
  • pub publish --dry-run clean
  • All 1,269 names present in all 6 styles; catalog and assets match exactly

🤖 Generated with Claude Code

Solar has added icons in the twelve days since 1.1.0 shipped (2026-08-14).
This picks them up and fixes a generator bug that would have deleted
1.1.0's deprecated constants.

Added
- 22 new icons: the wi-fi family (wi-fi, -high, -low, -none, -off, -cog,
  -cross), bare UI primitives (add, close, minus, question-mark,
  exclamation-mark), webcam, webcam-off, videocamera-off, barcode,
  barcode-scan, binoculars, bot, brain, paint-brush, toolbox.

Changed
- ticker-star -> ticket-star upstream (typo fix). The old name stays as a
  @deprecated constant, so legacyAliases now holds 57 entries.
- bold/logout is fixed. 1.1.0 shipped it malformed — the door rendered as a
  clipped crescent. Upstream corrected it; this is the only glyph whose
  appearance changes, and it changes from wrong to right.
- Nothing else changed appearance. All 1,247 icons from 1.1.0 were
  pixel-diffed in linear, and every asset whose bytes changed was diffed in
  its own style (26 files across all six). SVGO output is deterministic, so
  the byte-changed set is a superset of the visually-changed set — coverage
  is complete across styles. Worst non-logout difference: 0.29%.

Fixed
- The generator would have deleted every deprecated constant from the
  previous release. previously_shipped() read only the `all` list, but
  retired names live in legacyAliases precisely because `all` excludes
  them — so a regeneration saw 1.1.0's 56 renamed constants as nonexistent
  and dropped them. SolarIcons.magnifer and 55 others would have vanished,
  breaking 1.1.0 consumers on upgrade. It now reads both, carries every
  retired name forward, re-resolves any whose replacement has itself been
  renamed since, and treats the union of current and retired names as the
  set it may never drop. Caught by running the sync, seeing "1 deprecated
  alias" where 57 were expected, and diffing exposed constants before and
  after.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sovanken
sovanken merged commit 4c9e072 into main Aug 26, 2026
4 checks passed
@sovanken
sovanken deleted the sync/solar-1.2.0 branch August 26, 2026 09:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant