From 00361f22f4e172643ef51868e47d47e8f8efbc5b Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sun, 16 Aug 2026 15:14:37 +0200 Subject: [PATCH] v0.1.4-pre.011 --- Cargo.toml | 4 +- crates/ksp-app-config-desk/README.md | 11 +- crates/ksp-app-config-desk/TODO.md | 6 +- crates/ksp-app-config-desk/USAGE.md | 21 ++- crates/ksp-app-config-desk/frontend/main.html | 38 ++++- .../frontend/sass/_app.scss | 9 +- .../frontend/ts/environment.ts | 136 ++++++++++++++++++ .../ksp-app-config-desk/frontend/ts/main.ts | 12 +- crates/ksp-app-config-desk/src/constants.rs | 4 +- crates/ksp-app-config-desk/src/environment.rs | 119 +++++++++++++++ crates/ksp-app-config-desk/src/lib.rs | 5 +- crates/ksp-app-config-desk/src/tauri.rs | 14 +- .../unit_tests/environment.rs | 65 +++++++++ deltas/0.1.4/pre.011.md | 93 ++++++++++++ docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md | 6 +- 15 files changed, 523 insertions(+), 20 deletions(-) create mode 100644 crates/ksp-app-config-desk/frontend/ts/environment.ts create mode 100644 crates/ksp-app-config-desk/src/environment.rs create mode 100644 crates/ksp-app-config-desk/unit_tests/environment.rs create mode 100644 deltas/0.1.4/pre.011.md diff --git a/Cargo.toml b/Cargo.toml index 6a50759..51cd69d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 77 +# version: 78 [workspace] resolver = "3" members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib"] [workspace.package] -version = "0.1.4-pre.10" +version = "0.1.4-pre.11" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-app-config-desk/README.md b/crates/ksp-app-config-desk/README.md index 362e958..3133874 100644 --- a/crates/ksp-app-config-desk/README.md +++ b/crates/ksp-app-config-desk/README.md @@ -1,5 +1,5 @@ - + # `ksp-app-config-desk` @@ -28,6 +28,7 @@ Le gabarit desktop actif fournit maintenant : - DataTables 3 + Select 4 pour l’inventaire interactif des documents Config ; - le panneau Documents générique alimenté par le registre `ksp-config-lib`, avec diagnostics backend et réparation validée ; - le panneau Profils générique pour `default_profile`, sélection explicite, vues global/profil/effective sûre et provenance ; +- le panneau Environnement en lecture seule, alimenté uniquement par `ConfigManagement::environment_report()`, avec desired/effective sûres, source, sensibilité et shadowing ; - `tauri-plugin-tracing` côté Rust et `@fltsci/tauri-plugin-tracing` côté frontend ; - les ports dédiés `1430` pour Vite HTTP et `1431` pour le WebSocket de développement ; - la destination frontend externe commune à Tauri et Vite; @@ -49,6 +50,7 @@ frontend/ │ ├── main.scss │ └── splash.scss ├── ts/ +│ ├── environment.ts │ ├── frontend_log.ts │ ├── invoke.ts │ ├── main.ts @@ -143,3 +145,10 @@ Les actions utilisateur significatives et changements d'état sont journalisés ## Police du splash Le splash utilise `DOS_Amazigh.ttf` (`font-family: Dos Amazigh`) pour son titre, via le `@font-face` déclaré dans `frontend/sass/splash.scss`. Le répertoire `frontend/fonts/` documente la provenance et l'empreinte de l'asset de référence. Le lifecycle du splash est désormais actif et utilise cette police pendant la transition vers la fenêtre principale. + + +## Panneau Environnement / `.env` + +La vue **Environnement / `.env`** expose la projection sûre de `ConfigManagement::environment_report()`. Elle ne lit jamais directement le process environment ni le fichier `.env`. Pour chaque variable KSP/KSPB actuellement présente dans le process ou `.env`, le frontend reçoit uniquement : nom, namespace, sensibilité, valeur desired sûre, valeur effective sûre, source effective et indicateur de shadowing. + +Les valeurs `KSP_SECRET_*` / `KSPB_SECRET_*` restent redacted par `ksp-config-lib` avant projection applicative. La table est triable/filtrable/paginée via DataTables, et les logs frontend/backend n'enregistrent que des comptes et métadonnées, jamais les valeurs. La création, modification et suppression de valeurs `.env` restent volontairement hors de cette tranche et arrivent en `pre.012`. diff --git a/crates/ksp-app-config-desk/TODO.md b/crates/ksp-app-config-desk/TODO.md index 6b58f2d..d6ef2bf 100644 --- a/crates/ksp-app-config-desk/TODO.md +++ b/crates/ksp-app-config-desk/TODO.md @@ -1,13 +1,13 @@ - + # TODO `ksp-app-config-desk` -Le gabarit frontend, le bootstrap Config/Logging, `AppState`, le `LoggingGuard` durable, les premiers DTO TS-RS, le bridge frontend logging KSP, le lifecycle `splash -> main`, le panneau Documents et le panneau Profils/provenance sont maintenant présents. +Le gabarit frontend, le bootstrap Config/Logging, `AppState`, le `LoggingGuard` durable, les premiers DTO TS-RS, le bridge frontend logging KSP, le lifecycle `splash -> main`, les panneaux Documents, Profils/provenance et le rapport Environnement sûr sont maintenant présents. Les prochaines tranches doivent encore : -- développer les panneaux Environnement/`.env`, Secrets et Logging ; +- développer le management `.env`, puis les surfaces Secrets et Logging ; - faire évoluer le runtime Logging vers des fichiers applicatifs uniques par lancement (`app-name..`) ; - ramener le target applicatif de `debug` à `info` ou `warn` avant clôture de la release ; - démontrer le hot reload Logging et le panneau de test de routage ; diff --git a/crates/ksp-app-config-desk/USAGE.md b/crates/ksp-app-config-desk/USAGE.md index 651c28c..4562f66 100644 --- a/crates/ksp-app-config-desk/USAGE.md +++ b/crates/ksp-app-config-desk/USAGE.md @@ -1,11 +1,11 @@ - + # Utilisation de `ksp-app-config-desk` ## État actuel -Le gabarit Rust/Tauri et le frontend Vite/TypeScript/SCSS sont présents. Le backend initialise Config, le runtime Logging et `AppState`. Les panneaux Documents et Profils sont fonctionnels ; les panneaux Environnement/`.env`, Secrets et Logging restent à compléter. +Le gabarit Rust/Tauri et le frontend Vite/TypeScript/SCSS sont présents. Le backend initialise Config, le runtime Logging et `AppState`. Les panneaux Documents, Profils et le rapport Environnement/`.env` sont fonctionnels ; les mutations `.env`, Secrets et Logging restent à compléter. La fenêtre `splash` est visible au démarrage. Après readiness du frontend et temporisation résolue par Config, l'application effectue le fade-out, affiche/focalise `main` puis détruit `splash`. La fenêtre principale expose immédiatement la navigation monofenêtre de référence. @@ -131,7 +131,7 @@ Environnement / .env Logging ``` -Les vues d'ensemble, Documents et Profils sont fonctionnelles ; Environnement / `.env` et Logging restent des placeholders jusqu'à leurs tranches fonctionnelles. Le header affiche `Config Desk — ` : le logo fournit déjà l'identité KSP. Les commandes principales peu nombreuses utilisent des pills/tabs alignées à droite ; une application plus chargée devra préférer un dropdown. Chaque clic de tab est tracé en `trace`, l'activation utilisateur significative reste tracée en `debug`, et chaque remplacement/rendu de section en `trace`. Les appels Tauri partagés utilisent `frontend/ts/invoke.ts`, qui journalise le début et la fin d'une commande sans journaliser ses arguments. +Les vues d'ensemble, Documents, Profils et Environnement / `.env` sont fonctionnelles ; Logging reste un placeholder jusqu'à sa tranche fonctionnelle. Le header affiche `Config Desk — ` : le logo fournit déjà l'identité KSP. Les commandes principales peu nombreuses utilisent des pills/tabs alignées à droite ; une application plus chargée devra préférer un dropdown. Chaque clic de tab est tracé en `trace`, l'activation utilisateur significative reste tracée en `debug`, et chaque remplacement/rendu de section en `trace`. Les appels Tauri partagés utilisent `frontend/ts/invoke.ts`, qui journalise le début et la fin d'une commande sans journaliser ses arguments. ## Asset font du splash @@ -167,3 +167,18 @@ La vue **Profils** charge l'inventaire des documents Config validés qui possèd - **Provenance environnement** indique JSON Pointer, variable, source et sensibilité sans valeur réelle. Avec le `std.logging.json` actuel et `KSP_LOGS_DIRECTORY` défini dans `.env`, la provenance attendue pour `/logs_directory` est `KSP_LOGS_DIRECTORY`, source `dotenv`, sensibilité `Internal`. Le contenu des vues JSON n'est pas recopié dans les logs ; seuls les identifiants de document/profil et métadonnées de résolution sont tracés. + + +## Panneau Environnement / `.env` + +La vue **Environnement / `.env`** charge `get_environment_report`, qui projette exclusivement `ConfigManagement::environment_report()`. La table affiche : + +- nom de variable ; +- namespace KSP/KSPB ; +- sensibilité ; +- valeur persisted `.env` sûre (`desired`) ; +- valeur effective process-ou-`.env` sûre ; +- source effective ; +- indicateur `shadowed` lorsqu'une valeur `.env` existe mais que le process hérité gagne. + +Une valeur Secret doit apparaître redacted (`********`) dans les colonnes desired/effective. Le bouton **Rafraîchir** relit le rapport Config. Cette tranche est strictement en lecture seule ; les opérations de création/update/remove `.env` sont ajoutées en `pre.012`. diff --git a/crates/ksp-app-config-desk/frontend/main.html b/crates/ksp-app-config-desk/frontend/main.html index 8fe4ebd..6bdd23f 100644 --- a/crates/ksp-app-config-desk/frontend/main.html +++ b/crates/ksp-app-config-desk/frontend/main.html @@ -1,5 +1,5 @@ - + @@ -204,6 +204,42 @@
Chargement des profils Config...
+ +