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.rslauncher mince avec verrou single-instance ;tauri.rspropriétaire du runtime Tauri ;- builder Tauri configuré par étapes courtes ;
- fenêtres
splashetmain; - 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/sasset 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 :
- construit un lockfile dans le répertoire temporaire système ;
- acquiert un lock exclusif non bloquant via
fs2; - refuse une seconde instance ;
- collecte
std::env::args_os(); - appelle
ksp_app_config_desk_lib::run(arguments); - 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
splashcachant le shell pendant le lifecycle de démarrage ; - fenêtre
maininitialement invisible ; - icônes
favicon.pngetfavicon.icoreprises du gabarit bot3 ; - capability initiale
core:defaultpoursplashetmain.
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— layoutfrontend/ts,frontend/sass, bindings TS-RS générés ;KSP-APP-024— couples de ports desk uniques à partir de1430/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.jsonet installation des dépendances ;vite.config.ts/tsconfig.json;frontend/main.html/frontend/splash.html;frontend/tsetfrontend/sassréels ;- Bootstrap, Font Awesome, SimpleBar et
resize-observer-polyfill; tauri-plugin-tracing+@fltsci/tauri-plugin-tracing;- Vite strict
1430, HMR1431; - output
../../builds/khadhroony-solana-project/ksp-app-config-desk/dist; - premier
cargo tauri devdu shell minimal.