Files
dogfather-universe/workspace/buehne.html
T
DogFatherGitandClaude Opus 5 d5c84c7608 Abzeichen am App-Symbol - und die Zahl gehoert zu einem Haus
Die kleine Zahl auf dem Symbol des Startbildschirms. Sie fehlte ganz;
setAppBadge kam im Haus kein einziges Mal vor.

ZWEI ENTSCHEIDUNGEN

Sie zaehlt ungelesene Nachrichten und nichts sonst. Ein Abzeichen
muss weggehen koennen: Nachrichten verschwinden, sobald man sie
liest; eine ueberfaellige Aufgabe verschwindet nicht dadurch, dass
man die App oeffnet. Eine Zahl, die dauerhaft dasteht, ist nach drei
Tagen kein Hinweis mehr, sondern ein Fleck.

Und sie hat EINE Quelle. Im Browser haengt sie an chatZahlZeigen() -
der einen Stelle, an der die Zahl ohnehin gesetzt wird (beim Laden,
aus dem Ereignisstrom, beim Lesen). Fuer die geschlossene App - wo
das Abzeichen ueberhaupt erst etwas wert ist - reist dieselbe Zahl in
der Benachrichtigung mit. Der Service Worker setzt sie nur, wenn eine
dabei ist: Eine Aufgabenerinnerung mit "0" haette dem Chat sein
Abzeichen weggenommen.

DER FUND NEBENBEI

Beim Herausloesen der Abfrage fiel auf, dass sie nie nach dem Haus
gefragt hat - die Raumliste zwanzig Zeilen darueber tut es laengst.
Gemessen: Eine Managerin schreibt DogFather an der Agenturwand an,
sein Zaehler auf crew. springt von 0 auf 1. Seit dem 24.09. soll das
nicht mehr sein. Aufgefallen ist es erst jetzt, weil dieselbe Zahl ab
heute auf dem Startbildschirm steht - und eine Zahl, die etwas
Falsches zeigt, ist schlimmer als keine.

Behoben ueber hausWo(); die Meldung nimmt das Haus des Raums, aus dem
sie stammt.

GEPRUEFT

server/pruef-abzeichen.mjs, 19 Messungen am echten Weg: ein
nachgebauter Browser macht die Benachrichtigung mit seinem privaten
Schluessel auf und liest die Zahl heraus. Mit Gegenproben - ohne Zahl
kommt keine mit, NaN rutscht nicht durch, eine echte Sieben schon.
Und Abschnitt 7 wird rot, sobald man die Hausregel wieder herausnimmt
(nachgestellt).

Zwei eigene Messfehler unterwegs, beide im Text festgehalten: eine
Suche, die im Kommentar landete statt im Code (jetzt ueber
jsOhneKommentar), und Aufrufe ohne Host-Feld - ueber 127.0.0.1 gibt
es kein Haus, die Pruefung mass also eine Regel an einer Verbindung,
die sie gar nicht kennt.

helfer-push-aufmachen.mjs: das Entschluesseln stand als lokale
Funktion in pruef-push-weg; zwei Abschriften waeren die, die
auseinanderlaufen.

Nachbarlaeufe gruen: push, push-ziel, push-weg (17 unveraendert),
arten, portnummern, struktur, chat, chat-kanaele, chatkachel, anruf,
haus-trennung, zwischenspeicher.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-30 13:39:55 +02:00

70 lines
3.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Bühne – das laufende Video</title>
<!-- ======================================================================
DAS LAUFENDE VIDEO ALS BROWSER-QUELLE (28.09.2026)
Zeigt das Video, das gerade in der Reaction läuft — auf dieselbe
Sekunde wie bei allen anderen. Sonst nichts: kein Chat, keine
Kameras, keine Bedienung, kein Rand.
WARUM DIE EIGENE KAMERA HIER NICHT DRIN IST: Sie ist in OBS
direkt als Gerät verfügbar, in besserer Qualität und frei in
Größe und Lage. Den Umweg über den Browser zu nehmen hieße,
Qualität gegen nichts einzutauschen — und die Größe wäre dann
festgelegt statt frei.
Sind GÄSTE im Bild, kommen deren Kameras über eine
Direktverbindung an, und die braucht eine angemeldete Seite.
Dafür gibt es den Bühnenmodus der Reaction-Seite
(`reaktion.html?nur=buehne`), der als Fenster aufgenommen wird.
In OBS: Quelle → Browser → diese Adresse, 1920 × 1080,
„Steuerung anzeigen" aus.
====================================================================== -->
<style>
html, body {
margin: 0; padding: 0;
background: #000;
height: 100%; overflow: hidden;
font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
}
#platz { position: fixed; inset: 0; }
#platz iframe { width: 100%; height: 100%; border: 0; display: block; }
/* ==== BEI „NUR KAMERA" GEHT DAS BILD AUS ========================
Sonst läge im Stream ein stehengebliebenes YouTube-Bild unter
den Kameras — und Filipe sähe es nicht, weil er in OBS auf
seine Szene schaut und nicht auf die Quelle.
`visibility` UND NICHT `display`. Ein Spieler, den man aus dem
Seitenaufbau nimmt, hört auf zu dekodieren; beim Zurückschalten
müsste er erst wieder an die richtige Stelle springen, und das
sehen dann alle. So läuft er weiter, nur eben unsichtbar, und
ist in derselben Sekunde wieder da. */
body[data-bild="aus"] #platz { visibility: hidden; }
/* Was zu sehen ist, wenn gerade nichts läuft. Schwarz und still --
eine Beschriftung stünde im Stream. Nur bei einem falschen
Schlüssel gibt es einen Hinweis, denn den sieht man sonst nie. */
.obs-fehler {
position: fixed; left: 16px; top: 16px;
padding: 10px 14px; border-radius: 10px;
background: rgba(140, 20, 30, .9); color: #fff; font-size: 14px;
}
</style>
<!-- DIE WERBEEINBLENDUNG. Dieselbe Datei wie in der Reaction-Seite:
Zwei Fassungen altern unterschiedlich, und dann sieht der Stream
anders aus als das, worueber geredet wird. -->
<link rel="stylesheet" href="assets/css/werbung.css?v=202609301339" />
</head>
<body class="obs-buehne">
<div id="platz"></div>
<script src="assets/js/werbung.js?v=202609301339" defer></script>
<script src="assets/js/buehne.js?v=202609301339" defer></script>
</body>
</html>