Repository navigation
feat: publish on a tag — icon, gallery banner, release workflow (#4) - #19
Merged
Merged
Conversation
Everything in #4 that is not a token. The publisher `hawserhq` is registered and already in the manifest; what was missing was an icon and a way to actually ship. The icon is generated upstream (hawserhq/hawser's tools/genicons) at the 128px the Marketplace wants, and copied here rather than hand-cut, so it cannot drift from the brand source. release.yml runs on a `v*` tag, and on workflow_dispatch so a failed publish can be retried without cutting a new tag. Three things in it are deliberate: **The tag and package.json must agree.** A Marketplace listing whose version names no tag in the repository cannot be traced back to source, so a mismatch fails the release instead of publishing. **The vsix is attached to the GitHub release before either publish.** A failed Marketplace call then still leaves an installable artifact rather than nothing. **Each publish is skipped when its secret is absent**, so a fork -- and this repository until the tokens are added -- gets a packaged, attached vsix instead of a red run. The secrets are job-scoped rather than step-scoped: a step's `if` cannot see env defined in that same step, so step-scoped secrets would have made both conditions evaluate wrongly. Also: gallery banner in the brand slate, a Keep-a-Changelog CHANGELOG, and CI and licence badges. The Marketplace badges are staged in an HTML comment with a note, because they render "not found" until the first publish. Verified by packaging: 8 files, 17.78 KB, no vsce warnings, and the icon inside the vsix is really 128x128 with the manifest reading publisher hawserhq, id hawser, version 0.1.0.
zcsizmadia
force-pushed
the
feat/4-publish-release-ci
branch
from
September 11, 2026 13:56
49f1127 to
a29ab53
Compare
7 tasks
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.
Everything in #4 that is not a token. The
hawserhqpublisher is registered and already in the manifest; what was missing was an icon and a way to actually ship.The icon
Generated upstream in hawserhq/hawser by
tools/genicons, at the 128px the Marketplace wants, from the same spiral and brand slate as every other raster asset — then copied here. Copied rather than hand-cut so it cannot drift from the brand source; the generator is deterministic, so it can be refreshed at any time without a visual diff nobody asked for. (Upstream PR: wslkit/skrog#222.)release.yml
Runs on a
v*tag, and onworkflow_dispatchso a failed publish can be retried without cutting a new tag. Three deliberate choices:The tag and
package.jsonmust agree. A Marketplace listing whose version names no tag in the repository cannot be traced back to source, so a mismatch fails the release rather than publishing.The vsix is attached to the GitHub release before either publish. A failed Marketplace call then still leaves an installable artifact rather than nothing.
Each publish is skipped when its secret is absent — so a fork, and this repo until you add the tokens, gets a packaged, attached vsix instead of a red run.
That last one had a bug worth naming: I first wrote the secrets as step-level
envwithif: env.VSCE_PAT != ''. A step'sifcannot see env defined in that same step, so both conditions would have evaluated wrongly. They are job-scoped now, and I verified the workflow parses and that the job env carries both keys.Also
#2F3B45, dark theme)CHANGELOG.mdwith compare linksVerified by packaging
Still yours
The two tokens, which I cannot create:
VSCE_PAT— Azure DevOps PAT with Marketplace: ManageOVSX_PAT— from https://open-vsx.orgAdd them as repo secrets and the publish steps light up; until then tagging produces a packaged vsix on the release and a green run. Then uncomment the two Marketplace badges.