# ObsiGate — Roadmap > **Version :** 2.0.0-dev | **Dernière mise à jour :** 2026-06-04 > Voir aussi [CHANGELOG.md](./CHANGELOG.md), [docs/ROADMAP.md](./docs/ROADMAP.md), [AUDIT_TECHNIQUE.md](./docs/AUDIT_TECHNIQUE_2026-05-27.md) --- ## ✅ Complété (v1.0.0 → v1.9.0) ### AI Editor (v1.7.0) - [x] Toolbar dropdown menus : Edit, Tone, Translate, Generate, Rewrite, Toolbox - [x] Multi-provider : DeepSeek, OpenRouter, Gemini - [x] 16 endpoints REST `/api/ai/{action}` + backend `ai.py` / `ai_routes.py` - [x] Auto-save silencieux (2s debounce), loading toasts, cache toolbar si pas de clé API - [x] Messages d'erreur clairs (401 → clé invalide, etc.) ### Vue graphe — Phases 3 & 4 (v1.6.0) - [x] Filtre par type (dossier/fichier/.md/autre), mode focus, plein écran, export PNG - [x] Barnes-Hut O(n log n), cache graphe - [x] Header flat design, sticky panels, navigation historique ← → ↑ - [x] Ctrl+survol → aperçu contenu formaté ### Performance & CI/CD (v1.6.0) - [x] `sortedcontainers` — O(log n) insert/remove dans l'index inversé - [x] CI/CD Pipeline Gitea Actions (lint → test → security → build) - [x] Ruff linting — 0 erreur - [x] Mypy type checking — 0 erreur - [x] Pytest — **284 tests, 70% coverage** (main.py 61%, router.py 67%, watcher.py 62%) - [x] Tests API main.py (84 tests), Auth API (13 tests), Watcher mocké (14 tests) - [x] Bandit SAST + Pip-audit + Docker build + coverage artifact ### Split app.js en modules ES (v1.5.1) - [x] 8 875 lignes → 16 modules dans `frontend/js/` - [x] Validateur imports/exports CI - [x] Tests unitaires frontend (Node.js) ### Stemming français (v1.5.1) - [x] `snowballstemmer` — recherche accent-insensitive et morphologique - [x] Performance O(T) au lieu de O(S×T), crash guard IndexError ### Fonctionnalités avancées (v1.5.0) - [x] Publication publique de documents (lien partageable avec token) - [x] Webhooks HTTP avec signature HMAC-SHA256 - [x] Dashboard statistiques (fichiers, tags, taille, vaults) - [x] Documentation OpenAPI enrichie (Swagger + Redoc) - [x] Gestion des conflits Syncthing - [x] Index inversé incrémental (hook pattern) ### Sécurité (v1.4.0) - [x] JWT + Argon2id - [x] Rate limiting login (IP + compte) - [x] Audit log avec rotation - [x] Backup automatique avant écriture - [x] Redaction de secrets - [x] Headers CSP - [x] Protection path traversal - [x] Utilisateur non-root Docker ### UX / Qualité - [x] `.dockerignore`, `.env` → `.env.example`, Ruff config, Mypy config - [x] Compression GZip (SSE-safe), Cache-Control immutable - [x] Recherche sans I/O disque - [x] Backlinks panel - [x] Fichiers non-supportés (UI download) --- ## 🔜 Prochaines étapes (P1/P2) ### ✅ 1. Tests & Couverture — FAIT - Coverage **49% → 70%** ✅ - ~~Cibles : main.py (26%), watcher.py (23%), router.py (37%)~~ — **FAIT** - ~~Tests E2E Playwright (fondations)~~ — reste à faire ### ✅ 2. Export PDF — FAIT ### ✅ 3. Palette de commandes (Ctrl+ALT+SPACE) — FAIT ### ✅ 4. Barre d'outils mobile + Palette fichiers/commandes 📱 — FAIT ### ✅ 5. Drag & drop de fichiers — FAIT ### ✅ 6. Diff viewer backups — FAIT (v1.9.0) - Comparer versions sauvegardées, diff unifié + côte à côte, restauration - Backups créés uniquement sur sauvegarde manuelle (Ctrl+S), pas sur auto-save - Gestionnaire de backups : page complète avec filtre, suppression, purge - Auto-nettoyage : limite configurable `max_backups_per_file` (défaut 10) ### ✅ 7. Fichiers récents par vault — FAIT ### ✅ 8. Git tags semver — FAIT (v1.8.0, v1.9.0 à venir) ### ✅ 9. Filtres search avancés — FAIT - Opérateurs `created:`, `modified:`, `size:` ### ✅ 10. Déduplication IGNORED_DIRS — FAIT ### ✅ 11. Indicateur AI Actif — FAIT ### ✅ 12. Page d'accueil de voute — FAIT (récursif) ### ✅ 13. Indexation non-bloquante — FAIT --- ## 📋 Reste à faire (P2/P3) ### ✅ 15. Visualisation backup dans le gestionnaire — FAIT - **Effort** : 0.5 jour | **Impact** : 🟡 - [x] Clic sur un backup → panneau latéral avec aperçu du contenu (limité à 100 Ko) - [x] Endpoint `GET /api/backups/content?path=...` - [x] Panneau refermable avec bouton X ### ✅ 16. Purge par vault dans le gestionnaire — FAIT - **Effort** : 0.5 jour | **Impact** : 🟡 - [x] Bouton rouge « Vider » par vault dans le gestionnaire - [x] Confirmation avant suppression ### ✅ 17. Compression des backups — FAIT - **Effort** : 0.5 jour | **Impact** : 🟢 - [x] Endpoint `POST /api/backups/compress` avec params `older_than_days` et `dry_run` - [x] Compression gzip niveau 6, suppression du .bak original si plus petit - [x] Skip si la compression n'aide pas (fichier déjà petit) ### ✅ 18. Backup automatique périodique — FAIT - **Effort** : 1 jour | **Impact** : 🟡 - [x] Endpoint `POST /api/backups/auto` avec param `since_hours` (défaut 24) - [x] Backup de tous les fichiers modifiés depuis N heures, tous vaults - [x] Utilisable via cron job externe ou appel manuel ### ✅ 19. Restauration depuis le gestionnaire — FAIT - **Effort** : 0.5 jour | **Impact** : 🟡 - [x] Bouton « Restaurer » (icône rotate-ccw) sur chaque backup dans le gestionnaire - [x] Extraction automatique du timestamp depuis le nom du fichier backup - [x] Confirmation avant restauration, toast de succès --- ## 📋 Reste à faire (P1/P2) ### 20. Mermaid.js — Initialisation et Sécurité - **Effort** : 0.5 jour | **Impact** : 🟡 - [ ] Installer `mermaid` via npm/yarn - [ ] Module `mermaidConfig.js` avec `securityLevel: 'strict'` (anti-XSS) - [ ] `startOnLoad: false` pour gestion manuelle du cycle de vie - [ ] `fontFamily: 'inherit'` pour cohérence typographique ### 21. Mermaid.js — Moteur de Rendu Dynamique - **Effort** : 1 jour | **Impact** : 🟡 - [ ] Fonction `renderMermaidBlocks(container)` — cible `` - [ ] Validation syntaxe via `await mermaid.parse(code)` en try/catch - [ ] Succès → `mermaid.render(uniqueId, code)` → injection SVG dans le DOM - [ ] Échec → bloc d'erreur UI stylisé (fond rouge, message explicite) ### 22. Mermaid.js — Templates pour tous les types - **Effort** : 0.5 jour | **Impact** : 🟡 - [ ] Dictionnaire `MERMAID_TEMPLATES` avec squelette valide par type - [ ] Core : `flowchart`, `sequenceDiagram`, `classDiagram`, `stateDiagram-v2`, `erDiagram`, `journey`, `gantt`, `pie`, `gitGraph`, `requirementDiagram` - [ ] Avancés : `mindmap`, `timeline`, `quadrantChart`, `C4Context`, `C4Container`, `C4Component`, `C4Dynamic`, `C4Deployment` - [ ] Beta : `xychart-beta`, `block-beta`, `sankey-beta` (avec commentaire) ### 23. Mermaid.js — UX dans l'éditeur - **Effort** : 1 jour | **Impact** : 🟡 - [ ] Coloration syntaxique Mermaid dans l'éditeur (CodeMirror) - [ ] Snippets : taper ````mermaid` → dropdown des types de diagrammes - [ ] Sélection d'un type → insertion auto du template correspondant ### 24. Mermaid.js — Thème, Export, Compatibilité Obsidian - **Effort** : 1 jour | **Impact** : 🟡 - [ ] `updateMermaidTheme(isDark)` → `mermaid.initialize({ theme: 'dark'|'default' })` - [ ] Re-render automatique des blocs au changement de thème - [ ] Bouton "Télécharger" → export SVG (ou PNG via canvas) - [ ] Pré-processeur Obsidian : `[[lien]]` → ``, `![[img.png|100]]` → ``, `==texte==` → `` ### 25. Mermaid.js — Rendu inline dans le viewer - **Effort** : 0.5 jour | **Impact** : 🟡 - [ ] Les blocs ````mermaid` dans la vue de lecture sont rendus en SVG - [ ] Appel a `renderMermaidBlocks()` apres le rendu Markdown -> HTML ### 26. Mermaid.js — Live preview dans l'editeur - **Effort** : 0.5 jour | **Impact** : 🟡 - [ ] Panneau de previsualisation avec debounce 500ms - [ ] Indicateur d'erreur en temps reel (rouge si syntaxe invalide) ### 27. Mermaid.js — Zoom et Pan - **Effort** : 0.5 jour | **Impact** : 🟢 - [ ] Zoom molette (Ctrl+molette) sur les diagrammes - [ ] Drag pour naviguer dans les grands diagrammes - [ ] Bouton "Reset zoom" ### 28. Mermaid.js — Mode plein ecran - **Effort** : 0.3 jour | **Impact** : 🟢 - [ ] Bouton fullscreen (comme la vue graphe existante) - [ ] Touche Echap pour quitter, fond sombre ### 29. Mermaid.js — Mode focus (apercu agrandi) - **Effort** : 0.3 jour | **Impact** : 🟡 - [ ] Clic sur un diagramme -> panneau lateral ou modal - [ ] Le reste du document reste visible - [ ] Bouton pour basculer entre focus et vue inline ### 14. Tests E2E Playwright - **Effort** : 2-3 jours | **Impact** : 🟢 - Tests navigateur automatises (login, navigation, recherche, sauvegarde) --- ## 📋 Backlog (P3/P4 — Long terme) - **Mode hors-ligne PWA complet** : IndexedDB pour recherche offline + synchro - **OAuth2/OIDC** : Google, GitHub, authentification SSO - **Plugins système** : Extensions utilisateur (custom renderers, search operators) - **Collaboration temps réel** : WebSocket + CRDT (Yjs) pour édition simultanée - **i18n** : Support anglais + français - **MFA** : TOTP/WebAuthn - **Thèmes personnalisés** : CSS variables exposées - **Export multi-formats** : HTML, MD bundle, ePub - **Notifications web** : Push API pour changements de vault - **Health check enrichi** : État de l'index, mémoire, uptime, clients SSE