9738e71ecc
feat: Multi-Monitor-Support — Wallpaper auf Sekundärmonitoren
...
- WallpaperWindow für Sekundärmonitore (nur Hintergrundbild)
- GreeterWindow bekommt bg_path als Parameter
- resolve_wallpaper_path() aus config.py extrahiert (wiederverwendbar)
- main.py: Monitor-Enumeration, Layer-Shell pro Monitor
- Keyboard-Exclusive nur auf dem primären Monitor
- CSS: ungültige max-width/max-height Properties entfernt
2026-03-26 13:05:29 +01:00
4cd73a430b
fix: Audit-Findings — Realize-Handler, Thread-Safety, Input-Validierung
...
- _on_realize implementiert (war nur connected, nicht definiert)
- do_unrealize für as_file() Context-Manager-Cleanup
- threading.Lock für _greetd_sock Race Condition
- TOML-Parsing-Fehler abfangen statt Crash
- last-user Datei: Längen- und Zeichenvalidierung
- detect_locale: non-alpha LANG-Werte abweisen
- exec_cmd Plausibility-Check mit shutil.which
- Exception-Details ins Log statt in die UI
- subprocess.run Timeout für Power-Actions
- Sequence[Path] statt tuple[Path, ...] in get_sessions
- Mock-Server _recvall für fragmentierte Reads
- [behavior]-Config-Sektion entfernt (unimplementiert)
- Design Decisions in CLAUDE.md dokumentiert
2026-03-26 12:56:52 +01:00
8b1608f99d
fix: Audit-Findings — Theme-Validierung, locale-unabhängige Tests
...
- Theme-Name aus settings.ini gegen Regex validiert (nur [A-Za-z0-9_-]),
verhindert Path-Traversal über GTK-Theme-Loading (S-05)
- Faillock-Tests nutzen expliziten strings-Parameter statt System-Locale,
Tests laufen jetzt auch auf EN-Systemen (MAINT-4)
- Test für Path-Traversal im Theme-Namen ergänzt
2026-03-26 12:36:16 +01:00
0f72df8603
feat: i18n — Locale-basierte Strings (DE/EN) statt hardcoded Deutsch
...
Liest LANG aus Umgebung oder /etc/locale.conf und liefert deutsche
oder englische UI-Strings. Alle hardcoded Strings in greeter.py
durch Strings-Dataclass ersetzt. Fallback auf Englisch bei
unbekannter Locale.
2026-03-26 11:55:41 +01:00
6554dc625d
feat: Faillock-Warnung bei wiederholten Fehlversuchen
...
Zeigt nach dem 2. fehlgeschlagenen Login-Versuch einen Hinweis an,
dass das Konto nach dem nächsten Fehlversuch gesperrt werden kann
(faillock default: 3 Versuche).
2026-03-26 11:48:23 +01:00
c4b3dc833b
fix: Audit-Findings — Bugs, Security-Hardening und Performance
...
- BUG-02: cancel_session bei mehrstufiger Auth (z.B. TOTP)
- BUG-03: CalledProcessError bei reboot/shutdown abfangen
- M-1+EH-01: configparser interpolation=None + Error-Handling
- H-1: Exec-Cmd Validierung (absoluter Pfad erforderlich)
- PERF: Theme-Guard, Default-Avatar-Cache, Avatar-Cache per User
- Mutable Default Arguments in sessions.py (list → tuple)
- Ungenutzten Gio-Import entfernt
2026-03-26 11:35:14 +01:00
af01e0a44d
fix: Security- und Quality-Hardening aus Audit
...
- ipc.py: _recvall() Loop für fragmentierte Socket-Reads, 64 KiB
Payload-Limit gegen OOM
- greeter.py: GREETD_SOCK Validierung (absoluter Pfad + S_ISSOCK),
Socket-Leak behoben (_close_greetd_sock), shlex.split() statt
str.split() für Exec-Befehle, greetd-Fehlermeldungen auf 200
Zeichen begrenzt, get_style_context() durch get_color() ersetzt
(GTK 4.10+ Deprecation), Socket-Timeout (10s)
- users.py: ValueError-Absicherung bei int(uid_str), Username-
Sanitierung gegen Pfad-Traversal, Symlink-Check bei Avatar-Pfaden
2026-03-26 11:18:32 +01:00
806a76e44f
feat: UI-Polish und Konfiguration
...
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.
2026-03-26 10:51:30 +01:00
87c2e7d9c8
feat: initial Moongreet greeter implementation
...
greetd-Greeter für Wayland mit Python + GTK4 + gtk4-layer-shell.
Enthält IPC-Protokoll, User/Session-Erkennung, Power-Actions,
komplettes UI-Layout und 36 Tests (Unit + Integration).
2026-03-26 09:47:19 +01:00