Repository navigation
v0.0.5
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
WINEDLLOVERRIDESentry 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.pyrefreshes 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.GetAppLaunchOptionsis 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 withcreate_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/.