v0.1.4-pre.005-fix.001

This commit is contained in:
2026-08-16 11:18:13 +02:00
parent f719821392
commit abe3f8daa6
8 changed files with 190 additions and 35 deletions

View File

@@ -1,12 +1,12 @@
# file: Cargo.toml # file: Cargo.toml
# version: 67 # version: 68
[workspace] [workspace]
resolver = "3" resolver = "3"
members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib"] members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib"]
[workspace.package] [workspace.package]
version = "0.1.4-pre.5" version = "0.1.4-pre.5.fix.1"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-app-config-desk/README.md --> <!-- file: crates/ksp-app-config-desk/README.md -->
<!-- version: 2 --> <!-- version: 3 -->
# `ksp-app-config-desk` # `ksp-app-config-desk`
@@ -82,4 +82,6 @@ Le port HTTP est strict. Les futures applications desk utilisent les couples sui
## Dépendances frontend ## 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`. Les bibliothèques consommées par le bundle applicatif sont déclarées sous `dependencies` : `@fltsci/tauri-plugin-tracing`, `@fortawesome/fontawesome-free`, `@tauri-apps/api`, `bootstrap`, `simplebar` et `resize-observer-polyfill`.
Les outils de compilation/développement et déclarations de types appartiennent à `devDependencies`, notamment `@tauri-apps/cli`, `@types/bootstrap`, `@types/node`, `sass-embedded`, `typescript` et `vite`. Les commandes npm directes sont réservées à l'installation ou à la mise à jour de ces dépendances ; le cycle normal de développement et de build est lancé depuis la racine du workspace par Tauri avec la configuration explicite de l'application.

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-app-config-desk/USAGE.md --> <!-- file: crates/ksp-app-config-desk/USAGE.md -->
<!-- version: 2 --> <!-- version: 3 -->
# Utilisation de `ksp-app-config-desk` # Utilisation de `ksp-app-config-desk`
@@ -21,16 +21,17 @@ installer les dépendances déclarées avec la commande de gestion prévue par l
```bash ```bash
npm i -D npm i -D
cd ../../
``` ```
Les lockfiles frontend restent ignorés et ne sont pas versionnés. `npm i -D` sans nom de package installe les dépendances déclarées du package ; la classification `dependencies` / `devDependencies` reste celle de `package.json`. Les lockfiles frontend restent ignorés et ne sont pas versionnés. Après cette installation, les commandes Cargo/Tauri sont exécutées depuis la racine du workspace.
## Développement normal ## Développement normal
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 frontend n'est pas lancé directement avec npm. KSP est un workspace Rust multi-app : depuis la racine du workspace, la configuration Tauri de l'application doit être sélectionnée explicitement :
```bash ```bash
cargo tauri dev cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json
``` ```
Tauri exécute alors le hook : Tauri exécute alors le hook :
@@ -50,7 +51,13 @@ Si le port HTTP est déjà occupé, le démarrage doit échouer au lieu de séle
## Build frontend ## Build frontend
Le build de l'application passe également par Tauri. `beforeBuildCommand` déclenche : Le build de l'application passe également par Tauri. Depuis la racine du workspace :
```bash
cargo tauri build -c crates/ksp-app-config-desk/tauri.conf.json
```
`beforeBuildCommand` déclenche :
```text ```text
npm run build npm run build

View File

@@ -5,18 +5,24 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "tsc && vite build" "build": "tsc && vite build",
"preview": "vite preview",
"tauri": "tauri"
}, },
"devDependencies": { "dependencies": {
"@fltsci/tauri-plugin-tracing": "^0.3", "@fltsci/tauri-plugin-tracing": "^0.3",
"@fortawesome/fontawesome-free": "^7.3", "@fortawesome/fontawesome-free": "^7.3",
"@tauri-apps/api": "^2.11", "@tauri-apps/api": "^2.11",
"@types/node": "^26.1",
"bootstrap": "^5.3", "bootstrap": "^5.3",
"resize-observer-polyfill": "^1.5", "resize-observer-polyfill": "^1.5",
"simplebar": "^6.3"
},
"devDependencies": {
"@tauri-apps/cli": "^2.11",
"@types/bootstrap": "^5.2",
"@types/node": "^26.1",
"sass-embedded": "^1.102", "sass-embedded": "^1.102",
"simplebar": "^6.3",
"typescript": "^7.0", "typescript": "^7.0",
"vite": "^8.2" "vite": "^8.2"
} }
} }

