From e00a905ce8a1a1cf3fb62c12b4ec5d7cc77c0c69 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Sat, 3 Oct 2026 13:47:50 +0200 Subject: [PATCH] Dopplung weg: "Bei dir klingelt nichts" stand zweimal auf einem Schirm Der neue Kasten von heute Mittag hat die alte Tagesblick-Zeile nicht ersetzt, sondern sich darueber gesetzt. Beide sagten dasselbe, untereinander, auf derselben Seite. GEFUNDEN HAT DAS NUR EIN BILDSCHIRMFOTO. Beide Teile waren fuer sich gruen: pruef-glocke verlangte die Zeile, pruef-push-hinweis den Kasten, und keine der beiden konnte sehen, dass die andere existiert. Zahlen zeigen so etwas nie. Deshalb macht pruef-push-hinweis jetzt bei jedem Lauf ein Foto -- und scrollt vorher hin, weil der erste Versuch brav die Begruessungskachel zeigte und den Kasten gar nicht im Bild hatte. Ein Beweisbild ohne das, was es beweisen soll, ist schlimmer als keins: Man glaubt ja, hingesehen zu haben. Entfernt wurde die aeltere der beiden (19.09.2026). Sie war gut gebaut, server-seitig und nicht wegklickbar -- aber sie hat das Problem nicht geloest: Am 03.10. nachgemessen hatten immer noch 12 von 20 kein Geraet, darunter die linke Hand und ein Modi. Sie SAGT es und man kann nichts tun; sie fuehrt nur auf eine andere Seite. Der neue Kasten hat einen Knopf und erklaert den iPhone-Fall, in dem Web-Push ohne Home-Bildschirm gar nicht geht. Entscheidung von Filipe am 03.10. Offen gesagt, was damit aufgegeben ist: Wer "Nicht jetzt" tippt, bekommt keine zweite Erinnerung mehr. Gegensicherung ist die Personenliste -- dort steht seit heute bei jeder Person, die nichts bekommt, genau das. pruef-glocke 36 -> 33, und die Zahl ist erklaert: 5 Pruefungen zur alten Zeile entfernt, 2 neue dafuer. Die neuen pruefen das GEGENTEIL von vorher -- dass die Zeile nicht unbemerkt zurueckkommt -- mit der Zahl der geprueften Hinweise in der Bedingung, damit eine leere Antwort der Schnittstelle nicht als "steht nicht drin" durchgeht. Die alte Gegenprobe ("mit angemeldetem Geraet ist der Hinweis weg") ist ersatzlos entfallen, nicht aus Bequemlichkeit: Sie waere ab jetzt IMMER gruen, egal was das Haus tut. Eine Pruefung, die nichts mehr widerlegen kann, taeuscht nur Deckung vor. Was sie geprueft hat, prueft pruef-push-hinweis am neuen Kasten, mit einer echten Anmeldung. OHNE_ZAHL in start.js bleibt als leere Liste stehen -- der naechste Zustandshinweis braucht sie wieder, und als Liste ist sie die eine Stelle dafuer. Gegengemessen: pruef-tagesblick 23, pruef-start-ansicht 160, pruef-push-hinweis 16 -- alle 0 Fehler. Co-Authored-By: Claude Opus 5 --- server/pruef-glocke.mjs | 72 ++++++++++++++++----------------- server/pruef-push-hinweis.mjs | 15 +++++++ server/workspace-hinweise.js | 58 ++++++++++++-------------- workspace/anruf-probe.html | 10 ++--- workspace/app.webmanifest | 8 ++-- workspace/assets/js/start.js | 24 ++++++----- workspace/aufgaben.html | 38 ++++++++--------- workspace/automation.html | 32 +++++++-------- workspace/befinden.html | 34 ++++++++-------- workspace/bereich.html | 44 ++++++++++---------- workspace/bewerben.html | 38 ++++++++--------- workspace/bewerbungen.html | 36 ++++++++--------- workspace/buehne.html | 6 +-- workspace/calls.html | 34 ++++++++-------- workspace/chat.html | 40 +++++++++--------- workspace/content.html | 34 ++++++++-------- workspace/crew-index.html | 12 +++--- workspace/crew.webmanifest | 8 ++-- workspace/dateien.html | 34 ++++++++-------- workspace/entwicklung.html | 36 ++++++++--------- workspace/hilfe.html | 30 +++++++------- workspace/index.html | 10 ++--- workspace/kalender.html | 34 ++++++++-------- workspace/leistung.html | 32 +++++++-------- workspace/manager-ziele.html | 28 ++++++------- workspace/material.html | 32 +++++++-------- workspace/notizen.html | 28 ++++++------- workspace/personen.html | 32 +++++++-------- workspace/profil.html | 36 ++++++++--------- workspace/reaktion.html | 38 ++++++++--------- workspace/rechte.html | 34 ++++++++-------- workspace/report.html | 36 ++++++++--------- workspace/scouting.html | 32 +++++++-------- workspace/start.html | 32 +++++++-------- workspace/startcheck.html | 34 ++++++++-------- workspace/steckbrief.html | 36 ++++++++--------- workspace/support.html | 28 ++++++------- workspace/tafel.html | 6 +-- workspace/talente.html | 36 ++++++++--------- workspace/team.html | 32 +++++++-------- workspace/teamlage.html | 34 ++++++++-------- workspace/teilen.html | 30 +++++++------- workspace/treff-moderation.html | 32 +++++++-------- workspace/treff-regeln.html | 32 +++++++-------- workspace/uebersicht.html | 32 +++++++-------- workspace/unsere-seiten.html | 30 +++++++------- workspace/unterstuetzen.html | 32 +++++++-------- workspace/werdegang.html | 32 +++++++-------- workspace/willkommen.html | 30 +++++++------- workspace/wissen.html | 34 ++++++++-------- 50 files changed, 773 insertions(+), 764 deletions(-) diff --git a/server/pruef-glocke.mjs b/server/pruef-glocke.mjs index 4431fc4c..5f95f161 100644 --- a/server/pruef-glocke.mjs +++ b/server/pruef-glocke.mjs @@ -512,42 +512,40 @@ melde("\n=== Anmelden und wieder abmelden ==="); const zahl = () => p.prepare("SELECT COUNT(*) AS n FROM push_anmeldungen").get().n; ok(zahl() === 0, `vorher ${zahl()} Anmeldungen in der Datenbank`); - /* ==== "BEI DIR KLINGELT NICHTS" (19.09.2026) ====================== + /* ==== "BEI DIR KLINGELT NICHTS" IST HIER WEG (03.10.2026) ======== - Gemessen an diesem Tag auf dem echten Server: Von elf Zugaengen - hatten SIEBEN kein einziges Geraet angemeldet. Bei ihnen kommt - nichts an, solange die Seite zu ist -- keine Aufgabe, kein Termin, - kein Anruf. + Bis heute stand dieser Hinweis in "Was ist dran?", eingefuehrt am + 19.09., als sieben von elf Zugaengen kein Geraet hatten. Er hat + das Problem nicht geloest: Am 03.10. nachgemessen waren es immer + noch 12 von 20, darunter die linke Hand und ein Modi. Er SAGT es, + aber man kann nichts tun -- er fuehrt nur auf eine andere Seite. - Die Glocke sagt das seit jeher korrekt. Nur tippt sie niemand an: - Sie ist ein stiller Schalter in einer Leiste. Deshalb steht es - jetzt auch dort, wo man hinsieht -- in "Was ist dran?". + Ersetzt durch einen Kasten mit "Anschalten"-Knopf, direkt ueber + dieser Liste (gemessen in pruef-push-hinweis.mjs, 16 Pruefungen). - DIE GEGENPROBE IST DER EIGENTLICHE PUNKT: Der Hinweis muss - VERSCHWINDEN, sobald ein Geraet da ist. Eine Warnung, die immer - kommt, ist keine Warnung mehr -- und bei sieben von elf Leuten - stuende sie sonst dauerhaft ueber den echten. */ + WAS HIER JETZT GEPRUEFT WIRD, ist das Gegenteil von vorher, und + zwar aus einem Grund: Aufgefallen ist die Dopplung erst auf einem + Bildschirmfoto -- beide Saetze standen untereinander auf + demselben Schirm. Zahlen haetten das nie gezeigt, beide Teile + waren fuer sich genommen gruen. Diese Pruefung sorgt dafuer, dass + die Zeile nicht unbemerkt zurueckkommt. */ const hinweise = async () => (await seite.evaluate(async () => { const a = await fetch("/workspace/api/hinweise", { credentials: "same-origin" }); return a.json(); })).hinweise || []; { - const vorher = await hinweise(); - const h = vorher.find((x) => x.art === "kein_geraet"); - ok(!!h, "ohne Geraet steht der Hinweis in „Was ist dran?“"); - ok(h?.ziel === "anruf-probe.html", - `und er fuehrt auf die Seite, die sagt warum (${h?.ziel})`); - ok(h?.stufe === "offen", - `als offener Punkt, nicht als Warnung (${h?.stufe}) — sonst stuende er ` - + "dauerhaft ueber den echten Warnungen"); - /* Und auf dem Bildschirm steht er ohne die "1" davor: Er zaehlt - nichts, er beschreibt einen Zustand. */ - const sichtbar = await seite.evaluate(() => + const offen = await hinweise(); + /* Die Zahl gehoert in die Bedingung: Kaeme die Schnittstelle gar + nicht zustande, waere die Liste leer -- und "kein_geraet steht + nicht drin" waere gruen, ohne etwas gesehen zu haben. */ + ok(Array.isArray(offen) && !offen.some((x) => x.art === "kein_geraet"), + `"Bei dir klingelt nichts" steht nicht mehr in der Liste ` + + `(${offen.length} Hinweise geprueft) -- es stuende sonst zweimal auf einem Schirm`); + const aufDerSeite = await seite.evaluate(() => [...document.querySelectorAll(".dran__punkt")] - .map((li) => li.textContent.trim()).find((t) => /klingelt nichts/.test(t)) || ""); - ok(/klingelt nichts/.test(sichtbar) && !/^\s*1/.test(sichtbar), - `auf der Seite steht er ohne Zahl davor: „${sichtbar.replace(/\s+/g, " ").slice(0, 60)}“`); + .filter((li) => /klingelt nichts/.test(li.textContent)).length); + ok(aufDerSeite === 0, `und auch nicht auf der Seite (${aufDerSeite})`); } await seite.click("#glocke"); @@ -555,17 +553,17 @@ melde("\n=== Anmelden und wieder abmelden ==="); ok(zahl() === 1, `nach dem Klick: ${zahl()} Anmeldung`); - /* GEGENPROBE: Jetzt muss der Hinweis weg sein. */ - { - /* OHNE NEULADEN. Der erste Anlauf lud die Seite neu -- danach war - das Test-Doppel fuer den Push-Dienst weg, der Glockenknopf stand - wieder auf "aus", und die drei folgenden Pruefungen meldeten - Fehler, die es nicht gab. Die Schnittstelle antwortet ohnehin - live; eine neue Seite braucht es dafuer nicht. */ - const nachher = await hinweise(); - ok(!nachher.some((x) => x.art === "kein_geraet"), - "mit einem angemeldeten Geraet ist der Hinweis weg — nichts zu quittieren"); - } + /* Hier stand bis zum 03.10.2026 die Gegenprobe "mit angemeldetem + Geraet ist der Hinweis weg". Sie ist ersatzlos entfallen -- nicht + aus Bequemlichkeit, sondern weil sie seit dem Entfernen des + Hinweises IMMER gruen waere, egal was das Haus tut. Eine + Pruefung, die nichts mehr widerlegen kann, bestaetigt nichts; + sie taeuscht nur Deckung vor. + + Was sie geprueft hat ("verschwindet von selbst, sobald ein Geraet + da ist"), prueft jetzt pruef-push-hinweis.mjs am neuen Kasten -- + dort mit einer echten Anmeldung, die nachweislich in der + Datenbank landet. */ const eintrag = p.prepare("SELECT * FROM push_anmeldungen").get(); ok(eintrag?.person_id === idDogi && /^https:\/\//.test(eintrag?.endpunkt || ""), diff --git a/server/pruef-push-hinweis.mjs b/server/pruef-push-hinweis.mjs index e08a3bc3..07b5c317 100644 --- a/server/pruef-push-hinweis.mjs +++ b/server/pruef-push-hinweis.mjs @@ -165,6 +165,21 @@ const seite = await anmelden(kontext); return Math.round(k.getBoundingClientRect().right - document.documentElement.clientWidth); }); ok(ueber <= 0, `nichts steht ueber (${ueber} px)`); + + /* EIN BILD DAZU. Zahlen sagen, dass er passt -- nicht, ob er + aussieht wie etwas, das man anfassen moechte. + + ERST HINSCROLLEN. Der erste Versuch zeigte brav die + Begruessungskachel: Der Hinweis steht darunter und war im Bild + gar nicht drin. Ein Beweisbild ohne das, was es beweisen soll, + ist schlimmer als keins -- man glaubt ja, hingesehen zu haben. */ + await seite.evaluate(() => document.querySelector("#push-hinweis") + .scrollIntoView({ block: "center" })); + await seite.waitForTimeout(400); + await seite.screenshot({ + path: new URL("./pruef-push-hinweis.png", import.meta.url).pathname + .replace(/^\/([A-Za-z]:)/, "$1"), + }); } /* ===================================================================== diff --git a/server/workspace-hinweise.js b/server/workspace-hinweise.js index fb3f875a..74fc45c7 100644 --- a/server/workspace-hinweise.js +++ b/server/workspace-hinweise.js @@ -377,43 +377,37 @@ hinweisRouter.get("/workspace/api/hinweise", (req, res) => { "neue Anfrage für Modi", "bewerbungen.html", zaehle("SELECT COUNT(*) n FROM bewerbungen WHERE zustand = 'neu'", [])); - /* ==== BEI DIR KLINGELT NICHTS (19.09.2026) ======================= + /* ==== BEI DIR KLINGELT NICHTS -- STEHT JETZT WOANDERS ========= - Gemessen an diesem Tag: Von elf Zugaengen hatten SIEBEN kein - einziges Geraet angemeldet. Bei ihnen kommt keine einzige - Erinnerung an, solange die Seite zu ist -- keine Aufgabe, kein - Termin, kein Anruf. + Hier stand bis zum 03.10.2026 der Hinweis "Bei dir klingelt + nichts -- kein Geraet angemeldet", eingefuehrt am 19.09., als + sieben von elf Zugaengen kein Geraet hatten. - Die Glocke oben rechts sagt das seit jeher korrekt ("Benach- - richtigungen aus") und kennt sogar den iPhone-Sonderfall. Nur - tippt sie niemand an: Sie ist ein stiller Schalter in einer - Leiste, kein Hinweis. Deshalb steht es jetzt dort, wo man - hinsieht. + ER HAT DAS PROBLEM NICHT GELOEST. Am 03.10. nachgemessen: + immer noch 12 von 20 ohne Anmeldung, darunter die linke Hand + und ein Modi. Der Grund liegt auf der Hand -- er SAGT es, aber + man kann nichts tun: Er fuehrt auf anruf-probe.html, wo man + sich erst zurechtfinden muss. - DIESER HINWEIS GEHT NUR AN DIE PERSON SELBST, nicht an die - Sicht. `req.person` und nicht `person`: Wenn DogFather die Lage - eines Scouts ansieht, waere "bei DIR klingelt nichts" eine - Aussage ueber den falschen Menschen -- und eine, die er nicht - loesen kann. + Ersetzt durch einen Kasten auf der Startseite mit einem + "Anschalten"-Knopf (glocke.js, `hinweisZeichnen`). Ein + Fingertipp statt eines Umwegs -- und er erklaert den + iPhone-Fall, in dem Web-Push ohne Home-Bildschirm gar nicht + geht. Das wusste hier niemand. - STUFE "offen", NICHT "warnung". Es ist kein Ausfall, sondern - etwas, das man einmal einrichtet. Ein rotes Warnzeichen, das - bei sieben von elf Leuten dauerhaft oben steht, waere nach - einer Woche unsichtbar -- und mit ihm die echten Warnungen - daneben. + WARUM NICHT BEIDES: Der neue Kasten sitzt auf derselben Seite, + direkt ueber dieser Liste. Zwei Saetze zur selben Sache auf + EINEM Bildschirm sind kein doppelter Schutz, sondern zwei + Stellen, die irgendwann Verschiedenes behaupten -- derselbe + Grund, aus dem die Betreuungs-Auswahl am 31.08. zusammengelegt + wurde. - ER VERSCHWINDET VON SELBST, sobald ein Geraet angemeldet ist. - Nichts zu quittieren, nichts, was veralten kann -- Regel 1 - dieser Datei. */ - if (req.person?.id) { - const geraete = zaehle( - "SELECT COUNT(*) n FROM push_anmeldungen WHERE person_id = ?", [req.person.id]); - if (!geraete) { - dazu("kein_geraet", "offen", - "Bei dir klingelt nichts – kein Gerät angemeldet", - "anruf-probe.html", 1); - } - } + WAS DAMIT AUFGEGEBEN IST, offen gesagt: Diese Zeile liess sich + nicht wegklicken, der neue Kasten schon (einmalig, je Geraet). + Eine Entscheidung von Filipe am 03.10. Die Gegensicherung ist + die Personenliste: Dort steht seit heute bei jeder Person, die + nichts bekommt, genau das -- die Leitung sieht es also + weiterhin, auch wenn jemand den Kasten wegtippt. */ /* ---------- Manager-Ziele (02.10.2026) ---------- diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 7c498df1..49cb2438 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,8 +16,8 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +