# ObsiGate — Roadmap (détaillé) > **Date :** 2026-06-02 | **Version :** 1.7.0 > **Dernier audit :** [AUDIT_TECHNIQUE_2026-05-27.md](./AUDIT_TECHNIQUE_2026-05-27.md) --- ## Légende - ✅ Complété - 🟡 En cours / Partiel - ⬜ À faire - 🔴 Critique --- ## ✅ Fonctionnalités complétées (depuis le dernier audit) ### AI Editor (v1.7.0 — NOUVEAU) - **Toolbar dropdown** : Edit (improve/fix/shorter/longer/simplify), Tone (professional/casual), Translate, Generate (explain/summarize/continue), Custom Rewrite, Toolbox (to list/to table/frontmatter/to canvas) - **Multi-provider** : DeepSeek, OpenRouter, Gemini — configurable via `.env` - **Backend** : `backend/ai.py` + `backend/ai_routes.py` — 16 endpoints REST - **Frontend** : `frontend/js/ai.js` — toolbar intégrée à CodeMirror 6 - Auto-save silencieux (2s), loading toasts, cache si pas de clé API ### Vue graphique — Améliorations (v1.7.0) - **Header flat design 2 lignes** : titre flexible + recherche dédiée + barre statut - **Sticky panels** : tuile info (top-left/right), preview pleine hauteur (droite), boutons close - **Navigation historique** : ← → (avant/arrière) + ↑ (parent) - **Ctrl+survol** : aperçu contenu `/raw` formaté dans tooltip - Filtre tag, hover foncé unifié ### Vue graphique — Phases 1-4 (v1.6.0) - [x] Full-vault view (`scope=full`), filtre tag (`?tag=`), backlinks entrants - [x] Métriques de nœud : `incoming_count`, `outgoing_count`, `tag_count` - [x] Recherche visuelle, tooltips survol, couleurs adaptatives CSS - [x] Slider profondeur (0-3), filtre type (dossier/fichier/.md/autre) - [x] Mode focus, plein écran, export PNG - [x] Barnes-Hut O(n log n), cache graphe ### Qualité & Tests (v1.6.0) - [x] CI/CD Gitea Actions complet : lint (ruff 0 err), type (mypy 0 err), test (180 tests), security (bandit + pip-audit), build (Docker) - [x] sortedcontainers → SortedList pour O(log n) insert/remove - [x] Frontend tests Node.js : validate-imports.mjs + unit.test.mjs ### Recherche (v1.5.1) - [x] Stemming français via snowballstemmer - [x] Performance O(T) au lieu de O(S×T), crash guard IndexError ### Refactoring (v1.5.1) - [x] Split `app.js` (8 875 lignes → 16 modules ES) dans `frontend/js/` ### Fonctionnel (v1.5.0) - [x] Publication publique de documents (token unique, expiration, lecture seule) - [x] Dashboard statistiques (4 cartes : fichiers, tags, taille, vaults) - [x] Webhooks HTTP avec signature HMAC-SHA256 optionnelle - [x] Documentation OpenAPI enrichie (modèles Pydantic documentés) - [x] Gestion conflits Syncthing (détection + résolution) - [x] Index inversé incrémental (hook pattern via `set_index_change_hook`) - [x] Export PDF (WeasyPrint intégré, accessible dans la vue publique) ### Corrections (v1.4.0) - [x] Rate limiting login (IP + compte) - [x] Secret redactor (JWT, API keys, tokens, connection strings) - [x] Audit log JSON lines avec rotation 10MB - [x] Backup automatique avant écriture (`.obsigate-backup/`) - [x] Backlinks panel (index inversé + UI) - [x] Gestion fichiers non-supportés (UI message + download) - [x] Clic simple/double clic arborescence - [x] IGNORED_DIRS configurable via `OBSIGATE_IGNORED_DIRS` - [x] Timeout session configurable (`OBSIGATE_ACCESS_TOKEN_TTL`) - [x] TOC scroll avec caractères accentués (slugify unifié Unicode) ### Quick Wins (v1.4.0) - [x] `.dockerignore` — contexte de build réduit - [x] `.env` pour les secrets (mot de passe retiré de docker-compose.yml) - [x] Compression GZip (SSE-safe) - [x] Cache-Control pour assets statiques --- ## 🔜 Prochaines étapes ### P1 — Tests & Qualité | # | Item | Effort | Impact | |---|------|--------|--------| | ✅ | ~~Tests unitaires backend (175 tests, 49% coverage)~~ | Fait | 🟢 | | ⬜ | Coverage → 70%+ (main.py 26%, watcher.py 23%, router.py 37%) | 2-3j | 🟢 | | ⬜ | Tests E2E (Playwright) | 3-5j | 🟢 | | ⬜ | Git tags semver (`git tag v1.7.0`) | 10min | 🟡 | ### P2 — Fonctionnalités UX | # | Item | Effort | Impact | |---|------|--------|--------| | ⬜ | Palette de commandes (Ctrl+P) | 1j | 🟡 | | ⬜ | Drag & drop fichiers dans arborescence | 1-2j | 🟡 | | ⬜ | Diff viewer (comparer backups `.obsigate-backup/`) | 1j | 🟢 | | ⬜ | Filtres search avancés (created:, modified:, size:) | 1j | 🟡 | | ⬜ | Fichiers récents par vault (dashboard) | 0.5j | 🟡 | | ⬜ | Déduplication IGNORED_DIRS (indexer.py / watcher.py) | 0.5j | 🟢 | | ⬜ | Export PDF — route API + UI dédiée | 1j | 🟡 | ### P3/P4 — Long terme | # | Item | Effort | |---|------|--------| | ⬜ | Mode hors-ligne PWA (IndexedDB + synchro) | 5-7j | | ⬜ | OAuth2/OIDC (Google, GitHub, SSO) | 3-5j | | ⬜ | Plugin système (extensions utilisateur) | 5-10j | | ⬜ | Collaboration temps réel (WebSocket + Yjs) | 5-10j | | ⬜ | i18n (anglais + français) | 2-3j | | ⬜ | MFA (TOTP/WebAuthn) | 3-5j | | ⬜ | Thèmes personnalisés (CSS variables exposées) | 1j | | ⬜ | Export multi-formats (HTML, MD bundle, ePub) | 2-3j | | ⬜ | Notifications web Push API | 2-3j | | ⬜ | Health check enrichi (index, mémoire, uptime, SSE) | 1j | | ⬜ | Rotation des logs Python (RotatingFileHandler) | 0.5j | --- ## Chronologie suggérée | Semaine | Actions | |---------|---------| | **S23** (cette semaine) | ✅ Quick Wins + Sécurité (rate limiting, secret redactor, audit, backup) | | **S24** | ✅ Publication publique, Webhooks, Dashboard, OpenAPI | | **S25** | ✅ Split app.js en modules ES, Stemming français | | **S26** | ✅ Graph view (phases 1-4), CI/CD, sortedcontainers | | **S27** | ✅ AI Editor + Graph improvements (sticky panels, nav history) | | **S28** | Coverage 70%+, Export PDF, Palette commandes | | **S29+** | Fonctionnalités P2 au fil de l'eau | --- *Document généré le 2026-06-02 — Mis à jour depuis l'audit du 2026-05-27.* *Voir aussi : [ROADMAP.md](../ROADMAP.md) (version simplifiée), [CHANGELOG.md](../CHANGELOG.md)*