CI / lint (push) Successful in 57s
CI / security (push) Successful in 43s
CI / test (push) Successful in 1m14s
CI / build (push) Successful in 37s
CI / e2e (push) Successful in 10m36s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
Assistant IA (BooksLM) : - renderer Markdown complet (titres, listes, tableaux, citations, code) avec echappement HTML - mentions fichiers/paths cliquables : ouverture du fichier / revelation dans l'arborescence - gestion multi-sessions par contexte (historique, rechargement, suppression, migration) - i18n FR/EN, aide in-app, styles, tests frontend (24)
3.7 KiB
3.7 KiB
#80 — Assistant IA — Rendu Markdown, liens de fichiers/paths & sessions
Statut : 🔵 Livré (en attente de vérification utilisateur) Effort : 1-2 jours | Impact : 🟡 Références : Roadmap · BooksLM #76 · Outils IA #79 · Changelog
- Description : Trois améliorations d'expérience de l'assistant IA (
frontend/js/bookslm.js) :- Rendu Markdown des réponses de l'assistant (titres, listes, tableaux, citations, blocs de code, emphase) au lieu d'un rendu texte approximatif.
- Liens cliquables : les noms de fichiers et chemins mentionnés par l'assistant deviennent
des liens — clic sur un fichier → ouverture dans le viewer ; clic sur un répertoire →
révélation et surlignage dans l'arborescence (outil
reveal_in_tree). - Gestion des sessions : chaque contexte (répertoire / documents / général) conserve un historique de sessions consultable, rechargeable et supprimable.
A. Rendu Markdown — ✅ livré
- A1. Renderer auto-contenu (aucune dépendance externe) : titres
#→######, listes ordonnées/non ordonnées (imbriquées), listes de tâches, tableaux, citations>, règles horizontales, blocs de code clôturés avec langage, code inline, gras/italique/barré, liens. - A2. Échappement HTML systématique avant génération de balises (anti-injection) ; seules les balises produites par le renderer sont injectées.
- A3. Styles dédiés dans
frontend/style.css(.bookslm-bubble.assistant ...).
B. Liens fichiers / chemins — ✅ livré
- B1. Détection des mentions : code inline (
`notes/a.md`), liens Markdown[libellé](chemin)et chemins nusdossier/fichier.ext. - B2. Classification
file(extension connue) vsdir(le reste) via_classifyPath(). - B3. Clic fichier →
Viewer.openFile()(événementobsigate:open-fileégalement émis) puis repositionnement de l'indicateur dans l'arborescence ; clic répertoire →focusPathInSidebar()(obsigate:reveal-in-tree). - B4. Résolution du vault : vault du contexte, sinon premier document ouvert, sinon
state.currentVault. Lien externehttp(s)conservé tel quel.
C. Gestion des sessions — ✅ livré
- C1. Stockage
bookslm-sessions-{mode}-{contexte}(localStorage) : liste de sessions{id, title, createdAt, updatedAt, messages}. - C2. Migration automatique de l'ancienne clé mono-conversation
bookslm-history-{mode}-{contexte}. - C3. Bouton « Historique » dans l'en-tête → menu listant les sessions (titre dérivé du 1er message utilisateur + date), sélection pour recharger, bouton de suppression.
- C4.
Nouvelle conversationcrée une session ;_saveHistory()met à jour la session courante (upsert) et son titre.
D. Tests & documentation — ✅ livré
- D1.
tests/frontend/ai.test.mjs: rendu Markdown, échappement HTML, liens fichier/dossier, clic sur lien, persistance/rechargement/suppression de session, menu d'historique, migration. - D2. i18n FR/EN (
bookslm.session_history,bookslm.session_delete,bookslm.history_empty,bookslm.untitled,bookslm.no_vault). - D3. CHANGELOG + Roadmap.
E. Points d'attention
- Le renderer est volontairement autonome (pas de CDN) pour rester disponible hors-ligne et compatible PWA. Il ne couvre pas les extensions Markdown d'Obsidian (wikilinks, callouts).
- Les liens de chemin utilisent
data-kindpour distinguer fichier/répertoire ; le vault est résolu au moment du clic (pas stocké dans le HTML).