Alles fertig: Konsole montiert, Tageskachel als Instrument, zwei Seiten repariert

DIE KONSOLE -- DREI STUFEN DRAUF

  1. VIER NIETEN in den vier Fasen. Das Einzige, was eine Flaeche
     endgueltig zu einem GEGENSTAND macht, ist die Frage, wie sie
     befestigt ist. Ein Gehaeuse haengt nicht in der Luft.
  2. EINE GEFRAESTE NUT trennt Text von Instrumenten -- dunkel auf der
     Lichtseite, hell auf der Schattenseite. Genau umgekehrt zu einer
     aufgemalten Linie, und deshalb sieht sie nach Material aus.
  3. DIE UHR SITZT IN EINER MULDE statt auf der Platte.

Drei Fehler dabei, alle im Bildschirmfoto gesehen: Die Nieten waren
QUADRATE (eine Hintergrundebene laesst sich nicht runden -- jetzt aus
Radialverlaeufen, die selbst rund sind). Die Mulde lag UEBER der Uhr
und hat die polierte Luenette zu mattem Grau gedaempft (`::after` wird
nach allen Kindern gezeichnet). Und das Raster musste von der
Nieten-Ebene herunter: Eine Ebene hat nur EINE Deckkraft.

DIE TAGESKACHEL "WAS IST DRAN"

Die drei Zeilen sind jetzt MODULE -- Fase, Kantenlicht in der Farbe
ihres Bereichs, Eckwinkel. Sie sind damit kleine Ausgaben derselben
Bauteile, zu denen sie fuehren, was sie ja auch sind. Die ZAHL wurde
zum gefassten Schild wie das Zeichen auf den Kacheln, und zwischen den
Haelften laeuft dieselbe gefraeste Nut wie auf der Konsole.

Ein Rueckschritt dabei, von der Pruefung sofort gemeldet: Ich hatte
die Ziffer weiss gemacht, weil das auf Metall gut aussieht -- damit
war ihre Aussage weg. Die Zahl traegt die Farbe ihres Bereichs und bei
etwas Ueberfaelligem die Warnfarbe; das ist die schnellste Auskunft der
ganzen Kachel. Die Farbe gehoert in die Ziffer, nicht ins Schild.

SPICY MEDIA SIEHT DIE ZAHLEN JETZT NIRGENDS

Vorher nur Kachel und Seite -- die Creator-Zahlen standen weiterhin im
Dashboard, weil das sie ueber eine eigene Schnittstelle holt. Die ist
jetzt zu (404 am Server, nicht in der Oberflaeche). Das Dashboard
bleibt fuer sie stehen: Es faengt den Fehlschlag ausdruecklich ab.
Mit Pruefung und Gegenprobe.

UND ZWEI SEITEN, DIE BEIM ANSEHEN AUFFIELEN

Das ist der Ertrag der Durchsicht jener zwoelf Seiten, die bisher nur
GEPRUEFT und nie ANGESEHEN worden waren:

  * chat.html und uebersicht.html luden kopf.js OHNE wahl.js. Der
    Umschalter "Meine Sicht" fiel dort auf das nackte Systemfeld
    zurueck: 92 x 19 px, grauer Kasten, Systemschrift -- auf allen
    anderen Seiten ist es ein selbst gebautes Bedienelement, hinter dem
    dasselbe Feld unsichtbar bei 2 x 2 px liegt. Kaputt war nichts. Es
    sah nur aus wie aus einem anderen Programm, und genau das findet
    keine Pruefung, die auf Fehlermeldungen achtet.
    Neue Pruefung: Wer kopf.js laedt, muss wahl.js laden -- und vorher.
  * Der Chat-Rahmen gehoerte als einzige grosse Flaeche noch nicht zum
    Modulsystem. Jetzt schon.

18 Pruefungen gelaufen, alle gruen. Rechner und Handy angesehen,
dazu Kalender, Chat, Automationen, Uebersicht, Start-Check,
Steckbrief, Bereiche, Profil, Content, Scouting und Report.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-07 14:31:14 +02:00
co-authored by Claude Opus 5
parent 90d5898640
commit 532daa3edf
25 changed files with 526 additions and 209 deletions
+51
View File
@@ -426,6 +426,57 @@ console.log("\n=== Gegenprobe ===");
"aus classList.add(bedingung ? 'a' : 'b') werden beide Klassen gelesen, aber nicht die Variable");
}
/* =======================================================================
WER kopf.js LAEDT, MUSS AUCH wahl.js LADEN
Gefunden am 07.09.2026 beim Durchsehen der Seiten, die bis dahin nur
GEPRUEFT und nie ANGESEHEN worden waren -- chat.html und
uebersicht.html luden kopf.js ohne wahl.js.
Der Umschalter "Meine Sicht" ist auf allen anderen Seiten ein selbst
gebautes Bedienelement (`.wahl2`), hinter dem ein unsichtbares
Systemfeld fuer Vorleseprogramme liegt. Ohne wahl.js faellt kopf.js
auf dieses Systemfeld zurueck: 92 x 19 Pixel, grauer Kasten, weisse
Schrift, Systemschriftgroesse -- gemessen, nicht geschaetzt. Auf den
anderen Seiten misst dasselbe Feld 2 x 2 Pixel bei Deckkraft null,
weil es dort nur noch der Zugaenglichkeit dient.
KAPUTT WAR NICHTS. Der Umschalter funktionierte auf beiden Seiten --
er sah nur aus wie aus einem anderen Programm. Genau diese Sorte
Fehler findet keine Pruefung, die auf Fehlermeldungen achtet, und
auch keine, die Klassennamen zaehlt: Die Klasse `.sicht__feld` ist
NIRGENDS gestaltet und gilt deshalb zu Recht als Struktur-Anker.
Deshalb hier eine Pruefung auf die ABHAENGIGKEIT statt auf die Optik:
Wer das eine laedt, muss das andere laden -- und zwar vorher. */
console.log("\n=== Wer kopf.js laedt, laedt auch wahl.js");
{
const seitenMitKopf = [];
for (const seite of readdirSync(WS).filter((f) => f.endsWith(".html"))) {
const html = readFileSync(join(WS, seite), "utf8");
const skripte = [...html.matchAll(/<script[^>]+src="assets\/js\/([a-z0-9-]+)\.js/g)]
.map((m) => m[1]);
if (!skripte.includes("kopf")) continue;
seitenMitKopf.push({ seite, skripte });
}
ok(seitenMitKopf.length >= 10,
`${seitenMitKopf.length} Seiten laden kopf.js`);
const ohneWahl = seitenMitKopf.filter((s) => !s.skripte.includes("wahl")).map((s) => s.seite);
ok(ohneWahl.length === 0, ohneWahl.length
? `ohne wahl.js: ${ohneWahl.join(", ")}`
: "alle davon laden auch wahl.js");
/* UND ZWAR VORHER. kopf.js fragt beim Aufbau nach dem fertigen
Bedienelement; kommt wahl.js danach, ist es zu spaet. */
const zuSpaet = seitenMitKopf
.filter((s) => s.skripte.indexOf("wahl") > s.skripte.indexOf("kopf"))
.map((s) => s.seite);
ok(zuSpaet.length === 0, zuSpaet.length
? `wahl.js steht zu spaet auf: ${zuSpaet.join(", ")}`
: "und immer VOR kopf.js");
}
/* =======================================================================
KEIN SKRIPT BAUT SICH SEINE EIGENE ROLLENLISTE