Plan 130: Binary distribution via npm, PyPI, asdf, mise, and VS Code - #237
Conversation
…versioning Plans how to publish prebuilt mdsmith binaries through npm (optionalDependencies pattern), PyPI wheels (consumed by pip and uv), an asdf plugin, and the mise registry on every v* tag, and how to drive every manifest's version from the git tag instead of a hard-coded literal.
Adds a sixth distribution channel covering the Visual Studio Marketplace and Open VSX (for VSCodium, Cursor, Theia, Gitpod). Both registries upload the same .vsix that the GitHub release attaches, keeping all three artifacts byte-identical. Documents the VSCE_PAT and OVSX_PAT secrets and rotation cadence.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #237 +/- ##
=======================================
Coverage 95.14% 95.14%
=======================================
Files 151 151
Lines 18020 18020
=======================================
Hits 17146 17146
Misses 533 533
Partials 341 341
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Adds Plan 130 to the project roadmap, documenting an end-to-end strategy to distribute existing mdsmith release binaries across multiple package managers/registries (npm, PyPI, asdf, mise) and to publish the VS Code extension to both Visual Studio Marketplace and Open VSX, with all published versions derived from git tags rather than committed literals.
Changes:
- Added a new plan document (Plan 130) specifying distribution mechanisms per channel plus tag-driven versioning/guardrails.
- Updated
PLAN.mdto include Plan 130 in the generated plans catalog table.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| plan/130_binary-distribution-and-versioning.md | New plan specifying binary distribution channels, release workflow updates, and tag-derived manifest versioning strategy. |
| PLAN.md | Regenerated/updated plans catalog to include Plan 130. |
- Background: correct windows/arm64 claim — release.yml builds linux+darwin on amd64/arm64 plus windows on amd64 only. - npm: rename platform source dirs to use Node conventions (matching the published package name) and add an explicit asset → npm-package mapping table so the GOOS→Node translation is unambiguous.
Copilot review: list-all needs to strip refs/tags/,
drop ^{} deref entries, and remove the leading v so
asdf sees plain X.Y.Z versions matching the
acceptance-criteria install command.
Copilot review: task 3 used positional <vsix> for ovsx but --packagePath for vsce, contradicting the strategy section's claim that both forms use --packagePath. Switch ovsx to --packagePath to keep the byte-identical guarantee unambiguous.
The implementation, tests, and CI guards landed via PRs #237 and off. The remaining criteria (npm/PyPI/Marketplace/Open VSX publish-time outcomes) can only be confirmed by a real `vX.Y.Z` tag exercising the publish jobs against live registries; they stay unchecked until that smoke-test job is green. https://claude.ai/code/session_013PKk5fJBtQrEVQiwufi1mG
…ed (#243) The implementation, tests, and CI guards landed via PRs #237 and off. The remaining criteria (npm/PyPI/Marketplace/Open VSX publish-time outcomes) can only be confirmed by a real `vX.Y.Z` tag exercising the publish jobs against live registries; they stay unchecked until that smoke-test job is green. https://claude.ai/code/session_013PKk5fJBtQrEVQiwufi1mG Co-authored-by: Claude <noreply@anthropic.com>
Summary
This PR adds a comprehensive plan for distributing mdsmith binaries through multiple package managers and extension registries. Plan 130 outlines the strategy to publish prebuilt binaries to npm, PyPI, asdf, mise, and the VS Code marketplaces, while ensuring all published manifests derive their versions from git tags rather than hard-coded literals.
Key Changes
New plan document (
plan/130_binary-distribution-and-versioning.md): Specification covering:scripts/set-version.shto dynamically set versions from git tagsUpdated PLAN.md: Added Plan 130 to the roadmap table with status "🔳" (in progress) and opus model designation
Implementation Strategy
The plan establishes:
@mdsmith/linux-x64, etc.) using a JavaScript shim.vsixpublished to both Marketplace and Open VSX with identical SHA-256 checksums0.0.0-devin source;set-version.shrewrites them at release time; CI guards against manual version edits on mainAcceptance Criteria
The plan includes acceptance criteria covering successful publication across all channels, version consistency, and CI safeguards. See the Acceptance Criteria section of the plan for the authoritative list.
https://claude.ai/code/session_01JJFzkyUFU4WtSQtF2zkEgW