feat(ai): rendu Markdown, liens fichiers/paths et sessions (#80)
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)
This commit is contained in:
2026-09-11 16:14:21 -04:00
parent 240fd8586e
commit c55e3e0cbc
11 changed files with 906 additions and 36 deletions
+52
View File
@@ -9226,6 +9226,58 @@ body.popup-mode .content-area {
.bookslm-suggestion { padding: 8px 12px; border-radius: 8px; border: 1px solid var(--border);
background: var(--surface); color: var(--text-secondary); cursor: pointer; font-size: 13px; text-align: left; }
.bookslm-suggestion:hover { background: var(--surface2); color: var(--text-primary); border-color: var(--accent); }
/* Formatted markdown inside assistant answers. */
.bookslm-bubble.assistant > *:first-child { margin-top: 0; }
.bookslm-bubble.assistant > *:last-child { margin-bottom: 0; }
.bookslm-bubble.assistant p { margin: 6px 0; }
.bookslm-bubble.assistant h1,
.bookslm-bubble.assistant h2,
.bookslm-bubble.assistant h3,
.bookslm-bubble.assistant h4,
.bookslm-bubble.assistant h5,
.bookslm-bubble.assistant h6 { margin: 10px 0 6px; line-height: 1.3; font-weight: 600; }
.bookslm-bubble.assistant h1 { font-size: 1.35em; }
.bookslm-bubble.assistant h2 { font-size: 1.2em; }
.bookslm-bubble.assistant h3 { font-size: 1.1em; }
.bookslm-bubble.assistant h4,
.bookslm-bubble.assistant h5,
.bookslm-bubble.assistant h6 { font-size: 1em; }
.bookslm-bubble.assistant ul,
.bookslm-bubble.assistant ol { margin: 6px 0; padding-left: 20px; }
.bookslm-bubble.assistant li { margin: 2px 0; }
.bookslm-bubble.assistant blockquote { margin: 8px 0; padding: 4px 10px;
border-left: 3px solid var(--accent); background: rgba(0,0,0,0.12);
border-radius: 0 4px 4px 0; color: var(--text-secondary); }
.bookslm-bubble.assistant hr { border: none; border-top: 1px solid var(--border); margin: 10px 0; }
.bookslm-bubble.assistant table { border-collapse: collapse; margin: 8px 0; width: 100%;
display: block; overflow-x: auto; }
.bookslm-bubble.assistant th,
.bookslm-bubble.assistant td { border: 1px solid var(--border); padding: 4px 8px;
font-size: 0.92em; text-align: left; }
.bookslm-bubble.assistant th { background: rgba(0,0,0,0.15); }
.bookslm-bubble.assistant pre { max-width: 100%; }
.bookslm-bubble.assistant a { color: var(--accent); }
.bookslm-path-link { color: var(--accent); cursor: pointer;
text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 2px; }
.bookslm-path-link:hover { text-decoration-style: solid; }
/* Session history dropdown. */
.bookslm-history-menu { position: absolute; top: 48px; right: 10px; z-index: 20;
width: min(320px, calc(100% - 20px)); max-height: 60vh; overflow-y: auto;
background: var(--bg-primary); border: 1px solid var(--border); border-radius: 10px;
box-shadow: 0 8px 24px rgba(0,0,0,0.35); padding: 6px; }
.bookslm-history-menu.hidden { display: none; }
.bookslm-history-item { display: flex; align-items: stretch; gap: 4px; border-radius: 8px; }
.bookslm-history-item:hover { background: var(--surface2); }
.bookslm-history-item.active { background: var(--surface2); outline: 1px solid var(--accent); }
.bookslm-history-open { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px;
background: none; border: none; cursor: pointer; text-align: left; padding: 7px 8px;
color: var(--text-primary); border-radius: 8px; }
.bookslm-history-title { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bookslm-history-date { font-size: 10px; color: var(--text-secondary); }
.bookslm-history-delete { background: none; border: none; cursor: pointer; color: var(--text-secondary);
padding: 0 8px; border-radius: 6px; display: flex; align-items: center; }
.bookslm-history-delete:hover { color: #f87171; background: rgba(248,113,113,0.12); }
.bookslm-history-empty { padding: 10px; font-size: 12px; color: var(--text-secondary); text-align: center; }
@media (max-width: 768px) {
.bookslm-panel {
width: 100%;