Files
2026-08-16 17:03:07 +02:00

4.3 KiB

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

workspace.package.version = "0.1.4-pre.14"

Validation locale demandée

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