/material — Studienmaterial

Hinweis: Rahmen: 00-rahmen.md. Code: packages/plugins/src/materials/ · Nachweis npm run verify:materials.

Wofür

Vier Bereiche, die zusammengehören: eine Mitschrift trägt LaTeX-Arbeiten, eine Arbeit nennt Quellen, alles hängt am Modul. Sie auf vier Schirme zu verteilen hieße, den Zusammenhang zu verstecken.

„LaTeX-Arbeiten“ heißt der Abschnitt mit Overleaf-Adresse, Stand und Anhängen (seit dem 14.10.2026, KN-261014-mitschrift-ist-seite). Bis dahin hieß er „Dokumente“ — wie die Seiten des Block-Editors in der Seitenleiste, die etwas anderes sind. In Code und Pfaden heißt er weiter documents (MATERIAL_DOCUMENTS).

Eine Mitschrift ist eine Seite (Wahl B3 A vom 14.10.2026, [docs/kern/befunde.md](../kern/befunde.md)). Geschrieben wird im Editor; die Zeile unter „Mitschriften“ trägt Datum und Modul und zeigt mit document_id auf ihre Seite (Migration 319). Ihr Name ist der Titel der Seite. Liegt die Seite im Papierkorb, gilt sie als nicht da, und die Zeile zeigt wieder den gespeicherten Namen. Eine Seite gehört höchstens einer Mitschrift.

Weg und Rahmen

Route/material, ?neu klappt das Anlegefach auf
MerkmalSTUDY — ein Raum im Lesesaal, kein eigener Navigationseintrag
Knoten im Rechtebaumgold.materials, aus dem Studium abgeleitet (N149)
ZimmerLesesaal · Lautstärke 2

Gefragt wird der eigene Knoten (N149, 23.09.2026). Die Wege des Materials sperren mit der eigenen Deklaration (bereichssperre(access, plugin) in server/materialien.ts), und dieselbe Rechnung entscheidet über den Eintrag unter „Mehr", den Befehl „Studienmaterial", die Schnellaktion „Material" und die Zeile in rechte_baum. Der Knoten hat keinen eigenen Grant: Der Baum leitet ihn aus dem Studium ab, mit dessen Herkunft und mit ueber: 'gold.study' im Entscheid — rechte_baum sagt also nicht „diesem Konto gewährt", sondern „über das Studium" —, und der Schalter ist der des Studiums. Einem Konto das Material zu nehmen, ohne ihm das Studium zu nehmen, geht deshalb noch nicht — das entscheidet Christian (00-rahmen.md, Was fehlt, Punkt 37).

Was man sieht

Vier Abschnitte: Mitschriften · LaTeX-Arbeiten · Quellen · Projekte, in dieser Folge, solange niemand die Reiter umgeordnet hat; geöffnet wird „LaTeX-Arbeiten".

AbschnittSpalten der TabelleAnlegefach
MitschriftenMitschrift · Datum · Modul · LaTeX-ArbeitenName · Datum · Modul, vorbelegt (siehe unten)
LaTeX-ArbeitenLaTeX-Arbeit · Art · Stand · Modul · Mitschrift · Quellen · DateienName · Art (Abschlussarbeit, Bericht, Hausarbeit, Lernzettel, Mitschrift, Übung) · Stand · Overleaf-Adresse · Modul · Mitschrift
QuellenTitel · Autor · Jahr · Art · Modul · verwendet in · Seiten · GelesenTitel · Autor · Art (Lehrbuch, Paper, Website, Nachschlagewerk, Aufgaben, Skript) · Modul · Adresse · Jahr · Verlag · Ort · Datei
ProjekteProjekt · Technik · Stand · Modul · GitHubName · Technik (Haskell, SQL, Assembly, C/C++, Java, JavaScript, Python — eine) · Stand · GitHub-Adresse · Modul

Die Overleaf-Adresse steht in keiner Spalte; die GitHub-Adresse steht in der Spalte „GitHub" als Text und nicht als Verweis.

Die Spalte „Dateien" nennt Namen und Größe und nicht mehr eine Zahl (21.09.2026). „3" beantwortete keine der Fragen, die man an dieser Stelle hat: Ist die Abgabe schon dabei? Ist der Scan zu groß für die Mail? Jetzt steht hausarbeit.pdf · 180 KB da. Gerechnet wird in KB und MB und nicht in KiB und MiB — es geht um einzelne Anhänge, und „0,2 MiB" ist keine Angabe, sondern eine Rundung auf null Aussage. Das Dezimalzeichen folgt der Sprache des Kontos: 2,4 MB auf Deutsch, 2.4 MB auf Englisch (VA-261009-groessen-zahlen); dieselbe Regel gilt in den Einstellungen für die Speichernutzung (1,5 GiB / 1.5 GiB) und für die Haltezeit der To-dos (0,8 s / 0.8 s).

„im Ordner nicht mehr da" (BE25, 24.09.2026, N247). Eine Quelle, die der Ordner-Abgleich angelegt hat und deren Datei ein späterer Lauf im Ordner nicht mehr findet, trägt an ihrer Zeile vor „zitieren" diesen Chip in Warnfarbe; der Hinweis beim Darüberfahren sagt, dass die Quelle in Denotato bleibt. Gelöscht wird nichts — Lesestand, Notizen und Verwendungen hängen an der Quelle, nicht an der Datei draußen. Liegt die Datei beim nächsten Lauf wieder da, verschwindet der Chip. Eine eigene Spalte ist es nicht, weil fast jede Zeile dort einen Strich trüge.

Das Feld „Adresse" an einer Quelle ist der Ort, an dem das Material sonst noch liegt. Es stand seit je in der Tabelle, kam aber nie heraus; ohne es ist die Literaturangabe zu einer Website nur der halbe Satz.

Jahr, Verlag und Ort (22.09.2026, Migration 86) sind dasselbe für ein Buch. Forster, Otto: Analysis 1. Lehrbuch. ist keine Angabe, die eine Prüfungsordnung annimmt; Forster, Otto: Analysis 1. Lehrbuch. Wiesbaden: Springer Spektrum, 2016. ist eine. Leer heißt „nicht gesagt" und nicht „gibt es nicht": Was fehlt, fällt aus der Angabe heraus — Denotato schreibt kein „o. J." und kein „o. O.", weil das eine Behauptung über die Quelle wäre und nicht über die Eingabe. Nur das Jahr steht auch in der Tabelle; Verlag und Ort gehören in die Angabe und nicht in eine Zeile, die ohnehin schon acht Spalten hat.

Die Literaturfelder (16.10.2026, Migration 339, NB-261011-literaturverwaltung) stehen im Anlegefach hinter Verlag und Ort: Zeitschrift oder Sammelband, Band, Heft, Seiten, Herausgeber, Auflage, DOI und ISBN. Ein Aufsatz zitiert sich damit als Meyer, Eva: … In: Mathematische Annalen 12 (3). 2019. S. 117–145. DOI: …, BibTeX und RIS bekommen journal oder booktitle, volume, number, pages und doi. Die DOI wird ohne Adresse und klein gespeichert, die ISBN ohne Striche. Jede Quelle trägt einen festen Zitierschlüssel, der bei der ersten Liste vergeben wird und bleibt, wenn sich Titel oder Autor ändern.

