moonset/CHANGELOG.md
nevaforget 412ed159a4 fix: address audit findings — blur channel mismatch, logout quit, config error logging
- Fix BGRA→RGBA channel swap in apply_blur so image::RgbaImage semantics
  match the actual pixel data from GDK texture download
- Logout now calls app.quit() like lock does, via new quit_after field on
  ActionDef (replaces fragile magic string comparison)
- Log TOML parse errors to stderr instead of silently ignoring
- Remove pointless zlib compression of JPEG wallpaper in GResource
- Add tests for quit_after behavior and config error handling
2026-03-28 21:39:34 +01:00

2.7 KiB

Changelog

All notable changes to this project will be documented in this file. Format based on Keep a Changelog.

[0.4.1] - 2026-03-28

Fixed

  • Fix pixel format mismatch in blur path — texture.download() yields BGRA but was passed to RgbaImage without channel swap, now explicitly converts B↔R
  • Logout action now calls app.quit() to dismiss the menu immediately (previously only Lock did)
  • Log TOML parse errors to stderr instead of silently falling back to defaults

Changed

  • Replace magic string "lock" comparison with quit_after field on ActionDef for type-safe action dispatch
  • Remove compressed="true" from JPEG wallpaper in GResource — JPEG is already compressed, zlib overhead hurts startup for negligible size savings

[0.4.0] - 2026-03-28

Added

  • Optional background blur via background_blur config option (Gaussian blur, image crate)
  • Disk cache for blurred wallpaper (~/.cache/moonset/) — avoids re-blurring on subsequent starts

[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