/documents und /documents/editor/:id — Dokumente
Hinweis: Rahmen: 00-rahmen.md. Code:
packages/plugins/src/documents/(9064 Zeilen — der größte Bereich) · Nachweisnpm run verify:dokumente.
Wofür
Das Archiv: Regale, Papier, Ordnung. Ein Block-Editor wie in Notion — der Block ist die Einheit, nicht die Seite.
Zwei Schirme:
/documents— die Übersicht: was man sieht, bevor man eine Seite geöffnet hat/documents/editor/:id— die Seite selbst
Weg und Rahmen
| Route | /documents, /documents/editor/:documentId, ?neu legt an, ?block=<block> rollt zu einem Block (Abschnittschip, WI-261015-abschnittschips-reste) |
| Merkmal | DOCUMENTS |
| Zimmer | Archiv · Lautstärke 2 · #00b8a9 |
Was man sieht
Die Übersicht
Karten mit Symbol, Titel und Weg. Bis zum 09.09.2026 stand hier eine Tabelle mit sechs Spalten, darunter „Zugriff: OWNERSHIP" — kein Wissen, sondern ein Aufzählungswert. Danach zwei Listen (zuletzt geöffnet, zuletzt geändert): die Fragen stimmten, die Form nicht.
Der Weg ist die Angabe, die wirklich fehlt — nicht wann, sondern wo: drei Seiten können „Zusammenfassung" heißen; welche gemeint ist, sagt der Weg dorthin.
Zeitangaben stehen in Worten: „vor 3 Tagen" beantwortet die Frage, die man hat; „08.09.26" muss man erst gegen heute rechnen.
Ohne Seiten steht der Horizont (seit 28.09.2026, RL02): ein Satz in der Lesetinte über den Leerzustand-Baustein statt eines blassen Hinweises. Die Karten stehen als Spalte — Symbol, Titel, Weg; als Knopf hatte das Blatt sie vorher in eine Zeile geschoben.
Der Kopf trägt das Zimmer (seit 30.09.2026, E18, N457): der Titel „Dokumente“ in Newsreader, rechts „Neue Seite“ und daneben „Neue Mindmap“ (seit 20.10.2026, NB-261019-mindmap-als; Zeichen `baum`). Beide Knöpfe stehen als Gruppe und brechen gemeinsam um — am Telefon in eine eigene Zeile unter dem Titel. „Neue Mindmap“ legt eine Mindmap mit diesem Titel an und öffnet sie mit der Wurzel im Schreibfeld; dasselbe tut `?a=mindmap&neu` und „Mindmap“ unter „Neu“ im Kopf. Das Ortwort „Archiv“ darüber ist seit ES-261009 (10.10.2026) entfallen; das Motiv (Regal) zeichnet sich bei Lautstärke 2 nicht. Vorher stand der Titel allein in der Grotesk — der einzige Bereichsschirm ohne Ort. Die offene Seite im Editor trägt kein Zimmer; sie ist Papier (Guide §12).
Ein Dokument ist ein Blatt (Guide §6): scharfe Ecken (seit dem 10.10.2026 wirklich null; vorher rundete der Werkstoff papier sie leicht, ES-261009-listen-flaechen-statt), Papier als Werkstoff, oben rechts ein Eselsohr in Bereichsfarbe. Kein Glas — Glas ist für das, was schwebt.
Mögliche Dubletten (seit 30.09.2026, E08, N453): Tragen zwei Seiten außerhalb des Papierkorbs denselben Titel — Groß- und Kleinschreibung, Leerzeichen und Satzzeichen zählen nicht, das Symbol davor auch nicht —, steht unter dem Kopf „„Analysis“ gibt es zweimal — zusammenführen?“ mit dem Titel des Paares (seit 10.10.2026, ES-261009-oberflaechentexte-ohne; bis dahin nur „Eine mögliche Dublette“) bzw. „2 mögliche Dubletten zusammenführen?“. Der Knopf öffnet ein Fenster mit den Paaren; „Verschmelzen“ stellt beide Seiten nebeneinander, mit Datum und Verknüpfungen je Art, und lässt wählen, welche bleibt (N349). Danach steht in derselben Zeile eine Meldung mit „Wieder trennen“. Ohne Paare steht nichts da. Zwei Seiten, die gewollt gleich heißen, merkt „Sind verschieden“ je Konto (seit 01.10.2026, E29, N466); sie stehen dann nicht mehr im Hinweis. Unter der Liste holt „{n} als verschieden gemerkt“ sie mit „Wieder anbieten“ zurück; sind alle Paare gemerkt, verschwindet die Zeile, und zurückgeholt wird mit dem MCP-Werkzeug dublette_verschieden (N469). Der Baustein gehört dem Gerüst links (Dublettenhinweis), die Form steht im Guide §15.3. Im Fenster stehen die Paare seit dem 10.10.2026 als Zeilen mit Haarlinien statt als Karten aus Karton — das Fenster ist schon die Fläche (ES-261010-restliche-kartenraster); dasselbe gilt in den Aufgaben.
Das Raster der Blätter bleibt (geprüft am 10.10.2026, ES-261010-restliche-kartenraster): „Zuletzt geöffnet“ und „Zuletzt geändert“ stehen weiter als Blätter nebeneinander (Guide §6). Ob ein Raster aus Blättern eine Liste sein sollte, ist offen.
Die Seitenleiste
Der Baum zeigt ausschließlich eigene, freigegebene und öffentliche Seiten. Die frühere Verwaltungsumschaltung „alle zeigen“ ist seit D34 entfernt; auch ein Administratorkonto bekommt hier keine Titelliste fremder Konten. Für begründete Einsicht bleibt nur der protokollierte Identitätswechsel.
| Element | Was es tut |
|---|---|
| Seiten durchsuchen… | filtert den Baum |
| Baum | Seiten und Unterseiten, aufklappbar |
| Unterseite anlegen | am Elternteil |
| In den Papierkorb | dreistufiges Löschen, erste Stufe. Seit dem 23.09.2026 zwei Klicks (Q09, N165): Der Mülleimer an der Zeile wird zu „ja, weg" und „doch nicht", erst „ja, weg" legt die Seite samt Unterseiten in den Papierkorb — dreißig Tage zurückzuholen. Vorher genügte ein Klick. Ist die Seite gerade offen, geht der Editor zur Übersicht, aber nur, wenn der Server zugestimmt hat |
| Wiederherstellen | holt aus dem Papierkorb |
| Endgültig löschen | letzte Stufe. Seit dem 23.09.2026 zwei Klicks (Q09, N165): „ja, endgültig" / „doch nicht" an derselben Stelle; bis dahin löschte ein Klick die Seite samt Unterseiten und Blöcken. Seit demselben Tag über den Papierkorb (F75): Der Klick geht an PAPIERKORB_ENDGUELTIG mit der Art dokument, wie jede andere Art — nur, was dort liegt, und nur vom Besitzer. Die Freigaben der Seite und ihrer Unterseiten gehen mit (Wanderung 108). Den eigenen Weg /api/documents/delete gibt es nicht mehr: Er fragte nicht nach dem Papierkorb, ließ eine Freigabe mit Löschrecht genügen und ließ die Freigaben der Unterseiten stehen |
| Favorit | Sterne oben |
| Verschieben | Ziehen im Baum |
| Mit mir geteilt | vierter Kopf, unter dem Papierkorb: führt in den Briefkasten /geteilt (geteilt.md, N366) |
Tastatur und Daumen (seit 28.09.2026, RL02; Baum seit 30.09.2026, RL16): Der Baum ist ein role="tree" mit einem einzigen Tabulatorhalt, der mitwandert — Tab führt hinein und wieder hinaus. Pfeil hoch und runter gehen durch die sichtbaren Zeilen, rechts klappt auf oder geht zum ersten Kind, links klappt zu oder geht zum Elternteil, Pos1 und Ende an Anfang und Schluss; Enter und Leertaste öffnen die Seite. Die Zeilen tragen aria-level, aria-setsize und aria-posinset. Die Griffe (Stern, Unterseite, Papierkorb) erreicht Tab nur in der Zeile mit dem Halt, die Klappe gar nicht. Favoriten bleiben einzelne Halte. Ohne Zeiger (hover: none) sind Stern und Griffe immer sichtbar, am Daumen messen Köpfe, Klappen und Griffe vierzig Bildpunkte. Das Suchfeld erscheint erst, wenn es Seiten gibt.
Bewegung (seit 07.10.2026, BW-261007-listen): Der Baum zeichnet seine sichtbaren Zeilen flach, und jede ist ein Eintrag der Form zeile. Beim Aufklappen, Anlegen, Verschieben und Löschen kommen und gehen die Zeilen einzeln in der Höhe, die übrigen gleiten an ihren neuen Platz. Die Bewegung liegt in einer Hülle um die Zeile, damit das Ziehen zwischen Seiten (HTML-Ziehen) unberührt bleibt.
Fremde Seiten tragen ein Zeichen (seit 27.09.2026, NB10). Eine Seite, die einem anderen Konto gehört und diesem freigegeben ist, trägt im Baum und unter „Favoriten" hinter dem Titel das Zeichen „geteilt" — knapp, ohne Namen, weil in der schmalen Leiste jeder Buchstabe dem Titel fehlt. Wem sie gehört, sagen Zeigerhinweis und Vorlesetext („Geteilt von Ada"). Woher: Die Seitenliste kennt je Eintrag viaShare und den Anzeigenamen des Eigentümers; useDocumentTree macht daraus fremdVon an der Zeile.
Der Baum überlebt einen Ausfall (seit 27.09.2026, L03, Grundsatz 33). Bis dahin setzte ein Fehlschlag beim Laden die Liste auf leer, und die Leiste sah aus wie „keine Seiten". Jetzt liegt der Baum — Titel, Zeichen, Ordnung, Stern — unter denotato.rueckfall.documents.baum (beim Abmelden weg). Antwortet der Server nicht, bleibt der Baum vom letzten Mal stehen, und über Leiste und Inhalt steht die Marke „Der Server antwortet gerade nicht — Stand von …". Sie steht über der ganzen Fläche, weil Übersicht und Leiste aus demselben Baum lesen. Der Inhalt der Seiten wird nicht aufgehoben: Wer ohne Netz eine Seite öffnet, bekommt die Fehlermeldung des Editors. Der Papierkorb hat keinen Rückfall.
Teams (seit 18.10.2026, NB-261018-teams-schirm)
In der Leiste steht unter den eigenen Seiten der Abschnitt „Teams“. Er zeigt jedes Team, in dem man Mitglied ist, mit seinem eigenen Seitenbaum. Das Plus neben der Überschrift legt ein Team an: Man gibt einen Namen ein, und man ist dann sein Verwalter. Jede Teamzeile hat zwei Griffe: Der eine legt eine neue Seite im Team an, der andere öffnet die Verwaltung. Im Baum legt der Griff an einer Seite eine Unterseite an. Die eigenen Seiten in einem Team stehen nur dort und nicht noch einmal unter den eigenen Seiten.
Eine Seite, deren Verfasser das Team verlassen hat, trägt den Hinweis „ehemaliges Mitglied“. Die Seite bleibt im Team.
/documents/teams/:teamId — die Verwaltung. Die Seite zeigt Leiste und Inhalt wie die Übersicht. Jedes Mitglied sieht die Mitglieder mit Rolle und Beitrittsdatum und kann das Team verlassen. Dafür gibt es eine Rückfrage. Das letzte Mitglied kann nicht gehen: Statt des Knopfs steht dort „Du bist das letzte Mitglied. Wer gehen will, lädt erst jemanden ein.“, und der Server lehnt es ebenso ab (seit NB-261018-teams-nachprobe). So bleibt kein Team mit Seiten, aber ohne Mitglieder zurück. Ein Verwalter kann außerdem:
- das Team umbenennen,
- die Rolle eines Mitglieds setzen,
- ein Mitglied entfernen (die Seiten des Mitglieds bleiben im Team),
- einen Einladungslink anlegen, kopieren und zurückziehen.
Ein neuer Link ist nur in dem Moment zu sehen, in dem er angelegt wird. Danach führt die Liste der offenen Links nur noch ihr Ablaufdatum. Den letzten Verwalter lehnt der Server ab, wenn er gehen oder entfernt werden soll.
/documents/teams/join#… — der Beitritt. Der Link trägt das Zeichen hinter #. Der Browser schickt diesen Teil nicht, also sieht ihn weder der Server-Log noch ein Referrer. Der Schirm nennt das Team und wer eingeladen hat. Er sagt auch, dass die Mitglieder den eigenen Namen sehen. Erst „Beitreten“ tritt bei. Wer schon Mitglied ist, bekommt „Zum Team“. Ein abgelaufener oder zurückgezogener Link zeigt „Dieser Link gilt nicht mehr“. Nach dem Beitritt ersetzt die Verwaltung den Link im Verlauf. So zeigt „Zurück“ ihn nicht noch einmal.
Die Suche findet die Seiten der eigenen Teams nach Titel und Text; wer nicht Mitglied ist, findet sie nicht. Die eigene Zeile in der Mitgliederliste bietet kein „Aus dem Team nehmen“, denn dafür ist „Team verlassen“ da. Noch offen: Löscht das letzte Mitglied sein Konto, bleibt das Team ohne Mitglieder; ein Team mit seinen Seiten aufzulösen gibt es nicht.
Der Editor
Die Brotkrume
Über der Seite steht, wo sie liegt — der ganze Weg, nicht nur eine Stufe. „Dokumente › Studium › Analysis › Folgen": vorn die Übersicht, dann jede Elternseite bis hinunter zur geöffneten, jede mit ihrem Symbol vor dem Titel. Gebaut in Editorschirm.tsx (Brotkrumen, ein <nav> mit dem Namen „Wo diese Seite liegt"), der Weg kommt aus pfadZu() in @shared/handlers/documents/seitenbaum.ts.
- „Dokumente" führt zur Übersicht
/documents. - Jede Zwischenstufe ist ein Knopf und öffnet diese Seite im Editor.
- Die letzte Stufe ist die geöffnete Seite: in voller Schriftfarbe statt grau, kein Knopf — sie ist schon offen.
- Die Pfeile
›sind Zierde und für Vorleseprogramme ausgeblendet. - Ist der Weg länger als die Zeile, bricht er um, statt abzuschneiden.
Nur, was im eigenen Baum steht. Der Weg wird aus dem Seitenbaum der Seitenleiste gerechnet. Eine Seite, die dort nicht steht, hat keinen Weg, und dann steht keine Brotkrume da, statt einer halben. Ein Kreis in den Elternverweisen bricht ab, statt die Seite hängen zu lassen.
Die vollständigere der beiden Brotkrumen in Denotato. Material und Studium benutzen den gemeinsamen Baustein components/menus/shell/Brotkrume.tsx mit zwei Stufen (herkunft › hier); nur der Editor zeigt den ganzen Pfad. Welche Bereiche überhaupt eine haben, steht in 00-rahmen.md unter den Befunden zur Navigation.
Der Seitenkopf
Symbol · Titel · eine Zeile darunter. Kein Kasten, kein Rahmen: wer in einer Notion-Seite schreibt, schreibt in den Text, nicht in ein Formular. Der Titel wächst mit.
Das Symbol hat drei Formen (WI-261008-eigene-seitensymbole, 08.10.2026), alle im Feld icon (seit Wanderung 271 bis 64 Zeichen):
| Form | Geschrieben | Beispiel |
|---|---|---|
| Emoji | das Emoji selbst, höchstens 16 Zeichen | 📚 |
| Zeichen | zeichen:<name> oder zeichen:<name>:<farbe> | zeichen:buch:orchidee |
| Bild | datei:<kennung> einer Datei aus der Ablage | datei:0b9c… |
Die Zeichen sind Denotatos eigener Satz (@shared/config/zeichensatz.ts), aus dem auch die Bereiche ihr Zeichen nehmen. Die Farben sind die 13 Bereichsfarben des Styleguides (§3.2) beim Namen — gespeichert wird der Name, nie der Farbwert; ohne Farbe trägt das Zeichen die des Bereichs. Ein Bild ist PNG, JPEG, GIF oder WebP bis 512 KB; SVG nicht, weil ein SVG Skript tragen kann (A42).
Wer ein Bild setzen darf. Auf einer eigenen oder geteilten Seite muss die Datei dem Besitzer der Seite gehören. Im Wiki muss sie dem gehören, der das Symbol setzt, und öffentlich sein — sonst sähen Leser sie nicht. Der Server prüft beides beim Setzen (files/server/symboldatei.ts) und weist ab mit document_icon_file_error; die Form prüft pruefeSeitensymbol aus @shared/handlers/documents/seitensymbol.ts (document_icon_invalid_error). Weist der Server ab, nimmt der Editor das Symbol im Kopf zurück.
Gezeichnet wird jedes Seitensymbol von einer Komponente, frontend/src/components/zeichen/Seitensymbol.tsx: im Baum, in der Brotkrume, im Kopf, auf den Karten der Übersicht, im Seitenverweis und in der eingebetteten Seite, in der Schnellsuche, in der Wikileiste und auf der Vorschaukarte. Alle drei Formen stehen im selben Quadrat aus theme.layout.seitensymbol (Zeile 16, Liste 20, Kopf 40 px); ein Bild, das noch lädt, hält den Platz. Was sich nicht zeigen lässt — ein Zeichen, das es nicht gibt, ein Bild, das fehlt oder das der Leser nicht laden darf — zeigt das Blatt in Nebentext, nie das rote Kästchen und nie den Wert als Text.
Die Zeile darunter beantwortet ungefragt, was man wissen will: wie viele Wörter · wie lange man daran liest · ob alles gesichert ist („Sichert …", „Gleich gesichert", „Gesichert 21:47", „Nicht gesichert"). Auf der leeren Seite steht die Lesezeit schon da, unsichtbar und für Vorleser stumm, am Ende der Zeile; mit dem ersten Wort rückt sie hinter die Wortzahl. So bricht die Zeile am Telefon nicht erst beim Tippen um und schiebt nichts nach unten (F-261008-messwerkzeug-nennt, vorher 0,08 Layout-Verschiebung).
Vor dem Sicherungsstand steht seit dem 23.09.2026 ein Zeichen, und das Zeichen trägt die Farbe (N134): warnung in Rot bei „Nicht gesichert", laeuft bei „Sichert …", zeit (die Sanduhr) bei „Gleich gesichert", haken in Grün bei „Gesichert". Die beiden mittleren tragen die Bereichsfarbe — sie sind ein Vorgang und kein Urteil. Das Wort bleibt grau. Vorher war bei einem Fehler nur das Wort rot, und die Farbe trug den Unterschied allein.
Scheitert das Laden oder Sichern, hängt keine Anzeige mehr fest (F28b, 23.09.2026): Wirft das Laden der Seite, verschwindet „Dokument wird geladen …" trotzdem — der Ladezustand hängt in Editorschirm an einem Abbruch-Merker des Effekts und wird in einem try/finally zurückgesetzt. Beim Sichern selbst wäre useBusyLock falsch, weil useDokumentbloecke absichtlich auch überlappend sichert (Zeitgeber, Verlassen der Seite, Kartenübernahme) und ein verworfener zweiter Aufruf Änderungen verschluckte; ein try/finally gibt „Sichert …" deshalb ebenso zuverlässig frei, statt bei einem geworfenen Fehler stehen zu bleiben.
Enter im Titel springt in den Text — ein Zeilenumbruch im Titel wäre in Seitenleiste, Suche und Kalender ein Titel mit einem Umbruch darin, und der Rest fiele weg. Auf einer leeren Seite legt Enter den ersten Absatz an und setzt den Zeiger hinein, ebenso „Hier anfangen zu schreiben“ (F-261005-fokus-neue-seite; vorher stand der Absatz da, und man musste hineinklicken).
Eine neue Seite beginnt im Titel (F-261005-fokus-neue-seite): ohne Titel und ohne Block steht der Zeiger nach dem Laden im Titelfeld, auf welchem Weg die Seite auch entstanden ist — Seitenleiste, Übersicht, „Neu anlegen“, Palette, Schnellnotiz. Einmal je Seite; wer danach woanders hinklickt, bekommt ihn nicht zurückgerissen.
„Teilen" steht seit dem 24.09.2026 in der Fußzeile, hinter „als Markdown" (W21, N214) — und nur für den, der die Seite verwalten darf: Eigentümer und Mitverwalter. Christian sprach vom „Seitenmenü"; ein solches gibt es nicht, und die Fußzeile ist die Stelle, an der schon steht, was man mit der ganzen Seite tut. Ob der Eintrag erscheint, entscheidet allein die Antwort auf LIST_DOCUMENT_SHARES: Gibt der Server die Liste heraus, steht „Teilen" da, sonst nicht — eine zweite Regel im Client gibt es nicht. Ist die Seite geteilt, heißt der Eintrag „mit 2 geteilt“ und trägt davor das Zeichen geteilt (seit 30.09.2026, E18, N454): Geteilt ist ein Merkmal der Seite, und ein Merkmal steht nie als Wort allein (N134). „Teilen“ bleibt ohne Zeichen — es ist ein Handgriff. Die Zahl kommt mit derselben Anfrage. Kommt die Antwort für eine vorige Seite zu spät an, zeigt der Kopf kein „Teilen" statt eines falschen.
Ein Klick öffnet den Dialog „„Analysis“ teilen“: oben die Personensuche („Nutzer suchen …", ab zwei Zeichen, Benutzer- oder Anzeigename von vorn, höchstens zehn Treffer, das eigene Konto nie) und daneben die Rolle für neue Freigaben; ein Treffer ist ein Knopf, ein Klick teilt. Darunter „Bereits geteilt": je Person das Profilbild mit dem gezeigten Rang (seit dem 28.09.2026, E22, N367; dasselbe an jedem Treffer der Suche), der Anzeigename, @benutzer, die Rolle als Auswahl und „Zugriff entziehen" (bis zum 26.09.2026 „Zurücknehmen", das auf Englisch zu „Undo" geworden wäre — I07, N308). Rolle und Knopf stehen beisammen; am Telefon stehen beide als Paar bündig unter dem Namen, statt zu schrumpfen (E27; Christian am 13.10.2026: „unter den Namen“). Eine Haarlinie trennt nur die Zeilen voneinander, unter der letzten steht keine. Suchfeld und Rollenwahl, Rolle und Knopf sind je Reihe gleich hoch und gleich groß beschriftet (13.10.2026). Die drei Rollen sind Namen für die Stufen, die eine Seitenfreigabe schon trägt — kein neues Feld:
| Rolle | Stufe | darf |
|---|---|---|
| Betrachter | read | die Seite lesen |
| Bearbeiter | write | mitschreiben, Titel und Symbol ändern |
| Mitverwalter | manage | weiter teilen, zurücknehmen, die Seite öffentlich oder per Link lesbar machen, die Karten der Seite anlegen und nachführen |
Woher eine Freigabe kommt (A-261007-teilen-rechtebaum, Zuschnitt A, Christian am 14.10.2026). Zwei Stellen entscheiden, nacheinander. Erst der Rechtebaum: Hat das Konto den Bereich der Seite nicht, gibt es die Seite für dieses Konto nicht (404; abgeschaltet 403) — auch keine geteilte. Dann die Stufe am Gegenstand: Eigentümer dürfen alles, eine geöffnete Seite (link, public) darf jeder lesen, sonst gilt die Zeile in auth.resource_shares mit ihrem Wort aus der einen Leiter read < add < write < manage (ACCESS_LADDER in @shared/types/resourceAccessTypes, dieselben Worte wie in SQL). Beides fragt checkDocumentAccess in session/server/helfer.ts. Wegwerfen darf eine Seite nur ihr Eigentümer, keine Freigabe reicht dafür, auch manage nicht. Die Wege unter /api/shares tragen das Recht des Bereichs, dessen Art sie teilen; Suche und Eingang verlangen einen der teilenden Bereiche. Bis zum 15.10.2026 hieß die Stufe AccessType, eine Zahl von 0 bis 8; das Feld heißt seither access statt accessType.
Wer die Öffentlichkeit ändern darf (D40, N278, 24.09.2026): nur Eigentümer und Mitverwalter. CHANGE_DOCUMENT verlangt manage, sobald publicness mitkommt — link und public machen die Seite samt allen Blöcken für jedes Konto lesbar, das ist Verwalten wie das Teilen an Personen. Ein Bearbeiter bekommt no_access_error (403), und die Seite bleibt ganz, wie sie war, auch ein im selben Aufruf geschickter Titel. Titel und Symbol allein ändert er weiter. verify:dokumente prüft beide Seiten.
Eine Rolle umzustellen ist ein Aufruf von SHARE_DOCUMENT mit der neuen Stufe; der Server überschreibt die Freigabe, statt eine zweite anzulegen, und die Person ist zwischendurch nicht ausgesperrt. Sagt er nein, steht der Grund unter der Liste („Teilen nicht möglich — darfst du diese Seite noch verwalten?"), und die Liste bleibt, wie sie war. Die Namen stehen einmal in ROLLENNAMEN (@shared/types/sharingTypes), das Fenster einmal in components/sharing/Freigabefenster.tsx — derselbe Dialog wie am Studienknopf, der von den drei Rollen die zwei zeigt, die das Studium kennt.
Freunde zur Wahl (NB-261017-freunde-teilen, 19.10.2026). Solange das Suchfeld leer ist, steht unter ihm „Freunde“: die Freunde des Kontos als dieselben Treffer, die die Suche liefert. Ein Klick gibt frei wie an jede andere Person, mit der gewählten Rolle und demselben SHARE_DOCUMENT; wer schon geteilt ist, steht ausgegraut da. Die Liste kommt über den Anschluss freunde aus dem Bereich Freunde; ist er abgeschaltet, bleibt nur die Suche. Eine Freundschaft gibt kein Recht, und wird sie gelöst, bleibt jede Freigabe, wie sie war — /api/friends/remove zählt in sharesKept, was das lösende Konto der anderen Seite freigegeben hat, und „Freunde“ sagt es in einem Satz. Dasselbe gilt im Fenster am Studienknopf und in der Postfachpflege, die dasselbe Fenster zeigen.
Nach der Sichtprüfung vom 24.09.2026 (E18, erledigt am 30.09.2026): Das Kreuz sitzt auf der Mitte der Titelzeile — es teilt mit ihr die Höhe von 28 px und beginnt beim selben Innenabstand; vorher lag es am Rechner rund 11 px zu hoch, am Telefon rund 4. Der Pfeil der Rollenauswahl steht mittig zur Schrift. Auf einem Berührungsgerät bekommt beim Öffnen das Fenster den Fokus und nicht das Suchfeld, damit keine Tastatur „Bereits geteilt“ zudeckt; am Rechner steht der Fokus weiter im Suchfeld. Vor der Rolle steht kein „als“, und ohne Freigaben steht ein Satz („Noch niemandem freigegeben.“) statt des Horizonts (N454).
Die Blöcke
24 Typen: Text · Überschrift (1–6, zuklappbar) · Aufzählung · Nummerierung · Aufgabe · Aufklappbar · Trennlinie · Spaltensatz · Tabelle · Formel (LaTeX) · Code · Diagramm · Hinweiskasten · LaTeX-Text · Bild · Datei · Weblink · Seitenverweis · Knopf · Ansicht · Karteikarte (Frage · Hinweis · Antwort).
Code und Hinweiskasten gibt es seit dem 24.09.2026 (WI08), für alle Seiten, nicht nur fürs Wiki; die Datenbank kennt sie ab Wanderung 134.
- Code ist wörtlicher Quelltext in Festbreitenschrift. Darüber ein Feld für die Sprache (höchstens 32 Zeichen) und ein Knopf „Kopieren“, der nur erscheint, wenn Code dasteht; spielt die Zwischenablage nicht mit, meldet ein Fehler es (die Bestätigung des Gelingens entfiel am 08.10.2026, 2026-10-08-keine-erfolgsmeldungen). Lange Zeilen rollen im Kasten, nie die Seite. Im Code gelten die Tasten anders: Enter macht eine neue Zeile, Tab und ⇧ Tab rücken ein und aus, Tippkürzel und
/wirken nicht — hinaus kommt man mit Strg + Enter, und ein Satz unter dem Feld sagt das. - Diagramm (seit 14.10.2026, S-261007-diagrammblock, Migration 321 und 322) ist derselbe Kasten wie Code mit fester Sprache
mermaid: Die Sprache steht als Kennzeichnung oben links, nicht als Feld; die Tasten gelten wie im Code. Unter dem Quelltext zeichnet eine Vorschau 400 ms nach dem letzten Tastendruck neu; im Lesebild und ohne Schreibrecht steht nur das Bild, und wo Mermaid den Text nicht versteht, der Quelltext. Im Schrägstrichmenü steht „Diagramm“ in „Medien“, im Blockmenü unter „Umwandeln in“. Markdown schreibt und liest es als Zaun```mermaid; übernommene Antworten des Begleiters landen so als Diagramm auf der Seite. Code-Blöcke, die vor der Migration die Sprachemermaidtrugen, sind Diagramme geworden; ein Code-Block, dem jemand später diese Sprache gibt, zeichnet weiter. - Ansicht (seit 16.10.2026, WI-261012-ansicht-als-block, Migration 338) zeigt die eigenen To-Dos als Liste oder Brett mitten in einer Seite. Ein neuer Block fragt zuerst „Was soll die Ansicht zeigen?“; danach stehen über den Zeilen die vier Reiter des Schirms der To-Dos (Offen, Geplant, Erledigt, Wünsche) und bei Offen und Geplant „Ordnen“ mit Gruppieren, Sortieren und Liste oder Brett. Jede Wahl bleibt im Block; wer nur lesen darf, stellt um, ohne dass es bleibt. Der Block trägt nur diese Einstellung, nie Zeilen: Jedes Konto sieht seine eigenen To-Dos, Markdown, Wiki-Paket und MCP schreiben nur den Zaun
```denotato data_view {…}. Abhaken geht wie auf dem Schirm; ein Klick auf eine Aufgabe öffnet sie dort. Fehlt der Bereich auf der Instanz, sagt ein Satz das statt einer leeren Fläche. Die Dokumente kennen die To-Dos nicht; diese liefern die Ansicht über den Anschlussansichten(Grundsatz 43). Im Schrägstrichmenü steht „Ansicht“ in „Struktur“, auch unter „aufgaben“, „tabelle“ und „tafel“. - Formel schreibt sich seit LX04 (30.09.2026) in CodeMirror 6 (
Latexfeld) statt im einfachen Textfeld: Befehle, Klammern, Zahlen und Kommentare tragen die Farben des Denotato-Themes, hell und dunkel, in Festbreitenschrift. Die gesetzte Formel steht wie bisher darüber, bis man sie anklickt. Die Tasten gehören dem Dokument, nicht dem Feld: Enter macht eine neue Zeile, Strg + Enter beendet den Block, Rückschritt am Anfang verbindet ihn mit dem davor, Strg + Z und Strg + Y gelten dem ganzen Dokument. Am Telefon steht über der Bildschirmtastatur eine Zeichenleiste in einer Reihe über die volle Breite mit\ { } $ _ ^ &, je Taste mindestens 44 px; sie nimmt dem Feld den Fokus nicht, damit sich die Tastatur nicht bei jedem Zeichen schließt. Das Feld wird erst beim Schreiben in eine Formel nachgeladen (rund 300 KB, B69); bis dahin steht das bisherige Textfeld, und wer darin schon schrieb, bleibt im Feld. Die Zeichen der Leiste sind fest; ein Admin soll sie mit der Befehlsliste (LX05) pflegen. Beim Tippen eines\schlägt das Feld Befehle vor (LX06, latex.md): Liste am Cursor, gesetzte Vorschau, Häufiges zuerst,\begin{schließt die Umgebung gleich mit\end{…}. Der Trenner;öffnet die Snippets (LX08, latex.md, „Snippets beim Tippen“):;frwird zum Bruch, Tab springt durch die Stellen, eine Markierung landet in einem umschließenden Snippet,\;bleibt ein Abstand. Die Karteikarte schreibt weiter im Textfeld, damit Auszeichnung, Verweise und Begriffe bleiben (N445); beide Listen hat sie schon: Steht der Cursor zwischen zwei$, öffnet ein\dieselbe Befehlsliste und der Trenner die Mathe-Snippets, außerhalb die Snippets für Text; was eingesetzt wird, ersetzt im Satz nur das Getippte. Ein Klick in eine geschlossene Formel der Karte ($…$oder$$…$$) öffnet darunter das Schwebefenster „Formel bearbeiten“ (LX23) mit dem Feld des Formelblocks — Farben, Vorschläge, Snippets, Tasten, am Telefon die Zeichenleiste — und der gesetzten Formel darunter. Jede Änderung geht sofort in die Karte; die Eingabetaste oder Escape führt zurück, mit dem Cursor hinter der Formel, ein Klick daneben schließt nur. In$$…$$bricht Umschalt und Eingabe die Zeile um. Wer mit den Pfeiltasten in eine Formel geht, schreibt weiter im Textfeld; das Fenster lädt erst beim ersten Öffnen. Das Symbolfach (LX-261020-symbolfach-formelblock, Christian am 19.10.2026 im Musterbogen latex-befehlssuche) steht in beiden: Ein Knopf „Symbole“ unter dem Feld — mit Maus rechts, am Telefon als letzte Taste der Zeichenleiste — öffnet darunter ein Band mit Suche, Reitern und den gesetzten Zeichen, und nur mit dem, was KaTeX setzt. Ein Tipp setzt am Zeiger ein; das Feld behält den Fokus, und Tasten im Suchfeld erreichen das Dokument nicht. Escape im Suchfeld schließt nur das Fach. Anders als im Editor liegt es auch am Telefon unter dem Feld statt als Blatt von unten, damit es die Formel nie verdeckt; das Formelfenster der Karte wächst mit. - Hinweiskasten ist ein Absatz mit Art: Hinweis (Zeichen
hinweis, Info-Farbe), Warnung (warnung, Warnfarbe), Entscheidung (erledigt, Erfolgsfarbe — grün heißt „geklärt“) und Frage (frage, Info-Farbe; Zeichen und Wort trennen sie vom Hinweis). Rot kommt nicht vor, weil Rot in Denotato Fehler heißt. Der Text bleibt in der Textfarbe auf der weichen Zustandsfläche, mit Zustandsrand und dem Zeichen davor (die 3 px breite linke Kante ist am 10.10.2026 gegangen, ES-261009-farbige-seitenstreifen, E11; eine Karteikarte im Dokument trägt die Farbe des Bereichs Karten seitdem als Reiter an der Oberkante); ein Test prüft alle zwölf Fälle auf Grund und Papier (Text mindestens 4,5 : 1, Zeichen mindestens 3 : 1). Die Art wechselt man über das Zeichen links; das Menü misst seine Höhe für Maus und Finger, damit am Telefon alle vier Arten sichtbar sind. Der Kasten trägt Auszeichnung, Ausrichtung und Kinder wie ein Absatz. - LaTeX-Text (seit LX17, 12.10.2026) bindet einen Text aus dem Bereich LaTeX (latex-texte.md) in die Seite ein und zeigt die Seiten seines zuletzt gesetzten PDFs. Er kommt nur über das Schrägstrichmenü in die Seite (Gruppe Text, Suchwörter
latex,tex,pdf,projekt), ohne Tippkürzel. Wie er im Menü heißt, stellt ein Admin unter Blocknamen in/admin(LX-261012-namen-latex-blocks, Instanzvorgabedokumente.blocknamen); ein gestellter Name steht so da, wie er eingetragen wurde, sonst „LaTeX-Text“, übersetzt (blockname.ts). Der Block ist ein Kasten mit dem Türkis der Dokumente als Rand, oben 3 px; im Hellen liegt das PDF wie Papier darin, im Dunkeln ist es gedämpft (PDFBLATT_IM_DUNKELNin@/theme/satz). Am Telefon fallen die Ränder an den Seiten weg, und das Blatt füllt die Breite. Darüber stehen der Titel und, je nach Recht, diese Knöpfe:- „Im Editor öffnen“ führt in den Vollbild-Editor (
/latex/texte/<id>); dessen Knopf oben links heißt dann „Zurück zum Dokument“ und führt auf diese Seite zurück (latex-text-editor.md). - „Jetzt setzen“ steht nur für den, der den Text schreiben darf, und nur, wenn noch kein PDF da ist oder sich der Text seit dem letzten Satz geändert hat („Seit dem letzten Satz geändert.“). Läuft gerade ein anderer Satz, steht das als Fehler unter dem Kopf.
- „Aus dem Block lösen“ steht für den, der die Seite schreiben darf; der Block bleibt leer stehen, der Text bleibt im Bereich LaTeX.
Ein leerer Block bietet dem, der die Seite schreibt, zweierlei an: einen Titel und „Neuen Text anlegen“ — der neue Text wird eingebunden und gleich im Editor geöffnet — oder die Auswahl „Vorhandener Text“ mit „Einbinden“. Wer die Seite nur liest, liest „Noch kein Text eingebunden.“ Ein Text, der nicht mehr da ist, heißt im Block „Dieser LaTeX-Text wurde gelöscht.“, wenn er im Papierkorb liegt oder endgültig weg ist, und „Dieser LaTeX-Text ist hier nicht mehr freigegeben.“, wenn sein Besitzer ihn nicht mehr teilt. Beides sieht nur, wer die Seite lesen darf; ob ein fremder Text existiert, verrät der Block niemandem.
Lesen geht ohne den Bereich LaTeX. Wer die Seite lesen darf, sieht das PDF auch dann, wenn LaTeX für sein Konto aus ist; die Knöpfe, die einen Weg des Bereichs rufen (Editor, Setzen, Einbinden, Lösen), fehlen dann. Gesetzt wird nie beim Lesen: Das PDF ist der letzte gelungene Satz von jemandem, der den Text schreiben darf (gespeichert bis 16 MiB). Fehlt der Bereich LaTeX auf einer Instanz ganz, steht an seiner Stelle „LaTeX-Text — auf dieser Instanz gibt es den Bereich LaTeX nicht.“
- „Im Editor öffnen“ führt in den Vollbild-Editor (
- Zuklappbare Überschrift (N65): Der Winkel davor klappt ihren Abschnitt zu — ihre eingerückten Kinder, gleich welcher Art und Stufe, und was ihr auf derselben Ebene folgt, bis zur nächsten Überschrift derselben oder einer höheren Stufe, jeweils mit allen Kindern. Eine tiefer eingerückte Überschrift beendet den Abschnitt nie; sein Behälter schon: eine Überschrift in einem Aufklappblock oder einer Spalte verdeckt nichts dahinter. So gilt es seit dem 07.10.2026 (F-261007-klappkinder); vorher sah die Regel die Einrückung nicht — eine eingerückte Überschrift gleicher Stufe beendete den Abschnitt, und er lief über seinen Behälter hinaus. Zugeklappt ist je Leser; der Server merkt es sich. Wer einen Block unter eine zugeklappte Überschrift setzt — Eingabetaste an ihrem Ende, Plusknopf, Schrägstrichmenü, Klick unter den Text, Tab —, dem klappt auf, was ihn verdeckt: Block und Zeiger stehen sichtbar da. Vorher legte jede Eingabetaste am Ende einer zugeklappten Überschrift einen unsichtbaren leeren Absatz an.
Unter dem Adressfeld von Weblink, Bild und Datei steht ein Satz mit Warnzeichen, sobald die Adresse nicht gesichert würde: „Diese Adresse wird nicht gesichert — erlaubt sind http://, https:// und Pfade in Denotato." Der Verweis „öffnen" erscheint dann nicht, ein Bild wird nicht geladen, und eine Trennlinie mit fremdem Stil wird durchgezogen gezeichnet — auch bei Zeilen, die vor der Prüfung geschrieben wurden. Die Sicherung schickt einen solchen Inhalt nicht und stellt ihn nicht wieder an; der Kopf zeigt den Fehler (D26).
Der Knopf ist seit dem 21.09.2026 zurückgezogen. Er steht nicht mehr im Schrägstrichmenü — neu einfügen kann man ihn nicht. Ein Knopf, der in einer Seite steht, bleibt stehen, sagt an Ort und Stelle, dass er nichts auslöst, und lässt sich über den Griff in Text umwandeln; die Beschriftung geht dabei mit. Wie viele das sind, ist nachgezählt: am 21.09.2026 keiner — personal.blocks führt keine Zeile mit block_type = 'button'. Der Weg hinaus ist für den Fall gebaut, nicht für einen Bestand.
Das Textfeld sieht nicht aus wie ein Eingabefeld, und das ist der ganze Punkt. Kein Rahmen, kein eigener Grund, keine feste Höhe. Der Platzhalter steht nur im Absatz, in dem man gerade ist — stünden auf einer leeren Seite zehn Platzhalter gleichzeitig, wäre sie voller grauer Sätze, die niemand geschrieben hat.
Die Maße des Textfelds stehen seit dem 07.10.2026 in @/theme/satz (SCHRIFTGROESSEN, ZEILENHOEHEN, feldartFuer, dazu Ton und Zeichen der Hinweiskästen; KI-261007-antworten-dialekt): Überschriften 30/24/20/17 px, Text 16 px. Dieselben Werte liest Blocksatz, mit dem der Begleiter seine Antworten wie eine Seite setzt; documents/client/zeichen.ts reicht Ton und Zeichen weiter, damit das Plugin dieselben Namen behält.
Tastatur und Kürzel
| Eingabe | Was daraus wird |
|---|---|
# … ###### | Überschrift 1–6 |
#> , ##> , ###> (auch ># , >## ) | zuklappbare Überschrift |
- , * , + | Aufzählung |
[] , [ ] | Aufgabe |
> | Aufklappbar |
--- | Trennlinie — dieselbe, die „Trennlinie" im Schrägstrichmenü gibt (seit 21.09.2026, F14) |
$$ | Formel |
``` | Code — auf deutschen Tastaturen ist der Backtick eine Tottaste, das Schrägstrichmenü („Code“) ist dort der bequemere Weg |
>! | Hinweiskasten |
7. | Nummerierung, die ab hier bei 7 weiterzählt |
/ | das Blockmenü |
| Taste | Wirkung |
|---|---|
| Enter | neuer Block darunter |
| Backspace am Anfang | Block auflösen / mit dem darüber verschmelzen |
| Tab / ⇧ Tab | einrücken / ausrücken — eingerückt wird nur unter einen Vorgänger, der diesen Block nimmt (kindPasst, F27): kein Absatz unter eine Tabelle. In Frage, Hinweis und Antwort einer Karteikarte und in Tabellenzellen geht Tab zum nächsten Feld weiter, von der Antwort zu „Als Karte anlegen“ (F-261005-fokus-neue-seite) |
| Strg ⇧ ↑ / ↓ | Block verschieben |
| ↑ ↓ ← → | zwischen Blöcken wandern |
| Strg + F | die Suche in dieser Seite |
| Strg ⇧ H | Auswahl markieren (Textmarker) oder die Markierung entfernen |
| Escape | Menü schließen; die Suche, solange der Zeiger im Suchfeld liegt; im Text sonst: den eigenen Block wählen |
Blöcke wählen (S-261007-bloecke-waehlen, 07.10.2026)
Mehrere Blöcke lassen sich wie in Notion auf einmal wählen und dann gemeinsam kopieren, ausschneiden, löschen, einrücken, verschieben oder duplizieren. Der reine Kern (Bereich, Erweitern, Umschalten, Wurzeln, Teilbäume, Tastenbefehle) liegt in @shared/handlers/documents/blockauswahl, die Gesten im Hook useBlockauswahl des Gerüsts, die Anbindung an den Editor in editor/Editorauswahl.tsx.
- Wählen: Ein Klick auf den Griff wählt den Block und öffnet sein Menü; Umschalt-Klick erweitert bis zu diesem Block, Strg/⌘-Klick nimmt hinzu oder heraus (ein Elternblock nimmt seine Kinder mit hinaus). Escape im Text wählt den eigenen Block, Umschalt + ↑/↓ erweitert. Eine Textauswahl, die über eine Blockgrenze gezogen wird, wird zur Blockauswahl. Mit der Maus im leeren Rand aufgezogen, wählt ein Rechteck alle Blöcke, die es berührt. Strg+A wählt erst den Text des Blocks, beim zweiten Mal alle Blöcke.
- Aufheben: Escape oder ein Klick daneben. Die Auswahlleiste, Menüs und Fenster heben nicht auf.
- Tasten auf der Auswahl: Strg+C kopiert mit Gliederung (Klartext als Markdown,
text/htmlnur ausbloeckeAlsHtml), Strg+X schneidet aus (gelöscht wird erst nach erfolgreicher Kopie), Entf/Rücktaste löscht, Tab/Umschalt+Tab rückt ein und aus, Strg+Umschalt+↑/↓ verschiebt, Strg+D dupliziert. Kinder gehen immer mit. Verschieben gibt es nur, wenn die Auswahl ein zusammenhängender Lauf von Geschwistern ist; sonst wäre unklar, wohin die Lücken wandern. - Blockmenü: Liegt der Block in einer Auswahl, wirkt das Menü auf alle gewählten Blöcke und nennt die Zahl („Was mit diesen 3 Blöcken geschehen soll“). Umwandeln wird nur angeboten, wenn alle Blöcke Text tragen oder vom selben Typ sind; eine Auszeichnung schaltet der Menüblock an oder ab, die übrigen folgen ihm.
- Zurücknehmen: Jede Handlung auf der Auswahl ist ein Schritt für Strg+Z. Nach dem Löschen steht die Glasleiste mit der Zahl („3 Blöcke gelöscht · Zurücknehmen“) und holt alle auf einmal zurück.
- Telefon (
pointer: coarse): Langes Tippen auf einen Block beginnt die Auswahl, danach schaltet jedes Tippen einen Block um. Unten steht die Auswahlleiste mit Zahl, Kopieren, Ausschneiden, Löschen und Fertig. - Nur lesen: Ein eigener Griff „Block wählen“ erscheint; es bleibt beim Wählen und Kopieren.
- Aussehen: gewählte Blöcke liegen auf einer ruhigen Fläche in der Anwendungsfarbe (14 %, Style-Guide §9.2), die mit der Feder
listeerscheint; eine Ansage für Bildschirmleser nennt die Zahl.
Verschlüsselte Seiten gehen dieselben Wege wie das Löschen und Kopieren einzelner Blöcke; die Auswahl kennt nur Kennungen und liest den Inhalt aus dem entschlüsselten Stand des Editors.
Der Weg in eine Seite und zurück (seit 07.10.2026, BW-261007-schirmwechsel)
Eine Karte unter „Zuletzt geöffnet“ oder „Zuletzt geändert“ gibt ihren Titel mit: Er fliegt in den Titel des Seitenkopfs, die Liste und der Editor blenden darum ineinander (Guide §11.2). Ein Eintrag im Seitenbaum hat kein Gegenstück und lässt den Editor in Laufrichtung kommen — von rechts, eine Stufe tiefer; die Brotkrume „Dokumente“ führt von links zurück.
Am Telefon schließt das Fach mit dem Seitenbaum erst mit der neuen Seite (F-261007-layout-springt). Es liegt dort im Fluss über dem Inhalt; schloss es schon beim Tippen, rutschte die alte Übersicht um die Höhe des Fachs nach oben, bevor der Editor kam (0,35 Layout-Verschiebung, danach 0,03 bis 0,07). Das Offensein hängt an der Seite, bei der es geöffnet wurde (DocumentWorkspace.test.tsx).
Bewegung (seit 07.10.2026, BW-261007-editor)
Der Editor bewegt nur, was die Hand mit dem Zeiger auslöst; was die Tastatur tut, steht sofort da.
- Menüs wachsen aus ihrem Auslöser. Schrägstrichmenü, Blockmenü, Auszeichnungsleiste, Verweiswahl, Begriffs- und Verweiskarte und das Zeichenfenster des Hinweiskastens federn mit der Feder der Überlagerung (Style-Guide §11.2) aus der Stelle, an der sie hängen: waagerecht dort, wo man geklickt hat, senkrecht an der Kante, die dem Auslöser zugewandt ist. Ein Menü am unteren Rand klappt nach oben und steigt deshalb auf (auf dem Telefon der Regelfall). Beim Schließen geht es denselben Weg zurück und nimmt in der Zeit weder Klicks noch Escape an; für Vorleser und Tabulator ist es schon fort.
- Blöcke weichen aus, wenn der Zeiger umbaut. Einfügen über den Plus-Griff oder das Blockmenü, Duplizieren, Ein- und Ausrücken, Nach oben und Nach unten, Löschen über das Menü und Ablegen nach dem Ziehen: Der neue Block klappt aus der Höhe null auf, die Nachbarn gleiten an ihren neuen Platz.
- Tippen bleibt unbewegt. Enter, Rückschritt, die Kürzel und jede Taste, die Blöcke teilt, zusammenlegt oder verschiebt, bauen sofort um — kein Zeichen, keine Zeile und kein Cursor animiert, und nichts verschiebt Text, während man schreibt. Ein gelöschter Block geht ohne Ausblenden; die Nachbarn rücken nach.
Weitere Teile
- Gliederung — die Überschriften der Seite als Sprungliste
- Suche in der Seite (
Strg+F, seit 21.09.2026) — eine Leiste aus Glas oben rechts. Sie hängt seit dem 22.09.2026 unter dem Kopfband und nicht an einer festen Zahl: Ihr Abstand rechnet mit--denotato-leistenhoehe, die die obere Leiste selbst an die Wurzel des Dokuments schreibt. Sie sucht in allen Blöcken, auch in denen unter einer zugeklappten Überschrift, und seit dem 22.09.2026 auch im Seitentitel (er steht als erste Fundstelle, unter dem Namen „Titel"); die Zahl daneben („3/12") ist deshalb die Zahl der Seite und nicht die des Ausschnitts, den der Bildschirm zeigt. Darunter stehen die Fundstellen untereinander, jede mit dem Text darum und dem Namen ihrer Quelle darüber („Absatz", „Überschrift", „Titel"). Zwei Schalter stehen links vom Zähler: „Aa" beachtet Groß- und Kleinschreibung, „ab|" findet nur ganze Wörter; beide sind aus, solange niemand sie drückt, und melden ihren Stand mitaria-pressed. Eingabe und Umschalt + Eingabe (auch ↓ und ↑) blättern durch und rollen hin, ohne den Zeiger aus dem Suchfeld zu nehmen; ein Klick auf eine Fundstelle setzt den Schreibzeiger auf das Wort. Liegt die Fundstelle unter einer zugeklappten Überschrift oder in einem zugeklappten Aufklappblock, klappt der Sprung den Weg dorthin auf — beim Blättern und beim Klick, nicht beim Tippen, und ohne in die Seite zu schreiben. Das Kreuz schließt immer,Escapenur, solange der Zeiger im Suchfeld liegt (die Taste hängt am Eingabefeld, nicht am Schirm); ein Klick daneben schließt nicht — wer weiterliest, will die Liste behalten. Warum nicht die Suche des Browsers: die findet nur, was gezeichnet ist, und markiert es in einemcontentEditable, aus dem die Markierung beim nächsten Anschlag wieder verschwindet - Blockmenü (am Griff links) — Block darunter einfügen, Typ ändern, duplizieren, löschen, verschieben. Am Telefon ein Griff (RL15, N396, 28.09.2026): Unter
pointer: coarsesteht nur der Menügriff da, so groß wie die Zielfläche (44 × 44) in voller Deckkraft; der Plusgriff fällt dort weg, weil Enter ohnehin anlegt und „Block darunter einfügen“ als erster Punkt im Menü steht. Löschen fragt nicht (Q09, N165): Der Block geht sofort, und unten in der Mitte steht sechs Sekunden lang die Glasleiste „Block gelöscht · Zurücknehmen" (Loeschleiste.tsx). Der Knopf holt genau diesen Block zurück, auch wenn danach schon weitergeschrieben wurde, und wartet, falls der Server das Löschen noch nicht bestätigt hat. Liegen Zeiger oder Fokus auf der Leiste, steht die Uhr; ein neues Löschen gibt die sechs Sekunden neu. Strg+Z außerhalb eines Feldes nimmt den Block ebenfalls zurück, solange die Leiste steht. Wer mit der Rücktaste oder Entf einen leeren Block entfernt, bekommt keine Leiste — er hat gesehen, was er löscht. Scheitert das Löschen, meldet es der Toast, der Block kommt mit dem Neuladen wieder, und die Leiste geht - Schrägstrichmenü — Blocktyp suchen und einfügen. Siebzehn Einträge in fünf Gruppen; Code und Hinweiskasten stehen in „Text“ nach der Formel (Text · Listen · Struktur · Medien · Lernen). Was der
/tut, hängt daran, ob die Zeile leer ist: In einer leeren Zeile wandelt er den Block um — aus dem Absatz, in dem man steht, wird die Tabelle. Steht schon Text da, legt er einen neuen Block darunter an und lässt den alten in Ruhe. Beim Wandeln geht der Klartext mit, aber nur dorthin, wo der neue Typ ein Textfeld führt: in „body" bei Formel und Code, in „name" bei der Datei, in „text" sonst — eine Tabelle bekommt keinen Text angehängt, weil sie keinen anzeigen würde. Vor jedem Eintrag steht das Zeichen seiner Blockart aus der Registry (E13, N452, 30.09.2026), in der Farbe des Bereichs und bei 18 px im Zweiton; dasselbe Zeichen steht bei 15 px unter „Umwandeln in" im Blockmenü. Die Aufgabe trägt seit dem 18.10.2026 das leere Kästchenkaestchenstatt des abgehakten Kästchens der To-Dos (E-261015-aufgabe-zeichen): Mit voller Fläche und Haken las sie sich wie „erledigt“ statt wie eine Blockart. Am Block, auch gefiltert (seit 15.10.2026, E-261015-schraegstrichmenue): Klappt das Menü hoch, hängt es mit der Unterkante über der Zeile; schrumpft es beim Filtern, bleibt es dort, statt oben stehen zu bleiben. Am Telefon ist sein Glas deckend, damit das Band darüber nicht durchscheint; Zeilen und Suchfeld sind dort mindestens 44 px hoch. Folgt unter dem sichtbaren Teil noch etwas, blendet die Liste unten aus. Unterzeilen dürfen zwei Zeilen lang sein, die Kürzel rechts stehen in Lesetinte. - Schwebefenster — für Verweisadressen
- Bild auswählen / Datei auswählen — legt eine Datei in Denotatos eigener Ablage ab (
file_idim Blockinhalt). Eine fremde Adresse geht weiterhin; sie steht darunter, nicht darüber: ein Bild, das bei jemand anderem liegt, ist beim nächsten Öffnen vielleicht weg — und was dann fehlt, ist nicht ein Verweis, sondern der Inhalt der Seite - Symbolwähler — drei Reiter (Segmente) für die drei Formen, er geht im Reiter der jetzigen Form auf. Emoji: vier Gruppen und ein Feld für ein eigenes; Text dort wird kein Symbol, sondern bleibt mit „Das ist kein Emoji.“ stehen. Zeichen: oben die Farbe (Bereichsfarbe oder eine der 13), darunter die Zeichen in genau dieser Farbe und ein Suchfeld nach Name und Bedeutung. Bild: hochladen (Typ und Größe vorab im Client geprüft) oder eines der eigenen Bilder wählen, die neuesten 24. Die Blase ist höchstens 300 px breit und am Telefon so breit wie der Schirm abzüglich Rand. Hat eine Seite kein eigenes Symbol, zeigt der Kopf seit dem 10.10.2026 das gezeichnete Zeichen
blattstatt des Emojis „📄“ (ES-261009-gezeichnete-zeichen): Ein Emoji steht nur, wo der Mensch es gewählt hat. - Karteikarten-Brücke — ein Block wird zur Karte (
BLOCK_FLASHCARD_SYNC)
Scheitert das Ablegen eines Bildes oder einer Datei, bleibt der Knopf bedienbar (F28b, 23.09.2026): Die Ablage hinter „Bild auswählen"/„Datei auswählen" läuft jetzt über useBusyLock, das den Laufmerker in einem try/finally freigibt, statt ihn nach einem geworfenen Fehler gesperrt zu lassen.
Die Zeichen (N134, 23.09.2026)
Christian am 23.09.2026: „Das mit den Icons funktioniert übrigens super und ich will, dass das überall in Denotato so umgesetzt wird." Im Bereich Dokumente heißt das: was die Registry mit derselben Bedeutung führt, kommt aus der Registry; was sie nicht führt, bleibt gezeichnet wie bisher. Welche Stelle welches Zeichen trägt, steht als Daten in client/zeichen.ts und wird in client/zeichen.test.ts gegen die Registry geprüft. Seit E12 (30.09.2026) hat jede Stelle ihr Registry-Zeichen; die Stellen ohne Zeichen mit ihren Wunschnamen, die es bis dahin gab, sind alle gezeichnet.
- Blockmenü: Die sieben Handlungen (seit RL15 zuerst Einfügen, mit
anlegen; dann Duplizieren, Nach oben, Nach unten, Einrücken, Ausrücken, Löschen) tragen seit E12 (30.09.2026) alle ein Registry-Zeichen, 15 px groß:anlegen,kopieren,hoch,runter,einruecken,ausruecken,loeschen. Bis dahin behielten alle ihre gezeichneten Linien, weil die Registry nurhoch,runterundloeschenführte und drei Registry-Zeichen neben drei dünneren Linien zwei Zeichensprachen in einer Liste gewesen wären (Guide §7.3). Das Rot sitzt am Mülleimer, nicht am Wort — vorher stand „Löschen" rot und sein Zeichen grau. Die Ausrichtung trägt seit E12 die Zeilenbilderlinksbuendig,zentriertundrechtsbuendigstatt der Schriftpfeile ⇤ ↔ ⇥; ihre Namen und die der vier Auszeichnungsknöpfe gehen jetzt alle durch die Übersetzung. - Am Block: Der Winkel vor einer zuklappbaren Überschrift und vor dem Aufklappblock ist
ausklappen— derselbe wie in der Seitenleiste, zu nach rechts gedreht, und so groß wie der alte Winkel (10 px). Der Seitenverweis trägtoeffnenstatt↗. Die beiden Griffe links an jeder Zeile sindanlegenundgriff. Der Weblink trägt seit E12weblink(das Kettenglied mit dem Pfeil hinaus), der Dateiblockdatei(das Blatt mit Eselsohr) — bis dahin standen beide handgezeichnet da. - Fehlerzeilen: Scheitert das Ablegen eines Bildes oder einer Datei, liegt die Datei nicht mehr in der Ablage, lädt eine Seite nicht oder lässt sie sich nicht öffnen, steht davor
warnungin Rot und der Satz in der Farbe seiner Umgebung (client/Fehlerzeile.tsx). Vorher war der Satz unter Bild und Datei rot und sonst nichts; die anderen standen grau da wie ein Hinweis. - Suchleiste: voriger und nächster Treffer sind
zurueckundweiter, eine Vierteldrehung gedreht, damit sie wie vorher nach oben und unten zeigen; das Kreuz istschliessen. - Seitenleiste: Das
+an der Zeile und in „Neue Seite" istanlegen— es stand als Schrift zwischen zwei gezeichneten Nachbarn. Im Papierkorb heißt „Wiederherstellen" jetztumkehr(ein Zustand zurück, nicht eine Seite) und „Endgültig löschen"loeschenstatt des Kreuzes. Der Favorit trägt denstern— seit E12 entschieden, weil der Stern seit N379 auch in der Adresszeile anheftet (Punkt 29). Die Abschnittsköpfe tragen alle ein Zeichen: „Favoriten" denstern(wie am Griff), „Seiten" bzw. „Alle Seiten" dasblatt(das Zeichen des Bereichs), „Papierkorb" wie bisher den Mülleimer. Vorher trug nur der Papierkorb eines (Guide §7.3). Seit dem 27.09.2026 (NB10) kommt ein vierter dazu, „Mit mir geteilt" mit dem Zeichengeteilt— derselbe Name wie das Fremd-Zeichen an einer geteilten Seite. - Leerer Editor: das
+in „Hier anfangen zu schreiben" istanlegen.
Was bewusst bleibt: der Haken in der Aufgaben-Checkbox (er ist der Zustand des Kästchens, Guide §7.2), die Aufzählungszeichen • ▪ ◆ – (sie sind Inhalt), die Seitensymbole im Symbolwähler (die wählt der Mensch), die Buchstaben F K U D und „Aa", „ab|" (Schrift für Schrift) und das › zwischen den Stufen eines Weges (ein Trennzeichen, kein weiter).
Hängt zusammen mit … (Q02, 21.09.2026)
Unter dem Editor steht eine Zeile mit Chips: woran diese Seite hängt. Ein Chip trägt das Zeichen und die Farbe des Bereichs, zu dem das andere Ende gehört, davor das Wort („To-Do", „Modul"), dahinter den Titel. Ein Klick springt dorthin; das × daneben löst die Verbindung — beide Sachen bleiben, weg ist nur die Aussage, dass sie zusammengehören.
Der Knopf „Verknüpfen" öffnet ein Suchfeld. Es sucht in allen mitmachenden Bereichen auf einmal (Dokumente, To-Dos, Module); vor der ersten Eingabe stehen die zuletzt angefassten Einträge da. Ein Klick auf einen Treffer legt die Verbindung an — es gibt keine Kennung einzutippen und keinen Bereich vorher auszuwählen.
Die Verbindung gilt in beide Richtungen und wird einmal gespeichert. Wer sie hier anlegt, findet sie am anderen Ende wieder, ohne dort etwas getan zu haben.
Ein abgeschalteter Bereich hinterlässt kein Loch: Fehlt study, steht am Dokument kein „Modul: (Fehler)", sondern gar nichts — die Kanten bleiben liegen und kommen zurück, sobald der Bereich wieder an ist.
Aufgegangen in diesem Eintrag (E28, N489, 15.10.2026)
Darunter steht, welche Seiten in diese aufgegangen sind und noch nicht wieder getrennt wurden: Titel mit Symbol, Datum der Verschmelzung und „Wieder trennen“, das die Seite mit ihren Absätzen, Unterseiten und Verknüpfungen zurückholt. Ohne Verschmelzung steht nichts da. Der Titel kommt aus dem Abbild der Verschmelzung (titelAusAbbild in documents/server/verschmelzung.ts), denn die aufgegangene Seite liegt im Papierkorb; Weg VERSCHMELZUNGEN mit art und id.
Was man tun kann
| Element | Wo | Was passiert |
|---|---|---|
| Karte anklicken | Übersicht | öffnet die Seite im Editor; ein Dokument anderen Typs, etwa ein LaTeX-Text, öffnet seinen eigenen Editor. Dasselbe gilt im Seitenbaum, im Briefkasten und für eine Adresse /documents/editor/:id, die zu einem solchen Kopf führt (NB-261019-dokumenttyp) |
| „Dokumente" in der Brotkrume | über der Seite | zurück zur Übersicht |
| Zwischenstufe der Brotkrume | über der Seite | öffnet diese Elternseite im Editor |
| Neue Seite | Übersicht (neben der Überschrift), Seitenbaum im Editor, ?neu, Strg+K | einmal je Schirm: Seit dem 15.10.2026 (KN-261015-neue-seite-einmal, Befund B13) fehlt der allgemeine Knopf im Seitenbaum auf der Übersicht, weil dort die Überschrift ihn trägt, auch am Telefon; im Editor steht er nur im Baum, das Plus am Eintrag für eine Unterseite bleibt überall. Legt an und öffnet; der Titel bleibt leer und heißt überall „Ohne Titel“, bis man einen vergibt (seit 28.09.2026, RL14 — vorher gespeichert „New Document“) |
| Seiten durchsuchen… | Seitenleiste | filtert den Baum |
| Unterseite anlegen | Seitenleiste | am angeklickten Elternteil |
| Ziehen | Seitenleiste | verschiebt eine Seite im Baum |
| Favorit | Seitenleiste | hängt die Seite oben an |
| In den Papierkorb | Seitenleiste | erste Löschstufe; zwei Klicks, „ja, weg" (seit 23.09.2026, Q09) |
| Wiederherstellen / Endgültig löschen | Papierkorb | zurück oder weg; „Endgültig löschen" mit zwei Klicks, „ja, endgültig" (seit 23.09.2026, Q09), nur der Besitzer, samt Freigaben (F75) |
| Löschen | Blockmenü | ohne Frage; sechs Sekunden „Block gelöscht · Zurücknehmen" (seit 23.09.2026, Q09) |
| Symbol ändern | Seitenkopf | Emoji, Zeichen in einer Farbe oder eigenes Bild; der Fokus bleibt in der Blase, Escape schließt sie von jeder Stelle (Q08) |
| Titel schreiben | Seitenkopf | wächst mit; Enter springt in den Text |
/ | im Text | öffnet das Blockmenü |
| Eintrag im Schrägstrichmenü | im Text | in einer leeren Zeile wird der Block umgewandelt, sonst ein neuer darunter angelegt; der Zeiger steht danach im neuen Block, bei einer Karteikarte in ihrer Frage |
| Typ ändern | Blockmenü | wandelt den Block um; der Klartext geht mit, die Auszeichnung nicht |
| Griff links | am Block | ziehen zum Verschieben, klicken wählt den Block und öffnet das Menü — die Ablagelinie steht nur dort, wo der Server den Block annimmt (F27) |
| Umschalt-/Strg-Klick auf den Griff | am Block | erweitert die Blockauswahl bzw. nimmt einen Block hinzu oder heraus; siehe „Blöcke wählen“ |
| Aufziehen im Rand | neben den Blöcken | wählt alle berührten Blöcke |
| Auswahlleiste | unten, am Telefon | Kopieren, Ausschneiden, Löschen, Fertig für die gewählten Blöcke |
| Block darunter einfügen | am Block | neuer Block |
| Einfügen mit Gliederung (Strg+V) | in Absatz, Überschrift, Listenpunkt, Aufgabe, Aufklappblock | mehrzeiliges Markdown (auch die kopierte Begleiter-Antwort) oder HTML aus der Zwischenablage wird zu Blöcken hinter dem aktuellen Block — Überschriften, Listen, Tabellen, Code, Formeln; ein leerer Absatz wird ersetzt. Der Klartext gilt zuerst, wenn er Gliederung trägt; HTML liest nur der Wandler (htmlToMarkdown), nie das DOM. Eine Zeile, Code- und Formelfelder und jede Tabellenzelle nehmen den Text wie bisher. Strg+Z nimmt das ganze Einfügen in einem Schritt zurück (seit 07.10.2026, KI-261007-antworten-als-bloecke) |
| Gliederung | rechts | springt zu einer Überschrift |
| Strg+F | im Editor | öffnet die Suche in dieser Seite; noch einmal gedrückt holt es den Zeiger zurück ins Suchfeld |
| Eingabe / Umschalt+Eingabe | in der Suche | nächste / vorige Fundstelle, im Kreis |
| Fundstelle anklicken | in der Suche | setzt den Schreibzeiger auf das Wort |
| Als Karteikarte | am Block | erzeugt eine Karte aus dem Block |
| Als Karte anlegen / Karte nachführen | unten rechts im Rahmen der Karteikarte | übernimmt Frage und Antwort als Lernkarte oder schreibt sie nach; nur für den, der die Karten der Seite pflegen darf (W21). Der Knopf steht seit dem 05.10.2026 unter den Teilen statt im Kopf, damit Tab ihn nach der Antwort erreicht (F-261005-fokus-neue-seite). Der Knopf sperrt sich während der Übernahme und nimmt den Zeiger mit; danach steht er wieder in der Frage der Karte, sofern er nicht inzwischen woanders steht (NV-261007-kernaufgaben) |
| als Markdown | Fußzeile des Seitenkopfs | lädt die Seite als .md herunter — Überschriften, Listen, Aufgaben, Formeln, Aufklappblöcke in ihrer Reihenfolge; Code als umzäunter Block mit Sprache, der Hinweiskasten als Zitat mit Kennzeichen (> **Warnung:** …); seit WI02 auch Tabellen (erste Zeile als Kopf), eingerückte Kinder eines Listenpunkts und harte Zeilenumbrüche; seit dem 07.10.2026 jeder Block ohne Markdown-Form (Karteikarte, Spalten, Knopf, Formel im Text …) als Blockzaun ```denotato <typ> mit dem Inhalt als JSON, den ausMarkdown (@shared/handlers/documents/einleser) verlustfrei wieder einliest — dieselbe Sprache, in der der Begleiter antwortet |
| Teilen / mit 2 geteilt | Fußzeile des Seitenkopfs | öffnet den Teilen-Dialog; nur für Eigentümer und Mitverwalter (W21) |
| Foto anhängen | Fußzeile des Seitenkopfs, nur an der Seite einer Mitschrift | Dateiwahl für Bilder ohne capture (Kamera oder Fotos); das Foto kommt in die eigene Ablage und als Bildblock ans Ende der Seite. Ob die Seite eine Mitschrift ist, sagt der Klientanschluss material (KN-261014-foto-handschrift-seite) |
| Nutzer suchen | Teilen-Dialog | ab zwei Zeichen; ein Klick auf den Treffer teilt mit der Rolle daneben |
| Rolle | Teilen-Dialog | Betrachter · Bearbeiter · Mitverwalter; umstellen ändert die Freigabe, ohne sie zurückzunehmen |
| Zugriff entziehen | Teilen-Dialog | nimmt die Freigabe dieser Person zurück; derselbe Knopf im Freigabefenster am Studium (I07, N308) |
| Tasten | im Text | siehe die Tabelle unter „Tastatur und Kürzel" |
| Verknüpfen | unter dem Editor | Suchfeld über alle Bereiche; ein Klick verbindet |
| × am Chip | unter dem Editor | löst die Verknüpfung; beide Sachen bleiben |
| Chip anklicken | unter dem Editor | springt zum anderen Ende |
Woher die Daten kommen
34 Endpunkte (15 in routen.ts, 19 in bloeckeRouten.ts), darunter GET_DOCUMENTS · CREATE_DOCUMENT · CHANGE_DOCUMENT · DOCUMENT_MOVE · DOCUMENT_TRASH · DOCUMENT_RESTORE · DOCUMENT_FAVORITE · ADD_BLOCK · EDIT_BLOCK · CHANGE_BLOCK_TYPE · DELETE_BLOCK · BLOCK_COLLAPSE_SET · BLOCK_FLASHCARD_SYNC · SEITENSYMBOLE (die Formen, Zeichennamen und Farben für MCP; seit 08.10.2026). Die eigenen Bilder des Symbolwählers kommen aus FILES_LIST der Ablage, gefiltert auf Typ und Größe (ladeSymbolbilder). Der Dublettenhinweis der Übersicht ruft Wege des Gerüsts links: VERSCHMELZUNG_DUBLETTEN, VERSCHMELZEN, VERSCHMELZUNG_ZURUECKNEHMEN (E08) und VERSCHMELZUNG_VERSCHIEDEN (E29); die Seiten dafür liefert documents/server/verschmelzung.ts (kandidaten). Endgültig gelöscht wird nicht hier, sondern über den Papierkorb (PAPIERKORB_ENDGUELTIG, F75, 23.09.2026). Den eigenen Weg /api/documents/delete gibt es nicht mehr.
Der LaTeX-Block (LX17, 12.10.2026) liest über BLOCK_LATEX_LESEN (/api/blocks/latex/lesen) — einen Weg der Dokumente, ohne das Tor des Bereichs LaTeX. Recht gibt allein die Seite: Die Zeilensicherheit lässt den Zustand nur zu, wenn das Konto die Seite lesen darf, und den Text nur über die Einbindung in genau diesen Block. Den Inhalt liefert der Bereich über den Anschluss latex.leseBlock (latex/server/einbindung.ts): den Zustand (leer, lesbar, geloescht, entzogen), Titel, das gespeicherte PDF aus personal.latex_satzstaende (Migration 299), ob es veraltet ist, und seiteSchreibbar, ob das Konto hier einbinden und lösen darf. Eingebunden, gelöst und gesetzt wird über die Wege des Bereichs (LATEX_TEXTE_EINBINDEN, LATEX_TEXTE_LOESEN, LATEX_TEXTE_SETZEN). Im Markdown steht der Block als Blockzaun mit seiner Kennung; die HTML-Ausgabe lässt ihn aus (beides seit LX09). Eine Mindmap als Block (NB-261019-dokumenttypen-als, 20.10.2026) ist dagegen ein embedded_document mit { document_id, document_type } (Migration 374): Der Block zeigt die ganze Ansicht nur lesend, „Bearbeiten“ öffnet den Editor des Typs, gelesen wird über mindmap/get mit dem eigenen Recht — ohne Leserecht steht nur ein ruhiger Hinweis —, und ein weiterer Typ kommt mit einer Zeile in client/einbindung/register.ts dazu.
Aufgaben aus Seiten (KI-261007-planen-vorschlaege, 07.10.2026). Jedes gelungene Schreiben über diese Wege geht durch mitRaumfassung; dort merkt documents/server/seitenaufgaben.ts die betroffene Seite vor. Ruht sie drei Minuten, geht sie als Text (Titel und Blöcke als Markdown) über den Anschluss aufgabentexte an die To-dos, die mit dem Modell nach Aufgaben mit Frist suchen und eine Karte vorschlagen (docs/seiten/tasks.md). Gemeldet wird nur eine eigene Seite außerhalb eines Raums, nicht weggeworfen, mit mindestens einem Block — eine Wiki-Seite gehört allen, eine fremde Seite, auf der jemand über eine Freigabe schreibt, hat ihre Aufgaben nicht bei ihm. Ein Neustart vergisst die Vormerkung; das nächste Speichern merkt neu. Der Editor zeigt davon nichts; die Karte erscheint an der Eule und im Begleiter. Nachweis: verify:seitenaufgaben.
Seit dem 23.09.2026 (D33) fragt jeder dieser Wege zuerst den Bereich: Ist er nicht gewährt, antwortet er mit 404; ist er in den Einstellungen ausgeschaltet, mit 403 und der Meldung „Bereich ist ausgeschaltet". Der Editor zeigt dann diese Meldung und darunter die Zeile „Diese Seite lässt sich nicht öffnen …", Übersicht und Seitenleiste „Noch keine Seite." — eine eigene Anzeige für den abgeschalteten Bereich fehlt noch.
BLOCK_FLASHCARD_SYNC fragt danach ein zweites Tor (N140, 23.09.2026): den Bereich Karteikarten, weil der Weg eine Lernkarte anlegt. Wer Dokumente hat, aber keine Karteikarten, bekommt bei der Karteikarten-Brücke dieselbe Regel — 404 nicht gewährt, 403 ausgeschaltet —, und es entsteht keine Karte. BLOCK_FLASHCARD_LIST fragt seit N143 dasselbe zweite Tor, weil er Lernstand und Fälligkeit aus den Karteikarten liest. Der Editor schweigt dazu: Fehlt die Auskunft, steht an jedem Karteikarten-Block „noch keine Karte" — auch an einem, der eine ist. Eine eigene Anzeige „Karteikarten sind ausgeschaltet" fehlt.
Aus einem Block eine Karte machen dürfen der Eigentümer der Seite und ihre Mitverwalter (F76, N195; seit dem 24.09.2026 W21, N214). Die Karte gehört dem Eigentümer (N159), auch wenn ein Mitverwalter sie anlegt oder nachführt; wer gehandelt hat, steht in created_by_id und updated_by_id. Betrachter und Bearbeiter bekommen 403 (flashcard_block_owner_only_error), und der Editor zeigt ihnen den Knopf gar nicht: BLOCK_FLASHCARD_LIST sagt mit darfPflegen, ob er wirkt. Seiten eines Raums haben keinen Eigentümer und bekommen weiter keine Karte. Möglich macht es Wanderung 113 — zwei Richtlinien auf personal.block_flashcards, ohne SECURITY DEFINER: Lesen darf die Verknüpfung auch, wem die Seite oder die Karte freigegeben ist, schreiben, wer die Seite verwaltet, und nur auf den Namen des Eigentümers.
Geteilt wird über drei Wege (W21): SHARE_DOCUMENT legt eine Freigabe an oder überschreibt ihre Stufe, REVOKE_DOCUMENT_SHARE nimmt sie zurück, LIST_DOCUMENT_SHARES zeigt sie mit Benutzer- und Anzeigename — alle drei nur für Eigentümer und Mitverwalter; wer die Liste nicht bekommt, bekommt 403. Die Personensuche SHARE_USERS liegt im Gerüst (sharingController.ts) und steht seit W21 jedem offen, der Studium oder Dokumente hat; vorher hing sie am Studium, und wer nur Dokumente hatte, fand niemanden. Sie gibt nicht mehr preis als vorher: höchstens zehn Treffer, Benutzer- und Anzeigename. Die MCP-Werkzeuge dazu: dokument_freigaben, dokument_teilen, dokument_freigabe_zuruecknehmen und nutzer_suchen.
Blöcke löschen und verschieben geht auch über MCP (WI-261008-block-loeschen, 08.10.2026): block_loeschen ruft DELETE_BLOCK, bloecke_wiederherstellen RESTORE_BLOCKS und block_verschieben MOVE_BLOCK — dieselben Wege wie Löschleiste, „Zurücknehmen" und Ziehen im Editor, mit demselben Tor und denselben Rechten. Ein Block geht samt allem darunter und wird nur weggelegt; die Antwort deletedBlockIds ist die Liste, mit der er zurückkommt. Anders als der Weg verlangt block_verschieben newParentId und insertBeforeId ausdrücklich, auch als null: Fehlt newParentId, setzt MOVE_BLOCK den Block auf die oberste Ebene, und ein Modell, das nur umordnen wollte, risse ihn aus seinem Aufklappblock.
Die Karten einer Seite im Papierkorb ruhen (F77), und seit dem 24.09.2026 auch die eines im Editor gelöschten Blocks (F82): Sie fehlen in Warteschlange, Kartenstand, Übersicht und Briefing, in der Kartenzahl je Kategorie, in den Kartenzahlen der Prüfungen und in der Suche. Sie kommen samt Lernstand zurück — mit der Seite aus dem Papierkorb oder mit dem Block, wenn „Zurücknehmen" in der Löschleiste ihn wiederholt. Gefragt wird an einer Stelle (documents/server/kartenruhe.ts, über ANSCHLUESSE.dokumente); die Kartenverwaltung zeigt ruhende Karten bewusst weiter, dort verwaltet man sie. Wird die Seite endgültig gelöscht, werden ihre Karten ausgesetzt, nicht gelöscht (N195, Wanderung 104).
Dasselbe gilt für die Wege der Verknüpfungen, die über den Anschluss in die Seiten greifen: Die Verknüpfungssuche bietet bei abgeschaltetem Bereich keine Seite an, und Verschmelzen wie Zurücknehmen zweier Seiten antworten mit 404 („unbekannter Ressourcentyp") — auch dann, wenn der Bereich nur ausgeschaltet ist, weil der Anschluss keine dritte Antwort kennt. Die Titel bestehender Verknüpfungen erscheinen weiter; fehlte der Titel, räumten die Verknüpfungen die Kante weg.
CHANGE_BLOCK_TYPE hat seit dem 22.09.2026 zwei Ausgänge statt einem: Wer ihn ohne content ruft und der Block trägt Text, den der neue Typ nicht führen kann, bekommt eine Absage (409, „Der Typwechsel würde den geschriebenen Text verwerfen") und der Block bleibt stehen. Mit content geht derselbe Wechsel durch — dann hat der Aufrufer gesagt, was werden soll. Der Editor schickt immer Inhalt mit und sieht die Absage deshalb nie; sie gilt dem Aufruf von Hand, dem Einlesen und einem künftigen MCP-Werkzeug. Und: Ein Wechsel nach Tabelle oder Karteikarte baut jetzt dasselbe Gerüst, das ADD_BLOCK baut — zwei Zeilen zu zwei Spalten, beziehungsweise Frage und Antwort.
Seit der zweiten Messung am 22.09.2026 gibt es einen dritten Ausgang, und er gilt auch mit content: Ein Wechsel, unter dem ein Gerüst stünde, das der neue Typ nicht tragen kann, wird abgelehnt (400, „Block-Verschiebung ist nicht erlaubt") — es sei denn, in dem Gerüst steht nichts. Dann wird es weggeräumt, in den Papierkorb, und der Wechsel geht durch. Die Regel dahinter heißt kindPasst und steht seit dem 23.09.2026 (F27) einmal in @shared/handlers/documents/blockbaum, zusammen mit ihrer Tabelle ERLAUBTE_KINDER: Die fünf geführten Typen — Tabellenzeile, Tabellenspalte, Frage, Hinweis, Antwort — dürfen nur unter einen Block, der sie beim Namen nennt, und nicht auf die oberste Ebene der Seite. Das ist dieselbe Liste, die die Oberfläche in istFrei liest. Dieselbe Funktion fragen der Typwechsel, der Umzug (MOVE_BLOCK), die Tabulatortaste (einrueckenZiel) und die Ablagelinie beim Ziehen (darfDorthin).
Seit dem 23.09.2026 (D26) prüft EDIT_BLOCK — und CHANGE_BLOCK_TYPE mit content — auch die Werte, nicht nur die Schlüssel. Eine Trennlinie nimmt nur solid, dotted oder dashed, Aufzählungen nur Werte aus ihren Enums, Zahlen haben Grenzen, Texte eine Höchstlänge. link und source_link nehmen nur http:, https: oder einen relativen Pfad; der Platzhalter https:// geht durch, mailto:, data: und javascript: nicht. Ein falscher Wert kommt als 400 mit „Ein Wert im Block ist nicht erlaubt …" (content_value_invalid) zurück, der Schlüssel steht in details; ein Schlüssel zu viel geht weiter durch. Die Regeln stehen einmal in shared/blockinhalte.ts (inhaltsfehler), die Adressprüfung in @shared/utils/adresse.ts. STYLE_BLOCK nimmt Farben nur als #rgb oder #rrggbb an, schon am Umschlag.
Dazu die vier Wege der Verknüpfungen: LINKS · LINKS_SUCHE · LINKS_ANLEGEN · LINKS_LOESEN. Sie gehören keinem Bereich — sie liegen im Gerüst (packages/plugins/src/links/), weil eine Kante keinem ihrer beiden Enden gehört.
Für die Eule (KI21) nennt der Bereich über seinen Klientanschluss die offene Seite aus der Adresse /documents/editor/<id> (client/knoten.ts, gegenstandsleser). Der Leser documents/server/angebote.ts gibt „Die Seite zusammenfassen“ und „Karten aus dieser Seite“ nur eine eigene, nicht gelöschte Seite als Markdown mit, höchstens 12 000 Zeichen; jede andere Kennung wird abgewiesen. Die Karten kommen seit KI42 (04.10.2026) als Einträge mit „Übernehmen“. Seit KI62 (N515, 05.10.2026) öffnet der Knopf den Entwurf mit Modulwahl wie „Als Karteikarte“ im Begleiter, die Frage zugleich als Titel; erst „Karte anlegen“ schreibt über den Anschluss des Kartenbereichs (study/client/kartenanschluss.ts).
Ablagevorschläge (KI-261007-ablage-vorschlaege)
Speichert jemand eine Seite — anlegen, umbenennen oder einen Block schreiben —, meldet documents/server/speichermeldung.ts sie dem Begleiter; das Speichern wartet nicht. Der Begleiter fragt dann die Erzeuger in documents/server/ablagekarten.ts, gedrosselt auf einmal je Minute für dieselbe Seite und denselben Titel:
- Doppelte Seiten (Herkunft
dublette): Gibt es den Titel zweimal, kommt „Doppelte Seiten zusammenführen?“. „Zusammenführen“ läuft überverschmelzenwie der Dublettenhinweis — die ältere Seite bleibt —, „Zurücknehmen“ trennt überverschmelzung_zuruecknehmenwieder. - Seite an ein Modul (Herkunft
zuordnung): Hängt die Seite an genau einem Modul über eine ihrer Verknüpfungen (ein Moodle-Kurs mit Zuordnung, eine Quelle mit Modul), gilt dieses Modul ohne Modell. Sonst fragt der Begleiter das Modell mit höchstens 4 000 Zeichen der Seite und der Modulliste, ab 80 Zeichen Text und nur einmal je Seite; die Karte kommt nur ab der Sicherheit, die der Admin-Wertbegleiter.zuordnung.schwellesetzt (Vorgabe 80 %). „Zuordnen“ legt eine Verknüpfung an, die Seite bleibt im Baum, wo sie war; „Zurücknehmen“ löst die Verknüpfung. - Mitschrift: Die Karte bringt der Stundenplan (docs/seiten/stundenplan.md); angelegt wird über
dokument_aus_markdownim Ordner des Moduls — einer Seite mit seinem Namen oder dem Ort der letzten Mitschrift derselben Veranstaltung. Oben stehen Termin, Modul und Skript, Modul und Skript hängen als Verknüpfungen an. Zurücknehmen legt die Seite in den Papierkorb, solange niemand hineingeschrieben hat.
Alle drei bieten „Immer so“ an; jeder Schritt hat seinen Gegenzug. Eine Seite aus ausMarkdown meldet sich nicht: Sie entsteht mitten in einer Karte, deren Verknüpfungen erst danach folgen.
Als Baustein im Wiki (WI-261008-bausteine-artikel)
Stumm und mit festen Beispieldaten; Form und Wortlaut stehen in wiki.md unter „Bausteine im Artikel“. Zwei Bausteine: der Knopf „Neue Seite“ (documents.new-page, im Satz) und eine Seitenkarte der Übersicht (documents.page-card, Block). Beide stehen dafür seit dem 08.10.2026 in dokumente/Seitenkarte.tsx; die Übersicht zeigt dieselben Bauteile wie vorher.
Was fehlt
Keine Wort-Formatierung— gebaut am 20.09.2026 (C13, N85). Ein Wort markieren, dann Strg+B — oder einen der fünf Knöpfe in der Leiste, die über der Auswahl erscheint (Fett, Kursiv, Unterstrichen, Durchgestrichen und seit dem 24.09.2026 Code</>mit Strg+E, jeweils mit ihrem Kürzel daneben; WI03). Inline-Code steht in der Zahlenschrift auf Papier mit feinem Rand und im Markdown als`Code`. Seit dem 07.10.2026 (KI-261007-markierung-begleiter) gibt es als sechsten Knopf Markieren mit Strg+Umschalt+H: die Auswahl liegt dann auf der Anwendungsfarbe zu einem knappen Viertel, die Schrift bleibt im Tontext, hell wie dunkel; im Markdown==so==. Das Blockmenü bietet die Markierung nicht an — es wirkt auf ganze Blöcke, und ein ganzer markierter Block hebt nichts mehr hervor. Der Inhalt eines Blocks trägt dafürsegments: [{ text, marks }];textsteht daneben und ist der Klartext, den der Server aus den Abschnitten setzt. Das Textfeld ist deshalb kein<textarea>mehr, sondern eincontentEditable— ein Textfeld kann seinen Inhalt nicht teilweise fett zeigen. Was fehlt: (a) Ein Blocktypwechsel („aus Absatz mach Überschrift") nimmt den Text mit, aber nicht die Auszeichnung —uebernimmInhaltbaut frischen Inhalt. (b)Verweiseinnerhalbeines Absatzes— seit dem 24.09.2026 (WI03, N282): ein Abschnitt trägt dafürverweis: { art, ziel }und wird zum Chip. Gezeigt, gesetzt („@") und angeklickt wird er aber nur, wo der Editor eine Verweisquelle bekommt — heute im Wiki (docs/seiten/wiki.md). Hier in/documentsbleibt ein Chip schlichter Text; er geht beim Schreiben nicht verloren, solange man ihn nicht anfasst. (c) Farbe und Hintergrund je Wort gibt es nicht — der Block als Ganzes hat beides.Kein Export— Markdown gibt es seit dem 17.09.2026. „als Markdown" in der Fußzeile des Seitenkopfs,DOCUMENT_MARKDOWNals Endpunkt,dokument_markdownals MCP-Werkzeug. Die Umwandlung steht in@sharedmit vierzehn Zusicherungen; acht weitere prüfen den Endpunkt, darunter die, dass eine fremde Seite nicht herauskommt. Was fehlt: PDF, ein Export des ganzen Baums auf einmal, und die Dateien — Bilder stehen als Adresse darin, nicht als Inhalt. Das sagt der erzeugte Text auch selbst.- Keine Versionen. Was gestern dastand, ist weg.
- Keine Zusammenarbeit. Zwei Fenster auf derselben Seite überschreiben sich.
- Kein Kommentar am Block.
- Keine Verlinkung rückwärts. Ein Seitenverweis zeigt hin, nicht zurück (Richtung G1).
- Keine Vorlagen. Jede Seite fängt leer an.
Keine Suche im Dokument (Strg+F).— gebaut am 21.09.2026 (S-documents).Strg+Föffnet eine Leiste aus Glas oben rechts: Suchwort, Zähler, zwei Pfeile, ein Kreuz, darunter die Fundstellen mit dem Text darum. Gesucht wird überflachlegen(baum), also über alle Blöcke der Seite — auch die unter einer zugeklappten Überschrift. Das Rechnen steht inclient/dokumente/editor/suche.tsund ist ohne Schirm prüfbar (suche.test.ts, elf Zusicherungen); die Leiste inSuchleiste.tsx. Was fehlt: siehe 21 — über die Seite hinaus sucht sie nicht. Die Punkte 17 bis 20 sind am 22.09.2026 abgetragen: verdeckte Treffer, die beiden Schalter, der Seitentitel und die Höhe des Kopfbands.Kein Bild-Upload im Block— gebaut am 17.09.2026. Bild- und Dateiblock legen eine Datei in Denotatos eigener Ablage ab („Bild auswählen" / „Datei auswählen"); die Kennung steht alsfile_idim Blockinhalt, die Adresse von draußen bleibt als Ausnahme daneben. Was noch fehlt: Ziehen und Fallenlassen, Einfügen eines Bildes aus der Zwischenablage (Text mit Gliederung wird seit dem 07.10.2026 zu Blöcken), und eine Größenangabe am Bild.- Tabellen sind starr. Keine Sortierung, keine Formel, keine Verknüpfung zu Daten.
Der Knopf-Block tut nichts.— zurückgezogen am 21.09.2026 (S-documents). Seit dem 17.09.2026 sagte er es immerhin selbst; das half nicht, denn einfügen konnte man ihn weiter, und ein Blocktyp, den man einfügt und der nichts tut, sieht aus wie ein Fehler in Denotato. Zwischen „bauen" und „entfernen" war nur eines möglich:ActionTypekennt genau einen Wert (open_menu), alle übrigen stehen auskommentiert daneben, und der Aufzählungstyp liegt in@shared— eine Wirkung wäre keine Änderung an den Dokumenten, sondern eine am Inhaltsformat. Also steht der Knopf nicht mehr inANGEBOT: das Schrägstrichmenü bietet ihn nicht an. Der Katalogeintrag bleibt, weil er Name und Zeichen für die Knöpfe trägt, die in Seiten schon stehen — und die sitzen nicht fest:istUmwandelbarnennt den Knopf seit heute als Ausgangspunkt, „Umwandeln in" steht an seinem Griff, unduebernimmInhaltträgt die Beschriftung nachtexthinüber.- Keine Verschlagwortung.
Kein Papierkorb-Ablauf.— behoben am 21.09.2026 (B20). Die Seiten sind jetzt eine Art im gemeinsamen Papierkorb, also nimmtraeumeAbsie nach dreißig Tagen mit wie alles andere. Das ist eine Änderung am Verhalten, und sie geht in die scharfe Richtung: Wer eine Seite wegtut, hat ab jetzt dreißig Tage und nicht mehr ewig. Am 21.09.2026 lag nichts im Papierkorb, als es umgestellt wurde.- Die Auszeichnung überlebt keinen Typwechsel. Wer einen Absatz mit einem fetten Wort zur Überschrift macht, bekommt die Überschrift ohne das fette Wort:
uebernimmInhaltinplugins/src/documents/shared/blockinhalte.tsbaut den Inhalt des neuen Typs frisch aus dem Klartext (bis zum 21.09.2026 tat esstandardInhalt, mit demselben Ergebnis). Beim Teilen und Zusammenziehen ist es anders —mitTextzieht die Abschnitte seit dem 20.09.2026 mit. Der Klartext selbst überlebt seit dem 21.09.2026 auch dann, wenn niemand ihn mitschickt (A11):migrateContentim Server überführt ihn in das Feld, das der neue Typ dafür führt —bodybei der Formel,namebei der Datei, sonsttext—, und ein Typ ohne Textfeld bekommt keines angehängt. Im Editor merkt man davon nichts, denn er schickt den Inhalt selbst mit; wer/api/blocks/changeTypeohnecontentruft, bekam vorher eine leere Überschrift. Und seit dem 22.09.2026 verschwindet der Klartext auch dann nicht still, wenn der neue Typ ihn gar nicht führen kann (F14). Gemessen am laufenden Dienst: ein Absatz mit „Wichtiger Satz, den niemand verlieren will" wurde zur Tabelle, die Antwort hießblock_updated, und der Satz war weg. Jetzt lehnt der Server ab (409), solange niemandcontentmitschickt — von den drei möglichen Ausgängen (mitnehmen, erkennbar lassen, ablehnen) ist stilles Wegwerfen der schlechteste, und „erkennbar lassen" ginge nur als Feld an einem Typ, der es nicht kennt. Im Browser trifft das niemanden: „Umwandeln in" bietet nur textführende Ziele an, und über den Schrägstrich wird nur eine leere Zeile gewandelt. Ein leerer Block lässt sich nicht in jeden Typ wandeln— behoben am 21.09.2026 (F14). Im Katalog (/) wird ein leerer Block umgewandelt statt ein neuer angelegt, und der Editor baute den neuen Inhalt mitstandardInhalt: die kannte sieben Typen und gab für alle übrigen{ text, styling, alignment }zurück. Wer „Tabelle", „Bild", „Datei", „Weblink", „Seitenverweis" oder „Knopf" wählte, schickte das an einen Typ, derthickness,scaleoderlinkerwartet;contentFitsBlockTypelehnte mit „Der Inhalt passt nicht zum Blocktyp" ab. Jetzt bautuebernimmInhaltausplugins/src/documents/shared/blockinhalte.tsden Inhalt — aus derselben Liste, gegen die der Server prüft; alle sechzehn Einträge des Schrägstrichmenüs kommen durch, nachgewiesen intypwechsel.test.tsx. Der zweite Weg ist seit dem 21.09.2026 mit geheilt. Wer---tippt, läuft nicht über den Katalog, sondern überkuerzelErkennen, und das baut seinen Inhalt mitstandardInhalt— der zweiten Liste. Sie war bereits abgewichen:---gab eine Trennlinie mitthickness: 1,/eine mit3. Jetzt nimmt der Editor vom Treffer nur noch die Wahl des Kürzels — Typ, Text, Stufe, zuklappbar, Startwert — und baut den Rest mitkuerzelinhaltaus derselben Liste wie das Schrägstrichmenü. Beide Wege geben dieselbe Trennlinie, und ein Kürzel für einen Typ, denstandardInhaltnicht kennt, bekommt trotzdem den richtigen Inhalt. Nachgewiesen inkuerzelinhalt.test.ts(63 Zusicherungen) und inverify:dokumente(vier davon, als Teil der Kette). Die zweite Liste gibt es seit dem 22.09.2026 nicht mehr.standardInhaltin@shared/handlers/documents/blockbaum.tsist abgeschafft;kuerzelErkennengibt jetzt den Wunsch zurück — Typ, Text, Stufe, zuklappbar, Startwert — und wer einen Inhalt braucht, baut ihn mitkuerzelinhaltausdefaultBlockContents. Damit steht die Liste der Vorgabeinhalte an einer Stelle im Baum, und der zweite Satz von „Fertig, wenn" stimmt ganz und nicht nur dort, wo es auffiel. Und die Tabelle aus dem Schrägstrich ist jetzt dieselbe wie die aus dem Anlegefach. Gemessen:blocks/addmitblockType: tablegab zwei Zeilen,blocks/changeTypenachtablenull — derselbe Menüpunkt „Tabelle" gab also einen leeren Rahmen, wenn die Zeile leer war (dann wird gewandelt), und eine Tabelle mit zwei Zeilen, wenn etwas darin stand (dann wird angelegt). Der Typwechsel baut das Gerüst jetzt mit, für Tabelle und Karteikarte, und nur dann, wenn der Block noch keine Kinder hat. Und seit dem 22.09.2026 bleibt beim Wechsel kein Kind hängen. Gemessen am laufenden Dienst: Eine Tabelle samt ihren zwei Zeilen ließ sich in acht Zieltypen wandeln — Überschrift, Aufklappbar, Spaltensatz, Aufzählung, Nummerierung, Aufgabe, Tabellenspalte, Absatz —, die Antwort hieß jedes Malblock_updated, und die beidentable_rowstanden danach unter dem neuen Block (kinder 2->2 [table_row,table_row]). Sie waren dort nicht nur falsch, sondern fest: Eine Tabellenzeile ist kein freier Block, ihr Menü am Griff bietet weder Löschen noch Verschieben noch Umwandeln an, weil sie ihrer Tabelle gehört — und die gab es nicht mehr. Der Grund war eine zu großzügige Lesart:allowedBlockChildren(heuteERLAUBTE_KINDERim Blockbaum) sagt bei acht Typentrue, undtruehieß „jedes Kind". Jetzt heißt es „jeder freie Block". Geräumt wird, was leer ist, abgelehnt, woran etwas hängt. Sonst wäre die Absage schärfer als der Fehler: Strg+Z nach „/ → Tabelle" wandelt zurück zum Absatz und lief gegen die zwei Zeilen, die der Server gerade selbst gebaut hatte. Und die Karteikarte war, von einundzwanzig Ausgangstypen, der einzige, bei dem ein Wechsel auf die Tabelle scheiterte — an Frage und Antwort, in die niemand etwas geschrieben hatte. Beide gehen jetzt; eine Tabelle mit einer ausgefüllten Zelle bleibt stehen. Nachgewiesen mit fünf weiteren Zusicherungen inverify:dokumente, gegengeprüft durch Stilllegen beider Zweige. Was noch fehlt: Im Browser nachgesehen hat es niemand — gemessen ist der Weg dahinter (verify:dokumente, vierzehn Zusicherungen am laufenden Dienst), nicht der Klick.- Die Leiste kennt keine Berührung. Sie erscheint auf
mouseupundkeyup; wer am Telefon ein Wort markiert, bekommt sie nicht.selectionchangeam Dokument wäre der Weg, und er ist teurer — er feuert bei jeder Zeigerbewegung. Ein Treffer unter einer zugeklappten Überschrift lässt sich nicht anspringen.— behoben am 22.09.2026 (S-documents). Die Liste zeigte ihn samt Ausschnitt, der Klick tat nichts:felderführt die Schreibfelder der gezeichneten Blöcke, und einen verdeckten zeichnet niemand — es gab kein Feld, in das der Zeiger dürfte, und aus Sicht des Lesers klemmte die Liste. Jetzt wird der Weg dorthin erst gerechnet und dann in einem Zug gegangen. Verdeckt sein kann ein Block auf zwei Arten, und beide liegen übereinander: ein zugeklappter Elternblock gibt seine Kinder nicht heraus, und eine zuklappbare Überschrift verdeckt ihre Geschwister bis zur nächsten gleicher oder höherer Stufe (N65).aufdeckplaninplugins/src/documents/shared/aufdecken.tsgibt beides als Liste von Kennungen zurück — erstklappefür die Blöcke, dannklappeUeberschriftfür die Überschriften, und in dieser Reihenfolge mit Absicht: Welche Überschrift eine Zeile verdeckt, hängt daran, wo die Zeile in der sichtbaren Reihe steht, und die ändert sich, sobald ein Elternblock seine Kinder wieder herausgibt. Der Sprung selbst kommt eine Bildwiederholung später, über denselben Griff wie der Fokuswunsch: Der Wunsch bleibt liegen, bis es das Feld gibt. Zwei Entscheidungen stecken darin. Geschrieben wird nichts — der Klappknopf am Block legt auchopenin den Inhalt, das Aufdecken nicht, sonst änderte bloßes Suchen das „zuletzt geändert" der Seite (beim Laden ist ohnehin alles offen). Und aufgeklappt wird nur, wer danach fragt: beim Blättern mit den Pfeilen und beim Klick auf eine Zeile, nicht beim Tippen — sonst klappte sich die Seite Buchstabe für Buchstabe von selbst auseinander. Ohne Schirm prüfbar (Grundsatz 59):aufdecken.test.ts, zwölf Zusicherungen, darunter die verschachtelten Überschriften, an denen ein einzelner Deckel scheitert.Die Suche kennt keine Schalter.— zwei davon gebaut am 22.09.2026 (S-documents). In der Leiste stehen jetzt „Aa" (Groß- und Kleinschreibung beachten) und „ab|" (nur ganze Wörter), beide aus wie vorher — wer „haus" tippt, meint weiterhin auch „Haus". Das Rechnen nimmt die Wahl alsSuchwahlentgegen (suche.ts), die Leiste meldet sie mitaria-pressed. Ein Wortzeichen ist Buchstabe, Ziffer oder Unterstrich — geprüft ohne\wund ohne\p{L}:\wist ASCII und hätte „Straße" nach „Stra" enden lassen,\p{L}braucht die Markeu, und die Oberfläche wird nach ES5 übersetzt. Stattdessen die Probe, die ohne Marke auskommt: ein Buchstabe ist, was sich groß und klein schreiben lässt. Dazu ein Fehler, der dabei auffiel: Ein verworfener Treffer schob um die Länge des Suchworts weiter statt um ein Zeichen — wer „ei" als ganzes Wort in „eineiig ei" sucht, hätte das zweite verloren. Nachgewiesen insuche.test.ts. Was nicht kommt: regulärer Ausdruck und Ersetzen. Der erste wäre eine eigene Sprache im Suchfeld, das zweite schreibt in die Seite und gehört nicht in eine Leiste, die nur liest.Der Seitentitel wird nicht mitgesucht.— behoben am 22.09.2026 (S-documents). Er steht jetzt als erste Zeile in der Suche, unter dem Namen „Titel" und mit der Kennung@titel— ein Klammeraffe kommt in keiner Blockkennung vor, wer ihn sieht, weiß, dass der Zeiger in den Kopf gehört. Das Titelfeld liegt dabei nebenfelderund nicht darin: Anfelderhängt mehr als der Fokus, die Pfeiltasten wandern darüber von Zeile zu Zeile undBackspacesucht darin den Vorgänger — legte man den Titel hinein, wäre er plötzlich ein Ziel für all das. Nebenbei trägt eine Fundstelle jetzt den Namen ihrer Quelle („Absatz", „Überschrift", „Titel") statt des Blocktyps; das Rechnen insuche.tskennt damit weder Katalog noch Übersetzung.Die Suchleiste sitzt an einer festen Stelle(88 px von oben, am Telefon 72) — behoben am 22.09.2026 (S-documents). Sie misst nicht selbst, sondern liest--denotato-leistenhoehe: Die Leiste oben schreibt ihre Höhe über einenResizeObserveran die Wurzel des Dokuments, undGeneralMenurechnet längst damit. Die Suchleiste setzt ihren Abstand jetzt aufcalc(var(--denotato-leistenhoehe, 52px) + <Abstand>)— mit demselben Rückfallwert wie überall, falls die Variable einmal nicht dasteht. Das Kopfband ist damit an einer Stelle gemessen, und die Leiste musste dafür nicht angefasst werden.- Die Suche geht nicht über die Seite hinaus. Unterseiten sucht sie nicht mit, obwohl der Baum danebensteht. Das wäre ein Endpunkt über mehrere Seiten und keine Sache des Editors mehr.
ANGEBOTundKATALOGlaufen seit dem 21.09.2026 auseinander.— behoben am 22.09.2026 (S-documents). Der Rückzug des Knopfes bestand darin, dass er inANGEBOTnicht mehr aufgezählt stand; eine Liste, aus der jemand einen Eintrag herausgenommen hat, sieht aber genauso aus wie eine, in die ihn jemand einzutragen vergessen hat. Jetzt trägt der Katalogeintrag den Grund (zurueckgezogen: string | null),ANGEBOTrechnet sich daraus, und der Knopf steht wieder in der Reihenfolge — mit dem Satz, warum er nicht angeboten wird. Dazukatalogluecken(): Es nennt jeden freien Blocktyp (istFrei), den die Reihenfolge nicht kennt — den umgekehrten Fehler, bei dem ein neuer Typ nie im Schrägstrichmenü auftaucht und das niemandem auffällt. Nachgewiesen inblockKatalog.test.tsmit acht Zusicherungen, darunter die Gegenprobe, dass aus der Rechnung genau die fünfzehn Einträge herauskommen, die das Menü am 21.09.2026 von Hand aufzählte — seit WI08 dazu Code und Hinweiskasten.BlockType.BUTTONundActionTypebleiben stehen. Der Rückzug ist eine Sache der Oberfläche; die Spalteblock_typekenntbuttonweiter, undActionTypehat weiterhin einen Wert und dreizehn auskommentierte daneben. Aufräumen wäre eine Migration und damit eine eigene Entscheidung.MOVE_BLOCKfragt die Regel nicht.— behoben am 23.09.2026 (F27). Gemessen am 22.09.2026 hängte/api/blocks/moveeine Tabellenzeile klaglos unter einen Absatz (status=200 block_moved); der Endpunkt prüfte nur die Seite und den Kreis. Den Server allein zu schärfen hätte geheißen, dass eine angebotene Taste eine Fehlermeldung gibt: Die Tabulatortaste fragtenimmtKinder— nimmt der Vorgänger überhaupt Kinder —, und darunter fiel auch die Tabelle. Deshalb beides zugleich: Die Regel steht jetzt einmal in@shared(ERLAUBTE_KINDER,kindPasst),moveBlockfragt sie vor dem Umhängen und antwortet sonst mitBLOCK_MOVE_NOT_ALLOWED, und Tabulatortaste und Ablagelinie bieten nur an, was durchkommt.blockMoveAllowed, das niemand rief, ist entfallen.verify:dokumentemisst am laufenden Dienst: keine Tabellenzeile unter einen Absatz und keine auf die oberste Ebene, wohl aber unter ihre eigene Tabelle; kein Absatz in die Tabelle. Was bleibt: Zeilen, die schon vorher falsch umgezogen wurden, räumt niemand auf — das wäre eine Wanderung und eine eigene Entscheidung. Und im Browser nachgesehen hat es niemand (Punkt 25).- Im Browser nachgesehen hat es niemand. Suche und Rückzug sind gegen Typen, Lint und Nachweise geprüft, nicht gegen ein Fenster: In der Nacht zum 21.09.2026 lief die API nicht (gemessen —
https://127.0.0.1:5443/api/pinggab „Connection refused"). Was das Rollen, die Auswahl imcontentEditableundStrg+Fam Telefon wirklich tun, steht noch aus. - Der Editor ist nicht übersetzt. Zehn der zwölf Bauteile unter
client/dokumente/editor/tragen ihre deutschen Sätze roh im Code — „Auf dieser Seite steht das nicht.", „Umwandeln in", „Suchen", „Groß- und Kleinschreibung beachten". NurblockKatalog.tsxgeht übersatz(), und deshalb sind die Blocknamen englisch zu bekommen und der Rest der Oberfläche nicht. Wer das nachzieht, fasstpackages/shared/src/languages/*.jsonan — eine geteilte Datei —, und sollte es in einem Zug für den ganzen Editor tun, nicht Schirm für Schirm: ein halb übersetzter Editor liest sich schlechter als ein ganz deutscher. - Die Trefferliste sagt nicht, dass ein Treffer verdeckt ist. Seit dem 22.09.2026 klappt der Sprung die Seite auf, damit man hinkommt (Punkt 17) — angekündigt wird das nicht. Wer auf eine Zeile klickt, sieht plötzlich drei Abschnitte offen, die er selbst zugeklappt hatte, und weiß nicht, welche. Ein Zeichen an der Zeile („liegt unter einer zugeklappten Überschrift") wäre der ehrlichere Weg, und
aufdeckplanweiß es bereits; es fehlt nur der Aufruf beim Zeichnen der Liste und ein Platz dafür in der Zeile. - Was die Suche aufgeklappt hat, klappt niemand wieder zu. Der Zustand bleibt, auch wenn die Leiste geschlossen wird — die Seite sieht nach einer Suche anders aus als davor. Zurücknehmen wäre falsch, solange der Zeiger noch in dem Block steht, den man gesucht hat; richtig wäre, es sich beim Schließen zu merken und nur das zuzuklappen, was der Leser nicht selbst angefasst hat. Das ist eine Buchhaltung über drei Zustände und keine fünf Zeilen.
Der Favorit trägt ein Zeichen, das etwas anderes heißt.— geklärt am 30.09.2026 (E12): Der Favorit bleibt derstern. Seit N379 heftet der Stern in der Adresszeile eine Seite an (Christians „Anheften-Stern"); der Favorit ist dieselbe Geste, und zwei Zeichen für sie wären zwei Sprachen. Der alte Befund: Die Registry meint mitsternden Himmel („kein Stern, der heißt Himmel" steht anwunsch); die Seitenleiste nimmt ihn für den Favoriten, und die Wörter folgen ihm — „Stern wegnehmen", „Mit Stern". Seit N134 steht die Stelle inSEITENLEISTENZEICHENals vorläufig. Zwei Wege: ein eigenesfavoritin der Registry, oderanheften(„hängt die Seite oben an" sagt diese Datei selbst) — dann ändern sich auch die Wörter. Das ist eine Entscheidung.Daran hängt auch, dass von den drei Abschnittsköpfen der Leiste nur der Papierkorb ein Zeichen trägt (Guide §7.3).Seit der Nachbesserung vom 23.09.2026 tragen alle drei Köpfe eines; der Kopf „Favoriten" nimmt dabei denselbenstern(SEITENABSCHNITTSZEICHENinzeichen.ts).Das Blockmenü wartet auf drei Zeichen.— behoben am 30.09.2026 (E12):kopieren,einruecken,ausrueckenund die drei Ausrichtungen stehen in der Registry, das Menü zieht als Ganzes um. Der alte Befund: Duplizieren, Einrücken und Ausrücken haben keine Entsprechung in der Registry.Ihre Linien stehen nebenhoch,runterundloeschenund sind dünner als diese.Seit der Nachbesserung vom 23.09.2026 bleiben deshalb alle sechs Handlungen gezeichnet, auch die drei, für die es ein Registry-Zeichen gäbe — eine Liste, eine Zeichensprache. Wunschnamenkopieren,einruecken,ausruecken; sind sie da, schaltet ein Eintrag inBLOCKAKTIONSZEICHENdie ganze Liste um. Dazuausrichtung_links,ausrichtung_mitte,ausrichtung_rechtsfür ⇤ ↔ ⇥.Die Blocktypen zeichnen sich selbst.— behoben am 30.09.2026 (E13, N452): Jede Blockart nennt im Katalog ein Zeichen der Registry, das wie sie heißt; vierzehn sind neu gezeichnet, acht gab es schon (aufgabe,tabelle,formel,datei,weblink,karte,frage,hinweis).blockKatalog.test.tshält, dass keine zwei Blockarten ein Zeichen teilen. Gesehen hat sie noch niemand; der Blick steht in E27. Vorher:blockKatalog.tsxführte für alle 19 Typen eine eigene Zeichnung (zeichne(…)), die im Schrägstrichmenü und unter „Umwandeln in" steht — Text, Überschrift, Aufzählung, Nummerierung, Aufgabe, Aufklappbar, Trennlinie, Formel, Tabelle, Spaltensatz, Bild, Datei, Weblink, Seitenverweis, Knopf, Karteikarte, Frage, Hinweis, Antwort. Die Registry hat davon höchstens Verwandte (blatt,karte,frage,hinweis), aber mit anderer Bedeutung. Am Block selbst trugen Datei und Weblink dasselbe Schicksal, bis E12dateiundweblinkzeichnete (30.09.2026); die neunzehn Blocktypen stehen in E13.- „Durchgestrichen" hat zwei Buchstaben. Im Blockmenü steht D, in der Leiste über der Auswahl S — derselbe Knopf, zwei Gestalten. Welcher gilt, ist nicht eindeutig (D ist deutsch, S die Gewohnheit aus fremden Programmen); geändert hat N134 deshalb keinen.
- Die neuen Zeichen sind dunkler als ihre Vorgänger. Unter 20 px zeichnet
Zeichenden Strich immer in Textfarbe und nur die Fläche in der Farbe des Knopfs. Die Griffe links an der Zeile, der Klappwinkel und die Knöpfe der Suchleiste waren ganz intertiarygezeichnet und sind jetzt kräftiger;der Klappwinkel ist von 10 auf 12 px gewachsen (wie in der Seitenleiste), die Menüzeichen von 15 auf 16 px.Die Größen sind seit der Nachbesserung vom 23.09.2026 wieder die alten: Klappwinkel 10 px, Blockmenü 15 px (und dort ganz gezeichnet, Punkt 30). Gesehen hat das niemand im Browser (Punkt 25). „Gesichert" mit Haken, obwohl nichts gesichert wurde.Behoben am 23.09.2026. Scheitert das Anlegen eines neuen Blocks, zähltsichereJetztseinen Inhalt jetzt als Fehler: der Kopf zeigt „Nicht gesichert" mitwarnung, und der Hinweis beim Überfahren sagt, dass ein neuer Block sich nicht anlegen ließ. Vorher übersprang es ihn still und meldete „Gesichert" mit grünem Haken (editor/sicherung.test.tsx, mit Gegenprobe). Was bleibt: Der Inhalt selbst ist verloren — es gibt keine Kennung, unter der ein zweiter Versuch landen könnte. Ihn in einen neuen Anlegeversuch zu retten, wäre der nächste Schritt.- Der Hinweis auf der leeren Übersicht spricht noch vom
+. „über das + neben einer Zeile in der Leiste" — dort steht seit N134 das gezeichneteanlegen. Die Form ist dieselbe, der Satz stimmt; ein Zeichen im Satz wäre ehrlicher, braucht aber ein Wort für den Bildschirmleser. - Zwei stille Sätze am Block tragen kein Zeichen. Der Knopf-Block sagt „Zurückgezogen — der Knopf löst nichts aus" ohne
hinweis, und der Kopf der Karteikarte trägt keinkarte. Beides wäre richtig, aber es sind Aussagen über den Block und keine Meldungen; ob ein Zeichen dort die Lautstärke 2 des Archivs sprengt, ist nicht gemessen. - Derselbe Klappwinkel in zwei Größen. Am Block steht
ausklappen10 px groß, vor den Abschnittsköpfen der Seitenleiste 12 px. Beim Umzug in die Registry (N134) war der Winkel am Block kurz auf 12 px gewachsen und wurde auf die alte Größe zurückgesetzt, weil eine neue Größe eine Gestaltungsentscheidung ist und kein Ersatz. Ob beide Stellen eine Größe bekommen — und welche —, steht offen. - Die Abschnittsköpfe der Leiste stehen nicht bündig. „Favoriten" und „Papierkorb" beginnen mit dem Klappwinkel, „Seiten" nicht, weil der Abschnitt nicht zuklappt. Seit alle drei Köpfe ein Zeichen tragen (23.09.2026), fällt der Versatz stärker auf: der
sternund der Mülleimer stehen eine Winkelbreite weiter rechts als dasblatt. Ein Platzhalter von der Breite des Winkels vor „Seiten" würde es richten. - Ein abgeschalteter Bereich hat keine eigene Anzeige. Seit D33 (23.09.2026) antwortet der Server mit 403 „Bereich ist ausgeschaltet"; der Editor zeigt die Meldung über der Zeile „Diese Seite lässt sich nicht öffnen …", Übersicht und Seitenleiste sagen „Noch keine Seite." — als gäbe es keine. Wer über ein Lesezeichen kommt, erfährt nicht, dass die Seiten noch da sind und wo man den Bereich wieder einschaltet. Dazu kommt, dass die Verknüpfungen für einen nur ausgeschalteten Bereich 404 „unbekannter Ressourcentyp" sagen statt 403: Der Anschluss kennt nur ja oder nein.
- Eine abgewiesene Adresse hält die Beschriftung mit fest. Der Editor schickt immer den ganzen Inhalt; solange die Adresse eines Weblinks nicht erlaubt ist, wird auch seine Beschriftung nicht gesichert. Das Feld sagt es, getrennt sichern lässt sich der Rest nicht (D26).
mailto:ist am Weblink nicht erlaubt — eine Annahme in der Nacht zum 23.09.2026, nicht Christians Entscheidung (D26). Ein Verweis auf eine Postadresse wird abgewiesen.- Ausgeschaltete Karteikarten sehen aus wie fehlende Karten. Seit N143 fragt
BLOCK_FLASHCARD_LISTdas zweite Tor überFLASHCARDS. Wer den Bereich ausgeschaltet hat, sieht an jedem Karteikarten-Block „noch keine Karte" — auch an einem, der im Lernsystem längst eine Karte hat —, und die Brücke antwortet beim Klick mit „Bereich ist ausgeschaltet". Was fehlt: ein Satz am Block, dass die Karteikarten aus sind, statt einer Aussage, die nicht stimmt. - Code und Hinweiskasten (WI08) — was noch fehlt. Der Knopf „Kopieren“ hat kein Zeichen, weil die Zeichenliste keines für Kopieren kennt; er steht als Wort da. In der Leseansicht rollt ein Code-Block mit langen Zeilen nur mit Maus oder Finger, nicht mit der Tastatur.
Im Markdown-Export fehlt zwischen einer Liste und dem Absatz direkt danach die Leerzeile— steht seit WI02 (24.09.2026) da. Und das Kürzel```ist auf deutschen Tastaturen umständlich (siehe „Tastatur und Kürzel“). - Bewegung im Editor — was noch fehlt (BW-261007-editor). Dass beim Tippen in einen langen Block keine Animation läuft, ist im Test belegt, aber nicht gemessen; die Messung gehört BW-261007-nachmessen. Ein Block, der beim Ziehen über anderen schwebt, folgt dem Zeiger noch als Bild des Browsers (HTML5-Ziehen), nicht als Feder.
- Formelfenster der Karte (LX23) — was noch fehlt. Es öffnet nur ein Klick in eine geschlossene Formel; mit den Pfeiltasten oder beim Tippen des schließenden
$geht es nicht auf, und ob es eingebettet statt schwebend stehen soll, ist offen (N444). Im Absatz, in der Liste und im Hinweiskasten gibt es das Fenster nicht, nur in der Karte. - LaTeX-Text im Dokument (LX17) — was noch fehlt. Der Name im Schrägstrichmenü ist fest, bis Admins Namen im Blockkatalog stellen können. Auf der Seite der LaTeX-Texte gibt es noch keinen Knopf „In ein Dokument einbinden“; eingebunden wird nur vom Block aus. Das PDF zeigt den letzten Satz eines Schreibenden — wer nur liest, wartet, bis jemand setzt. Die HTML-Ausgabe zeigt vom Block nichts, nicht einmal seinen Titel.
Kürzel beim schnellen Tippen (RL13, 28.09.2026). Wer „- Einkaufen“ ohne Pause tippte, verlor den Text hinter dem Kürzel: Der Absatzinhalt vom „-“ ging nach dem Typwechsel noch hinaus, kam mit 400 content_does_not_fit_block_type zurück und stellte sich über den getippten Listenpunkt. Seitdem wartet die Sicherung auf einen laufenden Typwechsel, überspringt überholte Inhalte und verdrängt keinen neueren (editor/kuerzelsicherung.test.tsx).
Lesbare Wertflächen (F21, 25.09.2026). Das Häkchen eines erledigten Blocks liest alternative.on statt eines gemeinsamen Statustons. Seit dem 09.10.2026 ist es unbunt: Fläche neutral.text, Zeichen neutral.papier — erledigt ist ein Zustand, keine Handlung (ES-261009-akzentfarbe-fester).
Kartenruhe über Lernsammlungen (F91, 25.09.2026). Liegt eine Seite im Papierkorb, ruhen ihre Karten auch für Mitlernende, die sie über ein freigegebenes Modul oder eine freigegebene Kategorie sehen. Öffentliche Sichtbarkeit allein gibt weiterhin keinen Blick auf die Blockverknüpfung (N264).