Files
ObsiGate/docs/ROADMAP.md
T
bruno c0eea526de
CI / lint (push) Successful in 1m34s
CI / security (push) Successful in 1m1s
CI / test (push) Successful in 2m44s
CI / build (push) Successful in 1m1s
CI / e2e (push) Successful in 10m51s
feat(ai): ajouter une section de la reponse et supporter l'editeur Forge (BUG-057, #102)
L'assistant IA peut desormais inserer sa reponse dans l'editeur Forge (postMessage parent-insert) en plus d'Editer, et chaque bloc de code propose un bouton « Ajouter la section » pour n'inserer que ce bloc.
2026-09-17 09:39:35 -04:00

19 KiB
Raw Blame History

ObsiGate — Roadmap

Version : 2.9.0 | Dernière mise à jour : 2026-09-17 Ce fichier ne contient que le travail à venir (🔵 En cours + ⚪ Backlog) et un index compact vers les fonctionnalités livrées.


Légende

Icône Signification
✅ Terminé
🔵 En cours
⚪ Prévu / Backlog
🔴 Impact Critique / Bloquant
🟡 Impact Utile / Attendu
🟢 Impact Nice-to-have / Confort

Convention : chaque item porte un ID stable #NN (clé de jointure entre roadmap, changelog et commits). Une fonctionnalité livrée sort de ce fichier et entre dans l'index « Complété » ci-dessous, avec son détail dans docs/features/ ou l'archive.


🔵 En cours

77. Application Desktop native — Tauri (Windows / Linux / macOS)

  • Effort : 8-12 jours | Impact : 🟡 | Framework : Tauri v2 (Rust + Webview)
  • Statut : livré (A→F) — projet Tauri, backend Python embarqué, fonctionnalités natives, jumplist vaults, bannière 1er lancement, build CI, UX, 24 tests Rust. Détail complet : features/desktop-tauri.md
  • Reste à faire :
    • Signature de l'updater Tauri (gratuit) : paire de clés générée, pubkey renseignée, createUpdaterArtifacts activé, secrets CI câblés
    • Manifeste latest.json généré par scripts/updater_manifest.py (intégré à publish_release.py), endpoint updater pointé sur main
    • Signature de code Windows : non retenue (pas de certificat) — alternatives : livrer non signé, SignPath.io (OSS gratuit), Certum OSS, Azure Trusted Signing, certificat EV
    • Exécuter les 6 tests E2E manuels — protocole documenté : DESKTOP_E2E_CHECKLIST.md

⚪ Backlog — Priorité 4 (P4)

73. Synchronisation multi-appareils — Obsidian Sync compatible

  • Effort : 6-8 jours | Impact : 🟢
  • Description : Synchronisation des vaults entre plusieurs instances d'ObsiGate via un protocole de synchronisation décentralisé ou compatible Obsidian Sync. Alternative self-hosted à Obsidian Sync.
  • Sous-tâches :
    • Protocole : évaluation CRDT vs OT vs diff/patch pour fichiers markdown
    • Transport : WebSocket ou polling HTTPS avec compression
    • Merge strategy : LWW (Last Writer Wins) avec historique des deux versions
    • Détection de changements : hash SHA-256 par fichier, journal des modifications
    • UI : page « Synchronisation » avec statut par appareil, historique des syncs
    • Conflits : UI de résolution manuelle (diff côte à côte entre version locale et distante)
    • Chiffrement : optionnel, chiffrement AES-256-GCM avant transmission
    • Pairing : échange de clé publique + code QR pour appairage des appareils

⚪ Backlog — Priorité 2 (P2)

