Files
MindSift/Doku/modules/workspace.md
T
sandrodach 3480859d8a
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 8s
docs: add comprehensive technical wiki documentation and flaws analysis; remove legacy BRAIN.md
2026-10-26 13:27:35 +01:00

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.


  1. 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.
  2. 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.

💾 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/...)  │
   └──────────────────────────────────────────────┘
  1. 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.
  2. 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.

📊 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 = 1 aktualisiert und die physische .md-Datei synchronisiert.