Die Spalte „Gelesen" ist ein Balken und keine Zahl (22.09.2026, Migration 87). Sie rechnet aus read_page und page_count, wie weit man in einer Quelle ist. Steht nichts da, steht ein Strich und kein leerer Balken: Eine Quelle, die niemand aufgeschlagen hat, steht nicht bei null Prozent — sie steht nirgends. Dieselbe Regel gilt seit dem 22.09.2026 für jede Fortschrittsspalte in Denotato (zellen.tsx).

Die zweite Ansicht „Angefangen" zeigt nur, was einen Lesestand hat, nach Fortschritt sortiert. Beim Weiterlesen zählt nicht der ganze Bestand, sondern das, was offen ist.

Stände: offen · begonnen · in Arbeit · fertig. Ansicht Nach Stand zeigt sie als Brett. Seit dem 23.09.2026 auch als Zeichen — siehe unten. Über dem Brett steht seit dem 30.09.2026 die Ordnungsleiste wie über jedem Brett in Denotato (E02, 00-rahmen.md): sortieren, die Spalten nach einem anderen Feld bilden oder „ohne Gruppen“ als Kacheln — gemerkt je Ansicht.

Der Quellenleser — eine Quelle öffnen und darin lesen, mit eigenem Suchfeld („In dieser Quelle suchen …"). Eine Quelle ohne Text — eine handgeschriebene Mitschrift — zeigt er Blatt für Blatt als Bild, mit „Seite 3 von 41" über dem Blatt; siehe „Die Blattansicht" unten. Die Adresse ?a=sources&von=<quelle>&seite=<n> schlägt ihn an Seite n auf — so öffnet ein Verweis des Begleiters eine Stelle im Seitenblick (KI-261014-verweise-ueberlagerung). Unter dem Blatt steht seit dem 24.09.2026 die Notiz dazu — was das Modell auf dem Blatt gelesen hat, von Hand zu berichtigen; siehe „Die Notiz zum Blatt".

Ist das Material ganz leer (keine Mitschrift, keine Unterlage, keine Quelle, kein Projekt), steht Satz und Knopf in der Mitte, und der Kopf trägt keinen Anlegeknopf. Der Knopf nennt den gewählten Abschnitt: „Erste Mitschrift anlegen“, „Erste LaTeX-Arbeit anlegen“, „Erste Quelle anlegen“ oder „Erstes Projekt anlegen“. Mit dem ersten Eintrag sitzt der Knopf im Kopf (E-261022-leere-zustaende).

Was man tun kann

Reiter ordnen (OE10, N500): Wer Vorgaben für alle setzen darf, ordnet und blendet die Reiter über „Bearbeiten“ im Kopf; die Folge steht in oberflaeche.reiter unter materials, Ansichten je Abschnitt materials/<abschnitt> (Rahmen §3).

ElementWas passiert
Anlegefachje Abschnitt ein eigenes Formular; es legt nur an, ändern lässt sich eine Zeile danach nicht
Mitschrift anlegenlegt die Seite mit dem Namen als Titel an, hängt sie an die neue Zeile und öffnet sie im Editor. Das Fach ist vorbelegt aus der Vorlesung oder dem Seminar, das gerade läuft oder höchstens eine Stunde vorbei ist (ab einer Viertelstunde vor Beginn): Titel wie die Karte des Begleiters („Analysis II · 13.10.2026“), der Tag, das Modul. Ohne Vorlesung im Fenster steht nur das heutige Datum da. Dieselbe Mitschrift mit Tag und Modul legt die Karte „Gleich beginnt …“ des Begleiters an; zurückgenommen geht sie wieder
Foto anhängen (im Kopf der Seite einer Mitschrift)öffnet die Dateiwahl für Bilder — am Telefon Kamera oder Fotos — und hängt das Foto eines Blatts als Bildblock ans Ende der Seite; abgelegt in der eigenen Ablage, ohne Zeile unter „Quellen“ (KN-261014-foto-handschrift-seite)
Zeile einer Mitschrift anklickenöffnet ihre Seite im Editor. Fehlt die Seite — eine Mitschrift von vor dem 14.10.2026 oder eine, deren Seite im Papierkorb liegt —, wird sie mit dem Namen als Titel angelegt und angehängt
Zeile einer Quelle anklickenQuellenleser mit Volltextsuche. Das geht mit Text oder mit einer Datei — auch eine Mitschrift ohne Text öffnet, dann als Blatt (seit dem 24.09.2026; vorher lief der Klick auf eine Zeile ohne Seiten ins Leere). Die Zeilen von LaTeX-Arbeiten und Projekten tun auf einen Klick nichts
Als Blatt lesen / Als Text lesen (im Quellenleser, neben der Suche)schaltet zwischen erkanntem Text und dem Blatt als Bild. Eine Quelle ohne Text öffnet gleich als Blatt
Zurück / Weiter (unter dem Blatt, je mit gezeichnetem Winkel zurueck bzw. weiter; seit 10.10.2026 statt „‹“ und „›“ aus der Schrift)ein Blatt weiter oder zurück; „Weiter ›" ist am letzten Blatt der Datei abgeschaltet
Berichtigen (in der Notiz unter dem Blatt)öffnet die Notiz als Textfeld; Speichern schreibt die Berichtigung, Abbrechen verwirft sie. Fehlt bei einer veralteten Notiz
wegtun (an der Zeile)zwei Klicks — „wegtun“, dann „ja, weg“. In den Papierkorb (Einstellungen → Deine Daten), dreißig Tage lang zurückzuholen
Stand weiterrücken (an der Zeile, Dokumente und Projekte)ein Klick auf das nächste Wort: offen → begonnen → in Arbeit → fertig → offen
zitieren (an der Zeile einer Quelle und oben im Quellenleser)zwei Klicks — „zitieren“, dann Angabe, BibTeX oder RIS; der Text geht in die Zwischenablage. Im Leser steht die Seite mit drin
Bis hier gelesen (oben im Quellenleser)merkt die Seite, auf der man steht. Daneben steht, was gemerkt ist, und ein Klick darauf setzt zurück
Verzeichnis aus dieser Liste (über der Quellentabelle)ein ganzes Literaturverzeichnis über das, was gerade dasteht — Angabe, BibTeX oder RIS
Aus Google Drive (über der Quellentabelle, seit 15.10.2026)öffnet Googles Auswahl; die gewählten Dateien (bis zu zwanzig) holt der Server und legt sie als Quellen ab. Google-Dokumente, -Tabellen und -Präsentationen kommen als PDF, Ordner sind nicht wählbar. Eine schon übernommene Datei noch einmal zu wählen holt ihre neue Fassung, wenn Google sie geändert hat; Titel und Modul bleiben. Danach eine Meldung „2 Dateien übernommen. 1 war schon aktuell.“, und die Liste lädt neu. Ohne Drive-Verbindung sagt die Meldung, dass sie unter Einstellungen › Zugangsdaten herzustellen ist; der Knopf steht trotzdem da, weil erst der Server weiß, ob verbunden ist
Ordner hochladen (über der Quellentabelle, seit 16.10.2026)öffnet die Ordnerwahl des Browsers. Was im gewählten Ordner liegt, prüft erst der Server; hochgeladen wird nur, was neu ist oder sich seit dem letzten Mal geändert hat, und versteckte Dateien sowie alles, was weder PDF noch Bild noch Text ist, bleiben liegen. Das Modul kommt aus den Ordnernamen — GoodNotes/Analysis II/Woche 3.pdf landet bei „Analysis II“, wenn das eindeutig ist; eine geänderte Datei ersetzt die alte, Titel und Modul bleiben. Während des Laufs sagt der Knopf, wo er steht („Lädt 3 von 12 …“), danach eine Meldung wie „4 Dateien übernommen. 8 waren schon aktuell.“, und die Liste lädt neu. Ist die Ablage voll, bricht das Hochladen ab, und die Meldung sagt es. Safari auf dem iPad kennt keine Ordnerwahl; dort öffnet derselbe Knopf die Wahl mehrerer Dateien, ohne Zuordnung
Aus Zotero (über der Quellentabelle, seit 16.10.2026)holt die ganze eigene Zotero-Bibliothek als Quellen, mit Autoren, Jahr, Verlag und Ort, ohne Dateien. Ein zweiter Druck holt Neues dazu und zieht Autoren, Jahr, Verlag und Ort nach; Titel, Art und Modul bleiben, wie sie hier stehen, und eine hier gelöschte Quelle bleibt gelöscht. Danach eine Meldung „3 Einträge übernommen. 1 war schon aktuell.“, und die Liste lädt neu. Ohne Zotero-Verbindung sagt die Meldung, wo sie herzustellen ist; der Knopf steht trotzdem da
Nach DOI oder ISBN (über der Quellentabelle, seit 16.10.2026)klappt ein Feld auf; „Nachschlagen“ holt zu einer DOI die Angaben von Crossref, zu einer ISBN die von Open Library, und öffnet das Anlegefach der Quellen damit vorbelegt — Titel, Autoren, Art, Jahr, Verlag, Zeitschrift, Band, Heft, Seiten. Gespeichert wird erst mit „Quelle anlegen“. Die DOI darf als Adresse oder mit doi: davor kommen, die ISBN mit Strichen. Kennt der Dienst die Kennung nicht, sagt es eine Meldung, und das Feld bleibt offen; Escape klappt es zu
Aus BibTeX-Datei (über der Quellentabelle, seit 16.10.2026)öffnet die Dateiwahl für eine .bib- oder CSL-JSON-Datei, wie Zotero, Citavi oder JabRef sie ausgeben, und legt ihre Einträge als Quellen an. Was schon da ist — gleiche DOI, ISBN oder gleicher Schlüssel samt Titel —, bleibt, wie es ist. Danach eine Meldung „12 Quellen angelegt. 3 waren schon da.“, und die Liste lädt neu
Verzeichnis (an der Zeile eines Dokuments)dasselbe über die Quellen genau dieser Arbeit; steht nur da, wo welche zugeordnet sind
Suche (in der Mitte der Kopfzeile, am Telefon unter dem Titel)filtert die Zeilen

Wegtun steht nur bei den Quellen, nicht bei Mitschriften, Dokumenten und Projekten: Deren Tabellen haben noch kein deleted_at. Ein Knopf, der dort nichts tut, wäre schlimmer als keiner.

Die Knöpfe einer Zeile stehen in einer Reihe und brechen nicht um (24.09.2026). Die angeheftete Aktionsspalte ist so schmal, wie ihr Inhalt es zulässt; ohne white-space: nowrap an der ganzen Reihe stand „wegtun" neben dem Chip „im Ordner nicht mehr da" als senkrechte Buchstabenspalte, und ohne min-width: max-content ragte es danach 14 px über das Blatt (materials/client/zeilenknopf.ts, gesehen in /material, Reiter Quellen).

Der Stand an der Zeile (21.09.2026)

Ein Dokument von „begonnen" auf „in Arbeit" zu setzen, hieß vorher: Zeile anklicken, Formular lesen, Auswahlfeld finden, speichern. Vier Schritte für die Angabe, die man öfter ändert als alle anderen zusammen — und deshalb änderte man sie gar nicht, und der Stand im Brett stand für nichts. Der Knopf sagt, wohin es geht, nicht wo man ist: wo man ist, steht eine Spalte weiter links als Kästchen. Hinter „fertig" geht es wieder auf „offen", sonst gäbe es keinen Rückweg.

Mitschriften und Quellen haben keinen — sie führen kein status-Feld.

Zeichen an Abschnitten, Ansichten und Stand (23.09.2026, N134)

Christian: „Das mit den Icons funktioniert übrigens super und ich will, dass das überall in Denotato so umgesetzt wird." Vier Stellen ziehen nach.

Die vier Abschnittsreiter tragen alle vier ein Zeichen und nicht nur manche (Guide §7.3 — alle oder keiner): Mitschriften den Stift (bearbeiten), Dokumente das Blatt (blatt), Quellen die Quelle (quelle). Projekte trägt seit E12 (30.09.2026) sein eigenes Zeichen (projekt, ein Ordner mit Reiter) und nicht die naheliegende Schublade — die bedeutet in Denotato schon zweimal etwas anderes (eine aufklappende Leiste in /documents, die Kartenkategorien in /study), und eine dritte Bedeutung wäre genau die Verwechslung, die die Zeichensprache vermeiden soll. Vom 23. bis zum 30.09.2026 stand hier die Raute (raute), das Zeichen der Registry für „was noch kein eigenes Zeichen hat" (Punkt 19 unten, behoben).

Die sechs Ansichten in ansichten.ts tragen seither ebenfalls eines: die drei Grundansichten die Tabelle (tabelle, seit N406; vorher uebersicht), das Brett „Nach Stand" die Tafel (tafel), „Angefangen" den Kometenschweif (frisch) — denselben wie der Werkstand „begonnen" weiter unten, seit einer Nachbesserung am 23.09.2026: Vorher stand hier laeuft, das Zeichen von in_arbeit, und „angefangen"/„begonnen" hatte damit zwei Formen im selben Bereich für denselben Begriff.

Der Stand selbst — an der Zeile, in der Pille, im Brett — bekommt shared/werkstand.tss neue WERKSTAND_ZEICHEN: offen trägt seit E12 (30.09.2026) den leeren Ring (offen) — dieselbe Scheibe wie laeuft und erledigt, nur ohne Innenzeichnung, „noch nichts davon geschehen" als Gegenstück zum Haken. Vom 23. bis zum 30.09.2026 blieb „offen" absichtlich ohne Zeichen (Festlegung E), statt eines zu leihen; davor stand hier fälschlich der Funke neu, der in moodle „neu hinzugekommen" und in study „Zusatztermin" heißt. Begonnen trägt den Kometenschweif (frisch), in Arbeit die Werkstatt-Scheibe (laeuft — ihr eigener Registry-Titel lautet „In Arbeit"), fertig den Haken in der Scheibe (erledigt) — vier verschiedene Formen für vier Stände. Der Knopf an der Zeile (Standknopf.tsx) benutzt dieselbe Zuordnung mit: Er zeigt das Zeichen des Standes, auf den er weiterrückt, nicht des Standes, an dem die Zeile gerade steht — dieselbe Regel wie beim Wort daneben; rückt er auf „offen" zurück, zeigt er den leeren Ring.

Die Fehlermeldung im Quellenleser — misslungene Suche, misslungenes Bild — trägt jetzt die Warnung (warnung) vor dem Satz; vorher sprach dort nur die rote Schrift, und Farbe allein ist nach Guide §17 nie die Auskunft. Nachgebessert am 23.09.2026: Die Schrift war trotz dieses Anspruchs weiter rot (color: status.danger stand noch an der Zeile, und das Zeichen erbte sie über currentColor) — jetzt trägt allein das Zeichen die Farbe, die Schrift bleibt beim gewöhnlichen Hinweiston.

In jedem Fall gilt dieselbe Form: Das Zeichen ist stumm (kein titel, aria-hidden) und trägt die Farbe, das Wort bleibt daneben stehen und bleibt neutral.

Zitieren (21.09.2026)

Zwei Formen, weil es zwei Ziele gibt. Die Angabe ist für Menschen: Forster, Otto: Analysis 1. Lehrbuch., mit URL: … (abgerufen am …), sobald eine Adresse hinterlegt ist. BibTeX ist für die Overleaf-Arbeit, die zwei Abschnitte weiter im selben Schirm steht — der Weg von der Quelle in die Arbeit ist damit ein Klick und kein Abtippen. Der Schlüssel ist Nachname plus erstes Titelwort (forster-analysis), klein und ohne Umlaute, weil alles jenseits von ASCII in einer .bib eine Fehlerquelle ohne Gegenwert ist; „Otto Forster" und „Forster, Otto" ergeben denselben.

RIS (seit dem 09.10.2026) ist für Literaturverwaltungen — Zotero, Citavi, EndNote und Mendeley lesen es ohne Umweg: TY - BOOK bis ER -, je Autor eine Zeile AU, dazu TI, PY, PB, CY, die Seite als SP und mit Adresse UR samt Abrufdatum Y2. Wie bei BibTeX steht nur, was dasteht; Zeilenende ist CR LF, wie RIS es verlangt.

Ohne HTTPS gibt es keine Zwischenablage im Browser. Dann sagt die Meldung das, statt still nichts zu tun.

Die volle Angabe und die Stelle (22.09.2026)

Dazugekommen sind Ort, Verlag, Jahr und — im Quellenleser — die Seite:

Forster, Otto: Analysis 1. Lehrbuch. Wiesbaden: Springer Spektrum, 2016. S. 42.
@book{forster-analysis,
  author    = {Forster, Otto},
  title     = {Analysis 1},
  year      = {2016},
  publisher = {Springer Spektrum},
  address   = {Wiesbaden},
  pages     = {42},
}

Der Doppelpunkt gehört zum Verlag und nicht zum Ort: ohne Verlag heißt es Wiesbaden, 2016. und nicht Wiesbaden: , 2016. Sieben Fälle, weil drei Felder einzeln fehlen dürfen — geprüft in zitat.test.ts.

Die Literaturangabe folgt der Sprache der Oberfläche. Auf Englisch steht Textbook., p. 42. und (accessed 21 September 2026) statt Lehrbuch., S. 42. und (abgerufen am 21.09.2026); die Zitierwörter liegen als kleine Tabelle je Sprache in zitat.ts, das Datum setzt Intl in der Ortskennung der Sprache. Der BibTeX-Eintrag ist in beiden Sprachen derselbe.

Die Seite ist ein Argument und kein Feld an der Quelle: Nur der Leser kennt sie, die Zeile in der Liste lässt sie weg. Genommen wird die erste geladene Seite und nicht die gewünschte — bei einer Quelle, deren Text erst auf Seite 3 anfängt, sind das zwei verschiedene Zahlen, und in einer Fußnote stünde die falsche für immer.

publisher und address stehen bei jedem BibTeX-Typ, nicht nur bei @book. Die klassischen Stile übergehen sie außerhalb von @book, biblatex nimmt sie fast überall — und eine Angabe wegzulassen, die jemand eingetippt hat, kostet mehr als ein übergangenes Feld.

Die Sammelmappe (22.09.2026)

Eine Hausarbeit hat ein Verzeichnis und keine Angabe. Der Knopf steht an zwei Orten, und beide Male nimmt er das, was an dieser Stelle gemeint ist: über der Quellentabelle was gerade dasteht (die Ansicht und die Suche haben schon ausgewählt — was man sieht, ist was man bekommt), an einer Arbeit deren Quellen.

Sortiert wird nach Nachname, dann Titel, mit localeCompare auf Deutsch; Quellen ohne Autor stehen am Ende und nicht am Anfang. Doppelte fallen heraus — zweimal dieselbe Quelle ist im Verzeichnis ein Fehler und keine Betonung. Gleiche BibTeX-Schlüssel werden eindeutig gemacht: der zweite bekommt ein b, der dritte ein c; der erste bleibt, wie er ist, damit ein \cite{forster-analysis} aus einer früher kopierten Einzelangabe weiter passt.

Der Lesestand (22.09.2026)

„Bis hier gelesen" merkt die Seite, auf der man steht. Der Stand geht nur nach oben: Wer auf Seite 180 ist und auf Seite 12 nachschlägt, hat nicht zwölf Seiten gelesen — ein Wert, den man nach jeder Rücksicht von Hand richten müsste, wird nicht gepflegt. Zurück geht es nur über den zweiten Knopf daneben, der ausdrücklich zurücksetzt.

Der Server entscheidet das, nicht der Schirm, und gibt zurück, was danach gilt — nicht, was geschickt wurde. Angezeigt wird genau dieser Rückgabewert; sonst behauptete der Knopf nach einem Blick zurück, man stünde auf Seite 12.

Scheitert die Suche oder das Merken des Lesestands, bleibt der jeweilige Knopf bedienbar (F28b, 23.09.2026): Der Quellenleser hält für „Suchen" und „Bis hier gelesen" zwei unabhängige Riegel über useBusyLock, die je für sich in einem try/finally freigeben, statt bis zum Neuladen gesperrt zu bleiben.

Tastatur und Bildschirmleser (Q10, 23.09.2026)

„zitieren" und „Verzeichnis" nehmen den Fokus mit. Beide verwandeln sich beim Klick in eine Wahl — „Angabe", „BibTeX", „RIS", „doch nicht". Der Fokus springt dabei auf den ersten Knopf der Wahl und nach dem Kopieren oder „doch nicht" zurück auf das Wort (useWahlfokus); vorher lag er danach auf der Seite selbst, und Tab begann oben von vorn. Steht er schon woanders, weil daneben geklickt wurde, bleibt er dort. Die Wahl ist eine benannte Gruppe („Zitierweise wählen", „Form des Verzeichnisses wählen").

Der Quellenleser nennt sein Suchfeld („In dieser Quelle suchen") und jeden Treffer („Zu Seite 12 springen"); die Trefferzahl und „Wird geladen …" werden angesagt, Fehler als Warnung, und nach „Bis hier gelesen" der Stand, den der Server zurückgibt. Die Pfeile an „Zurück" und „Weiter" sind Schmuck und werden nicht mitgelesen.

Die Blattansicht (BE26, 23.09.2026)

Wofür: Bens Mitschriften sind handgeschrieben, ein GoodNotes-Export trägt keine Textebene, und study.source_texts bleibt dafür leer. Der Leser zeigt dann nicht „kein Text", sondern das Blatt selbst — gerendert auf dem Server mit pdftoppm, ohne Texterkennung und ohne fremden Dienst (entschieden am 17.09.2026, zu Ende gebaut nach N173).

Was man sieht: über dem Blatt „Seite 3 von 41", darunter „Zurück“ mit Winkel, dieselbe Angabe und „Weiter“ mit Winkel. Die Blattzahl kommt mit jedem Seitenbild (blaetter, gezählt von pdfinfo); sie ist nicht totalPages, das nur Seiten mit Text zählt und bei Handschrift 0 ist. „Weiter“ endet am letzten Blatt. Nennt der Server keine Zahl, steht nur „Seite 3", und „Weiter ›" bleibt anklickbar — die Grenze meldet dann der Server.

Scheitert ein Blatt, steht die Meldung als Warnung über der Knopfreihe; die Blattzahl bleibt dabei stehen. Nach einer Seite hinter der letzten zu fragen, beantwortet der Server mit „Seite 42 gibt es in dieser Datei nicht — sie hat 41 Blätter."

Voraussetzung: poppler-utils auf dem Server (betrieb/hetzner/10-grundausstattung.sh). Ohne das Paket gibt es kein Blatt aus einem PDF, und verify:seitenbild ist rot. Bilddateien (PNG, JPEG, WebP, GIF) gehen ohne Poppler durch; sie haben genau ein Blatt.

Gesucht werden kann in einer Handschrift seit dem 24.09.2026 — nicht im Blatt selbst, sondern in seiner Notiz (nächster Abschnitt). Solange das Modell ein Blatt nicht gelesen hat, ist es lesbar, aber nicht auffindbar.

Die Notiz zum Blatt (BE26 B, 24.09.2026, N192, N194)

Wofür: Ein Bild lässt sich ansehen, aber nicht durchsuchen. Das Modell liest am MCP ein Blatt (material_seite_bild) und schreibt, was darauf steht, als Notiz zurück (material_seite_notieren) — abgeschrieben, nicht zusammengefasst: Formeln in LaTeX, eine Skizze als kurzer Satz in eckigen Klammern, Unleserliches als [unleserlich]. Texterkennung auf dem Server gibt es dafür nicht; gelesen wird am MCP, auf demselben Weg, auf dem das Modell schon das Blatt bekommt.

Was man sieht: ein Kasten unter dem Blatt, nur in der Blattansicht. Oben die Zeile „Notizen zu 3 von 41 Blättern" — mit „, davon 1 veraltet", wenn es veraltete gibt, und ohne „von 41", wenn sich die Blätter nicht zählen ließen. Darunter für das Blatt, auf dem man steht:

LageWas dasteht
keine Notiz„Zu diesem Blatt gibt es noch keine Notiz. Das Modell schreibt sie, wenn es das Blatt liest."
Notiz„Notiz · vom Modell gelesen" oder „Notiz · von Hand berichtigt", der Text, und Berichtigen
veraltetdieselbe Kopfzeile, darunter als Warnung „Das Blatt hat sich geändert, seit die Notiz geschrieben wurde. Sie wird neu gelesen; berichtigen lässt sie sich danach." — und kein Berichtigen

Lassen sich die Notizen nicht laden, fehlt der Kasten ganz; das Blatt bleibt stehen.

Berichtigen macht aus dem Text ein Feld, darüber: „Was auf dem Blatt steht — das Modell lernt aus der Berichtigung und darf die Notiz später neu schreiben." Speichern schließt das Feld und zeigt die berichtigte Notiz; ein leeres Feld meldet „Eine Notiz braucht Text." als Toast, weil die Fehlerzeile des Lesers in der Blattansicht nicht zu sehen ist. Bis zum 08.10.2026 bestätigte ein Toast „Die Notiz ist berichtigt." (2026-10-08-keine-erfolgsmeldungen).

Wer schreibt (N194). Das Modell schreibt, der Mensch berichtigt, und danach darf das Modell wieder überschreiben. Die letzte Berichtigung je Blatt bleibt verdeckt stehen — was das Modell gelesen hatte und was daraus wurde. Der Leser zeigt sie nicht; das Modell bekommt sie mit jeder Notiz, damit es aus ihr lernt.

Wann eine Notiz veraltet (N194). Jede Notiz trägt den Abdruck ihres Blattes und die Datei, gegen die sie bestätigt wurde. Veraltet ist sie, sobald die Quelle eine andere Datei trägt — gerechnet, nicht gespeichert. Übernimmt der Ordnerabgleich eine geänderte Datei, prüft er Blatt für Blatt: Wo der Abdruck gleich ist, gilt die Notiz für die neue Datei weiter, sonst bleibt sie veraltet, bis das Modell das Blatt neu liest. Wer die Datei über SOURCE_SAVE tauscht oder Moodle sie neu liefert, bekommt alle Notizen der Quelle veraltet — der Blattvergleich kostet je Blatt ein Rendern und läuft deshalb nur im Abgleich, nicht in einer Anfrage, auf die jemand wartet.

Die Suche findet seit dem 24.09.2026 Text und Notizen. Ein Treffer aus einer Notiz trägt vorn „Notiz ·"; ein Klick springt wie jeder andere zum Blatt.

Nachweis: verify:seitennotizen — Schreiben, Absagen, fremdes Konto, Berichtigung, Suche und den Dateiwechsel Blatt für Blatt. Er braucht Poppler wie verify:seitenbild und ist ohne es rot. Die Wanderung 106 muss auf dem Server gelaufen sein, bevor ausgeliefert wird: Ohne study.source_page_notes scheitern die Quellenliste und die Suche. Gebaut war sie als 103; beim Einspielen trug beta diese Nummer schon (N186), und sie ist ausgewichen.

Woher die Daten kommen

NOTES/NOTE_SAVE · MATERIAL_DOCUMENTS/MATERIAL_DOCUMENT_SAVE · PROJECTS/PROJECT_SAVE · SOURCES/SOURCE_SAVE und die Leseendpunkte SOURCE_SEARCH und SOURCE_TEXT für den Quellenleser, dazu SOURCE_PAGE_IMAGE für die Blattansicht — ein Blatt je Abruf, mit blaetter. Am MCP heißt derselbe Weg material_seite_bild.

Die Notizen (BE26 B, 24.09.2026) gehen über drei Endpunkte: SOURCE_PAGE_NOTE schreibt eine (am MCP material_seite_notieren), SOURCE_PAGE_NOTE_CORRECT berichtigt eine — nur der Leser, am MCP gibt es dafür kein Werkzeug —, und SOURCE_PAGE_NOTES liest die einer Quelle mit ihrer Blattzahl, oder ohne Quelle die veralteten aller (am MCP material_notizen, die Arbeitsliste des Modells). Die Tabelle ist study.source_page_notes (Wanderung 106). SOURCES liefert dazu note_count und stale_note_count; SOURCE_SEARCH nimmt worin (text, notizen, ohne Angabe beides) und nennt je Treffer die herkunft. Die gemeinsamen Regeln — was eine Notiz ist, wie die Zeile zählt, die Sätze — stehen in shared/seitennotizen.ts.

MATERIAL_DOCUMENTS liefert zu jedem Dokument files — je Anhang id, name und bytes. file_count bleibt daneben stehen, weil eine Zahl nichts kostet und Brett und Ansicht sie schon benutzen. Die Byte kommen in einem json_build_object heraus und nicht als Spalte: pg gibt eine Bigint-Spalte als Zeichenkette zurück, und aus '42' würde am Schirm kein „42 B", sondern ein Strich.

SOURCES liefert external_url, und SOURCE_SAVE nimmt es entgegen. Dabei gilt: nicht mitgeschickt heißt unverändert, nur ein ausdrückliches null löscht. Der Grund steht in den Moodle-Quellen — die tragen eine Adresse, die ein Formular, das das Feld nicht kennt, sonst beim nächsten Speichern stillschweigend wegwürfe.

SOURCES liefert seit dem 22.09.2026 auch published_year, publisher, place und read_page (Migrationen 86 und 87). Für die ersten drei gilt die gewöhnliche Regel und nicht die von external_url: Was nicht mitkommt, wird geleert — sie setzt nur der Quellenbogen, und der schickt immer alle drei. Ein Jahr außerhalb von 1000 bis 2999 weist SOURCE_SAVE ab; dieselbe Schranke steht in der Tabelle, im Endpunkt und im Formular, und im Formular fällt dabei nur das Jahr weg statt der ganzen Eingabe.

read_page geht durch einen eigenen Endpunkt — /api/materials/sources/read-page. Nicht durch SOURCE_SAVE: Der Leser kennt die Seite und sonst nichts von der Quelle, und jeder Klick auf „Bis hier gelesen" überschriebe sonst Titel, Autor und Verlag mit Leere. Der Pfad steht vorläufig in shared/lesestand.ts und nicht in endpointPaths.ts — dieselbe Zwischenlösung wie SEITENBILD_PFAD seit dem 17.09.2026, und beide ziehen im selben Zug um.

MATERIAL_DOCUMENTS liefert source_ids neben sources — dieselben Quellen als Kennungen, in derselben Reihenfolge. Daraus baut die Zeile ihre Sammelmappe; über die Titel zu suchen ginge auch, bis zwei Quellen denselben tragen.

Das Zitat entsteht im Browser, nicht am Server: shared/zitat.ts ist reine Logik ohne React und ohne Datenbank (Grundsatz 59) und wird von zitat.test.ts geprüft, bevor ein Schirm sie zu sehen bekommt. Dasselbe gilt für shared/lesestand.ts: Die Rechnung „Seite 42 von 300" steht an drei Stellen — Leser, Tabelle, Server —, und dreimal dieselben vier Zeilen wären dreimal die Gelegenheit, sie unterschiedlich falsch zu machen.

Der Ordner-Abgleich (BE25, N247) ist kein Endpunkt, sondern ein Zeitgeber: denotato-ordner.timer ruft alle dreißig Minuten das Skript ordner (server/runOrdnerabgleich.ts), das einen Ordner auf dem Server liest — gefüllt von einem Spiegel, rclone — und study.sources schreibt. Die Kennung einer solchen Quelle steht als ordner:<pfad> in external_url, und SOURCE_SAVE lässt sie dort stehen, auch wenn ein anderer Wert kommt; sonst legte der nächste Lauf dieselbe Datei als zweite Quelle an. Ob eine Datei geändert ist, misst der Abgleich an folder_fetched_at, nicht an updated_at; SOURCES liefert dazu folder_missing_since für den Chip (Wanderung 133). Die Regeln ohne Platte stehen in shared/ordnerabgleich.ts, die Umgebungszeilen in docs/kontext/umgebung.md, der Nachweis heißt verify:ordnerabgleich.

Google Drive (KN-261015-google-drive) sind zwei Endpunkte: SOURCE_DRIVE_PICKER gibt dem Schirm ein Zugriffsmerkmal mit dem Bereich drive.file (eine Stunde gültig), den Browser-Schlüssel und die Projektnummer für den Picker; SOURCE_DRIVE_IMPORT nimmt die gewählten Kennungen und holt die Dateien selbst bei Google (server/drive.ts), legt sie in die Ablage und schreibt study.sources mit der Kennung drive:<id> in external_url — SOURCE_SAVE lässt sie stehen wie die Ordnerkennung. Der Inhalt geht nie durch den Browser. Ob eine Datei neu zu holen ist, misst der Server wie der Ordner-Abgleich an folder_fetched_at gegen modifiedTime bei Google. Das Auffrischungsmerkmal liegt verschlüsselt in auth.service_credentials unter dem Dienst google-drive, eigen und nicht das des Kalenders: Eine Verbindung zu trennen nimmt so nur ihr Merkmal. MCP: material_drive_uebernehmen. Ordnerwurf (BE25) sind zwei Endpunkte. SOURCE_FOLDER_PLAN nimmt Pfad, Änderungsdatum und Größe von höchstens fünfhundert Dateien und sagt je Datei neu, geändert, unverändert oder übersprungen (mit Grund); er schreibt nichts. Danach lädt der Schirm die neuen und geänderten Dateien über die Dateiablage hoch, und SOURCE_FOLDER_IMPORT nimmt höchstens zwanzig davon auf: Er prüft, dass die Datei dem Konto gehört und an keiner anderen Quelle hängt, legt die Quelle mit der Kennung wurf:<pfad> an oder tauscht bei einer geänderten die Datei, setzt „geholt am“ und zieht den Seitentext. Die Kennung ist eine eigene, weil der Timer des Ordner-Abgleichs jede ordner:-Quelle außerhalb seiner Wurzel als fehlend vermerken würde; SOURCE_SAVE lässt sie stehen wie die übrigen. Die Regeln ohne Datenbank stehen in shared/ordnerwurf.ts. MCP: material_ordner_planen, material_ordner_aufnehmen. Zotero (KN-261015-zotero) ist ein Endpunkt: SOURCE_ZOTERO_IMPORT liest mit dem API-Schlüssel des Kontos (auth.service_credentials, Dienst zotero) die Einträge oberster Ebene der eigenen Bibliothek, hundert je Seite, höchstens zweitausend, und achtet auf Backoff und Retry-After (server/zotero.ts). Notizen und Anhänge, die allein stehen, bleiben in Zotero. Die Kennung zotero:<Schlüssel> in external_url lässt SOURCE_SAVE stehen wie die aus Ordner und Drive. Wie ein Eintrag auf die Felder einer Quelle fällt, steht ohne Netz in shared/zotero.ts; seit der Literaturverwaltung (NB-261011-literaturverwaltung) mit Zeitschrift oder Buch, Band, Heft, Seiten, Herausgebern, Auflage, DOI und der ersten ISBN, die eine zweite Übernahme nachzieht wie Autoren und Jahr. MCP: material_zotero_uebernehmen. Einfuhr aus einer Datei (NB-261011-literaturverwaltung) ist SOURCE_BIB_IMPORT (server/bibeinfuhr.ts): Der Browser liest die Datei und schickt ihren Text, höchstens zwei Millionen Zeichen und zweitausend Einträge. Beginnt er mit [ oder {, liest shared/bibeinfuhr.ts ihn als CSL-JSON, sonst als BibTeX — mit @string-Kürzeln, #-Verkettung, Akzentbefehlen wie {\"u} und Personen getrennt an and außerhalb von Klammern. Dubletten sind lebende Quellen mit derselben DOI, derselben ISBN oder demselben Zitierschlüssel samt Titel; sie bleiben unverändert. Der Schlüssel aus der Datei wird übernommen, wenn er frei ist, sonst bekommt er ein b, c … angehängt. Alles in einer Transaktion. MCP: material_einfuhr. Nachschlagen (NB-261011-literaturverwaltung) ist SOURCE_LOOKUP (server/nachschlagen.ts): Der Server bringt die Kennung mit kennungAus in ihre Grundform und fragt api.crossref.org/works/<doi> oder openlibrary.org/api/books?bibkeys=ISBN:<isbn>, acht Sekunden lang, ohne Weiterleitung. Hinaus geht allein die Kennung, kein Konto und keine Kontaktadresse. Wie die Antwort auf die Felder fällt, steht ohne Netz in ausCrossref und ausOpenLibrary (shared/literatur.ts). Eine ungültige Kennung ist 400 source_lookup_invalid_error, eine unbekannte 404 source_lookup_not_found_error, ein Dienst, der nicht antwortet, connection_unreachable. MCP: material_nachschlagen. Im LaTeX-Text (NB-261011-literaturverwaltung) kommen die Quellen über zwei Anschlüsse an: materialklient.zitierschluessel gibt dem Editor die Schlüssel für \cite{, und bibdatei (server/bibdatei.ts) legt dem Satz die Quellen als denotato.bib hin — sammelmappe im Format BibTeX, nach vergibFehlendeSchluessel, mit dem Tor des Bereichs. Gespeichert wird die Datei nirgends.

„Kein Treffer" sagt, woran es liegen könnte (21.09.2026)

Dort stand „Keine Fundstelle in dieser Quelle." Der häufigste Grund für null Treffer in einem gescannten Skript ist aber nicht, dass das Wort fehlt, sondern dass es in der Texterkennung anders dasteht. Jetzt nennt der Satz das — und rät zu einem kürzeren Wort oder einem Wortteil. Seit dem 24.09.2026 sagt er auch, dass in den Notizen zu den Blättern gesucht wurde: Bei einer Mitschrift ohne Notizen heißt kein Treffer nur, dass das Modell noch nicht gelesen hat.

Aufgehoben wird unter materials.mitschriften, materials.unterlagen, materials.quellen und materials.projekte (G03, 21.09.2026, Rahmen 7). Die Module nicht: Sie kommen über den Anschluss aus dem Studium und gehören dort hin. Zwei Bereiche, die dieselbe Liste aufheben, könnten einander widersprechen — und der Widerspruch fiele erst bei einem Ausfall auf.

Vorschläge aus neuem Material (KI-261007-luecken-vorschlaege)

Liest der Ordnerabgleich den Text einer neuen oder geänderten Datei, die einem Modul gehört, fragt materials/server/materialkarten.ts nach Vorschlagskarten — dieselben Regeln wie bei Moodle (docs/seiten/moodle.md, „Vorschläge aus Moodle“): je Aufgabe eines Übungsblatts eine Karte „Aufgabe anlegen?“, aus dem Skript eines Moduls ohne Themen Karten „Thema anlegen?“. Modul, Art und Titel liest die Datei an der Quelle selbst; eine Zuordnung von Hand gilt vor dem Ordnernamen. Eine Datei ohne Textebene bringt keine Karte. Der Schalter heißt „Wenn in deinem Materialordner ein Übungsblatt oder Skript neu ist“ (Herkunft material).

Lernkarten aus einem Skript (KI-261007-lernen-vorschlaege). Ein Skript mit Definitionen, Sätzen oder Formeln, die im Fach des Moduls noch keine Karte haben, bringt dazu die Karte „N Lernkarten anlegen“ mit Vorschau (Regeln in @shared/handlers/study/lernkartenentwuerfe.ts). Eine weggeklickte Karte kommt erst mit einer neuen Fassung der Datei wieder.

Material ohne Modul bringt die Karte „Material zuordnen“: Nennen Ordner oder Titel genau ein Modul, schlägt die Regel es vor, sonst das Modell aus der nummerierten Modulliste; ohne beides entsteht keine Karte. Der Klick ordnet über POST /api/materials/sources/assign (SOURCE_ASSIGN, MCP material_zuordnen) zu und prüft danach die Datei noch einmal auf Aufgaben-, Themen- und Lernkartenkarten. „Zurücknehmen“ setzt das Modul wieder leer. Der Schirm selbst ruft den Weg nicht — sein Quellenformular legt nur an —; der Weg steht darum in NUR_SERVER von verify:arch. Nachweis: verify:materials; jsdom Kartenstapel.materialzuordnung.test.tsx.

Die Eule: „Eine Quelle einordnen“ (KI21, N372)

Die offene Quelle unter „Quellen“ (/material?a=sources&von=<id>) ist der Gegenstand der Eule (client/knoten.ts, gegenstandsleser). Der Leser gibt nur eine eigene, nicht gelöschte Quelle mit: ihren Kopf, höchstens 8 000 Zeichen ihres Textes und bis zu zehn Blattnotizen. Jede andere Kennung wird abgewiesen wie ein unbekanntes Angebot.

Was fehlt

  1. Kein Hochladen — gebaut am 17.09.2026. Das Quellenformular hat ein Feld „Datei"; study.sources.file_id und saveSource({fileId}) gab es längst, nur das Formular hat nie danach gefragt. Der Baustein ist der generische Dateifeld im RecordComposer — damit kann jedes Formular in Denotato eine Datei annehmen, nicht nur dieses. Was noch fehlt: Anhänge an einer Mitschrift und an einem Dokument (study.document_files nimmt fileIds bereits entgegen), und eine Vorschau der abgelegten Datei in der Tabelle.
  2. Kein Löschen in irgendeinem der vier Abschnitte. — für die Quellen erledigt am 19.09.2026 (Q01): „wegtun“ an der Quellenzeile legt sie in den Papierkorb. Was noch fehlt: Mitschriften, Dokumente und Projekte lassen sich weiter nicht löschen.
  3. Keine Verbindung zu Moodle-Dateien — „Übernehmen" auf /moodle schreibt sie hierher: moodle/server/material.ts legt je Datei eine Zeile in study.sources an, hängt die heruntergeladene Datei über file_id daran und legt den Seitentext in study.source_texts ab. Was fehlt, ist die Sicht von hier aus: /material kennt das Wort Moodle nicht. Eine übernommene Quelle steht zwischen den eigenen, ohne dass ihre Herkunft dabeistünde, und von hier aus lässt sich nichts nachholen — der Weg beginnt immer drüben.
  4. Der Quellenleser kann nicht anstreichen. Lesen ja, markieren nein.
  5. Keine Karte aus einer Quelle. Eine Stelle markieren → Karteikarte wäre der kürzeste Weg vom Lesen zum Lernen.
  6. Kein Seitenfortschritt — gebaut am 22.09.2026. read_page an der Quelle (Migration 87), „Bis hier gelesen" im Quellenleser, die Spalte „Gelesen" als Balken und die Ansicht „Angefangen", die nur zeigt, was offen ist. Der Stand geht nur nach oben; zurück setzt ein eigener Knopf. Was noch fehlt: Es gibt einen Stand je Quelle und keinen Verlauf — wann er gesetzt wurde, steht nirgends, also lässt sich „diese Woche 80 Seiten" nicht sagen. Und an einem Dokument gibt es ihn gar nicht: Eine Arbeit mit fünf Quellen zeigt nicht, wie weit die Lektüre dafür gediehen ist, obwohl source_ids seit heute danebensteht.
  7. Kein Zitat-Format — gebaut am 21.09.2026, vervollständigt am 22.09.2026. „zitieren" an der Quellenzeile und oben im Quellenleser, zwei Formen (Angabe und BibTeX), Text in die Zwischenablage; dazu die Felder Adresse, Jahr, Verlag und Ort (Migration 86), ohne die eine Website-Angabe der halbe Satz und ein @book ohne year blieb. Was noch fehlt: Auflage, Herausgeber, Reihe, ISBN und DOI — die fünf Felder, an denen eine Angabe im Zweifel doch noch scheitert. Und zwei Formen sind nicht dasselbe wie ein Stil: APA, Chicago und Harvard unterscheiden sich in Klammern und Reihenfolge, und welcher gilt, steht am Lehrstuhl und nicht in Denotato. Verlag und Ort stehen außerdem in keiner Tabellenspalte — sichtbar werden sie erst im Formular und im Zitat.
  8. Keine Verknüpfung Mitschrift → Thema. Modul ja, Thema nein.
  9. Kein Stand-Wechsel an der Zeile — gebaut am 21.09.2026. Ein Knopf an der Zeile von Dokumenten und Projekten rückt den Stand auf den nächsten weiter und hinter „fertig" wieder auf „offen". Was noch fehlt: Im Brett (Ansicht „Nach Stand") gibt es ihn nicht — dort wäre Ziehen die richtige Geste, und die hat DataBoard noch nicht.
  10. Kein Datum-Filter. „Was habe ich diese Woche mitgeschrieben" geht nicht.
  11. Projekte wissen nichts vom Code. Keine Commit-Zahl, kein letzter Stand — obwohl die GitHub-Adresse da ist.
  12. Keine Dateigrößen — gebaut am 21.09.2026. Die Spalte „Dateien" nennt Namen und Größe statt einer Zahl. Was noch fehlt: die Vorschau — und überhaupt der Klick: Die Kästchen sind Kästchen und führen nirgendwohin, obwohl FILES_EXPORT die Datei längst herausgibt.
  13. Die Module fallen nicht zurück — sie kommen über den Anschluss aus dem Studium. Wer /material bei einem Ausfall aufmacht, sieht seine vier Listen und daneben eine Modulauswahl ohne Einträge (G03, Rahmen 7).
  14. Das Zitat kennt die Seite nicht — gebaut am 22.09.2026. Im Quellenleser trägt „zitieren" die Seite mit, auf der man steht; in der Liste bleibt die Angabe die, die sie vorher war. Was noch fehlt: Es ist immer die erste angezeigte Seite und nie eine Spanne — wer über einen Seitenumbruch hinweg liest, bekommt „S. 41" für etwas, das auf 41–42 steht. Und eine markierte Stelle kann man nicht zitieren, weil man (Punkt 4) nichts markieren kann.
  15. Keine Sammelmappe — gebaut am 22.09.2026. Ein Knopf über der Quellentabelle gibt das Verzeichnis dessen aus, was gerade dasteht, einer an der Dokumentzeile das der Quellen dieser Arbeit — in beiden Formen, sortiert nach Nachname, ohne Doppelte, mit eindeutigen BibTeX-Schlüsseln. Was noch fehlt: Die Mappe über der Tabelle folgt der Ansicht, nicht dem, was die Filterleiste und die Handsortierung daraus gemacht haben — wer im Schirm filtert, bekommt trotzdem die Auswahl der Ansicht. Ein Verzeichnis für eine Auswahl von Hand (Häkchen an den Zeilen) gibt es auch nicht, und die Mappe landet nur in der Zwischenablage: keine .bib-Datei, kein Block in einem Dokument.
  16. Der Stand rückt nur vorwärts. Wer von „offen" direkt auf „fertig" will, klickt dreimal. Ein zweiter Knopf wäre eine Zumutung in einer Tabellenzeile; ein langer Druck oder die Tastatur wären es nicht.
  17. Die Quellenliste kennt keinen Verlauf. Ein Lesestand rückt nur vorwärts, und was gestern dastand, ist weg. „Wie schnell lese ich das?" lässt sich daraus nicht beantworten — dafür bräuchte jede Änderung eine eigene Zeile, und das ist ein Datenfeld, keine Anzeige.
  18. Die Quellenliste kennt kein „zuletzt gelesen". Sortiert wird nach Titel oder nach Anteil; „worin war ich gestern?" beantwortet beides nicht, weil an read_page kein Zeitpunkt hängt.
  19. Kein eigenes Zeichen für „Projekt" in der Registry. — behoben am 30.09.2026 (E12): Die Registry hat projekt, einen Ordner mit Reiter, und der Abschnitt trägt ihn. Die spitzen Klammern des Wunsches blieben weg: Sie hätten „Code" gesagt, und ein Projekt in /material ist jede Arbeit eines Vorhabens. Der alte Befund: Der Abschnitt trug seit dem 23.09.2026 die Raute (raute) — das Zeichen der Registry für „hier hat noch niemand gewählt", und nicht ein Zeichen, das „Projekt" eigens meint.
  20. Kein Zeichen für „offen" in der Registry. — behoben am 30.09.2026 (E12): Die Registry hat den leeren Ring offen, und der Stand „offen" (unbekannt) trägt ihn an Zeile, Pille, Brett und Standknopf. Der alte Befund: Festlegung E ließ den Stand seit dem 23.09.2026 absichtlich ohne Zeichen, „bis die Registry einen leeren Ring hat" — ein Verweis auf etwas, das es noch nicht gab.
  21. Notizen zu Blättern, die es nicht mehr gibt, bleiben stehen. Hat eine neue Datei weniger Blätter, sind die Notizen hinter dem letzten veraltet und bleiben es — neu lesen kann sie das Modell nicht, weil es das Blatt nicht mehr gibt. Sie stören nicht, zählen aber in „davon N veraltet" mit. Aufräumen müsste der Abgleich, und das wäre ein Löschen ohne Rückweg.
  22. Der Blattvergleich läuft nur im Ordnerabgleich — eine Datei, die im Quellenbogen getauscht oder von Moodle neu geliefert wird, macht alle Notizen der Quelle veraltet, auch die zu unveränderten Blättern. Richtig wäre derselbe Vergleich im Hintergrund nach jedem Tausch; dafür fehlt Denotato bisher ein Ort für Arbeit, auf die niemand wartet.
  23. Keine Zeile lässt sich nachträglich ändern. Das Anlegefach legt nur an, und DataView bekommt keinen Editor; ein Tippfehler im Titel, ein vergessenes Modul oder eine neue Overleaf-Adresse bleiben, wie sie sind. Nur der Stand an Dokumenten und Projekten rückt per Knopf weiter. Die Server-Wege nehmen eine Kennung längst entgegen.
  24. Art und Technik stehen als Schlüssel in der Tabelle. Die Spalten „Art" und „Technik" in ansichten.ts tragen keine woerter, also steht dort „hausarbeit", „lehrbuch" oder „c_cpp" statt des Wortes, das das Formular anbietet.
  25. Overleaf- und GitHub-Adresse führen nirgendwohin. Die Overleaf-Adresse steht in keiner Spalte, die GitHub-Adresse als bloßer Text; einen Knopf, der sie öffnet, gibt es nicht.
  26. Eine von Hand hochgeladene Datei bekommt keinen Text. saveSource hängt die Datei an, schreibt aber nichts nach study.source_texts — das tun nur der Moodle-Abgleich und der Ordnerabgleich. Eine PDF mit Textebene öffnet dann als Blatt, und die Volltextsuche findet in ihr nichts, bis das Modell die Blätter als Notizen gelesen hat.