ObsiViewer/ROADMAP.md

6.7 KiB
Raw Permalink Blame History

🗺️ 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.