moonset/CHANGELOG.md

1.9 KiB

Changelog

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

[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