diff --git a/Cargo.toml b/Cargo.toml
index ff214d5..29f254a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,12 +1,12 @@
# file: Cargo.toml
-# version: 66
+# version: 67
[workspace]
resolver = "3"
members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib"]
[workspace.package]
-version = "0.1.4-pre.4.fix.1"
+version = "0.1.4-pre.5"
edition = "2024"
license = "MIT"
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
@@ -25,6 +25,7 @@ tracing-appender = { version = "^0.2", default-features = false }
tokio = { version = "^1.53", default-features = false, features = ["rt", "rt-multi-thread", "macros"] }
tauri = { version = "^2.11" }
tauri-build = { version = "^2.6" }
+tauri-plugin-tracing = { version = "^0.3" }
[workspace.lints.rust]
missing_docs = "warn"
diff --git a/crates/ksp-app-config-desk/Cargo.toml b/crates/ksp-app-config-desk/Cargo.toml
index 822576c..c8ea492 100644
--- a/crates/ksp-app-config-desk/Cargo.toml
+++ b/crates/ksp-app-config-desk/Cargo.toml
@@ -1,5 +1,5 @@
# file: crates/ksp-app-config-desk/Cargo.toml
-# version: 1
+# version: 2
[package]
name = "ksp-app-config-desk"
@@ -25,6 +25,7 @@ tauri-build.workspace = true
fs2.workspace = true
ksp-core-lib = { path = "../ksp-core-lib" }
tauri.workspace = true
+tauri-plugin-tracing.workspace = true
[lints]
workspace = true
diff --git a/crates/ksp-app-config-desk/README.md b/crates/ksp-app-config-desk/README.md
index 755c5d4..ea32d60 100644
--- a/crates/ksp-app-config-desk/README.md
+++ b/crates/ksp-app-config-desk/README.md
@@ -1,5 +1,5 @@
-
+
# `ksp-app-config-desk`
@@ -15,41 +15,71 @@ bin : ksp-app-config-desk
## Responsabilités
-L'application restera 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`.
+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`.
-La première tranche de squelette établit uniquement :
+Le gabarit desktop actif fournit maintenant :
-- le membre workspace Rust ;
-- le couple `lib` + `bin` ;
- le verrou single-instance ;
-- l'assemblage Tauri minimal dans `src/tauri.rs` ;
+- l'assemblage Tauri centralisé dans `src/tauri.rs` ;
- les fenêtres `splash` et `main` ;
-- les capabilities initiales ;
-- l'icône de référence reprise du gabarit desktop éprouvé ;
-- le port de développement réservé `1430`, avec `1431` réservé au HMR Vite ;
-- le répertoire frontend cible `frontend/`, dont `frontend/ts/` et `frontend/ts/bindings/`.
+- le frontend Vanilla TypeScript + Vite sous `frontend/` ;
+- SCSS, Bootstrap et Font Awesome ;
+- SimpleBar + `resize-observer-polyfill` pour le scrolling du shell ;
+- `tauri-plugin-tracing` côté Rust et `@fltsci/tauri-plugin-tracing` côté frontend ;
+- les ports dédiés `1430` pour Vite HTTP et `1431` pour le WebSocket de développement ;
+- la destination frontend externe commune à Tauri et Vite.
-Le frontend Vite/TypeScript/SCSS et les dépendances npm sont introduits dans la tranche suivante. Tant que cette tranche n'est pas appliquée, `cargo tauri dev` n'est pas un scénario de validation attendu de ce squelette.
+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
+
+```text
+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 futurs bindings TS-RS seront générés sous :
+
+```text
+frontend/ts/bindings/ksp_app_config_desk/...
+```
+
+Le répertoire de bindings n'est pas créé artificiellement avant le premier DTO réel.
## Artefacts frontend
-Les artefacts frontend construits ne doivent pas être versionnés. `tauri.conf.json` fixe dès maintenant la destination contractuelle :
+Les artefacts frontend construits ne sont pas versionnés. `tauri.conf.json` fixe :
```text
../../builds/khadhroony-solana-project/ksp-app-config-desk/dist
```
-`vite.config.ts` utilisera la même destination lors de son introduction.
-
-Les commandes npm servent uniquement à installer/mettre à jour les dépendances. Le cycle normal de développement/build de l'application passe par Tauri, qui déclenche les scripts frontend déclarés dans sa configuration.
+`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 réserve des couples de ports distincts par application desk. `ksp-app-config-desk`, première application, utilise :
+`ksp-app-config-desk` utilise :
```text
Vite HTTP : 1430
-Vite HMR : 1431
+Vite WS : 1431
```
-Les applications desk suivantes incrémentent le couple de deux ports afin de pouvoir fonctionner simultanément sans collision.
+Le port HTTP est strict. Les futures applications desk utilisent les couples suivants `1432/1433`, `1434/1435`, etc.
+
+## Dépendances frontend
+
+Les dépendances frontend sont déclarées comme dépendances de développement car elles sont bundlées dans l'application desktop. Les commandes npm directes sont réservées à leur installation/mise à jour. Le cycle normal de développement et de build passe par Tauri, qui déclenche les scripts `dev` et `build`.
diff --git a/crates/ksp-app-config-desk/TODO.md b/crates/ksp-app-config-desk/TODO.md
index bceb0f6..24c07fc 100644
--- a/crates/ksp-app-config-desk/TODO.md
+++ b/crates/ksp-app-config-desk/TODO.md
@@ -1,16 +1,16 @@
-
+
# TODO `ksp-app-config-desk`
-Les éléments suivants appartiennent aux prochaines tranches de `0.1.4` :
+Le gabarit frontend de base est maintenant en place : Vite/TypeScript/SCSS, Bootstrap, Font Awesome, SimpleBar, resize observer, plugin tracing et ports dédiés.
+
+Les prochaines tranches doivent encore :
-- ajouter le gabarit frontend Vite/TypeScript/SCSS sous `frontend/` ;
-- ajouter `package.json`, `tsconfig.json` et `vite.config.ts` ;
-- réserver strictement `1430` pour Vite et `1431` pour HMR ;
-- introduire SimpleBar, `resize-observer-polyfill`, Bootstrap et Font Awesome selon le gabarit retenu ;
-- intégrer `tauri-plugin-tracing` et `@fltsci/tauri-plugin-tracing` ;
- introduire les DTO TS-RS au premier contrat Tauri réel, avec bindings générés sous `frontend/ts/bindings/` ;
-- introduire `AppState`, Config et l'ownership de `LoggingGuard` ;
+- introduire `AppState`, `ksp-config-lib`, `ksp-logging-lib` et l'ownership durable de `LoggingGuard` ;
+- reprendre/refondre `frontend_log.ts` depuis bot3 avec targets KSP whitelistés et émission via `ksp-logging-lib` ;
+- finaliser le lifecycle splash configurable sans temporisation environnementale codée en dur ;
- développer les panneaux Documents, Profils, Environnement/`.env`, Secrets et Logging ;
+- introduire DataTables au premier tableau qui exige tri, filtrage, sélection ou checkbox ;
- démontrer le hot reload Logging et le panneau de test de routage.
diff --git a/crates/ksp-app-config-desk/USAGE.md b/crates/ksp-app-config-desk/USAGE.md
index 949beb3..b6526e5 100644
--- a/crates/ksp-app-config-desk/USAGE.md
+++ b/crates/ksp-app-config-desk/USAGE.md
@@ -1,34 +1,81 @@
-
+
# Utilisation de `ksp-app-config-desk`
## État actuel
-La tranche `0.1.4-pre.004` introduit le squelette Rust/Tauri uniquement. Les fenêtres frontend ne deviennent exécutables qu'après l'ajout du gabarit Vite/TypeScript prévu par la tranche suivante.
+Le gabarit Rust/Tauri et le frontend Vite/TypeScript/SCSS sont maintenant présents. Les panneaux métier Config restent volontairement absents à ce stade.
-## Entrée binaire
+La fenêtre `splash` est la fenêtre visible au démarrage. La fenêtre `main` est déjà construite et bundlée, mais son lifecycle d'affichage est finalisé dans la tranche splash/shell dédiée afin de ne pas introduire une temporisation codée en dur.
-Le binaire `ksp-app-config-desk` :
+## Première installation des dépendances frontend
-1. acquiert un verrou single-instance dans le répertoire temporaire du système ;
-2. collecte les arguments de processus sans lire directement de variable `KSP_*`/`KSPB_*` ;
-3. appelle `ksp_app_config_desk_lib::run()` ;
-4. convertit explicitement le résultat en `ExitCode`.
+Depuis :
-Les arguments Config `--cfgpath`, `--schemapath` et `--filemap` seront consommés par les APIs `ksp-config-lib` dans la tranche de bootstrap applicatif prévue plus loin ; le binaire ne doit pas en réimplémenter le parsing.
+```text
+crates/ksp-app-config-desk
+```
-## Fenêtres réservées
+installer les dépendances déclarées avec la commande de gestion prévue par le projet :
-Deux fenêtres sont déjà déclarées dans `tauri.conf.json` :
+```bash
+npm i -D
+```
-- `splash` : lifecycle de démarrage commun ;
-- `main` : shell de management Config.
+Les lockfiles frontend restent ignorés et ne sont pas versionnés.
-Leur contenu HTML/TypeScript est ajouté avec le gabarit frontend.
+## Développement normal
-## Développement frontend
+Le frontend n'est pas lancé directement avec npm. Depuis la crate ou avec le package explicitement sélectionné selon l'environnement Cargo/Tauri, utiliser le cycle Tauri habituel :
-Le cycle normal utilisera `cargo tauri dev`. Tauri déclenchera alors `npm run dev` via `beforeDevCommand` et chargera le serveur Vite sur le port `1430`.
+```bash
+cargo tauri dev
+```
-Les commandes npm directes sont réservées à la gestion des dépendances (`npm i -D ...` selon la politique du projet), et non au lancement quotidien de l'application.
+Tauri exécute alors le hook :
+
+```text
+npm run dev
+```
+
+Vite écoute strictement sur :
+
+```text
+HTTP : 1430
+WS : 1431
+```
+
+Si le port HTTP est déjà occupé, le démarrage doit échouer au lieu de sélectionner silencieusement un autre port.
+
+## Build frontend
+
+Le build de l'application passe également par Tauri. `beforeBuildCommand` déclenche :
+
+```text
+npm run build
+```
+
+Vite construit les pages `main.html` et `splash.html` vers :
+
+```text
+../../builds/khadhroony-solana-project/ksp-app-config-desk/dist
+```
+
+Cette destination est résolue depuis la racine de la crate dans `vite.config.ts` et correspond au `frontendDist` de `tauri.conf.json`.
+
+## Tracing desktop
+
+`tauri-plugin-tracing` est enregistré côté Rust et la capability contient `tracing:default`. Le package frontend associé est installé avec le gabarit.
+
+Cette tranche n'utilise pas encore le bridge JavaScript pour émettre les logs KSP applicatifs : `frontend_log.ts`, les targets KSP whitelistés et la commande `emit_frontend_log` sont introduits dans la tranche dédiée après initialisation de `ksp-logging-lib`.
+
+## Bindings TS-RS
+
+Le layout cible est :
+
+```text
+frontend/ts/bindings/ksp_app_config_desk/...
+```
+
+Les bindings sont générés au premier DTO Tauri réel ; aucune structure factice n'est ajoutée uniquement pour créer le répertoire.
diff --git a/crates/ksp-app-config-desk/capabilities/default.json b/crates/ksp-app-config-desk/capabilities/default.json
index ba19e03..8ac7790 100644
--- a/crates/ksp-app-config-desk/capabilities/default.json
+++ b/crates/ksp-app-config-desk/capabilities/default.json
@@ -7,6 +7,7 @@
"main"
],
"permissions": [
- "core:default"
+ "core:default",
+ "tracing:default"
]
-}
+}
\ No newline at end of file
diff --git a/crates/ksp-app-config-desk/frontend/imgs/logo.png b/crates/ksp-app-config-desk/frontend/imgs/logo.png
new file mode 100644
index 0000000..94e89ca
Binary files /dev/null and b/crates/ksp-app-config-desk/frontend/imgs/logo.png differ
diff --git a/crates/ksp-app-config-desk/frontend/imgs/splash.png b/crates/ksp-app-config-desk/frontend/imgs/splash.png
new file mode 100644
index 0000000..a27d1eb
Binary files /dev/null and b/crates/ksp-app-config-desk/frontend/imgs/splash.png differ
diff --git a/crates/ksp-app-config-desk/frontend/main.html b/crates/ksp-app-config-desk/frontend/main.html
new file mode 100644
index 0000000..a2ab63d
--- /dev/null
+++ b/crates/ksp-app-config-desk/frontend/main.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+ KSP Config Desk
+
+
+
+
+
+
+
+
+
+
+
+
+
Configuration KSP
+
+ Le shell desktop est prêt. Les panneaux Documents, Profils, Environnement et Logging seront ajoutés dans les prereleases suivantes.
+