Files
ObsiGate/ROADMAP.md
T
bruno 4674328303
CI / lint (push) Failing after 8s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
docs: add Mermaid UX features #25-29 + clean duplicate #14
2026-06-04 23:16:47 -04:00

220 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 `<code class="language-mermaid">`
- [ ] 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]]` → `<a>`, `![[img.png|100]]` → `<img>`, `==texte==` → `<mark>`
### 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