Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: TMHSDigital/Developer-Tools-Directory
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.7
Choose a base ref
...
head repository: TMHSDigital/Developer-Tools-Directory
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.8
Choose a head ref
  • 7 commits
  • 12 files changed
  • 1 contributor

Commits on Apr 25, 2026

  1. 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>
    TMHSDigital authored Apr 25, 2026
    Configuration menu
    Copy the full SHA
    b05e0f0 View commit details
    Browse the repository at this point in the history
  2. 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
    TMHSDigital authored Apr 25, 2026
    Configuration menu
    Copy the full SHA
    ba75778 View commit details
    Browse the repository at this point in the history
  3. 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.com
    TMHSDigital authored Apr 25, 2026
    Configuration menu
    Copy the full SHA
    9e2a6c9 View commit details
    Browse the repository at this point in the history
  4. 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
    TMHSDigital authored Apr 25, 2026
    Configuration menu
    Copy the full SHA
    d8bb575 View commit details
    Browse the repository at this point in the history
  5. 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
    TMHSDigital authored Apr 25, 2026
    Configuration menu
    Copy the full SHA
    0e2fdee View commit details
    Browse the repository at this point in the history
  6. 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.com
    TMHSDigital authored Apr 25, 2026
    Configuration menu
    Copy the full SHA
    5772b15 View commit details
    Browse the repository at this point in the history
  7. 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
    TMHSDigital authored Apr 25, 2026
    Configuration menu
    Copy the full SHA
    594a8f1 View commit details
    Browse the repository at this point in the history
Loading