v0.2.6-pre.014
This commit is contained in:
385
deltas/0.2.6/pre.014.md
Normal file
385
deltas/0.2.6/pre.014.md
Normal file
@@ -0,0 +1,385 @@
|
||||
<!-- file: deltas/0.2.6/pre.014.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.6-pre.014` — polish desktop partagé, splash kbot3 et lancement Tauri multi-app
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.2.6-pre.013-fix.002 appliquée
|
||||
workspace.package.version = 0.2.6-pre.13.fix.2
|
||||
```
|
||||
|
||||
La validation opérateur de la base est intégralement verte :
|
||||
|
||||
```text
|
||||
cargo fmt --all OK
|
||||
python3 scripts/audit_rust_workspace_rules.py clean
|
||||
cargo check --workspace OK
|
||||
cargo clippy --workspace --all-targets OK
|
||||
ksp-logging-lib ownership 2/2 OK
|
||||
Wallet Desk release_compliance 4/4 OK
|
||||
cargo test -p ksp-app-wallet-desk OK
|
||||
cargo test --workspace OK
|
||||
smoke Wallet Desk Devnet de pre.013 déjà validé sur fix.001
|
||||
```
|
||||
|
||||
## Type de livraison
|
||||
|
||||
```text
|
||||
ksp-general-0.2.6-pre.014.zip
|
||||
```
|
||||
|
||||
Le signal technique devient :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.6-pre.14
|
||||
commit = v0.2.6-pre.014
|
||||
```
|
||||
|
||||
`ksp-app-config-desk/package.json`, `ksp-app-config-desk/tauri.conf.json`, `ksp-app-wallet-desk/package.json` et `ksp-app-wallet-desk/tauri.conf.json` suivent `0.2.6-pre.14`.
|
||||
|
||||
Aucun tag prerelease.
|
||||
|
||||
## Objectifs
|
||||
|
||||
Cette tranche ne change aucun contrat Wallet métier. Elle ferme les défauts de gabarit desktop remontés avant la documentation finale :
|
||||
|
||||
```text
|
||||
en-têtes HTML Khadhroony normalisés
|
||||
splash sans scrollbars fenêtre
|
||||
splash avec fade-in / minimum / fade-out distincts
|
||||
messages généraux défilants en bas
|
||||
messages debug défilants en haut
|
||||
nom/titre central du splash non sélectionnable
|
||||
navigation Config Desk déplacée du header vers une sidebar
|
||||
palette Wallet Desk réalignée sur la référence claire Config Desk
|
||||
lancement Tauri multi-app corrigé et rendu durable
|
||||
prompt 0.2.7 intercalé pour le conteneur binaire .kspwallet
|
||||
```
|
||||
|
||||
## En-têtes HTML
|
||||
|
||||
Les quatre fichiers HTML des deux applications possèdent désormais les deux premières lignes normalisées :
|
||||
|
||||
```html
|
||||
<!-- file: ... -->
|
||||
<!-- version: N -->
|
||||
```
|
||||
|
||||
Les Wallet HTML, qui n'en possédaient pas, démarrent à `version: 1`.
|
||||
|
||||
## Splash partagé
|
||||
|
||||
Le comportement reprend les fonctionnalités génériques éprouvées dans kbot3 sans reprendre ses constantes codées en dur.
|
||||
|
||||
Les deux Desks utilisent :
|
||||
|
||||
```text
|
||||
KSP_DESK_SPLASH_FADE_IN_MS
|
||||
KSP_DESK_SPLASH_MINIMUM_MS
|
||||
KSP_DESK_SPLASH_FADE_OUT_MS
|
||||
```
|
||||
|
||||
Fallbacks :
|
||||
|
||||
```text
|
||||
fade-in = 300 ms
|
||||
minimum = 1200 ms pleinement visible
|
||||
fade-out = 300 ms
|
||||
```
|
||||
|
||||
Bornes :
|
||||
|
||||
```text
|
||||
fade-in / fade-out <= 10 000 ms
|
||||
minimum <= 60 000 ms
|
||||
```
|
||||
|
||||
La provenance continue d'être résolue uniquement par `ksp-config-lib` : process > `.env` > fallback.
|
||||
|
||||
Le lifecycle backend devient additif et explicite :
|
||||
|
||||
```text
|
||||
frontend ready
|
||||
-> fade-in + attente fade-in
|
||||
-> messages init + minimum pleinement visible
|
||||
-> fade-out + attente fade-out
|
||||
-> show/focus main
|
||||
-> destroy splash
|
||||
```
|
||||
|
||||
`expected_backend_lifecycle_ms` vaut donc :
|
||||
|
||||
```text
|
||||
fade_in + minimum + fade_out
|
||||
```
|
||||
|
||||
## Messages splash
|
||||
|
||||
Comme dans kbot3 :
|
||||
|
||||
- le bas du splash contient un feed de messages généraux avec statuts `info/warning/error/success` ;
|
||||
- le haut contient un feed diagnostic uniquement lorsque Rust est compilé avec `debug_assertions` ;
|
||||
- les deux zones auto-scrollent vers le dernier élément ;
|
||||
- leurs scrollbars internes sont masquées visuellement.
|
||||
|
||||
Le frontend ne reçoit aucun secret dans ces messages.
|
||||
|
||||
## Scrollbars et sélection
|
||||
|
||||
Wallet Desk chargeait auparavant `splash.scss` depuis le module TypeScript, alors que Config Desk le chargeait directement dans `<head>`. Le style pouvait donc arriver après le premier rendu WebView et laisser apparaître momentanément les scrollbars natives.
|
||||
|
||||
Les deux applications chargent maintenant `sass/splash.scss` directement dans le HTML avant JavaScript.
|
||||
|
||||
Le CSS fixe également :
|
||||
|
||||
```text
|
||||
html/body width/height 100%
|
||||
overflow hidden dès le premier rendu
|
||||
box-sizing border-box
|
||||
container max-width/max-height 100%
|
||||
overflow hidden sur le container
|
||||
scrolling borné aux feeds internes
|
||||
```
|
||||
|
||||
Le logo/image et le nom central appliquent `user-select: none`, `-webkit-user-select: none`, `-webkit-user-drag: none` et `pointer-events: none`.
|
||||
|
||||
## Harmonisation du main
|
||||
|
||||
La navigation Config Desk n'est plus placée horizontalement dans le header. Elle reprend le pattern apprécié de Wallet Desk :
|
||||
|
||||
```text
|
||||
header : identité + vue active
|
||||
main : sidebar pills verticale + contenu scrollable
|
||||
footer : inchangé
|
||||
```
|
||||
|
||||
Wallet Desk conserve sa sidebar mais son header revient sur la palette claire de référence de Config Desk au lieu du header sombre divergent.
|
||||
|
||||
Les `data-view` historiques de Config Desk restent inchangés ; aucune logique d'activation TypeScript n'est réécrite.
|
||||
|
||||
## Correction Tauri multi-app
|
||||
|
||||
Le défaut suivant a été reproduit conceptuellement à partir de la configuration actuelle :
|
||||
|
||||
```text
|
||||
commande lancée depuis la racine avec -c Config Desk
|
||||
-> Vite Config Desk démarre sur 1430
|
||||
-> backend Tauri découvert peut être Wallet Desk
|
||||
```
|
||||
|
||||
La cause est que Tauri v2 traite `-c/--config` comme une configuration **fusionnée avec la configuration par défaut déjà résolue** ; cette option n'est pas un sélecteur de crate/projet.
|
||||
|
||||
Le workflow KSP devient donc crate-local :
|
||||
|
||||
```bash
|
||||
(cd crates/ksp-app-config-desk && cargo tauri dev)
|
||||
(cd crates/ksp-app-wallet-desk && cargo tauri dev)
|
||||
```
|
||||
|
||||
et pour le build :
|
||||
|
||||
```bash
|
||||
(cd crates/<app> && cargo tauri build)
|
||||
```
|
||||
|
||||
Les hooks Tauri sont aussi explicités sous forme objet :
|
||||
|
||||
```json
|
||||
{
|
||||
"script": "npm run dev",
|
||||
"cwd": "."
|
||||
}
|
||||
```
|
||||
|
||||
et équivalent pour `npm run build`.
|
||||
|
||||
Les canaris vérifient maintenant le port, le hook/cwd et le nom du package Rust propre à l'application.
|
||||
|
||||
`KSP-APP-026`, `KSP-APP-029` et `KSP-APP-034` sont corrigées. Le lancement racine avec `-c crates/<app>/tauri.conf.json` est désormais interdit comme méthode de sélection multi-app.
|
||||
|
||||
Config Desk abandonne aussi son script standalone `check` afin d'aligner les deux applications sur la règle actuelle : l'opérateur n'exécute directement npm que pour installer/mettre à jour les dépendances ; Tauri possède les scripts dev/build.
|
||||
|
||||
## Intercalation de `0.2.7` — conteneur binaire `.kspwallet`
|
||||
|
||||
La question du JSON V1 lisible dans un éditeur est dissociée de `0.2.6` et du futur WebSocket.
|
||||
|
||||
Décision de cadrage :
|
||||
|
||||
```text
|
||||
Base64 seul NON
|
||||
conteneur binaire versionné à auditer/implémenter en 0.2.7
|
||||
compatibilité lecture JSON V1 obligatoire
|
||||
Wallet Desk modifié fonctionnellement NON attendu
|
||||
```
|
||||
|
||||
Base64 seul reste textuel, trivialement réversible, sans gain cryptographique et avec surcharge de taille.
|
||||
|
||||
`0.2.7` doit séparer :
|
||||
|
||||
```text
|
||||
container_version
|
||||
!=
|
||||
format_version logique/cryptographique
|
||||
```
|
||||
|
||||
Ainsi V1 conserve ses semantics VIEW/OWNER et un futur `format_version >= 2` reste disponible pour de vraies évolutions d'autorisation/crypto.
|
||||
|
||||
Le prompt ajouté est :
|
||||
|
||||
```text
|
||||
prompts/012-V0_2_7_START_PROMPT.md
|
||||
```
|
||||
|
||||
WebSocket et les releases suivantes sont décalés d'un numéro dans le roadmap/inventaire/séquence fonctionnelle globale.
|
||||
|
||||
## Futur second facteur
|
||||
|
||||
`docs/IDEAS.md` précise :
|
||||
|
||||
- `ksp-wallet-lib` restera propriétaire du format, des challenges et de la vérification ;
|
||||
- Wallet Desk devra évoluer lorsqu'un facteur est interactif : OTP, enrollment/recovery, hardware/WebAuthn, consentement externe ;
|
||||
- un seed TOTP stocké uniquement dans le même fichier ne doit pas être assimilé automatiquement à un second facteur indépendant contre un attaquant possédant ce fichier.
|
||||
|
||||
Aucun V2/OTP/2FA n'est implémenté dans cette tranche.
|
||||
|
||||
## Documentation globale
|
||||
|
||||
Exception justifiée à la règle « ROADMAP seulement au début/à la fin » : l'insertion d'une nouvelle release `0.2.7` change réellement la séquence globale. Sont donc mis à jour :
|
||||
|
||||
```text
|
||||
ROADMAP.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||
```
|
||||
|
||||
`CHANGELOG.md` reste inchangé et sera traité à la clôture.
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.2.6/pre.014.md
|
||||
prompts/012-V0_2_7_START_PROMPT.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
.env.example
|
||||
Cargo.toml
|
||||
ROADMAP.md
|
||||
crates/ksp-app-config-desk/README.md
|
||||
crates/ksp-app-config-desk/USAGE.md
|
||||
crates/ksp-app-config-desk/frontend/main.html
|
||||
crates/ksp-app-config-desk/frontend/sass/_app.scss
|
||||
crates/ksp-app-config-desk/frontend/sass/splash.scss
|
||||
crates/ksp-app-config-desk/frontend/splash.html
|
||||
crates/ksp-app-config-desk/frontend/ts/splash.ts
|
||||
crates/ksp-app-config-desk/package.json
|
||||
crates/ksp-app-config-desk/src/app_state.rs
|
||||
crates/ksp-app-config-desk/src/splash.rs
|
||||
crates/ksp-app-config-desk/src/tw_splash.rs
|
||||
crates/ksp-app-config-desk/tauri.conf.json
|
||||
crates/ksp-app-config-desk/tests/desktop_contract.rs
|
||||
crates/ksp-app-config-desk/unit_tests/splash.rs
|
||||
crates/ksp-app-wallet-desk/frontend/main.html
|
||||
crates/ksp-app-wallet-desk/frontend/sass/splash.scss
|
||||
crates/ksp-app-wallet-desk/frontend/splash.html
|
||||
crates/ksp-app-wallet-desk/frontend/ts/main.ts
|
||||
crates/ksp-app-wallet-desk/frontend/ts/splash.ts
|
||||
crates/ksp-app-wallet-desk/package.json
|
||||
crates/ksp-app-wallet-desk/src/app_state.rs
|
||||
crates/ksp-app-wallet-desk/src/splash.rs
|
||||
crates/ksp-app-wallet-desk/src/tw_splash.rs
|
||||
crates/ksp-app-wallet-desk/tauri.conf.json
|
||||
crates/ksp-app-wallet-desk/tests/desktop_contract.rs
|
||||
crates/ksp-app-wallet-desk/unit_tests/splash.rs
|
||||
docs/IDEAS.md
|
||||
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md
|
||||
docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md
|
||||
docs/rules/RULES_KSP.md
|
||||
prompts/000-README.md
|
||||
prompts/011-V0_2_6_START_PROMPT.md
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
```text
|
||||
aucun
|
||||
```
|
||||
|
||||
## Contrôles assistant
|
||||
|
||||
```text
|
||||
General Rust rule audit clean
|
||||
Rust export completeness audit 0 candidate
|
||||
KSP workspace Rust rule audit clean
|
||||
TOML / JSON parse clean
|
||||
HTML parse + IDs uniques
|
||||
splash TypeScript aucun diagnostic syntaxique local
|
||||
(imports non résolus attendus sans node_modules/bindings)
|
||||
CHANGELOG inchangé
|
||||
```
|
||||
|
||||
Cargo n'est pas disponible dans l'environnement de génération ; compilation, Clippy et tests restent autoritatifs côté opérateur.
|
||||
|
||||
## Validation opérateur requise
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test -p ksp-app-config-desk
|
||||
cargo test -p ksp-app-wallet-desk
|
||||
cargo test --workspace
|
||||
```
|
||||
|
||||
Validation visuelle Config Desk :
|
||||
|
||||
```bash
|
||||
KSP_DESK_SPLASH_FADE_IN_MS=1500 \
|
||||
KSP_DESK_SPLASH_MINIMUM_MS=6000 \
|
||||
KSP_DESK_SPLASH_FADE_OUT_MS=1500 \
|
||||
bash -lc 'cd crates/ksp-app-config-desk && cargo tauri dev'
|
||||
```
|
||||
|
||||
Vérifier :
|
||||
|
||||
```text
|
||||
backend = ksp-app-config-desk
|
||||
Vite = 1430 / HMR = 1431
|
||||
aucune scrollbar splash fenêtre
|
||||
fade-in puis minimum puis fade-out observables
|
||||
messages généraux en bas
|
||||
diagnostics en haut en debug
|
||||
titre central non sélectionnable
|
||||
navigation verticale dans le main
|
||||
```
|
||||
|
||||
Validation visuelle Wallet Desk :
|
||||
|
||||
```bash
|
||||
KSP_DESK_SPLASH_FADE_IN_MS=1500 \
|
||||
KSP_DESK_SPLASH_MINIMUM_MS=6000 \
|
||||
KSP_DESK_SPLASH_FADE_OUT_MS=1500 \
|
||||
KSP_WALLETS_DIRECTORY=var/wallet-desk-pre014 \
|
||||
bash -lc 'cd crates/ksp-app-wallet-desk && cargo tauri dev'
|
||||
```
|
||||
|
||||
Vérifier :
|
||||
|
||||
```text
|
||||
backend = ksp-app-wallet-desk
|
||||
Vite = 1432 / HMR = 1433
|
||||
aucune scrollbar splash fenêtre
|
||||
mêmes trois phases/messages
|
||||
titre central non sélectionnable
|
||||
header clair cohérent avec Config Desk
|
||||
fonctionnalités Wallet pre.013 non régressées
|
||||
```
|
||||
|
||||
**Ne pas exécuter `cargo tauri build` en `pre.014`.** Le build final reste réservé à `pre.015` et doit rester l'absolue dernière opération de validation de `0.2.6`.
|
||||
Reference in New Issue
Block a user