Skip to content

Plan 130: Binary distribution via npm, PyPI, asdf, mise, and VS Code - #237

Merged
jeduden merged 5 commits into
mainfrom
claude/binary-distribution-versioning-LFJPn
May 5, 2026
Merged

Plan 130: Binary distribution via npm, PyPI, asdf, mise, and VS Code#237
jeduden merged 5 commits into
mainfrom
claude/binary-distribution-versioning-LFJPn

Conversation

@jeduden

@jeduden jeduden commented May 5, 2026

Copy link
Copy Markdown
Owner

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:

    • Distribution strategy for each package manager (npm with optional dependencies pattern, PyPI wheels, asdf plugin, mise registry integration)
    • VS Code extension publishing to both Visual Studio Marketplace and Open VSX
    • Versioning approach using scripts/set-version.sh to dynamically set versions from git tags
    • 10 concrete implementation tasks with acceptance criteria
  • Updated PLAN.md: Added Plan 130 to the roadmap table with status "🔳" (in progress) and opus model designation

Implementation Strategy

The plan establishes:

  • npm: Root package with platform-specific optional dependencies (@mdsmith/linux-x64, etc.) using a JavaScript shim
  • PyPI: Per-platform wheels with bundled binaries, supporting pip, uv, pipx, and uvx
  • asdf/mise: Plugin-based distribution with GitHub release asset integration
  • VS Code: Single .vsix published to both Marketplace and Open VSX with identical SHA-256 checksums
  • Versioning: All manifests pinned to 0.0.0-dev in source; set-version.sh rewrites them at release time; CI guards against manual version edits on main

Acceptance 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

claude added 2 commits May 5, 2026 10:12
…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.
Copilot AI review requested due to automatic review settings May 5, 2026 10:58
@codecov

codecov Bot commented May 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.14%. Comparing base (5e36d99) to head (f9911b2).

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           
Flag Coverage Δ
go 95.13% <ø> (ø)
typescript 100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md to 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.

Comment thread plan/130_binary-distribution-and-versioning.md Outdated
Comment thread plan/130_binary-distribution-and-versioning.md Outdated
- 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 AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment thread plan/130_binary-distribution-and-versioning.md Outdated
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 AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment thread plan/130_binary-distribution-and-versioning.md Outdated
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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment thread plan/130_binary-distribution-and-versioning.md
@jeduden
jeduden merged commit bd7240e into main May 5, 2026
18 checks passed
jeduden pushed a commit that referenced this pull request May 16, 2026
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
jeduden added a commit that referenced this pull request May 18, 2026
…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>
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.

3 participants