CI / lint (push) Successful in 1m3s
CI / security (push) Successful in 46s
CI / test (push) Successful in 2m43s
CI / build (push) Successful in 38s
CI / e2e (push) Successful in 11m12s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
Barre d'outils Markdown flottante (gras/italique/code/liste/lien) sur la selection CodeMirror, bouton Coller persistant (contournement iOS), zoom par pincement + hauteur ajustable persistes, raccourcis swipe (gauche -> liens entrants, droite -> table des matieres), mode lecture plein ecran avec navigation entre fichiers du dossier. 22 tests JSDOM + spec E2E mobile. Docs: fiche feature, CHANGELOG, ROADMAP, guide i18n FR/EN, README.
142 lines
10 KiB
Markdown
142 lines
10 KiB
Markdown
# ObsiGate — Roadmap
|
||
|
||
> **Version :** 2.2.1 | **Dernière mise à jour :** 2026-09-11
|
||
> **Ce fichier ne contient que le travail à venir** (🔵 En cours + ⚪ Backlog) et un index compact
|
||
> vers les fonctionnalités livrées.
|
||
> - **Méthode de livraison à appliquer pour toute tâche : [DELIVERY_WORKFLOW.md](./DELIVERY_WORKFLOW.md)**
|
||
> - Historique des versions : [CHANGELOG.md](../CHANGELOG.md)
|
||
> - Détail des fonctionnalités livrées : [docs/archive/COMPLETED_v1-v2.md](./archive/COMPLETED_v1-v2.md)
|
||
> - Fiches détaillées par feature : [docs/features/](./features/)
|
||
> - Bugs / TODO : [ISSUES_TODOLIST.md](./ISSUES_TODOLIST.md)
|
||
|
||
---
|
||
|
||
## 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, build CI, UX, 16 tests Rust. Détail complet : [features/desktop-tauri.md](./features/desktop-tauri.md)
|
||
- **Reste à faire :**
|
||
- [ ] Signature de code Windows (optionnel mais recommandé)
|
||
- [ ] Wizard « Choisissez votre vault » au 1er lancement (optionnel)
|
||
- [ ] Jumplist vaults récents dans le menu Démarrer (optionnel)
|
||
- [ ] 6 tests E2E **manuels** : installation, tray icon, notifications natives, association `.md`, auto-update, désinstallation
|
||
|
||
---
|
||
|
||
## ⚪ Backlog — Priorité 4 (P4)
|
||
|
||
### 70. Recherche sémantique — Embeddings vectoriels
|
||
|
||
- **Effort :** 4-5 jours | **Impact :** 🟢
|
||
- **Description :** La recherche actuelle (TF-IDF) ne trouve que les documents contenant EXACTEMENT les mots tapés. La recherche sémantique comprend le SENS de la requête et trouve des documents pertinents même s'ils utilisent des mots différents.
|
||
- **Exemple concret :** Vous cherchez « comment sauvegarder mes données ». La recherche TF-IDF ne trouvera que les documents contenant « sauvegarder » ET « données ». La recherche sémantique trouvera aussi un document titré « Stratégie de backup automatique » ou « Protection contre la perte de fichiers » parce qu'elle comprend que ces phrases parlent de la même chose.
|
||
- **Fonctionnement technique :**
|
||
- Chaque document (ou chunk de ~512 tokens) est converti en un **vecteur** (une liste de 384 nombres) par un modèle de langage léger comme `all-MiniLM-L6-v2` (80 Mo, s'exécute en ~2ms par document sur CPU). Ce vecteur capture le sens — deux phrases qui veulent dire la même chose auront des vecteurs très proches.
|
||
- Au moment de la recherche, la requête utilisateur est elle aussi convertie en vecteur.
|
||
- On calcule la **similarité cosinus** entre le vecteur de la requête et les vecteurs de tous les documents. Les documents avec la similarité la plus élevée sont retournés.
|
||
- **Recherche hybride** : on combine le score TF-IDF (pertinence par mots-clés exacts) et le score sémantique (pertinence par sens) via RRF (Reciprocal Rank Fusion) — les documents bien classés par les deux méthodes remontent en premier.
|
||
- **Stockage** : les vecteurs sont stockés avec FAISS (Facebook AI Similarity Search), une bibliothèque optimisée qui permet de chercher parmi des millions de vecteurs en quelques millisecondes.
|
||
- **Indexation** : les embeddings sont générés une fois à l'indexation du fichier (pas à chaque recherche). Un fichier modifié voit son embedding regénéré automatiquement par le watcher.
|
||
- **Pourquoi c'est important :** La recherche par mots-clés échoue dans ~30% des cas où l'utilisateur ne se souvient pas des mots exacts utilisés dans ses notes. La recherche sémantique résout ce problème. C'est particulièrement utile pour les gros vaults (500+ notes) où on ne peut pas tout parcourir manuellement.
|
||
- **Sous-tâches :**
|
||
- [ ] Génération d'embeddings : modèle `all-MiniLM-L6-v2` via `sentence-transformers` (Python) ou appel API externe
|
||
- [ ] Stockage : index vectoriel avec `numpy` + `faiss` (ou `usearch` pour performance)
|
||
- [ ] Indexation : embedding par chunk de 512 tokens avec recouvrement
|
||
- [ ] Recherche hybride : combinaison TF-IDF + similarité cosinus (RRF — Reciprocal Rank Fusion)
|
||
- [ ] UI : toggle « Recherche sémantique » dans la barre de recherche
|
||
- [ ] UI : score de similarité dans les résultats
|
||
|
||
### 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
|
||
|
||
---
|
||
|
||
## ✅ Complété — index
|
||
|
||
> Détail complet dans [docs/archive/COMPLETED_v1-v2.md](./archive/COMPLETED_v1-v2.md) et
|
||
> [docs/features/](./features/). Cette table est la seule source de navigation ; ne pas
|
||
> re-détailler les items livrés ici.
|
||
|
||
| # | Domaine / fonctionnalité | Version | Détails |
|
||
|---|---|---|---|
|
||
| 1–8 | Fondations (FastAPI, TF-IDF + stemming, watchdog, SPA, sécurité, path traversal, gzip, PWA) | 1.0.0→1.4.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 9–20 | UX & productivité (share, webhooks, dashboard, conflits, backlinks, redaction, backups, graphe, header, aperçu) | 1.5.0→1.6.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 21–22 | Architecture (split `app.js` → 16 modules, validateur imports CI) | 1.5.1 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 23–25 | CI/CD & qualité (Gitea Actions, Ruff/Mypy/Bandit/Pip-audit, pytest) | 1.6.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 26–29 | AI Editor (toolbar, multi-provider, 16 endpoints, auto-save) | 1.7.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 30–39 | Fonctionnalités avancées (export PDF, palette, mobile, drag & drop, filtres, indexation non-bloquante) | 1.8.0→1.9.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 40–46 | Gestion des backups (diff, gestionnaire, purge, auto, rétention) | 1.9.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 47–57 | Mermaid.js (22 templates, live preview, thèmes, zoom, plein écran, pré-processeur Obsidian) | 2.0.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 58 | Tests E2E Playwright (44 desktop + 12 mobile, CI) | 2.0.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 59 | Mode hors-ligne PWA complet (IndexedDB, file de synchro, conflits) | 2.0.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 63 | Internationalisation i18n FR/EN | 2.0.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 65 | Thèmes personnalisés (light/dark/high-contrast/sepia, import/export) | 2.0.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 66 | Export multi-formats (HTML, MD bundle, ePub) | 2.0.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 71 | Tableau de bord administrateur | 2.0.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 64 | MFA (TOTP + WebAuthn + recovery codes) | 2.1.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 74 | Support complet des documents PDF | 2.1.0 | [features/pdf.md](./features/pdf.md) |
|
||
| 75 | Éditeur multi-panneaux (Split View) | 2.1.0 | [features/split-view.md](./features/split-view.md) |
|
||
| 61 | Plugins système (sandbox Web Worker, hooks, 9 endpoints) | 2.2.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 67 | Notifications web — Push API | 2.2.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 68 | Health check enrichi | 2.2.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 72 | API publique documentée — OpenAPI 3.1 | 2.2.0 | [archive](./archive/COMPLETED_v1-v2.md) |
|
||
| 76 | BooksLM — Console AI contextuelle par répertoire | 2.2.0 | [features/bookslm.md](./features/bookslm.md) |
|
||
| 78 | Éditeur Excalidraw | 2.2.0 | [features/excalidraw.md](./features/excalidraw.md) |
|
||
| 62 | Collaboration temps réel — Édition simultanée (Yjs/CRDT, WebSocket, awareness) | 2.3.0 | [features/collaboration.md](./features/collaboration.md) |
|
||
| 79 | Assistant IA — Outils (function calling) & serveur MCP | 2.3.0 | [features/ai-tools-mcp.md](./features/ai-tools-mcp.md) |
|
||
| 80 | Assistant IA — Rendu Markdown, liens fichiers/paths & sessions | 2.3.0 | [features/ai-assistant-ux.md](./features/ai-assistant-ux.md) |
|
||
| 69 | Éditeur mobile natif — Interface tactile optimisée | 2.3.0 | [features/mobile-editor.md](./features/mobile-editor.md) |
|
||
| 77 | Application Desktop native — Tauri | 🔵 en cours | [features/desktop-tauri.md](./features/desktop-tauri.md) |
|
||
|
||
---
|
||
|
||
## 📊 Résumé des efforts
|
||
|
||
| Priorité | Items | Effort total estimé |
|
||
|---|---|---|
|
||
| ✅ Complété | #1 → #59, #61–72, #74–76, #78–80 | ~99 jours réalisés |
|
||
| 🔵 P2 restant | #77 Desktop : signature code (optionnel), wizard 1er lancement (optionnel), 6 tests E2E **manuels** | ~1-2 jours |
|
||
| ⚪ P4 restant | #70 Sémantique (4-5j) · #73 Sync (6-8j) | 10-13 jours |
|
||
| **Total restant** | **3 items + finitions** | **~11-15 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](../CHANGELOG.md).
|