Files
khadhroony-solana-project/deltas/0.1.4/pre.005.md
2026-08-17 16:05:58 +02:00

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.ts et tsconfig.json ;
  • frontend/main.html et frontend/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-tracing côté Rust ;
  • @fltsci/tauri-plugin-tracing côté frontend ;
  • la permission Tauri tracing:default ;
  • Vite HTTP strict sur 1430 et WebSocket de développement sur 1431 ;
  • 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.html dans 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.json et 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:default dans la capability ;
  • vérification de 1430 strict et 1431 dédié dans Vite ;
  • vérification que le frontendDist Tauri et le frontendDist ré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.