feat(saves): scrubbed saves in the repository, and oot_saves.py is now longshot_saves.py #543
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/tooling
area/upscaling
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
risk
high
risk
low
risk
medium
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
ci: approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!543
Loading…
Reference in a new issue
No description provided.
Delete branch "HumanBean/Longshot:feat/repo-saves"
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
Test runs and the Test Farm need the same starting points on every PC, and today a scenario can only start from the title screen or someone's own save. This proposes a narrow exception to "no saves": a few scrubbed saves in the repository. It also renames the save tool so its name drops the game's initials.
What changed
scripts/longshot_saves.py, renamed fromscripts/oot_saves.py, withtests/test_oot_saves.pyrenamedtests/test_longshot_saves.py. The docs, issue template andlongshot_ctl.pyfollow. The backup folder keeps the nameoot-save-backups, so players' existing backups and the launcher's stay together.longshot_saves.py scrub SRC --slot NN --out assets/saves/<name>:slot_00(progress.sav,caption.sav);caption.sav's JPEG with a plain mid-grey JPEG of the same size (543x306) and fixes the length field;longshot_saves.py check-repo-saveschecks:account.sav,option.savor_profile.longshot_ctl.py launch GAME --repo-save NAMEcopies a repo save's slot into the run (same safety checks as--save);longshot_ctl.py saves --repolists the repo saves.assets/saves/README.md(the rules). It holds no saves yet.assets/saves/(one slot, grey picture, reset date, passingcheck-repo-saves, made fresh for the farm, added through a pull request two maintainers approve).account.sav,option.sav,longshot_options.ini,longshot_env.txtand the rest ofuser/stay banned.*.saveverywhere exceptassets/saves/, so a real save can't be committed by accident.docs/saves-script.md,docs/control.md,docs/saves.md,docs/development.md.Flags and settings
None.
Measurements
No performance change. What was checked on the real game is under Testing.
main:
7ff5256e(2026-11-14)this PR: feat/repo-saves @
ba5e144e7ff5256eba5e144eTesting
Tested:
tests/test_longshot_saves.py(63 tests) andtests/test_longshot_ctl.py(44 tests) pass. They use made-up saves only.main@ 839e85ff's build, headless, driven through the control bridge:account.savandoption.sav.caption.savfiles on hand (Longshot and Hookshot) have the layoutscrubexpects. That layout is howhost/control.creads it.Not tested:
launch --repo-saveis Linux only, like--save.Needs other testers:
Screenshots
The Load screen with a scrubbed save, "main @
839e85ff, scrubbed slot", can be attached on request. It's a grey picture box next to "1/1/2026 12:00 a.m., Hyrule Castle".Risk and rollback
It changes the project's game-data rule, which the team needs to agree on before merging. Nothing in the game changes. Reverting the commit removes the tooling and restores the rule, and the rename can be reverted the same way.
Reviewer notes
scripts/longshot_saves.py:scrubandcheck-repo-saves, which refuse anything they don't fully understand.start = "save:<name>".Checklist
For everyone
type(scope): description).main.python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above). Run before the rebase, with the same failures as main (test_bake_portability, test_program_cache_cleanup, test_program_cache_one_variant, test_vram_budget_row, test_walk_key (a C link error, no C changed), and the socket tests in the sandbox).third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
Assisted-by:/Co-Authored-By:trailers.tests/that reads changed source updated in this PR, not weakened.WIP: feat(saves): scrubbed saves in the repository, and oot_saves.py is now longshot_saves.pyto feat(saves): scrubbed saves in the repository, and oot_saves.py is now longshot_saves.py