This version adds hibernation hook support with dynamic swap. With a new hibernation button, users can now select to hibernate or the device may ask for it by pretending e.g., to overheat or when the battery is below 5%. HHD in turn creates a swap based on memory usage, and hibernates with it.
Thereby, it fixes the wake-up issue in the GPD models where they are found to pretend to overheat, but not all models do this and OneXPlayer devices do not do this either. So this fixes only a subset of the models for now.
On btrfs systems, this is done by creating the subvolume `/var/swap` and placing `hhdswap` in it. Swapfiles are special and block creating snapshots, so if this did not happen, hhd would block `/var` or `/` snapshots. Since this is a filesystem modification, dynamic swap is gated with the environment variable `HHD_SWAP_CREATE=1` and enabled by default in Bazzite.
This version also fixes a file descriptor leak that could break the controller if gyro was enabled, and the bootc updater will now show the correct version when updating within the progress bar.
**Full Changelog**: https://github.com/hhd-dev/hhd/compare/v3.9.1...v3.10.0