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

9.6 KiB

Delta 0.1.4-pre.004 — squelette Rust/Tauri de ksp-app-config-desk

Base requise

0.1.4-pre.003
workspace.package.version = "0.1.4-pre.3"

pre.003 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-config-lib et cargo tree -p ksp-config-lib.

Objectif

Créer la première application Tauri KSP sans commencer encore ses panneaux fonctionnels ni son frontend complet.

Cette tranche établit les contrats structurels qu'il serait coûteux de modifier plus tard :

  • crate workspace crates/ksp-app-config-desk ;
  • package Rust mixte lib + bin ;
  • main.rs launcher mince avec verrou single-instance ;
  • tauri.rs propriétaire du runtime Tauri ;
  • builder Tauri configuré par étapes courtes ;
  • fenêtres splash et main ;
  • capabilities initiales ;
  • icône de référence issue du gabarit bot3 ;
  • destination frontend externe ;
  • premier couple de ports desk 1430/1431 ;
  • conventions frontend/ts, frontend/sass et bindings TS-RS.

Le frontend Vite/TypeScript/SCSS et les dépendances npm restent réservés à pre.005.

Version Cargo

workspace.package.version passe de :

0.1.4-pre.3

à :

0.1.4-pre.4

L'identifiant de livraison est :

0.1.4-pre.004

1. Nouveau membre workspace

Le workspace contient désormais :

crates/ksp-app-config-desk

Le package expose deux cibles distinctes :

package : ksp-app-config-desk
lib     : ksp_app_config_desk_lib
bin     : ksp-app-config-desk

La bibliothèque utilise les crate types Tauri usuels staticlib, cdylib et rlib afin de conserver le gabarit compatible desktop/mobile sans déplacer la logique applicative dans le binaire.

2. Dépendances Rust introduites

Les versions ont été revérifiées au moment de cette tranche :

Dépendance Version auditée Contrainte workspace Usage immédiat
tauri 2.11.5 ^2.11 runtime/application
tauri-build 2.6.3 ^2.6 build script Tauri
fs2 0.4.3 ^0.4 verrou single-instance

Les contraintes sont déclarées sous [workspace.dependencies]; la crate applicative les consomme avec .workspace = true.

ksp-core-lib est la seule dépendance KSP immédiate de cette tranche, pour Result/ErrorCode/Error. ksp-config-lib, ksp-logging-lib, tauri-plugin-tracing, ts-rs et les dépendances frontend ne sont pas ajoutés prématurément : ils entreront lorsque leurs premiers usages réels seront développés.

3. Launcher main.rs

main.rs reste volontairement mince :

  1. construit un lockfile dans le répertoire temporaire système ;
  2. acquiert un lock exclusif non bloquant via fs2 ;
  3. refuse une seconde instance ;
  4. collecte std::env::args_os() ;
  5. appelle ksp_app_config_desk_lib::run(arguments) ;
  6. convertit explicitement le résultat en ExitCode.

Le launcher ne lit aucune variable KSP_*/KSPB_* et ne parse pas Config lui-même. Les diagnostics précédant l'initialisation future de Logging restent limités à stderr.

4. Frontière tauri.rs

tauri.rs possède dès maintenant run() et le tauri::Builder.

La construction suit la convention KSP décidée pendant pre.001 :

let mut builder = tauri::Builder::default();
builder = configure_setup(builder);
...

Aucune longue chaîne monolithique n'est introduite. Les prochains plugins, states, setups et handlers seront ajoutés par étapes courtes/réassignées ou helpers ciblés.

Le setup initial vérifie uniquement que les fenêtres déclarées splash et main existent. Il n'existe encore aucune commande Tauri ; lorsqu'elles apparaîtront, leurs annotations #[tauri::command] resteront centralisées dans ce module.

Une erreur runtime Tauri est convertie vers le type commun ksp_core_lib::Error avec le code applicatif config_desk.tauri_runtime_failed.

5. Configuration Tauri

tauri.conf.json déclare :

  • produit KSP Config Desk ;
  • identifiant com.sasedev.ksp-app-config-desk ;
  • version applicative 0.1.4 ;
  • fenêtre splash cachant le shell pendant le lifecycle de démarrage ;
  • fenêtre main initialement invisible ;
  • icônes favicon.png et favicon.ico reprises du gabarit bot3 ;
  • capability initiale core:default pour splash et main.

Le plugin tracing n'est volontairement pas déclaré dans cette tranche ; son couple Rust/frontend est introduit avec le gabarit frontend de pre.005.