83. Barre d'outils d'édition mobile — style Obsidian Android

  • Effort : 3-5 jours | Impact : 🟡 | Zone : frontend (mobile)
  • Statut : ✅ livré — ruban horizontal défilable ancré au-dessus du clavier, commandes étendues et personnalisation persistée. Détail : archive/COMPLETED_v1-v2.md (section #83).
  • Description : remplacer la barre de mise en forme Markdown actuelle par un ruban horizontal défilable ancré juste au-dessus du clavier virtuel, reprenant l'ergonomie de l'app Android Obsidian : fond anthracite aux coins arrondis, insertion/enrobage de la syntaxe au curseur ou sur la sélection, et personnalisation des commandes via une icône clé à molette.
  • Sous-tâches :
    • Ruban horizontal défilable (glissement tactile gauche/droite) ancré au-dessus du clavier
    • Actions rapides : annuler, refaire, [[ ]] (lien interne), modèle/fichiers, tag #, pièce jointe
    • Formatage : H1–H6, gras, italique, barré (~~), surligné (==), code en ligne/bloc, citation (>)
    • Liens externes, listes à puces/numérotées, case à cocher (- [ ]), indenter / désindenter
    • Personnalisation (clé à molette) : ajouter / supprimer / réordonner les commandes
    • i18n FR/EN + tests frontend (helpers purs) + E2E mobile

92. Assistant IA — Écosystème d'outils (phase 2 : web étendu, sources connectées, documents)

  • Effort : 3-5 jours | Impact : 🟠 | Zone : backend (backend/tools/)
  • Dépend de : #91 (registre + section « steps » + web_search/fetch_url livrés)
  • Description : étendre le catalogue d'outils de l'assistant au-delà du vault, en suivant la feuille de route technique détaillée : features/ai-tools-roadmap.md (frameworks évalués, bibliothèques par catégorie, transverse retry/cache/secrets/async).
  • Sous-tâches :
    • web_search : chaîne de repli sans clé (SearXNG → DuckDuckGo → Bing, OBSIGATE_WEB_FALLBACK) — BUG-051
    • web_search : fournisseurs optionnels à clé (Tavily, Brave, SerpAPI, Exa)
    • fetch_url : pages dynamiques via Playwright (worker isolé) ; crawl multi-pages Scrapy en tâche de fond
    • Sources connectées : Gitea/GitHub (priorité haute) puis Google Drive / OneDrive (OAuth2 authlib)
    • Production de documents : conversion, tableurs, PDF/Word (outils WRITE + confirmation)
    • Transverse : tenacity (backoff), cache SQLite des résultats web avec TTL, secrets via Infisical
    • Chaque outil : libellé labels.py + clés i18n ai.step.* FR/EN + tests (httpx mocké)

⚪ Backlog — Sécurité, architecture & performance (P0/P1)

84. Consolidation & sécurité — revue statique 2026-09-13 (phase 1)

  • Effort : 6-9 jours | Impact : 🔴 | Zone : backend + frontend | Référence : ISSUES_TODOLIST.md BUG-021 → BUG-034
  • Statut : 🟢 livré (phase 1) — sanitizer XSS, rate-limit/lockout MFA, isolation vaults, ReDoS, SSRF webhooks, cycle de vie des sessions, politique de mot de passe, verrous users.json, audits IP, rate-limit par compte, symlinks, recherche via inverted index, token en cookie HttpOnly. Détail : archive/COMPLETED_v1-v2.md (section #84).
  • Description : traiter toutes les vulnérabilités critiques et importantes issues de la revue statique : XSS markdown (escape=False) et page publique de partage, brute-force MFA, isolation des vaults (resolve_safe_path), ReDoS, SSRF webhooks, cycle de vie des sessions, politique de mot de passe, races users.json, audits IP, rate-limit partagé, indexation symlinks.
  • Sous-tâches :
    • Assainir le rendu markdown (sanitizer serveur en whitelist) et la page de partage (échappement title/frontmatter) — DOMPurify client non ajouté (défense en profondeur serveur suffisante)
    • Rate-limit + lockout sur les endpoints MFA (totp/verify, recovery, webauthn/verify)
    • Corriger resolve_safe_path (comparaison de chemin stricte par segment) + test de régression
    • Rotation du refresh token, révocation de l'access token au logout, persistance des JTI révoqués
    • Valider la politique de mot de passe à la création ; bloquer le SSRF des webhooks et externaliser les secrets
    • Verrous sur les mutations users.json ; consigner l'adresse IP réelle dans les audits
    • Ignorer les symlinks de l'index ; caps CPU/timeout regex (ReDoS)
    • [~] Durcir la CSP — partiel : directives object-src/base-uri/form-action/frame-ancestors ajoutées et token retiré de sessionStorage ; migration nonce restante (nécessite la conversion des gestionnaires d'événements inline)

85. Refonte architecturale — découpage du monolithe & persistance d'état (phase 2)

  • Effort : 8-12 jours | Impact : 🟡 | Zone : backend
  • Description : extraire le monolithe backend/main.py (~4 260 lignes) en routers FastAPI par domaine et rendre persistant l'état qui ne l'est pas (index de recherche, JTI révoqués, compteurs de rate-limit) pour préparer le multi-nœuds.
  • Sous-tâches :
    • Routers par domaine : files, search, share, webhooks, plugins, collab, admin, ai
    • Centraliser le contrat d'outils IA sur tools/registry.py (permissions, quotas, redaction)
    • Persister index, JTI révoqués et compteurs de rate-limit (SQLite/Redis)
    • Verrous asyncio autour de l'index global et des stores JSON ; service de partage public (expiration, révocation, quotas)

86. Optimisation globale des performances (phase 3)

  • Effort : 4-6 jours | Impact : 🟡 | Zone : backend (search.py, indexer.py, mutations.py)
  • Description : brancher l'inverted index (déjà construit) sur la recherche simple et le tool IA search_fulltext, indexation incrémentale, extraction PDF lazy.
  • Sous-tâches :
    • Recherche simple + tool IA via l'inverted index (suppression du balayage O(N) en mémoire)
    • Indexation incrémentale + scan différentiel au démarrage (remplace le rglob complet)
    • Extraction PDF/excalidraw différée (hors scan) ; caps CPU sur les opérations regex

87. Amélioration continue — tests, CI/CD, revues de sécurité (phase 4)

  • Effort : 3-5 jours | Impact : 🟡 | Zone : .gitea/workflows/, tests/
  • Description : renforcer le pipeline (.gitea/workflows/ci.yml, desktop-build.yml) pour le rendre bloquant par défaut et accompagner les phases 1 → 3.
  • Sous-tâches :
    • Jobs CI sécurité (bandit/semgrep/trivy, audits pip/npm) + tests E2E XSS (page de partage + lecteur markdown)
    • Tests de concurrence (users.json), fuzzing de timing regex, couverture des composants critiques
    • Revue périodique des dépendances ; documentation utilisateur FR/EN synchronisée ; contrôle automatisé de la conformité au DoD

✅ Complété — index

Détail complet dans docs/archive/COMPLETED_v1-v2.md et docs/features/. Cette table est la seule source de navigation ; ne pas re-détailler les items livrés ici.

# Domaine / fonctionnalité Version Détails
BUG-047 Versionnage — source unique VERSION + bump SemVer automatique au commit (hooks + tag) 2.3.0 DEVELOPMENT_AND_RELEASES.md
90 Barre d'actions du document — regroupement fonctionnel + spacers 2.3.0 archive
89 Drag & drop complet de fichiers/dossiers & intégration Assistant IA 2.3.0 features/drag-and-drop-ai.md
1–8 Fondations (FastAPI, TF-IDF + stemming, watchdog, SPA, sécurité, path traversal, gzip, PWA) 1.0.0→1.4.0 archive
9–20 UX & productivité (share, webhooks, dashboard, conflits, backlinks, redaction, backups, graphe, header, aperçu) 1.5.0→1.6.0 archive
21–22 Architecture (split app.js → 16 modules, validateur imports CI) 1.5.1 archive
23–25 CI/CD & qualité (Gitea Actions, Ruff/Mypy/Bandit/Pip-audit, pytest) 1.6.0 archive
26–29 AI Editor (toolbar, multi-provider, 16 endpoints, auto-save) 1.7.0 archive
30–39 Fonctionnalités avancées (export PDF, palette, mobile, drag & drop, filtres, indexation non-bloquante) 1.8.0→1.9.0 archive
40–46 Gestion des backups (diff, gestionnaire, purge, auto, rétention) 1.9.0 archive
47–57 Mermaid.js (22 templates, live preview, thèmes, zoom, plein écran, pré-processeur Obsidian) 2.0.0 archive
58 Tests E2E Playwright (44 desktop + 12 mobile, CI) 2.0.0 archive
59 Mode hors-ligne PWA complet (IndexedDB, file de synchro, conflits) 2.0.0 archive
63 Internationalisation i18n FR/EN 2.0.0 archive
65 Thèmes personnalisés (light/dark/high-contrast/sepia, import/export) 2.0.0 archive
66 Export multi-formats (HTML, MD bundle, ePub) 2.0.0 archive
71 Tableau de bord administrateur 2.0.0 archive
64 MFA (TOTP + WebAuthn + recovery codes) 2.1.0 archive
74 Support complet des documents PDF 2.1.0 features/pdf.md
75 Éditeur multi-panneaux (Split View) 2.1.0 features/split-view.md
61 Plugins système (sandbox Web Worker, hooks, 9 endpoints) 2.2.0 archive
67 Notifications web — Push API 2.2.0 archive
68 Health check enrichi 2.2.0 archive
72 API publique documentée — OpenAPI 3.1 2.2.0 archive
76 BooksLM — Console AI contextuelle par répertoire 2.2.0 features/bookslm.md
78 Éditeur Excalidraw 2.2.0 features/excalidraw.md
62 Collaboration temps réel — Édition simultanée (Yjs/CRDT, WebSocket, awareness) 2.3.0 features/collaboration.md
79 Assistant IA — Outils (function calling) & serveur MCP 2.3.0 features/ai-tools-mcp.md
80 Assistant IA — Rendu Markdown, liens fichiers/paths & sessions 2.3.0 features/ai-assistant-ux.md
81 Assistant IA — Commandes (@, /), skills, images & capacités des modèles 2.3.0 features/ai-assistant-commands.md
82 Assistant IA — Section « Fournisseur & modèle » compacte (recherche modèle + info capacités, BUG-043) 2.3.0 features/ai-provider-picker.md
69 Éditeur mobile natif — Interface tactile optimisée 2.3.0 features/mobile-editor.md
70 Recherche sémantique — Embeddings vectoriels (hybride TF-IDF + RRF) 2.3.0 features/semantic-search.md
77 Application Desktop native — Tauri 🔵 en cours features/desktop-tauri.md
84 Consolidation & sécurité — revue statique 2026-09-13 (phase 1, BUG-021→034) 2.3.0 archive
83 Barre d'outils d'édition mobile — ruban style Obsidian Android 2.3.0 archive
88 Assistant IA — contexte applicatif (documents ouverts, répertoire, recherche, fichiers récents) & liens de fichiers fiables (BUG-041, BUG-042) 2.3.0 features/ai-app-context.md
91 Assistant IA — Zone de discussion façon Notion : post ancré en haut, fournisseur/modèle discret & barre d'actions 2.3.0 features/ai-assistant-conversation-ux.md
93 Édition inline — « Editer » et « Forge » remplacent la vue lecture (assistant IA qui met le document à jour) 2.3.0 features/editeur-inline.md
94 Assistant IA — Bouton de soumission arrondi + icône renouvelée (arrow-up) 2.4.0 features/ai-assistant-history.md
95 Assistant IA — Historique permanent des conversations (persistance backend) 2.4.0 features/ai-assistant-history.md
96 Assistant IA — Accès rapide à l'historique depuis la sidebar de navigation 2.4.0 features/ai-assistant-history.md
97 Assistant IA — Panneau « + » extensible (fichiers, Deep Research, contextes, skills…) 2.4.0 features/ai-assistant-history.md
98 Assistant IA — Filtre de recherche dans la sidebar « Historique IA » 2.5.0 features/ai-assistant-history.md
99 Sidebar — Filtrage des vues « Récents » et « Sauvegardes » 2.6.0 features/sidebar-filters.md
100 Assistant IA — Deep Research en pastille (au lieu du texte injecté) 2.6.0 features/ai-assistant-history.md
101 Forge — Assistant IA partagé (bouton AI Panel = assistant, fournisseur/modèle configuré, autocomplétion) + plein écran Forge/Editer 2.8.0 features/forge-assistant.md
BUG-057 Assistant IA — bouton « Ajouter » fonctionnel dans l'éditeur Forge (en plus d'« Editer ») 2.9.0 archive
102 Assistant IA — bouton « Ajouter la section » par bloc de code (insertion du bloc seul) 2.9.0 archive

📊 Résumé des efforts

Priorité Items Effort total estimé
✅ Complété #1 → #59, #61–72, #74–76, #78–84, #88–93, #94–100 ~114 jours réalisés
🔵 P2 restant #77 Desktop : signature de code (non retenue), 6 tests E2E manuels (protocole) ~0,5-1 jour
⚪ P4 restant #73 Sync (6-8j) 6-8 jours
⚪ P2 restant #92 Assistant IA — écosystème d'outils phase 2 (web étendu, sources connectées, documents) 3-5 jours
⚪ P0/P1 restant #85-87 Refonte architecturale, performance, CI/CD (issues BUG-035 → BUG-040) ~15-23 jours
Total restant 10 items + finitions ~30-47 jours

Notes

  • Les items P3/P4 ne sont pas ordonnés par priorité interne — à raffiner selon les retours utilisateurs.
  • L'effort inclut le développement + tests unitaires + intégration CI, mais pas la documentation utilisateur.
  • Les items marqués 🟢 (nice-to-have) sont de bons candidats pour des contributions externes.
  • Maintenance de ce fichier : quand un item passe à ✅, déplacer son détail vers docs/features/<slug>.md (grosse feature) ou docs/archive/COMPLETED_v1-v2.md (item court), ajouter une ligne dans l'index « Complété », et consigner la version dans le CHANGELOG.