fix: tag + translate all help body headings and paragraphs
CI / lint (push) Failing after 19s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / e2e (push) Has been skipped
CI / security (push) Failing after 10s

- 36 new data-i18n tags on h2/h3/p in help modal body
- Fixed concatenated attributes (pdata-i18n → p data-i18n)
- All section headings translated (Palette, AI Editor, Search, etc.)
- 827 locale keys total, 354 data-i18n attributes
- Help guide title 'Guide utilisation ObsiGate' now translated
This commit is contained in:
2026-06-18 15:43:54 -04:00
parent 31d8c2603e
commit b4fefe483e
3 changed files with 179 additions and 107 deletions
+105 -105
View File
@@ -1117,7 +1117,7 @@
> >
<i data-lucide="pin"></i> <i data-lucide="pin"></i>
<span>Aucun bookmark</span> <span>Aucun bookmark</span>
<pdata-i18n="auto.c089d968"> <p data-i18n="auto.c089d968">
Épinglez des fichiers pour les retrouver Épinglez des fichiers pour les retrouver
ici. ici.
</p> </p>
@@ -1158,7 +1158,7 @@
> >
<i data-lucide="inbox"></i> <i data-lucide="inbox"></i>
<span data-i18n="dashboard.no_recent">Aucun fichier récent</span> <span data-i18n="dashboard.no_recent">Aucun fichier récent</span>
<pdata-i18n="auto.753d30a8"> <p data-i18n="auto.753d30a8">
Ouvrez un fichier pour le voir Ouvrez un fichier pour le voir
apparaître ici apparaître ici
</p> </p>
@@ -1180,7 +1180,7 @@
> >
<i data-lucide="share-2"></i> <i data-lucide="share-2"></i>
<span data-i18n="dashboard.no_shares">Aucun document partagé</span> <span data-i18n="dashboard.no_shares">Aucun document partagé</span>
<pdata-i18n="auto.e61598c1"> <p data-i18n="auto.e61598c1">
Partagez un document pour le voir Partagez un document pour le voir
apparaître ici apparaître ici
</p> </p>
@@ -1824,7 +1824,7 @@
<!-- Hidden Files/Folders Configuration --> <!-- Hidden Files/Folders Configuration -->
<section class="config-section help-section"> <section class="config-section help-section">
<h2data-i18n="auto.f8ba6127">🗂️ Fichiers cachés</h2> <h2 data-i18n="auto.f8ba6127">🗂️ Fichiers cachés</h2>
<p class="config-description"> <p class="config-description">
Contrôlez l'affichage des fichiers/dossiers Contrôlez l'affichage des fichiers/dossiers
cachés (commençant par <code>.</code>) par cachés (commençant par <code>.</code>) par
@@ -1989,7 +1989,7 @@
class="config-section help-section" class="config-section help-section"
id="cfg-themes" id="cfg-themes"
> >
<h2data-i18n="auto.c14b5603">🎨 Thèmes</h2> <h2 data-i18n="auto.c14b5603">🎨 Thèmes</h2>
<p class="config-description" data-i18n="auto.caac40b9"> <p class="config-description" data-i18n="auto.caac40b9">
Choisissez un thème visuel. Chaque thème Choisissez un thème visuel. Chaque thème
offre un mode sombre et clair. offre un mode sombre et clair.
@@ -2035,7 +2035,7 @@
class="config-section help-section" class="config-section help-section"
id="cfg-about" id="cfg-about"
> >
<h2data-i18n="auto.a3319169">📦 À propos</h2> <h2 data-i18n="auto.a3319169">📦 À propos</h2>
<div <div
id="config-about" id="config-about"
class="config-diagnostics" class="config-diagnostics"
@@ -2732,7 +2732,7 @@
<h2 data-i18n="help.nav_interface">🧭 Interface utilisateur</h2> <h2 data-i18n="help.nav_interface">🧭 Interface utilisateur</h2>
<h3 data-i18n="help.header_section">En-tête</h3> <h3 data-i18n="help.header_section">En-tête</h3>
<pdata-i18n="auto.209c5490"> <p data-i18n="auto.209c5490">
La barre supérieure contient les éléments La barre supérieure contient les éléments
essentiels : essentiels :
</p> </p>
@@ -2822,10 +2822,10 @@
</section> </section>
<section class="help-section" id="help-navigation"> <section class="help-section" id="help-navigation">
<h2>🗺️ Navigation</h2> <h2 data-i18n="help.733f0559">🗺️ Navigation</h2>
<h3 data-i18n="help.tree_section">Arborescence des vaults</h3> <h3 data-i18n="help.tree_section">Arborescence des vaults</h3>
<pdata-i18n="auto.4c908ade"> <p data-i18n="auto.4c908ade">
Cliquez sur un vault pour l'ouvrir et voir son Cliquez sur un vault pour l'ouvrir et voir son
contenu. Les dossiers affichent un chevron et un contenu. Les dossiers affichent un chevron et un
badge avec le nombre d'éléments. badge avec le nombre d'éléments.
@@ -2870,7 +2870,7 @@
</ul> </ul>
<h3 data-i18n="help.breadcrumb_reposition">Breadcrumb et repositionnement</h3> <h3 data-i18n="help.breadcrumb_reposition">Breadcrumb et repositionnement</h3>
<pdata-i18n="auto.1abf6661"> <p data-i18n="auto.1abf6661">
Le chemin affiché au-dessus du contenu est Le chemin affiché au-dessus du contenu est
interactif : interactif :
</p> </p>
@@ -2914,8 +2914,8 @@
</section> </section>
<section class="help-section" id="help-tabs"> <section class="help-section" id="help-tabs">
<h2>📑 Gestion des onglets</h2> <h2 data-i18n="help.8c5341e0">📑 Gestion des onglets</h2>
<pdata-i18n="auto.27a2f7c1"> <p data-i18n="auto.27a2f7c1">
ObsiGate supporte l'ouverture de plusieurs ObsiGate supporte l'ouverture de plusieurs
fichiers simultanément dans des onglets. fichiers simultanément dans des onglets.
</p> </p>
@@ -2985,7 +2985,7 @@
</section> </section>
<section class="help-section" id="help-recherche"> <section class="help-section" id="help-recherche">
<h2>🔍 Recherche</h2> <h2 data-i18n="help.adf30d78">🔍 Recherche</h2>
<h3 data-i18n="help.simple_search">Recherche simple</h3> <h3 data-i18n="help.simple_search">Recherche simple</h3>
<p> <p>
@@ -3012,7 +3012,7 @@
</ul> </ul>
<h3 data-i18n="help.advanced_operators">Opérateurs avancés</h3> <h3 data-i18n="help.advanced_operators">Opérateurs avancés</h3>
<pdata-i18n="auto.4bc1f00a"> <p data-i18n="auto.4bc1f00a">
Utilisez des opérateurs pour affiner votre Utilisez des opérateurs pour affiner votre
recherche : recherche :
</p> </p>
@@ -3050,7 +3050,7 @@
Markdown. Markdown.
</p> </p>
<p> <p>
<strongdata-i18n="auto.1a54bd69">Exemple combiné</strong> : <strong data-i18n="auto.1a54bd69">Exemple combiné</strong> :
<code <code
>tag:linux vault:IT ext:md serveur web</code >tag:linux vault:IT ext:md serveur web</code
> >
@@ -3059,7 +3059,7 @@
</p> </p>
<h3 data-i18n="help.autocomplete">Autocomplétion</h3> <h3 data-i18n="help.autocomplete">Autocomplétion</h3>
<pdata-i18n="auto.404c8f1c"> <p data-i18n="auto.404c8f1c">
L'autocomplétion vous aide à trouver rapidement L'autocomplétion vous aide à trouver rapidement
: :
</p> </p>
@@ -3083,7 +3083,7 @@
</ul> </ul>
<h3 data-i18n="help.active_filter_chips">Chips de filtres actifs</h3> <h3 data-i18n="help.active_filter_chips">Chips de filtres actifs</h3>
<pdata-i18n="auto.03a6e5b1"> <p data-i18n="auto.03a6e5b1">
Les opérateurs utilisés s'affichent sous forme Les opérateurs utilisés s'affichent sous forme
de chips colorés : de chips colorés :
</p> </p>
@@ -3102,8 +3102,8 @@
</li> </li>
</ul> </ul>
<h3>Facettes et tri</h3> <h3 data-i18n="help.a648c49e">Facettes et tri</h3>
<pdata-i18n="auto.cd7332c8"> <p data-i18n="auto.cd7332c8">
Les résultats incluent des facettes pour affiner Les résultats incluent des facettes pour affiner
: :
</p> </p>
@@ -3128,9 +3128,9 @@
</section> </section>
<section class="help-section" id="help-tags"> <section class="help-section" id="help-tags">
<h2>🏷️ Tags</h2> <h2 data-i18n="help.2507242f">🏷️ Tags</h2>
<h3>Tag cloud</h3> <h3 data-i18n="help.5f87ea79">Tag cloud</h3>
<p> <p>
L'onglet Tags de la sidebar affiche un nuage de L'onglet Tags de la sidebar affiche un nuage de
tags : tags :
@@ -3154,7 +3154,7 @@
</li> </li>
</ul> </ul>
<h3>Tags inline vs frontmatter</h3> <h3 data-i18n="help.2c03a7ba">Tags inline vs frontmatter</h3>
<p>ObsiGate supporte deux types de tags :</p> <p>ObsiGate supporte deux types de tags :</p>
<ul> <ul>
<li> <li>
@@ -3173,7 +3173,7 @@
</li> </li>
</ul> </ul>
<h3>Filtrage de tags template</h3> <h3 data-i18n="help.63f024d4">Filtrage de tags template</h3>
<p> <p>
Dans les Configurations, vous pouvez masquer les Dans les Configurations, vous pouvez masquer les
tags de template : tags de template :
@@ -3185,7 +3185,7 @@
<code>#{{ ... }}</code> <code>#{{ ... }}</code>
</li> </li>
<li> <li>
<strongdata-i18n="auto.5d936af6">Regex générée</strong> : Aperçu de <strong data-i18n="auto.5d936af6">Regex générée</strong> : Aperçu de
la regex appliquée la regex appliquée
</li> </li>
<li> <li>
@@ -3196,9 +3196,9 @@
</section> </section>
<section class="help-section" id="help-fichiers"> <section class="help-section" id="help-fichiers">
<h2>📄 Fichiers</h2> <h2 data-i18n="help.c017944b">📄 Fichiers</h2>
<h3>Visualisation</h3> <h3 data-i18n="help.cf8615b1">Visualisation</h3>
<p>Les fichiers markdown sont rendus avec :</p> <p>Les fichiers markdown sont rendus avec :</p>
<ul> <ul>
<li> <li>
@@ -3247,15 +3247,15 @@
</li> </li>
</ul> </ul>
<h3data-i18n="auto.1efbbc9a">Édition avec CodeMirror 6</h3> <h3 data-i18n="auto.1efbbc9a">Édition avec CodeMirror 6</h3>
<pdata-i18n="auto.edf89626">L'éditeur intégré offre :</p> <p data-i18n="auto.edf89626">L'éditeur intégré offre :</p>
<ul> <ul>
<li> <li>
<strong>Coloration syntaxique</strong> : <strong>Coloration syntaxique</strong> :
Support de nombreux langages Support de nombreux langages
</li> </li>
<li> <li>
<strongdata-i18n="auto.1d46301c">Numéros de ligne</strong> : <strong data-i18n="auto.1d46301c">Numéros de ligne</strong> :
Navigation facile Navigation facile
</li> </li>
<li> <li>
@@ -3276,7 +3276,7 @@
</li> </li>
</ul> </ul>
<h3data-i18n="auto.ec7260fa">Types de fichiers supportés</h3> <h3 data-i18n="auto.ec7260fa">Types de fichiers supportés</h3>
<p>ObsiGate indexe et affiche :</p> <p>ObsiGate indexe et affiche :</p>
<ul> <ul>
<li> <li>
@@ -3307,10 +3307,10 @@
<!-- ✏️ Édition --> <!-- ✏️ Édition -->
<section class="help-section" id="help-edition"> <section class="help-section" id="help-edition">
<h2data-i18n="auto.f346076a">✏️ Édition avancée</h2> <h2 data-i18n="auto.f346076a">✏️ Édition avancée</h2>
<h3data-i18n="auto.695d9e47">Éditeur CodeMirror 6</h3> <h3 data-i18n="auto.695d9e47">Éditeur CodeMirror 6</h3>
<pdata-i18n="auto.ef8c5f4d"> <p data-i18n="auto.ef8c5f4d">
L'éditeur intégré offre une expérience complète L'éditeur intégré offre une expérience complète
d'édition : d'édition :
</p> </p>
@@ -3321,7 +3321,7 @@
et bien d'autres et bien d'autres
</li> </li>
<li> <li>
<strongdata-i18n="auto.1d46301c">Numéros de ligne</strong> : <strong data-i18n="auto.1d46301c">Numéros de ligne</strong> :
Navigation facilitée dans les fichiers longs Navigation facilitée dans les fichiers longs
</li> </li>
<li> <li>
@@ -3352,14 +3352,14 @@
<!-- 🗺️ Graphe --> <!-- 🗺️ Graphe -->
<section class="help-section" id="help-graphe"> <section class="help-section" id="help-graphe">
<h2>🗺️ Vue Graphe</h2> <h2 data-i18n="help.9c7a0a8d">🗺️ Vue Graphe</h2>
<p> <p>
La vue graphe offre une visualisation La vue graphe offre une visualisation
interactive des connexions entre vos notes via interactive des connexions entre vos notes via
les wikilinks. les wikilinks.
</p> </p>
<h3>Ouverture</h3> <h3 data-i18n="help.b6619ac9">Ouverture</h3>
<ul> <ul>
<li> <li>
<strong>Menu contextuel</strong> : Clic <strong>Menu contextuel</strong> : Clic
@@ -3372,7 +3372,7 @@
</li> </li>
</ul> </ul>
<h3>Interaction</h3> <h3 data-i18n="help.61ee5a22">Interaction</h3>
<ul> <ul>
<li> <li>
<strong>Zoom/Pan</strong> : Molette pour <strong>Zoom/Pan</strong> : Molette pour
@@ -3405,7 +3405,7 @@
</li> </li>
</ul> </ul>
<h3>Affichage</h3> <h3 data-i18n="help.8caed987">Affichage</h3>
<ul> <ul>
<li> <li>
<strong>Nœuds</strong> : Fichiers (carrés) <strong>Nœuds</strong> : Fichiers (carrés)
@@ -3434,7 +3434,7 @@
</ul> </ul>
<h3 data-i18n="config.section_perf">Performance</h3> <h3 data-i18n="config.section_perf">Performance</h3>
<pdata-i18n="auto.aa8ca265"> <p data-i18n="auto.aa8ca265">
La vue utilise l'algorithme Barnes-Hut pour La vue utilise l'algorithme Barnes-Hut pour
calculer la disposition en O(n log n), calculer la disposition en O(n log n),
garantissant des performances fluides même avec garantissant des performances fluides même avec
@@ -3446,9 +3446,9 @@
class="help-section" class="help-section"
id="help-personnalisation" id="help-personnalisation"
> >
<h2>🎨 Personnalisation</h2> <h2 data-i18n="help.86e3825d">🎨 Personnalisation</h2>
<h3data-i18n="auto.337d8626">Thème clair/sombre</h3> <h3 data-i18n="auto.337d8626">Thème clair/sombre</h3>
<p data-i18n="help.theme_toggle">Basculez entre les thèmes :</p> <p data-i18n="help.theme_toggle">Basculez entre les thèmes :</p>
<ul> <ul>
<li> <li>
@@ -3469,7 +3469,7 @@
</li> </li>
</ul> </ul>
<h3>Redimensionnement de la sidebar</h3> <h3 data-i18n="help.7bcbb2e3">Redimensionnement de la sidebar</h3>
<p> <p>
Sur desktop, ajustez la largeur de la sidebar : Sur desktop, ajustez la largeur de la sidebar :
</p> </p>
@@ -3479,7 +3479,7 @@
: Bordure droite de la sidebar : Bordure droite de la sidebar
</li> </li>
<li> <li>
<strongdata-i18n="auto.1a8a8118">Glisser-déposer</strong> : Cliquez <strong data-i18n="auto.1a8a8118">Glisser-déposer</strong> : Cliquez
et glissez pour ajuster et glissez pour ajuster
</li> </li>
<li> <li>
@@ -3492,7 +3492,7 @@
</li> </li>
</ul> </ul>
<h3data-i18n="auto.9122fd5c">Configuration avancée</h3> <h3 data-i18n="auto.9122fd5c">Configuration avancée</h3>
<p> <p>
Le modal Configurations (menu Options) permet de Le modal Configurations (menu Options) permet de
: :
@@ -3515,7 +3515,7 @@
mémoire, moteur de recherche mémoire, moteur de recherche
</li> </li>
<li> <li>
<strongdata-i18n="auto.83a0efdf">Réindexation</strong> : Forcer un <strong data-i18n="auto.83a0efdf">Réindexation</strong> : Forcer un
rescan des vaults rescan des vaults
</li> </li>
</ul> </ul>
@@ -3523,14 +3523,14 @@
<!-- ⌨️ Palette de commandes --> <!-- ⌨️ Palette de commandes -->
<section class="help-section" id="help-palette"> <section class="help-section" id="help-palette">
<h2>⌨️ Palette de commandes</h2> <h2 data-i18n="help.62308f96">⌨️ Palette de commandes</h2>
<pdata-i18n="auto.774dbd63"> <p data-i18n="auto.774dbd63">
La palette de commandes permet d'accéder La palette de commandes permet d'accéder
rapidement aux fichiers et aux actions sans rapidement aux fichiers et aux actions sans
utiliser la souris. utiliser la souris.
</p> </p>
<h3>Ouverture</h3> <h3 data-i18n="help.b6619ac9">Ouverture</h3>
<ul> <ul>
<li> <li>
<strong>Ctrl+Shift+Espace</strong> : Palette <strong>Ctrl+Shift+Espace</strong> : Palette
@@ -3546,7 +3546,7 @@
</li> </li>
</ul> </ul>
<h3>Mode fichiers</h3> <h3 data-i18n="help.6d547397">Mode fichiers</h3>
<p> <p>
Tapez le nom d'un fichier pour le trouver Tapez le nom d'un fichier pour le trouver
rapidement. La recherche utilise l'API rapidement. La recherche utilise l'API
@@ -3555,7 +3555,7 @@
ouvrir le fichier sélectionné. ouvrir le fichier sélectionné.
</p> </p>
<h3>Mode commandes</h3> <h3 data-i18n="help.3cf370b1">Mode commandes</h3>
<p> <p>
Tapez <code>&gt;</code> (ou Ctrl+Alt+Espace) Tapez <code>&gt;</code> (ou Ctrl+Alt+Espace)
pour voir la liste des actions disponibles : pour voir la liste des actions disponibles :
@@ -3566,7 +3566,7 @@
l'accueil l'accueil
</li> </li>
<li> <li>
✏️ <strongdata-i18n="auto.b893650a">Éditer fichier courant</strong> : ✏️ <strong data-i18n="auto.b893650a">Éditer fichier courant</strong> :
Ouvre l'éditeur sur l'onglet actif Ouvre l'éditeur sur l'onglet actif
</li> </li>
<li> <li>
@@ -3574,7 +3574,7 @@
document dans une fenêtre détachée document dans une fenêtre détachée
</li> </li>
<li> <li>
📄 <strongdata-i18n="auto.aedff644">Créer fichier markdown</strong> : 📄 <strong data-i18n="auto.aedff644">Créer fichier markdown</strong> :
Crée un nouveau fichier .md et l'ouvre dans Crée un nouveau fichier .md et l'ouvre dans
l'éditeur l'éditeur
</li> </li>
@@ -3584,11 +3584,11 @@
Supprime le fichier de l'onglet actif Supprime le fichier de l'onglet actif
</li> </li>
<li> <li>
📁 <strongdata-i18n="auto.195a8e44">Créer répertoire</strong> : Crée 📁 <strong data-i18n="auto.195a8e44">Créer répertoire</strong> : Crée
un nouveau dossier un nouveau dossier
</li> </li>
<li> <li>
🗑️ <strongdata-i18n="auto.5a486420">Supprimer répertoire</strong> : 🗑️ <strong data-i18n="auto.5a486420">Supprimer répertoire</strong> :
Supprime un dossier et son contenu Supprime un dossier et son contenu
</li> </li>
<li> <li>
@@ -3624,7 +3624,7 @@
</section> </section>
<section class="help-section" id="help-raccourcis"> <section class="help-section" id="help-raccourcis">
<h2>⌨️ Raccourcis clavier</h2> <h2 data-i18n="help.2a2e5b0f">⌨️ Raccourcis clavier</h2>
<h3 data-i18n="help.nav_navigation">Navigation</h3> <h3 data-i18n="help.nav_navigation">Navigation</h3>
<ul> <ul>
@@ -3642,7 +3642,7 @@
</li> </li>
</ul> </ul>
<h3data-i18n="auto.13c3ee2c">Recherche et autocomplétion</h3> <h3 data-i18n="auto.13c3ee2c">Recherche et autocomplétion</h3>
<ul> <ul>
<li> <li>
<code>↑</code> / <code>↓</code> : Naviguer <code>↑</code> / <code>↓</code> : Naviguer
@@ -3690,7 +3690,7 @@
</li> </li>
</ul> </ul>
<h3data-i18n="auto.a131dfab">Éditeur CodeMirror</h3> <h3 data-i18n="auto.a131dfab">Éditeur CodeMirror</h3>
<ul> <ul>
<li> <li>
<code>Ctrl+F</code> : Rechercher dans le <code>Ctrl+F</code> : Rechercher dans le
@@ -3706,7 +3706,7 @@
</section> </section>
<section class="help-section" id="help-ai"> <section class="help-section" id="help-ai">
<h2data-i18n="auto.c4922a99">🤖 Intelligence Artificielle dans l'Éditeur</h2> <h2 data-i18n="auto.c4922a99">🤖 Intelligence Artificielle dans l'Éditeur</h2>
<p> <p>
ObsiGate intègre un assistant IA directement ObsiGate intègre un assistant IA directement
dans l'éditeur de texte. Pour l'activer, dans l'éditeur de texte. Pour l'activer,
@@ -3729,11 +3729,11 @@
up -d --build</code up -d --build</code
> >
</li> </li>
<lidata-i18n="auto.5d4a2516"> <li data-i18n="auto.5d4a2516">
Ouvrez un fichier en mode Édition (bouton ✏️ Ouvrez un fichier en mode Édition (bouton ✏️
Éditer) Éditer)
</li> </li>
<lidata-i18n="auto.396d0dd8"> <li data-i18n="auto.396d0dd8">
La barre d'outils AI apparaît sous le titre La barre d'outils AI apparaît sous le titre
de l'éditeur de l'éditeur
</li> </li>
@@ -3752,7 +3752,7 @@
curseur. curseur.
</li> </li>
<li> <li>
<strongdata-i18n="auto.a105a2d9">Éditer ▾</strong> — Menu de <strong data-i18n="auto.a105a2d9">Éditer ▾</strong> — Menu de
modification du texte sélectionné : modification du texte sélectionné :
<ul> <ul>
<li> <li>
@@ -3813,7 +3813,7 @@
</ul> </ul>
</li> </li>
<li> <li>
<strongdata-i18n="auto.ce4eb802">Générer ▾</strong> — Génère du <strong data-i18n="auto.ce4eb802">Générer ▾</strong> — Génère du
contenu à partir de la sélection : contenu à partir de la sélection :
<ul> <ul>
<li> <li>
@@ -3834,13 +3834,13 @@
</ul> </ul>
</li> </li>
<li> <li>
<strongdata-i18n="auto.62c3d50d">💬 Réécrire</strong> — Réécrit le <strong data-i18n="auto.62c3d50d">💬 Réécrire</strong> — Réécrit le
texte selon vos instructions personnalisées. texte selon vos instructions personnalisées.
Une boîte de dialogue vous demande votre Une boîte de dialogue vous demande votre
instruction. instruction.
</li> </li>
<li> <li>
<strongdata-i18n="auto.0257e77f">🧰 Boîte ▾</strong> — Outils de <strong data-i18n="auto.0257e77f">🧰 Boîte ▾</strong> — Outils de
conversion : conversion :
<ul> <ul>
<li> <li>
@@ -3870,7 +3870,7 @@
</li> </li>
</ul> </ul>
<h3>Indicateurs visuels</h3> <h3 data-i18n="help.096367af">Indicateurs visuels</h3>
<ul> <ul>
<li> <li>
Pendant une requête AI, un toast Pendant une requête AI, un toast
@@ -3881,16 +3881,16 @@
</li> </li>
<li> <li>
Une fois terminé, Une fois terminé,
<strongdata-i18n="auto.4d281c6c">AI: texte traité ✓</strong> confirme <strong data-i18n="auto.4d281c6c">AI: texte traité ✓</strong> confirme
le succès le succès
</li> </li>
<li> <li>
En cas d'erreur de clé API : En cas d'erreur de clé API :
<strongdata-i18n="auto.13eb7a51">AI: clé API invalide</strong> <strong data-i18n="auto.13eb7a51">AI: clé API invalide</strong>
</li> </li>
</ul> </ul>
<h3>Sauvegarde automatique</h3> <h3 data-i18n="help.2dad2bfd">Sauvegarde automatique</h3>
<p> <p>
L'éditeur sauvegarde automatiquement après 2 L'éditeur sauvegarde automatiquement après 2
secondes d'inactivité. Le bouton de sauvegarde secondes d'inactivité. Le bouton de sauvegarde
@@ -3898,7 +3898,7 @@
confirmer. confirmer.
</p> </p>
<h3data-i18n="auto.272dd29a">Providers supportés</h3> <h3 data-i18n="auto.272dd29a">Providers supportés</h3>
<table> <table>
<tr> <tr>
<th>Provider</th> <th>Provider</th>
@@ -3929,7 +3929,7 @@
<!-- 🔗 Partage --> <!-- 🔗 Partage -->
<section class="help-section" id="help-partage"> <section class="help-section" id="help-partage">
<h2>🔗 Partage et Webhooks</h2> <h2 data-i18n="help.8c65b2f2">🔗 Partage et Webhooks</h2>
<h3 data-i18n="help.public_shares">Publication publique</h3> <h3 data-i18n="help.public_shares">Publication publique</h3>
<p> <p>
@@ -3969,7 +3969,7 @@
<!-- 🪝 Webhooks --> <!-- 🪝 Webhooks -->
<section class="help-section" id="help-webhooks"> <section class="help-section" id="help-webhooks">
<h2>🪝 Webhooks</h2> <h2 data-i18n="help.29afa01d">🪝 Webhooks</h2>
<p> <p>
Les webhooks permettent à ObsiGate de Les webhooks permettent à ObsiGate de
<strong <strong
@@ -4005,13 +4005,13 @@
données externe données externe
</li> </li>
<li> <li>
<strongdata-i18n="auto.a232672b">Déploiement</strong> : Publier un <strong data-i18n="auto.a232672b">Déploiement</strong> : Publier un
article de blog quand un fichier est marqué article de blog quand un fichier est marqué
<code>publish: true</code> <code>publish: true</code>
</li> </li>
</ul> </ul>
<h3data-i18n="auto.ba768f01">Événements supportés</h3> <h3 data-i18n="auto.ba768f01">Événements supportés</h3>
<div style="overflow-x: auto"> <div style="overflow-x: auto">
<table <table
style=" style="
@@ -4247,7 +4247,7 @@
> >
</p> </p>
<h3>Format du payload</h3> <h3 data-i18n="help.77f4f06e">Format du payload</h3>
<p> <p>
Chaque webhook reçoit un <code>POST</code> avec Chaque webhook reçoit un <code>POST</code> avec
<code>Content-Type: application/json</code> : <code>Content-Type: application/json</code> :
@@ -4269,7 +4269,7 @@
} }
}</code></pre> }</code></pre>
<h3data-i18n="auto.28bf6aab">Sécurité : signature HMAC-SHA256</h3> <h3 data-i18n="auto.28bf6aab">Sécurité : signature HMAC-SHA256</h3>
<p> <p>
Si vous configurez un secret, chaque requête Si vous configurez un secret, chaque requête
inclut un header inclut un header
@@ -4310,7 +4310,7 @@
<strong data-i18n="config.webhook_url_placeholder">URL</strong> (endpoint cible), <strong data-i18n="config.webhook_url_placeholder">URL</strong> (endpoint cible),
<strong>Secret</strong> (optionnel) <strong>Secret</strong> (optionnel)
</li> </li>
<lidata-i18n="auto.7c9cdc3c">Cochez les événements à écouter</li> <li data-i18n="auto.7c9cdc3c">Cochez les événements à écouter</li>
<li>Cliquez <strong data-i18n="config.add_webhook">Ajouter</strong></li> <li>Cliquez <strong data-i18n="config.add_webhook">Ajouter</strong></li>
</ol> </ol>
<p> <p>
@@ -4320,9 +4320,9 @@
exécution. exécution.
</p> </p>
<h3>Exemples concrets</h3> <h3 data-i18n="help.550b0240">Exemples concrets</h3>
<h4data-i18n="auto.b419c2c2">Récepteur Python (Flask)</h4> <h4 data-i18n="auto.b419c2c2">Récepteur Python (Flask)</h4>
<pre <pre
style=" style="
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -4333,7 +4333,7 @@
" "
><code>from flask import Flask, request\nimport hmac, hashlib\n\napp = Flask(__name__)\nWEBHOOK_SECRET = "mon-secret" # même que dans ObsiGate\n\[email protected]("/webhook", methods=["POST"])\ndef webhook():\n # Vérifier la signature\n signature = request.headers.get("X-ObsiGate-Signature", "")\n body = request.get_data()\n expected = "sha256=" + hmac.new(\n WEBHOOK_SECRET.encode(), body, hashlib.sha256\n ).hexdigest()\n if not hmac.compare_digest(signature, expected):\n return "Invalid signature", 403\n\n payload = request.get_json()\n print(f"Événement: {payload['event']}")\n print(f"Fichier: {payload['data']['vault']}/{payload['data']['path']}")\n return "OK", 200\n\napp.run(port=5000)</code></pre> ><code>from flask import Flask, request\nimport hmac, hashlib\n\napp = Flask(__name__)\nWEBHOOK_SECRET = "mon-secret" # même que dans ObsiGate\n\[email protected]("/webhook", methods=["POST"])\ndef webhook():\n # Vérifier la signature\n signature = request.headers.get("X-ObsiGate-Signature", "")\n body = request.get_data()\n expected = "sha256=" + hmac.new(\n WEBHOOK_SECRET.encode(), body, hashlib.sha256\n ).hexdigest()\n if not hmac.compare_digest(signature, expected):\n return "Invalid signature", 403\n\n payload = request.get_json()\n print(f"Événement: {payload['event']}")\n print(f"Fichier: {payload['data']['vault']}/{payload['data']['path']}")\n return "OK", 200\n\napp.run(port=5000)</code></pre>
<h4>n8n / Make (no-code)</h4> <h4 data-i18n="help.d1ea1dc6">n8n / Make (no-code)</h4>
<ol> <ol>
<li> <li>
Créez un Créez un
@@ -4350,14 +4350,14 @@
Dans ObsiGate, ajoutez un webhook pointant Dans ObsiGate, ajoutez un webhook pointant
vers cette URL vers cette URL
</li> </li>
<lidata-i18n="auto.14c75ac6">Sélectionnez les événements souhaités</li> <li data-i18n="auto.14c75ac6">Sélectionnez les événements souhaités</li>
<lidata-i18n="auto.2a5af19b"> <li data-i18n="auto.2a5af19b">
Le workflow se déclenche automatiquement à Le workflow se déclenche automatiquement à
chaque événement chaque événement
</li> </li>
</ol> </ol>
<h4>Notification Discord</h4> <h4 data-i18n="help.229fd3e2">Notification Discord</h4>
<p> <p>
Utilisez un webhook relais (n8n, Make, ou un Utilisez un webhook relais (n8n, Make, ou un
script) pour transformer le payload ObsiGate en script) pour transformer le payload ObsiGate en
@@ -4384,7 +4384,7 @@ curl -H "Content-Type: application/json" -d "{
\"content\": \"📝 **$event** — $path\" \"content\": \"📝 **$event** — $path\"
}" "$WEBHOOK_URL"</code></pre> }" "$WEBHOOK_URL"</code></pre>
<h4>Tester avec curl</h4> <h4 data-i18n="help.40dd7e38">Tester avec curl</h4>
<pre <pre
style=" style="
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -4400,7 +4400,7 @@ curl -X POST https://votre-serveur.com/webhook \
-H "X-ObsiGate-Signature: sha256=$(echo -n '{"event":"file_created",...}' | openssl dgst -sha256 -hmac 'mon-secret' | cut -d' ' -f2)" \ -H "X-ObsiGate-Signature: sha256=$(echo -n '{"event":"file_created",...}' | openssl dgst -sha256 -hmac 'mon-secret' | cut -d' ' -f2)" \
-d '{"event":"file_created","timestamp":"2026-06-03T14:30:00Z","data":{"vault":"IT","path":"notes/test.md"}}'</code></pre> -d '{"event":"file_created","timestamp":"2026-06-03T14:30:00Z","data":{"vault":"IT","path":"notes/test.md"}}'</code></pre>
<h3>Limitations actuelles</h3> <h3 data-i18n="help.381abec7">Limitations actuelles</h3>
<ul> <ul>
<li> <li>
Timeout de <strong>5 secondes</strong> par Timeout de <strong>5 secondes</strong> par
@@ -4410,7 +4410,7 @@ curl -X POST https://votre-serveur.com/webhook \
<li> <li>
Les modifications détectées par le watcher Les modifications détectées par le watcher
filesystem (watchdog) filesystem (watchdog)
<strongdata-i18n="auto.98c547ea">ne déclenchent pas</strong> de <strong data-i18n="auto.98c547ea">ne déclenchent pas</strong> de
webhooks — seules les opérations via l'API webhooks — seules les opérations via l'API
REST sont prises en compte REST sont prises en compte
</li> </li>
@@ -4418,18 +4418,18 @@ curl -X POST https://votre-serveur.com/webhook \
<code>file_modified</code> n'est pas encore <code>file_modified</code> n'est pas encore
dispatché (réservé pour version future) dispatché (réservé pour version future)
</li> </li>
<lidata-i18n="auto.1d3330cc">Pas de retry automatique en cas d'échec</li> <li data-i18n="auto.1d3330cc">Pas de retry automatique en cas d'échec</li>
<lidata-i18n="auto.4dfa6a25"> <li data-i18n="auto.4dfa6a25">
Pas de filtrage par vault — un webhook Pas de filtrage par vault — un webhook
écoute toutes les vaults écoute toutes les vaults
</li> </li>
</ul> </ul>
</section> </section>
<section class="help-section" id="help-sauvegardes"> <section class="help-section" id="help-sauvegardes">
<h2>💾 Sauvegardes et Audits</h2> <h2 data-i18n="help.62549eca">💾 Sauvegardes et Audits</h2>
<h3 data-i18n="help.backup_auto">Backup automatique</h3> <h3 data-i18n="help.backup_auto">Backup automatique</h3>
<pdata-i18n="auto.ab5e6155"> <p data-i18n="auto.ab5e6155">
ObsiGate crée automatiquement des sauvegardes ObsiGate crée automatiquement des sauvegardes
avant chaque modification destructive. avant chaque modification destructive.
</p> </p>
@@ -4444,14 +4444,14 @@ curl -X POST https://votre-serveur.com/webhook \
est horodaté est horodaté
</li> </li>
<li> <li>
<strongdata-i18n="auto.41d7c6af">Répertoire dédié</strong> : <strong data-i18n="auto.41d7c6af">Répertoire dédié</strong> :
<code>.obsigate-backup/</code> dans le <code>.obsigate-backup/</code> dans le
répertoire de la vault répertoire de la vault
</li> </li>
</ul> </ul>
<h3 data-i18n="help.audit_log">Audit log</h3> <h3 data-i18n="help.audit_log">Audit log</h3>
<pdata-i18n="auto.2bc24d2e"> <p data-i18n="auto.2bc24d2e">
Toutes les opérations sensibles sont tracées Toutes les opérations sensibles sont tracées
dans un journal. dans un journal.
</p> </p>
@@ -4462,7 +4462,7 @@ curl -X POST https://votre-serveur.com/webhook \
lines lines
</li> </li>
<li> <li>
<strongdata-i18n="auto.598a0ca7">Événements tracés</strong> : <strong data-i18n="auto.598a0ca7">Événements tracés</strong> :
Écritures, suppressions, changements de Écritures, suppressions, changements de
configuration configuration
</li> </li>
@@ -4475,16 +4475,16 @@ curl -X POST https://votre-serveur.com/webhook \
<!-- 🛡️ Sécurité --> <!-- 🛡️ Sécurité -->
<section class="help-section" id="help-securite"> <section class="help-section" id="help-securite">
<h2data-i18n="auto.37561472">🛡️ Sécurité</h2> <h2 data-i18n="auto.37561472">🛡️ Sécurité</h2>
<h3>Authentification</h3> <h3 data-i18n="help.c48fb18a">Authentification</h3>
<ul> <ul>
<li> <li>
<strong>JWT + Argon2id</strong> : Tokens JWT <strong>JWT + Argon2id</strong> : Tokens JWT
avec mots de passe hachés Argon2id avec mots de passe hachés Argon2id
</li> </li>
<li> <li>
<strongdata-i18n="auto.72e515fa">Contrôle d'accès par vault</strong> <strong data-i18n="auto.72e515fa">Contrôle d'accès par vault</strong>
: Chaque utilisateur voit uniquement ses : Chaque utilisateur voit uniquement ses
vaults vaults
</li> </li>
@@ -4503,7 +4503,7 @@ curl -X POST https://votre-serveur.com/webhook \
</li> </li>
</ul> </ul>
<h3>Protection</h3> <h3 data-i18n="help.83f1d9ca">Protection</h3>
<ul> <ul>
<li> <li>
<strong>Secret redactor</strong> : Masque <strong>Secret redactor</strong> : Masque
@@ -4532,12 +4532,12 @@ curl -X POST https://votre-serveur.com/webhook \
</section> </section>
<section class="help-section" id="help-astuces"> <section class="help-section" id="help-astuces">
<h2>💡 Astuces et bonnes pratiques</h2> <h2 data-i18n="help.686f8313">💡 Astuces et bonnes pratiques</h2>
<h3data-i18n="auto.559ef1da">Workflow recommandé</h3> <h3 data-i18n="auto.559ef1da">Workflow recommandé</h3>
<ol> <ol>
<li> <li>
<strongdata-i18n="auto.678711b5">Sélectionnez un contexte</strong> : <strong data-i18n="auto.678711b5">Sélectionnez un contexte</strong> :
Choisissez un vault pour réduire le bruit Choisissez un vault pour réduire le bruit
</li> </li>
<li> <li>
@@ -4558,7 +4558,7 @@ curl -X POST https://votre-serveur.com/webhook \
</li> </li>
</ol> </ol>
<h3>Optimisations</h3> <h3 data-i18n="help.fe388b67">Optimisations</h3>
<ul> <ul>
<li> <li>
<strong>Masquez la sidebar</strong> : Plus <strong>Masquez la sidebar</strong> : Plus
@@ -4572,7 +4572,7 @@ curl -X POST https://votre-serveur.com/webhook \
trouver un fichier trouver un fichier
</li> </li>
<li> <li>
<strongdata-i18n="auto.3be698f6">Favorisez les opérateurs</strong> : <strong data-i18n="auto.3be698f6">Favorisez les opérateurs</strong> :
<code>tag:</code> et <code>tag:</code> et
<code>vault:</code> accélèrent la recherche <code>vault:</code> accélèrent la recherche
</li> </li>
@@ -4582,7 +4582,7 @@ curl -X POST https://votre-serveur.com/webhook \
</li> </li>
</ul> </ul>
<h3>Trucs et astuces</h3> <h3 data-i18n="help.2a92203f">Trucs et astuces</h3>
<ul> <ul>
<li> <li>
<strong>Navigation visuelle</strong> : Le <strong>Navigation visuelle</strong> : Le
@@ -4615,7 +4615,7 @@ curl -X POST https://votre-serveur.com/webhook \
<h3 data-i18n="help.advanced_use_cases">Cas d'usage avancés</h3> <h3 data-i18n="help.advanced_use_cases">Cas d'usage avancés</h3>
<ul> <ul>
<li> <li>
<strongdata-i18n="auto.b86ba5ea">Recherche multi-critères</strong> : <strong data-i18n="auto.b86ba5ea">Recherche multi-critères</strong> :
<code <code
>tag:docker tag:linux vault:IT >tag:docker tag:linux vault:IT
nginx</code nginx</code
@@ -4627,7 +4627,7 @@ curl -X POST https://votre-serveur.com/webhook \
toutes les notes similaires toutes les notes similaires
</li> </li>
<li> <li>
<strongdata-i18n="auto.4fa5d7c2">Édition rapide</strong> : Ouvrez <strong data-i18n="auto.4fa5d7c2">Édition rapide</strong> : Ouvrez
l'éditeur, modifiez, sauvegardez l'éditeur, modifiez, sauvegardez
</li> </li>
<li> <li>
@@ -4635,7 +4635,7 @@ curl -X POST https://votre-serveur.com/webhook \
fichiers pour backup ou partage fichiers pour backup ou partage
</li> </li>
<li> <li>
<strongdata-i18n="auto.79f6e1dd">Multi-fenêtres</strong> : Ouvrez <strong data-i18n="auto.79f6e1dd">Multi-fenêtres</strong> : Ouvrez
plusieurs notes dans des onglets séparés plusieurs notes dans des onglets séparés
</li> </li>
</ul> </ul>
+37 -1
View File
@@ -792,5 +792,41 @@
"help.00b9572b": "Results ranked by TF-IDF relevance", "help.00b9572b": "Results ranked by TF-IDF relevance",
"help.a4a4e21b": "\"×\" button to reset the filter", "help.a4a4e21b": "\"×\" button to reset the filter",
"help.04df1506": "Global search with autocomplete", "help.04df1506": "Global search with autocomplete",
"help.d5c977ac": "Code blocks adapt to the theme" "help.d5c977ac": "Code blocks adapt to the theme",
"help.733f0559": "🗺️ Navigation",
"help.8c5341e0": "📑 Tab management",
"help.adf30d78": "🔍 Recherche",
"help.a648c49e": "Facets and sorting",
"help.2507242f": "🏷️ Tags",
"help.5f87ea79": "Tag cloud",
"help.2c03a7ba": "Inline vs frontmatter tags",
"help.63f024d4": "Template tag filtering",
"help.c017944b": "📄 Fichiers",
"help.cf8615b1": "Visualization",
"help.9c7a0a8d": "🗺️ Graph View",
"help.b6619ac9": "Opening",
"help.61ee5a22": "Interaction",
"help.8caed987": "Display",
"help.86e3825d": "🎨 Customization",
"help.7bcbb2e3": "Sidebar resizing",
"help.62308f96": "⌨️ Command Palette",
"help.6d547397": "File mode",
"help.3cf370b1": "Command mode",
"help.2a2e5b0f": "⌨️ Keyboard shortcuts",
"help.096367af": "Visual indicators",
"help.2dad2bfd": "Automatic save",
"help.8c65b2f2": "🔗 Sharing and Webhooks",
"help.29afa01d": "🪝 Webhooks",
"help.77f4f06e": "Payload format",
"help.550b0240": "Concrete examples",
"help.d1ea1dc6": "n8n / Make (no-code)",
"help.229fd3e2": "Discord notification",
"help.40dd7e38": "Test with curl",
"help.381abec7": "Current limitations",
"help.62549eca": "💾 Backups and Audits",
"help.c48fb18a": "Authentication",
"help.83f1d9ca": "Protection",
"help.686f8313": "💡 Tips and best practices",
"help.fe388b67": "Optimizations",
"help.2a92203f": "Tips and tricks"
} }
+37 -1
View File
@@ -792,5 +792,41 @@
"help.00b9572b": ":\n Résultats classés par pertinence TF-IDF", "help.00b9572b": ":\n Résultats classés par pertinence TF-IDF",
"help.a4a4e21b": ": Bouton \"×\" pour\n réinitialiser le filtre", "help.a4a4e21b": ": Bouton \"×\" pour\n réinitialiser le filtre",
"help.04df1506": ":\n Recherche globale avec autocomplétion", "help.04df1506": ":\n Recherche globale avec autocomplétion",
"help.d5c977ac": ": Les blocs de\n code s'adaptent au thème" "help.d5c977ac": ": Les blocs de\n code s'adaptent au thème",
"help.733f0559": "🗺️ Navigation",
"help.8c5341e0": "📑 Gestion des onglets",
"help.adf30d78": "🔍 Recherche",
"help.a648c49e": "Facettes et tri",
"help.2507242f": "🏷️ Tags",
"help.5f87ea79": "Tag cloud",
"help.2c03a7ba": "Tags inline vs frontmatter",
"help.63f024d4": "Filtrage de tags template",
"help.c017944b": "📄 Fichiers",
"help.cf8615b1": "Visualisation",
"help.9c7a0a8d": "🗺️ Vue Graphe",
"help.b6619ac9": "Ouverture",
"help.61ee5a22": "Interaction",
"help.8caed987": "Affichage",
"help.86e3825d": "🎨 Personnalisation",
"help.7bcbb2e3": "Redimensionnement de la sidebar",
"help.62308f96": "⌨️ Palette de commandes",
"help.6d547397": "Mode fichiers",
"help.3cf370b1": "Mode commandes",
"help.2a2e5b0f": "⌨️ Raccourcis clavier",
"help.096367af": "Indicateurs visuels",
"help.2dad2bfd": "Sauvegarde automatique",
"help.8c65b2f2": "🔗 Partage et Webhooks",
"help.29afa01d": "🪝 Webhooks",
"help.77f4f06e": "Format du payload",
"help.550b0240": "Exemples concrets",
"help.d1ea1dc6": "n8n / Make (no-code)",
"help.229fd3e2": "Notification Discord",
"help.40dd7e38": "Tester avec curl",
"help.381abec7": "Limitations actuelles",
"help.62549eca": "💾 Sauvegardes et Audits",
"help.c48fb18a": "Authentification",
"help.83f1d9ca": "Protection",
"help.686f8313": "💡 Astuces et bonnes pratiques",
"help.fe388b67": "Optimisations",
"help.2a92203f": "Trucs et astuces"
} }