4.3 KiB
0.1.4-pre.008-fix.001 — Contextes splash numériques et réexports de labels inutiles
1. Motif du fix
pre.008 a introduit le lifecycle réel splash -> main, les modules tw_splash / tw_main et la validation des timings du splash, mais la première validation locale a révélé deux défauts Rust bloquants ou bruyants :
Error::with_context()reçoit deux bornes numériques (u64etu32) alors que son contrat exige une valeur convertible enString, ce qui provoque deux erreursE0277danssplash.rs;lib.rsréexporteWINDOW_LABEL_MAINetWINDOW_LABEL_SPLASHalors que ces constantes ne sont utilisées qu'à l'intérieur de leurs modules propriétaires, ce qui provoque deux warningsunused_imports.
Le correctif ne modifie ni la séquence fonctionnelle du splash, ni les labels de fenêtres, ni les contrats frontend introduits en pre.008.
2. Version technique
Le fix touche du Rust compilé. Le signal Cargo devient :
workspace.package.version = "0.1.4-pre.8.fix.1"
La version applicative frontend/Tauri reste 0.1.4 selon la politique KSP actuelle.
3. Contextes d'erreur numériques
Le contrat Core est :
pub fn with_context(mut self, key: &'static str, value: impl Into<String>) -> Self
Les bornes applicatives du splash ne peuvent donc pas être passées directement comme entiers.
Les deux branches deviennent explicitement :
.with_context("maximum_ms", maximum.to_string())
Cela concerne :
parse_u64_setting()pourKSP_DESK_SPLASH_MINIMUM_MS;parse_u32_setting()pourKSP_DESK_SPLASH_FADE_MS.
Aucune modification de ksp-core-lib::Error n'est nécessaire : la représentation textuelle du contexte reste le contrat commun voulu par Core.
4. Ownership des labels de fenêtre
L'audit des usages confirme :
tw_main::WINDOW_LABEL_MAIN
-> utilisé uniquement dans tw_main.rs
tw_splash::WINDOW_LABEL_SPLASH
-> utilisé uniquement dans tw_splash.rs
Les deux lignes suivantes sont donc supprimées de lib.rs :
pub(crate) use self::tw_main::WINDOW_LABEL_MAIN;
pub(crate) use self::tw_splash::WINDOW_LABEL_SPLASH;
Il serait artificiel de modifier tw_main.rs / tw_splash.rs pour consommer crate::WINDOW_LABEL_* uniquement afin de rendre ces réexports utilisés. Chaque module conserve légitimement la propriété et l'usage direct de son label.
Les réexports réellement utilisés restent inchangés :
pub(crate) use self::tw_main::show_and_focus as show_main_window;
pub(crate) use self::tw_splash::frontend_ready as splash_frontend_ready_service;
5. Test renforcé
Le test unitaire splash_duration_parser_rejects_invalid_or_unbounded_values couvre désormais explicitement les deux types de bornes :
u64 -> maximum_ms = "60000"
u32 -> maximum_ms = "10000"
Il vérifie que les erreurs bornées conservent bien ces valeurs dans Error::context() sous forme textuelle.
6. Fichiers modifiés
| Fichier | Action |
|---|---|
Cargo.toml |
modifié |
crates/ksp-app-config-desk/src/lib.rs |
modifié |
crates/ksp-app-config-desk/src/splash.rs |
modifié |
crates/ksp-app-config-desk/unit_tests/splash.rs |
modifié |
deltas/0.1.4/pre.008-fix.001.md |
ajouté |
7. Validations demandées
Depuis la racine du workspace :
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
Les validations doivent confirmer :
- disparition des deux erreurs
E0277surmaximum_ms; - absence des warnings
unused importpourWINDOW_LABEL_MAIN/WINDOW_LABEL_SPLASH; - maintien des tests du lifecycle splash ;
- transition réelle
splash -> maintoujours fonctionnelle.
8. Suite
Après validation de ce fix, la suite reste celle de pre.008 : pre.009 doit introduire la surface Documents + diagnostics sans réouvrir le lifecycle de fenêtres, sauf défaut runtime découvert pendant la validation desktop.