Repository navigation
v0.3.2 (dev, unstable)
Pre-release
Pre-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_pcinow 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 statusas root every 5 seconds while a multi-minute operation is racing that same state. _unloadnow 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 theall-ways-egpu statusparsing everything else reads from. - Packaging: committed the
pnpm-lock.yamlthe plugin store's build requires, and added thepublishmetadata block toplugin.json.
Install
Same as the stable release: Desktop Mode → download the zip below → Game Mode → Decky Developer Mode → Install Plugin from ZIP File.