6. Destination frontend et ports

La destination de build est fixée dès maintenant à :

../../../builds/khadhroony-solana-project/ksp-app-config-desk/dist

tauri.conf.json l'utilise comme build.frontendDist. vite.config.ts utilisera la même valeur comme build.outDir à partir de pre.005.

Le premier couple de ports desk est réservé :

Usage Port
Vite HTTP 1430
Vite HMR 1431

Les futures applications desk progressent par paires 1432/1433, 1434/1435, etc. pre.005 configurera Vite avec port strict afin qu'une collision échoue explicitement.

7. Convention frontend/TS-RS fixée

La structure cible reprend/refond le modèle bot3 :

frontend/
├── ts/
│   └── bindings/
└── sass/

Les bindings TS-RS seront générés sous :

frontend/ts/bindings/ksp_app_config_desk/...

Ils resteront générés/non versionnés. ts-rs n'est pas encore ajouté car aucun DTO Tauri n'existe dans cette tranche.

La règle npm est également formalisée : npm sert directement à installer/mettre à jour les dépendances avec npm i -D ...; le lancement normal se fait via Tauri, qui exécute les hooks npm run dev et npm run build. Les lockfiles frontend restent ignorés.

8. Règles KSP complétées

docs/rules/RULES_KSP.md ajoute :

  • KSP-APP-022 — builder Tauri progressif ;
  • KSP-APP-023 — layout frontend/ts, frontend/sass, bindings TS-RS générés ;
  • KSP-APP-024 — couples de ports desk uniques à partir de 1430/1431 ;
  • KSP-APP-025 — npm réservé à la gestion directe des dépendances, cycle dev/build piloté par Tauri.

Le plan actif passe en version 5 et enregistre les mêmes décisions pour les tranches suivantes.

9. Générés ignorés

.gitignore ajoute explicitement :

bindings/
gen/

afin de couvrir les bindings TS-RS et schemas/capabilities générés par Tauri.

10. Tests

Un premier test d'intégration tests/public_api.rs vérifie que la fonction publique :

ksp_app_config_desk_lib::run

est accessible avec la signature attendue sans lancer le runtime graphique.

Aucun test frontend n'est attendu avant pre.005.

11. Fichiers ajoutés/modifiés

Fichier Action
.gitignore modifié
Cargo.toml modifié
docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md modifié
docs/rules/RULES_KSP.md modifié
crates/ksp-app-config-desk/Cargo.toml ajouté
crates/ksp-app-config-desk/README.md ajouté
crates/ksp-app-config-desk/TODO.md ajouté
crates/ksp-app-config-desk/USAGE.md ajouté
crates/ksp-app-config-desk/build.rs ajouté
crates/ksp-app-config-desk/capabilities/default.json ajouté
crates/ksp-app-config-desk/icons/favicon.ico ajouté
crates/ksp-app-config-desk/icons/favicon.png ajouté
crates/ksp-app-config-desk/src/errors.rs ajouté
crates/ksp-app-config-desk/src/lib.rs ajouté
crates/ksp-app-config-desk/src/main.rs ajouté
crates/ksp-app-config-desk/src/tauri.rs ajouté
crates/ksp-app-config-desk/tauri.conf.json ajouté
crates/ksp-app-config-desk/tests/public_api.rs ajouté
deltas/0.1.4/pre.004.md ajouté

12. Validation demandée avant commit

Après application du delta :

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 test -p ksp-config-lib est conservé dans cette tranche parce que l'ajout d'une nouvelle crate workspace doit rester compatible avec les audits d'ownership Config qui parcourent toutes les crates.

cargo tauri dev n'est pas encore un critère de validation de pre.004 : package.json, Vite et les fichiers HTML/TypeScript sont volontairement introduits dans pre.005.

13. Suite

Si cette tranche est validée et commitée, pre.005 introduira le gabarit frontend :

  • package.json et installation des dépendances ;
  • vite.config.ts / tsconfig.json ;
  • frontend/main.html / frontend/splash.html ;
  • frontend/ts et frontend/sass réels ;
  • Bootstrap, Font Awesome, SimpleBar et resize-observer-polyfill ;
  • tauri-plugin-tracing + @fltsci/tauri-plugin-tracing ;
  • Vite strict 1430, HMR 1431 ;
  • output ../../../builds/khadhroony-solana-project/ksp-app-config-desk/dist ;
  • premier cargo tauri dev du shell minimal.