Skip to content

v0.3.2 (dev, unstable)

Pre-release
Pre-release

Choose a tag to compare

@TiPSilva TiPSilva released this 26 Jul 05:18
· 6 commits to dev since this release

Unstable dev-branch build, not the recommended release for most users (use v0.1.0 for that). Published specifically so testers on different hardware can try recent fixes and new options.

Changed since v0.3.1

  • Data loss guard: nothing previously checked for mounted storage before detaching PCI devices. Some NVIDIA boards expose their own USB-C controller as a sibling function, and Deep rescan removes an entire parent bridge, so an enclosure carrying an NVMe or a USB storage controller next to the GPU was one eject away from losing it mid-write. Eject and Deep rescan now refuse upfront (before the display manager is even touched) when mounted storage sits behind the target.
  • Concurrency fix: rescan_pci now takes the same operation lock as every other action. It had grown from a single, safe sysfs write into an operation that can remove a PCI bridge, reauthorize a Thunderbolt tunnel and rebind a driver, while still running unserialized, so closing and reopening the QAM mid-operation could let two mutating calls run at once. Confirmed on hardware after the fix: a real concurrent request was caught and rejected, and a retry right after ran cleanly.
  • Lock rejections are now logged, naming which action was rejected, instead of being silently swallowed.
  • Frontend polling now pauses during an operation, instead of hammering all-ways-egpu status as root every 5 seconds while a multi-minute operation is racing that same state.
  • _unload now restarts the display manager if a Decky-initiated reload lands mid-operation, instead of leaving the session stopped with no code left running to bring it back.
  • Thunderbolt tunnel reauthorization fix: the experimental logic added to work around a reported reconnect issue had an anchored regex that could never match boltctl list's actual output (a silent no-op), and it authorized every unauthorized device it found rather than only ones the user had previously approved. Both fixed.
  • Audio rebind now waits for a real display connection (a DRM connector reporting "connected") instead of a blind timed sleep, so it can only ever land later than the timing already validated on hardware, never earlier.
  • Added tests/selfcheck.py, a dependency-free self-check for the three pieces of logic where being wrong is expensive: the storage guard, the Thunderbolt authorization parser, and the all-ways-egpu status parsing everything else reads from.
  • Packaging: committed the pnpm-lock.yaml the plugin store's build requires, and added the publish metadata block to plugin.json.

Install

Same as the stable release: Desktop Mode → download the zip below → Game Mode → Decky Developer Mode → Install Plugin from ZIP File.