release: stamp the tag version into the artifact's plugin.json - it must never diverge from the marketplace entry #121
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#121
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The v0.15.1 release shipped a vendored artifact whose
.claude-plugin/plugin.jsonstill says"version": "0.14.6", while the claude-plugins marketplace entry was correctly bumped to0.15.1.Cause
scripts/assemble-plugin-artifact.shcopies the repo's.claude-plugin/plugin.jsoninto the artifact verbatim (line 151) but derives the marketplace entry version from the release tag (line 95,bump_marketplace_versionat line 272). The source plugin.json's version field is hand-maintained andscripts/release.sh(line 20) explicitly treats it as "cosmetic", so nothing bumps it at release time. Any tag that outruns the hand edit ships a mismatched pair, which is the current state on Codeberg (sixfold_space/claude-plugins@ main).Claude Code resolves the pin from the marketplace-level version, so installs still work, but the shipped plugin.json is what a user sees when checking which plugin version they have, and it currently lies.
Fix
Make the sync structural, not procedural: in
assemble-plugin-artifact.sh, after copying plugin.json into the artifact, rewrite itsversionfield to the same tag-derived value used for the marketplace bump (tag without leadingv). Then the two values share one source of truth and cannot diverge.Acceptance criteria
vX.Y.Zproduces aplugin.jsonwith"version": "X.Y.Z", regardless of what the source plugin.json says.hooks/tests/assemble-plugin-artifact.test.sh.0.14.6in the repo's source.claude-plugin/plugin.jsonis either bumped or its comment/doc updated to say the field is stamped at release time.sixfold_space/claude-plugins.