Files
ObsiGate/ROADMAP.md
T
bruno 182e40800e
CI / lint (push) Failing after 4s
CI / test (push) Has been skipped
CI / build (push) Has been skipped
CI / security (push) Successful in 8s
docs: roadmap #20-29 marked FAIT
2026-06-04 23:24:01 -04:00

207 lines
8.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é — FAIT
- **Effort** : 0.5 jour | **Impact** : 🟡
- [x] CDN mermaid@11 depuis jsdelivr
- [x] Module `mermaid-viewer.js` avec `securityLevel: 'strict'` et `startOnLoad: false`
### ✅ 21. Mermaid.js — Moteur de Rendu Dynamique — FAIT
- **Effort** : 1 jour | **Impact** : 🟡
- [x] `renderMermaidBlocks(container)` cible `<code class="language-mermaid">`
- [x] Validation via `mermaid.parse()` en try/catch
- [x] Succès → injection SVG, échec → bloc d'erreur stylisé
### ✅ 22. Mermaid.js — Templates — FAIT
- **Effort** : 0.5 jour | **Impact** : 🟡
- [x] `MERMAID_TEMPLATES` avec 22 types (core + avancés + beta)
### ✅ 23. Mermaid.js — UX Éditeur — FAIT
- **Effort** : 1 jour | **Impact** : 🟡
- [x] Live preview avec debounce 500ms dans l'éditeur
- [x] Mise à jour automatique au changement de contenu
### ✅ 24. Mermaid.js — Thème, Export, Obsidian — FAIT
- **Effort** : 1 jour | **Impact** : 🟡
- [x] `updateMermaidTheme(isDark)` pour synchronisation dark/light
- [x] Export SVG + PNG (via canvas)
- [x] Pré-processeur Obsidian : `[[liens]]`, `![[img]]`, `==highlight==`
### ✅ 25. Mermaid.js — Rendu inline viewer — FAIT
- **Effort** : 0.5 jour | **Impact** : 🟡
- [x] `renderMermaidBlocks()` appelé après rendu Markdown dans viewer.js
### ✅ 26. Mermaid.js — Live preview — FAIT
- **Effort** : 0.5 jour | **Impact** : 🟡
- [x] Panneau `#mermaid-live-preview` sous l'éditeur, debounce 500ms
- [x] Extraction auto des blocs ````mermaid` du contenu
### ✅ 27. Mermaid.js — Zoom et Pan — FAIT
- **Effort** : 0.5 jour | **Impact** : 🟢
- [x] Zoom molette, drag (grab/grabbing), boutons +/- et Reset
### ✅ 28. Mermaid.js — Mode plein écran — FAIT
- **Effort** : 0.3 jour | **Impact** : 🟢
- [x] Overlay plein écran, touche Échap, clic fond pour fermer
### ✅ 29. Mermaid.js — Mode focus — FAIT
- **Effort** : 0.3 jour | **Impact** : 🟡
- [x] `setupFocusMode()` — clic sur diagramme → panneau latéral 480px
- [x] Bouton X pour fermer, mise à jour au re-clic
### 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