feat(update): an update track (Release, Release candidate, Nightly) in the builders and the game #2061
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2061
Loading…
Reference in a new issue
No description provided.
Delete branch "update-tracks"
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?
Release candidates and nightlies could not be installed or kept up to date with the builder: every updater compared the installed version with GitHub's latest release, which leaves out prereleases. RC users were pushed back to the older release, and a nightly could not be installed at all.
What failed
Updater.csLatestTag,MainWindow.RefreshMode): an RC or nightly builder sawv2.0.14as "available" and put up Update builder, which installed the latest release (RunLatestSetupreadsreleases/latest). An RC builder could not build until it had downgraded itself.setup.cmanifest_url): started with no--tag, theHookshotBuilder.exefrom an RC's or the nightly's release page installed the latest release.--tag nightlyfailed, because the nightly's list namesv2.1.0-rc.1-3-g…, notnightly("GitHub answered with the setup list of …").hos_update.c, Windows and Linux):strcmp(latest, have), so an RC or nightly folder was asked to "update" to the older release on every start, and Yes downgraded it.linux_update.py):release_keyignored the RC number (rc.2 == rc.1), so an RC was never offered the next RC, and a nightly never got the next nightly. The RC AppImage's zsync update info namedlatest, so AppImageUpdate took it back to the older release.git describewithout--longnamed the nightly of an RC-merge commit exactly like the RC (v2.1.0-rc.1).What changes
builder-settings.json/ the Linux config)./releases?per_page=20, falling back to latest), offered only when newer. It never goes back to an older release, and it offersv2.1.0once that ships.nightlyrelease's listtagline, offered when it is a different build.nightlyrelease. RC and nightly setups are built withHOOKSHOT_SETUP_RELEASE, so with no--tagthey install their own release.git describe --long(…-0-g<sha>on a tagged commit). The RC AppImage's zsync update info names its own tag.docs/versioning.md: a new Update tracks section.Existing installs
Clients already installed keep their old logic until they update:
v2.0.14as an update and downgrade if they accept. To get out of that, install the next RC or nightly by hand once, from a setup built with this change. From then on they follow their track.Tests
tests/test_update_tracks.pycovers which track a version is on, semver order (rc.10 > rc.9,2.1.0 > 2.1.0-rc.2), the newest RC or release from a release list, which URL each track asks, and the update target for each track. It checkslinux_update.pyand the C helpers compiled fromhos_update.candsetup.c.tests/test_linux_update.pystill passes.Untested: the Windows Builder (C#/XAML) was not compiled locally (no .NET here), so it relies on CI. The Windows half of
hos_update.candsetup.cwere not compiled (no mingw here; the shared helpers are compiled by the test). Neither builder UI has been run, and no real update has gone through any track.One Linux source regression from the update-track change: on main
6cecdd18,python3 -I -B tests/test_make_game_ngx.pyruns 17 tests with one error. The authored Builder stub intest_toggling_dlss_on_up_to_date_folder_offers_updatelacks the newswitching()method used byapply_mode. The same 17 tests passed on the older 48:9 integration. The release-track tests and actual GUI are outside this reproduction.github-sync referenced this pull request2026-11-12 06:22:54 +00:00