# Delta `0.2.6-pre.011` — strong VIEW disable/recreate ## Objet Exposer dans Wallet Desk l'administration forte de la capability VIEW déjà fournie par `ksp-wallet-lib` : suppression forte de VIEW et recréation avec une nouvelle autorité, exclusivement depuis une session OWNER. ## Changements - `workspace.package.version` passe à `0.2.6-pre.11` ; - ajout de `disable_wallet_view` : - OWNER-only ; - délègue à `WalletOwner::disable_view` ; - retire le slot VIEW et rekey les metadata ; - conserve la session OWNER avec `view_enabled=false` ; - ajout de `recreate_wallet_view` : - OWNER-only ; - délègue à `WalletOwner::recreate_view` ; - génère une nouvelle metadata key, un nouveau slot VIEW et un nouveau credential ; - fonctionne depuis VIEW disabled ou enabled ; - conserve la session OWNER avec `view_enabled=true` ; - `OwnerOperationContext` distingue le `view_enabled` réservé avant mutation du `result_view_enabled` réinstallé après succès ; - ajout de `WalletViewSecurityStatusDto`, projection IPC minimale sans identité protégée ni secret ; - UI Security : - carte d'administration forte VIEW ; - modal Bootstrap pour disable ; - modal Bootstrap pour recreate ; - confirmation du nouveau password uniquement côté frontend ; - rafraîchissement immédiat du DataTable et de l'état `VIEW enabled/disabled` ; - `wallet.state_conflict` conserve la politique existante : purge du handle OWNER stale, réinspection Locked et réautorisation OWNER obligatoire ; - canaries contract/security étendus à la surface strong VIEW ; - `ROADMAP.md`, `CHANGELOG.md` et `docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md` restent inchangés. ## Sécurité `disable_view` et `recreate_view` ne sont jamais accessibles depuis VIEW. Le nouveau password de recreate est converti en `ViewPassword` côté Rust et n'est ni projeté ni loggé. Les secrets Config restent inchangés. La révocation forte porte sur l'état courant/futur : une copie historique déjà détenue reste explicitement hors garantie. ## Validation opérateur ```bash cargo fmt --all python3 scripts/audit_rust_workspace_rules.py cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-app-wallet-desk cargo test --workspace KSP_WALLETS_DIRECTORY=var/wallet-desk-pre011 \ cargo tauri dev -c crates/ksp-app-wallet-desk/tauri.conf.json ``` Runtime : OWNER -> strong disable -> Lock -> VIEW impossible ; OWNER -> strong recreate avec nouveau password -> Lock -> ancien VIEW refusé / nouveau VIEW accepté ; vérifier Pubkey, alias, notes et OWNER inchangés.