feat: release pipeline, palette PNGs, screenshot script, publishing guide - #18
Conversation
…uide - .github/workflows/release.yml: v* tag → version check → check+test → vsce package → GitHub Release → vsce publish (VSCE_PAT) → ovsx publish (OVSX_PAT); publish steps skip without secrets; workflow_dispatch dry run. - CI actions bumped to checkout/setup-node/upload-artifact v7 (supersedes Dependabot #11–13); palette-PNG freshness checked in CI and npm run check. - scripts/render-palette.mjs: dependency-free PNG palette strips per variant (images/palette-*.png) shown in README; tests/render-palette.test.mjs. - scripts/capture-screenshots.sh: reproducible macOS editor screenshots. - docs/PUBLISHING.md: publisher/PAT/Open VSX/secrets/first publish/badges. - README images excluded from the VSIX (served from the repo by vsce). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Sorry @crypticpy, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
Reviewer's GuideAdds a full tag-driven release pipeline (GitHub Actions + marketplace/Open VSX publishing), introduces a dependency-free PNG palette renderer with tests and CI enforcement, wires palette imagery and screenshot capture into documentation, and updates contributor/release guidance and packaging metadata. Sequence diagram for the new tag-driven release workflowsequenceDiagram
actor Developer
participant GitHub as GitHub
participant ReleaseWorkflow as release.yml
participant VSCodeMarketplace as VSCode_Marketplace
participant OpenVSX as Open_VSX
Developer->>GitHub: git tag vX.Y.Z && git push origin vX.Y.Z
GitHub-->>ReleaseWorkflow: Trigger on push tags v*
ReleaseWorkflow->>ReleaseWorkflow: Tag must match package.json version
ReleaseWorkflow->>ReleaseWorkflow: npm run check
ReleaseWorkflow->>ReleaseWorkflow: npm test
ReleaseWorkflow->>ReleaseWorkflow: npx vsce package
ReleaseWorkflow->>GitHub: upload-artifact (VSIX)
ReleaseWorkflow->>GitHub: gh release create (attach VSIX)
alt VSCE_PAT present and publish enabled
ReleaseWorkflow->>VSCodeMarketplace: vsce publish --packagePath VSIX
end
alt OVSX_PAT present and publish enabled
ReleaseWorkflow->>OpenVSX: ovsx publish VSIX --pat OVSX_PAT
end
Flow diagram for palette PNG generation and CI enforcementflowchart TD
A[Palette change in themes/_src] --> B[npm run check]
B --> C[build:themes]
C --> D[verify]
D --> E[node scripts/render-palette.mjs --check]
A --> F[npm run render:palette]
F --> G[Write images/palette-*.png]
subgraph CI
H[npm run check] --> I[node scripts/render-palette.mjs --check]
I -->|stale PNGs| J[Fail workflow]
end
subgraph Tests
K[tests/render-palette.test.mjs]
K --> L[Validate PNGs per theme]
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6c35b58cf3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if: env.HAS_VSCE_PAT == 'true' && env.DO_PUBLISH == 'true' | ||
| env: | ||
| VSCE_PAT: ${{ secrets.VSCE_PAT }} | ||
| run: npx vsce publish --packagePath "${{ steps.pkg.outputs.vsix }}" |
There was a problem hiding this comment.
Make registry publishing independently retryable
If Marketplace publishing succeeds but the subsequent Open VSX step fails (for example, because of a transient outage or token problem), rerunning this job executes vsce publish again before reaching Open VSX. The Marketplace rejects an already-published version—as docs/PUBLISHING.md:122 itself documents—so the rerun cannot repair the partial release. Put the two registry publications in independently retryable jobs or skip versions that are already present.
Useful? React with 👍 / 👎.
…tent GitHub Release Addresses Codex review on PR #18: a combined job re-ran `vsce publish` before reaching Open VSX, and the Marketplace rejects an already-published version, so a partial release could not be repaired. Publishing is now two jobs that consume the VSIX artifact from `build`; "Re-run failed jobs" retries only the one that failed. `gh release create` falls back to `upload --clobber` when the release already exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
Final PR of the 2026-08-18 audit remediation plan (
docs/plans/2026-08-18-audit-remediation.md, PR 7 of 7)..github/workflows/release.yml— onv*tag (or manual dispatch): version-vs-tag check,npm run check && npm test,vsce package, upload VSIX artifact, create GitHub Release, then publish to the VS Code Marketplace (VSCE_PAT) and Open VSX (OVSX_PAT) — each publish step is skipped when its secret is absent, so the workflow is safe to run before the publisher exists.node scripts/render-palette.mjs --check— committed palette PNGs must match the palette.scripts/render-palette.mjs— dependency-free PNG renderer (bitmap font, zlib + CRC32) producingimages/palette-<variant>.png: syntax ladder with L*, bracket pairs, ANSI 0–15 on the variant's background.npm run render:palette;npm run checknow includes the--check.tests/render-palette.test.mjs— valid RGBA PNG per theme; deterministic; committed PNGs current (28 tests total).scripts/capture-screenshots.sh— macOS: packages the VSIX, installs it into a throwaway profile at/tmp/alone-shot, launches each variant with the recommended settings and capturesimages/screenshot-<slug>.png. Needs Screen Recording permission for the terminal, so it is run by hand, not in CI.docs/PUBLISHING.md— creating thecrypticpypublisher, Azure DevOps PAT scope, Open VSX namespace + token, the two repo secrets, first-publish smoke test, screenshots slot swap, badges, troubleshooting..vscodeignoreexcludesimages/palette-*.pngandimages/screenshot-*.pngfrom the VSIX (13 files packaged). CONTRIBUTING gains a Releasing section; CHANGELOG 2.0.0 entry.Verification
npm run check(build + verify + palette--check) andnode --test tests/*.test.mjs→ 28 pass, locally on this branch rebased on890b7df.actionlintclean on both workflows.vsce ls→ 13 files, no images.Publishing itself is left to the maintainer per
docs/PUBLISHING.md(publisher, PAT, secrets,v2.0.0tag).🤖 Generated with Claude Code
Summary by Sourcery
Establish the extension’s release and publishing pipeline while adding synchronized visual palette assets and supporting documentation.
New Features:
Enhancements:
Build:
CI:
Deployment:
Documentation:
Tests: