v0.2.6-pre.008
This commit is contained in:
115
deltas/0.2.6/pre.008.md
Normal file
115
deltas/0.2.6/pre.008.md
Normal file
@@ -0,0 +1,115 @@
|
||||
<!-- file: deltas/0.2.6/pre.008.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.6-pre.008` — import natif Solana CLI JSON / Base58
|
||||
|
||||
## Base et version
|
||||
|
||||
- Base : `0.2.6-pre.007-fix.002`.
|
||||
- Version Cargo : `0.2.6-pre.8`.
|
||||
- Commit attendu : `v0.2.6-pre.008`.
|
||||
- Aucun tag prerelease.
|
||||
|
||||
## Objet
|
||||
|
||||
Cette tranche matérialise l'import d'un keypair Solana externe vers un nouveau Wallet natif `.kspwallet` sans donner au frontend la propriété d'un chemin filesystem ni du contenu secret importé.
|
||||
|
||||
Les formats pris en charge sont les deux formats de transfert déjà possédés par `ksp-wallet-lib` :
|
||||
|
||||
- Solana CLI keypair JSON ;
|
||||
- keypair Solana Base58 canonique.
|
||||
|
||||
## Picker natif backend-only
|
||||
|
||||
`tauri-plugin-dialog` est ajouté comme dépendance Rust workspace et initialisé par Wallet Desk. Le frontend ne dépend pas de `@tauri-apps/plugin-dialog` et aucune permission guest Dialog/FS n'est ajoutée.
|
||||
|
||||
Le frontend transmet uniquement le format attendu à `inspect_import_source`. Rust ouvre le picker natif, convertit la sélection en chemin local et ne renvoie jamais ce chemin par IPC.
|
||||
|
||||
Une annulation du picker est une sortie normale sans source staged.
|
||||
|
||||
## Staging borné et secret
|
||||
|
||||
`wallet_import.rs` lit uniquement un fichier régulier non-symlink et applique avant parsing les bornes publiques de `ksp-wallet-lib` :
|
||||
|
||||
- `KSPWALLET_TRANSFER_MAX_SOLANA_CLI_JSON_BYTES` ;
|
||||
- `KSPWALLET_TRANSFER_MAX_BASE58_BYTES`.
|
||||
|
||||
Les octets sont conservés dans `Zeroizing<Vec<u8>>` côté Rust. La validation utilise `ksp-wallet-lib::inspect_wallet_transfer` et la projection frontend ne contient que :
|
||||
|
||||
- format ;
|
||||
- Pubkey dérivée ;
|
||||
- basename de la source.
|
||||
|
||||
Le parent du chemin, les octets du keypair et tout secret restent hors IPC/logs.
|
||||
|
||||
## Import vers `.kspwallet`
|
||||
|
||||
`import_wallet` consomme atomiquement la source staged et appelle `ksp-wallet-lib::import_wallet_transfer_v1` en mémoire. Le fichier destination :
|
||||
|
||||
- est dérivé uniquement de la racine Wallet effective possédée par Config et du filename root-scoped validé ;
|
||||
- hérite des garanties no-clobber de Wallet ;
|
||||
- reçoit un nouveau password OWNER et, optionnellement, un nouveau password VIEW ;
|
||||
- peut recevoir alias et note initiale protégés ;
|
||||
- conserve la même identité Solana que la source validée.
|
||||
|
||||
Après succès, le `WalletOwner` importé est conservé uniquement dans `AppState` et la session devient OWNER ouverte. La source staged est consommée et zéroïsée à sa destruction.
|
||||
|
||||
## Frontend
|
||||
|
||||
La vue `Create / Import` ajoute :
|
||||
|
||||
- sélection du format de transfert ;
|
||||
- bouton d'ouverture du picker natif ;
|
||||
- aperçu sûr basename / format / Pubkey ;
|
||||
- filename `.kspwallet` destination ;
|
||||
- alias optionnel ;
|
||||
- password OWNER ;
|
||||
- VIEW optionnel + password VIEW ;
|
||||
- note initiale optionnelle ;
|
||||
- action d'import.
|
||||
|
||||
Changer le format purge la projection et la source staged Rust. Après import ou erreur, les inputs sensibles et la projection de source sont purgés ; une nouvelle sélection native est nécessaire après un échec d'import.
|
||||
|
||||
## Sécurité / frontières
|
||||
|
||||
- aucun chemin source dans les DTO frontend ;
|
||||
- aucun contenu keypair dans les DTO ou logs ;
|
||||
- aucun accès filesystem guest ;
|
||||
- aucun dialogue navigateur natif ;
|
||||
- aucune dépendance npm Dialog ;
|
||||
- le frontend ne choisit jamais la destination absolue ;
|
||||
- `ksp-wallet-lib` reste propriétaire du décodage/import et de la publication no-clobber.
|
||||
|
||||
## Fichiers principaux
|
||||
|
||||
Ajouts :
|
||||
|
||||
- `crates/ksp-app-wallet-desk/src/wallet_import.rs` ;
|
||||
- `crates/ksp-app-wallet-desk/unit_tests/wallet_import.rs` ;
|
||||
- `deltas/0.2.6/pre.008.md`.
|
||||
|
||||
Modifications principales :
|
||||
|
||||
- dépendances/version workspace et Wallet Desk ;
|
||||
- `AppState` pour staging/import ;
|
||||
- commandes/plugins Tauri ;
|
||||
- shell Create / Import et bindings frontend ;
|
||||
- canaris desktop contract/security ;
|
||||
- plan `0.2.6`, séquence fonctionnelle et roadmap.
|
||||
|
||||
## Validation opérateur attendue
|
||||
|
||||
```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-pre008 \
|
||||
cargo tauri dev -c crates/ksp-app-wallet-desk/tauri.conf.json
|
||||
```
|
||||
|
||||
Ne pas exécuter `cargo tauri build` dans cette tranche.
|
||||
Reference in New Issue
Block a user