#491

Steam: Steam Workshop page per game and a Workshop area

Openinsertfloppywants to merge intofrom

Requested by Cameron · project thread

Builds on #484 (Steam DLC). It uses the per-depot install folder added by #484's Steamworks redistributables commit, 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: Steam Workshop page per game and a Workshop area".

Change

  • Game details › Steam Workshop for games that have one: browse (popular, most subscribed, most recent, or search), Subscribe and Unsubscribe, see your subscribed and installed items, and download or update them. A Workshop button beside the library's Steam title opens the same area.
  • It uses the PublishedFile service over the app's existing CM connection. Items download to steamapps/workshop/content/<app>/<item>, and appworkshop_<app>.acf is written the way Valve's client does, so games find them.
  • New files: SteamWorkshop.swift (UI and service calls) and SteamWorkshopFiles.swift (download and record). It also touches DepotDownloader (installWorkshopItem, using the game downloads' chunk download and resume), SteamSession and SteamProtocol (the service calls), and SteamAppInfo (workshopVisible).
  • env.MADEIRA_STEAM_WORKSHOP = 0 turns it off. Docs: docs/STEAM_WORKSHOP.md.

Testing

  • On device (iPhone, sideloaded build): the Workshop page works, including Subscribe.
  • Host checks: tests/host/check-steam-workshop.py (new) and check-steam-library.py pass on this branch with swiftc 6.1 on Linux. It isn't compiled for iOS here.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LiLQakAySboBR7FkqkJFKS