12 KiB
Delta 0.2.6-pre.014 — polish desktop partagé, splash kbot3 et lancement Tauri multi-app
Base requise
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 :
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
ksp-general-0.2.6-pre.014.zip
Le signal technique devient :
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 :
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 :
<!-- 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 :
KSP_DESK_SPLASH_FADE_IN_MS
KSP_DESK_SPLASH_MINIMUM_MS
KSP_DESK_SPLASH_FADE_OUT_MS
Fallbacks :
fade-in = 300 ms
minimum = 1200 ms pleinement visible
fade-out = 300 ms
Bornes :
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 :
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 :
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 :
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 :
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 :
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 :
(cd crates/ksp-app-config-desk && cargo tauri dev)
(cd crates/ksp-app-wallet-desk && cargo tauri dev)
et pour le build :
(cd crates/<app> && cargo tauri build)
Les hooks Tauri sont aussi explicités sous forme objet :
{
"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 :
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 :
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 :
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-librestera 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 :
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
deltas/0.2.6/pre.014.md
prompts/012-V0_2_7_START_PROMPT.md
Fichiers modifiés
.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
aucun
Contrôles assistant
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
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 :
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 :
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 :
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 :
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.