v0.1.4-pre.005
This commit is contained in:
348
deltas/0.1.4/pre.005.md
Normal file
348
deltas/0.1.4/pre.005.md
Normal file
@@ -0,0 +1,348 @@
|
||||
<!-- file: deltas/0.1.4/pre.005.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.4-pre.005 — gabarit frontend Vite/TypeScript/SCSS et tracing Tauri
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
0.1.4-pre.4.fix.1
|
||||
```
|
||||
|
||||
à :
|
||||
|
||||
```text
|
||||
0.1.4-pre.5
|
||||
```
|
||||
|
||||
L'identifiant documentaire de livraison est :
|
||||
|
||||
```text
|
||||
0.1.4-pre.005
|
||||
```
|
||||
|
||||
## 1. Dépendance Rust tracing Tauri
|
||||
|
||||
Le workspace ajoute :
|
||||
|
||||
```toml
|
||||
tauri-plugin-tracing = { version = "^0.3" }
|
||||
```
|
||||
|
||||
La version actuelle auditée est `0.3.4`.
|
||||
|
||||
`ksp-app-config-desk` consomme la dépendance avec :
|
||||
|
||||
```toml
|
||||
tauri-plugin-tracing.workspace = true
|
||||
```
|
||||
|
||||
`tauri.rs` conserve un builder progressif :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
dev -> vite
|
||||
build -> tsc && vite build
|
||||
```
|
||||
|
||||
Première installation après application du delta :
|
||||
|
||||
```bash
|
||||
cd crates/ksp-app-config-desk
|
||||
npm i -D
|
||||
```
|
||||
|
||||
Le cycle normal reste ensuite :
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```text
|
||||
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à :
|
||||
|
||||
```text
|
||||
../../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** :
|
||||
|
||||
```text
|
||||
../../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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 à :
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user