Skip to content

v0.0.5

Choose a tag to compare

@github-actions github-actions released this 23 Aug 15:20
· 17 commits to main since this release

Released after testing across the 0.0.4.x-testing prereleases on the testing
branch. Bundled OptiScaler release is unchanged at 0.9.4.

Added

  • Removing OptiScaler asks what to do with the Steam launch options.
    Installing it is two changes, not one — a folder full of files and a
    WINEDLLOVERRIDES entry in Steam — and removing it only ever undid the first.
    A game that had been "removed" kept an override for a DLL that was no longer
    there, and on the one path that did clear the field it cleared whatever else
    the game had in it too. Removing now offers: put back exactly what was there
    before the install, take only the OptiScaler override out and keep the rest,
    or change nothing. The answer can be remembered.
  • The launch options are backed up the way files are. Installing records
    what Steam was passing beforehand into a plain text file next to the manifest
    and the backup folder, and removing takes it out again. Written once per
    install, so a reinstall — or the launch-options step being switched off and on
    — cannot overwrite the original with the override this plugin itself wrote.
    Three states stay distinct, and each means something different: recorded and
    empty (the game had none, so the field can be cleared outright), recorded and
    not empty (restore it verbatim), and not recorded at all (only the override
    this plugin recognises comes out; the rest is not ours to guess about).
  • A Settings tab on the main page. Both launch-options prompts offer
    "Remember my choice", and an answer that can only be given and never taken
    back is a trap: every stored answer is listed by name with what it will do and
    a row that puts the question back, alongside the switch that stops answers
    being kept at all — which also drops the ones already stored, so turning it on
    again does not silently restore decisions just disowned. The same tab reports
    the compatibility list: how many games are on it, how old it is and where it
    came from, and when a refresh is failing, the error, the address and which
    certificates were tried, with a button to fetch it again.
  • The plugin ships a copy of the compatibility list. A Deck that has never
    reached the wiki matches games against 685 bundled entries instead of
    reporting "no wiki entry matched this game" for every game it owns — which was
    indistinguishable from the wiki being broken. It is only a floor: the first
    successful fetch replaces it. scripts/fetch_compat_seed.py refreshes it
    before a release.
  • The manual setup page states what Steam is passing and what was recorded
    before the install. "The plugin cannot read them" and "they are empty" look
    identical from the outside.

Changed

  • The compatibility list is read from cache and refreshed behind the answer.
    A handheld is regularly asleep, offline, or on a network that resolves and
    does not route, and the wiki used to sit in front of every question asked of
    it: a cache older than a day was thrown away rather than used, so each of
    those cost a full timeout before anything appeared. Whatever is on disk is now
    returned at once — stale or not — and the refresh runs behind it, single-flight
    so opening three games in a row is one download rather than three. Detail
    pages follow the same rule.
  • A refresh that brings something new updates what is on screen. The list
    carries a content fingerprint, so "something arrived" is exactly "the
    fingerprint changed"; a refresh that brought back the same list redraws
    nothing.
  • A failed refresh cannot make things worse. Nothing is written unless the
    download both succeeded and parsed, so a working cache is never turned into an
    empty one. The failure is shown next to the list it could not replace, rather
    than replacing the list with an error.

Fixed

  • Removing OptiScaler no longer leaves its launch options behind. See above.
  • The launch options are read from three sources, not one.
    SteamClient.Apps.GetAppLaunchOptions is undocumented and absent from some
    client builds entirely, and everything here depended on it. Where it is
    missing, every launch-options question answered itself with "cannot tell" and
    every action taken on that answer became nothing at all. The app details store
    the library's own Properties dialog uses is tried next, and finally
    localconfig.vdf — Steam's own record on disk, which depends on no
    undocumented method existing.
  • A wiki that will not download is no longer reported as "your game is not on
    the list".
    The two produced the same empty result and the setup checklist
    printed the same sentence for each, so a network fault presented as every game
    in the library being unknown to the wiki. They are now separated, the failure
    is printed in the words of whatever actually failed, and there is a Try
    again
    button — there was previously no way to retry from the interface at
    all.
  • A stalled connection is retried over IPv4. A router advertising IPv6 it
    cannot route is the classic works-on-one-network fault, and Python's urllib
    has no Happy Eyeballs to fall back the way a browser does. A server that
    answered is not retried, because asking again says the same thing.
  • The last-resort unverified TLS context no longer builds its own trust
    store.
    It was created with create_default_context, which reads the system
    certificates — so on the one machine where that is what is broken, the
    fallback meant to survive it was the single construction that could throw the
    whole chain away.

Install

Decky Loader → gear icon → Developer mode → Install Plugin from URL, and paste:

https://github.com/danielcamilo1/decky-optiscaler/releases/download/v0.0.5/Decky-OptiScaler-v0.0.5.zip

Or download the zip below and unpack it into ~/homebrew/plugins/.