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

8.1 KiB
Raw Blame History

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} + backend ai.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%) — 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 : 🟡
  • 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/compress avec params older_than_days et dry_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/auto avec param since_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é — FAIT

  • Effort : 0.5 jour | Impact : 🟡
  • CDN mermaid@11 depuis jsdelivr
  • Module mermaid-viewer.js avec securityLevel: 'strict' et startOnLoad: false

✅ 21. Mermaid.js — Moteur de Rendu Dynamique — FAIT

  • Effort : 1 jour | Impact : 🟡
  • renderMermaidBlocks(container) cible <code class="language-mermaid">
  • Validation via mermaid.parse() en try/catch
  • Succès → injection SVG, échec → bloc d'erreur stylisé

✅ 22. Mermaid.js — Templates — FAIT

  • Effort : 0.5 jour | Impact : 🟡
  • MERMAID_TEMPLATES avec 22 types (core + avancés + beta)

✅ 23. Mermaid.js — UX Éditeur — FAIT

  • Effort : 1 jour | Impact : 🟡
  • Live preview avec debounce 500ms dans l'éditeur
  • Mise à jour automatique au changement de contenu

✅ 24. Mermaid.js — Thème, Export, Obsidian — FAIT

  • Effort : 1 jour | Impact : 🟡
  • updateMermaidTheme(isDark) pour synchronisation dark/light
  • Export SVG + PNG (via canvas)
  • Pré-processeur Obsidian : [[liens]], ![[img]], ==highlight==

✅ 25. Mermaid.js — Rendu inline viewer — FAIT

  • Effort : 0.5 jour | Impact : 🟡
  • renderMermaidBlocks() appelé après rendu Markdown dans viewer.js

✅ 26. Mermaid.js — Live preview — FAIT

  • Effort : 0.5 jour | Impact : 🟡
  • Panneau #mermaid-live-preview sous l'éditeur, debounce 500ms
  • Extraction auto des blocs ````mermaid` du contenu

✅ 27. Mermaid.js — Zoom et Pan — FAIT

  • Effort : 0.5 jour | Impact : 🟢
  • Zoom molette, drag (grab/grabbing), boutons +/- et Reset

✅ 28. Mermaid.js — Mode plein écran — FAIT

  • Effort : 0.3 jour | Impact : 🟢
  • Overlay plein écran, touche Échap, clic fond pour fermer

✅ 29. Mermaid.js — Mode focus — FAIT

  • Effort : 0.3 jour | Impact : 🟡
  • setupFocusMode() — clic sur diagramme → panneau latéral 480px
  • 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