# Changelog All notable changes to this project will be documented in this file. Format based on [Keep a Changelog](https://keepachangelog.com/). ## [0.4.0] - 2026-03-28 ### Added - Optional background blur via `background_blur` config option (Gaussian blur, `image` crate) ## [0.1.1] - 2026-03-28 ### Fixed - Use absolute paths for all system binaries (`systemctl`, `loginctl`, `niri`, `moonlock`) to prevent PATH hijacking - Implement `POWER_TIMEOUT` (30s) via `try_wait()` polling — previously declared but unused, leaving power actions able to block indefinitely - Prevent panic in `load_background_texture` when GResource path contains non-UTF-8 bytes — now falls back to known wallpaper resource - Fix fallback user UID from `0` (root) to `u32::MAX` as a safe sentinel value - Fix CSS comment incorrectly describing circular buttons as "square card" ### Changed - Compress wallpaper in GResource bundle (`compressed="true"`) to reduce binary size - Merge double `idle_add_local_once` into single idle cycle for faster keyboard focus on launch - Centralize `GRESOURCE_PREFIX` as `pub(crate) const` in `main.rs` (was duplicated in `config.rs`, `users.rs`, and literal strings in `panel.rs`) - Translate README.md and config comments from German to English - Remove stale `journal.md` (one-time development notes, not actively maintained) ## [0.1.0] - 2026-03-27 ### Added - Rust rewrite of the Python power menu (gtk4-rs + gtk4-layer-shell) - 5 power actions: Lock, Logout, Hibernate, Reboot, Shutdown - Inline confirmation for destructive actions (all except Lock) - Multi-monitor wallpaper support via shared `gdk::Texture` - DE/EN localization with automatic locale detection - TOML configuration for custom wallpaper path - GResource bundle for CSS, wallpaper, and default avatar - Async power actions via `glib::spawn_future_local` + `gio::spawn_blocking` - Async avatar loading (file-based avatars decoded off UI thread) - Cached icon loading at startup - 45 unit tests