MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 8s
Remove outdated claims (CRDT, DocRooms, presence, .md files on disk) and document the actual architecture, API, permissions and known flaws. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
Modul: Workspace (Outliner-Notizen)
Code: WorkspaceView.tsx (Explorer, Tags, To-Do-Rollup), DocumentEditor.tsx, OutlinerTree.tsx, OutlinerBlock.tsx, CodeBlockItem.tsx, LinkModal.tsx; Backend: Dokument-, Ordner- und Tag-Handler, Store.PatchDocumentBlocks.
Datenhaltung
- Eine Notiz ist ein Datensatz in
documentsplus geordnete Zeilen inblocks(positionals Kommazahl,levelfür die Einrückung). Alles liegt in SQLite; es gibt keine Dateien auf der Platte. - Bei jeder Änderung wird
documents.markdown_cacheneu erzeugt;block_tagswird aus#Hashtagsder Blöcke neu aufgebaut. - Der Export als
.mderfolgt im Browser (Button im Editor, Blob-Download). - Blocktypen: Überschriften
h1–h3,paragraph/text,bullet,todo,code,callout,divider,table,progress.
Editor
- Outliner:
Enterneuer Block,Tab/Shift+Tabein-/ausrücken,Shift+Enterweicher Umbruch, Blöcke ein-/ausklappen. - Zoom (Hoisting): Klick auf den Bullet fokussiert den Ast; die Breadcrumb-Leiste führt zurück.
- Drag & Drop verschiebt Blöcke samt Unterästen; auf einen anderen Block gezogen, wird der Block zum Unterpunkt.
- Slash-Befehle:
/todo,/link,/h1,/h2,/h3,/code,/callout,/divider(Liste inOutlinerBlock.tsx). - Links:
[[Notiztitel]], Markdown-Links[Titel](url)und reine URLs werden als Token dargestellt;LinkModalhilft beim Verknüpfen von Notizen. - Einfügen: Mehrzeiliger Text wird anhand von Markdown-Präfixen und Einrückung in Blöcke zerlegt; Überschriften gruppieren darunterliegenden Text und Code.
- Speichern: Der Editor speichert 800 ms nach der letzten Eingabe das gesamte Dokument (
PUT /documents/{id}). Der schlanke Block-EndpunktPATCH /documents/{id}/blockswird derzeit vom To-Do-Rollup beim Abhaken genutzt.
Explorer, Tags, To-Dos
- Ordnerbaum mit Favoriten (
doc_pins), Verschieben per Drag & Drop (/documents/{id}/move,/folders/move). - Tags: Alle
#Hashtagswerden aggregiert (/workspace/tags). Eine Tag-Seite zeigt alle Fundstellen gruppiert nach Notiz und kann eine eigene Freitext-Notiz tragen (tag_pages). - To-Do-Rollup: Die Ansicht „To-Dos“ sammelt alle
todo-Blöcke aller Notizen, filterbar nach Ordner. Abhaken im Rollup ändert den Block in der Notiz. - Enhanced Tasks: Ein
todo-Block lässt sich als verknüpfte Aufgabe führen (/documents/{id}/blocks/{blockId}/enhanced-task); Erledigt-Status bleibt zwischen Notiz und Aufgabenansicht synchron.
Freigabe
- Einzelne Notizen und ganze geteilte Ordner lassen sich an Benutzer oder Gruppen geben. Empfänger haben nur Leserechte; nur der Eigentümer schreibt (sharing-and-permissions.md, FLAW-17).
- Empfänger ordnen geteilte Notizen und Ordner in ihrem eigenen Baum ein (
doc_user_folders,workspace_folder_mounts), ohne dass der Eigentümer etwas davon merkt. - Änderungen erreichen offene Fenster über
DOC_BLOCKS_PATCHED/DOC_UPDATED(websocket.md).
Grenzen
- Keine gleichzeitige Mehrbenutzerbearbeitung, keine Cursor-Anzeige, keine Versionshistorie.
- Keine Virtualisierung langer Dokumente; sehr große Notizen können auf Mobilgeräten träge werden (nicht gemessen).
- Suche (
/search) erfasst nur Titel und Inhalt eigener Notizen (FLAW-18).