Die Notiz ist ein Editor und kein Textfeld mehr #3

Merged
thiel merged 1 commit from notiz-editor into main 2026-09-22 08:45:39 +00:00
Owner

SONEs Editor (@sone/editor) wandert als packages/editor nach SOTE und traegt die Notiz in der Detailspalte: Formatieren, Links, Listen, Aufgabenhaken, Zitate, Code, Trenner, Hinweiskaesten, Tabellen, /-Menue und @-Erwaehnungen.

Speicherung. Neue Spalte note_doc (Migration 0048) traegt das Yjs-Dokument, note bleibt der daraus abgeleitete Klartext fuer Suche, Kartenvorschau, Kalender-Tooltip und ICS-Export. Beide gehen in einem Patch raus. Alte Notizen wandern beim ersten Oeffnen, nicht per Massenlauf.

Kein Sync-Server. Das Y.Doc lebt im Fenster; zwei offene Fenster derselben Notiz ueberschreiben sich, das letzte Speichern gewinnt. Das Format stimmt damit schon fuer eine spaetere Live-Bearbeitung.

Bilder und Hoehe. Der Knopf zeigt die schon angehaengten Bilder der Aufgabe; Einfuegen und Ziehen laedt hoch und haengt an — ein Speicherort. Das Feld waechst mit und nimmt auf Knopfdruck die ganze Spalte.

Uebergabe: claude/sote-notiz-editor.md im Projekt.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LfFj2znJJkmP4Qyaokczh3

SONEs Editor (`@sone/editor`) wandert als `packages/editor` nach SOTE und traegt die Notiz in der Detailspalte: Formatieren, Links, Listen, Aufgabenhaken, Zitate, Code, Trenner, Hinweiskaesten, Tabellen, `/`-Menue und `@`-Erwaehnungen. **Speicherung.** Neue Spalte `note_doc` (Migration 0048) traegt das Yjs-Dokument, `note` bleibt der daraus abgeleitete Klartext fuer Suche, Kartenvorschau, Kalender-Tooltip und ICS-Export. Beide gehen in einem Patch raus. Alte Notizen wandern beim ersten Oeffnen, nicht per Massenlauf. **Kein Sync-Server.** Das Y.Doc lebt im Fenster; zwei offene Fenster derselben Notiz ueberschreiben sich, das letzte Speichern gewinnt. Das Format stimmt damit schon fuer eine spaetere Live-Bearbeitung. **Bilder und Hoehe.** Der Knopf zeigt die schon angehaengten Bilder der Aufgabe; Einfuegen und Ziehen laedt hoch und haengt an — ein Speicherort. Das Feld waechst mit und nimmt auf Knopfdruck die ganze Spalte. Uebergabe: `claude/sote-notiz-editor.md` im Projekt. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01LfFj2znJJkmP4Qyaokczh3
GEWÜNSCHT: „Können wir bei SOTE das Text-Detailfeld als Editor bauen? …
damit ich formatieren kann, Links im Text setzen, auch mal ein Bild
einfügen. … Textfeld auch gerne gleich höher machen, vielleicht kann man
es auch über die Seitenleiste ziehen, so dass es die ganze Höhe nimmt?"
Und, auf die Frage nach dem Weg: „SONEs Editor komplett übernehmen."

Also SONEs Editor, und zwar wirklich: `packages/editor` ist `@sone/editor`
— Schema, Eingaberegeln, Tastenkürzel, Slash-Menü, Erwähnungen, Tabellen,
Hinweiskästen, Markdown-Einfügen. Weggelassen ist, was es in SOTE nicht
gibt: Seitenverweise, Kommentar-Anker, Autorenfarben und die Einbettung
von SOTE-Aufgaben — die zeigt in die andere Richtung. Das Paket hing an
`@sone/core` nur über achtzehn Namen, fast alle Konstanten; die stehen
jetzt in `packages/core/src/doc/`.

DIE EIGENTLICHE ENTSCHEIDUNG war nicht der Editor, sondern `note`. Die
Spalte wird an vier Stellen als Klartext gelesen — Volltextsuche,
Kartenvorschau, Kalender-Tooltip, ICS-Export — und keine davon kann etwas
mit Auszeichnung anfangen. Darum trägt die neue Spalte `note_doc` das
Yjs-Dokument, und `note` bleibt der daraus abgeleitete Schatten. Beide
gehen in EINEM Patch raus: zwei getrennt schreibbare Antworten auf
dieselbe Frage laufen auseinander, und man merkt es erst in der Suche.

Kein Sync-Server: das Y.Doc lebt im Fenster, gespeichert wird sein Stand.
Der Preis steht in `NoteEditor.tsx` — zwei offene Fenster derselben Notiz
überschreiben sich, das letzte Speichern gewinnt. Der Gewinn ist, dass das
Format schon stimmt, wenn die Live-Bearbeitung kommt.

Alte Notizen wandern beim ersten ÖFFNEN, nicht in einem Massenlauf: wer
eine Aufgabe nie anfasst, behält sie unverändert. Öffnen allein schreibt
nichts.

Bilder: der Knopf zeigt, was schon an der Aufgabe hängt, und ein
eingefügtes oder gezogenes Bild wird angehängt — ein Speicherort, nicht
zwei. Höhe: mitwachsend, deutlich höher als die vier Zeilen von vorher,
und ein Knopf gibt der Notiz die ganze Spalte (lokal gemerkt).

Drei Wächter mussten mitentscheiden statt nur zu melden:
- `check-task-columns` kennt jetzt eine benannte Ausnahme — `note_doc`
  gehört nicht in die Listen, sonst überträgt eine Tafel mit hundert
  Karten hundert Dokumente, um keines anzuzeigen.
- `check-data-hooks` liest auch `packages/editor/src`, wo die Blöcke ihre
  `data-*`-Merkmale setzen; ohne das meldete er sieben lebende Regeln tot.
- Der Trigger schweigt zu `note_doc`, wie er schon zu `note` schweigt: ein
  Anstoß je Speichern wäre ein Nachladen mitten im Satz.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LfFj2znJJkmP4Qyaokczh3
thiel merged commit 9592db1301 into main 2026-09-22 08:45:39 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
thiel/sote!3
No description provided.