v9.5.7
User-facing fixes
- GUI no longer crashes on launch (regression from v9.5.4). The
aboutToQuit.connect(t.suspend_all_devices)line introduced for #143 tried to weakref a bound method ofTrcc, butTrcchas__slots__without__weakref__, so Qt failed withTypeError: cannot create weak reference to 'Trcc' object. Every user on v9.5.4 / 5 / 6 had a broken GUI. v9.5.7 deletes the entire mechanism (see below) and the broken connect line goes with it. - #143 LCD-sleep-on-shutdown re-fixed properly. v9.5.4 wrote sysfs power attributes from userspace, which silently failed for every unprivileged user (the actual install path for everyone) — the panel kept showing "USB communication lost" indefinitely until VBUS dropped, exactly the bug we claimed to fix. v9.5.7 reverts the userspace mechanism and replaces it with a one-line udev rule change:
power/autosuspend_delay_ms=10000instead ofpower/autosuspend=-1. The kernel now autosuspends the device ~10s after our process exits — same end state as Windows selective suspend, fully kernel-native, no shutdown hook needed. Re-runtrcc setup-udev(or fresh-install the .deb / .rpm / .pkg.tar.zst) to apply. - Brightness now consistently dims overlay text on animated themes (parity with static themes). The video-cache path composited the live text overlay on top of an already-dimmed bg+mask surface, leaving the metrics text at full brightness. Static themes baked the overlay first then dimmed everything together, so they always behaved correctly. v9.5.7 dims the cached text overlay alongside the L3 surface, so bg + mask + text all share the same brightness on every render path.
trcc reportnow shows real SCSI handshake data. The report path skippedControllerBuilder(whereset_scsi_transportis normally wired), so SCSI users gotSCSI transport factory not injectedinstead of FBL / resolution / raw response bytes. v9.5.7 wires the transport inreport()beforeDebugReport.collect()runs.- Theme cloud downloads no longer race on the temp file. Concurrent downloads of the same theme used to share a single
<theme>.tmppath — first thread to rename won, second thread errored with[Errno 2] No such file or directory. v9.5.7 usesmkstempso each download gets a unique temp;os.replaceatomically commits the result. No more spurious download errors when multi-mirror retry kicks in. - GUI no longer crashes mid-render on theme reload.
update_video_cache_textand four other display sites had a TOCTOU race onself._cache: line N checkedif self._cache and self._cache.active, line N+1 calledself._cache.method(...), but a concurrent thread could nullself._cachebetween the check and the call (Python attribute reads aren't atomic across two ops). v9.5.7 snapshots the cache reference into a local before each block. Affected the metrics tick, brightness change, rotation change, and video-tick render paths.
Architecture
- v9.5.4 #143 mechanism deleted.
Platform.suspend_usb_deviceABC method,LinuxPlatform.suspend_usb_device(sysfs walker),WindowsPlatform.suspend_usb_device,Trcc.suspend_all_devices, thetrcc sleepCLI command, thePOST /trcc/sleepAPI endpoint, theqapp.aboutToQuit.connect(...)GUI hook, theExecStop=intrccd.service, and the 5+2 associated tests — all gone. -98 net lines. The kernel handles panel-sleep via the udev rule change above; userspace doesn't need to know about USB suspend. - Quieter Qt log output. Extended
QT_LOGGING_RULESto silenceqt.qpa.theme.gnomewarnings aboutxdg-desktop-portal-gnomefailing to start — these were noise on every non-GNOME / portal-less session and weren't actionable for users.setdefaultso anyone debugging can still override.