Der Treff sagt jetzt, ob gerade gestreamt wird

Filipe zu dieser Seite: "mach was anderes daraus oder mach es viel
krass und geiler ... erstell was was mich von den socken schmeisst. es
soll wirklich sogar ein wow effekt fuer die community ergeben." Dazu
die eine Auflage: die Kachel bleibt.

WAS SIE WAR: zwei Karten mit zwei Adressen. Sauber gebaut, richtig
beschriftet -- und niemand kam ein zweites Mal wieder. Wer im Treff
ist, kennt die Website. Den Rabattcode merkt man sich beim ersten Mal.

DIE FRAGE, DIE WIRKLICH JEMAND HAT, IST EINE ANDERE: Laeuft er
gerade? Und wenn nicht -- wie lange noch? Die Antwort kennt das Haus
seit dem 20.08.: postfach.dogfather-universe.com/live-status, derselbe
Dienst, von dem der oeffentliche Streamplan lebt. Im Treff gab es sie
bisher nicht.

Jetzt steht oben ein Puls: ein Ring, der sich ueber den Tag bis zur
naechsten Sendezeit fuellt, darin der Countdown auf die Sekunde. Sendet
er, wird die Karte rot, atmet im Ruhepuls und traegt den Titel des
Streams plus einen Weg hin. Darunter die drei Accounts und -- wenn die
Verwaltung eines eintraegt -- das besondere Event mit eigener Uhr.

DREI AUSGAENGE, NICHT ZWEI. Das ist der eigentliche Unterschied zur
oeffentlichen Seite: streamplan.js faengt dort jeden Fehler ab und
setzt `istLive = false`. Aus "wir konnten nicht fragen" wird "er sendet
nicht" -- und wer das liest, macht die Seite zu und verpasst den
Stream. Der Dienst liefert `autoHealthy` sogar mit; gelesen wird es
draussen nicht. Hier schon: Bei einer Stoerung steht "Konnten wir
gerade nicht nachsehen", dazu der Hinweis, dass das NICHT heisst, dass
kein Stream laeuft. Der Countdown laeuft dabei weiter -- er braucht
kein Netz.

NICHTS IST ABGESCHRIEBEN. Die drei Accounts kommen ueber
/workspace/api/draussen aus derselben KANAELE-Liste, an der die
Aufgabenverteilung haengt; die Adressen baut der Steckbrief. Die
Sendezeit steht im Server, und pruef-draussen haelt sie gegen
FIX_STUNDE in streamplan.js -- verschiebt jemand den Termin und aendert
nur einen Ort, wird die Pruefung rot.

Gemessen, bevor gebaut wurde: der Dienst antwortet und meldet sich
gesund, CORS steht auf *, und `connect-src` der Treff-Seiten fuehrt
postfach bereits. Ohne das Letzte waere der Abruf still blockiert
worden und haette ausgesehen wie ein toter Dienst.

Die Kachel heisst jetzt "Draussen" statt "Unsere Seiten" -- drei Dinge
statt zwei Adressen. Ziel und Datei bleiben gleich.
pruef-wege-nach-draussen schreibt den Namen nicht mehr ab, sondern
verlangt, dass Kachel und Seitenueberschrift uebereinstimmen. Zwei
Namen fuer denselben Ort waren schon einmal ein echter Fehler.

Nebenbefund, dort gleich behoben: Dieselbe Pruefung verlangte, dass
die Community-Kacheln restlos in Dreierreihen aufgehen -- obwohl ihr
eigener Kommentar sagt, eine freie Zelle am Ende sei erlaubt. Sie war
rot bei einwandfreiem Raster. Gemessen wird jetzt, was wirklich
schiefgeht: eine doppelt breite Kachel, die in der letzten Spalte
beginnt und die Zelle davor leer laesst. Mit Gegenprobe.

