Die Randseiten — /, /stil, /stil/bewegung, /stil/richtung, Rechtstexte, Bereichsseiten, 404
Hinweis: Code:
frontend/src/components/screens/MainScreen.tsx,components/screens/startseite/,components/stil/,components/pages/,hooks/useSeitentitel.ts.
Wofür
Die Seiten, die zu keinem Bereich gehören: der Einstieg ohne Angabe, der öffentliche Stil-Guide, die Rechtstexte und die Seite für einen Weg, den es nicht gibt. Sie haben keinen Eintrag im Register, keine Fähigkeit und keinen Raum in der Sternwarte — und drei von ihnen sind ohne Anmeldung erreichbar, was sie zur einzigen Stelle macht, an der ein Fremder Denotato sieht.
Weg und Rahmen
| Routen | / (MainScreen), /stil (Stilguide), /stil/bewegung (Musterbogen), /stil/richtung (Richtungsbogen, Datei components/stil/richtung/Musterbogen.tsx), /imprint, /privacy, /terms (Impressum, Datenschutz, Nutzungsbedingungen aus components/pages/Rechtstexte.tsx), /features/:area (Bereichsseite, vor /:raum) und * (NichtGefunden) — je ein <Route> in packages/frontend/src/App.tsx, * als letzte |
| Anmeldung | keine nötig. Keine der Routen liegt unter der Sitzungswache; nur / unterscheidet, wer fragt: Fremde sehen die Startseite „Verwandlung“ (components/screens/startseite/), Angemeldete werden weitergeleitet |
| Rahmen | keiner aus 00-rahmen.md. Rechtstexte und 404 sind eine Infoseite (components/pages/); die Startseite, /stil, /stil/bewegung und /stil/richtung zeichnen sich selbst, die Startseite mit eigenem Rollbehälter. Die Wegstücke von /, /stil, /imprint, /privacy und /terms tragen nie einen Raumpräfix (traegtRaum in config/frontendPaths.ts) |
| Laden | MainScreen und NichtGefunden sind feste Importe; MainScreen holt die Startseite per React.lazy nur für Fremde nach; Stilguide, Musterbogen, Richtungsbogen und die drei Rechtstexte laden per React.lazy nach (B69) |
| Merkmal | keines — kein Eintrag im Register, keine Fähigkeit, kein Zimmer |
| Endpunkte | siehe „Woher die Daten kommen“ unten |
Was man sieht
/ — MainScreen
Der Einstieg ohne Angabe. Angemeldete führt er immer auf „Heute“ (seit dem 09.10.2026, Entscheidung ../kontext/entscheidungen/2026-10-09-neue-navigation-immer.md): auf die Übersicht ohne festen Tag (/dashboard, nicht ?tag=heute), damit abends nach N316 der nächste Tag erscheint; eine Wunschadresse geht vor. Vom 07. bis 09.10.2026 galt das nur mit dem Schalter „Neue Navigation“; davor und ohne ihn zeigte die Wurzel, was in start.seite stand (startweg(), entfernt). Die Wahl der Startseite ist mit dem Schalter entfallen; gespeicherte Werte bleiben und werden nicht gelesen. Der Rahmen ist in 00-rahmen.md, „Die neue Navigation gilt immer“, beschrieben.
Seit dem 24.09.2026 führt auch die Anmeldung hierher (F53), wenn kein gemerkter Weg vorliegt — vorher sprang sie an der Wurzel vorbei auf die Übersicht, und die gewählte Startseite wirkte erst nach einem Klick auf das Logo. Die Wurzel wartet, bis die Einstellungen des Kontos gefragt und die Rechte geladen sind. Eingeführt wurde das für start.seite; es bleibt, damit die Übersicht nicht früher steht als bisher. Solange gewartet wird, bleibt die Fläche leer — es geht um einen Bruchteil einer Sekunde, und ein Ladezeichen, das aufblitzt und verschwindet, wäre unruhiger als nichts.
Fremden zeigt er seit dem 11.10.2026 die Verwandlung (D-261008-startseite-funktioniert, components/screens/startseite/, Entwurf docs/gestaltung/musterboegen/startseite-showcase-verwandlung.html, fünfte Fassung, von Christian am selben Tag zum Einbau gewählt; Setzung 2026-10-10-startseite-showcase). Die Seite beschreibt Denotato nicht, sie führt es vor: Eine Bühne steht still im Bild, während die Seite darunter rollt, und in vierzig Takten wird aus einem Gruß ein Block, aus Blöcken ein Sternbild, aus einem Stern eine Karteikarte und so weiter bis zum Knopf am Ende. Links steht der Satz des Kapitels, so allgemein, dass jeder an sein eigenes Fach denken kann; rechts steht der Beispielfall (Ada, ihre Fächer, „Oma anrufen“), der von Kapitel zu Kapitel weiterwandert. Das war Christians Rückmeldung zur dritten Fassung: Der Beispielfall gehört nur nach rechts, links steht der Nutzen. MainScreen lädt die Seite erst, wenn jemand ohne Sitzung sie braucht; wer angemeldet ist, lädt ihre Bühne nie.
| Kopf | die Marke, die an den Anfang zurückrollt, daneben „Anmelden“ und „Konto anlegen“ als leise Knöpfe in der Bedienschrift; der einzige gefüllte Aufruf der Seite ist der Stein am Ende. Für Tastatur und Vorleser steht davor der Sprungverweis „Zum Ausprobieren springen“, der erst mit dem Fokus sichtbar wird |
| Satzspalte | neun Überschriften, je Kapitel eine, das betonte Wort kursiv in der Textfarbe; die Überschrift trägt den Satz als Namen, die Zeichen darunter sind stumm |
| Feld | die Bühne mit dem Beispielfall, für Vorleser stumm, weil sie Bild ist und kein Inhalt; bedienbar ist darin nur der Stein |
| Himmel | hinter allem die Glut der vier Tageszeiten von Morgen bis Nacht, Sonne und Mond und drei Sternebenen, die beim Rollen gegeneinander ziehen. Hinter Marke, Kopfknöpfen, der stehenden Überschrift, den Tagen im Band der Wiederholungen und dem Wort am Bogen, den Köpfen des Wochenrasters und dem Satz unter dem Kranz bleibt das Sternfeld mit weichem Rand leer; nachts saßen die Sterne sonst wie Akzente auf den Buchstaben (Sichtprüfung Runde 7 und 9, Guide §4.4) |
| Fußzeile | „Den Stil-Guide ohne Konto ansehen“, die Rechtszeile (Impressum, Datenschutz, Nutzungsbedingungen) und der Satz „Namen, Fächer und Zahlen in den Bildern sind Beispiele.“ |
Aufbau in Kapiteln
Jedes Kapitel ist ein eigener Ordner unter startseite/ mit Bild, Stil, Zeitachse und Test; die Bühne, die Zeitachse, die Maße und die Takte liegen als Gerüst daneben, die Schnittstelle steht in kapitel.ts. React zeichnet die Bühne einmal, danach gehört sie der Zeitachse. Ändert sich die Anordnung (Telefon oder Schreibtisch), die Bewegung, die Sprache oder die Antwort auf den Gastschalter, hängt die Seite die Bühne neu ein, und der Aufbau läuft frisch.
| Kapitel | Takte | Überschrift | Was im Feld geschieht |
|---|---|---|---|
| Aufmacher | Vorspiel, 0–2 | „Die Eule als Begleiter weiß, was heute dran ist.“ | Kopfband mit dem Himmel zur Stunde, die Eule, drei Grüße an Ada, hinter denen die Sterne des Kopfbands mit weichem Rand ausbleiben (Sichtprüfung Runde 9); die Blase nennt fünf fällige Karten und den Anruf bei Oma |
| Block | 3–6 | „Mitschreiben, Block für Block.“ | im Vorspiel kommt das Blatt herauf, die Wörter seines Satzes fahren darin mit; der Satz wird Wort für Wort markiert und wird ein Block, dazu das Blockmenü mit den Zeichen und Namen des echten Schrägstrich-Menüs und eine Formel |
| Sternbild | 7–12 | „Verlinkte Seiten ergeben ein Sternbild.“ | Seiten werden Sterne am Nachthimmel, Linien verbinden sie zu einem Sternbild |
| Karteikarte | 13–20 | „Kurz bevor du etwas vergisst, kommt es wieder.“ | aus dem Stern wächst die Karte, sie dreht sich, „Gut“ wird gedrückt, Karte und Knöpfe werden Punkte im Band der Wiederholungen, dessen Datumsziffern in der Bedienschrift mit Tabellenziffern stehen |
| Begleiter | 21–25 | „Die Eule erklärt, was unklar ist, und liest deine Abgabe.“ | das Glas der Eule mit zwei Reitern: Im Gespräch fliegen drei Punkte des Bands in die Antwort, der Tutor liest eine Abgabe und streicht den falschen Teil an |
| Lernzeit | 26–30 | „Vor jeder Prüfung steht die Lernzeit schon im Kalender.“ | das Wochenraster mit den Veranstaltungen, die Tage als seine Köpfe in der Bedienschrift, Lernblöcke füllen die Lücken einer nach dem anderen |
| Aufgaben | 31–34 | „Lernen und Alltag auf einer Liste.“ | ein Lernblock wird eine Aufgabe auf der Liste des Tages neben „Oma anrufen“, wird abgehakt und rutscht zu „Heute erledigt“; sie zerstiebt zu Funken, die Funken werden die Woche |
| Anschlüsse | 35–38 | „Was du schon nutzt, kommt mit.“ | die Balken der Woche kippen zu Kacheln mit den echten Zeichen von Google Kalender, iCloud Kalender, Outlook, Moodle, Claude, ChatGPT, Markdown und PDF um ein Schloss „Ende-zu-Ende verschlüsselt“, zuletzt werden die Kacheln die Punkte des Kranzes |
| Einstieg | 39 | „Jetzt du.“ | sechs Linien schließen den Kranz der Marke, der Stern erscheint, aus der Mitte wächst der Stein-Knopf |
Die Logos sind die Zeichen der Anbieter mit Quelle und Lizenz in anschluesse/zeichen.ts, keine Nachbauten (Christian zur dritten und vierten Fassung: „die echten Logos“). Ihre Markenfarben sind die einzigen festen Farben der Seite, jede mit dem Vermerk farbe-ausnahme, den verify:eigenstil verlangt; verify:arch lässt die Datei die Dienste beim Namen nennen wie das Register der Außenverbindungen.
Takte
Die Zeit der Verwandlung läuft von −10 (Vorspiel) bis 400; ein Takt sind zehn Einheiten. Jeder Takt braucht mindestens 160 Punkte Rollweg oder ein knappes Viertel der Schirmhöhe, je nachdem, was größer ist, und der Lauf ist vierzig Takte und einen Schirm lang. Das Bild folgt dem Scrollstand nicht unmittelbar, sondern im Takttempo: Ein Takt dauert 1,5 bis 2 Sekunden, das Vorspiel 2,4 (MS und MS_VORSPIEL in mass.ts), dichte Takte länger, Kapitelwechsel kürzer. Liegt das Ziel weiter weg, läuft das Bild durch alle Takte dazwischen, sanft anfahrend und auf der letzten Strecke bremsend; die Federn sind kritisch gedämpft und schießen nie über.
Je Takt geschieht eine Veränderung, die das Auge verfolgen kann. Das ist Christians Rückmeldung zur vierten Fassung („das Sternbild ist echt zu viel was gleichzeitig passiert“): Das Sternbild hat seither sechs Takte, die Karteikarte acht.
Scrollen wird nie gesperrt
Christian zur vierten Fassung: „verbiete dem Nutzer an keinem Punkt zu scrollen“. Kein Lauscher der Seite ruft preventDefault auf Rad, Berührung oder Taste; alle sind passiv und merken sich nur, dass jemand da ist. Wer schneller ans Ende will, rollt einfach durch. Ihren eigenen Klick halten nur zwei Verweise an: der Sprung ans Ende und die Marke, die die Seite an den Anfang rollt, statt die Adresse zu ändern.
Die Seite rollt in einem eigenen Behälter, weil die Anwendung html und body festhält. Die Rolltasten (Pfeile, Bild auf und ab, Pos1, Ende, Leertaste) wirken trotzdem vom ersten Druck an: Solange nichts oder ein Verweis im Kopf den Fokus hat, gibt ein passiver Lauscher dem Behälter den Fokus, bevor die Taste wirkt. Knöpfe und Felder behalten ihre Tasten.
Einrasten
Nach 400 ms Ruhe (RAST_MS) gleitet die Seite von selbst auf einen ganzen Takt: in der Richtung, in die zuletzt gerollt wurde, außer der angefangene Takt ist vorwärts erst zu höchstens 12 % oder rückwärts erst ab 88 % gerollt; dann gleitet sie zurück. Ohne Richtung nimmt sie den nächsten Takt (rastTakt in useTakte.ts). Das Gleiten dauert 300 ms und 600 ms je Takt Abstand. Jeder Eingriff lässt sofort los: Rad, Finger, Taste, Maustaste und jede Lage, die nicht die Seite selbst gesetzt hat. Solange eine Maustaste gedrückt ist (am Rollbalken) oder ein Finger liegt, wartet sie; über dem ersten und nach dem letzten Takt rastet nichts, und bei offener Iris auch nicht.
Ein Ruck des Mausrads geht höchstens einen Takt weiter (Christian zur dritten Fassung). Eine Rastung rollt etwa 100 Punkte, ein Takt ist mindestens 160 lang.
Das Bild steht nie zwischen zwei Takten. Es läuft nicht auf den Scrollstand zu, sondern gleich auf den Takt, auf den die Seite danach einrastet; sonst hielte es nach einem Radschritt mitten in einer Verwandlung an, bis das Einrasten beginnt. Der Entwurf hat diese Lücke noch; hier weicht die Seite bewusst ab.
Am Telefon und am Tablet
Unter 900 Punkten Breite (TELEFON_BIS) gilt die Anordnung des Telefons: die Überschrift oben, das Feld darunter in eigenem Maß (360 Punkte breit, die Höhe nach dem Platz, mindestens 480), damit Schrift und Knöpfe ihre Größe behalten statt einer verkleinerten Schreibtischbühne. Feld und Überschrift halten 16 Punkte Seitenluft wie der Kopf. Jede Überschrift beginnt oben, 16 Punkte unter dem Kopf wie am Tablet (Sichtprüfung Runde 6; vorher klebte sie mit 4 Punkten an ihm); ihre Zone ist so hoch wie die längste, und das Feld steht in der Mitte des Raums darunter. So bleibt unter dem Kopf kein leeres Band, und „Jetzt du.“ steht oben statt tief über einer leeren Fläche (Sichtprüfung Runde 2). Am Tablet (ab 600 Punkten, TABLET_AB wie breakpoints.mobile) wächst das Feld bis zum Maß des Schreibtischs, die Überschrift ist so breit wie das Feld. Dort steht jede Überschrift unten in ihrer Zone und das Feld gleich darunter; der übrige Raum bleibt unter dem Feld. Sonst klebte die Überschrift am Kopf, und darunter blieb ein leeres Band von rund 120 Punkten (Sichtprüfung Runde 3). Zeichnet sich das Feld kleiner als 1:1, wachsen Termine und Stunden der Lernzeit so weit, dass sie auf dem Schirm bei 12 Punkten bleiben, dem kleinsten Wert der Skala; die Namen im Sternbild halten 24 Punkte Abstand zur Kante. Sonne und Mond stehen unter 900 Punkten auf halber Höhe neben dem Feld, damit „heute“ im Dunkeln nicht über dem Mondhof steht.
Nach dem Wischen gleitet die Seite von selbst zum Takt. Christian zur dritten Fassung: Am Telefon soll man scrollen und dann zu einem Schritt kommen, der kurz selbst läuft, statt zwischen zwei Schritten hängen zu bleiben. Gebaut ist das mit demselben Einrasten wie am Schreibtisch: Solange der Finger liegt, wartet die Seite; nach dem Loslassen läuft der Nachlauf des Browsers aus, und 400 ms danach gleitet sie auf den Takt, auf den das Bild schon zuläuft. Scroll-Snap gibt es nicht, und kein Wisch wird abgefangen.
Am Schreibtisch beginnt die Satzspalte auf der Flucht der Marke, und das Feld (480 × 520, höchstens 1,32-fach gezeichnet) endet rechts dort, wo der Kopf endet (Style-Guide §10). Das Tageband der Lernkarte läuft über das Feld hinaus; es blasst acht Punkte vor dem Rand der Bühne aus, damit kein Tag abgeschnitten am Rand steht (Sichtprüfung Runde 2). Ein Tag am Rand blasst dabei als Ganzes aus: Steht seine Mitte näher als vier Zehntel Tag am Ende der Maske, ist er fort, ab sechs Zehnteln ganz da. Am Telefon schneidet die Bühne das Fenster, und das Ausblassen ist kürzer als ein Tag breit; ohne diese Regel stand „Sa 14“ dort in Ruhe halb im Verlauf (Sichtprüfung Runde 4).
Ruhige Fassung
Bei prefers-reduced-motion: reduce und bei den Bewegungsstufen „aus“ und „wenig“ verwandelt sich nichts. Die Zeitachse hängt am Scrollstand und kann ihre Wege nicht kürzen wie eine Feder; wer „wenig“ gewählt hat, sieht deshalb die ruhige Fassung, und erst „mittel“ zeigt die ganze Verwandlung. Je Kapitel steht ein stiller Zustand, an dem nichts mitten im Übergang ist. Beim Kapitelwechsel blendet die Seite aus und den neuen Zustand ein, so lange, wie die Bewegungsstufe es sagt; bei „aus“ schneidet sie hart, ohne leeren Augenblick dazwischen.
Unter dem Kapiteltext steht die Spur des Wechsels: was woraus geworden ist (Satz zu Block, Seite zu Stern, Stern zu Karteikarte, Gespräch zu Tutor, Lücken zu Lernzeit, Lernblock zu Aufgabe, Erledigtes zu Anschlüssen, Anschlüsse zu Knopf). Am Schreibtisch steht der vorige Zustand dabei als kleiner Geist in einem Drittel der Größe, am Telefon nur die Zeile mit dem Pfeil. Für Vorleser ist die Spur stumm, denn die Überschriften sagen dasselbe. Die ruhige Fassung hat keine Lauscher und rastet nicht ein. Bei „aus“ und bei reduzierter Bewegung stehen der Glanz des Steins und das Funkeln still, und bei reduzierter Bewegung blendet die Iris auf, statt sich als Kreis zu öffnen.
Der Gasteinstieg am Ende
In Takt 39 wächst aus der Mitte des Kranzes der Stein-Knopf „Ohne Konto ausprobieren“, ein geschliffener Stein mit konischem Ring, Kanten nach innen, getöntem Schein und einem Glanz, der an der Bewegungsstufe hängt (Christian zur vierten Fassung: „etwas edler metallisch oder gem“). Im Fokus tritt der Fokusring an die Stelle des konischen Rings, damit nur ein Ring um den Stein liegt (Sichtprüfung Runde 6). Seine Beschriftung erscheint Zeichen für Zeichen und steht als Name am Knopf. Darunter, im Feld unter dem Kranz, steht Wort für Wort der Satz, was der Knopf annimmt: „Damit nimmst du die Nutzungsbedingungen an; dein Gastkonto hängt an diesem Browser und ist weg, wenn du dessen Daten löschst.“, mit einem Verweis auf /terms. Es sind dieselben Sätze wie unter dem Gasteinstieg auf /login. Der Satz hängt am Knopf und nicht an der Überschrift: Wer den Knopf sieht, sieht auch, was er annimmt. Mit seinem ersten Wort spart der Himmel die Sterne hinter ihm aus, mit weichem Rand; nachts saßen sie sonst wie Akzente auf seinen Buchstaben (Sichtprüfung Runde 3, Guide §4.4 und §10).
Ein Druck öffnet die Iris: Vom Knopf aus öffnet sich ein Kreis über die ganze Seite, und darin steht die Ladefläche nach Style-Guide §11.5: Stein mit dem Gitter (13 %) in der Farbe der Marke. Nacheinander kommen der drehende Drahtkristall der Ladefläche (components/sternwarte/Drahtkristall.tsx) und „Probebereich wird geöffnet …“; mehr steht beim Öffnen nicht da, auch kein Knopf (Christian am 12.10.2026: „Kürzer, nur ein Satz“; Guide §11.5). Antwortet das Anlegen nach acht Sekunden noch nicht, steht unter dem Satz leise „Zurück zur Startseite“: Der Knopf taucht auf wie die Fehlerfläche, nimmt aber nicht den Fokus, und Escape gilt weiter (Empfehlung aus Sichtprüfung Runde 7, umkehrbar). Er hängt unter dem Satz, ohne Platz zu nehmen: Kristall und Satz rücken nicht, wenn er kommt (Sichtprüfung Runde 9, Guide §11.5). Der Entwurf zeigt hier eine leere Fläche; die Startseite folgt dem Guide (Sichtprüfung Runde 2). Dahinter legt derselbe Weg wie auf /login (useGastEinstieg in components/auth/Gasteinstieg.tsx) das Gastkonto an und leitet weiter wie nach der Anmeldung. Die Iris ist ein Dialog: Tab bleibt in ihr, die Seite dahinter ist stillgelegt, beim Laden hält die Fläche selbst den Fokus, Escape schließt sie, und der Fokus geht an den Stein zurück; Rad und Finger bleiben frei. Scheitert das Anlegen, sagt die Iris es („Das Gastkonto ließ sich gerade nicht anlegen.“), der Kristall steht still, und sie bietet die Registrierung an („Ein Konto geht immer“), den Knopf „Noch einmal“, der das Anlegen neu versucht, und „Zurück zur Startseite“, der sie schließt. Titel, Meldung und Knöpfe tauchen dabei je ein Zehntel nacheinander auf wie der Inhalt beim Öffnen, mit der Kurve der Iris; bei reduzierter Bewegung stehen sie sofort. „Noch einmal“ bekommt den Fokus und zeigt den Ring nach Guide §17 auch nach einem Druck mit Maus oder Finger, den der Browser sonst nicht als sichtbaren Fokus zählt; die übrigen Knöpfe und der Verweis tragen denselben Ring. Drückt man „Noch einmal“, steht wieder die Ladefläche da, und den Fokus hält die Fläche, bis der Versuch ausgeht. Nur sie sagt es: Ein Toast darüber wiederholte es im Wortlaut der Anfrage, löste die automatische Meldung mit ihrem eigenen Toast aus, und beide verdeckten am Telefon den unteren Rand. Auf /login bleibt der Toast, dort hat der Fehler keine andere Stelle. Kam die Absage, weil die Anfrage über ein VPN lief, nennt sie den Grund, und über dem Ende der Bühne bleibt eine Zeile mit demselben Satz und dem Weg zur Registrierung stehen. Beide Verweise auf die Registrierung sind unter dem Daumen 44 Punkte hoch, ohne dass ihre Zeile wächst; vorher maß „Registrieren“ auf der Fehlerfläche am Telefon 87 × 17 (Guide §16.1).
Der Sprungverweis „Zum Ausprobieren springen“ rollt ans Ende und gibt den Fokus dem Stein, sobald er steht, spätestens nach acht Sekunden; in der ruhigen Fassung nach 300 ms. Im Fokus steht er, wo er nichts verdeckt: am Schreibtisch unter dem Kopf auf der Flucht der Marke, am Telefon unten links, denn dort beginnt die Überschrift gleich unter dem Kopf.
Was am Gastschalter hängt
Ob es den Gast gibt, fragt die Seite ohne Sitzung (AUTH_GAST_ERLAUBT); die Wahl ist der Instanzwert gast.erlaubt, den ein Admin in der Verwaltung stellt. Solange die Antwort fehlt, gilt der Gast als willkommen, damit ein Ja die Bühne nicht umbaut. Sagt sie nein oder ist der Dienst nicht erreichbar, hängt die Seite die Bühne einmal neu ein: Der Stein heißt dann „Konto anlegen“ und führt auf /register, der Satz darunter fehlt, und eine Iris gibt es nicht. Erst wenn Christian oder Ben Gastkonten in der Verwaltung einschalten, legt der Stein ein Gastkonto an.
Wo die Seite vom Entwurf abweicht
Gewollt und jeweils im Commit begründet: Im Kopf stehen „Anmelden“ und „Konto anlegen“ statt des Schalters Auto, Hell, Dunkel. Das betonte Wort der Überschriften steht in der Textfarbe statt in der Handlungsfarbe, die nach Style-Guide §3.1 dem Hauptknopf, dem Verweis, der Auswahl und dem Fokus gehört. Die Flächen tragen die Haarlinie der App statt eines Schlagschattens (§5, „Rand oder Schatten, nie beides“). Die Lernzeit zeigt alle vier Zeilen, wo im Entwurf die Aufgabenfläche drei verdeckt. Neu sind der Satz unter dem Stein, die Fluchten nach §10 und das Bild, das gleich auf den Rasttakt läuft.
Drei Fehler hatte schon der Entwurf; die Seite hat sie seit der Sichtprüfung Runde 2 nicht mehr. Der Name der Karteikarte fliegt in Folge: „Französische“ landet, bevor „Revolution“ von unten nachkommt, und die Fragewörter erscheinen erst, wenn er steht; im Entwurf überholte „Revolution“ das obere Wort mitten im Flug. Seit Runde 4 rückt „Französische“ zuerst zur Seite, steigt dann und wächst zuletzt, damit es weder schräg an „Revolution“ noch durch den Punkt der wachsenden Karte läuft; die übrigen Fragewörter werden an ihrem Platz scharf, statt von unten in die Zeile darunter zu ragen. Die kleinen Sterne des Sternbilds halten zehn Punkte Abstand zu jedem Namen. Im Kalender der Lernzeit bricht kein einzelnes Zeichen allein um („Staatsrecht I“), und am Freitag steht „Seminar“ statt des getrennten „Repetitorium“. Seit Runde 4 stehen dort aus demselben Grund „Völkerrecht“ und „Art. 1 GG“ statt „Rechtsgeschichte“ und „Menschenwürde“, die sich am Telefon zweimal trennten; „Art. 1 GG“ ist zugleich der Stoff der Aufgabe, die aus diesem Block wird. Am Telefon steht der sechste Stern höher und weiter innen als im Entwurf, damit die Nacht, die in Takt 14 als Scheibe um ihn aufgeht, rechts und unten im Feld bleibt.
Was bleibt, gilt seit der Willkommensseite: Die Seite spricht mit „du“ (N150), und sie zeigt nur, was Denotato kann; Namen, Fächer und Zahlen in den Bildern sind Beispiele, und die Fußzeile sagt das.
Startseite.test.tsx prüft das Ganze: dass die Bühne fertig wird, dass jedes Element, das ein Kapitel einem anderen überlässt, genau einmal dasteht, dass kein Name (data-s) zweimal auf der Bühne steht, dass der Kopf beide Wege trägt, dass der Sprung ans Ende führt, dass die Fußzeile zu den Rechtstexten und einmal zum Stil-Guide führt und dass kein Lauscher ein Scrollen anhält. useTakte.test.ts hält die Regel des Einrastens fest; jedes Kapitel hat seinen Test daneben, das Kapitel „einstieg“ auch für Iris, Fokusfalle, Gastschalter, Rolltasten und den einen Takt je Mausrad-Ruck. jsdom misst jede Lage mit null: Die Proben halten Aufbau, Namen, Texte und Lauscher fest, nicht, wie ein Takt aussieht. Gesehen ist die Seite mit /ansehen am 11. und 12.10.2026 auf Telefon, Tablet und Rechner, hell und dunkel, dazu in einer Taktreihe aller vierzig Takte gegen den Entwurf und in drei Sichtprüfungen; zuletzt .blick/20261012-075536-startseite-nachher (Stand 12ef010a8, null Fehler). Was danach offen ist, steht unter „Was fehlt“, Punkte 28, 29 und 31.
Vorher: die Willkommensseite
Vom 20.09. bis zum 11.10.2026 stand hier die Willkommensseite (D14, Willkommen.tsx, entfernt): Name, Leitsatz („Deine Notizen, Karteikarten, Termine und dein Studium — an einem Ort, der dir gehört.“), vier Eigenschaften (Alles an einem Ort, Selbst gehostet, Nichts ist gefangen, Nichts ist Pflicht), die Knöpfe Anmelden und Konto anlegen, seit dem 08.10.2026 darunter „Ohne Konto ausprobieren“ und ein Verweis auf den Stil-Guide. Vor ihr stand dort nur ein Anmeldeformular, und ein Anmeldeformular ohne Erklärung sieht aus wie ein Irrtum. Christian hatte am 23.09.2026 (N150, C34) entschieden, sie zurückhaltend zu lassen, ohne Szene und ohne weitere Karten. Mit dem Vorgang D-261008-startseite-funktioniert hat er das am 10.10.2026 aufgehoben: Die Startseite soll zeigen, dass Denotato einfach funktioniert, statt Eigenschaften aufzuzählen.
Aus ihr ist geblieben: die Randfusszeile als eigenes Bauteil (components/pages/Randfusszeile.tsx, seit dem 22.09.2026), weil die Rechtstexte dieselbe Zeile brauchen und die Vierzig-Punkte-Regel sonst zweimal stünde; sie nimmt fertige Texte, die Startseite gibt t('Impressum'), die Rechtstexte deutsche Wörter. Und der Stil-Guide heißt nur „Stil-Guide“ und steht als Verweis über der Rechtszeile, nicht zwischen Impressum und Nutzungsbedingungen, wo man Rechtstexte erwartet und nicht klickt.
/stil — Der Stil-Guide
Öffentlich, ohne Anmeldung. Der lebende Style-Guide: Farben, Werkstoffe, Formen, Zeichen, Bewegung, Zimmer, Lautstärke — jedes mit Regel und Gegenprobe. Er wächst mit jedem gebauten Schritt, nicht danach.
Zwei Dateien: Stilguide.tsx (das Kapitelwerk) und Sternwarte.tsx (die Szenen). Zusammen die beiden Dateien mit den meisten offenen Übersetzungen (38 und 25).
Sechsunddreißig Kapitel, jedes mit Anker — /stil#der-tagesbogen. Die Zahl stand hier bis zum 21.09.2026 auf achtzehn: gezählt wurde nie, geschrieben schon. Am 22.09.2026 kamen „Die Lesefläche" (§9.1) und „Die Randfußzeile" (§15, §16.1) dazu, am 30.09.2026 „Im Schirm bearbeiten" (§15.2, OE09) und „Verschmelzen" (§15.3, E08), am 07.10.2026 „Markierung und Diagramm" (§9.2). Maßgeblich ist KAPITEL in kapitel.ts.
Das Kapitel „Farben" zeigt seit dem 29.09.2026 auch §3.6 — eine zweite Reihe unter den Theme-Farben: die Farbauswahl so, wie die eingestellte Szene sie malt (auskunftsfarbe). Am Tag stehen dort die abgedunkelten Töne, in der Nacht die gewählten. Der Abschnitt kam mit E11 in den Guide, und verify:stil meldete ihn, bis ein Kapitel ihn zeigte.
Die Szenenwahl hat seit dem 01.10.2026 einen dreizehnten Knopf, „Eigene Szene" (E04, N471). Die Seite ist öffentlich und kennt kein Konto; der Knopf zeigt deshalb ein festes Beispiel — Elternszene Nacht, Grundton Türkis #00b8a9 —, abgeleitet mit derselben Rechnung wie theme.eigen (szeneAbleiten). verify:stil zählt ihn nicht, weil er nicht in SZENEN steht.
Die zwölf Szenenmuster zeigen seit dem 07.10.2026 das Land (W09, Style-Guide §4.6): Aurora, Wüste, Herbstabend, Schneenacht, Vollmond und Milchstraße stehen über Rücken mit Nebel, zu jeder der vier Stunden unter den Mustern. Ohne Konto sieht man das Land nur hier: Die Seite selbst hat kein Kopfband, und „Himmel: kopfband“ im Stellpult ändert an ihr nichts Sichtbares.
Seit dem 10.10.2026 liegt im Kapitel „Eingabe“ das Feld auf Papier (ES-261009-glas-nur-schwebendem, Guide §5 und §15): Input und Select haben eine deckende Fläche mit Haarlinie statt des Glastons mit Weichzeichner, beim Zeigen wird nur die Linie dunkler. Im Kapitel „Im Schirm bearbeiten“ ist der Bearbeitungsbalken aus Stein, nicht mehr aus Glas — er steht im Fluss über der Liste, und unter ihm schwebt nichts. Glas tragen nur noch Leisten, Menüs, Fenster und Meldungen, und es trägt dort eine Kante, keinen Schlagschatten; verify:eigenstil hält die Liste der schwebenden Dateien.
Am Kopf steht seit dem 21.09.2026 eine Gliederung (Gliederung.tsx) — alle Kapiteltitel als Sprungliste, gelesen aus kapitel.ts und nicht aus dem gezeichneten Baum. Diese Seite behauptete den Sprung vorher schon; nur gab es ihn nicht, und wer auf ein Kapitel zeigen wollte, musste den Anker auswendig können.
Und seit dem 22.09.2026 ein Suchfeld daneben — es sucht in den Regeln mit, nicht nur in den Titeln. Die Gliederung half dem, der den Namen des Kapitels kennt; wer nach einem Wort aus einer Regel suchte — „wo stand noch mal etwas zu backdrop-filter?" —, rollte weiterhin durch einunddreißig Kapitel.
Gebaut ist es andersherum, als es zuerst aussah: Die Regeln und Gegenproben stehen als JSX da (<Kapitel regel={…<code>…</code>…}>), und sie als Zeichenketten herauszuziehen wäre ein Umbau von zweitausend Zeilen gewesen — danach stünde jede Regel zweimal da, einmal zum Zeichnen und einmal zum Suchen. Genau die Doppelung, an der /stil und styleguide.md schon einmal auseinandergelaufen sind (K03). Also wird nicht die Quelle gelesen, sondern das Ergebnis: Jedes Kapitel meldet nach dem Zeichnen seinen eigenen textContent an einen Umschlag (kapiteltexte.tsx), und die Gliederung sucht darin. Was auf dem Schirm steht, ist damit genau das, was gefunden wird.
Drei Eigenschaften, die dazugehören:
- Gefiltert wird die Gliederung, nicht die Seite. Die Kapitel bleiben stehen, wo sie sind. Ein Guide, der bei jeder Suche vier Fünftel seiner selbst ausblendet, verliert das, wofür man ihn aufschlägt — beim Suchen an etwas vorbeizukommen, das man nicht gesucht hat. Und Strg+F findet weiterhin alles statt nur das, was übrig ist.
- Jedes Wort muss vorkommen, nicht die Wortfolge, und Groß und Klein wird nicht unterschieden. Wer sucht, weiß nicht, ob dort
backdrop-filteroderBackdrop-Filtersteht. - Findet nichts, steht es da („Kein Kapitel enthält das…"), und sonst die Zahl: „3 von 36 Kapiteln". Eine leere Liste ohne Satz daneben sieht aus wie ein kaputter Guide.
Seit dem 22.09.2026 steht der Vorspann auf dem Lesemaß, und am Fuß führt ein Weg heraus (E01, Punkte 16 und 17 unten). Beides hängt zusammen: Der Guide war die einzige Stelle im Baum, an der überhaupt eine Lesebreite stand — max-width: 62ch —, und sie war falsch. ch misst die Breite der Null, nicht die eines Buchstabens; 62 ch sind in dieser Schrift 72,2 Zeichen und damit über der eigenen Regel in Guide §9. Wer die Zeile kopiert hätte, hätte den Fehler mitkopiert. Jetzt trägt der Vorspann eine Leseflaeche mit dem gemessenen Maß (444 px = 65 Zeichen) — ohne Fläche: Papier unter einem Vorspann wäre ein Blatt auf der Szene, direkt unter einem Titel, der keines hat, und der Guide zeigt seine Werkstoffe in den Kapiteln und nicht an sich selbst. Seit dem 10.10.2026 nennt der Vorspann nur noch die Quelle; der Satz an den Entwickler („Die Werte kommen aus theme.ts und nirgendwo sonst her …“) ist gestrichen (Grundsatz 75, ES-261009-oberflaechentexte-ohne).
Die Tafel der Regler hat einen eigenen Grund und deshalb auch seitlich md Luft; Namen und Knöpfe stießen bis zum 15.10.2026 an ihre Kanten (E-261013-restfunde-blick).
Die Fußzeile ist dieselbe Randfusszeile wie auf der Startseite und unter den Rechtstexten, mit Wegen auf /, Impressum, Datenschutz und Nutzungsbedingungen. Sie steht außerhalb des Umschalters (der klebt oben — am Telefon seit dem 29.09.2026 nicht mehr, dort rollt er mit, weil seine sechs Reglerzeilen umgebrochen die halbe Schirmhöhe belegten; RL02 —, sie gehört nach unten) und außerhalb der Kapiteltexte: Sonst fände die Suche nach „Impressum" einen Treffer, hinter dem kein Kapitel steht. Darüber eine Haarlinie in neutral.rand und xl Luft — der Abstand der Bahn reicht zwischen zwei Kapiteln, nicht zwischen dem letzten Kapitel und dem Ausgang.
Der Reiter sagt seit dem 22.09.2026 „Stil-Guide — Denotato" (useSeitentitel). /stil ist die einzige öffentliche Seite, die man offen liegen lässt, während man nebenan baut.
Neu seit dem 21.09.2026 und damit gleichauf mit dem Dokument:
- „Liste, Gruppe, Kachel" (Guide 15.1). Dieselben sechs Einträge in drei Formen nebeneinander, damit der Sprung sichtbar wird: Liste, Gruppen mit Überschriften, Kacheln mit
minmax(min(280px, 100%), 1fr). Die Regel darunter nennt die Schwelle (ab etwa einer Bildschirmhöhe ohne Gliederung ist es keine Übersicht mehr) und die Ausnahme (wo die Reihenfolge die Aussage ist, bleibt die Liste). - „Am Telefon" sagt jetzt 40 × 40 Bildpunkte unter
@media (pointer: coarse)— vorher stand dort 44, währendControls.tsxseit dem Umbau 40 setzt (Guide 16.1). Eine Regel, die strenger klingt als das Gebaute, ist keine: Der nächste Schirm hält sich an keine von beiden. Seit dem 08.10.2026 (E30) gilt 44: Das Kapitel liest die Zahl aus der Markelayout.zielflaecheim Theme und schreibt keine eigene, und es nennt die Marke beim Namen. Der Satz zur Randfußzeile im selben Kapitel nimmt seit dem 15.10.2026 ebenfalls die Marke (E30).
Und drei Stellen, an denen der Schirm hinter dem Dokument zurückhing:
lesestand nicht bei den Neutralen. Das Kapitel zeigte acht der neun Werte — ausgerechnet ohne den, der am 20.09.2026 der Anlass des ganzen Kontrastumbaus war. Jetzt stehen neun Felder da, und der Regelsatz sagt auch neun.- Guide §7.1 Stufe 2 hatte kein Kapitel. „Das Gewählte“ zeigt jetzt vier Emoji mit ihrer Herkunft (Skill, Interesse, Kategorie, Person) und die Regel daneben: Emoji stehen dort, wo der Nutzer selbst wählt, und nie für etwas, das die Anwendung meint.
- Der Anker des Vokabular-Kapitels hing an einer Zahl. Der Titel lautete „Das gezeichnete Vokabular — 37 Zeichen“, und weil der Anker aus dem Titel entsteht, hat jedes neue Zeichen jeden Verweis von außen ungültig gemacht. Die Zahl steht jetzt im Regelsatz, der Anker heißt
das-gezeichnete-vokabularund bleibt.
Außerdem nennt das Zimmer-Kapitel nicht mehr „alle zwölf“, sondern die gebaute Zahl — Stundenplan und Verwaltung sind nach dem Dokument dazugekommen, und §3.2 und §12 sagen weiterhin zwölf. Dass die beiden auseinandergehen, steht jetzt auf dem Schirm, statt still zu sein.
Stilguide.test.tsx hält das fest — siebzehn Proben: die Zielfläche aus dem Theme (seit E30, vorher die feste Zahl 40), der Rasterwert der Kachelwand, die drei Formen nebeneinander, die neun Neutralen in ihrer Reihenfolge, das Kapitel zum Gewählten, der zahlenfreie Anker, und die Gliederung, die für jedes angemeldete Kapitel einen Sprung führt, dessen Ziel es auf der Seite auch gibt. Seit dem 22.09.2026 vier zur Suche, und die erste davon ist der Fall, der die Gliederung allein widerlegt: backdrop-filter steht in keinem Kapiteltitel, sondern in der Gegenprobe zu den Werkstoffen — gesucht wird, und genau ein Kapitel bleibt übrig. Dazu: dass dabei jedes Kapitel stehen bleibt, wo es steht; dass ein Satz erscheint, wenn nichts passt; und dass ein geleertes Feld wieder alle zeigt, die KAPITEL kennt. Seit dem 22.09.2026 vier weitere: dass das Kapitel „Die Lesefläche" die gemessenen Zahlen nennt und nicht nur die Regel; dass der eigene Vorspann auf LESEMASS.bedienen steht; dass die Fußzeile am Fuß genau die vier Wege führt; und dass die Randfusszeile als Kapitel ausgestellt ist, mit ihrer Vierzig-Punkte-Regel im Text.
Den Abgleich mit dem Dokument macht seit dem 21.09.2026 ein Nachweis: verifyStil.ts liest docs/gestaltung/styleguide.md und hält sieben Dinge dagegen — Kapitel gegen Abschnitte (in beide Richtungen und in der Reihenfolge), die zwölf Szenen, die neun Neutralen, die sechs Steine mit ihren vier Tönen, die Werkstoffe, die acht Formen-Bausteine und die Bereichsfarben, Zimmer und Lautstärken aus §3.2, §12 und §13 gegen die Plugin-Deklarationen. Die Naht dazwischen ist kapitel.ts: dort steht je Kapitel, welchen Abschnitt des Dokuments es zeigt — und unter NUR_TEXT, welche Abschnitte bewusst keinen Schirm haben und warum.
Auf dieser Seite lässt sich ohne Anmeldung ansehen, was sonst ein Konto bräuchte — die Fokuskarte, der Lastbalken, die Kachelmeldung stehen dort mit Beispielzahlen.
Der Kasten mit der Regel neben jedem Stück ist seit dem 10.10.2026 Papier mit Kante, ohne Linie links (ES-261009-farbige-seitenstreifen, E11).
| Element | Was passiert |
|---|---|
| Szene wechseln | zeigt jedes Kapitel in einer anderen Himmelsszene. Die Seite beginnt in der Szene der Anwendung, ohne Theme darüber in der Nacht; der gewählte Knopf trägt aria-pressed (E33, 13.10.2026 — vorher stand sie fest in der Nacht, und /ansehen zeigte im Hellen dieselbe Nacht) |
| Himmel · Bewegung · Dichte · Zeichen · Rolle | die übrigen fünf Reglerzeilen der Tafel. Der Name jeder Zeile steht in einer eigenen Spalte; was am Telefon umbricht, beginnt unter dem ersten Knopf (13.10.2026); „Rolle“ mit einem Schalter „Premium“. Einen Regler für hell und dunkel gibt es nicht. Seit dem 10.10.2026 tragen die Knöpfe die Namen aus den Einstellungen — „Ein Hauch überall“, „Dünn“, „Mitglied“ — statt der Kennungen (config/gestaltungstitel.ts, ES-261009-oberflaechentexte-ohne); die Rolle „nutzer“ heißt „Mitglied“, weil es daneben Gäste gibt (Christian, 10.10.2026) |
| Kapitel anspringen | über die Gliederung am Kopf — alle 36 Titel, jeder ein Anker. Das Suchfeld steht nur neben der Überschrift, solange sein Platzhalter ganz hineinpasst, sonst darunter (13.10.2026) |
| Suchen | filtert die Gliederung über Titel, Regel und Gegenprobe; die Seite bleibt stehen |
| Startseite | am Fuß, seit 22.09.2026 — führt auf / |
| Impressum · Datenschutz · Nutzungsbedingungen | am Fuß, seit 22.09.2026 |
/stil/bewegung — Der Musterbogen der Bewegung
Öffentlich, ohne Anmeldung, und vorläufig. Seit dem 07.10.2026 (BW-261007-charakter). Sechs Proben — Laden, Wechsel, Überlagerung, Liste, Rückmeldung, Ziehen —, jede in drei Richtungen bewegt: Ruhig (gedämpft, kein Überschwinger), Körperlich (Flächen mit Masse, Wechsel kommen seitlich) und Verspielt (Überschwinger auch bei Interaktion). Daneben die Bewegungsstufe, damit man sieht, was wenig aus jeder Richtung macht.
Die Seite ist der Stoff für Christians Wahl des Bewegungscharakters, nicht selbst Gestaltung: Ihre Zahlen stehen in components/stil/bewegung/richtungen.ts und nicht im Theme. Nach der Wahl schrumpft sie auf die eine Richtung und wird zum Prüfstand der Bahn 5-bereiche-bewegung.
„Alles vorführen“ löst alle sechs Proben auf einmal aus — so zeigt ein einziger Filmstreifen von /ansehen eine ganze Richtung.
Unter dem Titel steht seit dem 10.10.2026 kein Satz mehr, der die gewählte Richtung beschreibt („Kurze, gedämpfte Federn ohne Überschwinger …“): Was sie tut, zeigen die Proben (Grundsatz 75, ES-261009-oberflaechentexte-ohne).
/stil/richtung — Der Musterbogen der Richtung
Öffentlich, ohne Anmeldung, und vorläufig. Seit dem 09.10.2026 (ES-261008-richtung). Drei Richtungen, wie Denotato nach Denotato aussieht und nicht nach generischer KI-Oberfläche, jede an denselben vier Proben: die Übersicht eines Tages, eine Lernkarte mit Bewertung, ein Dokument im Blockeditor und ein Ausschnitt des Begleiters — Frage und Antwort. Alles Attrappe: verkleinert, still, ohne Daten; die Knöpfe tun nichts.
Die Richtungen: Tusche (Linien statt Flächen, eine Grotesk trägt den Rang über das Gewicht, Patina als Handlung, der Himmel eine Linie, der Begleiter ein Protokoll mit der Eule am Rand), Cockpit (dicht, Flächen als Helligkeitstreppe ohne Rand, kleine Ecken, Ziffern bündig in Mono, Saphir als Handlung, der Himmel ein Band mit Logo, Uhr und Stein, der Begleiter ein Buch mit Uhrzeit und Sprecher) und Lesesaal (Luft, Newsreader aufrecht als Aufmacher, Blatt mit Eselsohr, Karte mit Reiter, Pillen, Beere als Handlung, der Himmel als Grund der Übersicht, die Eule spricht die Antwort in ihrer Sprechblase). Nur die dritte hat eine Blase, und es ist die der Eule (Guide §2.3), keine Chat-Blase (E20).
Fest in jeder Richtung (Christian, 08.10.2026): Sternwarte, Eule, Edelsteine, Freier Kranz. Variiert wird, wie sie getragen werden. Jede Buntfarbe hat genau eine Rolle — Handlung, Fach, fällig —, jede Richtung definiert sie für hell und dunkel selbst.
Die Seite ist der Stoff für Christians Wahl, nicht selbst Gestaltung: Ihre Werte stehen in components/stil/richtung/richtungen.ts und nicht im Theme. Der Rahmen jeder Probe setzt sie als CSS-Variablen; nur Eule und Kristall zeichnen sich aus dem Theme, dafür bekommt jeder Rahmen ein Theme der Nacht oder des Sonnentags. Nach der Wahl wandern die gewählten Werte in den Style-Guide und ins Theme (Nachtrag in 2026-10-08-florians-designnotizen.md), und die beiden anderen Richtungen bleiben hier stehen, wie bei der Bewegung.
/imprint, /privacy, /terms — Rechtstexte
Drei Infoseiten in gleicher Form, ohne Anmeldung erreichbar — ein Impressum hinter einem Anmeldefeld wäre keines.
Zwei Eigenschaften des Rahmens (Infoseite.tsx), beide vom 17.09.2026, beide, weil aus vier Absätzen über dreißig Paragraphen wurden:
- Die Seite ließ sich nicht nach oben rollen.
align-items: centerschiebt den Überhang eines zu hohen Flexkastens nach beiden Seiten hinaus, und was oben hinausragt, erreicht keine Rollbewegung. Bei vier Absätzen fällt das nicht auf, bei vierzig sofort. Jetzt richtet sich der Kasten oben aus und zentriert übermargin-block: auto, was nachgibt, sobald der Inhalt länger wird. - Die Lesefassung — ein Knopf schaltet auf schwarz auf weiß (
theme/lesefassung.ts, 18,9:1 statt gedämpfter Töne auf dunklem Grund). Die Wahl wird je Browser gemerkt. Ein Vertragstext wird gelesen, ausgedruckt und kopiert; die Sternwarte ist dafür das falsche Zimmer.
Seit dem 22.09.2026 wird die Lesefassung angefordert, statt überall mitzukommen (lesefassung-Eigenschaft, ohne Angabe aus). Den Rahmen benutzen außer den drei Rechtstexten auch die 404-Seite (bis zum 15.10.2026 auch /forgotpw, /resetpw und /mailbestaetigen, die seither unter der Kuppel der Anmeldung stehen, anmeldung.md) — und für vier Zeilen Formular oder den Satz „Diese Seite gibt es nicht" ist Schwarz auf Weiß kein Angebot, sondern ein Knopf, der nichts erklärt. Die gemerkte Wahl gilt deshalb auch nur dort, wo es den Schalter gibt: Wer einmal im Impressum umgeschaltet hat, bekommt das Anmeldeformular nicht plötzlich in Weiß.
Und eine Fußzeile, die aus dem Text herausführt (dieselbe Randfusszeile wie auf der Startseite): auf / und auf die beiden anderen Rechtstexte. Vorher gab es einen einzigen Knopf „weiter", der die drei Texte im Kreis durchschaltete — vom Impressum zum Datenschutz, von dort zu den Nutzungsbedingungen, von dort zurück —, und frontendPaths.MAIN_PAGE kam weder in Infoseite.tsx noch in Rechtstexte.tsx vor. Ein Fremder, der aus der Fußzeile der Startseite ins Impressum gegangen war, landete beim Weitergehen also auf einem Anmeldeformular: dieselbe Sackgasse, die die 404-Seite am 21.09.2026 für Fremde aufgemacht hat. Der eigene Text steht nicht in der eigenen Fußzeile — ein Verweis auf die Seite, auf der man steht, ist eine Zeile, die niemand liest und jeder prüft.
Und seit dem 22.09.2026 liegen die drei Texte auf einer Lesefläche (E01, components/layout/Leseflaeche.tsx). Sie bringt zwei Dinge, und Kontrast ist keines davon: gemessen 9,63 : 1 auf Papier gegen 10,29 : 1 auf dem Grund, auf dem der Text vorher stand — Papier ist nur rund sieben Prozent heller als der Grund und damit als Untergrund sogar schlechter. Sie bringt das Maß — 444 statt 640 Punkte, also 65 statt 93,7 Zeichen je Zeile, wie Guide §9.1 es verlangt — und Ruhe: eine Fläche, auf der der Text liegt, statt eines Textes, der auf der Szene klebt.
Damit hört das Impressum zugleich auf, der einzige Schirm in Denotato ohne Szene zu sein: Seite strich sie mit einer Deckfarbe weg, jetzt ist sie durchsichtig, und der Himmel des Körpers steht links und rechts neben dem Blatt. Er steht dabei still, während der Text durchrollt — der Grund hängt am body und nicht an dieser Rollfläche.
Welche Seiten sie bekommen, entscheidet lesefassung. Die Eigenschaft leseflaeche folgt ihr, wenn nichts anderes dasteht; beide beantworten dieselbe Frage — ist das ein langer Text, den man liest, oder sind es vier Zeilen Formular? /forgotpw, /resetpw, /mailbestaetigen und die 404-Seite bleiben damit unverändert, ohne dass eine von ihnen angefasst werden musste. Am Telefon gibt die Seite dafür Rand ab (16 statt 24 Punkte), aber nur dort, wo darunter noch einer kommt: Zweimal 24 Punkte übereinander lassen von 390 Punkten Schirmbreite 294 übrig, und das sind 43 Zeichen — die Spalte fiele unten aus derselben Regel heraus, die sie oben gerade eingehalten hat.
Seit dem 09.10.2026 bleibt das Blatt am Telefon im Schirm (I11). Das Leseblatt ist Flexkind von Seite, und ein Flexkind wird ohne min-width: 0 nicht schmaler als sein breitester Inhalt. Die Empfängertabelle in § 5 der Datenschutzerklärung ist es: Auf 390 Punkten stand das Blatt 470 breit und 40 links aus dem Schirm, jede Zeile des Rechtstexts vorn abgeschnitten. Jetzt ist es 358 breit bei x = 16, und die Tabelle rollt in ihrem eigenen Rollfeld.
Seit dem 21.09.2026 sagt der Reiter, welcher Text offen ist. packages/frontend/index.html setzt Denotato, und bis dahin hat den Titel nie wieder jemand angefasst — wer Impressum, Datenschutzerklärung und Nutzungsbedingungen nebeneinander offen hatte (und das tut, wer sie liest, vergleicht und verschickt), sah drei Reiter mit demselben Wort darin. Jetzt steht dort „Impressum — Denotato", „Datenschutz — Denotato" und „Nutzungsbedingungen — Denotato". Seit dem 11.10.2026 kommen die drei aus config/oeffentlicheSeiten.ts und werden von layout/Seitenkopf.tsx gesetzt, nicht mehr von den Seiten selbst (D-261011-titel-je-seite); beim Verlassen fällt der Reiter auf den Grundtitel des neuen Weges zurück. „Datenschutz" und nicht „Datenschutzerklärung", weil Google den Reiter als Namen des Unterpunkts im Treffer nimmt (D-261011-unterpunkte).
Der Haken sitzt in den drei Bauteilen und nicht im Rahmen: Denselben Rahmen benutzten damals auch /forgotpw, /resetpw und /mailbestaetigen, die zur Anmeldung gehören (anmeldung.md). Ein Titel im Rahmen hätte Seiten geändert, die hier niemand beschreibt.
Der Wortlaut steht als Daten, nicht als JSX: [config/rechtstexte.ts](../../packages/frontend/src/config/rechtstexte.ts) hält Paragraphen und Absätze, der Schirm zeichnet nur. Die Absatznummern (1), (2), (3) entstehen dabei — wer einen Satz einfügt, muss nicht nachzählen. Jeder Text trägt eine Fassung mit Datum; ohne sie ist „§ 9 Abs. 2" keine Fundstelle.
Seit dem 17.09.2026 ausgeschrieben (Christian: „Überleg dir bitte was sinnvolles und frag mich nur nach den Daten die du zwingend von mir brauchst"), und zwar für den Fall, den er entschieden hat: öffentlich angeboten, mit offener Registrierung. Damit gilt § 5 DDG in vollem Umfang.
Das Impressum
Angaben nach § 5 DDG und § 18 Abs. 2 MStV, Verbraucherstreitbeilegung (§ 36 VSBG), Urheberrecht. „Art des Angebots“ und die Abschnitte zur Haftung für Inhalte und Links sind seit dem 30.09.2026 entfallen, weil sie keine Pflichtangaben sind (RL20, N449).
Zwei Dinge stehen dort bewusst so und nicht anders. Nirgends steht „ohne Gewinnerzielungsabsicht, kein Entgelt" — die frühere Angabe traf nicht zu und stünde einer gewerblichen Nutzung später im Weg. Und die Erklärung nach § 36 VSBG, nicht an einer Verbraucherschlichtung teilzunehmen; sie ist zulässig und erspart im Streitfall ein Verfahren, das der Anbieter ohnehin zahlt.
Was dort nicht steht: die EU-Plattform zur Online-Streitbeilegung. Sie hat den Betrieb am 20.07.2025 eingestellt — ein Verweis darauf wäre ein toter Link mit dem Anschein einer Pflichtangabe.
Der Anbieter ist eine GbR (D47, N354, N407, 29.09.2026). Unter „Anbieter“ steht „Abel, Gründemann & Thiemann GbR“, darunter die Anschrift, dann „Vertretungsberechtigte Gesellschafter: Christian Abel, Florian Gründemann, Ben Thiemann“ und, abgesetzt, „E-Mail: info@denotato.com“ und — nur wenn eingetragen — eine Telefonnummer. Den Absatz setzt Anbieterangaben.tsx; er steht im Impressum und gleichlautend am Kopf der Datenschutzerklärung, deren § 1 auf „den im Impressum genannten Anbieter“ verweist. Der Abschnitt „Zuständige Aufsichtsbehörde“ liest aus derselben Quelle. Zweimal abgetippt wären die Angaben zweimal zu ändern und einmal zu vergessen. Eine Umsatzsteuerangabe steht nicht da: Mit § 19 UStG und ohne USt-IdNr. gibt es keine; kommt mit D19 eine, wird sie nachgetragen.
Woher welche Angabe kommt — drei Quellen, mit Grund.
- Name, Gesellschafter und E-Mail stehen im Quelltext ([
frontend/src/config/betreiber.ts](../../packages/frontend/src/config/betreiber.ts)). Sie sind öffentlich, ändern sich nur mit einem neuen Gesellschaftsvertrag und sind Rechtstext — eine Änderung soll imgit logstehen, neben dem neuen Datum anSTAND_IMPRESSUM. - Die Anschrift ist eine Einstellung in Denotato (Schlüssel
impressum.anschrift, nur für die ganze Instanz). Ein Admin trägt sie unter Admin → Impressum ein (siehe verwaltung.md), mit Vorschau des echten Absatzes. Sie gehört nicht ins Archiv: Es liegt auf GitHub, und was einmal in der Historie steht, bekommt man nicht mehr heraus — auch nicht nach einem Umzug. Und sie geht nicht durch den Chat (N407). Die Seite holt sie überGET /api/impressum/anschrift, einen Weg ohne Anmeldung, der genau diesen einen Wert herausgibt und sonst nichts (routes/api/impressum.ts, mit der Routenbremse je Adresse). Der Weg prüft den gespeicherten Wert vor dem Herausgeben noch einmal mitistImpressumsanschrift— Text, höchstens sechs Zeilen und 300 Zeichen, ohne Steuerzeichen außer dem Zeilenumbruch — und gibt sonst „nicht eingetragen“ zurück. Gelesen wird ohne Cookie und ohne Zwischenspeicher (credentials: 'omit',cache: 'no-store'), damit eine geänderte Anschrift beim nächsten Aufruf dasteht. - Telefon und Aufsichtsbehörde kommen aus
packages/frontend/.env.local(REACT_APP_BETREIBER_TELEFON=…,REACT_APP_BETREIBER_AUFSICHT=…), wie vor D47 alle Angaben..env.localist ignoriert und wird von Vite beim Bauen gelesen; nach einer Änderung wird neu gebaut.packages/frontend/.envdagegen ist in.gitignoreausdrücklich nicht ignoriert (Zeile 65). Bis B71 (27.09.2026) kamen diese Angaben unter Vite nie an, weilbetreiber.tssie ausprocess.envlas — das ist im Bau{}. Gelesen wird jetztimport.meta.env.
Die Anschrift hat drei Zustände, und die Seite sagt jeden: Solange sie lädt, steht an ihrer Stelle nichts; ist sie eingetragen, steht sie Zeile für Zeile da; fehlt sie, nennt die Warnung „ladungsfähige Anschrift“ als fehlende Pflichtangabe. War der Weg nicht zu erreichen, steht dort „Die Anschrift ließ sich gerade nicht laden“ — und keine Warnung, denn ob sie fehlt, weiß die Seite dann nicht.
Solange eine Pflichtangabe fehlt, sagt die Seite das laut und nennt sie beim Namen. Sie gibt nicht „— noch einzutragen —" als Anschrift aus: ein Rechtstext, der so tut, als sei er fertig, ist schlimmer als einer, der seine Lücke nennt. Seit dem 23.09.2026 trägt der Warnkasten dafür ein Zeichen (N134): warnung links vor dem Text — vorher stand die Warnung nur im Rahmen und in der Hintergrundfarbe, ohne Zeichen und ohne Wort dafür. In der Lesefassung ist das Zeichen LESEFASSUNG.schrift (fast schwarz), sonst status.warning: Die amberfarbene Nacht-Szene-Farbe kam auf dem #ffffff-Papier der Lesefassung auf rund 1,6 : 1 statt der für Grafik geforderten 3 : 1 — ein Prüfer hat das am 23.09.2026 gemessen und gemeldet, seither folgt das Zeichen der Lesefassung wie Rahmen, Text und Grund es schon taten. Das geschieht im Rahmen, nicht in der Seite: klareSicht in Infoseite.tsx färbt in der Lesefassung jede gefüllte und jede gezogene Linie eines Zeichens um (svg [fill]:not([fill='none']), ebenso stroke). Eine CSS-Eigenschaft schlägt das SVG-Attribut, das Zeichen setzt, und die Regel folgt dem Knopf sofort — ein erster Nachbesserungsversuch las die gemerkte Wahl stattdessen einmal aus dem Browser und blieb nach dem Umschalten bei der alten Farbe. Die Regel gilt für jedes Zeichen auf jeder Seite, die die Lesefassung anfordert.
Die Datenschutzerklärung
Dreizehn Paragraphen, § 1 bis § 12 und § 7a: Verantwortlicher · Gegenstand · Datenkategorien · Zwecke und Rechtsgrundlagen · Empfänger und Übermittlung an Dritte · Speicherdauer · Speicherung im Endgerät (§ 25 TDDDG) · Nutzungsprotokoll (§ 7a) · Rechte der betroffenen Person · Erforderlichkeit · automatisierte Entscheidungsfindung · Datensicherheit · Änderungsvorbehalt.
Wo der Spielraum liegt — und wo nicht. Die Rechte aus Art. 15 ff. DSGVO stehen kraft Gesetzes zu; eine Erklärung gewährt sie nicht, sie informiert (Art. 13). Wer sie wegließe, nähme sie niemandem, sondern beginge einen Verstoß nach Art. 83 Abs. 5 lit. b. § 8 ist deshalb vollständig. Gestaltbar sind §§ 4, 5 und 6: Zweckbestimmung, Rechtsgrundlage, Empfänger und Speicherdauer. Sie sind weit gefasst — Weiterentwicklung, statistische Auswertung, Geschäftsentwicklung, und ausdrücklich der Übergang auf eine künftige Gesellschaft. Das jetzt zu setzen ist einfach; es später nachzuschieben verlangt erneute Information und unter Umständen eine neue Rechtsgrundlage.
§ 5 schreibt das Register nicht ab, sondern liest es. @shared/config/aussenverbindungen.ts (Grundsatz 52) sagt selbst: „Sie ist die Grundlage der Datenschutzerklaerung, deren § 5 die Tabelle aus ihr zeichnet." Eine neue Adresse ohne Eintrag meldet verify:arch — und erscheint damit zugleich hier. Auseinanderlaufen können die beiden nicht mehr. Eine Adresse kann zwei Zwecken dienen (openmensa.org); die Zeile ist deshalb erst durch Adresse und Zweck zusammen eindeutig.
Das war nötig, weil der alte Text das Gegenteil behauptete: „keine Übermittlung an externe Dienste", während Denotato Geburtstage nach Google schrieb. Eine Datenschutzerklärung, die beruhigt und nicht stimmt, ist schlechter als keine — sie steht da, und niemand prüft sie nach.
Was dabei sonst noch benannt wurde und vorher nirgends stand: die vierzehn Tage der nginx-Zugriffsprotokolle, die dreißig Tage des Zugriffsschlüssels für „angemeldet bleiben", die vier localStorage- Schlüssel, die Rückmeldungen im Quelltext-Archiv — und dass die Löschung eines Kontos heute von Hand geschieht, weil es den Knopf nicht gibt.
Anthropic als Empfänger von Inhalten (03.10.2026, KI46, N501). § 5 Abs. 3 sagt in Worten, was die Zeile api.anthropic.com der Tabelle aufzählt: Für die Funktionen des Begleiters, die ein Sprachmodell verwenden, geht Inhalt des Kontos an Anthropic, soweit das Konto ihn selbst lesen darf, Tagebuch und Gedächtnis eingeschlossen; Passwörter und Zugangsdaten nie. Rechtsgrundlage ist die Vertragserfüllung, die Übermittlung in die USA ist offen formuliert (Angemessenheitsbeschluss oder Standardvertragsklauseln), weil die Vertragspartei bei Anthropic nicht im Repository steht; ungeprüft wie der ganze Text (N94). Der Absatz kam mit einer neuen Fassung („Fassung vom 3. Oktober 2026“); die folgenden Absätze von § 5 rücken um eins. Ob neue Anlässe des Begleiters in der Zeile stehen, halten anlaesse.test.ts und verify:begleiter gegen das Register der Anlässe.
Das Gedächtnis beim Absatz im Briefing (04.10.2026, KI52, N503). Die Zeile api.anthropic.com nennt beim Absatz im Briefing jetzt auch „Kontext und Profil aus dem Gedächtnis“, weil der Begleiter sie dort seit diesem Tag mitschickt. Die Datenschutzerklärung trägt deshalb die „Fassung vom 4. Oktober 2026“; Abs. 3 deckte es dem Sinn nach schon, die Tabelle nannte es nicht. Rechtstexte.test.tsx prüft den Satz im gerenderten § 5, anlaesse.test.ts den im Register.
Das Nutzungsprotokoll (07.10.2026, DS-261006-schalter-hinweis, A45, N532). § 7a sagt, was ein Eintrag enthält und was nicht (Inhalte, Titel, Suchbegriffe, IP-Adresse), dass Konto, Sitzung und Gegenstand nur als Pseudonym stehen, und trennt zwei Grundlagen: was der Browser erhebt, nur mit Einwilligung (§ 25 Abs. 1 TDDDG); was der Server aus ohnehin gestellten Anfragen ableitet, aus berechtigtem Interesse mit Widerspruch über „Nutzung erfassen“. Die Liste der Handlungen in Abs. 2 entsteht aus NUTZUNGSAKTIONEN und BROWSERFAMILIEN. Die Frist steht in § 6, § 7 verweist auf § 7a. Der Paragraph kam mit der „Fassung vom 7. Oktober 2026“; die Nummern danach blieben, deshalb § 7a.
Umlaute in der Tabelle (08.10.2026, I11). Die Felder wofuer, hinaus und haengtAn des Registers stehen mit Umlauten und ß, damit die Tabelle in § 5 keine Umschrift mehr zeigt („Gedächtnis“, „Schlüssel“, „öffentlichen“). Der Wortlaut änderte sich, der Sinn nicht; die Datenschutzerklärung trägt trotzdem die „Fassung vom 8. Oktober 2026“. Bezeichner, Hosts und Pfade bleiben, wie sie sind.
Gastkonten (08.10.2026, D-261008-gastkonto, Schritt 6). § 3 hat einen zweiten Absatz: Ein Gastkonto hat keinen Namen, keine E-Mail-Adresse und kein Passwort; verarbeitet werden ein vergebener Benutzername, die Inhalte und ein Geräteschlüssel im Browser. Es wird mit allen Daten gelöscht, wenn es die Frist gast.lebensdauer lang nicht genutzt wird (voreingestellt dreißig Tage), und die IP-Adresse zählt für die Grenze je Anschluss nur im Arbeitsspeicher. Die Webserver-Protokolle aus § 6 bleiben davon unberührt; deshalb sagt der Absatz „dafür nicht gespeichert“ und nicht „nie“. Der Satz unter „Ohne Konto ausprobieren“ verweist auf die Nutzungsbedingungen, nicht hierher. Die Fassung bleibt die vom 8. Oktober 2026.
Die Gastbremse (10.10.2026, D-261008-gaeste-bremse). Der Satz zur IP-Adresse ist ein eigener, dritter Absatz in § 3 geworden. Er nennt den Zweck (Missbrauch von Gastkonten verhindern) und die Grundlage (Art. 6 Abs. 1 lit. f DSGVO), dazu die drei Verwendungen: die Grenze neuer Gastkonten je Anschluss und Tag, das KI-Kontingent, das sich alle Gäste eines Anschlusses teilen, und den Abgleich mit freien Listen von Rechenzentrums-, VPN- und Hochschulnetzen. Er sagt, dass aus Rechenzentren und über VPN kein Gastkonto entsteht und ein bestehendes von dort nichts ändert. Gezählt wird unter einem Hashwert mit täglich wechselndem Schlüssel im Arbeitsspeicher; es zählen nur die letzten vierundzwanzig Stunden, und keine Adresse geht an Dritte, weil der Dienst die Listen ganz abruft. Die Datenschutzerklärung trägt seitdem die „Fassung vom 10. Oktober 2026“.
Die Nutzungsbedingungen
Zwölf Paragraphen. Sie unterliegen den §§ 305–310 BGB, und dort gilt: eine zu weite Klausel wird nicht auf das zulässige Maß zurückgeführt, sondern ist unwirksam und fällt ersatzlos weg (§ 306 Abs. 2 BGB, keine geltungserhaltende Reduktion). Gebaut sind sie deshalb nicht „so weit wie möglich", sondern so weit, wie es trägt — die zulässige Fassung hält im Streitfall mehr aus als die weitere, die kippt.
Die drei Stellen, die für ein späteres Unternehmen zählen: § 4 (die Nutzung ist derzeit unentgeltlich, ein Anspruch darauf besteht nicht), § 6 (einfaches, übertragbares und unterlizenzierbares Nutzungsrecht an eingestellten Inhalten, dazu zeitlich unbeschränkte Verwendung anonymisierter Daten) und § 12 Abs. 2 (Übertragung des Vertragsverhältnisses auf eine zu gründende Gesellschaft). Sie jetzt zu setzen ist einfach; sie später nachzuschieben verlangt die Zustimmung jedes einzelnen Nutzers.
§ 8 nennt seit dem 21.09.2026 auch die Frist und den Weg (D16). Bis dahin stand dort nur, dass die Rechte bestehen und wohin eine Mitteilung geht — nicht, was danach geschieht. Jetzt steht die Monatsfrist aus Art. 12 Abs. 3 DSGVO ausdrücklich dabei (mit der Verlängerung um zwei weitere Monate bei Komplexität), und ein eigener Absatz sagt, dass Auskunft (Art. 15), Übertragbarkeit (Art. 20) und Löschung (Art. 17) bereits als Knopf unter „Einstellungen → Deine Daten" bestehen — der Datenexport (deckt Auskunft und Übertragbarkeit) und die Kontolöschung (D04) — und dass niemand mit Kontozugriff auf die Monatsfrist warten muss. Für die übrigen Rechte und ohne Kontozugriff bleibt die vorstehend genannte Kontaktadresse der Weg.
Nachweise
Siebzehn Zusicherungen (Rechtstexte.test.tsx), darunter die vier, an denen ein Rechtstext scheitert: dass die Lücke in den Pflichtangaben sichtbar ist, dass jede Adresse des Registers auf der Seite steht, dass jedes von Art. 13 verlangte Betroffenenrecht genannt wird, und dass nirgends mehr „ohne Gewinnerzielungsabsicht" oder „kein Entgelt" steht. Seit D16 dazu: dass § 8 die Monatsfrist nennt und den Weg über den Datenexport und die Kontolöschung — und dass jeder der drei Texte sein eigenes Fassungsdatum trägt, ausgeschrieben, damit sich keines bewegt, ohne dass jemand es will. Seit dem 21.09.2026 zwei weitere: dass jeder der drei Texte seinen eigenen Reitertitel trägt, und dass er ihn beim Verlassen wieder hergibt (seit dem 11.10.2026 in Seitenkopf.test.tsx). Seit dem 22.09.2026 zwei zur Fußzeile: dass jeder der drei zurück auf / führt (alle drei gezeichnet, nicht einer stellvertretend), und dass jeder die beiden anderen nennt — ohne Umweg über den dritten und ohne sich selbst.
Infoseite.test.tsx hält den Rahmen mit acht Proben: dass die Lesefassung nur angeboten wird, wo sie angefordert ist; dass eine gemerkte Wahl dort nicht greift, wo es den Schalter nicht gibt; und dass eine Fußzeile ohne Wege gar nicht erst erscheint, statt als leere Zeile dazustehen. Die Probe zur gemerkten Wahl misst, dass der Grund nicht weiß ist — deshalb steht daneben eine, die misst, dass er es im umgeschalteten Zustand ist: sonst wäre die erste auch dann grün, wenn jsdom den Grund gar nicht ausrechnet.
Die Proben der Startseite stehen oben unter „/ — MainScreen“: sieben in Startseite.test.tsx für das Ganze, vier in useTakte.test.ts für das Einrasten und 67 in den zehn Kapiteln (Stand 12.10.2026). Mit Willkommen.test.tsx sind am 11.10.2026 elf Proben gegangen. Von ihnen gilt eine weiter und ist übernommen: dass /stil genau einmal und unter genau einem Namen dasteht. Die Probe, dass die Seite mit „du“ spricht und nirgends mit „man“ (N150), hat keinen Nachfolger.
/features/<bereich> — Bereichsseiten (11.10.2026, D-261011-bereichsseiten)
Je eine öffentliche Seite für Lernkarten, Wiki, LaTeX, Kalender, Tutor und To-dos: /features/flashcards, /wiki, /latex, /calendar, /tutor, /tasks. Sie sind für jemanden ohne Konto, der wissen will, was ein Bereich kann, und für Suchmaschinen, die sie als Unterpunkte unter dem Treffer zeigen können.
Gebaut wie die frühere Willkommensseite: Titel, die Beschreibung als Untertitel, vier Punkte als Zeilenliste (links der Name, rechts ein Satz; am Telefon untereinander), darunter „Konto anlegen“ als Hauptknopf und „Anmelden“ als Nebenknopf. Die Fußzeile nennt die Startseite und die anderen Bereiche, den eigenen nicht. Ein Weg unter /features/, den die Liste nicht kennt, zeigt die 404-Seite.
Woher der Text kommt, hat Christian gewählt: aus der Liste, nicht aus dem Wiki. Titel und Beschreibung stehen in config/oeffentlicheSeiten.ts (daraus auch Reiter, Kopf und Vorrendern), die Punkte in config/bereichsseiten.ts, damit sie erst mit dem Schirm laden. Jeder Punkt ist in der Seitendatei des Bereichs belegt und gilt für jedes Konto; was nur ein Admin darf oder ein Betreiber erst einrichten muss, steht nicht da. Die Pfade sind englisch (2026-10-11-pfade-englisch).
Die Startseite verlinkt die sechs Seiten in einer eigenen Fußzeile „Bereiche“ über „Rechtliches“; im vorgerenderten HTML stehen sie auf jeder öffentlichen Seite als eigene <nav aria-label="Bereiche">.
Die Route steht vor /:raum. /features/flashcards passt auch auf /:raum/flashcards, mit gleichem Rang; bei Gleichstand gewinnt die frühere Route, und die Raumwache schickte jeden Fremden auf die Anmeldung. Gesehen nur im gebauten Stand mit JavaScript; das vorgerenderte HTML stimmte.
Geprüft in Bereichsseite.test.tsx (Titel, Punkte, Hauptweg, Fußzeile ohne eigenen Weg) und bau/vorgerendert.test.ts (Punkte, canonical, Verweis von der Startseite); verify:auffindbar liest alle sechs aus dem Bau.
/forgotpw
Siehe anmeldung.md.
* — Nicht gefunden
„Diese Seite gibt es nicht." Ein gestalteter Schirm, kein weißes Fenster.
Über dem Titel steht seit dem 05.10.2026 das Okular, die Zweitmarke (2026-10-05-logo-freier-kranz), in 96 px; die Infoseite nimmt dafür die Angabe bild. Wer sich hierher verirrt, sieht zuerst, wo er gelandet ist. Das Bild ist schmückend (alt="", aria-hidden); die Fassung -hell nimmt das Schema light.
Der Weg hinaus hängt seit dem 21.09.2026 daran, wer fragt. Vorher stand dort zweierlei, das nur für Angemeldete stimmte:
- „Zur Übersicht" zeigte auf
/dashboard— einen geschützten Weg. Ein Fremder mit einem Tippfehler in der Adresse klickte damit auf einen Knopf, der ihn auf ein Anmeldeformular warf: zwei Sackgassen hintereinander, und nach der zweiten glaubt niemand mehr an den Tippfehler. Für ihn heißt der Knopf jetzt „Was ist Denotato?" und führt auf/.
Angemeldete sehen seit dem 29.09.2026 keinen Anmeldeknopf mehr (RL02). Bis dahin stand „Zur Anmeldung" als Hauptknopf auch vor jemandem, der längst angemeldet war, und der Weg, den er brauchte, daneben als Nebenknopf. Die Infoseite nimmt dafür die Angabe angemeldet: Sie lässt den Anmeldeknopf weg und macht „Zur Übersicht" zum Hauptknopf.
- Der Hinweis auf die Schnellsuche (Strg+K) beschreibt ein Bauteil, das es nur hinter der Anmeldung gibt. Einem Fremden einen Tastengriff zu nennen, den er nicht ausführen kann, ist schlechter als kein Hinweis — er probiert ihn, und nichts passiert. Er liest stattdessen, was öffentlich ist: Startseite, Stil-Guide, Rechtstexte. Seit dem 22.09.2026 ist der Stil-Guide darin ein Verweis und keine Aufzählung — drei öffentliche Seiten zu nennen und auf keine zu zeigen, ist eine Liste und kein Weg.
Der Reiter sagt seit dem 22.09.2026, dass die Seite fehlt. Vorher stand dort das Denotato aus packages/frontend/index.html, also genau dasselbe wie auf jedem anderen Weg — und das ist der Fall, für den ein Reitertitel da ist: Man sieht ihn, bevor man die Seite liest, und bei einem Tippfehler in der Adresse ist er die erste Auskunft überhaupt. Der Titel ist wortgleich mit der Überschrift; zwei Auskünfte über dieselbe Seite wären eine zu viel.
Die Lesefassung steht hier nicht mehr. Sie kam bis zum 22.09.2026 unbedingt aus der Infoseite mit und bot einem verirrten Besucher an, einen Satz in Schwarz auf Weiß zu lesen.
Acht Zusicherungen halten beide Richtungen fest (NichtGefunden.test.tsx); ein Schalter, der nur in einer Stellung stimmt, ist keiner. Seit dem 22.09.2026 dazu: der Reitertitel, dass er beim Verlassen wieder hergegeben wird, dass es den Lesefassungsknopf hier nicht gibt, und dass der Stil-Guide als Weg dasteht.
Das Symbol — packages/frontend/index.html
Keine Seite, aber der Rand jeder Seite: was im Reiter, in den Lesezeichen und auf dem Startbildschirm eines Telefons steht. Seit dem 26.09.2026 verweist index.html auf jedes Symbol, das in packages/frontend/public/ liegt (K06). Vorher waren es zwei von zehn, und der Reiter rechnete sein Bild jedes Mal aus einem einzigen 256er herunter.
| Datei | Wer sie nimmt |
|---|---|
favicon.svg | seit dem 05.10.2026: der Reiter jedes Browsers, der SVG kann — scharf in jeder Größe; Chromium und Firefox nehmen es vor den PNG |
favicon.ico | alles, was nur /favicon.ico kennt — seit dem 05.10.2026 mit 16, 32, 48 und 256 px |
favicon-16x16.png, -32x32, -48x48 | der Reiter und die Lesezeichen, je nach Größe (sizes); die 48er steht auch im Manifest |
favicon-192x192.png | seit dem 11.10.2026: der Suchtreffer bei Google, der nur ein Vielfaches von 48 Pixeln nimmt und es selbst herunterrechnet (D-261011-favicon-treffer); verify:auffindbar verlangt mindestens 96 |
apple-touch-icon-180x180.png | der Startbildschirm des iPhones |
apple-touch-icon-167x167.png, -152x152 | iPad Pro und iPad |
apple-touch-icon.png | ohne Verweis: dieselbe Datei wie die 180er, für Leser, die den Pfad von selbst abfragen |
android-chrome-*, maskable-* | das Manifest (manifest.json) |
Seit dem 05.10.2026 zeigen alle Symbole den Freien Kranz (2026-10-05-logo-freier-kranz). favicon.svg ist eine eigene Zeichnung für 32 px — weniger Körper, damit im Reiter nichts verschwimmt —, die Favicons in PNG und ICO sind aus ihr gerechnet, alle übrigen aus public/logo/kranz-symbol.svg. Das Symbol ist undurchsichtig und hält die Sicherheitszone ein; die maskable- Dateien sind deshalb dieselbe Zeichnung wie die any-Dateien. Die Dateinamen sind geblieben, Manifest und Service Worker unverändert.
Seit dem 08.10.2026 trägt beta im Reiter das Okular (2026-10-05-logo-freier-kranz, Nachtrag), damit beta.denotato.com und denotato.com nebeneinander unterscheidbar sind. Die Dateien liegen unter gleichem Namen in public/beta/ (favicon.svg, eigens für 16 bis 48 px gezeichnet; die PNG bis 192 px und favicon.ico aus ihm gerechnet). Der Bau lenkt die Verweise in index.html dorthin um, wenn die .env des Backends im selben Baum DENOTATO_STAND auf etwas anderes als prod setzt (src/bau/standsymbol.ts). /favicon.ico ohne Verweis, die Apple-Symbole und das Manifest bleiben auch in beta beim Kranz.
Bis dahin gab es kein SVG-Symbol: favicon.svg und safari-pinned-tab.svg waren Platzhalter aus einer Vorlage — ein „F" auf Schwarz — und liegen in packages/frontend/archiv/public/, neben dem alten Logo von GOLD.
Die Marken liegen als SVG unter public/logo/: kranz-marke, kranz-lockup und kranz-symbol für das Logo, okular-marke und okular-lockup für die Zweitmarke, je mit einer Fassung -hell für hellen Grund (das Symbol nicht: es bringt seinen Grund mit).
Was man tun kann
| Element | Wo | Was passiert |
|---|---|---|
| (nichts) | /, angemeldet | leitet weiter — immer auf /dashboard (seit 09.10.2026; vorher auf den Bereich aus start.seite) |
| Rollen (Rad, Finger, Pfeile, Bild auf und ab, Pos1, Ende, Leertaste) | /, fremd | führt durch die vierzig Takte; nach 400 ms Ruhe gleitet die Seite auf den nächsten ganzen Takt, ein Ruck des Mausrads höchstens einen Takt weit. Nichts davon wird angehalten |
| Denotato (Marke) | /, fremd, im Kopf | rollt an den Anfang, ohne die Adresse zu ändern |
| Anmelden | /, fremd, im Kopf | führt auf /login |
| Konto anlegen · Registrieren | /, fremd, im Kopf; „Registrieren“ in der Iris und in der Zeile zum VPN | führt auf /register |
| Zum Ausprobieren springen | /, fremd, erst mit dem Fokus sichtbar | rollt ans Ende und gibt den Fokus dem Stein-Knopf, sobald er steht |
| Ohne Konto ausprobieren | /, fremd, der Stein-Knopf in Takt 39 | öffnet die Iris vom Knopf aus; dahinter wird ein Gastkonto angelegt, dauerhaft angemeldet und weitergeleitet wie nach der Anmeldung. Scheitert es, sagt es die Iris und bietet die Registrierung an. Ist gast.erlaubt aus oder die Frage gescheitert, heißt der Knopf „Konto anlegen“ und führt auf /register. Ablauf in anmeldung.md |
| Zurück zur Startseite · Escape | /, in der offenen Iris; der Knopf nur auf ihrer Fehlerfläche | schließt die Iris und gibt den Fokus dem Stein-Knopf zurück; Tab bleibt solange in der Iris |
| Nutzungsbedingungen | /, im Satz unter dem Stein-Knopf (nur mit gast.erlaubt) | führt auf /terms |
| Den Stil-Guide ohne Konto ansehen | /, fremd, in der Fußzeile | führt auf /stil |
| Szene wechseln | /stil | zeigt jedes Kapitel in einer anderen Himmelsszene |
| Himmel · Bewegung · Dichte · Zeichen · Rolle | /stil | die übrigen Reglerzeilen der Tafel; kein Regler für hell und dunkel |
| Kapitel anspringen | /stil | über die Gliederung am Kopf — alle 36 Titel, jeder ein Anker |
| Im Stil-Guide suchen | /stil | filtert die Gliederung über Titel, Regel und Gegenprobe |
| Richtung wählen | /stil/bewegung | Ruhig, Körperlich, Verspielt — der Satz darunter sagt, was sie will |
| Stufe wählen | /stil/bewegung | Voll bis Aus; beginnt bei der eigenen Einstellung |
| Alles vorführen | /stil/bewegung | bewegt alle sechs Proben zugleich |
| Richtung wählen | /stil/richtung | Tusche, Cockpit, Lesesaal — der Satz darunter sagt, wofür sie steht |
| Schema wählen | /stil/richtung | Hell oder Dunkel; beginnt beim Schema des Themes |
| Rahmen wählen | /stil/richtung | Telefon (360 px) oder Desktop (760 px) — die Proben ordnen sich um |
| Startseite · Impressum · Datenschutz · Nutzungsbedingungen | /stil, Fußzeile | seit 22.09.2026 — der Weg aus dem Guide heraus |
| Zur Anmeldung | Rechtstexte | Hauptknopf, führt auf /login — auch vor Angemeldeten (Punkt 25 unter „Was fehlt“) |
| Lesefassung | Rechtstexte | schwarz auf weiß; die Wahl wird je Browser gemerkt |
| Startseite | Rechtstexte, Fußzeile | führt auf / |
| die beiden anderen Rechtstexte | Rechtstexte, Fußzeile | ohne Umweg über den dritten; der eigene steht nicht dabei |
| Impressum · Datenschutz · Nutzungsbedingungen | /, Fußzeile | führt in den jeweiligen Text |
| Zur Anmeldung | 404, nicht angemeldet | Hauptknopf, führt auf /login; Angemeldeten fehlt er seit dem 29.09.2026 (RL02) |
| Zur Übersicht | 404, angemeldet | Hauptknopf, führt auf /dashboard |
| Was ist Denotato? | 404, fremd | führt auf / — die Erklärung statt eines geschützten Wegs |
| Stil-Guide | 404, fremd | führt auf /stil — die zweite öffentliche Seite |
Woher die Daten kommen
Fast nichts wird geladen: Die Seiten sind Quelltext. Was doch gefragt wird, steht in der Tabelle.
| Seite | Woher | Endpunkt, Handler, Tabelle |
|---|---|---|
/, Fremde | Texte und Beispiele stehen in den Kapiteln unter components/screens/startseite/ (Beispielzahlen und -sätze im Quelltext); „Ohne Konto ausprobieren“ fragt, ob der Gastzugang angeboten wird | AUTH_GAST_ERLAUBT, ohne Sitzung (plugins/src/auth/server/gastschalter.ts); die Wahl ist der Instanzwert gast.erlaubt. Der Knopf selbst ruft AUTH_GAST (legeGastAn in konten.ts, auth.users) |
/, Angemeldete | Die Seite zeichnet nichts, sie wartet auf die Einstellungen und die Rechte des Kontos und leitet auf /dashboard weiter | PREFERENCES (bis zum 09.10.2026 für start.seite; Route in packages/backend/src/routes/api/account.ts) und MY_ACCESS (packages/backend/src/routes/api/access.ts), geladen von PreferencesContext und AccessContext |
/stil, /stil/bewegung, /stil/richtung | statisch: Kapitel in components/stil/Stilguide.tsx, Szenen in Sternwarte.tsx, Zahlen der Bewegung in components/stil/bewegung/richtungen.ts, Werte der Richtungen in components/stil/richtung/richtungen.ts, Beispielzahlen und -sätze im Quelltext | keiner |
/imprint, /privacy, /terms | statisch: der Wortlaut in config/rechtstexte.ts, Name, Gesellschafter und E-Mail in config/betreiber.ts, die Tabelle in § 5 aus @shared/config/aussenverbindungen.ts; Telefon und Aufsichtsbehörde aus packages/frontend/.env.local beim Bauen | IMPRESSUM_ANSCHRIFT für die Anschrift, ohne Sitzung (holeImpressumsanschrift in handlers/requests/impressumHandler.ts, Route packages/backend/src/routes/api/impressum.ts), gelesen aus personal.preference_defaults unter dem Schlüssel impressum.anschrift |
* | statisch | keiner |
| Symbole im Reiter | Dateien unter packages/frontend/public/, von index.html verlinkt | keiner |
Gemerkt wird nur im Browser: die Wahl der Lesefassung (siehe „Rechtstexte“ oben). Der Reitertitel kommt aus hooks/useSeitentitel.ts und nicht vom Server. Der Weg /api/impressum/anschrift gibt genau diesen einen Wert heraus und ist je Adresse gebremst.
Was fehlt
- Zwei Angaben fehlen noch —
Impressum und Datenschutz sind Platzhalterwar bis zum 17.09.2026 richtig, seither sind beide ausgeschrieben;fünf Angaben fehlenwar bis D47 (29.09.2026) richtig, seither stehen Name der GbR, Gesellschafter und E-Mail im Quelltext. Offen sind die Anschrift — Christian trägt sie nach dem Aufspielen unter Admin → Impressum ein — und die zuständige Datenschutz-Aufsichtsbehörde (REACT_APP_BETREIBER_AUFSICHT=…inpackages/frontend/.env.local, danach neu bauen). Bis dahin steht auf beiden Seiten eine Warnung, die die fehlende Angabe nennt, und die Instanz darf nicht öffentlich angeboten werden. - Die Rechtstexte sind nicht anwaltlich geprüft, und um sie herum fehlt der halbe Betrieb: Verarbeitungsverzeichnis (Art. 30), AVV mit dem Mailversender (Art. 28), Löschkonzept, Verfahren für Betroffenenanfragen und für Datenschutzverletzungen. Zwanzig Punkte, keiner davon Programmierarbeit — sie stehen gesammelt in [
../user-steering/rechtliche-todos.md](../user-steering/rechtliche-todos.md), und jeder davon gilt erst, sobald Christian es sagt. Kein Verfahren für Auskunft und Löschung.— gebaut am 21.09.2026 (D16). § 8 nennt jetzt die Monatsfrist (Art. 12 Abs. 3 DSGVO) und den Weg über Datenexport und Kontolöschung; im Meta-Server zeigt „Data subject requests" (packages/meta/src/services/betroffenenanfragen.ts) offene Anfragen mit ausgerechneter Frist, und der Knopf „beantwortet" vermerkt das Datum und legt die Datei nachbeantwortet/— sie wird verschoben, nicht gelöscht, weil sie der Nachweis ist, dass innerhalb der Frist geantwortet wurde (Art. 5 Abs. 2 DSGVO). Was bleibt: Die Anfragen selbst kommen per E-Mail an und werden von Hand als Datei unterdocs/betroffenenanfragen/offen/angelegt — es gibt keinen automatischen Weg von der Mailbox in diese Ablage, und die Verlängerung um zwei weitere Monate (Art. 12 Abs. 3 Satz 2) wird nicht nachgehalten, sondern muss im Freitext der Datei vermerkt werden.- Keine Ablage früherer Fassungen. (
„Keine Fassungsangabe an den Rechtstexten selbst"war falsch: jeder Text trägt eine. Seit dem 21.09.2026 trägt jeder sein eigenes Datum — die Nutzungsbedingungen „Fassung vom 17. September 2026", die Datenschutzerklärung „Fassung vom 21. September 2026", weil D16 allein deren § 8 geändert hat (seit KI46 „Fassung vom 3. Oktober 2026“, § 5 Abs. 3; seit KI52 „Fassung vom 4. Oktober 2026“, Tabelle in § 5; seit DS-261006-schalter-hinweis „Fassung vom 7. Oktober 2026“, § 7a; seit I11 „Fassung vom 8. Oktober 2026“, Umlaute in der Tabelle; seit D-261008-gaeste-bremse „Fassung vom 10. Oktober 2026“, § 3 Abs. 3; seit D-261011-wiki-artikel-suchbar „Fassung vom 12. Oktober 2026“, § 5 Abs. 7, offene Wiki-Seiten im Netz), und das Impressum seit D47 „Fassung vom 28. September 2026“ (GbR, Gesellschafter, Verantwortliche nach § 18 Abs. 2 MStV), seit RL20 „Fassung vom 30. September 2026“ (Art des Angebots und Haftungsabschnitte entfallen, N449). Vorher hing alles an einer Konstante, und eine Änderung an einem Text gab den beiden anderen ein neues Datum, ohne dass dort ein Wort anders stand. Was weiterhin fehlt, ist die Geschichte — ändert sich ein Text, bleibt der alte Stand nur imgit lognachweisbar.) /stilist nicht durchsuchbar.— gebaut am 22.09.2026. Das Feld am Kopf filtert die Gliederung über Titel, Regel und Gegenprobe; gesucht wird im gezeichneten Text, den jedes Kapitel selbst meldet, und nicht im Quelltext. Drei Dinge bleiben: (a) Der Treffer führt auf das Kapitel, nicht auf die Stelle — werbackdrop-filtersucht, landet bei „Werkstoffe" und sucht den Satz dort noch einmal mit dem Auge. Hervorgehoben wird nichts. (b) Gemeldet wird beim ersten Zeichnen; Werte, die sich mit der gewählten Szene ändern — die Farbwerte in „Die Neutralen dieser Szene" —, stehen in der Suche so, wie sie beim Betreten der Seite waren. Für Regeltexte ändert das nichts, für eine Suche nach einem Farbwert schon. (c) Das Feld sucht nur in dem, wasKAPITELkennt. Ein Kapitel, das gebaut, aber nicht angemeldet ist, meldet zwar seinen Text, taucht aber in keinem Treffer auf — dieselbe Lücke, die die Gliederung schon hatte, undStilguide.test.tsxhält sie über die Zahl fest.- Kein Zustandsschirm. Ob Denotato gerade läuft, sagt keine öffentliche Seite.
Keine Startseite für Fremde.— gebaut am 20.09.2026 (D14), im Browser gesehen.Was offen bleibt, ist das Aussehen— entschieden am 23.09.2026 (N150, C34): Das Aussehen bleibt, wie es ist — keine Szene, keine weiteren Karten —, und die Seite spricht mit „du". Dass die vier Karten Eigenschaften nennen und keine Tätigkeiten (Moodle, der Stundenplan und das Spielerische kommen nicht vor), hat Christian damit bestätigt: „Mehr zeigen" stand zur Wahl und ist es nicht geworden. Die Karteikarten nennt seither der Leitsatz. Überholt am 10. und 11.10.2026 (D-261008-startseite-funktioniert, Setzung2026-10-10-startseite-showcase): Christian hat die Zurückhaltung aufgehoben und aus fünf Fassungen die Verwandlung gewählt, die Tätigkeiten vorführt, statt Eigenschaften aufzuzählen. Seit dem 11.10.2026 steht sie auf/.Die 404-Seite schlägt nichts vor.— falsch seit dem 07.09.2026: sie nennt Schnellsuche und einen Weg zurück, seit dem 21.09.2026 einen, der auch für Fremde trägt, und seit dem 22.09.2026 den Stil-Guide als Verweis. Was wirklich fehlt: sie schlägt nichts Inhaltliches vor — keine ähnliche Adresse, kein Suchfeld im Schirm selbst. Wer/dokumentestatt/documentstippt, bekommt keinen Hinweis auf den richtigen Weg, obwohl das Register ihn kennt.Kein robots.txt-Gedanke.— falsch:packages/frontend/public/robots.txtsperrt alles (Disallow: /) und begründet es im Kopf; der Hinweis auf den noindex-Kopf aus nginx steht daneben. Was offen bleibt: die nginx-Konfiguration liegt nicht im Archiv und ist deshalb nicht nachprüfbar./stilzeigt den Stand von vorgestern.— geschlossen am 21.09.2026 (K03). Der Grund war, dass niemand nachzählte; jetzt zähltverifyStil.tsnach, und der Lauf hat beim ersten Mal drei echte Rückstände gefunden (lese, „alle zwölf“ Zimmer, der Anker mit der Zeichenzahl) und eine Lücke (Guide §7.1 Stufe 2 hatte kein Kapitel). Was der Nachweis nicht kann: Er vergleicht Vorhandensein und Werte, nicht Bedeutung. Steht inkapitel.tsneben einem Kapitel der falsche Abschnitt, ist das für ihn ein gepflegtes Paar — er prüft, dass der Abschnitt existiert, nicht, dass das Kapitel ihn zeigt. Und die Prosa des Dokuments — Regeln und Gegenproben — liegt ganz außerhalb: ändert sich dort ein Satz, bleibt der Schirm still beim alten.Keine Fassungsangabe.Welche Version läuft, steht nur im Meta.— gebaut am 23.09.2026 (N191, B54), aber nicht hier. Die Fassung steht ganz unten in den Einstellungen und überPOST /api/fassung, beides nur für Angemeldete. Die Startseite und die Rechtstexte bleiben ohne, und das ist Absicht (meine Ableitung, nicht Christians Entscheidung): Eine öffentliche Versionsangabe sagt einem Fremden, gegen welchen Stand er suchen muss, und außer den Nutzern braucht sie niemand.- Keine Sprachwahl auf den Rechtstexten — und seit dem 22.09.2026 eine Naht, an der beides sichtbar wird. Die Fußzeile ist dasselbe Bauteil auf der Startseite und unter den Rechtstexten, aber die Texte kommen von außen: Die Startseite gibt
t('Impressum'), die Rechtstexte geben'Impressum'. Dieselben drei Wörter stehen damit einmal übersetzbar und einmal nicht auf demselben Schirm nebeneinander. Das ist Absicht, solange es keine zweite Fassung der Vertragstexte gibt — eine Fußzeile auf Englisch über einem deutschen Vertrag wäre die schlechtere Hälfte. Aufzulösen ist es nur mit den Texten selbst, und die zu übersetzen ist keine Programmierarbeit. - Das Dokument kennt zwölf Zimmer, gebaut sind vierzehn. §3.2 und §12 des Style-Guides nennen Stundenplan und Verwaltung nicht; beide haben eine Bereichsfarbe, ein Zimmer und eine Lautstärke wie alle anderen.
/stilsagt das seit dem 21.09.2026 offen, undverifyStil.tsrechnet nur die zwölf nach, die dastehen — die beiden anderen prüft niemand gegen eine Regel. Welche Richtung stimmt, ist eine Entscheidung: das Dokument nachziehen oder die zwei Zimmer als Ausnahme benennen. verifyStil.tsliest den Schirm als Text, nicht als Programm. Das Backend-tsconfigschließtpackages/frontendnicht ein (dieselbe Lage wie beiverifyArchitecture.ts), also sucht der Nachweis die Kapiteltitel mit einem Ausdruck aus dem Quelltext. Ein Titel, der aus einer Variablen zusammengesetzt wird, fällt durch — er würde stillschweigend als „nicht vorhanden“ gelesen. Dagegen steht heute nur eine Schranke, die den Lauf abbricht, wenn er unplausibel wenig findet; das ist ein Netz, keine Lösung.- Fünf Seiten setzen ihren Reitertitel, der Rest zeigt
DenotatoSeit dem 21.09.2026 gibt es den Haken (hooks/useSeitentitel.ts), seit dem 22.09.2026 rufen ihn außer den drei Rechtstexten auch/stilund die 404-Seite. Jeder andere Weg —/dashboard,/documents,/settings, jeder Bereich hinter der Anmeldung — zeigt weiter dasDenotatoauspackages/frontend/index.html. Der Haken ist dafür gebaut und kostet eine Zeile je Schirm; was fehlt, ist die Entscheidung, ob er in die Bereichsschirme gehört oder einmal in den Rahmen (MenuShell), der den Bereichsnamen ohnehin kennt. Die Rückmeldung (feedback/client/Rueckmeldeknopf.tsx) schicktdocument.titleals Angabe mit, woher sie kam — von jedem Schirm hinter der Anmeldung ist diese Angabe wertlos. Von/stilführt kein Weg zurück.— gebaut am 22.09.2026. Am Fuß vonStilguide.tsxsteht dieselbeRandfusszeilewie auf der Startseite und unter den Rechtstexten, mit Wegen auf/,/imprint,/privacyund/terms— unterhalb des Inhalts, außerhalb des Umschalters und außerhalb der Kapiteltexte, damit die Suche nicht „Impressum" als Treffer ohne Kapitel meldet.Stilguide.test.tsxhält die vier Ziele in ihrer Reihenfolge fest. Was bleibt: Die vier Beschriftungen stehen als deutsche Zeichenketten da und nicht als Schlüssel — dieselbe Naht wie unter Punkt 12, nur eine Seite weiter. Auf der Startseite läuft dieselbe Zeile durcht().DieRandfusszeileist im Stil-Guide nicht ausgestellt.— gebaut am 22.09.2026. Das Kapitel „Die Randfußzeile" zeigt sie mit drei Beispielwegen und nennt die Vierzig-Punkte-Regel im Text; §15 des Dokuments hat eine Zeile dafür bekommen,kapitel.tsden Eintrag (['15', '16.1']). Was bleibt, ist der Befund selbst:verifyStil.tshält Abschnitte des Dokuments gegen Kapitel und nicht Bauteile gegen Kapitel. DaßRandfusszeileundLeseflaechejetzt beide ausgestellt sind, hat kein Nachweis erzwungen — das nächste gemeinsame Bauteil kann genauso lange unausgestellt bleiben, und niemand merkt es.- Drei Seiten haben am 22.09.2026 die Lesefassung verloren, und niemand hat sie dort je im Browser gesehen.
/forgotpw,/resetpwund/mailbestaetigentrugen den Knopf, weil dieInfoseiteihn unbedingt mitbrachte; jetzt fordert ihn nur an, wer ihn braucht. In anmeldung.md stand er nie, die Änderung macht diese Datei also nicht falsch — aber sie ist auch von niemandem geprüft worden, der die drei Schirme kennt. Dieselben drei setzen weiterhin keinen Reitertitel (Punkt 15). - Kein Nachweis hält die Rechtstexte gegen die Wege, die sie versprechen. § 8 der Datenschutzerklärung nennt Datenexport und Kontolöschung unter „Einstellungen → Deine Daten". Am 21.09.2026 gegen die laufende API gemessen:
ACCOUNT_EXPORTantwortet auf POST mit 400 (vorhanden, ohne Sitzung abgewiesen), eine erfundene Nachbaradresse mit 404 — und die beiden Schirme (settings/client/Datenexport.tsx,settings/client/Kontoloeschung.tsx) stehen da.Rechtstexte.test.tsxprüft davon nichts: Es prüft, dass der Satz dasteht. Verschwindet der Knopf, bleibt der Satz grün. - Die Nummerierung hier hält kein Nachweis.
verify:seitenzählt die Punkte, er liest sie nicht — und deshalb stand hier bis zum 21.09.2026 abends die alte Folge 1, 2, 11, 12, 3 …, obwohl der Commit e99b262 (K02) sie schon am Nachmittag als durchlaufend gemeldet hatte. Die Prüfung wäre klein (die Marken einsammeln und gegen 1 bis n halten) und gehört inverifySeiten.ts; K02 hat sie bewusst nicht gebaut, weil der Vorgang die Ablage sortieren sollte und nicht den Nachweis erweitern. Am 22.09.2026 ist sie zum zweiten Mal von Hand hergestellt worden. - Keine der Seiten ist auf einem schmalen Schirm im Browser gesehen worden. Was am 21. und 22.09.2026 dazukam, ist gerechnet und als Regelsatz festgehalten (damals
Willkommen.test.tsx,Infoseite.test.tsx,Stilguide.test.tsx); jsdom rechnet kein Layout, und die laufende API liefert die Schirme nicht aus — gemessen wurde dort nur, dass sie auf/imprintund/privacymit 404 antwortet, weil die Anwendung woanders liegt. Fünf Stellen bräuchten eine echte Messung: die Empfängertabelle in § 5 der Datenschutzerklärung (Rollfeld, quer rollend), die Knopfzeile derInfoseite, die Kopfzeile der Gliederung, in der Überschrift und Suchfeld überflex-wrapnebeneinander stehen und am Telefon untereinander rutschen sollen — und seit dem 22.09.2026 der Innenrand derInfoseite, der jetzt zweierlei ist: 24 Punkte ohne Lesefläche, 16 mit ihr, weil die Fläche selbst einen trägt. Gerechnet stehen dann 390 − 2·16 − 2·12 = 334 Punkte Text auf einem Telefon, also rund 49 Zeichen. Gesehen hat das niemand. Ausgenommen ist seit dem 11.10.2026 die Startseite: Sie ist mit/ansehenauf Telefon, Tablet und Rechner, hell und dunkel, gesehen und gemessen (zuletzt.blick/20261012-075536-startseite-nachher, null Fehler). Für die fünf Stellen oben gilt der Punkt weiter. - Die Lesefläche liegt nicht dort, wo der längste Text steht. Gemessen am 21.09.2026 ist das
Blattdes Dokumenteneditors 698 Punkte breit — 102,2 Zeichen je Zeile, weiter über der Regel in Guide §9 als die Rechtstexte es vorher waren. E01 hat den Editor bewusst ausgelassen: Dort ist die Spalte zugleich die Schreibfläche, und wer schreibt, sieht eine schmalere Spalte anders an als wer liest. Das ist eine Entscheidung und keine Arbeit — sie gehört Christian. - Das Register
lesenist gebaut und nirgends benutzt.LESEMASS.lesen(455 px, Newsreader) steht incomponents/layout/Leseflaeche.tsxmit Probe daneben, aber keine Seite fordert es an: Die Rechtstexte laufen in Source Sans 3, weil sie es vorher taten, und der Guide-Vorspann ebenso. Guide §9 sagt „Fließtext in Newsreader, Dokumente, Briefing, Notizen, Rechtstexte" — danach wäreregister="lesen"an den drei Texten die richtige Wahl. Sie zu treffen hieße, die Schrift von drei Vertragstexten zu wechseln, und das ist Aussehen (Grundsatz 9). - Kein Nachweis hält eine Lesebreite gegen die Regel. Guide §9 verlangt 60–70 Zeichen; gemessen wurde das am 21.09.2026 von Hand, und der Fehler
62chhat genau deshalb monatelang dagestanden.Leseflaeche.test.tsxhält die beiden Zahlen fest, aber niemand hält fest, dass eine andere Stelle im Baum keine eigene Lesebreite erfindet. Ein Nachweis wäre klein —max-widthinchverbieten, wieverify:archschon Hexfarben verbietet — und fände den nächsten Fall vor dem Nachrechnen. - Die Rechtstexte bieten Angemeldeten „Zur Anmeldung“ an. Die
Infoseitekann den Knopf seit RL02 weglassen (angemeldet), aber nurNichtGefunden.tsxsagt ihr, wer fragt.Impressum,DatenschutzundNutzungsbedingungeninRechtstexte.tsxgeben die Angabe nicht mit. Wer angemeldet ins Impressum geht, sieht als Hauptknopf den Weg zu einer Anmeldung, die er nicht braucht; zurück in die Anwendung führt nur „Startseite“ in der Fußzeile, über die Weiterleitung von/. Im Kapitel „Eingabe“ stehen zwei Feldwerkstoffe nebeneinander.— behoben am 10.10.2026 (ES-261010-glastoene-liegenden).TextField,SelectField,DateFieldundPanelsind Papier mit Haarlinie wie dasInput;Feldwerkstoff.test.tsxhält fest, dass keiner von ihnen einen Glaston liest. Das Select „Fach …“ stand auf dem durchscheinenden Glaston bei 1,17 : 1, im Nachher-Lauf meldet der Blick dort keinen Kontrastfehler mehr. Das Musterglastoninverify:eigenstilmeldet jeden Glaston außerhalb vonSCHWEBEND, der Bestand steht auf null.- Das Muster
glastonsieht Dateien, nicht Flächen. Eine Datei inSCHWEBENDdarf den Glaston überall lesen, auch in einem liegenden Kasten neben ihrer schwebenden Leiste. DasMonatsblattist so eine Datei: Seine Kästen sind seit dem 10.10.2026 Papier, weil jemand hingesehen hat, nicht weil die Prüfung es verlangt. Und das Farbmuster im Kapitel „Farbe“ zeigt seitherueberfahrenstattglass.background; wo der Glaston noch gilt, steht nur im Kapitel „Flächen und Fenster“. - An der Startseite liegt noch eins bei Christian oder Ben. Solange
gast.erlaubtin der Verwaltung aus ist, führt der Stein-Knopf zur Registrierung statt in ein Gastkonto; die Seite selbst verrät dem Fremden nicht, dass es den Gastzugang geben könnte. Mit der Empfehlung entschieden und umkehrbar sind zwei Dinge: Das Glas des Lernzeit-Fensters lässt den zugedeckten Termin schwach durchscheinen wie das Glas der App, statt die zugedeckten Termine beim Öffnen auszublenden. Und die Iris zeigt bei langem Laden nach acht Sekunden „Zurück zur Startseite“ (Sichtprüfung Runde 7 und 8), statt es bei Escape und der Fehlerfläche zu lassen, die nach höchstens etwa sechzig Sekunden kommt. Entschieden hat Christian am 12.10.2026: Die Iris sagt beim Öffnen nur „Probebereich wird geöffnet …“. Das betonte Wort steht in der Textfarbe, nur kursiv (§3.1), nicht im Magenta des Entwurfs. Die Lernblöcke fliegen in Takt 29 einer nach dem anderen statt vier auf einmal. Die Karteikarte trägt statt des Punkts im Entwurf den Reiter in Fachfarbe aus §6, vorn links und von hinten gespiegelt; seit Runde 7 tragen ihn auch die zwei Karten, die der Begleiter vorschlägt, statt eines orangen Punkts. Der Stein-Knopf ist die einzige gewollte Ausnahme von §3.1 und §5; darum sind im Kapitel „Wiederholung“ Heute, der Bogen und die Balken „Diese Woche erledigt“ unbunt, und die Länge des Bogens („4 Tage“) steht als Wort ohne Pille (§3.5); Beere tragen nur die eigene Karte und ihre Wiederholungen, die Auswahl. - Kein Nachweis hält die Startseite gegen ihren Entwurf. Dass jede Zeit, jede Kurve und jeder Satz dem Entwurf folgen, ist am 11. und 12.10.2026 von Hand und mit einmaligen Skripten verglichen worden (Taktreihe aller vierzig Takte, die Abschnitte der Zeitachse gegen die des Entwurfs). Ändert jemand danach Entwurf oder Seite, merkt es keine Prüfung, und die jsdom-Proben sehen keine Lage. Ob der Entwurf nach dem Einbau die Quelle bleibt oder nur noch Archiv ist, ist nicht entschieden.
In Takt 29 deckt das Fenster der Lernzeit zwei Einträge des Kalenders halb zu.— behoben am 12.10.2026 (Sichtprüfung Runde 5). Das Fenster steht seither auf der Linie von 12 Uhr, unter den Veranstaltungen um 10, und rechts der Zeitachse: am Schreibtisch ab der Spalte Dienstag, am Telefon ab der Achse. Was um 12 oder 14 beginnt, liegt ganz unter dem Glas oder ganz frei; keine Kante schneidet mehr durch Schrift, und die Stunden 12 bis 18 bleiben lesbar. Am Schreibtisch ragt das Fenster 12 Punkte unter das Feld.Am Telefon deckt in Takt 29 kurz eine wartende Zeile die Uhrzeit zweier Einträge.— behoben am 12.10.2026 (Sichtprüfung Runde 6): Kurz bevor das Glas geht, solange es die Termine noch deckt, rücken die wartenden Zeilen unter die Linie von 16 Uhr, unten begrenzt vom Feld, und fliegen von dort. Vorher: Wenn das Glas der Lernzeit geht (Zeitachse 291 bis 293, gut ein Fünftel eines Takts), steht die Zeile „Di 10:00 Art. 1 GG“ noch an ihrem Platz im Fenster und liegt über der 14:00 von „Strafrecht AT“ und „Völkerrecht“; der leere Balken, der vor jedem Flug aufgeht, deckt deren Unterkante. Gefunden hat es die Brille Emil am 12.10.2026 in der Taktreihe der Sichtprüfung Runde 5. Die Ruhelagen der Takte 29 und 30 waren frei.