8.2 KiB
8.2 KiB
ObsiGate — Roadmap
Version : 2.0.0-dev | Dernière mise à jour : 2026-06-04 Voir aussi CHANGELOG.md, docs/ROADMAP.md, AUDIT_TECHNIQUE.md
✅ Complété (v1.0.0 → v1.9.0)
AI Editor (v1.7.0)
- Toolbar dropdown menus : Edit, Tone, Translate, Generate, Rewrite, Toolbox
- Multi-provider : DeepSeek, OpenRouter, Gemini
- 16 endpoints REST
/api/ai/{action}+ backendai.py/ai_routes.py - Auto-save silencieux (2s debounce), loading toasts, cache toolbar si pas de clé API
- Messages d'erreur clairs (401 → clé invalide, etc.)
Vue graphe — Phases 3 & 4 (v1.6.0)
- Filtre par type (dossier/fichier/.md/autre), mode focus, plein écran, export PNG
- Barnes-Hut O(n log n), cache graphe
- Header flat design, sticky panels, navigation historique ← → ↑
- Ctrl+survol → aperçu contenu formaté
Performance & CI/CD (v1.6.0)
sortedcontainers— O(log n) insert/remove dans l'index inversé- CI/CD Pipeline Gitea Actions (lint → test → security → build)
- Ruff linting — 0 erreur
- Mypy type checking — 0 erreur
- Pytest — 284 tests, 70% coverage (main.py 61%, router.py 67%, watcher.py 62%)
- Tests API main.py (84 tests), Auth API (13 tests), Watcher mocké (14 tests)
- Bandit SAST + Pip-audit + Docker build + coverage artifact
Split app.js en modules ES (v1.5.1)
- 8 875 lignes → 16 modules dans
frontend/js/ - Validateur imports/exports CI
- Tests unitaires frontend (Node.js)
Stemming français (v1.5.1)
snowballstemmer— recherche accent-insensitive et morphologique- Performance O(T) au lieu de O(S×T), crash guard IndexError
Fonctionnalités avancées (v1.5.0)
- Publication publique de documents (lien partageable avec token)
- Webhooks HTTP avec signature HMAC-SHA256
- Dashboard statistiques (fichiers, tags, taille, vaults)
- Documentation OpenAPI enrichie (Swagger + Redoc)
- Gestion des conflits Syncthing
- Index inversé incrémental (hook pattern)
Sécurité (v1.4.0)
- JWT + Argon2id
- Rate limiting login (IP + compte)
- Audit log avec rotation
- Backup automatique avant écriture
- Redaction de secrets
- Headers CSP
- Protection path traversal
- Utilisateur non-root Docker
UX / Qualité
.dockerignore,.env→.env.example, Ruff config, Mypy config- Compression GZip (SSE-safe), Cache-Control immutable
- Recherche sans I/O disque
- Backlinks panel
- 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%)— FAITTests 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)
14. Tests E2E Playwright
- Effort : 2-3 jours | Impact : 🟢
- Tests navigateur automatisés (login, navigation, recherche, sauvegarde)
✅ 15. Visualisation backup dans le gestionnaire — FAIT
- Effort : 0.5 jour | Impact : 🟡
- Clic sur un backup → panneau latéral avec aperçu du contenu (limité à 100 Ko)
- Endpoint
GET /api/backups/content?path=... - Panneau refermable avec bouton X
✅ 16. Purge par vault dans le gestionnaire — FAIT
- Effort : 0.5 jour | Impact : 🟡
- Bouton rouge « Vider » par vault dans le gestionnaire
- Confirmation avant suppression
✅ 17. Compression des backups — FAIT
- Effort : 0.5 jour | Impact : 🟢
- Endpoint
POST /api/backups/compressavec paramsolder_than_daysetdry_run - Compression gzip niveau 6, suppression du .bak original si plus petit
- Skip si la compression n'aide pas (fichier déjà petit)
✅ 18. Backup automatique périodique — FAIT
- Effort : 1 jour | Impact : 🟡
- Endpoint
POST /api/backups/autoavec paramsince_hours(défaut 24) - Backup de tous les fichiers modifiés depuis N heures, tous vaults
- Utilisable via cron job externe ou appel manuel
✅ 19. Restauration depuis le gestionnaire — FAIT
- Effort : 0.5 jour | Impact : 🟡
- Bouton « Restaurer » (icône rotate-ccw) sur chaque backup dans le gestionnaire
- Extraction automatique du timestamp depuis le nom du fichier backup
- Confirmation avant restauration, toast de succès
📋 Reste à faire (P1/P2)
20. Mermaid.js — Initialisation et Sécurité
- Effort : 0.5 jour | Impact : 🟡
- Installer
mermaidvia npm/yarn - Module
mermaidConfig.jsavecsecurityLevel: 'strict'(anti-XSS) startOnLoad: falsepour gestion manuelle du cycle de viefontFamily: '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_TEMPLATESavec 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>
14. Tests E2E Playwright
- Effort : 2-3 jours | Impact : 🟢
- Tests navigateur automatisés (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