-
Notifications
You must be signed in to change notification settings - Fork 0
Comparing changes
Open a pull request
base repository: TMHSDigital/Developer-Tools-Directory
base: v1.7
head repository: TMHSDigital/Developer-Tools-Directory
compare: v1.8
- 7 commits
- 12 files changed
- 1 contributor
Commits on Apr 25, 2026
-
feat: add release-doc-sync composite action (Phase 2a, refs #5) (#19)
Adds a new ecosystem-facing composite action that tool repos invoke from their release.yml after the plugin.json bump to keep CHANGELOG.md, CLAUDE.md, and ROADMAP.md aligned with the new version. This unblocks the doc-consistency cluster (Docker#25, Steam-Cursor-Plugin#5) without requiring per-repo regex chores in every release.yml. Action: .github/actions/release-doc-sync/action.yml Inputs: plugin-version, previous-version, repository (default github.repository at runtime), release-date (default today UTC), python-version, meta-repo-ref (default v1.0), caller-path. Outputs: changed, files-changed, per-file action codes. Follows the drift-check@v1.7 checkout-into-side-dir pattern so tool repos do not need to vendor sync.py. Sync logic: scripts/release_doc_sync/sync.py - CHANGELOG.md: prepend bare-line stub before the first '## [' section, or append if no release sections exist; idempotent. - CLAUDE.md: rewrite **Version:** line (preserving v-prefix presence) and any vOLD token (strict lookahead so v1.0.0-beta is left alone); explicitly skips standards-version HTML comment markers (DTD#1 boundary) and bare OLD substrings (mangle guard); idempotent. - ROADMAP.md: rewrite **Current:** vX.Y.Z line only; table rows and (current) markers are left alone per the patch-no-roadmap-row policy newly documented in standards/versioning.md; idempotent. - Missing files log a warning and skip; rc=0 (clean) / rc=1 (changed) / rc=2 (tool error) matches drift-check. Tests: tests/test_release_doc_sync.py (35 cases) Per-file pattern coverage, idempotency (single + end-to-end second run), missing-file handling, regression guards for the standards-version marker and bare-OLD substrings, word-boundary defense against v1.0.0-beta, CLI exit-code contract, GITHUB_OUTPUT emission, composite-action shape. Standards docs: - standards/release-doc-sync.md: contract for tool-repo consumers (pinning, inputs/outputs, edited patterns, recommended release.yml integration, exit codes, out-of-scope items). - standards/versioning.md: paragraph confirming patch releases do NOT get themed roadmap rows, alongside the existing MAJOR/MINOR/ PATCH semantics. - README.md and standards/README.md: standards-table row added. VERSION: 1.7.5 -> 1.8.0 (MINOR; new ecosystem-facing capability that tool repos consume). Floating-tag automation for v1.0 (parallel to the existing v1.7 for drift-check) is filed as DTD#14 follow-up; the maintainer will tag v1.0 -> v1.8.0 by hand after this PR merges per the user-approved Phase 2a sequencing. Signed-off-by: TM Hospitality Strategies <154358121+TMHSDigital@users.noreply.github.com>Configuration menu - View commit details
-
Copy full SHA for b05e0f0 - Browse repository at this point
Copy the full SHA b05e0f0View commit details -
fix: release-doc-sync action checkout pollutes caller's working tree (#…
…20) The composite action was checking out the meta-repo to a path inside GITHUB_WORKSPACE (.release-doc-sync). The caller's release.yml does git add -A after the action runs, which picked up the directory as a 160000-mode gitlink (submodule pointer to meta-repo HEAD SHA). Every release commit was polluted with this stale pointer. Fix: move the meta-repo checkout to ${{ runner.temp }}/release-doc-sync, which is outside the workspace and not visible to the caller's git add. The action's run step's working-directory updated to match. Surfaced during Phase 2b smoke test on Docker (#5). Caught before Phase 2c parallel rollout could propagate the pollution to 5 more tool repos. Adds a regression test guarding against future re-introduction. Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com Made-with: Cursor Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com
Configuration menu - View commit details
-
Copy full SHA for ba75778 - Browse repository at this point
Copy the full SHA ba75778View commit details -
fix: defensive cleanup of release-doc-sync workspace checkout (#21)
v1.8.0 leaked a `.release-doc-sync` directory into caller release commits as a 160000-mode gitlink (caller's `git add -A` picked up the meta-repo checkout the action created via actions/checkout). v1.8.1 attempted to fix this by checking out to ${{ runner.temp }}, but actions/checkout@v5 enforces that `path:` resolves under GITHUB_WORKSPACE and rejects out-of-tree paths with "Repository path '...' is not under '...'" - so v1.8.1 broke the action entirely (caught immediately when the Phase 2b cleanup commit triggered Docker's release.yml: bump succeeded, sync failed, commit + tag steps were skipped). This v1.8.2 ships the actually-working fix: keep the in-workspace checkout (idiomatic actions/checkout) but add an `if: always()` cleanup step that runs `rm -rf` on `.release-doc-sync` before control returns to the caller. The caller's `git add -A` then sees nothing to add. Regression test (`test_workspace_checkout_is_cleaned_up_before_action_returns`) asserts: - a cleanup step exists with `if: always()` - the cleanup `rm -rf`s a path matching the checkout path - the cleanup is positioned AFTER the run step - the cleanup is scoped via ${{ github.workspace }} Sanity-verified to fail loudly if any constraint is dropped. The previous `test_meta_repo_checkout_is_outside_workspace` (v1.8.1's guard, which asserted `runner.temp`) is replaced; that constraint was unenforceable because actions/checkout rejects it. Refs #5. Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com Made-with: Cursor Signed-off-by: 154358121+TMHSDigital@users.noreply.github.comConfiguration menu - View commit details
-
Copy full SHA for 9e2a6c9 - Browse repository at this point
Copy the full SHA 9e2a6c9View commit details -
fix: port Unity's self-healing pattern to label-sync workflow (#22)
Same fix as the tool-repo rollout in #4. The meta-repo's label-sync.yml had the same fail-on-missing apply step, with `registry` as the latent missing label that would surface on PRs touching the registry/ path. Replaces the apply step with the per-label loop using `gh label create --force` before `gh pr edit --add-label`. Makes label creation idempotent. Closes #4. Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com Made-with: Cursor Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com
Configuration menu - View commit details
-
Copy full SHA for d8bb575 - Browse repository at this point
Copy the full SHA d8bb575View commit details -
chore: bump VERSION to 1.8.3 for the label-sync self-healing fix (#25)
PR #22 (port Unity's self-healing pattern to label-sync workflow) merged without a VERSION bump due to a gap in the "feat/fix commits require VERSION bump" required check (see follow-up issue #24). The fix is on main but no release was cut. This commit bumps VERSION to 1.8.3 to trigger release.yml so the label-sync fix can be released and tagged. Tracks the fix from #22. Refs #4. Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com Made-with: Cursor Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com
Configuration menu - View commit details
-
Copy full SHA for 0e2fdee - Browse repository at this point
Copy the full SHA 0e2fdeeView commit details -
fix: release.yml tag introspection and add floating tag automation (#26)
Fixes two related bugs in release.yml: DTD#23: git describe --tags --abbrev=0 was used to find the latest tag for VERSION comparison. This returns the highest reachable tag (which can be a floating tag like v1.0 aliased to a commit), not the highest semver patch tag. When v1.0 was an annotated tag aliasing v1.8.2, the comparison broke entirely. Replaces with git for-each-ref --sort=-v:refname filtered to the semver pattern v[0-9]*.[0-9]*.[0-9]*. This returns clean semver output regardless of what floating tags exist. DTD#14: floating major.minor and major tags (v1.7, v1.0) had to be force-updated manually after each release. Adds an automated step that creates/updates vMAJOR.MINOR and vMAJOR lightweight tags pointing at the commit of the just-pushed patch tag. Both as lightweight tags (matches actions/checkout convention, avoids the alias bug that DTD#4's investigation surfaced). The floating tags are explicitly resolved through ^{commit} so the lightweight refs point at the underlying commit, not at the annotated patch tag's tag object. Closes #14, #23. Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com Made-with: Cursor Signed-off-by: 154358121+TMHSDigital@users.noreply.github.comConfiguration menu - View commit details
-
Copy full SHA for 5772b15 - Browse repository at this point
Copy the full SHA 5772b15View commit details -
fix: version-bump-check parser silently passes all PRs (#28)
The version-bump-check job in validate.yml uses git log --pretty=format:'%H%x00%s%x00%b%x1e' to extract commits and parse them. Bash command substitution silently strips \0 bytes (with a warning to stderr that nothing inspects), gluing SHA+SUBJECT+BODY into one field. The regex that extracts conventional-commit prefixes never matched, so the check has been silently passing every PR since 2026-04-22 (commit f27e37f). PR #22 (DTD#4 fix) was a fix:-prefixed PR that did not bump VERSION. The check should have failed it but did not, allowing the PR to merge and causing the next release to fail. Replaces \x00 with \x1f (Unit Separator) which preserves through bash command substitution. The record separator (\x1e Record Separator) was already safe and is unchanged. The awk -F arguments are updated to match. Closes #24. Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com Made-with: Cursor Signed-off-by: 154358121+TMHSDigital@users.noreply.github.com
Configuration menu - View commit details
-
Copy full SHA for 594a8f1 - Browse repository at this point
Copy the full SHA 594a8f1View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v1.7...v1.8