BUG-012: le menu @ est toujours rendu et _mentionVault() retombe sur le vault de contexte puis le premier vault disponible. #82: suppression des intitules Fournisseur & modele / Fournisseur:, description du contexte General en info-bulle, placeholder retire, bouton Envoyer en emoji, indicateur d'activite (envoi/reception/outils/confirmation/succes/echec), SW_VERSION v5.
4.7 KiB
4.7 KiB
#82 — Assistant IA — Section « Fournisseur & modèle » compacte
Statut : ✅ Livré (en attente de validation utilisateur) Effort : 1 jour | Impact : 🟢 Références : Roadmap · Assistant IA #81 · Changelog
- Description : rendre la barre de sélection du modèle de l'assistant IA plus discrète tout
en conservant les informations utiles :
- Capacités via bulle — la liste complète des types d'endpoints (Chat, Embeddings, Rerank, Images, Video, Audio Speech, Audio Transcriptions, Vision) n'est plus affichée en permanence. Un bouton ⓘ révèle une bulle d'information au survol, au clic ou par appui long (mobile).
- Recherche de modèle — le
<select>natif est remplacé par une liste déroulante compacte dotée d'un champ de recherche qui filtre les modèles en tapant (insensible à la casse et aux accents). - Compatibilité — un
<select class="ai-picker-model">masqué reste présent (source de vérité) pour les commandes admin/modelet l'état persistéobsigate_ai_picker.
A. Picker partagé — ✅ livré
frontend/js/ai.js:buildAIPickerUI()réécrit (provider compact + combobox modèle + bulle capacités). Le picker reste partagé par l'assistant (bookslm.js) et la barre d'édition IA.renderCapabilityList()conservé et affiché dans la bulle (le panneau de configuration#cfg-ai-default-model-capscontinue de l'utiliser directement).- Fermeture des popovers au clic extérieur via un unique listener délégué (pas de fuite).
- i18n FR/EN (
ai.model_search,ai.model_info).
B. Correctifs associés — ✅ livré
- BUG-007 — détection
/et@Unicode + filtrage insensible aux accents + navigation clavier ↑/↓ fiabilisée (jeton de séquence,scrollIntoView). - BUG-008 — contexte ad-hoc
@pris en compte en mode Général côté backend (backend/bookslm_routes.py) et recherche de mention survault=allsans vault courant.
C. Tests — ✅ livré
tests/frontend/ai.test.mjs: filtrage accentué, mentions accentuées, navigation ↑/↓, recherche de modèle + bulle de capacités, plafonnement des longues listes (OpenRouter).tests/test_bookslm.py: contexte ad-hoc en mode Général (/chat).
D. Durcissement anti-cache (BUG-009) — ✅ livré
- Locales chargées avec
cache: 'no-store'(frontend/js/i18n.js) : plus de clés brutes affichées à cause d'unfr.jsonobsolète en cache HTTP. SW_VERSIONincrémenté (frontend/sw.js) pour purger les caches du service worker.- Styles critiques du picker appliqués en ligne (popover absolu, liste en colonne, options
display:block) pour rester corrects même sistyle.cssest servi depuis un cache. - Rendu plafonné à 200 modèles (
MODEL_RENDER_LIMIT) + indicateurai.model_more.
E. Lisibilité & contexte @ (BUG-010, BUG-011) — ✅ livré
- Popover modèle aligné à droite du déclencheur (
right: 0), largeur 340 px bornée à100vw - 24px: ne dépasse plus le bord de la sidebar ancrée à droite (BUG-011). - Noms de modèles sur plusieurs lignes (
overflow-wrap: anywhere, police 0,78 rem) avec attributtitlecomplet. - La sélection
@capture le vault renvoyé par/api/tree-search;_contextVault()propage ce vault aux requêtes/contextet/chatet les recherches suivantes restent dans ce vault (BUG-010, mode Général).
F. Barre latérale épurée & suivi visuel (BUG-012, #82) — ✅ livré
- Section « Fournisseur & modèle » sans intitulés (ni titre de section, ni « Fournisseur : »).
- Description du contexte Général retirée de l'affichage (bandeau de statut masqué) et
exposée via
titleau survol de l'en-tête. - Placeholder « Posez une question sur ces documents… » retiré ; bouton « Envoyer » remplacé par l'emoji compact ✈️.
- Indicateur d'activité (
.bookslm-activity) affichant le workflow : envoi, réception, outil en cours, attente de confirmation, terminé, échec (ai.activity_*). @: le menu est toujours rendu et_mentionVault()retombe sur le vault de contexte puis le premier vault disponible (BUG-012).
G. Points d'attention
- La table de capacités reste statique (
backend/model_capabilities.py) : un modèle inconnu retombe sur le défaut du fournisseur. - Le select masqué est conservé uniquement pour la rétro-compatibilité ; ne pas le supprimer sans
migrer
_cmdSwitchModel/_applyPickerSelectiondansfrontend/js/bookslm.js.