fix(ai): la liste des fournisseurs de l'assistant suit la configuration (BUG-043)
Le picker lit /api/ai/status une seule fois, à sa construction, et le panneau de l'assistant est un singleton monté pour toute la session : ajouter ou supprimer une clé API dans la configuration du projet laissait la liste des fournisseurs figée jusqu'à un rechargement de page. - ai.js : nouveau refreshAIPickers() qui reconstruit chaque picker monté dans son emplacement .ai-picker-slot (constante PICKER_SLOT_CLASS) ; le slot est conservé même sans fournisseur configuré, donc le premier fournisseur ajouté s'y monte aussi ; une sélection persistée dont le fournisseur n'est plus configuré est purgée de obsigate_ai_picker (retour au défaut, plus de modèle fantôme dans le déclencheur). - bookslm.js : l'emplacement .bookslm-picker-host porte la classe ai-picker-slot et reste dans la barre (replaceChildren au lieu de replaceWith). - config.js : refreshAIPickers() après saveAIKeys() et deleteAIKey(). - tests : +4 tests JSDOM (ajout/retrait dans la barre, premier montage dans un slot vide, purge de la sélection orpheline, câblage save/delete). Vérifié : tests frontend 66/66 (IA) + 9 suites JSDOM, validate-imports 36 modules, pytest 963 passed / 6 skipped, ruff 0, et contrôle navigateur (Playwright) sur l'instance de test — ajout de nvidia visible sans rechargement, retrait effectif + sélection réinitialisée.
This commit is contained in:
@@ -42,6 +42,19 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
`e`+accent correspond à une entrée d'index précomposée) et un chemin
|
||||
**préfixé par le nom du vault** (`TestVault/Recettes/Pizza Maison.md`) est
|
||||
résolu puis ouvert dans ce vault, le préfixe étant retiré.
|
||||
- **BUG-043 — Liste des fournisseurs de l'assistant non synchronisée avec la
|
||||
configuration** : ajouter ou supprimer une clé API dans la configuration du
|
||||
projet met désormais à jour **immédiatement** le menu Fournisseur de la barre
|
||||
latérale de l'assistant, sans recharger la page. Le picker ne lisait
|
||||
`/api/ai/status` qu'une fois, à sa construction, et le panneau de l'assistant
|
||||
est un singleton monté pour toute la session : la liste restait figée. Le
|
||||
nouveau `refreshAIPickers()` (`frontend/js/ai.js`) reconstruit chaque picker
|
||||
monté dans son emplacement `.ai-picker-slot` et est appelé après
|
||||
l'enregistrement (`saveAIKeys`) et la suppression (`deleteAIKey`) d'une clé
|
||||
(`frontend/js/config.js`). Un emplacement est conservé même sans fournisseur
|
||||
configuré, donc le **premier** fournisseur ajouté s'y monte aussi. Une
|
||||
sélection dont le fournisseur n'est plus configuré est purgée de
|
||||
`obsigate_ai_picker` (retour au défaut au lieu d'un modèle fantôme).
|
||||
|
||||
### Sécurité
|
||||
|
||||
|
||||
Reference in New Issue
Block a user