ObsiViewer/ROADMAP.md

173 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🗺️ Roadmap du Projet
## Vision
ObsiViewer offre une expérience de consultation en lecture seule dune voûte Obsidian depuis le navigateur, avec rendu Markdown avancé, graphe interactif et recherche compatible Obsidian. La vision est dêtre un viewer fiable, performant et portable, facilement autohébergeable, couvrant 100% des usages de lecture/visualisation dun vault de taille moyenne à grande, sans exiger Obsidian ni plugins côté client.
## Statut Actuel
**Version actuelle :** 0.0.0 (développement)
**Date de mise à jour :** 2025-10-02
### ✅ Complété
- Rendu Markdown riche via `MarkdownIt` + plugins (tables, footnotes, callouts, task-lists, code highlight)
- Wikilinks complets (`[[note]]`, alias, `#heading`, `#^block`) + preview au survol
- Graphe interactif (d3-force), options daffichage et filtres (tags, attachments, orphans)
- Assistant de requêtes et moteur de recherche compatible Obsidian (parser, evaluator, index)
- Favoris (bookmarks) compatibles Obsidian avec persistance `.obsidian/bookmarks.json` (serveur & FS Access)
- API Express (lecture vault, bookmarks, graph config, SSE événements vault, résolution dattachements)
- UI responsive, dark/light theme, sidebars redimensionnables
- Tests unitaires présents (wikilinks parser, markdown service, bookmarks core, search parser)
### 🚧 En Cours
- Accessibilité et navigation clavier avancée (tree bookmarks, résultats recherche)
- Améliorations UX des modals (création/édition bookmarks, import/export)
- Optimisations pour très grands vaults (>5000 notes)
## 📅 Phases de Développement
### Phase 1 : Solidification - Court Terme (0-3 mois)
**Priorité : HAUTE**
#### Fonctionnalités
- [ ] Zoom/Pan du graphe (d3-zoom)
- Intégrer `d3-zoom` dans `src/components/graph-view/graph-view.component.ts`
- Maintenir compatibilité drag & drop nœuds
- Estimation : 2-3j
- [ ] Modals dédition bookmarks
- Créer un `BookmarkEditorModal` (ajout/édition groupes et fichiers)
- Valider les champs, support du parent selector, déplacement entre groupes
- Estimation : 2j
- [ ] Import/Export UI
- `ImportModal` (dry-run + merge/replace), `ExportModal` (filename + download)
- Intégrer services existants `bookmarks.service.ts`
- Estimation : 2j
- [ ] Assistant de requêtes complétion propriétés YAML
- Suggestions basées sur index de propriétés (si dispo) dans `search-assistant.service.ts`
- Estimation : 1-2j
#### Améliorations Techniques
- [ ] Virtualisation listes (tree bookmarks, résultats recherche)
- Étudier `cdk-virtual-scroll-viewport` pour grandes listes
- Estimation : 2j
- [ ] Optimisation graphe pour vaults larges
- Filtrer profondeur par défaut, options de sampling
- Estimation : 2j
- [ ] Renforcer sanitization du rendu Markdown
- Audit des transformations HTML dans `MarkdownService`
- Estimation : 1j
#### Corrections
- [ ] TODO édition inline dans `src/components/bookmark-item/bookmark-item.component.ts` (ligne commentée « TODO: Open edit modal »)
- Remplacer le console.log par ouverture réelle du modal
- Estimation : 0.5j
- [ ] Conflits bookmarks/graph UX
- Ajouter feedback visuel (toast succès/erreur) après save
- Estimation : 0.5-1j
- [ ] Z-index du menu contextuel (bookmarks)
- Ajuster SCSS pour superposer correctement
- Estimation : 0.5j
### Phase 2 : Parité+ - Moyen Terme (3-6 mois)
**Priorité : MOYENNE**
#### Fonctionnalités
- [ ] Export graphe (PNG/SVG)
- Ajout bouton export + rendu offscreen
- Estimation : 2j
- [ ] Groupes de couleurs avancés
- UI améliorée (palette, alpha, réordonnage drag)
- Estimation : 2j
- [ ] Recherche scoring et tri avancés
- Pondération configurable (titre, path, tags, contenu)
- Estimation : 2j
#### Améliorations Techniques
- [ ] Cache index recherche/graph sur IndexedDB
- Restauration rapide au chargement
- Estimation : 2-3j
- [ ] E2E tests (Playwright/Cypress)
- Flux: connect vault → créer/modifier favoris → save/reload → conflit
- Estimation : 3-4j
#### Corrections
- [ ] Résilience API (timeouts/retries/backoff)
- Wrapper HttpClient + messages derreurs clairs
- Estimation : 1j
### Phase 3 : Extensibilité - Long Terme (6-12 mois)
**Priorité : BASSE**
#### Fonctionnalités
- [ ] Mode PWA hors-ligne (avec FS Access API quand supporté)
- Mise en cache assets, index et dernières notes
- Estimation : 5-7j
- [ ] Connecteurs de stockage optionnels
- WebDAV/Dropbox (via repository pattern) lecture seule
- Estimation : 5-10j (recherche + PoC)
- [ ] Mini-map du graphe / overview
- Améliorer navigation sur grandes topologies
- Estimation : 2-3j
#### Améliorations Techniques
- [ ] Observabilité
- Logs structurés, métriques (Web Vitals), tracing léger
- Estimation : 2-3j
## 🎯 Objectifs par Catégorie
### Performance
- [ ] 60fps stables avec 2000+ nœuds
- [ ] Temps de rendu initial <300ms pour 1000 nœuds
### Sécurité
- [ ] Sanitization renforcée + tests XSS ciblés
- [ ] Politique dupload/serve dattachements documentée
### Expérience Utilisateur
- [ ] Navigation clavier complète (ARIA tree, listes résultats)
- [ ] Feedback systématique (toasts, spinners, états vides)
### Documentation
- [ ] Guides de contribution et styleguide UI
- [ ] Schémas darchitecture (séquence, composants)
### Tests
- [ ] Couverture 80% sur core (bookmarks, search, markdown)
- [ ] E2E de la chaîne bookmarks (connect CRUD save conflit)
## 💡 Idées Futures (Backlog)
- Suggestions de liens connexes basées sur graphe (similarité simple)
- Intégration de l'éditeur Excalidraw pour visualiser et editer les fichier .excalidraw
- Colorisation des nœuds par tags dominants (auto)
- Timeline view par dates de création/modification
- Export PDF/HTML dune note avec graph contextuel
## 🚫 Hors Scope
- Édition de contenu Markdown (éditeur complet) le projet vise la lecture/visualisation
- Synchronisation multi-utilisateur temps réel non prioritaire
## 📊 Métriques de Succès
- Métrique 1 : TTI < 2s sur vault 1000 notes (desktop, réseau moyen)
- Métrique 2 : 60fps moyenne pendant interactions graphe (>95% frames)
- Métrique 3 : Couverture tests unitaires ≥ 80% sur modules core
- Métrique 4 : 0 erreurs critiques Lighthouse (Perf > 85, Access > 90)
## 🤝 Contributions
Les contributions sont bienvenues. Ouvrez une issue avant une PR pour discuter du scope. Respectez les conventions (commits, lint, style), fournissez des captures pour changements UI.
## 📝 Notes
- Firefox/Safari noffrent pas FS Access API : privilégier le mode serveur (`server/index.mjs`).
- Les endpoints serveur sont décrits dans `README.md` (section API).
- Les TODO/FIXME identifiés : `bookmark-item` (édition modal), styles (z-index), zoom/pan graphe.