Security:
- Fix path traversal in _save/_load_last_session by rejecting usernames
starting with dot (blocks '..' and hidden file creation)
- Add avatar file size limit (10 MB) to prevent DoS via large ~/.face
- Add session_name length validation on write (symmetric with read)
- Add payload size check to send_message (symmetric with recv_message)
- Set log level to INFO in production (was DEBUG)
Quality:
- Eliminate main-thread blocking on user switch: _cancel_pending_session
now sets a cancellation event and closes the socket instead of doing
blocking IPC. The login worker checks the event after each step.
- Move power actions (reboot/shutdown) to background threads
- Catch TimeoutExpired in addition to CalledProcessError for power actions
- Consolidate socket cleanup in _login_worker via finally block, remove
redundant _close_greetd_sock calls from error callbacks
- Fix _select_initial_user to return False for GLib.idle_add deregistration
- Fix context manager leak in resolve_wallpaper_path on exception
- Pass Config object to GreeterWindow instead of loading it twice
Die Regex VALID_THEME_NAME blockierte Theme-Namen mit '+' (z.B.
catppuccin-mocha-lavender-standard+default). Da GTK den Theme-Namen
intern über Standardverzeichnisse auflöst, ist eigene Validierung
unnötig und kontraproduktiv.
- ipc.py: !I (Big-Endian) → =I (Native Byte Order) für greetd-Protokoll
- Per-User GTK-Theme entfernt, stattdessen globales Theme aus moongreet.toml
- Last-Session pro User in /var/cache/moongreet/last-session/ speichern/laden
- PKGBUILD und install-Hook für last-session-Cache erweitert
Assets (default-avatar.svg, Icons) von data/ nach src/moongreet/data/
verschoben, damit sie automatisch im Wheel landen. Pfadauflösung in
greeter.py und main.py auf importlib.resources umgestellt. Dev-Fallback
in config.py entfernt — nur noch /etc/moongreet/moongreet.toml.
Beispiel-Configs für System-Deployment und AUR PKGBUILD ergänzt.
Wallpaper-Support via moongreet.toml, Astronauten-SVG als Default-Avatar
mit dynamischer Theme-Farbe, CSS auf GTK-Theme-Farben umgestellt,
konsistentes Widget-Spacing, Custom-Icon-Registrierung.