# CHANGELOG — ks-wallet ## `0.5.2-pre.003` - fixe et documente dans `docs/NATIVE_FORMAT.md` le layout binaire strict `.kswallet` version `1` ; - sélectionne Argon2id v19 et XChaCha20-Poly1305 comme KDF/AEAD du format v1 sans encore traiter de mot de passe ; - retient comme profil KDF d'écriture par défaut 64 MiB, 3 passes, 4 lanes, sel 16 octets et sortie 32 octets, avec bornes anti-DoS ; - fixe le payload secret v1 à la keypair Solana brute de 64 octets et le ciphertext/tag à exactement 80 octets, pour une taille totale `.kswallet` de 193 à 256 octets ; - ajoute le décodage/validation internes stricts pour magic/version, flags, IDs crypto, paramètres KDF, pubkey, alias, sel, nonce et ciphertext ; - réserve header + alias + sel + nonce comme données authentifiées de l'AEAD pour `pre.004` ; - enrichit `WalletFileHandle` de la pubkey déclarée et de la version du format sans exposer le chemin ; - ajoute une lecture bornée avant allocation et rejette truncation, trailing bytes et croissance concurrente du fichier ; - ajoute les tests du décodage strict, des bornes KDF/ciphertext, de l'alias et de la réouverture bornée ; - laisse volontairement l'encodage de création, la publication atomique, le password, la dérivation Argon2id, l'appel AEAD et la capacité de signature ouverts à `pre.004`. ### `pre.003-delta-fix-001` - déplace la spécification normative de `ks-wallet/NATIVE_FORMAT.md` vers `docs/NATIVE_FORMAT.md` et aligne son tableau de layout pour une lecture Markdown plus claire ; - corrige les tests `native.rs` pour respecter la règle `super::Item` sur les éléments privés du module parent ; - retire de `pre.003` le code d'encodage/publication et les defaults KDF préparés prématurément pour `pre.004`, afin de ne conserver aucun dead code ni import inutilisé ; - borne `pre.003` au décodage/validation stricts et à la lecture nécessaire au scan, sans changer le layout v1 documenté. ### `pre.003-delta-fix-002` - corrige les fixtures de tests `WalletManager::scan()` afin que les répertoires temporaires utilisés sous Unix soient explicitement privés en mode `0700` ; - conserve inchangée la validation runtime qui refuse un répertoire wallet accessible au groupe ou aux autres utilisateurs ; - corrige les deux échecs `scan_is_non_recursive_and_filters_by_native_extension` et `explicit_file_inspection_accepts_path_outside_configured_directory` sans assouplir le contrat de sécurité. ### `pre.003-delta-fix-003` - corrige la fixture du test externe `crate_root_exposes_multi_wallet_discovery_without_path_disclosure` afin que son répertoire temporaire respecte lui aussi le mode Unix `0700` exigé par `WalletManager::scan()` ; - ne modifie aucune validation runtime, aucun codec `.kswallet` et aucune surface publique ; - complète le correctif de permissions de `fix-002` sur le dernier test externe qui dépendait encore de l'umask de la machine. ## `0.5.2-pre.002` - ajoute `WalletManager` pour la découverte non récursive des `.kswallet` dans le répertoire configuré et le lookup par alias ; - ajoute `WalletManager::inspect_file()` pour inspecter explicitement un `.kswallet` situé hors du store sans modifier la configuration ni l'enregistrer automatiquement ; - ajoute `WalletFileHandle`, handle opaque dont le chemin local reste privé et absent de `Debug` ; - introduit le préambule d'identification natif minimal `KSWALLET` + version `u16` little-endian `1`, sans définir encore le payload, KDF ou AEAD ; - ajoute `WalletIdentity` et `WalletPersistence`, et transforme `WalletSummary` en alias de compatibilité vers l'identité non sensible ; - retire le chemin de stockage de `WalletSummary` et du `Debug` de `TemporaryWallet` ; - conserve les wallets temporaires et la frontière `solana_signer::Signer` existante ; - externalise la caractérisation du legacy dans `tests/legacy_characterization.rs` avec fixture synthétique, erreurs, permissions, symlink et refus d'écrasement ; - ajoute `tests/public_api.rs` pour figer la façade crate-root multi-wallet et l'absence de chemin dans le `Debug` du handle ; - ne crée encore aucun `.kswallet` réel et n'introduit aucun mot de passe ou chiffrement persistant. ## `0.5.2-pre.001` - caractérise précisément le format legacy `.json`, ses permissions Unix, ses erreurs, sa publication directe dans le chemin final et ses limites d’atomicité/TOCTOU ; - inventorie les consommateurs `ks-wallet`, les usages directs de `solana_keypair` / `solana_signer`, les variables/configurations wallet et les workflows CLI qui dépendent encore du keypair Solana brut ; - définit le contrat fonctionnel `0.5.2` autour de la gestion multi-wallet par alias, des wallets temporaires/jetables, du mot de passe modifiable, de la signature sans exposition du secret et de l’import/export explicite ; - retient comme cible un conteneur natif binaire versionné `.kswallet`, sans fixer prématurément KDF/AEAD ou layout binaire ; - impose un mot de passe valide pour tout export contenant ou permettant de reconstruire le secret ; - définit la migration legacy comme import vers un nouveau `.kswallet` avec conservation de la pubkey, écriture atomique et rollback, sans réécriture destructive du `.json` ; - corrige README/USAGE/TODO afin d’aligner les objectifs sur ce contrat simplifié ; - ne modifie aucune API runtime, aucun fichier wallet et n’introduit encore aucun nouveau format persistant. ### `pre.001-delta-fix-001` - corrige la version Cargo de `0.5.2-pre.001` vers le SemVer valide `0.5.2-pre.1` ; - simplifie profondément le plan initial, retire l’exclusion erronée de l’export privé contrôlé et supprime l’hypothèse d’un alias principal universel par profil ; - formalise l’extension native `.kswallet`, le wallet temporaire et l’obligation de password pour tout export secret. ### `pre.001-delta-fix-002` - précise que `ks-wallet` découvrira les wallets persistants par scan borné des `.kswallet` dans son répertoire résolu, sans faire confiance au seul nom de fichier ; - distingue explicitement changement de password et rotation de keypair : le password rechiffre la même keypair, tandis qu’un nouveau secret Ed25519 implique une nouvelle pubkey ; - rend obligatoires l’import **et** l’export du format keypair JSON standard utilisé par les binaires Solana ; - ajoute une matrice de compatibilité à établir pour Phantom, Solflare, Backpack, Trust Wallet, Coinbase/Base et les autres wallets Solana techniquement documentés ; - borne `0.5.2` à un adaptateur wallet tiers d’exemple en plus du format Solana CLI obligatoire, avec report des autres adaptateurs faisables au TODO pour une version ultérieure non déterminée ; - interdit de synthétiser une recovery phrase supposée restaurer une keypair arbitraire lorsque la mnemonic/seed d’origine n’est pas disponible. ## `0.5.1-pre.002` - renomme `kb-wallet` en `ks-wallet` et `kb_wallet` en `ks_wallet` ; - aligne le target racine de tracing et les consommateurs sans modifier le format persistant des wallets, réservé à `0.5.2`. ## `0.5.0-pre.002` - caractérise le format persistant `0.4.8` comme format legacy à importer plutôt qu’à modifier in-place ; - prépare pour `0.5.2` un conteneur versionné, une migration atomique/rollback et la séparation identité/secret/verrouillage/signature ; - renforce le TODO sur l’absence de propagation de secrets vers configuration, logs, erreurs, diagnostics ou Tauri. ## `0.4.8-pre.013` - `pre.013-delta-fix-021` ajoute `TemporaryWallet::as_sync_signer()` afin de préserver le marqueur `Sync` du `solana_keypair::Keypair` lorsque le signataire traverse un futur async qui doit être `Send` ; - conserve `as_signer()` inchangé pour les consommateurs historiques et n’expose toujours aucun octet secret. ## 0.4.6 - alignement de la crate sur la version fonctionnelle bot3 `0.4.6` ; - clôture des tâches de migration applicables et report explicite des évolutions ultérieures dans le TODO. ## 0.1.0-pre.072 - reclassement du TODO selon les blocants avant `0.4.6`, les travaux `0.4.7`, les versions ultérieures et les dépendances conditionnelles. ## 0.1.0-pre.071 - réécriture du README avec indication explicite du statut d’ébauche ; - ajout du TODO détaillant les fonctionnalités prévues pour `0.5.x` ; - ajout du guide d’utilisation et de plusieurs exemples publics ; - clarification de la frontière entre signer, politique et exécution. ## 0.1.0-pre.062 - migration et renommage du wallet temporaire vers `ks-wallet` ; - conservation des alias validés, keypairs temporaires et stockage local ; - ajout des contrôles de permissions, type de fichier et effacement des buffers secrets ; - adaptation aux normes Rust 2024 et Khadhroony bot3.