chore: remove the parts lists and LONGSHOT_LAUNCHER_PARTS, which no release or install uses #22
No reviewers
Labels
No labels
area/build
area/install
area/saves
area/ui
area/updates
good first issue
gpu/amd
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
platform/linux
platform/steam-deck
platform/windows
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/LongshotLauncher!22
Loading…
Reference in a new issue
No description provided.
Delete branch "HumanBean/LongshotLauncher:chore/remove-old-build-leftovers"
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 launcher still reads Hookshot's old "parts list" format and offers
LONGSHOT_LAUNCHER_PARTSto build from a list on the PC. No release has shipped such a list, and no real install reads one: releases install throughtools.lock. This removes the dead format so the code says how a version really gets installed.Companion of MagicBeanDev/Longshot#171, which removes
scripts/linux/make_parts.py(the only thing that wrote such lists), the Python builder and the MSI.What changed
Callers checked with grep over
Core/,App/,tests/,docs/,scripts/and Longshot'sbuilder/,nx2/,scripts/,tests/,docs/,.forgejo/andwebsite/. What really installs a version, and stays as it is:Releases.ToolsListAsyncbuilds aPartsListfrom the release's builder zip andToolsLock.Parseof itstools.lock.Toolchains.InstallAppImageAsyncunpacks the AppImage and installs the tools of thetools.lockinside it.Neither ever read a parts list.
Core/PartsManifest.cs, deleted (136 lines):ParseSetup(thelongshot-setup.txtgrammar),ParseLinux(longshot-linux.txt, with itstree/filelines andfile://links) andParse. Their only caller wasToolsSource.ReadLocal, forLONGSHOT_LAUNCHER_PARTS.Core/ToolsLock.cs, unchanged: thePart,PartsListandListKindrecords, and the name checks, nowToolsLock.NameOk/SafeName.ListKind's values staySetup/Linux, so installedtoolchain.jsonfiles read as before.Part.Files, removed, with the "a zip holds a file its list does not name" refusal inToolchains.UnpackandRecordPart.Files. OnlyParseLinux'sfilelines ever set it; tools.lock parts and the release zip always hadnull. An oldertoolchain.json's"Files": nullis ignored when read.LONGSHOT_LAUNCHER_PARTS, removed:ToolsSource.LocalList,ReadLocal,EnsureAsync'slocalListparameter,LocalFileFetcher(it readfile://links, which only a local list had), andLauncherService.LocalListwith its "every channel offers the list's tag" shortcut.CdnFetcher(HttpFetcher)as before, minus thefile://wrapper.Platforms.PartsListName(longshot-setup.txt/longshot-linux.txt) had no caller and goes too.Core/row and itsLONGSHOT_LAUNCHER_PARTSrow, CONTRIBUTING's "try a build without any release" paragraph, anddocs/releases.md'sLONGSHOT_LAUNCHER_PARTSline.docs/releases.mdis byte-identical with Longshot's, which has the same edit in #171 (cmpchecked).scripts/release.py,tests/test_release.pyandRELEASING.mdare unchanged and still identical.tests/launcher_core):ManifestChecksdeleted: the two list grammars.ToolchainChecksbuilds its lists asPartsList/Partrecords instead of parsing text. It keeps every install check: reuse between versions, sysroot link rebasing, modes, wrong checksum, too large,../names, outward and absolute links, cancel, the Windows layout and prune. It drops the "file its list does not name" check.ScreenChecksloses the local list andLocalFileFetcherblock.Flags and settings
LONGSHOT_LAUNCHER_PARTS(build from a parts list on this PC, development)Measurements
main:
2e708923(2026-11-13)this PR: chore/remove-old-build-leftovers @
b57ce8f1Hardware: Ryzen desktop, CachyOS Linux (game-free checks only)
Scene: none, no game run
Method:
python -I tests/test_launcher_core.py --strict --longshot <Longshot checkout>(main with Longshot's main, this PR with Longshot #171's branch) andpython -I tests/test_release.py, undernice -n 19 ionice -c3, once on each side (the PC was in use, so one run each). Line counts fromjj diff --stat. Nothing here is a performance change.How to reproduce: the same commands in a checkout of each commit
2e708923b57ce8f1Testing
Tested:
test_release.py, once on main and once on this PR (above), on Linux.dotnet build App -c Release -p:TreatWarningsAsErrors=true): 0 warnings, 0 errors.Not tested:
ToolsListAsync,InstallAsync,InstallAppImageAsync) only lostPart.Files, which a release never set, and the core checks run it on authored releases for both systems.Needs other testers:
Screenshots
Nothing on screen.
Risk and rollback
An install that still relied on
Part.Filesor a local list would change. OnlyLONGSHOT_LAUNCHER_PARTSlists did, and that was for development; releases never did.Reverting the commit restores everything. Installed toolchains are read as before.
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
tests/that reads changed source updated in this PR, not weakened.