moonset/CHANGELOG.md
nevaforget 473bed479a docs: add CHANGELOG.md, DECISIONS.md, bump version to 0.1.1
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.
2026-03-28 10:17:22 +01:00

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) 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