moonset/CHANGELOG.md
nevaforget 71670eb263 feat: switch to systemd-journal-logger, add debug logging (v0.6.0)
Replace env_logger with systemd-journal-logger for consistent logging
across moonset/moonlock/moongreet. Add MOONSET_DEBUG env var and debug
statements across all modules. Also includes shared blur cache for
multi-monitor and detached moonlock spawn for lock action.
2026-03-28 22:58:25 +01:00

3.4 KiB

Changelog

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

[0.6.0] - 2026-03-28

Added

  • Systemd journal logging (journalctl -t moonset) replacing env_logger stderr output
  • MOONSET_DEBUG env var to enable debug-level journal output
  • Debug logging across all modules (config resolution, wallpaper source, avatar loading, power actions, locale detection, blur cache)
  • Shared blur cache for multi-monitor — GPU blur computed once, reused by all windows

Changed

  • Lock action spawns moonlock as detached process instead of blocking via run_command — moonset can quit immediately while moonlock runs independently

[0.4.1] - 2026-03-28

Added

  • Fade-in/fade-out animation (250ms ease-in) for panel and wallpaper windows via CSS opacity transition

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