View File

@@ -0,0 +1,128 @@
<!-- file: deltas/0.1.4/pre.005-fix.001.md -->
<!-- version: 1 -->
# `0.1.4-pre.005-fix.001` — Classification npm et commande Tauri workspace
## 1. Motif du fix
`pre.005` a correctement introduit le frontend Tauri/Vite et le plugin tracing, mais son `package.json` classait à tort toutes les dépendances frontend sous `devDependencies`. La documentation de lancement utilisait également une forme `cargo tauri dev` adaptée à une application isolée, alors que KSP est un workspace Rust destiné à contenir plusieurs applications Tauri.
Le correctif ne modifie pas le périmètre fonctionnel de `pre.005`.
## 2. Version technique
Le fix modifie `package.json` et la configuration de développement effective ; le signal Cargo devient donc :
```text
workspace.package.version = "0.1.4-pre.5.fix.1"
```
La version applicative frontend/Tauri reste `0.1.4`, conformément à la politique KSP actuelle.
## 3. Classification npm corrigée
Les bibliothèques consommées par le bundle applicatif sont sous `dependencies` :
```text
@fltsci/tauri-plugin-tracing
@fortawesome/fontawesome-free
@tauri-apps/api
bootstrap
resize-observer-polyfill
simplebar
```
Les outils de build/développement et typings sont sous `devDependencies` :
```text
@tauri-apps/cli
@types/bootstrap
@types/node
sass-embedded
typescript
vite
```
Les contraintes restent volontairement au niveau de génération compatible. `@types/bootstrap` utilise `^5.2` et `@tauri-apps/cli` `^2.11`.
Les scripts `preview` et `tauri` du gabarit bot3 sont également restaurés. Le workflow opérateur KSP n'utilise toutefois pas npm pour lancer directement l'application.
## 4. Workflow d'installation et de lancement
La première installation frontend se fait depuis la crate :
```bash
cd crates/ksp-app-config-desk
npm i -D
cd ../../
```
`npm i -D` sans nom de package installe les dépendances déjà déclarées dans `package.json`; il ne change pas leur classification existante. Les lockfiles restent ignorés et non versionnés.
Le développement reprend ensuite depuis la racine du workspace :
```bash
cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json
```
Le build utilise de même :
```bash
cargo tauri build -c crates/ksp-app-config-desk/tauri.conf.json
```
Cette sélection explicite par `-c` est nécessaire au gabarit KSP multi-app et évite toute ambiguïté lorsque plusieurs crates Tauri coexistent dans le même workspace.
## 5. Règles et plan synchronisés
`RULES_KSP.md` distingue désormais explicitement :
- `dependencies` pour les bibliothèques runtime/bundle frontend ;
- `devDependencies` pour tooling et `@types/*` ;
- npm direct uniquement pour la gestion des dépendances ;
- retour à la racine du workspace après installation npm ;
- sélection de chaque application Tauri avec `-c crates/<app>/tauri.conf.json`.
Le plan `0.1.4` est synchronisé avec la même convention.
## 6. Tracing
La correction ne retire ni ne modifie l'intégration tracing de `pre.005` :
```text
Rust : tauri-plugin-tracing
Frontend : @fltsci/tauri-plugin-tracing
Capability: tracing:default
```
## 7. Fichiers modifiés
| Fichier | Action |
| ---------------------------------------------- | ------: |
| `Cargo.toml` | modifié |
| `crates/ksp-app-config-desk/package.json` | modifié |
| `crates/ksp-app-config-desk/README.md` | modifié |
| `crates/ksp-app-config-desk/USAGE.md` | modifié |
| `docs/rules/RULES_KSP.md` | modifié |
| `docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md` | modifié |
| `deltas/0.1.4/pre.005-fix.001.md` | ajouté |
## 8. Validations à exécuter après application
Depuis la racine du workspace, après installation npm :
```bash
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 -c crates/ksp-app-config-desk/tauri.conf.json
```
Le test desktop doit confirmer au minimum que Tauri lance lui-même `npm run dev`, que Vite reste sur `1430/1431`, que la fenêtre splash s'ouvre et qu'aucune commande npm de démarrage manuel n'est nécessaire.
## 9. Suite
Après validation de ce fix, la tranche suivante reste `pre.006` : bootstrap backend, `AppState`, intégration `ksp-config-lib` / `ksp-logging-lib`, ownership du `LoggingGuard` et premiers DTO TS-RS réels.

