WIP: feat(menu): save and resume when restarting for changed settings #61
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
needs measurements
question
testing wanted
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!61
Loading…
Reference in a new issue
No description provided.
Delete branch "mooki/Longshot:restart-in-place-next"
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
Draft: this waits for Nicholas Gower's Skip title work. No open or merged Longshot pull request carrying that dependency was found in the complete public title/body inventory checked during this move. Its credited commit remains in this branch until the dependency lands, when it must be dropped during rebase.
Applying a restart-only setting should not send the player back to the title to load an older save. With Restart in place on, Restart asks the game to autosave, relaunches and loads that save. No Longshot game build/run was requested for this draft; the new evidence is game-free, and the pictures below retain their original Hookshot identities.
What changed
README.mdcase, apply the existing CRT policy before all fixture/forced headers, and update the opening-skip check to assert the actual Skip title enum at 44 rather than an obsolete reservation comment. All opening-52, no-collision, save/commit, cancellation and core-ownership assertions remain.Risk: this is the game's save/load, not a process snapshot. It does not preserve enemies or objects in flight. Cancelling after the game accepted a save does not undo that save; it cancels the relaunch. Windows uses a new process, while Linux's
execvekeeps its PID.Flags and settings
HOS_RESTART_CONTINUERX_VK_MENU_SCRIPTHOS_HEADLESSRestart in placerestart_in_placeSkip title screenskip_title_screenRestartRestart nowQuitHOS_OPT_RESTART_PLACEHOS_OPT_SKIP_TITLEMeasurements
Branch state: on main
d725b3631982ed0035ea3ac9cbe1677e9fad260c; head74f8248ef5899f1f8f43af39f718ec79b1ae2583; whole game-free suite on this head:512 passed, 1 failed, 20 skipped(maind725b3631982ed0035ea3ac9cbe1677e9fad260c:510 passed, 1 failed, 20 skipped); the commits are unchanged by rebases apart from the results table.The sole failure in both suites in the branch-state block is
tests/test_updater_asset_digest.py: localNU1100meansMicrosoft.AspNetCore.App.Ref (= 10.0.13)cannot be resolved. The historical suites below also include this failure.Main
d725b3631differs fromd4a69456only by scripts, docs and tests, so earlier labelled behavior evidence remains applicable; no game code changed in the clean rebase. The new suite is recorded in the branch-state block, not substituted into the older evidence.main:
d4a69456c9(2026-11-12)this PR: restart-in-place-next @
9eb1429808Hardware: Core i9-13900K, 96 GB RAM, Arch Linux 7.2.15-1-omarchy; repository-default compiler selection, with GCC for drivers that declare it. No GPU used for the new checks.
Scene: authored restart/save/title state and temporary saves in the game-free fixtures; not a newly run game.
Method: the previously recorded whole suite was on the then-final head9eb14298, after every commit; pinned-main suite shared for today's migrations. Two interleaved source-control pairs run the same restart test against main and branch. Test output, not duration, is the measurement. A feature's current-game and off-cost proof remains unrun.
How to reproduce:
python -I -B tests/run_all.py --jobs 6 --strict;python -I -B tests/test_restart_in_place.py. For a future game run, use a disposable save, change a restart-only setting, confirm Restart, verify fresh save/commit/continuation; separately cancel during the autosave wait.d4a694569eb14298The base suite was run once for all moved pull requests of this day, on that commit. The shared base also fails two bounded-time cases in
tests/test_appimage_package_retry.py; that test passes here. No package was installed. These checks have not yet been run on a forge runner.The earlier Longshot suite, at
e0950172, was 509/2/20: the same .NET failure plustest_opening_skip.pyexpecting the obsolete “44 is reserved” comment. The final test checks the real declaration instead, and the complete suite was rerun on the final head. Initial Windows-target captures also found missing early CRT policy. Those failures remain recorded; their corrected captures pass. Ten distinct translation-unit captures passed across the retained checks, with later execution-dependent variants outside their coverage. This is not Windows execution.Historical hosted checks: the archived record for GitHub head
ff3f413d265852a4499073cd2199b3ccf8bf3505has all four Windows/Ubuntu source-check parts completed successfully in run 43165972215. That is not a check of this Longshot integration. Core restart/autoload files are rename-only; surrounding runtime/menu files retain newer main behavior, and the fixture adaptations above are new. The added-lines old-name scan is empty.Historical game evidence, not repeated: Hookshot
2a3c6f5con6ff87f59, 2026-11-11; Linux/RTX 4090/NVIDIA 615.78.08, windowless:All three historical runs ended at their requested wall bounds, exit 124, without fatal/crash/device-loss lines. The title case had two startup virtual-core escapes. The save case's interval contained one known NVIDIA mapping refusal, not an all-zero kernel result; attribution to a process was unproved, and its original all-zero kernel expectation failed. No Xid or cache-operation fault was recorded. Those outcomes are not relabelled as new Longshot results or a performance comparison.
The main suite is the shared once-per-base run, not repeated here. The complete branch suite ran after every commit, 2026-11-12 19:16:36–19:20:02 local, with the repository default compiler and a fresh HOME/XDG. Runner execution took 234 s on main and 206 s on the branch, not a performance comparison. All older failed runs remain above; no game or native Windows rerun is inferred.
Testing
Tested: on this PC (Arch Linux, RTX 4090 with NVIDIA 615.78.08, i9-13900K), the current-head whole game-free suite; no GPU was used for these new checks. The earlier two interleaved restart-fixture pairs at the measured commits above fail for the absent Gameplay row on main and pass save/commit/cancel/continuation checks on the branch. Ten distinct translation units compiled for the Windows target across the earlier checks; not run on Windows. Later execution-dependent variants were outside that coverage. Historical Hookshot
2a3c6f5con6ff87f59changed the title's output size to1920x1080through Restart, cancelled during the autosave wait while keeping the original process running, and saved/relaunched back to the logged Kokiri Forest position. These were windowless Linux checks, not a new Longshot run.Tested but not measured: historical Hookshot functional scenarios below; no new Longshot game run.
Not tested: no Longshot game build/run was requested for this draft; current-game off-cost/default comparison remains unrun while the Skip title dependency is pending. No AMD/Deck, physical input, window/monitor restoration, co-op reconnection, long sessions, corrupt saves, other areas or current-build Restart in place off run. The retained game evidence is bounded, historical Linux/windowless testing; Windows-target syntax is not a Windows game. No test request was posted during this move.
The title-flow automation can time out; it does not validate damaged save contents. A save refused by the game is not forced.
Needs other testers:
Screenshots
No current-game pair: main @
d4a69456and this PR @9eb14298were checked game-free, not photographed in game. Historical screenshots are this PR @ 2a3c6f5c (Hookshot), as labelled below.All three retained panels were inspected. None is a new Longshot screenshot.
Risk and rollback
A wrong continuation note or save lifecycle assumption could load an older save or keep Restart waiting. Set Restart in place Off (
restart_in_place=0) for the ordinary title restart; keep Skip title screen Off (skip_title_screen=0) for manual loading. Do not setHOS_RESTART_CONTINUEmanually. Cancelling stops relaunch, not an already accepted autosave; reverting the change removes this behavior but does not undo written saves. The historical and current untested limits above remain.Reviewer notes
Start with
oot_restart.csave/write/commit gates,oot_autoload.ccontinuation validation, menu cancellation and input isolation; then the headless display-loop repair. The credited dependency still waits on the linked Skip title work. Check both option44 ownership and opening52, and the retained Windows fixture failures/repairs before treating syntax as execution.Issues
Original draft/report: https://github.com/NotRexed/Hookshot/issues/2607
Dependency: https://github.com/NotRexed/Hookshot/issues/1560
No corresponding restart issue or Skip title dependency pull request was found on Longshot in the public inventory checked during this move. The old GitHub numbers are not Forgejo issue numbers.
Checklist
For everyone
type(scope): description).main.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
AI assistance recorded with
Assisted-by:/Co-Authored-By:trailers.Flags noted, and the switch reference updated (docs/development.md, the README).
Screenshots for a change that shows on screen. Historical, explicitly labelled.
A game-free test added for the fix, failing on
mainand passing here.A check under
tests/that reads changed source updated in this PR, not weakened.Host code builds on both Windows (llvm-mingw) and Linux, with UTF-8 paths. No current game builds; fixture compilation only.
Docs updated.
Moved from NotRexed/Hookshot#2607.
Assisted-by: GPT-6 Astra
Co-Authored-By: GPT-6 Astra [email protected]
Discussion carried over from NotRexed/Hookshot#2607
Every comment that was readable on the original thread when it was copied on 2026-11-12, in order, unchanged except that issue and pull request numbers are written as links to the old repository and names carry no @. Comments by an account that has since been closed there could no longer be read and are missing; where a reply quotes them, the quote remains.
mooki000, 2026-11-12 06:07 UTC (comment, original):
Rebased
14a058b1onto current main87991bc8asff3f413d, preserving all six commits and their complete messages/trailers, including Nicholas Gower's exact NotRexed/Hookshot#1560 co-author line. Resolutions retain both sets of historical test records, main's current prompts/camera/Bug report/reset behavior, and the updated Restart explanation in all 13 catalogues; save/resume behavior and defaults are unchanged. On the first rebase, GCC passed 137 selected checks and Clang 136 with only main's background-input fixture warning; the suite was 471 passed / 1 inherited failure / 20 skipped. Main then moved only by NotRexed/Hookshot#2671; the final rebase changes no PR file blob. Feature/fixture checks and main negatives were rerun with both compilers, along with NotRexed/Hookshot#2671's offline test and Windows-target host syntax (zero errors under the documented platform supplement). The final PR gate passes. The suite was not repeated, and no new game run or native Windows execution is claimed; this remains a draft carrying NotRexed/Hookshot#1560. Sources: the NotRexed/Hookshot#2607 evidence and final-handoff ledger above.Rebased onto main
d725b3631as74f8248eand updated the description with settings, labelled comparisons, reproduction and rollback. Earlier results, uploaded pictures and limitations retain their tested commits; intervening main changes are scripts, docs and tests only. The exact refreshed head's whole suite is 512 passed, 1 failed and 20 skipped, with only the same local .NET reference-pack failure as current main. This remains WIP pending the Skip title dependency and a current Longshot game/off-cost proof.9eb1429808to74f8248ef5Added the Testing section and updated its checklist. Added one branch base/suite block, consolidated duplicate results and simplified the supporting wording; everything else is unchanged.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.