13 KiB
Delta 0.1.4-pre.005 — gabarit frontend Vite/TypeScript/SCSS et tracing Tauri
Base requise
0.1.4-pre.004-fix.001
workspace.package.version = "0.1.4-pre.4.fix.1"
pre.004-fix.001 est considéré comme validé et commité. Les validations locales fournies avant cette tranche ont réussi : cargo fmt --all, cargo check --workspace, cargo clippy --workspace --all-targets, cargo test -p ksp-app-config-desk et cargo tree -p ksp-app-config-desk.
Objectif
Rendre le squelette Tauri créé en pre.004 réellement équipé de son gabarit frontend sans encore ouvrir les surfaces métier Config.
Cette tranche introduit :
package.json;vite.config.tsettsconfig.json;frontend/main.htmletfrontend/splash.html;- TypeScript minimal pour les deux fenêtres ;
- SCSS/Bootstrap/Font Awesome ;
- SimpleBar et
resize-observer-polyfill; - les assets visuels de référence issus du gabarit bot3 ;
tauri-plugin-tracingcôté Rust ;@fltsci/tauri-plugin-tracingcôté frontend ;- la permission Tauri
tracing:default; - Vite HTTP strict sur
1430et WebSocket de développement sur1431; - la destination de build frontend externe demandée.
AppState, Config, Logging, le bridge frontend_log.ts KSP et le lifecycle splash configurable restent hors scope de cette tranche.
Version Cargo
workspace.package.version passe de :
0.1.4-pre.4.fix.1
à :
0.1.4-pre.5
L'identifiant documentaire de livraison est :
0.1.4-pre.005
1. Dépendance Rust tracing Tauri
Le workspace ajoute :
tauri-plugin-tracing = { version = "^0.3" }
La version actuelle auditée est 0.3.4.
ksp-app-config-desk consomme la dépendance avec :
tauri-plugin-tracing.workspace = true
tauri.rs conserve un builder progressif :
Builder::default
-> configure_plugins
-> configure_setup
-> run
configure_plugins() construit le plugin avec tauri_plugin_tracing::Builder::new() puis l'ajoute au builder. Aucun with_default_subscriber() n'est appelé : cette tranche ne crée donc pas de second runtime tracing et ne prend pas l'ownership réservé à ksp-logging-lib.
tauri-plugin-log n'est pas ajouté.
2. Capability tracing
capabilities/default.json contient désormais :
core:default
tracing:default
La permission tracing entre dans le même delta que le plugin, conformément à la décision prise après pre.004.
3. Dépendances frontend
Les générations actuelles ont été revérifiées avant rédaction du manifest :
| Dépendance | Version actuelle auditée | Contrainte déclarée |
|---|---|---|
@fltsci/tauri-plugin-tracing |
0.3.4 |
^0.3 |
@fortawesome/fontawesome-free |
7.3.1 |
^7.3 |
@tauri-apps/api |
2.11.1 |
^2.11 |
@types/node |
26.1.2 |
^26.1 |
bootstrap |
5.3.8 |
^5.3 |
resize-observer-polyfill |
1.5.1 |
^1.5 |
sass-embedded |
1.102.0 |
^1.102 |
simplebar |
6.3.3 |
^6.3 |
typescript |
7.0.2 |
^7.0 |
vite |
8.2.0 |
^8.2 |
Ces dépendances sont placées sous devDependencies, conformément à l'usage npm i -D retenu pour les applications desk : elles participent au build du bundle desktop et ne constituent pas un runtime Node déployé séparément.
@tauri-apps/cli n'est pas ajouté : le workflow retenu utilise la CLI Cargo/Tauri et npm uniquement pour la gestion des dépendances et pour les scripts internes appelés par Tauri.
Le lockfile npm reste ignoré.
4. Politique npm
package.json ne fournit que les scripts utilisés par Tauri :
dev -> vite
build -> tsc && vite build
Première installation après application du delta :
cd crates/ksp-app-config-desk
npm i -D
Le cycle normal reste ensuite :
cargo tauri dev
ou le build Tauri correspondant. Il n'est pas demandé de lancer directement npm run dev ou npm run build dans le workflow utilisateur.
L'environnement de préparation a tenté l'installation npm afin de vérifier le workflow, mais l'accès registry du sandbox a expiré avant téléchargement. Aucun node_modules ni package-lock.json n'est livré. Les versions ci-dessus ont donc été vérifiées depuis les registres/sources officielles, et l'installation effective doit être faite sur le poste de développement.
5. Vite 8 actualisé
Le gabarit bot3 utilisait encore build.rollupOptions et la configuration historique server.hmr. Avec Vite 8, le nouveau gabarit utilise :
build.rolldownOptions
server.ws
afin de ne pas introduire dès la première application KSP des options désormais dépréciées.
Le serveur est configuré ainsi :
| Usage | Port | Politique |
|---|---|---|
| Vite HTTP | 1430 | strict |
| WebSocket dev/HMR | 1431 | dédié |
strictPort = true interdit le basculement silencieux du serveur HTTP vers un autre port.
6. Destination frontend hors workspace source
tauri.conf.json possédait déjà :
../../../builds/khadhroony-solana-project/ksp-app-config-desk/dist
vite.config.ts part maintenant de la racine de la crate puis résout le même chemin contractuel :
../../../builds/khadhroony-solana-project/ksp-app-config-desk/dist
Le root Vite reste frontend/, mais l'utilisation d'un path absolu résolu depuis la crate évite que build.outDir ne soit accidentellement interprété relativement à frontend/.
Cette disposition place le dist à côté de la hiérarchie d'artefacts Rust définie par .cargo/config.toml, et non dans le workspace source.
7. Layout frontend
Le gabarit concret est :
frontend/
├── imgs/
│ ├── logo.png
│ └── splash.png
├── 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 assets, le thème Pulse, les bases SimpleBar, le splash et l'iconographie reprennent/refondent le gabarit audité de khadhroony-bot3.
Le shell main ne charge aucun README.md et aucun PRESENTATION.md n'est créé.
8. SimpleBar et resize observer
Le frontend importe :
resize-observer-polyfill
simplebar
et installe le ResizeObserver de compatibilité sur window avant l'utilisation effective du shell scrollable.
La zone principale utilise data-simplebar, ce qui conserve le scrolling visuel du gabarit au lieu de retomber sur la scrollbar WebKitGTK native.
9. TypeScript et API Tauri
main.ts et splash.ts utilisent getCurrentWindow() depuis @tauri-apps/api/window afin de valider que les scripts sont bien exécutés dans leur fenêtre Tauri respective.
Aucune commande métier n'est encore invoquée.
Les futurs bindings TS-RS restent destinés à :
frontend/ts/bindings/ksp_app_config_desk/...
ts-rs n'est toujours pas ajouté artificiellement : il entrera en pre.006 avec les premiers DTO réels de bootstrap/state.
10. Frontend tracing : intégration sans faux contrat KSP
Le package officiel associé @fltsci/tauri-plugin-tracing est présent avec le plugin Rust, mais cette tranche n'appelle pas encore directement ses helpers trace/debug/info/... comme façade applicative KSP.
Cette décision évite de faire du target vide actuellement utilisé par le bridge générique un contrat de routage KSP. La tranche pre.007 introduira le bridge frontend_log.ts repris/refondu depuis bot3 avec :
- targets KSP whitelistés ;
- commande centralisée dans
tauri.rs; - émission finale via
ksp-logging-lib; - intégration des fonctionnalités console du plugin uniquement lorsqu'elles restent compatibles avec cette ownership.
11. Splash/main à ce stade
Les deux pages sont maintenant bundlables.
La fenêtre splash reste la fenêtre visible au démarrage et main reste initialement invisible comme déclaré depuis pre.004. Cette tranche ne code pas une temporisation splash temporaire uniquement pour montrer main : le lifecycle réel et configurable reste réservé à pre.008.
Le premier cargo tauri dev doit donc au minimum prouver :
- lancement du serveur Vite sur
1430; - WebSocket de développement réservé
1431; - chargement de
splash.htmldans la WebView ; - styles/assets visibles ;
- absence d'erreur de capability pour le plugin tracing.
12. Fichiers modifiés
| Fichier | Version précédente | Nouvelle version |
|---|---|---|
Cargo.toml |
66 | 67 |
crates/ksp-app-config-desk/Cargo.toml |
1 | 2 |
crates/ksp-app-config-desk/src/tauri.rs |
1 | 2 |
crates/ksp-app-config-desk/capabilities/default.json |
n/a | n/a |
crates/ksp-app-config-desk/README.md |
1 | 2 |
crates/ksp-app-config-desk/USAGE.md |
1 | 2 |
crates/ksp-app-config-desk/TODO.md |
1 | 2 |
13. Fichiers ajoutés
crates/ksp-app-config-desk/package.json
crates/ksp-app-config-desk/tsconfig.json
crates/ksp-app-config-desk/vite.config.ts
crates/ksp-app-config-desk/frontend/main.html
crates/ksp-app-config-desk/frontend/splash.html
crates/ksp-app-config-desk/frontend/ts/main.ts
crates/ksp-app-config-desk/frontend/ts/splash.ts
crates/ksp-app-config-desk/frontend/sass/_app.scss
crates/ksp-app-config-desk/frontend/sass/_bootswatch.scss
crates/ksp-app-config-desk/frontend/sass/_fontawesome.scss
crates/ksp-app-config-desk/frontend/sass/_simplebar.scss
crates/ksp-app-config-desk/frontend/sass/_variables.scss
crates/ksp-app-config-desk/frontend/sass/main.scss
crates/ksp-app-config-desk/frontend/sass/splash.scss
crates/ksp-app-config-desk/frontend/imgs/logo.png
crates/ksp-app-config-desk/frontend/imgs/splash.png
deltas/0.1.4/pre.005.md
14. Fichiers supprimés
Aucun.
15. Contrôles exécutés pendant la préparation
- comparaison du scope avec
pre.004-fix.001; - parsing TOML du workspace et de la crate ;
- parsing JSON de
package.json,tsconfig.json,tauri.conf.jsonet de la capability ; - vérification de
workspace.package.version = "0.1.4-pre.5"; - vérification de l'absence de
tauri-plugin-log; - vérification de
tracing:defaultdans la capability ; - vérification de
1430strict et1431dédié dans Vite ; - vérification que le
frontendDistTauri et lefrontendDistrésolu par Vite désignent le même répertoire physique ; - vérification des headers
file:/version:sur les nouveaux fichiers texte KSP concernés ; - vérification de la limite 160 colonnes sur le Rust modifié ;
- tentative de
npm i -D, interrompue par timeout réseau du sandbox avant installation.
Le sandbox de préparation ne fournit pas Cargo. L'installation npm effective et les validations runtime sont donc à exécuter localement.
16. Validation locale demandée
Après application du delta :
cd crates/ksp-app-config-desk
npm i -D
cd ../..
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 -p ksp-app-config-desk
Si la syntaxe locale de la CLI Tauri installée ne prend pas -p, lancer la commande depuis crates/ksp-app-config-desk avec la forme habituelle du poste de développement. Le point important est que Tauri, et non une commande npm run dev lancée manuellement, pilote le serveur frontend.
À l'écran, le splash doit charger le visuel KSP et afficher son statut frontend. Le passage automatique vers main n'est pas encore attendu avant pre.008.
17. Suite
Après validation/commit de pre.005, pre.006 introduira le bootstrap backend et AppState :
- arguments ->
ConfigBootstrapOptions/ registre / management ; - première utilisation réelle de
ksp-config-lib; - initialisation de
ksp-logging-lib; - ownership durable de
LoggingGuard; - fallback sûr si Logging Config est invalide ;
- premiers DTO applicatifs et bindings TS-RS réels.