feat(ai): assistant AI multi-contexte + ergonomie sidebar et clavier
CI / lint (push) Successful in 1m12s
CI / security (push) Successful in 43s
CI / test (push) Successful in 1m10s
CI / build (push) Successful in 35s
CI / e2e (push) Successful in 11m47s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
CI / lint (push) Successful in 1m12s
CI / security (push) Successful in 43s
CI / test (push) Successful in 1m10s
CI / build (push) Successful in 35s
CI / e2e (push) Successful in 11m47s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
Contexte: - Repertoire (mode historique BooksLM, via menu contextuel dossier) - Documents (bouton flottant quand des documents sont ouverts) - General (bouton flottant sans document: aide app + creation de fichiers) - Le contexte est affiche dans le header; suggestions adaptees au mode - Blocs obsigate-action rendus en carte avec bouton Appliquer (pas d'execution auto) Backend: - /api/ai/bookslm/context et /chat acceptent mode + context_files - collect_files_context(), empty_context(), build_general_system_prompt() - mode documents degrade vers general si aucun fichier lisible Corrige: - bouton flottant passait le chemin d'un fichier comme repertoire -> erreur 'Aucun fichier markdown trouve dans ce dossier' - panneau precedent masque (localStorage) ne se rouvrait plus - selecteur fournisseur/modele deplace sur une ligne dediee (header actions visibles) - Entree envoie, Ctrl+Entree insere un saut de ligne Tests: test_bookslm.py (+13) et tests/frontend/ai.test.mjs (+8)
This commit is contained in:
@@ -14,6 +14,24 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
### Ajouté
|
||||
|
||||
- **Assistant AI contextuel (sidebar)** — l'assistant s'adapte désormais au contexte d'ouverture :
|
||||
- **Répertoire** (`directory`) : ouvert depuis le menu contextuel d'un dossier — le contexte est
|
||||
le dossier et son contenu (mode historique BooksLM).
|
||||
- **Documents** (`documents`) : ouvert via le bouton flottant quand un ou plusieurs documents
|
||||
sont ouverts — le contexte est la liste des fichiers ouverts (tous onglets/panneaux).
|
||||
- **Général** (`general`) : ouvert via le bouton flottant quand aucun document n'est ouvert —
|
||||
l'assistant répond sur l'application et peut proposer des actions (créer un fichier/dossier)
|
||||
via un bloc `obsigate-action` rendu en carte avec bouton « Appliquer » (aucune exécution
|
||||
automatique).
|
||||
- Le contexte est affiché dans le header de la sidebar (icône, titre, sous-titre) et les
|
||||
suggestions de questions s'adaptent au mode.
|
||||
- Backend : `/api/ai/bookslm/context` et `/chat` acceptent `mode` (`directory`/`documents`/
|
||||
`general`) et `context_files` ; `collect_files_context()`, `empty_context()` et
|
||||
`build_general_system_prompt()` dans `backend/bookslm.py` ; le mode documents dégrade
|
||||
proprement vers le mode général si aucun fichier n'est lisible.
|
||||
- Tests : `tests/test_bookslm.py` (+13 tests modes/documents/général) et
|
||||
`tests/frontend/ai.test.mjs` (+8 tests détection de contexte, clavier, actions, header).
|
||||
|
||||
- **#72 API publique documentée — OpenAPI 3.1 enrichie** — documentation interactive complète
|
||||
de l'API REST, générée automatiquement et enrichie.
|
||||
- Backend `backend/openapi_docs.py` : métadonnées de tags (18 catégories : System, Auth, Files,
|
||||
@@ -66,6 +84,19 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
### Corrigé
|
||||
|
||||
- **Assistant AI — sidebar qui ne s'ouvrait plus & erreur de contexte** :
|
||||
- Le bouton flottant passait le **chemin d'un fichier** comme répertoire de contexte, d'où
|
||||
l'erreur « Aucun fichier markdown trouvé dans ce dossier » à l'ouverture sur un document.
|
||||
Le contexte est maintenant détecté automatiquement (documents ouverts → mode documents,
|
||||
sinon mode général).
|
||||
- Un panneau précédemment masqué (`obsigate-bookslm-hidden=true` persisté en localStorage)
|
||||
restait caché lors d'une ouverture explicite → l'ouverture force désormais l'affichage.
|
||||
- **Ergonomie du header** : le sélecteur fournisseur/modèle était sur la même ligne que les
|
||||
actions et masquait ces dernières ; il est déplacé sur une seconde ligne dédiée (toolbar)
|
||||
pour que « nouvelle conversation / export / plein écran / fermer » restent toujours visibles.
|
||||
- **Clavier de la boîte de chat** : `Entrée` envoie la requête, `Ctrl+Entrée` insère un saut
|
||||
de ligne (au lieu de l'inverse), avec un texte d'aide sous le champ.
|
||||
|
||||
- **Outil AI de l'UI — fiabilisation** :
|
||||
- **BooksLM (chat IA par répertoire)** : les requêtes `context`/`chat` n'envoyaient pas le
|
||||
jeton d'authentification (échec 401 quand l'auth est activée) et la réponse SSE était
|
||||
|
||||
Reference in New Issue
Block a user