fix(website): the settings page takes the menu's text row, so the site builds again #533
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
beanstalk: approved @ 1697603
beanstalk: approved @ 2c5a62e
beanstalk: approved @ 4fd82b7
beanstalk: approved @ 64d6d09
beanstalk: approved @ 6f91fae
beanstalk: approved @ 70a78f9
beanstalk: approved @ 8d361dc
beanstalk: approved @ 9d8356e
beanstalk: approved @ abf2227
beanstalk: approved @ d82f202
beanstalk: approved @ e5f1e40
beanstalk: approved @ ee8ab5f
ci: approved
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/macos
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
regression
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
ci: approved
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!533
Loading…
Reference in a new issue
No description provided.
Delete branch "jarynclouatre/Longshot:fix/website-text-row"
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?
Type: fix · Risk: low · Tested on: Linux x86-64 (game-free checks only) · Needs: none
Why
The website stopped building on main.
npm run buildexits 1 withREADME/menu graphics coverage mismatch at Custom output size, andnode --test tests/*.test.tsinwebsite/gives 64 of 72. The hourly website job (.forgejo/workflows/website.yml) runs the build andnpm run checkbefore it deploys, so the site no longer updates. It stopped before #51: since #136 (the Mono choice) one website test has failed, andnpm run checkruns the website tests beforewrangler deployin that job.readGraphicsSettings(website/src/repo-docs/graphics-settings.ts) takes every Graphics row that is not a heading only when its value starts with&opts.. The Custom output size row from #51 is a text field: its value isnullptrand the field lives infield_rows[](gpu/vk/vk_menu.cpp), so the reader threw at it.None filed. Found running the website's tests on main.
How to reproduce
Seen on: Linux x86-64, running the website's tests and build; the game was not run.
Settings and switches: defaults
Steps: In
website/afternpm ci, runnode --test tests/*.test.tsandnpm run buildon main.Expected: The website tests pass and the settings page builds with the Custom output size row.
Actual: The tests give 64 of 72, and the build exits 1 with
README/menu graphics coverage mismatch at Custom output size.What changed
The website's settings reader now accepts text fields listed by the menu. The tests also use the current restart rows and Audio output wording, so the site builds again.
website/src/repo-docs/graphics-settings.ts):readMenuRowsreads the names in the menu'sfield_rows[]and marks those valueless rows as fields. A field row is listed like the others, with README's choices and default in order. Its restart comes from its help's "Applies after a restart": the menu keeps the restart on the row the field sets (Output resolution), not on the field's own row. Any other valueless row that is not a heading still stops the build.website/tests/graphics-settings.test.ts): a new case reads a menu table with a text row named infield_rows[](listed, restart from its help) and a valueless row that is not one (still refused), and checks that the real Custom output size takes README's choices and default. Two existing checks that the throw hid were out of date: the list of restart rows lacked Skip title screen (#399) and now Custom output size, and the Audio output restart drift case still replaced README's line from before Mono (#136), so it no longer changed anything and itsassert.throwsfailed. That last one is the check that already failed before #51.Measurements
Verdict: the website tests go from 64 of 72 to 73 of 73 and the site builds; the game-free suite has no new failures.
Hardware: none used (a Linux x86-64 PC, Node 24.22, Python 3.14, gcc 15.2)
Scene: none, the game was not run
Method: 2026-11-14. in
website/afternpm ci:node --test tests/*.test.ts,npm run build,node scripts/check-site.ts; thenpython3 -I -B tests/run_all.py, two runs each, interleaved (main, PR, main, PR). The new website case also ran against main'sgraphics-settings.ts. Branch:fix/website-text-row.How to reproduce: the commands above in a checkout of each commit
543846eb6102ddc3npm run buildcoverage mismatch at Custom output sizenode scripts/check-site.tstests/run_all.py(run 1, run 2)test_bake_portability.py,test_walk_key.pytest_bake_portability.pyfails here for a missing Python module (zstandard).test_walk_key.py's fixture doesn't link on main (undefined reference to hos_oot_autoload_input).Flags and settings
None.
Testing
Tested: the website's tests, build and site check, and the game-free suite, on a Linux PC, as in Measurements.
Not tested: the deploy itself (it needs the Cloudflare token). The built settings page was not looked at in a browser.
Must be tested: None.
Risks
What could break: A new text field row in
field_rows[]is published from README's line like any other setting; one README does not list still stops the build. #236 (README split) rewords comments and error texts in the same file; whichever lands second needs a small rebase.Turning it off: Reverting the commit brings the build failure back.
Compatibility: Nothing changes in the game. The website builds again and lists Custom output size with README's choices and default.
Checklist
Everyone
type(scope): description) of the status line's type.main.python -I -B tests/run_all.pypasses (any failure that also fails onmainis named).third_party/untouched (a new folder with aPROVENANCE.mdinstead).When it applies
mainand passing here.tests/that reads changed source updated in this PR, not weakened.WIP: fix(website): the settings page takes the menu's text row, so the site builds againto fix(website): the settings page takes the menu's text row, so the site builds againReviewed head
6102ddc32bef2aba721fca82c142c3f53083354a; no correctness issue found in the complete two-file diff.Independent Windows 11 / Node 24.22.0 validation with the pinned lockfile: the unchanged parent
543846ebwebsite gives 64 passed / 8 failed (72 tests), including the Custom output size coverage error. This head gives 73 passed / 0 failed. The added field case also checks that an unrecognized valueless row still stops publication. The corrected restart/Mono assertions continue to enforce the source/README contract rather than bypassing it.The reader accepts a null-valued, non-heading row only when
field_rows[]names it, and keeps graphics ordering, coverage and restart checks. This covers the real Custom output size text row without accepting arbitrary valueless settings. No dependency, build-script or deployment change is present.Independent full Astro build is not claimed: on Windows both parent and PR stop earlier in unchanged
src/repo-docs/assets.ts, where the asset hook joins a file-URL pathname into a doubled-drive path (<drive>:\\<drive>:\\...\\public\\assets). That is a separate pre-existing Windows path issue, not introduced by this diff. The author's Linux build evidence is in the description; this review independently verifies the parser/test regression and source change. No deployment performed.View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.