fix: address audit findings — polling, symlinks, validation, wallpaper removal (v0.7.0)
Three parallel audits (quality, performance, security) identified issues across the codebase. This commit addresses all remaining findings: - Replace busy-loop polling in run_command with child.wait() + timeout thread - Canonicalize ~/.face and AccountsService avatar paths to prevent symlink abuse - Add detect_locale_with() DI function for testable locale detection - Move config I/O from activate() to main() to avoid blocking GTK main loop - Validate background_blur range (0–200), reject invalid values with warning - Remove embedded wallpaper from GResource — moonarch provides it via filesystem (binary size ~3.2MB → ~1.3MB)
This commit is contained in:
@@ -3,6 +3,25 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
Format based on [Keep a Changelog](https://keepachangelog.com/).
|
||||
|
||||
## [0.7.0] - 2026-03-28
|
||||
|
||||
### Added
|
||||
|
||||
- Blur validation: `background_blur` must be 0.0–200.0 (negative, NaN, infinite, and extreme values are rejected with a warning)
|
||||
- `detect_locale_with()` testable DI function for locale detection (4 new tests)
|
||||
- Path canonicalization for `~/.face` and AccountsService avatar paths (resolves symlinks, prevents passing arbitrary files to gdk-pixbuf)
|
||||
|
||||
### Changed
|
||||
|
||||
- Replace busy-loop polling (`try_wait` + `sleep(100ms)`) in `run_command` with blocking `child.wait()` + timeout thread — eliminates poll latency and thread waste
|
||||
- Move config loading from `activate()` to `main()` — filesystem I/O no longer blocks the GTK main loop
|
||||
- Click-to-dismiss now attached to overlay instead of background picture (works with or without wallpaper)
|
||||
|
||||
### Removed
|
||||
|
||||
- Embedded fallback wallpaper from GResource bundle — moonarch provides `/usr/share/moonarch/wallpaper.jpg` at install time, binary size dropped from ~3.2MB to ~1.3MB
|
||||
- GResource fallback path in `resolve_background_path` — returns `Option<PathBuf>` now, `None` falls through to CSS background
|
||||
|
||||
## [0.6.0] - 2026-03-28
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user