style: formatage HTML index.html — indentation multi-lignes coherente
CI / lint (push) Failing after 1s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Failing after -7s

This commit is contained in:
2026-06-15 14:55:36 -04:00
parent 0f4a7405db
commit 75a28da8d9
+356 -92
View File
@@ -904,7 +904,9 @@
<!-- Content Wrapper (tab bar + content area) -->
<div class="vault-context-bar" id="vault-context-bar">
<span class="vault-context-pill" id="vault-context-pill">📂 Toutes les vaults</span>
<span class="vault-context-pill" id="vault-context-pill"
>📂 Toutes les vaults</span
>
</div>
<div class="content-wrapper">
<!-- Tab bar -->
@@ -982,55 +984,108 @@
<!-- Quick Help -->
<div class="quick-help" id="quick-help">
<div class="qh-header">
<i data-lucide="keyboard" style="width:16px;height:16px"></i>
<i
data-lucide="keyboard"
style="width: 16px; height: 16px"
></i>
<span>Raccourcis &amp; Astuces</span>
<button class="qh-toggle" id="qh-toggle" title="Masquer" aria-label="Masquer l'aide">&minus;</button>
<button
class="qh-toggle"
id="qh-toggle"
title="Masquer"
aria-label="Masquer l'aide"
>
&minus;
</button>
</div>
<div class="qh-body" id="qh-body">
<div class="qh-row">
<span class="qh-kbd">Ctrl+Shift+Space</span>
<span class="qh-desc">Palette de commandes</span>
<span class="qh-kbd"
>Ctrl+Shift+Space</span
>
<span class="qh-desc"
>Palette de commandes</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">Ctrl+Alt+Space</span>
<span class="qh-desc">Palette de fichiers (navigation rapide)</span>
<span class="qh-kbd"
>Ctrl+Alt+Space</span
>
<span class="qh-desc"
>Palette de fichiers (nav.
rapide)</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">Ctrl+K</span>
<span class="qh-desc">Focus barre de recherche</span>
<span class="qh-desc"
>Focus barre de recherche</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">/</span>
<span class="qh-desc">Recherche rapide (hors champ texte)</span>
<span class="qh-desc"
>Recherche rapide (hors champ
texte)</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">Ctrl+S</span>
<span class="qh-desc">Sauvegarder le fichier ouvert</span>
<span class="qh-desc"
>Sauvegarder le fichier
ouvert</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">Ctrl+F</span>
<span class="qh-desc">Rechercher dans le document</span>
<span class="qh-desc"
>Rechercher dans le
document</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">Esc</span>
<span class="qh-desc">Fermer l'editeur / modale</span>
<span class="qh-desc"
>Fermer l'editeur / modale</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">Ctrl+J</span>
<span class="qh-desc">Completion IA inline (dans l'editeur)</span>
<span class="qh-desc"
>Completion IA inline (dans
l'editeur)</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">Alt+I</span>
<span class="qh-desc">Insertion rapide (editeur Forge)</span>
<span class="qh-desc"
>Insertion rapide (editeur
Forge)</span
>
</div>
<div class="qh-row">
<span class="qh-kbd">F1</span>
<span class="qh-desc">Aide de l'editeur Forge</span>
<span class="qh-desc"
>Aide de l'editeur Forge</span
>
</div>
<div class="qh-divider"></div>
<div class="qh-tip">
<i data-lucide="lightbulb" style="width:14px;height:14px"></i>
<span>Survolez un document avec <strong>Ctrl</strong> pour un apercu rapide. Cliquez sur <strong>Forge</strong> dans la barre d'outils pour l'editeur avance.</span>
<i
data-lucide="lightbulb"
style="
width: 14px;
height: 14px;
"
></i>
<span
>Survolez un document avec
<strong>Ctrl</strong> pour un
apercu rapide. Cliquez sur
<strong>Forge</strong> dans la
barre d'outils pour l'editeur
avance.</span
>
</div>
</div>
</div>
@@ -1193,21 +1248,59 @@
<div class="editor-container">
<div class="editor-header">
<span class="editor-brand">ObsiGate</span>
<input class="editor-title-input" id="editor-title-input" placeholder="Titre..." spellcheck="false" title="Titre (sync avec # Heading)">
<input
class="editor-title-input"
id="editor-title-input"
placeholder="Titre..."
spellcheck="false"
title="Titre (sync avec # Heading)"
/>
<span class="editor-sep">/</span>
<input class="editor-filename-input" id="editor-filename-input" placeholder="nom.md" spellcheck="false" title="Renommer le fichier">
<input
class="editor-filename-input"
id="editor-filename-input"
placeholder="nom.md"
spellcheck="false"
title="Renommer le fichier"
/>
<div class="editor-spacer"></div>
<span class="editor-save-dot ok" id="editor-save-dot"><span class="dot"></span><span id="editor-save-label">Saved</span></span>
<button class="editor-btn danger" id="editor-delete" title="Supprimer" aria-label="Supprimer">&#128465;</button>
<button class="editor-btn" id="editor-cancel" title="Annuler" aria-label="Annuler">&#10005;</button>
<button class="editor-btn primary" id="editor-save" title="Sauvegarder" aria-label="Sauvegarder">&#10003;</button>
<span class="editor-save-dot ok" id="editor-save-dot"
><span class="dot"></span
><span id="editor-save-label">Saved</span></span
>
<button
class="editor-btn danger"
id="editor-delete"
title="Supprimer"
aria-label="Supprimer"
>
&#128465;
</button>
<button
class="editor-btn"
id="editor-cancel"
title="Annuler"
aria-label="Annuler"
>
&#10005;
</button>
<button
class="editor-btn primary"
id="editor-save"
title="Sauvegarder"
aria-label="Sauvegarder"
>
&#10003;
</button>
</div>
<div class="editor-body editor-body-cm" id="editor-body">
<div id="ai-toolbar-container"></div>
</div>
<div class="editor-footer">
<span class="editor-stat-file" id="editor-stat-file"></span>
<span class="editor-stat-words" id="editor-stat-words">0 words</span>
<span class="editor-stat-words" id="editor-stat-words"
>0 words</span
>
</div>
</div>
</div>
@@ -1233,32 +1326,87 @@
</div>
<div class="editor-body help-body" id="config-body">
<nav class="help-nav" id="config-nav">
<div class="help-nav-header"><div class="help-nav-title">Configuration</div></div>
<div class="help-nav-header">
<div class="help-nav-title">Configuration</div>
</div>
<div class="help-nav-search-wrap">
<input type="text" class="help-nav-search" id="config-nav-search" placeholder="Rechercher..." autocomplete="off" spellcheck="false">
<button class="help-search-clear" id="config-search-clear" title="Effacer" onclick="var s=document.getElementById('config-nav-search');if(s){s.value='';s.dispatchEvent(new Event('input'));s.focus();}">X</button>
<input
type="text"
class="help-nav-search"
id="config-nav-search"
placeholder="Rechercher..."
autocomplete="off"
spellcheck="false"
/>
<button
class="help-search-clear"
id="config-search-clear"
title="Effacer"
onclick="
var s =
document.getElementById(
'config-nav-search',
);
if (s) {
s.value = '';
s.dispatchEvent(new Event('input'));
s.focus();
}
"
>
X
</button>
</div>
<ul class="help-nav-list">
<li><a href="#cfg-search" class="help-nav-link">🔍 Recherche</a></li>
<li><a href="#cfg-backend" class="help-nav-link">⚙️ Backend</a></li>
<li><a href="#cfg-sync" class="help-nav-link">🔄 Synchronisation</a></li>
<li><a href="#cfg-diags" class="help-nav-link">🩺 Diagnostics</a></li>
<li><a href="#cfg-ai" class="help-nav-link">🤖 IA</a></li>
<li><a href="#cfg-about" class="help-nav-link">📦 A propos</a></li>
<li>
<a href="#cfg-search" class="help-nav-link"
>🔍 Recherche</a
>
</li>
<li>
<a href="#cfg-backend" class="help-nav-link"
>⚙️ Backend</a
>
</li>
<li>
<a href="#cfg-sync" class="help-nav-link"
>🔄 Synchronisation</a
>
</li>
<li>
<a href="#cfg-diags" class="help-nav-link"
>🩺 Diagnostics</a
>
</li>
<li>
<a href="#cfg-ai" class="help-nav-link"
>🤖 IA</a
>
</li>
<li>
<a href="#cfg-about" class="help-nav-link"
>📦 A propos</a
>
</li>
</ul>
</nav>
<div class="help-content" id="config-scroll">
<div class="config-content">
<!-- Performance Settings - Frontend -->
<section class="config-section help-section" id="cfg-search">
<section
class="config-section help-section"
id="cfg-search"
>
<h2>Paramètres de recherche</h2>
<p class="config-description">
Ces paramètres s'appliquent immédiatement côté
client.
Ces paramètres s'appliquent immédiatement
côté client.
</p>
<div class="config-row">
<label class="config-label" for="cfg-debounce"
<label
class="config-label"
for="cfg-debounce"
>Délai debounce (ms)</label
>
<input
@@ -1296,7 +1444,9 @@
>
</div>
<div class="config-row">
<label class="config-label" for="cfg-min-query"
<label
class="config-label"
for="cfg-min-query"
>Longueur min. requête</label
>
<input
@@ -1314,7 +1464,9 @@
>
</div>
<div class="config-row">
<label class="config-label" for="cfg-timeout"
<label
class="config-label"
for="cfg-timeout"
>Timeout recherche (ms)</label
>
<input
@@ -1345,7 +1497,8 @@
<label
class="config-label"
for="cfg-recent-limit"
>Nombre de fichiers dans l'historique</label
>Nombre de fichiers dans
l'historique</label
>
<input
type="number"
@@ -1357,8 +1510,8 @@
value="20"
/>
<span class="config-hint"
>Entre 5 et 100 fichiers (sauvegarde sur le
serveur)</span
>Entre 5 et 100 fichiers (sauvegarde sur
le serveur)</span
>
</div>
<div class="config-row">
@@ -1377,7 +1530,8 @@
value="10"
/>
<span class="config-hint"
>Nombre maximum de versions backup conservees par fichier (1-50)</span
>Nombre maximum de versions backup
conservees par fichier (1-50)</span
>
</div>
</section>
@@ -1391,13 +1545,15 @@
>
</h2>
<p class="config-description">
Ces paramètres sont sauvegardés sur le serveur.
Certains nécessitent un redémarrage ou une
réindexation.
Ces paramètres sont sauvegardés sur le
serveur. Certains nécessitent un redémarrage
ou une réindexation.
</p>
<div class="config-row">
<label class="config-label" for="cfg-workers"
<label
class="config-label"
for="cfg-workers"
>Workers de recherche</label
>
<input
@@ -1410,7 +1566,8 @@
value="2"
/>
<span class="config-hint"
>Threads dédiés à la recherche (1-8)</span
>Threads dédiés à la recherche
(1-8)</span
>
</div>
<div class="config-row">
@@ -1454,7 +1611,9 @@
>
</div>
<div class="config-row">
<label class="config-label" for="cfg-tag-boost"
<label
class="config-label"
for="cfg-tag-boost"
>Boost tags</label
>
<input
@@ -1472,7 +1631,9 @@
>
</div>
<div class="config-row">
<label class="config-label" for="cfg-prefix-exp"
<label
class="config-label"
for="cfg-prefix-exp"
>Expansions préfixe max</label
>
<input
@@ -1485,8 +1646,8 @@
value="50"
/>
<span class="config-hint"
>Nombre max de tokens élargis par préfixe
(10-200)</span
>Nombre max de tokens élargis par
préfixe (10-200)</span
>
</div>
@@ -1516,9 +1677,9 @@
<section class="config-section help-section">
<h2>Filtrage de tags</h2>
<p class="config-description">
Définissez les patterns de tags à masquer dans
la sidebar. Vous pouvez utiliser des wildcards
pour cibler les tags de template.
Définissez les patterns de tags à masquer
dans la sidebar. Vous pouvez utiliser des
wildcards pour cibler les tags de template.
</p>
<div
@@ -1547,19 +1708,23 @@
style="display: none"
>
<small
>Regex : <code id="config-regex-code"></code
>Regex :
<code id="config-regex-code"></code
></small>
</div>
</section>
<!-- Watcher / Synchronisation -->
<section class="config-section help-section" id="cfg-sync">
<section
class="config-section help-section"
id="cfg-sync"
>
<h2>Synchronisation automatique</h2>
<p class="config-description">
Surveillance des fichiers en temps réel via
watchdog. Les modifications sont détectées
automatiquement et l'index est mis à jour sans
redémarrage.
automatiquement et l'index est mis à jour
sans redémarrage.
</p>
<div class="config-row">
@@ -1574,7 +1739,9 @@
id="cfg-watcher-enabled"
checked
/>
<span class="config-toggle-slider"></span>
<span
class="config-toggle-slider"
></span>
</label>
<span class="config-hint"
>Activer/désactiver la surveillance
@@ -1592,12 +1759,14 @@
type="checkbox"
id="cfg-watcher-polling"
/>
<span class="config-toggle-slider"></span>
<span
class="config-toggle-slider"
></span>
</label>
<span class="config-hint"
>Forcer le mode polling au lieu de inotify
natif (utile si le mode natif ne fonctionne
pas)</span
>Forcer le mode polling au lieu de
inotify natif (utile si le mode natif ne
fonctionne pas)</span
>
</div>
<div class="config-row">
@@ -1616,8 +1785,8 @@
value="5"
/>
<span class="config-hint"
>Intervalle de scrutation en mode polling
(1-30 secondes)</span
>Intervalle de scrutation en mode
polling (1-30 secondes)</span
>
</div>
<div class="config-row">
@@ -1659,10 +1828,10 @@
border-radius: 4px;
"
>
i️ <strong>Note :</strong> Tous les fichiers sont
toujours indexés et cherchables. Ce paramètre
contrôle uniquement leur visibilité dans
l'interface.
i️ <strong>Note :</strong> Tous les fichiers
sont toujours indexés et cherchables. Ce
paramètre contrôle uniquement leur
visibilité dans l'interface.
</p>
<div id="hidden-files-vault-list">
@@ -1683,7 +1852,10 @@
</section>
<!-- Diagnostics -->
<section class="config-section help-section" id="cfg-diags">
<section
class="config-section help-section"
id="cfg-diags"
>
<h2>Diagnostics</h2>
<p class="config-description">
Statistiques de l'index et du moteur de
@@ -1707,37 +1879,116 @@
</section>
<!-- Cles API AI -->
<section class="config-section help-section" id="cfg-ai">
<section
class="config-section help-section"
id="cfg-ai"
>
<h2>🤖 Cles API Intelligence Artificielle</h2>
<p class="config-description">
Configurez vos cles API. Cliquez sur <strong>Tester</strong> pour charger les modeles.
Configurez vos cles API. Cliquez sur
<strong>Tester</strong> pour charger les
modeles.
</p>
<div class="config-row">
<label class="config-label" for="cfg-deepseek-key">DeepSeek API Key</label>
<input type="password" id="cfg-deepseek-key" class="config-input" placeholder="sk-..." autocomplete="off">
<select id="cfg-deepseek-model" class="config-select" style="width:200px"><option value="">-- Modele --</option></select>
<label
class="config-label"
for="cfg-deepseek-key"
>DeepSeek API Key</label
>
<input
type="password"
id="cfg-deepseek-key"
class="config-input"
placeholder="sk-..."
autocomplete="off"
/>
<select
id="cfg-deepseek-model"
class="config-select"
style="width: 200px"
>
<option value="">-- Modele --</option>
</select>
</div>
<div class="config-row">
<label class="config-label" for="cfg-openrouter-key">OpenRouter API Key</label>
<input type="password" id="cfg-openrouter-key" class="config-input" placeholder="sk-or-..." autocomplete="off">
<select id="cfg-openrouter-model" class="config-select" style="width:200px"><option value="">-- Modele --</option></select>
<label
class="config-label"
for="cfg-openrouter-key"
>OpenRouter API Key</label
>
<input
type="password"
id="cfg-openrouter-key"
class="config-input"
placeholder="sk-or-..."
autocomplete="off"
/>
<select
id="cfg-openrouter-model"
class="config-select"
style="width: 200px"
>
<option value="">-- Modele --</option>
</select>
</div>
<div class="config-row">
<label class="config-label" for="cfg-gemini-key">Gemini API Key</label>
<input type="password" id="cfg-gemini-key" class="config-input" placeholder="AIza..." autocomplete="off">
<select id="cfg-gemini-model" class="config-select" style="width:200px"><option value="">-- Modele --</option></select>
<label
class="config-label"
for="cfg-gemini-key"
>Gemini API Key</label
>
<input
type="password"
id="cfg-gemini-key"
class="config-input"
placeholder="AIza..."
autocomplete="off"
/>
<select
id="cfg-gemini-model"
class="config-select"
style="width: 200px"
>
<option value="">-- Modele --</option>
</select>
</div>
<div class="config-actions-row" style="margin-top:16px">
<button class="config-btn-save" id="cfg-save-ai-keys">Sauvegarder</button>
<button class="config-btn-secondary" id="cfg-test-ai-keys">Tester</button>
<span id="cfg-ai-status" style="font-size:12px;color:var(--text-muted);margin-left:12px"></span>
<div
class="config-actions-row"
style="margin-top: 16px"
>
<button
class="config-btn-save"
id="cfg-save-ai-keys"
>
Sauvegarder
</button>
<button
class="config-btn-secondary"
id="cfg-test-ai-keys"
>
Tester
</button>
<span
id="cfg-ai-status"
style="
font-size: 12px;
color: var(--text-muted);
margin-left: 12px;
"
></span>
</div>
</section>
<!-- À propos -->
<section class="config-section help-section" id="cfg-about">
<section
class="config-section help-section"
id="cfg-about"
>
<h2>📦 À propos</h2>
<div id="config-about" class="config-diagnostics">
<div
id="config-about"
class="config-diagnostics"
>
<div class="config-diag-loading">
Chargement...
</div>
@@ -1748,8 +1999,8 @@
<section class="config-section help-section">
<h2>🔔 Webhooks</h2>
<p class="config-description">
Notifications HTTP vers des services externes
lors des changements de fichiers.
Notifications HTTP vers des services
externes lors des changements de fichiers.
</p>
<div id="webhooks-list"></div>
<div class="config-add-row">
@@ -4499,8 +4750,21 @@ curl -X POST https://votre-serveur.com/webhook \
<div class="mt-sheet-header">
<span class="mt-sheet-title">Fichiers ouverts</span>
<div class="mt-sheet-actions">
<button class="mt-sheet-close-all" id="mt-close-all" title="Fermer tout" aria-label="Fermer tous les fichiers">Fermer tout</button>
<button class="mt-sheet-close" id="mt-sheet-close" aria-label="Fermer">✕</button>
<button
class="mt-sheet-close-all"
id="mt-close-all"
title="Fermer tout"
aria-label="Fermer tous les fichiers"
>
Fermer tout
</button>
<button
class="mt-sheet-close"
id="mt-sheet-close"
aria-label="Fermer"
>
✕
</button>
</div>
</div>
<div class="mt-sheet-list" id="mt-tab-list"></div>