Files
ObsiGate/docs/ROADMAP.md
T

5.4 KiB

ObsiGate — Roadmap

Date : 2026-05-25 | Version : 1.4.0 / 1.5.0


Légende

  • ✅ Complété
  • 🟡 En cours / Partiel / À investiguer
  • ⬜ À faire
  • 🔴 Critique

Nouvelles fonctionnalités (historique TODO.md)

  • ✅ Indexation incrémentale automatique — Le watcher détecte les nouveaux fichiers et met à jour l'index sans réindexation complète. Utilise _on_vault_change → update_single_file / remove_single_file / handle_file_move.
  • ✅ Copier le chemin — Option "Copier le chemin" dans le menu contextuel (clic droit) de l'arborescence pour tout élément (vault, dossier, fichier).
  • ✅ Panneau À propos — Section "À propos" dans le modal Configurations affichant la version, la version API, les stats de santé.
  • ✅ Vue Graphique — Canvas force-directed accessible via menu contextuel sur les vaults et dossiers. Affiche nœuds (fichiers/dossiers) et arêtes (parent + wikilinks). Zoom/pan interactif.
  • ✅ Mode onglets (Tabs) — Barre d'onglets multi-fichiers permettant de visualiser plusieurs fichiers simultanément, avec fermeture et navigation.
  • ✅ Login Popout — La fenêtre popout affiche un formulaire de connexion quand l'authentification est requise, puis recharge la page après login.

Corrections (historique TODO.md)

  • ✅ Login popout avec redirection — Quand un fichier est ouvert via l'URL popout et que l'authentification est requise, un formulaire de login est proposé. Après connexion réussie, la page recharge automatiquement.
  • ✅ Correction TOC — scroll avec caractères accentués — Les fonctions slugify (frontend et backend) utilisent maintenant unicodedata.category() pour une classification Unicode-aware identique (catégories L* et N* au lieu de .isalpha() ASCII-only).

Améliorations prioritaires (voir ANALYSE_REVIEW.md §4)

🔴 Sécurité — P0

  • ✅ Rate limiting sur le login — IP-based rate limiting (10 tentatives/15 min par IP) + lockout par compte (5 tentatives). Implémenté dans backend/ratelimit.py + backend/auth/router.py.
  • ✅ Masquage automatique des secrets — SecretRedactor dans backend/secret_redactor.py masque JWT, clés API, tokens GitHub, clés privées et connection strings dans les aperçus de contenu.

🟠 Robustesse — P1

  • ✅ Log d'audit — backend/audit.py trace les écritures, suppressions et changements de config dans data/audit.log (format JSON lines).
  • ✅ Backup automatique avant écriture — Sauvegarde du contenu original dans .obsigate-backup/ avant chaque PUT ou DELETE, avec timestamp.

🟡 UX — P2

  • ✅ Clic simple / double clic dans l'arborescence — Simple clic = onglet preview (italique, temporaire). Double clic = onglet persistant (normal, cumulable). Implémenté dans TabManager.openPreview() / TabManager.openPersistent().
  • ✅ Backlinks panel — Panneau affichant les fichiers avec wikilinks pointant vers le fichier courant. Backend : GET /api/file/{vault}/backlinks + index inversé dans indexer.py. Frontend : panneau renderBacklinksPanel().
  • ✅ Gestion des conflits Syncthing — Dashboard « Conflits » avec détection automatique des fichiers .sync-conflict-* et résolution (garder local, garder conflit). Backend : GET /api/conflicts, POST /api/conflicts/resolve.
  • ✅ Liste IGNORED_DIRS configurable — Configurable via OBSIGATE_IGNORED_DIRS (liste séparée par virgules). Appliqué au watcher et à l'indexer.
  • ✅ Timeout de session configurable — JWT TTL configurable via OBSIGATE_ACCESS_TOKEN_TTL et OBSIGATE_REFRESH_TOKEN_TTL.

🟢 Fonctionnel — P3/P4

  • ✅ Publication publique de documents — Génération de lien partageable avec token unique (64-char hex), expiration configurable, lecture seule, sans authentification. Backend : backend/share.py + POST /api/share/{vault}, GET /api/shares, DELETE /api/share/{id}, GET /s/{token} (vue publique). Frontend : bouton « Partager » dans les actions de fichier + dialogue de copie de lien.
  • ✅ Dashboard statistiques — Métriques agrégées par vault : fichiers totaux, taille, tags uniques. Backend : GET /api/dashboard. Frontend : widget DashboardStatsWidget avec 4 cartes (fichiers, tags, taille, vaults).
  • ✅ Webhooks — Notifications HTTP POST vers des services externes lors de changements (création, modification, suppression, renommage de fichiers et dossiers). Signature HMAC-SHA256 optionnelle. Backend : backend/webhooks.py + CRUD endpoints. Frontend : gestion dans le modal Configurations.
  • ✅ Documentation OpenAPI enrichie — Tous les modèles Pydantic (FileContentResponse, SearchResponse, AdvancedSearchResponse, etc.) ont maintenant des Field(description=...) documentés visibles dans /docs (Swagger UI) et /redoc.
  • ✅ Gestion fichiers non-supportés — Message explicite avec nom du fichier, taille et bouton de téléchargement pour les fichiers binaires. Backend : réponse structurée avec unsupported: true. Frontend : interface unsupported-file.

⬜ Qualité & Polish — P5+

  • ⬜ Tests unitaires (pytest)
  • ⬜ Tests E2E (Playwright)
  • ⬜ CI/CD pipeline (GitHub Actions)
  • ⬜ i18n (support anglais + français)
  • ⬜ CHANGELOG.md
  • ⬜ Documentation utilisateur enrichie
  • ⬜ Authentification multi-facteurs (TOTP/WebAuthn)

Document généré le 2026-05-25 — Remplace l'ancien TODO.md