Add CHANGELOG documenting all changes since 0.1.0 and the initial release. Add DECISIONS.md as an architectural decision log. Update CLAUDE.md to reflect current architecture. Bump to 0.1.1 for the security and correctness fixes in the previous commit.
1.8 KiB
1.8 KiB
Changelog
All notable changes to this project will be documented in this file. Format based on Keep a Changelog.
[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) viatry_wait()polling — previously declared but unused, leaving power actions able to block indefinitely - Prevent panic in
load_background_texturewhen GResource path contains non-UTF-8 bytes — now falls back to known wallpaper resource - Fix fallback user UID from
0(root) tou32::MAXas 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_onceinto single idle cycle for faster keyboard focus on launch - Centralize
GRESOURCE_PREFIXaspub(crate) constinmain.rs(was duplicated inconfig.rs,users.rs, and literal strings inpanel.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