Check upstream Solar weekly instead of by hand - #7
Merged
Conversation
Every few weeks the question "did Iconify add icons?" comes up and gets answered by hand. It is one API call plus a diff against the committed catalog, so it belongs in CI. - tool/check_upstream.py reports new and renamed icons. It imports fetch_icons and reuses that script's own resolution, so the report cannot disagree with what a regeneration would actually do, and it exits non-zero when the API returns nothing — a network failure should not read as "no new icons". - Names upstream has hidden with no replacement are reported as retained by design rather than as drift, so `trellis` stops looking like a problem. - .github/workflows/upstream-check.yml runs it Mondays at 06:00 UTC and on demand. It reuses one `upstream-sync` issue rather than filing a fresh one each week, and closes it automatically once a sync lands. - CONTRIBUTING gains the maintainer sync procedure, including the two traps this repo has already hit: the generator must never drop a shipped name, and renames are not the only change — upstream redraws glyphs in place, which only a pixel diff over every byte-changed asset will catch. Verified both directions: against the current catalog it reports no changes, and against a simulated pre-1.2.0 catalog it correctly finds brain, ticket-star, toolbox and wi-fi as added plus ticker-star -> ticket-star as a rename. A checker that only ever says "nothing new" would be worse than none. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
"Did Iconify add icons?" has come up every few weeks and been answered by hand each time. It's one API call plus a diff against the committed catalog, so this moves it into CI.
Type of change
No package code changes — nothing ships to pub.dev from this.
What it does
tool/check_upstream.pyreports new and renamed icons. It importsfetch_iconsand reuses that script's owncanonical_names/previously_shipped/resolve_legacy, so the report cannot drift from what a real regeneration would do. It exits non-zero when the API returns nothing — a network failure must not read as "no new icons".It also distinguishes the three cases that matter:
legacyAliasesentrytrellis)That last bucket is why
trellisno longer looks like drift every time someone checks..github/workflows/upstream-check.ymlruns it Mondays 06:00 UTC and onworkflow_dispatch. It reuses a singleupstream-syncissue rather than filing a fresh one weekly, and closes it automatically once a sync lands.CONTRIBUTING gains the maintainer sync procedure, including the two traps this repo has already hit:
@Deprecatedconstants.bold/logoutfixed in 1.2.0). Only a pixel diff catches those, and a single-style sweep is insufficient — check every asset whose bytes changed, since the SVGO pass is deterministic so a changed glyph always changes bytes.Verified both directions
has_changes=false.brain,ticket-star,toolbox,wi-fias added, plusticker-star→ticket-staras a rename.The second test is the important one — a checker that only ever says "nothing new" is worse than no checker, and would look identical to a working one.
Checklist
flutter analyzereports zero errorsdart formatcleanCHANGELOG.md— n/a, no packaged change🤖 Generated with Claude Code