v0.2.6-pre.012
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md -->
|
||||
<!-- version: 26 -->
|
||||
<!-- version: 27 -->
|
||||
|
||||
# Plan `0.2.6` — Wallet Desk
|
||||
|
||||
@@ -1597,20 +1597,58 @@ nouveau VIEW password accepté
|
||||
Pubkey / alias / notes / OWNER inchangés
|
||||
```
|
||||
|
||||
Validation opérateur `pre.011` : **verte** le 21 août 2026. `fmt`, audit Rust KSP, `cargo check --workspace`, Clippy sans warning, tests Wallet Desk et workspace complet passent. Le runtime Tauri confirme `view_enabled=true -> strong disable -> false`, puis `strong recreate -> true`; l'ancien credential VIEW est refusé après recreate et le nouveau est accepté.
|
||||
|
||||
### `pre.012` — export OWNER fichier
|
||||
|
||||
Objectifs :
|
||||
Cette tranche expose uniquement l'adapter fichier déjà possédé par `WalletOwner`; Wallet Desk ne sérialise jamais lui-même la keypair.
|
||||
`WalletTransferFormatDto` quitte `wallet_import.rs` pour un module Desk commun `wallet_transfer.rs`, puisque le même contrat est désormais consommé par import et export. Les codes IPC restent inchangés.
|
||||
|
||||
Contrat retenu :
|
||||
|
||||
```text
|
||||
plugin Dialog save minimal
|
||||
choix CLI JSON/Base58
|
||||
confirmation OWNER
|
||||
export_transfer_file
|
||||
no-clobber
|
||||
aucun export texte/clipboard
|
||||
leak audit ciblé
|
||||
OWNER session requise avant ouverture du save picker
|
||||
frontend -> Rust : format uniquement
|
||||
Rust -> native save picker : destination locale
|
||||
Rust -> WalletOwner::export_transfer_file(destination, format)
|
||||
Wallet -> création atomique no-clobber du fichier secret
|
||||
Rust -> frontend : wallet_id + format + basename uniquement
|
||||
```
|
||||
|
||||
Formats disponibles :
|
||||
|
||||
```text
|
||||
Solana CLI JSON
|
||||
Solana keypair Base58 complet
|
||||
```
|
||||
|
||||
Le frontend ne reçoit jamais :
|
||||
|
||||
```text
|
||||
chemin complet de destination
|
||||
bytes de keypair
|
||||
Base58 de keypair
|
||||
JSON de keypair
|
||||
password OWNER
|
||||
handle WalletOwner
|
||||
```
|
||||
|
||||
L'opération réutilise `OwnerOperation` afin de déplacer le handle OWNER hors du mutex pendant l'écriture async. Une annulation du picker ne touche pas la session. Une erreur d'I/O ou `destination_exists` restaure la session OWNER ; la primitive Wallet conserve le no-clobber et les permissions privées best-effort sur Unix.
|
||||
|
||||
UX :
|
||||
|
||||
```text
|
||||
format CLI JSON / Base58
|
||||
modal Bootstrap avertissant qu'il s'agit d'une keypair non chiffrée
|
||||
confirmation -> save picker natif Rust
|
||||
aucun export texte
|
||||
aucun clipboard
|
||||
aucun chemin arbitraire fourni par le frontend
|
||||
status final avec basename seulement
|
||||
```
|
||||
|
||||
Le nom de destination et le contenu secret ne sont pas journalisés. Les logs persistants ne contiennent que `wallet_id`, format et statut de l'opération.
|
||||
|
||||
### `pre.013` — intégration, compliance, sécurité et smoke
|
||||
|
||||
Objectifs :
|
||||
|
||||
Reference in New Issue
Block a user