The only way into the Workshop section is the QR login: main.lua marks steam_sign_in with required_for_browsing = true, and auth.lua then sends the user to IAuthenticationService/BeginAuthSessionViaQR and waits for a confirmation in the Steam mobile app. So somebody who has the Steam client running on the same machine, and who subscribed to their wallpapers years ago, still has to reach for a phone before the section will open at all.
The odd part is that a good half of that section does not need an account. source.scan and workshop.refresh read steamapps and appworkshop_431960.acf off the disk. api.details posts to ISteamRemoteStorage/GetPublishedFileDetails on plain ctx.http, with no token. profile.names reads the Community profile XML the same way. I ran the local half with no network and no session at all: 19 of the 20 directories under content/431960 came back subscribed with the sizes Steam recorded, and the one that did not is an item that no longer exists on the Workshop. Anonymous GetPublishedFileDetails then gave me title, tags, description and preview for every one of them.
What genuinely needs the token is smaller: api.search, because QueryFiles answers 403 to an anonymous request, and subscription.subscribe / unsubscribe. subscription.status sits in between — for anything the .acf already records workshop.state answers before a request goes out, but M.status calls session.ensure_http first, and that throws "Steam sign-in is required" for a signed-out user before the local answer is ever reached.
So I would like to suggest splitting browsing from acting: open the section without a session, show the installed and subscribed items right away since the data is already there, and raise the login at the moment the user searches the catalog or presses subscribe. Catalog search would still ask for an account, and that seems fair to me — it really cannot work without a token.
What I am unsure about is how much of this is the plugin's to fix. required_for_browsing is the only knob it has and it is all or nothing. If the daemon needs a second flag along the lines of "search needs an account, browsing does not", say so and I will file that on the waywallen side, the way I did for #85. Happy to write the plugin half if you like the shape.
Numbers, exact requests and the offline run are in a comment below.
The only way into the Workshop section is the QR login:
main.luamarkssteam_sign_inwithrequired_for_browsing = true, andauth.luathen sends the user toIAuthenticationService/BeginAuthSessionViaQRand waits for a confirmation in the Steam mobile app. So somebody who has the Steam client running on the same machine, and who subscribed to their wallpapers years ago, still has to reach for a phone before the section will open at all.The odd part is that a good half of that section does not need an account.
source.scanandworkshop.refreshreadsteamappsandappworkshop_431960.acfoff the disk.api.detailsposts toISteamRemoteStorage/GetPublishedFileDetailson plainctx.http, with no token.profile.namesreads the Community profile XML the same way. I ran the local half with no network and no session at all: 19 of the 20 directories undercontent/431960came backsubscribedwith the sizes Steam recorded, and the one that did not is an item that no longer exists on the Workshop. AnonymousGetPublishedFileDetailsthen gave me title, tags, description and preview for every one of them.What genuinely needs the token is smaller:
api.search, because QueryFiles answers 403 to an anonymous request, andsubscription.subscribe/unsubscribe.subscription.statussits in between — for anything the.acfalready recordsworkshop.stateanswers before a request goes out, butM.statuscallssession.ensure_httpfirst, and that throws "Steam sign-in is required" for a signed-out user before the local answer is ever reached.So I would like to suggest splitting browsing from acting: open the section without a session, show the installed and subscribed items right away since the data is already there, and raise the login at the moment the user searches the catalog or presses subscribe. Catalog search would still ask for an account, and that seems fair to me — it really cannot work without a token.
What I am unsure about is how much of this is the plugin's to fix.
required_for_browsingis the only knob it has and it is all or nothing. If the daemon needs a second flag along the lines of "search needs an account, browsing does not", say so and I will file that on the waywallen side, the way I did for #85. Happy to write the plugin half if you like the shape.Numbers, exact requests and the offline run are in a comment below.