docs: add a searchable Starlight documentation site and player guides #2083
Open
bibigurl-yum wants to merge 11 commits from
bibigurl-yum/docs/starlight-preview into main
pull from: bibigurl-yum/docs/starlight-preview
merge into: MagicBeanDev:main
MagicBeanDev:main
MagicBeanDev:github/pr/2893
MagicBeanDev:github/pr/2890
MagicBeanDev:github/pr/2887
MagicBeanDev:github/pr/2878
MagicBeanDev:github/pr/2875
MagicBeanDev:github/pr/2874
MagicBeanDev:github/pr/2873
MagicBeanDev:github/pr/2871
MagicBeanDev:github/pr/2756
MagicBeanDev:github/pr/2897
MagicBeanDev:github/pr/2896
MagicBeanDev:github/pr/2718
MagicBeanDev:github/pr/2842
MagicBeanDev:github/pr/2691
MagicBeanDev:github/pr/2895
MagicBeanDev:github/pr/2743
MagicBeanDev:github/pr/2765
MagicBeanDev:github/pr/2708
MagicBeanDev:github/pr/2732
MagicBeanDev:github/pr/2755
MagicBeanDev:github/pr/2817
MagicBeanDev:github/pr/2876
MagicBeanDev:release-please--branches--main
MagicBeanDev:release-please--branches--main--release-notes
MagicBeanDev:github/pr/2778
MagicBeanDev:github/pr/2888
MagicBeanDev:github/pr/2866
MagicBeanDev:github/pr/2877
MagicBeanDev:github/pr/2800
MagicBeanDev:github/pr/2829
MagicBeanDev:github/pr/2850
MagicBeanDev:github/pr/2889
MagicBeanDev:github/pr/2882
MagicBeanDev:github/pr/2860
MagicBeanDev:github/pr/2849
MagicBeanDev:github/pr/2886
MagicBeanDev:github/pr/2794
MagicBeanDev:github/pr/2840
MagicBeanDev:github/pr/2830
MagicBeanDev:github/pr/2834
MagicBeanDev:github/pr/2719
MagicBeanDev:github/pr/2742
MagicBeanDev:github/pr/2741
MagicBeanDev:github/pr/2820
MagicBeanDev:github/pr/2771
MagicBeanDev:github/pr/2859
MagicBeanDev:github/pr/2858
MagicBeanDev:github/pr/2823
MagicBeanDev:github/pr/2757
MagicBeanDev:github/pr/2769
MagicBeanDev:github/pr/2844
MagicBeanDev:github/pr/2843
MagicBeanDev:github/pr/2673
MagicBeanDev:github/pr/2855
MagicBeanDev:github/pr/2739
MagicBeanDev:github/pr/2807
MagicBeanDev:github/pr/2851
MagicBeanDev:github/pr/2789
MagicBeanDev:github/pr/2814
MagicBeanDev:github/pr/2818
MagicBeanDev:github/pr/2774
MagicBeanDev:github/pr/2772
MagicBeanDev:github/pr/2750
MagicBeanDev:github/pr/2786
MagicBeanDev:github/pr/2785
MagicBeanDev:github/pr/2782
MagicBeanDev:github/pr/2779
MagicBeanDev:github/pr/2775
MagicBeanDev:github/pr/2706
MagicBeanDev:github/pr/2766
MagicBeanDev:github/pr/2747
MagicBeanDev:github/pr/2759
MagicBeanDev:github/pr/2745
MagicBeanDev:github/pr/2740
MagicBeanDev:github/pr/2733
MagicBeanDev:github/pr/2725
MagicBeanDev:github/pr/2727
MagicBeanDev:github/pr/2728
MagicBeanDev:github/pr/2729
MagicBeanDev:github/pr/2721
MagicBeanDev:github/pr/2722
MagicBeanDev:github/pr/2715
MagicBeanDev:github/pr/2714
MagicBeanDev:github/pr/2707
MagicBeanDev:github/pr/2703
MagicBeanDev:github/pr/2705
MagicBeanDev:github/pr/2697
MagicBeanDev:github/pr/2679
MagicBeanDev:github/pr/2676
MagicBeanDev:github/pr/2669
MagicBeanDev:docs/what-hookshot-connects-to
MagicBeanDev:fix/hdr-encode-test
MagicBeanDev:fix/main-tests
MagicBeanDev:fix/play-cache-files
MagicBeanDev:perf/game-barrier-order
MagicBeanDev:feat/heap-lazy
MagicBeanDev:feat/texture-detail
MagicBeanDev:perf/astc-opaque-bc1
MagicBeanDev:fix/fs-dir-lock
MagicBeanDev:fix/framegen-native-kept
MagicBeanDev:fix/update-no-downgrade
MagicBeanDev:port/k10-gcn-f16-mirrors
MagicBeanDev:fix/framegen-mult-cap
MagicBeanDev:chore/release-as-2.1.1
MagicBeanDev:perf/pcache-load-switch
MagicBeanDev:fix/prepare-progress-log
MagicBeanDev:fix/update-closes-stale-game
MagicBeanDev:fix/hdr-scaled-sampled
MagicBeanDev:perf/first-start-preset
MagicBeanDev:perf/zero-upload
MagicBeanDev:fix/vcore-escape-2s
MagicBeanDev:test/fake-gh-atomic
MagicBeanDev:perf/batch-idle-flush
MagicBeanDev:test/finish-stub-a
MagicBeanDev:chore/record-2.1.0
MagicBeanDev:fix/main-red-tests
MagicBeanDev:fix/test-display-startup-driver-cache
MagicBeanDev:feat/mesh-shader-mode
MagicBeanDev:fix/menu-probes-at-startup
MagicBeanDev:fix/fps-counter-classic
MagicBeanDev:fix/test-log-batch-flake
MagicBeanDev:fix/narrow-screen-hud
MagicBeanDev:ci/prereleases
MagicBeanDev:release/v2.0.15
MagicBeanDev:hotfix/v2.0.15
MagicBeanDev:fix/present-ahead-replay
MagicBeanDev:release/v2.0.13
MagicBeanDev:fix/bracket-paths-2013
MagicBeanDev:fix/hdr-overlays-2013
MagicBeanDev:fix/fps-counter-scale-2013
MagicBeanDev:fix/stick-seen-at-rest
MagicBeanDev:hotfix/menu-fits-screen
MagicBeanDev:fix/f1-always-opens-menu
MagicBeanDev:fix/ini-keep-lines
MagicBeanDev:claude/cranky-pike-7cf247
MagicBeanDev:perf/texture-answer-flat
MagicBeanDev:fix/stamp-test-modules
MagicBeanDev:fix/appimage-fonts
MagicBeanDev:fix/display-awake
MagicBeanDev:release/v2.0.12
MagicBeanDev:fix/discord-windows
MagicBeanDev:rc/v2.0.12-tests
MagicBeanDev:fix/dlss-keep-feature
MagicBeanDev:rc/v2.0.12
MagicBeanDev:button-icons
No reviewers
Labels
Clear labels
accessibility
Barrier affecting people with disabilities
autorelease: pending
autorelease: tagged
bug
Something isn't working
dependencies
Pull requests that update a dependency file
documentation
Improvements or additions to documentation
duplicate
This issue or pull request already exists
enhancement
New feature or request
github_actions
Pull requests that update GitHub Actions code
good first issue
Good for newcomers
help wanted
Extra attention is needed
invalid
This doesn't seem right
question
Further information is requested
testing wanted
wontfix
This will not be worked on
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
Milestone
Clear milestone
No items
No milestone
Assignees
Clear assignees
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2083
Loading…
Reference in a new issue
No description provided.
Delete branch "bibigurl-yum/docs/starlight-preview"
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?
Hookshot’s setup instructions and troubleshooting answers are spread across the README, technical docs, and issue threads. This adds a searchable Starlight site with short guides that point to the existing references, a compatibility checker, and sourced issue examples.
I DM’d NotRexed directly about this. I’m happy to keep the site up to date using the existing documentation, release notes, and issue responses.
Preview
https://bibigurl-yum.github.io/Hookshot/
Publication and maintenance
The explicit list in
website/content-sources.mjsimports eight pages: five short player guides, the existing save guide, the README, and CONTRIBUTING.md. Internal notes and development references remain on GitHub. Adding a new Markdown file does not automatically publish it. The manual is generated from the README, not maintained as a second copy.website/site.config.mjsdefaults tohttps://notrexed.github.io/Hookshot/and edit links toNotRexed/Hookshot:main. Both generated and handwritten pages use that configuration.npm run build:previewsupplies the fork overrides. No upstream hosting configuration or deployment workflow is enabled by merging this PR.The compatibility calculator remains curated logic, but builds and checks now fail if either the README requirements or project-status section changes without a review.
website/compatibility-review.jsonrecords the reviewed section hashes; the review procedure and regression tests are included. This detects changes in the checked-out source at build time, not upstream changes in the background.An Action can build/check documentation changes and deploy after merge if the maintainer adopts the site. Node, Astro/Starlight, their lockfile, and hosting are an explicit maintainer decision; the game build does not depend on them. I’m also happy to maintain the fork-hosted version.
Validation
ceb8745when checked.git diff --check: passed.21fa136reported 301 passed, 5 failed, 50 skipped; all five failures reproduced on untouched upstream. The subsequent review changes are confined to documentation and website source.Browser access remains unavailable in the authoring environment. Screenshots and desktop/mobile visual and interaction QA are outstanding; they are not claimed as completed.
CI evidence from the reviewed base
All four red source-regression jobs on the original PR run match upstream
mainat the PR's base,21fa136:test_make_game_ngx.py: fixture missingswitching; both 345 passed / 1 failed / 10 skippedswitchingerror; both 167 passed / 1 failed / 10 skippedtest_pipeline_state_portable.py: deprecatedfopenwith-Werror; both 163 passed / 1 failed / 14 skippedlinux-appimage.yml:163:9, ShellCheck SC2012These are comparisons to the reviewed base, not a claim about the newest main commit. Newer main runs inspected during review were pending or cancelled. Check the latest completed CI before merging. This PR does not alter the failing tests, builder, or workflows.
Thanks for this, the guides read well and the claims I spot-checked against main's readme hold up (supported build
e0f3ccfa, glibc 2.35, AVX2 for the AppImage, 16 GB RAM / 8 GB VRAM / ~60 GB, 10-45 min build, the 60 FPS cap advice, GPU families). No workflow is added or changed, no game-derived content, and the only external call is the browser fetch of GitHub's public releases API (credentials omitted, with a fallback link).node_modules,distand the generated content are gitignored. Findings, mostly for NotRexed's call on direction:docs/*.mdpages restate the readme (requirements, update flow, menu, save paths, "report a bug") and link back to it.docs/common-issues.mdis a dated snapshot ("checked on 2026-11-10") of closed issues with "Unresolved" labels, andcompatibility.mjshard-codes the readme's requirements as separate logic. Both go stale silently when the readme or an issue changes. The PR says a person should review them when sources change, but nothing enforces it (no test ties them to the readme). I'd keep the guides short and link to the readme sections, or accept that the maintainer takes on keeping them in sync.astro.config.mjshassite: 'https://bibigurl-yum.github.io', an edit link tobibigurl-yum/Hookshotbranchdocs/starlight-preview, and the same edit URL is written into the frontmatter ofprepare-content.mjs,antivirus.md,compatibility.mdx. Merged as is, every "edit" link points at a fork branch. There is also no deploy workflow, so merging this upstream does not publish anything. Those belong in a follow-up once hosting is decided (the author says they are fine to change it).website/package-lock.jsonis 6,751 of the 8,102 added lines, plus a Node toolchain (Astro 7, Starlight) in a repo that is otherwise C/Python. That is a maintenance cost (Dependabot noise, Node version requirement>=22.23.4) that the maintainer should accept explicitly. The lockfile itself is fine to commit.prepare-content.mjspublishes everydocs/*.mdon the site (all 30+ internal design notes), the readme as a "manual", CONTRIBUTING.md and the pipeline-states README. So the readme exists twice on the site (the manual plus the guides built on it). Probably intended, but worth a conscious yes.common-issues.mdsays the #1976 answer "suggestsRX_VK_FSR_FG=0". On main the readme and development guide describeRX_VK_FSR_FG=1as the opt-in HUD-moving mode and don't document=0, so please re-check that line against the thread, or drop the variable name.switchingfixture failure on main; I didn't verify the ubuntu and actionlint failures against main, so please confirm they match main's latest run before merging. The PR description also says screenshots and browser QA are outstanding.Not approving: whether Hookshot carries a second docs tree and a Node site is the maintainer's decision, so I'm leaving that to @NotRexed. Nothing here is a bug in the code.
@ -0,0 +1,93 @@# Common issues and answersA dated snapshot of issue states. These "unresolved / workaround" statuses will drift, and nothing checks them. Consider linking to the issue labels or tracker instead of restating status.
@ -0,0 +1,50 @@import { defineConfig } from 'astro/config';Fork-specific
site(and theeditLinkbelow, plus theeditUrlin generated and hand-written pages) would all need to change for an upstream-hosted site.@ -0,0 +1,50 @@import { defineConfig } from 'astro/config';Addressed in
ce09826.website/site.config.mjsnow defaults to the upstream Pages host andNotRexed/Hookshot:mainedit URLs. Astro, generated frontmatter, and validation share this configuration; handwritten pages inherit it instead of hard-coding the fork.npm run build:previewprovides explicit fork overrides. Both modes were built and checked, including checking that every generated edit URL points to an existing source file. Hosting itself remains a maintainer decision; no deployment is enabled by this PR.@ -0,0 +1,93 @@# Common issues and answersAddressed in
ce09826. Removed the current “Unresolved”, “Open investigation”, and workaround-status labels from the table, entries, and homepage badges. The page now describes the responses as historical examples, keeps the original version/report context, and links directly to trackers for current status and advice. It no longer maintains a separate open/fixed status list.Thanks for the detailed review. Updated in
ce09826:RX_VK_FSR_FG=0. Removed the variable from our summary anyway, retaining the v2.0.14 context and linking to the original response/current tracker.The fork preview is being refreshed from this commit. No failing game tests or workflow checks were bypassed.
Players can now follow development and look for an existing report without needing to understand GitHub’s issue and pull-request workflow. These additions are included in this PR at
5bb5912.The fork preview is published and verified: homepage, progress overview, and problem search. The public HTML and feed match the checked deployment build. The snapshot contains 2,490 items collected at 2026-11-11 21:16 UTC.
Refresh limitation: the browser polls the feed every five minutes, but this GitHub Pages preview currently serves a static snapshot. Public continuous updates require hosting the optional refresh service or scheduling snapshot collection and deployment; neither is activated yet.
Validation: default and fork builds/checks passed (14 pages; 691/692 local links and assets), including anchors, search index, source guards and edit targets. All four website test files passed, covering 28 individual tests. The final deployment build passed again. Rendered desktop/mobile layout, keyboard interaction, light/dark themes and screenshots remain unverified because browser access was unavailable. No game build or runtime experiment was performed.
Current version watch needs fresh GitHub data after the site is published. This PR now includes a scheduled refresh Action to collect a complete snapshot, build/check the documentation, and deploy only the checked website every 15 minutes (minutes 7, 22, 37 and 52), with a manual-run option. Failed collection or validation leaves the last successful deployment online; the page shows the data timestamp. GitHub scheduling can be delayed, so this is periodic updating rather than a real-time guarantee.
Intended upstream adoption after this PR is approved: merge
.github/workflows/docs-progress.ymlwith the documentation intoNotRexed/Hookshot:main, select GitHub Actions as the Pages source, allowmainin thegithub-pagesenvironment, and set the Actions repository variableDOCS_PROGRESS_ENABLED=true. Then run Refresh documentation progress manually to verify the first deployment. Outside the preview fork, the workflow uses the repository’s default branch and derives hosting/edit links from that repository. ADOCS_SITE_URLvariable supports an alternate hosting origin;/Hookshot/remains the site base.The fork preview is explicitly enabled in the workflow; upstream requires this deliberate opt-in. No personal access token is needed: collection uses the job’s token, and only the deployment job gets Pages/OIDC write permissions. There is no PR-triggered publishing. Reviewed impact summaries still require human review and expire when their source report changes.
Current status: uploaded in
a9de98don this PR. The workflow-only copy is installed on the fork’s default branch (37a6bdd), Pages now uses GitHub Actions, and the workflow is active. actionlint and the default website build/check passed (14 pages, 693 local links/assets; all four website test files passed). The first manual refresh is queued for a GitHub runner; successful automated deployment has not yet been verified. No upstream hosting settings were changed.On the game-files rule, it's clean. The only images are the existing
assets/hookshot.pnglogo, plus the Libertinus fonts with their OFL licence. There are no game screenshots or game-derived files. The progress server listens on 127.0.0.1 by default, accepts only GET and HEAD, and leaves out report bodies and account fields.Since the last review, though, the scope has grown well past "docs". It now has a Progress & updates board fed by a collector over 2,490 issues and PRs, an optional refresh server, a "Current version watch" built from curated summaries, and a pending
docs-progress.ymlthat would deploy to Pages every 15 minutes with Pages write permissions. The remaining points are for NotRexed:package-lock.jsonis 6,751 of the 9,375 lines.compatibility-review.jsonandprogress-curation.jsoncurrent?I'd split it: the short player guides under
docs/with the readme link, which are cheap to review, separately from the site and the progress tracker. The rendered layout is also still unchecked, as the description says.Thanks for the quick rework. Re-reviewed at
a9de98d.Fixed from my first review
compatibility-review.jsonplus the build guard fail the build when the readme requirements or status section change. That answers my point 1 well.site.config.mjsdefaults to the upstream host andNotRexed/Hookshot:mainedit links, with the fork values only inbuild:preview.docs/*.md.RX_VK_FSR_FG=0line is gone from the summary.Game-files rule (CONTRIBUTING.md): still clean. Images are the existing
assets/hookshot.png, fonts are Libertinus with its OFL licence, and there are no game screenshots or game-derived files. The progress feed uses only public issue/PR/release metadata and leaves out bodies and account fields. I agree with Joey-Magnus's review on that.New since then, and what's still open (all for NotRexed's call)
progress-curation.json), anddocs-progress.yml. I agree with Joey-Magnus that the player guides underdocs/and the site/tracker are cheap vs. costly to review and would be easier to land separately.docs-progress.ymlis a new scheduled workflow (every 15 minutes) withpages: writeandid-token: writeon the deploy job. Good points: actions are SHA-pinned, top-level permissions are read-only, no PR trigger, and it is off unlessDOCS_PROGRESS_ENABLED=trueis set. Still, it burns runner minutes around the clock and publishes summaries of open reports, which the maintainer should accept explicitly. Nit: the workflow hard-codesbibigurl-yum/Hookshotanddocs/starlight-previewin three places; if it lands upstream those fork branches should go.npm run check), so after merge they only run in that scheduled job. If the site is adopted, a PR-time check forwebsite/**would catch drift sooner.compatibility-review.jsonandprogress-curation.jsonall need a human when the readme or reports change.Not approving: whether Hookshot carries a Node docs site and a scheduled publishing job is the maintainer's decision, so I'm leaving that to @NotRexed. I found no code bug in the parts I read.