# CHANGELOG — ks-config ## `0.5.3-pre.002-delta-fix-001` - aligne tous les contrats/types publics de `ks-config` sur la règle workspace imposant `crate::Item` depuis leur crate propriétaire, y compris dans leur module de déclaration et dans les tests ; - aligne les appels aux fonctions publiques réexportées sur le crate-root et ajoute le canari `KH_CFG015` pour empêcher le retour d'une référence locale non qualifiée à un type public de configuration. ## `0.5.3-pre.002` - remplace les contrats runtime `PostgresConfig`/`SqliteConfig` par `DatabaseConfig { enabled, backend, backend_options }` afin que `ks-config` ne connaisse plus les paramètres d'un moteur non sélectionné ; - limite la validation store à la structure backend-agnostique et laisse `ks-store` interpréter/valider les options concrètes, sans modifier les conventions `KS_SECRET_*` ni la résolution des placeholders ; - aligne `store.config.json`, son exemple, le schéma spécialisé, le schéma runtime et les fixtures de configuration sur ce contrat opaque. ## `0.5.2-pre.006-delta-fix-007` - corrige le test de séparation des répertoires wallet afin qu’il résolve d’abord `${KS_WALLETS_DIRECTORY:-wallets}` comme le chemin de chargement runtime ; - rend le test indépendant d’un éventuel override `KS_WALLETS_DIRECTORY` en vérifiant la relation `temporary_wallet_dir = wallet_dir/temporary/local_devnet` plutôt qu’une racine littérale. ## `0.5.2-pre.006-delta-fix-006` - réinclut dans le delta `config/wallet.config.json` et `config/exemples/example.wallet.config.json`, omis par erreur dans `fix-005`, afin que leurs sous-répertoires temporaires `temporary/...` correspondent au contrat runtime résolu ; - précise dans le schéma wallet que `wallets_directory` est la racine persistante `.kswallet` et que `profile.directory` désigne les wallets/fixtures temporaires du profil. ## `0.5.2-pre.006-delta-fix-005` - sépare le store natif persistant `wallet_dir` de `temporary_wallet_dir` : les `.kswallet` utilisent désormais directement la racine `wallets_directory`, tandis que les wallets et keypairs de fixtures restent sous le sous-répertoire temporaire du profil ; - propage les deux chemins dans le contrat runtime résolu et son schéma sans déplacer automatiquement les fichiers existants. ## `0.5.2-pre.006` - ajoute `wallet_alias` aux profils du document wallet comme sélection optionnelle/nullable d'un wallet natif persistant, sans password ni matériau secret dans `ks-config` ; - propage cette sélection non sensible vers le contrat runtime `WalletConfig` et valide l'alias avec les mêmes bornes que `ks-wallet` ; - garde les documents `0.5.1` compatibles lorsque `wallet_alias` est omis, conserve `null` comme absence explicite de sélection et documente un exemple de sélection persistante. ## `0.5.1-pre.009` - réconcilie schémas, exemples sous `config/exemples/`, guide de configuration et documentation de crate avant archivage du plan `0.5.1` ; - retire du TODO la tâche de clôture `pre.009` désormais terminée, sans modifier les contrats runtime. ## `0.5.1-pre.008` - Fix: use `Result::is_err()` for execution and wallet schema validation checks, removing the Clippy redundant-pattern warnings without changing fail-closed behavior. - retire `ts-rs` de `ks-config`, supprime ses bindings TypeScript générés et réserve les projections frontend aux DTO des applications propriétaires ; - rend les contrats source/runtime susceptibles de contenir des valeurs résolues non sérialisables et non `Debug` par défaut, et retire les sérialiseurs publics de `AppConfig` ; - ajoute la classification `Secret > Internal > Public`, y compris pour les chaînes composées contenant plusieurs placeholders d'environnement, ainsi qu'une représentation diagnostic générique qui ne révèle jamais les valeurs secret/internal ; - rend la section `application` des compositions opaque pour `ks-config` et fournit un helper générique de validation JSON Schema pour les fragments possédés par les binaires ; - durcit les erreurs de validation/décodage afin de ne plus recopier les valeurs rejetées, notamment pour les URLs et fragments contenant potentiellement des secrets ; - ajoute un test d'API externe et des canaris de non-divulgation pour les helpers de sensibilité. ## `0.5.1-pre.007` - extrait store, wallet et execution vers `config/store.config.json`, `config/wallet.config.json` et `config/execution.config.json`, chacun avec schéma, exemple et `default_profile` ; - place `wallets_directory` hors profils wallet et déplace les autorisations `*_send_enabled` dans la politique execution ; - remplace `app.auto_reconnect_default` par des classes de defaults WebSocket nommées dans le transport, avec overrides propres à chaque endpoint ; - permet la composition directe des defaults partagés sans fichier applicatif et valide les références de profils d’une composition avant production du contrat runtime ; - supprime la nécessité d’une composition par défaut propre à `ks-pipeline-demo-scenarios`. ## `0.5.1-pre.006` - remplace le document source monolithique `app.config.json` par des compositions propres aux binaires, dont `config/kb-app-demo-desktop.default.config.json` et `config/ks-pipeline-demo-scenarios.default.config.json` ; - extrait les endpoints HTTP/WebSocket vers `config/transport.config.json` et les listeners vers `config/listeners.config.json`, chacun avec schéma et exemple dédiés sous `config/schemas/` / `config/` ; - conserve `AppConfig`/`ProfileConfig` comme contrat runtime résolu transitoire, reconstruit depuis la composition et les documents partagés ; - ajoute les APIs typées de chargement, validation et sélection de profils de composition, transport et listeners ; - ajoute un test d’API externe garantissant que composition, transport et listeners restent accessibles uniquement via les exports crate-root ; - réserve le split store/data, wallet, execution et configuration spécifique des binaires à `pre.007`, avant les surfaces publiques sûres de `pre.008`. ## `0.5.1-pre.005` - retire définitivement le bloc `logging` de `ProfileConfig` et du schéma général ; - aligne le contrat général et le desktop sur `config/app.config.json`, validé par `config/schemas/app.config.schema.json` ; - conserve des profils applicatifs indépendants du document logging possédé par `ks-logging` ; - ajoute `config/example.app.config.json` comme exemple minimal conforme. ## `0.5.1-pre.004` - migre le sélecteur d'environnement vers `KS_ENV_FILE` et les placeholders PostgreSQL/Helius vers `KS_SECRET_*` ; - aligne `.env.example`, `config/example.config.json`, les tests et la documentation sur le namespace Khadhroony Solana ; - ne met pas encore en œuvre le camouflage ou la propagation de sensibilité, réservés à la frontière runtime/public après le split config/logging. ## `0.5.1-pre.003` - aligne `config/example.config.json` sur les identités hiérarchiques `ks-lib-*` afin que les routes de logging de référence suivent les producteurs renommés ; - ne modifie ni le schéma de configuration ni les variables d'environnement, réservées aux prereleases suivantes. ## `0.5.1-pre.002` - renomme `kb-config` en `ks-config` et l'identifiant Rust `kb_config` en `ks_config` ; - met à jour les chemins TS-RS source vers `frontend/ts/bindings/ks_config` sans livrer les bindings générés ; - conserve le format de configuration et les variables d'environnement historiques jusqu'aux prereleases dédiées. ## `0.5.0-pre.002` - confirme pour `0.5.1` le split de la configuration générale et du logging en documents et schémas distincts ; - fixe la convention cible `KS_SECRET_*` / `KS_PUBLIC_*` / `KS_*` pour les variables d’environnement propres au projet ; - documente la séparation future source/runtime/public et interdit l’usage diagnostic du JSON résolu complet ; - précise les tâches de migration, tests externes et non-divulgation sans modifier encore le contrat runtime `0.4.8`. ## 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.075 - validation statique que `ks-config` reste l’unique propriétaire direct de `dotenvy` ; ## 0.1.0-pre.073 - ajout du guide transversal [`docs/guides/CONFIGURATION.md`](../docs/guides/CONFIGURATION.md) ; ## 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.070 - enrichissement de `USAGE.md` avec plusieurs exemples couvrant les familles d’API publiques significatives. ## 0.1.0-pre.069 ### Documentation - création de `TODO.md`, `USAGE.md` et du changelog détaillé ; - réécriture du README selon l’architecture bot3 ; - suppression de la section `Non publié`, incompatible avec le rôle chronologique du changelog ; - retrait des limitations et travaux futurs, désormais maintenus dans `TODO.md` ou `USAGE.md` selon leur nature ; - clarification de la séparation entre historique de prerelease et objectifs futurs ; - réécriture de `TODO.md` sous forme de tâches uniquement ; - correction des exemples de `USAGE.md` afin de ne pas utiliser l’opérateur `?`. ## 0.1.0 ### Migré - migration et consolidation de la configuration typée bot2 dans `ks-config` ; - conservation du schéma JSON, des profils, endpoints, listeners, paramètres de stockage, logging, wallet et exécution. ### Modifié - adoption des règles Rust 2024 et Khadhroony ; - export TypeScript contrôlé des types destinés au frontend ; - validation structurée par `ks_core::Error`. ### Validation - validation de l’exemple contre le schéma ; - tests de round-trip, profils actifs, placeholders, URLs, rôles et invariants opérationnels.