Skip to content

Release: render the VS Code extension's icon before packaging, and recover a missed release page - #51

Merged
Threx-code merged 1 commit into
mainfrom
fix/release-vsix-icon
Nov 6, 2026
Merged

Threx-code merged 1 commit into
mainfrom
fix/release-vsix-icon

Conversation

@Threx-code

Copy link
Copy Markdown
Owner

The v0.7.0 release published to PyPI (all 27 files, digests confirmed) and then failed at create the GitHub release: The specified icon 'extension/images/icon.png' wasn't found in the extension.

Why: editors/vscode/package.json names images/icon.png, which is rendered from images/icon.svg at build time and never committed (3147395). The extension's Dockerfile renders it; the release step never did. The dry run stopped before this job, so it could not catch it.

Already done for 0.7.0: https://github.com/Threx-code/cordon/releases/tag/v0.7.0 was created by hand, replicating the job: the run's own dist artefact (each of the 27 packages matches PyPI's sha256), both SBOMs, a .vsix built from the v0.7.0 source with the Dockerfile's pinned image and vsce 3.6.0 (9 extension tests pass), and notes from docs/releases/0.7.0.md with the unsigned-bundle line the job adds when CORDON_DB_SIGNING_KEY is unset. The tag was not moved, so it still rebuilds the published wheels.

The change:

  • the release step renders the icon with rsvg-convert, as the Dockerfile does
  • the Dockerfile packages with vsce 3.6.0, the release's version (it had 4.0.0)
  • create the GitHub release also runs on a tag's second run once PyPI has the version (publish skipped, confirm passed), with !cancelled() so the skipped publish does not skip it
  • three repository tests, all failing on main: every file the manifest names is committed or rendered before vsce; one vsce version; the recovery condition

Checked: repository tests 355 passed; ruff, ruff format and mypy clean.

… a missed release page

The 0.7.0 release published to PyPI, confirmed the digests, then stopped at 'create the GitHub
release': vsce refused to package editors/vscode, whose package.json names images/icon.png. The PNG
is rendered from images/icon.svg at build time and never committed (3147395); the extension's
Dockerfile renders it, the release step did not. The release page for 0.7.0 was created by hand
from the run's own dist artefact (27 files, each matching PyPI's digest) and a .vsix built from
the tagged source.

- The release step renders the icon with rsvg-convert, as the Dockerfile does.
- The Dockerfile packages with vsce 3.6.0, the version the release uses (it had 4.0.0).
- 'create the GitHub release' also runs on the second run of a tag once PyPI has the version
  (publish skipped, confirm passed), so a missed page is created then; !cancelled() keeps the
  skipped publish from skipping it.
- Tests: every file the manifest names is committed or rendered before vsce; one vsce version;
  the recovery condition. All three fail on main.
@Threx-code
Threx-code merged commit fed4974 into main Nov 6, 2026
40 checks passed
@Threx-code
Threx-code deleted the fix/release-vsix-icon branch November 6, 2026 15:58
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