Conversation
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
Three related fixes to the changeset pipeline: logo updates were never producing a release, empty changesets were producing spurious ones, and the changelog entries themselves were awkward and hard to read.
The release that never happened
scripts/version-check.jswrites.changeset/changeset.mdafter pulling updated logos from Dropbox, but the workflow's commit step only stagedraw/. The changeset stayed on the runner's disk — which is whygh pr create --body-filekept working and the PR body looked correct — and never reachedcontrol-branch.Downstream,
auto-release.ymlgates the entire release onfind ./.changeset -name "*.md", so with no changeset ever landing onmain, every scheduled run short-circuited tofiles_exists=falseand nothing was published.This regressed in 23d274d, which narrowed
git add .togit add raw/. The commit step now also stages the changeset, guarded with-fso a missing file can't abort the step underbash -e.The release that shouldn't have happened
createChangeset()inscripts/release.jshad no empty guard, unlike its counterpart inversion-check.js.getDetails()swallows the ENOENT from a missing.changeset/details.txtand returns'', so the changeset was written anyway — table header, zero rows:That file gets committed by the
Commit changesetstep indeployfe.yml(git add .—details.txtis gitignored,changeset.mdisn't), and auto-release cuts a release for it, since it only counts.mdfiles and never looks inside them.The two diverge because
changes_detectedis gated on an unscopedgit status --porcelain— any dirty tree — whiledetails.txtis only written when a genuinely new logo is downloaded. Added the!details.trim()guard, so an empty changeset can't be written regardless of which path leaves the tree dirty.Also fixed the existing-changeset check, which used
file.match(/changeset.md$/). That only matched files literally ending inchangeset.md, so a hand-added changeset with a generated name (smooth-groups-turn.md) went undetected and got a redundant auto changeset written alongside it. Now matches any.mdexceptREADME.md, consistent with what auto-release looks for.Changelog wording
version-check.jsFollowing logos has been updated:Updated the following logos:release.jsSome changes have been made to the `logos`.Added the following logos:The first was ungrammatical. The more useful change is that the two now say different things, matching what each script does:
fetch-missing.jsdownloads logos with no file on disk yet (additions), whileversion-check.jsdownloads only on a content-hash mismatch against a file already present (updates to artwork that already shipped). Readers can now tell a brand-new logo from a redrawn one, which matters because an updated logo can change how existing UI renders and a new one can't.Chain aliases instead of ids
Chain rows read
42161, because the row label came from the Dropbox filename. NewgetLogoLabel(name, mode)helper inhelpers/utils.jsresolves the id to its alias, used by both row builders:chain/42161.svgarbitrumchain/146-light.svgsonic-lightchain/1030.svg1030(fallback)symbol/doge.svgdoge(unchanged)Light variants keep their suffix — both
146.svgand146-light.svgcan appear in one changeset, and stripping it would produce two identicalsonicrows with different images.Unknown ids fall back to the id:
getChains()returns 63 chains butraw/chains/holds 185 files, so ids like1030and196have no alias in the current@api3/dapi-management. Downloads are driven bygetSupportedChains(), a subset of the alias source, so misses should be rare — the fallback means a chain dropped from the list mid-run degrades to today's output rather than emittingundefined.Testing
release.jsand confirmed the guard suppresses it, whiledetails.txtpresent still produces the full changeset with its rows.getLogoLabelacross chain/symbol/api-provider, light variants, and unknown ids.prettier --checkandeslintpass on all changed files.The workflow changes are not exercised until the next scheduled run.
Note
Logo updates from the last several months are merged but unreleased, since no changeset ever landed. The next successful run will produce a single patch changeset covering only that run's logos, not the backlog — earlier updates would need a hand-written changeset to appear in the changelog.
🤖 Generated with Claude Code