pruef-draussen: 39 Pruefungen, alle vier Lagen im echten Browser --
die Stoerung wird dafuer absichtlich hergestellt.
pruef-wege-nach-draussen: 67 statt 66, keine Fehler mehr.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-21 12:06:23 +02:00
co-authored by Claude Opus 5
parent 9a71f3a242
commit eca9aed279
44 changed files with 2141 additions and 729 deletions
+34 -4
View File
@@ -1173,7 +1173,21 @@ const TREFF_BEREICHE = [
zeichen: "content", ton: 30, ziel: "bereich.html?b=wunsch", szene: "portal" },
{ ...TREFF_GRUPPE, name: "Highlights", unter: "Eure Clips und Bilder",
zeichen: "live", ton: 29, ziel: "bereich.html?b=highlight", szene: "arena" },
{ ...TREFF_GRUPPE, name: "Unsere Seiten", unter: "Website, Shop & dein Rabatt",
/* HIESS BIS ZUM 21.09.2026 "Unsere Seiten" (Ziel und Datei bleiben
gleich, nur der Name auf der Kachel aendert sich).
Dahinter stehen jetzt drei Dinge statt zwei Adressen: ob gerade
gestreamt wird, wo man Dogi sonst findet, und die beiden Seiten mit
dem Rabatt. "Unsere Seiten" haette davon nur noch den letzten
Drittel benannt -- und wer wegen des Live-Status wiederkommt,
findet eine Kachel nicht, die nach etwas anderem klingt.
DER NAME STEHT AB JETZT NUR EINMAL IM HAUS: pruef-wege-nach-draussen
liest die Ueberschrift der Seite und verlangt, dass die Kachel
genauso heisst. Zwei Namen fuer dieselbe Sache waren schon einmal
ein echter Fehler (die zwei Kacheln "Chat" am 19.09.) -- man klickt
den falschen und sucht den Unterschied. */
{ ...TREFF_GRUPPE, name: "Draußen", unter: "Ist er live? Kanäle, Shop & dein Rabatt",
zeichen: "hinaus", ton: 38, ziel: "unsere-seiten.html", szene: "portal" },
{ ...TREFF_GRUPPE, name: "Mitmachen", unter: "Wie du dazugeh\u00f6ren kannst",
zeichen: "personen", ton: 32, ziel: "bereich.html?b=mitmachen", szene: "garage" },
@@ -1758,16 +1772,32 @@ export const MODI_STUFEN = [
haette dafuer einen falschen Kanal erzwungen -- und ein falscher
Eintrag ist schlechter als ein leerer.
===================================================================== */
/* ZWEI SAETZE JE KANAL, WEIL ES ZWEI LESERSCHAFTEN GIBT (21.09.2026).
`text` erklaert dem TEAM, wofuer der Kanal da ist -- es steht an
einer Aufgabe und beantwortet "wo soll das hin". `fuerDraussen`
steht auf der Community-Seite und beantwortet etwas anderes: "was
finde ich da". "Hier wird geschnitten, beschriftet und hochgeladen"
ist fuer die Zuschauerin keine Auskunft, sondern ein Blick in eine
fremde Werkstatt.
ES BLEIBT EINE LISTE. Der zweite Satz haengt am Kanal, nicht in
einer zweiten Aufzaehlung woanders -- sonst haette ein vierter
Account wieder zwei Orte, und einer davon wird vergessen. Genau so
ist am selben Tag "@hasidog00804" entstanden. */
export const KANAELE = [
{ wert: "dogfather", name: "DogFather", handle: "@dogfather0804",
text: "Der Hauptkanal. Die Livestreams und alles, was unmittelbar "
+ "daran hängt." },
+ "daran hängt.",
fuerDraussen: "Der Hauptkanal — hier laufen die Livestreams." },
{ wert: "hasidog", name: "HasiDog", handle: "@hasidog0804",
text: "Der zweite Account — eigene Zuschauer, eigener Ton. Was hier "
+ "läuft, ist nicht einfach dasselbe noch einmal." },
+ "läuft, ist nicht einfach dasselbe noch einmal.",
fuerDraussen: "Der zweite Account. Eigener Ton, eigene Leute." },
{ wert: "clips", name: "DogFather Clips", handle: "@dogis.modi.gang",
text: "Nur Ausschnitte. Hier wird geschnitten, beschriftet und "
+ "hochgeladen, nicht gesendet." },
+ "hochgeladen, nicht gesendet.",
fuerDraussen: "Die besten Ausschnitte zum Nachschauen." },
];
/** Zu welchem Kanal gehoert dieser TikTok-Name?