Implement several security and feature improvements across the backend and frontend: - New IP-based rate limiter for authentication endpoints - New audit logging system for sensitive operations - New secret redactor to mask sensitive patterns in rendered content - Configurable token TTL and IGNORED_DIRS via environment variables - Add backlink index and API endpoint - Add preview tab support with single/double-click behavior in tree - Add file backup before write/delete operations
4.7 KiB
4.7 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 —
SecretRedactordansbackend/secret_redactor.pymasque 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.pytrace les écritures, suppressions et changements de config dansdata/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é dansindexer.py. Frontend : panneaurenderBacklinksPanel(). - 🟡 Gestion des conflits Syncthing — Dashboard « Conflits » avec diff et résolution (garder local, garder conflit).
- ✅ 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_TTLetOBSIGATE_REFRESH_TOKEN_TTL.
🟢 Fonctionnel — P3/P4
- 🟢 Publication publique de documents — Générer un lien partageable pour un document, accessible à des utilisateurs non authentifiés (token unique, expiration configurable, lecture seule). L'utilisateur peut créer/révoquer des liens de partage depuis l'interface.
- 🟢 Dashboard statistiques — Métriques par vault : fichiers totaux, taille, top tags, orphelins.
- 🟢 Webhooks — Notifier des systèmes externes lors de changements (création, modif, suppression).
- 🟢 Documentation OpenAPI enrichie — Enrichir les modèles Pydantic pour la doc auto-générée /docs 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 : interfaceunsupported-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