Skip to content

Workshop section is gated behind the QR login even for a library the plugin can already read offline #110

Description

@wehrwolfmann

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions