# Delta `0.1.4-pre.014` — Logging editor, lecture/DTO ## Statut Tranche livrée pour validation locale. `0.1.4-pre.013` est considérée validée : `fmt`, `check`, `clippy`, les 38 tests Config Desk, les 87 tests Config, les cinq audits ownership et les 12 tests d'API publique passent. Les reveals privilégiés `effective` et `.env` ont été exercés avec confirmation explicite, affichage/masquage transitoire et nettoyage à la fermeture, sans valeur Secret visible dans les logs. ## Objectif Ouvrir la surface Logging fonctionnelle en **lecture typée uniquement**, en utilisant le contrat public de `ksp-config-lib` comme unique autorité et sans commencer prématurément les mutations, la persistence ou le hot reload. ## Modifications ### Backend - nouveau module `logging_editor.rs` ; - chargement exclusif via `ConfigManagement::load_logging_document()` ; - extension publique minimale de Config : `LoggingFileConfig::ansi()` permet de projeter le champ déjà possédé par le contrat typé sans sérialisation JSON de contournement ; - résolution du path via le registre Config, sans chemin physique codé en dur ; - mapping des types publics Config vers des DTO TS-RS dédiés : - `LoggingDocumentDto` ; - `LoggingProfileDto` ; - `LoggingConsoleDto` ; - `LoggingFileDto` ; - `LoggingOutputFilterDto` ; - `LoggingTargetFilterDto` ; - nouvelle commande Tauri centralisée `get_logging_document` ; - nouveau domaine technique `config.logging_editor` ; - logs bornés aux compteurs/identifiants de structure, sans contenu sensible. ### Frontend - la route **Logging** remplace son placeholder par une vue réelle ; - nouveau module `frontend/ts/logging.ts` ; - affichage read-only de : - `file_id` ; - path résolu ; - `format_version` ; - `logs_directory` ; - `default_profile` ; - sélection locale du profil inspecté ; - affichage de `default_filter` et `span_events` ; - projection de la console avec son filtre `level/targets/domains` ; - projection de tous les fichiers et de leurs filtres ; - projection des `target_filters` globaux ; - bouton **Rafraîchir** pour relire le contrat typé ; - aucune sauvegarde ni mutation dans cette tranche. ### Tests - le document Logging commité doit mapper l'intégralité de la surface de lecture attendue ; - le getter `LoggingFileConfig::ansi()` est verrouillé dans les tests unitaires et dans le test d'intégration de l'API publique ; - les listes multiples `targets` et `domains` doivent être conservées sans perte ni réordonnancement ; - les dérivations TS-RS ajoutent les tests d'export des six nouveaux DTO. ### Documentation - `pre.013` marquée réalisée ; - `pre.014` marquée en cours ; - README/USAGE/TODO alignés sur la nouvelle surface Logging read-only. ## Hors scope maintenu Cette tranche ne modifie pas : - les profils Logging ; - `default_profile` ; - les sinks ; - les filtres ; - le runtime Logging actif ; - `LoggingGuard` ; - les fichiers de log persistés. Les mutations/persistence appartiennent à `pre.015`; le runtime/hot reload et les fichiers uniques par lancement appartiennent à `pre.016`. ## Scénarios de validation 1. ouvrir **Logging** : `cfg.std.logging` et son path résolu doivent apparaître ; 2. vérifier `format_version=1`, `logs_directory=${KSP_LOGS_DIRECTORY:-logs}` et `default_profile=local_dev` ; 3. le sélecteur doit proposer `local_dev (default)` ; 4. le profil doit afficher `default_filter=warn` et `span_events=new_and_close` ; 5. la console doit afficher stderr / ANSI oui / compact / level debug / targets `*` / domains `*` ; 6. les deux fichiers `file.all.debug` et `file.config.error` doivent être présents avec leurs chemins, formats, rotations et filtres ; 7. les trois target filters `ksp-config-lib`, `ksp-logging-lib`, `ksp-app-config-desk` doivent apparaître ; 8. **Rafraîchir** doit relire le document sans modifier le runtime ni la génération Logging. ## Version technique ```text workspace.package.version = "0.1.4-pre.14" ``` ## 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 ```