4.5 KiB
ksp-app-config-desk
ksp-app-config-desk est l'application desktop spécialisée de management et de validation de la configuration KSP.
La crate est un package Tauri mixte :
package : ksp-app-config-desk
lib : ksp_app_config_desk_lib
bin : ksp-app-config-desk
Responsabilités
L'application reste une couche d'interface/composition. Les responsabilités de parsing, validation, profils, environnement, .env, secrets et persistence restent dans ksp-config-lib; le runtime Logging restera possédé par ksp-logging-lib.
Le gabarit desktop actif fournit maintenant :
- le verrou single-instance ;
- l'assemblage Tauri centralisé dans
src/tauri.rs; - les fenêtres
splashetmain; - le frontend Vanilla TypeScript + Vite sous
frontend/; - SCSS, Bootstrap et Font Awesome ;
- SimpleBar +
resize-observer-polyfillpour le scrolling du shell ; tauri-plugin-tracingcôté Rust et@fltsci/tauri-plugin-tracingcôté frontend ;- les ports dédiés
1430pour Vite HTTP et1431pour le WebSocket de développement ; - la destination frontend externe commune à Tauri et Vite;
- le bootstrap Config/Logging réel, un
AppStatedurable et le premier contrat Tauri/TS-RSget_app_snapshot.
Le bridge de logging frontend KSP à target explicite n'est pas encore introduit : il appartient à une tranche dédiée afin de passer par ksp-logging-lib et de ne pas figer le target vide du bridge JS générique comme contrat KSP.
Layout frontend
frontend/
├── imgs/
├── sass/
│ ├── _app.scss
│ ├── _bootswatch.scss
│ ├── _fontawesome.scss
│ ├── _simplebar.scss
│ ├── _variables.scss
│ ├── main.scss
│ └── splash.scss
├── ts/
│ ├── main.ts
│ └── splash.ts
├── main.html
└── splash.html
Les premiers bindings TS-RS sont générés par les tests ts-rs sous :
frontend/ts/bindings/ksp_app_config_desk/...
Les DTO Rust applicatifs restent la source de vérité et les bindings générés ne sont pas versionnés.
Artefacts frontend
Les artefacts frontend construits ne sont pas versionnés. tauri.conf.json fixe :
../../builds/khadhroony-solana-project/ksp-app-config-desk/dist
vite.config.ts résout cette même destination depuis la racine de la crate, ce qui maintient dist hors du workspace source et l'aligne avec la stratégie .cargo/config.toml pour les artefacts Rust.
Ports desktop
ksp-app-config-desk utilise :
Vite HTTP : 1430
Vite WS : 1431
Le port HTTP est strict. Les futures applications desk utilisent les couples suivants 1432/1433, 1434/1435, etc.
Dépendances frontend
Les bibliothèques consommées par le bundle applicatif sont déclarées sous dependencies : @fltsci/tauri-plugin-tracing, @fortawesome/fontawesome-free, @tauri-apps/api, bootstrap, simplebar et resize-observer-polyfill.
Les outils de compilation/développement et déclarations de types appartiennent à devDependencies, notamment @tauri-apps/cli, @types/bootstrap, @types/node, sass-embedded, typescript et vite. Les commandes npm directes sont réservées à l'installation ou à la mise à jour de ces dépendances ; le cycle normal de développement et de build est lancé depuis la racine du workspace par Tauri avec la configuration explicite de l'application.
Bootstrap Config et Logging
Au démarrage, l'application construit ConfigBootstrapOptions, ConfigFileRegistry, ConfigDocumentEngine et ConfigManagement à partir des arguments complets du processus. Elle tente ensuite de résoudre le profil Logging par défaut avec un snapshot ConfigEnvironment frais.
Si le document Logging, sa résolution environnementale ou l'initialisation du runtime configuré échoue avant installation du subscriber, Config Desk installe un fallback transitoire en mémoire : console stderr, niveau Info, aucun fichier, aucun span lifecycle. Ce fallback n'est jamais persisté et son diagnostic frontend est limité à domain, code et message.
Le LoggingGuard est conservé dans AppState pour préparer le hot reload ultérieur.
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 final du splash reste traité dans la tranche dédiée pre.008.