Requested by Cameron · project thread
Builds on #484 (Steam DLC). The same download code changed there, so this branch sits on top of it. Until #484 is merged its 7 commits show here too. The new commit is the last one, "Steam: pick a game's version (beta branches), with beta codes".
Change
Game details › Steam › Version (and the download sheet) lists the public
build and the game's beta branches from PICS depots.branches. A
password-protected beta opens with Enter beta code: Steam checks the code
(ClientCheckAppBetaPassword), and its private depot section
(ClientPICSPrivateBeta, binary KeyValues) gives the branch's manifests.
Downloads, updates and repairs take the chosen branch:
- each depot's manifest for the branch, or the public one for a depot the beta leaves alone;
- the manifest request code names the branch (
app_branch); - the install record states the branch's build and
BetaKeyin UserConfig and MountedConfig, so Valve's client keeps the game there.
An installed game on another branch gets "Download " to switch, and the update badge compares against the recorded branch. Choices and codes are kept per game. A beta without an accepted code stops the download instead of quietly taking public.
Testing
- On device (iPhone, sideloaded build): switching a game's version works.
- Host checks:
tests/host/check-steam-library.pypasses on this branch (879 checks, with swiftc 6.1 on Linux and the two Darwin-onlyfcntlhints removed locally). It covers branch parsing, the public fallback, the private-branch merge, binary KeyValues, the code exchange and the record. It isn't compiled for iOS here.
🤖 Generated with Claude Code