View File

@@ -262,15 +262,15 @@ Le premier `cargo tauri dev` doit donc au minimum prouver :
## 12. Fichiers modifiés ## 12. Fichiers modifiés
| Fichier | Version précédente | Nouvelle version | | Fichier | Version précédente | Nouvelle version |
| -------------------------------------------------------------- | ------------------: | ---------------: | |--------------------------------------------------------|-------------------:|-----------------:|
| `Cargo.toml` | 66 | 67 | | `Cargo.toml` | 66 | 67 |
| `crates/ksp-app-config-desk/Cargo.toml` | 1 | 2 | | `crates/ksp-app-config-desk/Cargo.toml` | 1 | 2 |
| `crates/ksp-app-config-desk/src/tauri.rs` | 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/capabilities/default.json` | n/a | n/a |
| `crates/ksp-app-config-desk/README.md` | 1 | 2 | | `crates/ksp-app-config-desk/README.md` | 1 | 2 |
| `crates/ksp-app-config-desk/USAGE.md` | 1 | 2 | | `crates/ksp-app-config-desk/USAGE.md` | 1 | 2 |
| `crates/ksp-app-config-desk/TODO.md` | 1 | 2 | | `crates/ksp-app-config-desk/TODO.md` | 1 | 2 |
## 13. Fichiers ajoutés ## 13. Fichiers ajoutés

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md --> <!-- file: docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md -->
<!-- version: 5 --> <!-- version: 6 -->
# Plan `0.1.4` — `ksp-app-config-desk` # Plan `0.1.4` — `ksp-app-config-desk`
@@ -230,9 +230,9 @@ Les artefacts frontend construits doivent être séparés des sources. Pour `ksp
../../builds/khadhroony-solana-project/ksp-app-config-desk/dist ../../builds/khadhroony-solana-project/ksp-app-config-desk/dist
``` ```
Cette valeur est utilisée par `build.frontendDist` dans `tauri.conf.json`. `vite.config.ts` utilisera la même destination comme `build.outDir` lors de son introduction. Elle remplace le `../dist`/`../../dist` historique du gabarit bot3. Cette valeur est utilisée par `build.frontendDist` dans `tauri.conf.json`. `vite.config.ts` utilise la même destination comme `build.outDir` depuis son introduction en `pre.005`. Elle remplace le `../dist`/`../../dist` historique du gabarit bot3.
La gestion npm suit une règle simple : npm est utilisé directement pour installer ou mettre à jour les dépendances (`npm i -D ...`). Le cycle normal de développement et de build passe par Tauri ; `cargo tauri dev` et `cargo tauri build` déclenchent eux-mêmes `npm run dev` / `npm run build` au travers des hooks Tauri. Il n'est pas demandé à l'opérateur de lancer séparément le serveur Vite. Aucun lockfile npm n'est versionné. La gestion npm distingue le runtime frontend du tooling. Les bibliothèques consommées par le bundle appartiennent à `dependencies`; les outils de compilation/développement (`@tauri-apps/cli`, Vite, TypeScript, Sass) et les paquets `@types/*` appartiennent à `devDependencies`. npm est utilisé directement uniquement pour installer ou mettre à jour ces dépendances. Pour la première installation, l'opérateur se place dans `crates/ksp-app-config-desk`, exécute `npm i -D`, puis revient à la racine avec `cd ../../`. Le cycle normal de développement et de build passe ensuite par Tauri depuis la racine du workspace, avec configuration explicite de l'application : `cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json` et `cargo tauri build -c crates/ksp-app-config-desk/tauri.conf.json`. Tauri déclenche lui-même `npm run dev` / `npm run build` au travers des hooks configurés. Aucun lockfile npm n'est versionné.
Chaque application Tauri desk KSP reçoit un couple de ports Vite/HMR propre. La première application réserve : Chaque application Tauri desk KSP reçoit un couple de ports Vite/HMR propre. La première application réserve :
@@ -256,6 +256,7 @@ Aucune dépendance n'est ajoutée par `pre.001`. Les versions suivantes ont ét
| `@fltsci/tauri-plugin-tracing` | `0.3.4` | package frontend compagnon du plugin tracing | | `@fltsci/tauri-plugin-tracing` | `0.3.4` | package frontend compagnon du plugin tracing |
| `@tauri-apps/api` | `2.11.1` | frontend Tauri | | `@tauri-apps/api` | `2.11.1` | frontend Tauri |
| `@tauri-apps/cli` | `2.11.4` | dev/build desktop | | `@tauri-apps/cli` | `2.11.4` | dev/build desktop |
| `@types/bootstrap` | `5.2.11` | typings Bootstrap |
| `vite` | `8.2.1` | build frontend | | `vite` | `8.2.1` | build frontend |
| `typescript` | `7.0.2` | frontend TypeScript | | `typescript` | `7.0.2` | frontend TypeScript |
| `sass-embedded` | `1.102.0` | compilation SCSS | | `sass-embedded` | `1.102.0` | compilation SCSS |
@@ -273,6 +274,7 @@ Sources d'audit :
- <https://github.com/fltsci/tauri-plugin-tracing/blob/main/package.json> - <https://github.com/fltsci/tauri-plugin-tracing/blob/main/package.json>
- <https://www.npmjs.com/package/@tauri-apps/api> - <https://www.npmjs.com/package/@tauri-apps/api>
- <https://www.npmjs.com/package/@tauri-apps/cli> - <https://www.npmjs.com/package/@tauri-apps/cli>
- <https://www.npmjs.com/package/@types/bootstrap>
- <https://www.npmjs.com/package/vite> - <https://www.npmjs.com/package/vite>
- <https://www.npmjs.com/package/typescript> - <https://www.npmjs.com/package/typescript>
- <https://www.npmjs.com/package/sass-embedded> - <https://www.npmjs.com/package/sass-embedded>
@@ -1279,22 +1281,31 @@ ts-rs
### Frontend ### Frontend
`dependencies` :
```text ```text
@fltsci/tauri-plugin-tracing @fltsci/tauri-plugin-tracing
@tauri-apps/api
@tauri-apps/cli
vite
typescript
sass-embedded
bootstrap
@fortawesome/fontawesome-free @fortawesome/fontawesome-free
@tauri-apps/api
bootstrap
simplebar simplebar
resize-observer-polyfill resize-observer-polyfill
``` ```
`devDependencies` :
```text
@tauri-apps/cli
@types/bootstrap
@types/node
sass-embedded
typescript
vite
```
DataTables est ajouté à la première tranche qui introduit un tableau nécessitant tri/filtrage/sélection/checkboxes, avec le couple bot3 `datatables.net-bs5` + `datatables.net-select-bs5` comme référence à réauditer avant ajout. Il n'est pas ajouté au squelette vide uniquement par symétrie. DataTables est ajouté à la première tranche qui introduit un tableau nécessitant tri/filtrage/sélection/checkboxes, avec le couple bot3 `datatables.net-bs5` + `datatables.net-select-bs5` comme référence à réauditer avant ajout. Il n'est pas ajouté au squelette vide uniquement par symétrie.
`@types/node` ne sera ajouté que si la configuration Vite TypeScript en a réellement besoin. ECharts, `@andypf/json-viewer` et les autres packages métier/démo bot3 restent exclus tant qu'une tranche n'en démontre pas l'usage immédiat. `@types/node` est requis par la configuration Vite TypeScript actuelle. Les autres paquets `@types/*` sont ajoutés uniquement lorsqu'une dépendance réellement utilisée en a besoin. ECharts, `@andypf/json-viewer` et les autres packages métier/démo bot3 restent exclus tant qu'une tranche n'en démontre pas l'usage immédiat.
La politique KSP sans lockfile versionné reste inchangée. La politique KSP sans lockfile versionné reste inchangée.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/rules/RULES_KSP.md --> <!-- file: docs/rules/RULES_KSP.md -->
<!-- version: 23 --> <!-- version: 24 -->
# Règles spécifiques à KSP # Règles spécifiques à KSP
@@ -217,7 +217,8 @@
- **KSP-APP-022** — La construction d'un `tauri::Builder` KSP reste progressive et lisible : une variable builder est configurée/réassignée par étapes courtes ou helpers ciblés plutôt qu'au moyen d'une longue chaîne monolithique, afin qu'un plugin, state, setup ou groupe de commandes puisse être désactivé sans restructurer l'ensemble du runtime. - **KSP-APP-022** — La construction d'un `tauri::Builder` KSP reste progressive et lisible : une variable builder est configurée/réassignée par étapes courtes ou helpers ciblés plutôt qu'au moyen d'une longue chaîne monolithique, afin qu'un plugin, state, setup ou groupe de commandes puisse être désactivé sans restructurer l'ensemble du runtime.
- **KSP-APP-023** — Le gabarit Tauri KSP place les sources web sous `frontend/`, les modules TypeScript sous `frontend/ts/`, les styles SCSS sous `frontend/sass/` et les bindings TS-RS générés sous `frontend/ts/bindings/`. Les bindings et artefacts générés ne sont pas versionnés ; les DTO Rust applicatifs restent la source des contrats TS-RS. - **KSP-APP-023** — Le gabarit Tauri KSP place les sources web sous `frontend/`, les modules TypeScript sous `frontend/ts/`, les styles SCSS sous `frontend/sass/` et les bindings TS-RS générés sous `frontend/ts/bindings/`. Les bindings et artefacts générés ne sont pas versionnés ; les DTO Rust applicatifs restent la source des contrats TS-RS.
- **KSP-APP-024** — Chaque application desk Tauri KSP possède un couple de ports Vite/HMR exclusif. L'allocation commence à `1430/1431` pour `ksp-app-config-desk` puis progresse par paires (`1432/1433`, `1434/1435`, etc.). Le port Vite est strict afin qu'une collision échoue explicitement au lieu de sélectionner silencieusement un autre port. - **KSP-APP-024** — Chaque application desk Tauri KSP possède un couple de ports Vite/HMR exclusif. L'allocation commence à `1430/1431` pour `ksp-app-config-desk` puis progresse par paires (`1432/1433`, `1434/1435`, etc.). Le port Vite est strict afin qu'une collision échoue explicitement au lieu de sélectionner silencieusement un autre port.
- **KSP-APP-025** — npm est utilisé directement pour installer ou mettre à jour les dépendances frontend (`npm i -D ...`). Le cycle normal de développement/build d'une application Tauri passe par les commandes Tauri, qui déclenchent les scripts npm configurés via `beforeDevCommand`/`beforeBuildCommand`; les lockfiles frontend restent non versionnés. - **KSP-APP-025** — Dans `package.json`, les bibliothèques consommées par le bundle applicatif appartiennent à `dependencies`; les outils de build/développement et paquets `@types/*` appartiennent à `devDependencies`. npm est utilisé directement uniquement pour installer ou mettre à jour ces dépendances. Le cycle normal de développement/build passe par Tauri, qui déclenche les scripts npm configurés via `beforeDevCommand`/`beforeBuildCommand`; les lockfiles frontend restent non versionnés.
- **KSP-APP-026** — KSP étant un workspace Rust multi-app, les commandes Tauri lancées depuis la racine sélectionnent explicitement la configuration de l'application avec `-c crates/<app>/tauri.conf.json` (par exemple `cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json`). Après une installation npm effectuée depuis `crates/<app>`, l'opérateur revient à la racine du workspace avant le cycle Cargo/Tauri.
## Data plane / control plane ## Data plane / control plane