From b91e8d47d1bc9ee509427136f591610fb9274dab Mon Sep 17 00:00:00 2001 From: nevaforget Date: Sat, 28 Mar 2026 00:43:00 +0100 Subject: [PATCH] docs: update CLAUDE.md for v0.3.2 audit changes --- CLAUDE.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4f14dd4..12a68d2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -19,6 +19,7 @@ Teil des Moonarch-Ökosystems. - `src/` — Rust-Quellcode (main.rs, greeter.rs, ipc.rs, config.rs, users.rs, sessions.rs, i18n.rs, power.rs) - `resources/` — GResource-Assets (style.css, wallpaper.jpg, default-avatar.svg) - `config/` — Beispiel-Konfigurationsdateien für `/etc/moongreet/` und `/etc/greetd/` +- `pkg/` — PKGBUILD für Arch-Linux-Paketierung (`makepkg -sf`) ## Kommandos @@ -29,8 +30,11 @@ cargo test # Release-Build cargo build --release -# Greeter starten (nur zum Testen, braucht normalerweise greetd) -LD_PRELOAD=/usr/lib/libgtk4-layer-shell.so ./target/release/moongreet +# Greeter im Fenster starten (ohne greetd/Layer Shell) +MOONGREET_NO_LAYER_SHELL=1 ./target/release/moongreet + +# Paket bauen und installieren +cd pkg && makepkg -sf && sudo pacman -U moongreet-git--x86_64.pkg.tar.zst ``` ## Architektur @@ -39,10 +43,10 @@ LD_PRELOAD=/usr/lib/libgtk4-layer-shell.so ./target/release/moongreet - `users.rs` — Benutzer aus /etc/passwd, Avatare (AccountsService + ~/.face), Symlink-Rejection - `sessions.rs` — Wayland/X11 Sessions aus .desktop Files - `power.rs` — Reboot/Shutdown via loginctl -- `i18n.rs` — Locale-Erkennung (LANG / /etc/locale.conf) und String-Tabellen (DE/EN) +- `i18n.rs` — Locale-Erkennung (LANG / /etc/locale.conf) und String-Tabellen (DE/EN), alle UI- und Login-Fehlermeldungen - `config.rs` — TOML-Config ([appearance] background, gtk-theme) + Wallpaper-Fallback -- `greeter.rs` — GTK4 UI (Overlay-Layout), Login-Flow via greetd IPC, Faillock-Warnung, Avatar-Cache, Last-User/Last-Session Persistence -- `main.rs` — Entry Point, GTK App, Layer Shell Setup, Multi-Monitor +- `greeter.rs` — GTK4 UI (Overlay-Layout), Login-Flow via greetd IPC, Faillock-Warnung, Avatar-Cache, Last-User/Last-Session Persistence (0o600 Permissions) +- `main.rs` — Entry Point, GTK App, Layer Shell Setup, Multi-Monitor, Log-Datei (0o640) - `resources/style.css` — Catppuccin-inspiriertes Theme ## Design Decisions @@ -53,3 +57,7 @@ LD_PRELOAD=/usr/lib/libgtk4-layer-shell.so ./target/release/moongreet - **Socket-Cancellation**: `Arc>>` + `AtomicBool` für saubere Abbrüche - **Avatar-Cache**: `HashMap` in `Rc>` - **Symmetrie mit moonset**: Gleiche Patterns (i18n, config, users, power, GResource) +- **Session-Validierung**: Relative Pfade erlaubt (greetd löst PATH auf), nur `..`/Null-Bytes werden abgelehnt +- **GTK-Theme-Validierung**: Nur alphanumerisch + `_-+.` erlaubt, verhindert Path-Traversal über Config +- **File Permissions**: Cache-Dateien 0o600, Log-Datei 0o640 +- **Testbare Persistence**: `save_*_to`/`load_*_from` Varianten mit konfigurierbarem Pfad für Unit-Tests