fix(input): repair hold-to-toggle fixtures and menu reset docs #338
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
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/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!338
Loading…
Reference in a new issue
No description provided.
Delete branch "simonwjackson/Longshot:fix/hold-toggle-fixtures"
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?
Why
The #137 merge broke two game-free tests on main. Restore the fixtures without weakening their assertions, and describe the Linux menu reset hook accurately.
What changed
tests/test_pad_layout.py: include the existinghold_toggle.hfor the extracted binding table'sHoldToggle.tests/test_menu_keys.py: use C++static_assertwhile including the C API header, then remove the macro. GCC now checks the same layout assertions as Clang.host/oot_menu.c, README and development guide: Linux clears latches on any menu screen's pane-focus callback, not only the pause page. Individual title/save/game-over transitions remain explicitly unverified in play. No runtime statement changes.Flags and settings
None. No runtime behavior or saved option changes.
Measurements
main:
c0442078d3(2026-11-14)this PR: fix/hold-toggle-fixtures @ abecfa9
Current head:
c734325a01(same fixture fixes, updated main and run records)The two measured pairs used the same fixes at
abecfa9against mainc0442078. The follow-up now starts atf87557a; only the base and the run-record format changed. The fixture corrections are unchanged, so the deterministic compile results remain applicable; final focused checks and the confirmation full suite pass on the published head apart from the named inherited PATH failure.Hardware: zao, Linux, native GCC and Clang; no GPU or game needed.
Scene: the real extracted binding/menu fixtures.
Method: two interleaved main/PR pairs. Each runs
python -I -B tests/test_pad_layout.py, thentests/test_menu_keys.py --cxx g++, then the same menu check with--cxx clang++.How to reproduce: run those three commands in each checkout with the project's C/C++ toolchain.
c0442078, runs 1 / 2Testing
Tested: Both failures reproduced on untouched main. Both checks pass with the fixes; menu keys passes with g++ and clang++.
test_hold_toggle.pyandgit diff --checkpass. The confirmation full suite on the published head has 533 passed, 1 failed, 16 skipped in 654 s under the shared lock with 8 jobs. The only failure,test_linux_tools.py, reproduces on untouched main (fixed/usr/bin:/binmisses Nix tools). The earlier stable run's one-second preparation-test timeout did not recur; its 19 tests also passed three separate focused repeats on both main and this PR. The final focused run passes 5/5, including lift-cache and the run-record validator. An earlier run during a main update is not used as final verification. There is no separate formatter or typechecker; the fixtures compile with compiler warnings enabled.Not tested: No new gameplay run or Windows run. This changes tests, comments and documentation only. The Linux callback contract was read at
nx2/oot_patches.py:patch_menu_focusandhost/oot_menu.c:hos_oot_menu_focus; this is not a claim to have played every dialog.Needs other testers: None for these fixture repairs. The underlying feature's Windows gameplay request T-NDNY remains open and is not a passing result.
Screenshots
Nothing on screen changes.
Risk and rollback
Only test compilation and documentation change. A bad fixture include could affect another compiler; GCC and Clang were both checked. Revert this follow-up to restore the previous fixtures, including their failures.
Reviewer notes
No product behavior, public ABI or third-party change. The C++ assertion spelling is scoped to the fixture's C-header include. No compatibility shim was added to production code.
Issues
See #137.
Checklist
For everyone
type(scope): description).main. New follow-up starts atf87557a; no published history rewritten.python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above).third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
Assisted-by:/Co-Authored-By:trailers.docs/tested/for each measured run.tests/that reads changed source updated in this PR, not weakened.Confirmation suite at
c734325: 533 passed, 1 inherited Nix PATH failure, 16 skipped in 654 s under the shared lock. Both reported fixture failures remain fixed, with menu-keys checked using g++ and clang++; no new failures. The earlier preparation-test timeout did not recur.WIP: fix(input): repair hold-to-toggle fixtures and menu reset docsto fix(input): repair hold-to-toggle fixtures and menu reset docsReviewed
c734325a01against current main0caf06184b. No blocking finding in the fixture repairs and hook documentation.Independently reproduced the HoldToggle compile failure and GCC _Static_assert failure on main. With current main integrated locally, the two pad-layout tests pass, menu-key checks pass with GCC and Clang, and the hold-toggle test passes. The tested-configuration validator also passes. No assertions were removed: the C-header layout assertions are retained using C++ static_assert, with the macro undefined immediately after the include.
Checked patch_menu_focus and Linux hos_oot_menu_focus: the injected callback passes screen/pane/return-address through, and the Linux hook clears toggles without filtering for the pause screen. The development guide correctly separates that source contract from unverified individual gameplay transitions. The host-file edit is comment-only. Current-main merge simulation is clean.
Merge coordination: this PR already includes #331's one-line fix. Prefer this PR rather than merging both unchanged; combining the branches currently conflicts only over the trailing comment on that include, which should be retained once.
Scope: focused Linux checks and source review, not a rerun of the author's full suite or playthrough. No Windows/game validation performed by this reviewer. Assisted-by: Codex (OpenAI).
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.