119 lines
4.7 KiB
Markdown
119 lines
4.7 KiB
Markdown
<!-- file: deltas/0.1.4/pre.012.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.1.4-pre.012` — management/test `.env`
|
|
|
|
## Statut
|
|
|
|
Tranche livrée pour validation locale.
|
|
|
|
`0.1.4-pre.011-fix.001` est considérée validée : `fmt`, `check`, `clippy`, les tests Config Desk, les tests Config, les cinq audits ownership et les tests d'API publique sont propres ; le runtime Environnement retourne correctement les trois variables `.env` actuellement configurées.
|
|
|
|
## Objectif
|
|
|
|
Rendre fonctionnelle la zone de management/test `.env` du panneau **Environnement / `.env`**, exclusivement via `ConfigManagement`, afin de démontrer les créations/modifications/suppressions, le rapport de changement et la priorité `process > .env` sans lecture/écriture directe du fichier par l'application.
|
|
|
|
## Modifications
|
|
|
|
### Backend
|
|
|
|
- ajout du DTO TS-RS `ConfigEnvironmentChangeDto` ;
|
|
- ajout des services applicatifs :
|
|
- `environment::set_value()` -> `ConfigManagement::set_dotenv_value()` ;
|
|
- `environment::remove_value()` -> `ConfigManagement::remove_dotenv_value()` ;
|
|
- projection sûre de `ConfigEnvironmentChangeReport` :
|
|
- `source_changed` ;
|
|
- `effective_changed` ;
|
|
- `shadowed_by_process_environment` ;
|
|
- `reload_required` ;
|
|
- ajout des commandes Tauri centralisées :
|
|
- `set_environment_value` ;
|
|
- `remove_environment_value` ;
|
|
- classification de sensibilité déléguée à `ConfigSensitivity::from_variable_name()` ;
|
|
- logging `debug` limité au nom de variable, à l'opération, à la sensibilité et aux booléens du rapport ;
|
|
- aucune valeur soumise n'est journalisée.
|
|
|
|
### Frontend
|
|
|
|
- transformation de la vue Environnement en surface de management/test complète ;
|
|
- formulaire permettant :
|
|
- sélection d'une variable existante via la table/datalist ;
|
|
- saisie d'un nouveau nom `KSP_*` / `KSPB_*` ;
|
|
- création/modification ;
|
|
- suppression avec confirmation ;
|
|
- aucune ancienne valeur n'est préchargée dans le champ d'édition ;
|
|
- les nouvelles saisies Secret sont masquées ;
|
|
- affichage explicite du dernier `ConfigEnvironmentChangeReport` ;
|
|
- rechargement du rapport Config après chaque mutation ;
|
|
- destruction/réinitialisation propre de DataTables avant remplacement des lignes ;
|
|
- clic sur une ligne du rapport = sélection du nom uniquement ;
|
|
- instrumentation `debug`/`trace` des actions et transitions sans contenu de valeur.
|
|
|
|
### Tests
|
|
|
|
- classification de sensibilité de mutation par le contrat Config ;
|
|
- stabilité des labels d'opération `set` / `remove` ;
|
|
- conservation des tests de projection sûre/redacted du rapport Environnement.
|
|
|
|
### Documentation
|
|
|
|
- `pre.011` marquée réalisée dans le plan ;
|
|
- `pre.012` marquée en cours ;
|
|
- README/USAGE/TODO alignés sur la nouvelle surface de mutation `.env` ;
|
|
- scénario de validation du shadowing documenté.
|
|
|
|
## Sécurité / ownership
|
|
|
|
- l'application ne lit ni ne parse `.env` directement ;
|
|
- l'application ne modifie jamais l'environnement process hérité ;
|
|
- Config reste seul responsable de la validation des noms, de l'encodage `.env`, de la persistence atomique et du calcul desired/effective ;
|
|
- le rapport ordinaire continue à redacter les Secrets ;
|
|
- le flux reveal de valeurs réelles reste hors périmètre et réservé à `pre.013`.
|
|
|
|
## Scénarios de validation
|
|
|
|
### Mutation normale
|
|
|
|
1. créer une variable KSP/KSPB de test depuis le formulaire ;
|
|
2. vérifier `source_changed=true` et `effective_changed=true` lorsqu'aucune valeur process ne la masque ;
|
|
3. vérifier que le rapport rechargé affiche la variable avec `source=dotenv` ;
|
|
4. supprimer la variable ;
|
|
5. vérifier qu'elle disparaît du rapport si elle n'existe pas dans le process.
|
|
|
|
### Shadowing `process > .env`
|
|
|
|
Lancer ponctuellement Config Desk avec `KSP_LOGS_DIRECTORY` défini dans le process, puis modifier la même variable dans `.env` via le panneau.
|
|
|
|
Résultat attendu :
|
|
|
|
```text
|
|
source_changed = true
|
|
effective_changed = false
|
|
shadowed_by_process_environment = true
|
|
reload_required = false
|
|
```
|
|
|
|
Le desired `.env` doit changer alors que l'effective reste issue du process.
|
|
|
|
### Placeholder Logging
|
|
|
|
Sans override process, modifier `KSP_LOGS_DIRECTORY` depuis le panneau puis recharger le panneau Profils. `/logs_directory` doit refléter la nouvelle valeur/provenance `.env` dans l'effective sûre. Le runtime Logging déjà installé n'est pas hot-reloadé dans cette tranche ; cette responsabilité reste prévue en `pre.016`.
|
|
|
|
## Version technique
|
|
|
|
```text
|
|
workspace.package.version = "0.1.4-pre.12"
|
|
```
|
|
|
|
## Validation locale demandée
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-app-config-desk
|
|
cargo test -p ksp-config-lib
|
|
cargo tree -p ksp-app-config-desk
|
|
cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json
|
|
```
|