4.8 KiB
📝 Kernmodul 3: Workspace Outliner-Engine, Wiki-Links & Disk-Sync
Der MindSift Workspace (WorkspaceView.tsx) kombiniert ein hierarchisches Bullet-Point Notizsystem (inspiriert von Logseq) mit einem persönlichen Markdown-Wiki und einem globalen To-Do Rollup Dashboard.
🌳 1. Die Logseq-Outliner-Engine
Im Gegensatz zu klassischen Fließtext-Editoren basiert der MindSift Workspace auf Blöcken (document_blocks in SQLite). Jeder Block ist ein gedanklicher Knotenpunkt mit einer flexiblen Einrückungsebene (level: 0, 1, 2, ...).
• Projekt MindSift v2.0 (level 0)
• Architektur-Entscheidung (level 1)
- [x] Database-First Blocks implementieren (level 2)
- [ ] Performance Benchmark mit 10.000 Blöcken (level 2)
• Notizen aus dem Dev-Meeting (level 1)
> Wichtig: Keine verschachtelten SQLite Queries ausführen! (level 2)
Tastatur-Navigation & Shortcuts
Enter: Erstellt einen neuen Block auf derselben Hierarchieebene.Tab: Rückt den aktuellen Block ein (wird Kindknoten des vorherigen Blocks).Shift + Tab: Rückt den Block um eine Ebene aus (verringert die Tiefe).Shift + Enter: Weicher Zeilenumbruch innerhalb desselben Blocks (z.B. für mehrzeilige Notizen oder Code).Backspace(auf leerem Block): Rückt den Block aus oder löscht ihn, wenn er auf Level 0 ist./(Slash-Commands): Öffnet das Umwandlungsmenü (/todo,/h1,/h2,/h3,/code,/callout,/quote,/divider).
Zoom-In Hoisting (Fokus-Modus)
Klickt der Benutzer auf den Bullet-Dot (•) eines Blocks, blendet der Editor alle übergeordneten und benachbarten Blöcke aus und zoomt ausschließlich in diesen Ast hinein.
- Eine dezente Breadcrumb-Leiste oben zeigt den Pfad an (z.B.
Workspace / Projekte / MindSift / Architektur). - Ein Klick auf ein beliebiges Breadcrumb-Element zoomt sofort auf die jeweilige Ebene zurück.
Drag & Drop von Blöcken
Der Bullet-Dot dient gleichzeitig als Drag-Anfasser. Wird ein Block verschoben, erkennt die Engine automatisch alle untergeordneten Kind-Blöcke (isDescendantBlock) und verschiebt den kompletten Unterbaum an die neue Zielposition.
🔗 2. Wiki-Links ([[Link]]) & Hashtags
- Interne Wiki-Links:
- Text in doppelten eckigen Klammern (z.B.
[[Reiseplanung 2026]]) wird automatisch als klickbarer Link gerendert. - Ein Klick darauf durchsucht die Notizen des Benutzers und öffnet das Ziel-Dokument direkt im Editor.
- Text in doppelten eckigen Klammern (z.B.
- Hashtags (
#tag):- Hashtags im Fließtext werden automatisch indiziert (
doc_block_tags-Tabelle). - In der linken Leiste listet der Tag-Explorer alle verwendeten Schlagworte auf. Klick auf ein Tag filtert alle Dokumente und Blöcke, die dieses Tag enthalten.
- Hashtags im Fließtext werden automatisch indiziert (
💾 3. Dual-Storage: Database-First & Disk-Mirroring
MindSift löst das Dilemma zwischen schneller relationaler Abfrage und portabler Dateispeicherung durch ein synchrones Dual-Storage-Modell:
Client (Block-Editor)
│ PATCH /api/v1/documents/:id/blocks
▼
Backend Engine
┌──────────────────────────────────────────────┐
│ 1. Transaktion in SQLite (document_blocks) │
│ -> Sort-Order, Content, Level, Checked │
│ 2. Volltext-Generierung (Markdown-String) │
│ 3. Schreiben auf Disk (/data/workspace/...) │
└──────────────────────────────────────────────┘
- Präzision & Geschwindigkeit (SQLite):
- Jeder Block besitzt eine eindeutige ID (
blk_...) und eine Gleitkomma-Reihenfolge (sort_order REAL). - Schnelle Status-Updates (z.B. Checkbox abhaken) schreiben nur genau eine Zeile in die Datenbank.
- Jeder Block besitzt eine eindeutige ID (
- Datensouveränität & Portabilität (Disk-Mirror):
- Zeitgleich spiegelt der Server das Dokument als Standard-
.md-Datei unter/data/workspace/<user_id>/<ordner>/<dateiname>.md. - Einrückungen werden nach dem 2-Leerzeichen-Standard (
- [ ]) formatiert. - Administratoren können das Verzeichnis jederzeit mit externen Werkzeugen (Obsidian, Logseq, Git, rsync) sichern.
- Zeitgleich spiegelt der Server das Dokument als Standard-
📊 4. Globaler To-Do Rollup Dashboard
Über den Tab „Globale To-Dos" bietet der Workspace eine aggregierte Übersicht aller im gesamten Wiki verteilten Aufgaben:
- Scannt in Echtzeit alle unvollendeten
- [ ]Checkboxen über alle Ordner und Notizen hinweg. - Übersichtliche Gruppierung nach Ordner ➔ Dokument ➔ Aufgabe.
- Ordner-Filter: Klick auf einen Ordner isoliert nur dessen Aufgaben für fokussiertes Arbeiten.
- 2-Wege-Live-Sync: Wird eine Checkbox im Rollup abgehakt, wird der Block in SQLite sofort auf
checked = 1aktualisiert und die physische.md-Datei synchronisiert.