Repository navigation
Releases: datbird/docky
Release list
v1.4.15
v1.4.14
v1.4.13
v1.4.12
v1.4.11
Make the unload synchronous so the fan hand-back actually runs
An await inside _unload never resumes. Decky stops ticking the event loop after the stop request, so no timer fires and no thread result is collected, and the plugin is SIGKILLed at 5 seconds. Measured with a probe writing to a file: execution reached the first await and sat there until the kill, even with a 2 second timeout on a call whose work takes 0.02 seconds. The 1.4.10 timeouts bounded nothing. _unload now hands the fan back inline, cancels the watchers and returns without awaiting. Measured on the Deck with jupiter-fan-control stopped first: unload returns in 0.031 seconds and Decky reports stopped in 0.1s with no SIGKILL, against 5.1 seconds before.
v1.4.10
Hand the fan back before Decky SIGKILLs the plugin at 5 seconds
_unload now calls fan_handback_if_owned itself, bounded at 2.5 seconds, before it cancels anything. The hand-back used to ride on the fan watcher cancel handler, which could not work: the watcher sits in a worker thread, and cancelling a thread that has already started does not interrupt it, so the CancelledError only arrives when the thread returns, up to a 15 second systemctl call later. By then the process is gone and the fan is left pinned with jupiter-fan-control stopped. The wait for the watchers is now 1.2 seconds instead of 20, since nothing survives past 5. Sunshine and its bwrap child are still left running on purpose, so a loader restart never interrupts a live stream.
v1.4.9
Move the config to /var/lib/docky to close a deck to root escalation
config.json and state.json are now root owned and live outside the user home. Script and command tasks run as root, so a config the deck user could write was a free path from deck to root on the next trigger. Root owning only the file was not enough, since ~/.config belongs to deck and a rename needs write permission on the parent directory. An existing config is imported once on first load and the old file is renamed. A symlink left in the old directory is retired unread. Editing by hand now needs sudo, the panel does not.