PR #1157 review surfaced that the drift-check job was failing on
outsider PRs that touched README.md for unrelated reasons (citation
tweaks, link fixes). The path filter caught any README edit even when
the recent-updates block wasn't touched, and the failure couldn't be
fixed by the PR author since they didn't have push access to commit
a regen.
Real-world reasoning: release notes can only legitimately go stale
when a release event occurs. PRs cannot introduce drift the workflow
needs to "catch" — and a drift-check that an outsider can't fix is
hostile to contributions.
Changes:
- Drop the `pull_request` trigger entirely (was only there to feed the
now-removed drift-check job).
- Drop the daily `schedule` cron. UI edits to release bodies are
caught by the `release.edited` event already; falling back to a
cron added mystery commits unattached to a release.
- Drop the `drift-check` job. Nothing left needs to gate on PRs.
- Keep `release.{published,edited,unpublished,deleted}` as the
canonical trigger, and `workflow_dispatch` as the manual hatch.
- Updated /contributing/docs page to match, with an explicit
paragraph on why PRs are NOT a trigger here.
Pages is now enabled on CoplayDev/unity-mcp, so the canonical preview
URL is back to https://coplaydev.github.io/unity-mcp/.
- docusaurus.config.js: url + organizationName back to CoplayDev
- docs-deploy.yml: deploy condition narrowed back to push-to-beta only
(drops the temporary docs/v2-wiki-refresh trigger)
- README.md, website/README.md, website/static/robots.txt,
website/docs/contributing/docs.md: hardcoded scriptwonder URLs swept
back to coplaydev, and the temporary "Scriptwonder fork preview" /
"flips back to coplaydev" prose removed
Next deploy of the live site happens when this lands on upstream/beta
(via PR merge) and triggers the existing workflow.
Citation: trimmed to bibtex only — the paper info paragraph and APA
plain-text citation were nice-to-have but added vertical noise. The
bibtex carries enough metadata for both code search and academic use.
Hosting move (Scriptwonder fork preview):
- docusaurus.config.js: url + organizationName flipped to Scriptwonder
- docs-deploy.yml: deploy on push to `docs/v2-wiki-refresh` OR `beta`
(Setup Pages, Upload artifact, Deploy job conditions all updated).
Lets the live preview at scriptwonder.github.io/unity-mcp update as
we iterate, without waiting for an upstream maintainer to enable
Pages on CoplayDev/unity-mcp.
- Hardcoded URLs in README.md, website/README.md, website/static/
robots.txt swapped from coplaydev.github.io/unity-mcp to
scriptwonder.github.io/unity-mcp via a one-shot sed.
- docs.md + website/README.md retain a one-line note about flipping
back to coplaydev once upstream Pages is enabled.
After push, to make the preview actually serve:
- Settings → Pages → Source → "GitHub Actions"
on https://github.com/Scriptwonder/unity-mcp/settings/pages
The deploy job in the next push will then provision Pages on first run.
Problem: website/docs/releases.md and the README's "Recent Updates"
block had drifted badly. README claimed v9.6.3 was the latest; the
actual latest is v9.7.0 (and there are 60 releases on record going
back to v4.0.0).
Solution:
- tools/sync_release_notes.py: pulls every non-draft release from the
GitHub Releases API and renders both files. Uses `gh api` when
available (handles auth + TLS cleanly), falls back to urllib +
certifi when not. Supports --check for CI drift detection.
- README.md: gets a sentinel-bracketed `<!-- recent-updates:start -->
... <!-- recent-updates:end -->` block the script regenerates
surgically — never touches the surrounding content. Latest 5
releases with tag, date, link.
- website/docs/releases.md: full 60-release history, grouped by minor
version, each release body inside a collapsible `<details>` block.
Now shows the real v9.7.0 → v4.0.0 span.
- .github/workflows/sync-releases.yml: triggers the sync on every
release event (published/edited/unpublished/deleted), daily at
11:00 UTC (catches out-of-band edits), and on workflow_dispatch.
Commits directly to beta with [skip ci]. PRs run --check only.
- /contributing/docs page: new "Release notes sync" section
documenting the do-not-edit contract for releases.md and the
recent-updates block, plus the manual sync commands.
Verified: sync ran end-to-end via `gh api`, renders 60 releases into
1304 lines of releases.md + 5 entries in the README block. npm run
build passes.
- docs-deploy.yml: actions/checkout with fetch-depth: 0 so Docusaurus's
showLastUpdateTime / showLastUpdateAuthor resolves real per-file
commit metadata. Shallow clones make every page report the latest
build commit, which is useless to readers.
- website/static/robots.txt: allow-all crawlers + sitemap reference.
Required by Algolia DocSearch's crawler when the application gets
approved; harmless before then.
- /contributing/docs page: new sections covering first-time GitHub
Pages enablement (Settings → Pages → Source: GitHub Actions) and
the custom-domain CNAME path. Maintainers reading this would
otherwise hit a 404 on first deploy and not know why.
Verified:
- npm run build succeeds (Server 935ms, Client 1.8s)
- sitemap.xml lists all 80+ URLs
- robots.txt copies to build/ correctly
9 hand-written pages flagged NEW in the locked IA. All wired into
sidebars.js and verified by `npm run build`.
Getting Started:
- first-prompt.md: end-to-end "build a red cube" walkthrough with the
exact MCP tool chain the assistant should call, common failure modes,
and escalating prompts that exercise other groups.
- clients.md: capability matrix across all 12 supported MCP clients
(transport, auto-config, streaming, free tier, per-client toggles).
Guides:
- multi-instance.md: set_active_instance semantics — Name@hash, hash
prefix, port shorthand; HTTP vs stdio isolation; per-call unity_instance
routing for cross-project prompts.
- tool-groups.md: the 9 groups, how manage_tools(activate/deactivate/
list_groups/sync/reset) works, why per-session visibility exists
(prompt economy, routing clarity, package hygiene), server vs session
state reconciliation.
Architecture:
- transports.md: HTTP vs stdio decision matrix, the architecture of each,
what instance routing semantics each gives you, network security guards
(loopback by default, LAN/remote opt-in).
- python-layers.md: the three Python surfaces (MCP tools, CLI commands,
resources), why they're hand-maintained instead of auto-generated,
domain symmetry rule.
- unity-compat.md: the four active shims, when to add a new shim, what
doesn't belong in a shim, static-dispatch vs reflection patterns,
link to the canonical UnityCompatShims.cs marker class.
Contributing:
- testing.md: Python pytest, Unity EditMode/PlayMode, multi-version
compile matrix, pre-push/pre-commit hooks, stress scripts, CI surface.
- docs.md: hand-written vs auto-generated split, examples block
preservation rule, slug discipline (brand-neutral), redirect protocol
for slug renames, CommonMark vs MDX.
sidebars.js: uncommented the NEW entries; left reference/cli and
reference/manifest TODOs in place for a follow-up.
Verified:
- npm run build succeeds (Client 2.4s, Server 1.1s) with no errors