Skip to content

fix(ci): ship plugin content whenever it changes, and only when it changes - #430

Merged
TMHSDigital merged 1 commit into
mainfrom
fix/plugin-release-cadence
Oct 5, 2026
Merged

TMHSDigital merged 1 commit into
mainfrom
fix/plugin-release-cadence

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Closes #350.

Problem

Plugin updates ran backwards:

  • Content fixes stuck: a docs: fix to a skill never cut a release, so it never reached plugin-dist. Examples: bce71a94, c9bb9988.
  • Empty updates: every gallery or site fix: release rebuilt plugin-dist with identical content and a new version, prompting every user to update. v0.143.2 was site-only, and this session cut about a dozen more.

Change

  • .github/scripts/plugin-content-changed.sh BASE: exits 0 when skills/ claude/ rules/ snippets/ templates/ differ between BASE and HEAD. release.yml cuts a patch release when this says yes and no commit subject is feat/fix.
  • build_plugin_dist.py --fingerprint DIR: sha256 over every file, with manifest "version" values blanked and CRLF normalized.
  • release.yml publish step: builds, fingerprints, fetches the published plugin-dist, and skips the force-push when the fingerprints match. The plugin version now moves only with its content.
  • Docs and tests: AGENTS.md documents both rules. New tests/test_plugin_content_changed.py (temp git repo, 4 cases), wired into Validate.

Evidence (local)

  • Fingerprint:
    • two builds of the same tree are equal;
    • changing only "version" keeps them equal;
    • appending one line to skills/operators/SKILL.md makes them differ.
  • Against the live branch: today's build fingerprints identically to the published plugin-dist (plugin build v0.143.13). The raw diff -r shows differences, but diff -r --strip-trailing-cr leaves 0 differences outside "version" lines. So under this change, a site-only release would not republish.
  • Detector: test_plugin_content_changed.py 4/4 OK. README and docs/gallery changes are not content; skill and snippet edits are.
  • test_bump_kind.py and test_build_plugin_dist.py OK. Both workflow files parse.

Not exercisable locally: a real release run. The two new steps are plain shell around the tested script and CLI. The first release after merge will log plugin-dist fingerprint: built=… published=… as the observable check.

🤖 Generated with Claude Code

…anges

Plugin users got updates backwards. A `docs:` fix to a skill never cut a
release, so it never reached plugin-dist; meanwhile every gallery or
site `fix:` release rebuilt plugin-dist with identical content and a new
version, prompting every user to update for nothing (v0.143.2 was
site-only; this session alone cut a dozen such releases).

- release.yml cuts a patch release when skills/, claude/, rules/,
  snippets/ or templates/ changed since the last tag, even with no
  feat/fix subject (.github/scripts/plugin-content-changed.sh, tested).
- build_plugin_dist.py --fingerprint hashes a built tree with manifest
  versions blanked and line endings normalized. The publish step compares
  the new build with the published plugin-dist and skips the force-push
  when they match, so the plugin version only moves with its content.
  Checked against the live branch: today's build matches v0.143.13
  exactly, so a site-only release now would not republish.

Closes #350

Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation ci labels Oct 5, 2026
@TMHSDigital

Copy link
Copy Markdown
Owner Author

CI evidence before merge: all checks pass ( 13 pass ). Blender Smoke on PR head: Blender 5.2.2 LTS / Blender 4.5.14 LTS. Summaries (happy path; falsifiers) per leg: 141 passed, 3 skipped, 0 failed;136 passed, 7 skipped, 0 failed;143 passed, 1 skipped, 0 failed;143 passed, 0 skipped, 0 failed;

@TMHSDigital
TMHSDigital merged commit 5177e24 into main Oct 5, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the fix/plugin-release-cadence branch October 5, 2026 01:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

release: content fixes under docs: never reach plugin users, while site-only commits bump the plugin version

1 participant