From e5e5953c4345deb5463a8ed56e76b3204d27ccce Mon Sep 17 00:00:00 2001 From: Dogfather Date: Fri, 25 Sep 2026 03:39:04 +0200 Subject: [PATCH] Die Schriftleiste klappt hinter einen Knopf -- 73 px weniger Konsole auf dem Handy Filipe: "die sachen von screen3 verbinde die mit dem auf screen4. so dass wenn man drauf drueckt man die anderen zu sehen bekommt. damit es nicht zu viel platz nimmt. und dan screen5, passe die reihenfolge der sachen danach an und dan perfektionierst du das alles auf dem handy auch bitte." F, K, U und S standen als EIGENE ZEILE ueber dem Schreibfeld -- dauerhaft, auf jedem Geraet. Gemessen auf 390 px: Die Konsole brauchte dafuer drei Reihen statt zwei. Nachgemessen ist es jetzt genau 73 px Hoehe, jeden Tag, fuer vier Zeichen, die man in den seltensten Nachrichten braucht. DER KNOPF HEISST "Aa" UND STEHT ALS LETZTES WERKZEUG, direkt vor dem Schreibfeld -- das ist die neue Reihenfolge, um die Filipe gebeten hat: Bueroklammer, Mikrofon, GIF und Emoji fuegen etwas EIN; das hier veraendert, was schon dasteht. Die Reihe geht damit von "dazu" nach "daran", und das Letzte liegt dem Text am naechsten. "Aa" und kein Symbol: Ein Stift heisst "bearbeiten", ein Pinsel "malen". Fuer Fett und Kursiv gibt es seit jeher genau ein Zeichen, das jeder liest, ohne es zu lernen. AUF DEM HANDY IST DAS DER GANZE PUNKT: Statt drei Reihen (Zeichen / Werkzeuge / Feld+Senden) sind es zwei. Der Aa-Knopf faellt dabei nicht ins Gewicht, weil er IN der Werkzeuggruppe sitzt -- die bricht als Block um, und ein Knopf mehr laesst das Schreibfeld nicht schrumpfen. Das ist dieselbe Ueberlegung, die die Gruppe am 23.09. ueberhaupt entstehen liess. DIE WAHL WIRD GEMERKT. Wer viel gestaltet, gestaltet weiter -- die Leiste bleibt dann auch nach dem Neuladen offen. Die TASTENKUERZEL laufen unabhaengig davon: Strg+B und Strg+I haengen am Schreibfeld, nicht an der Leiste. Zugeklappt wird sie versteckt, nicht abgebaut. ZWEI SACHEN AN DEN PRUEFUNGEN, und die erste ist ein Fund: pruef-chat-optik verlangte "die vier Werkzeuge stehen in einer Gruppe" -- mit einer festen 4. Diese Zahl war vom ersten Tag an eine Rechnung von gestern: Kommt ein Werkzeug dazu, wird die Zeile rot, obwohl nichts kaputt ist, und wer sie dann auf 5 setzt, macht denselben Fehler mit einer anderen Zahl. Dieses Haus ist an festen Zahlen schon dreimal hereingefallen (Kopfleiste 06.09., Schriftgroessen 14.09., Tippziele 20.09.). Gefragt wird jetzt, was gemeint ist: Liegt KEINES der Werkzeuge ausserhalb der Gruppe? Das misst, statt zu rechnen -- und der naechste Knopf bringt es nicht zu Fall. Die Anzahl steht trotzdem in der Bedingung, sonst waeren "0 von 0" gruen. Die Gegenprobe wollte im ersten Anlauf Strg+B tippen. Das lief in eine Zeitbombe: Der Treff hat eine Nachtruhe, und zwischen 22 und 6 Uhr ist das Schreibfeld `disabled` -- die Pruefung waere sechs Stunden am Tag rot gewesen, ohne dass an der Sache etwas ist. Genau die Sorte Fehlalarm, die am 06.09.2026 schon einmal notiert wurde. Gemessen wird jetzt die Sache selbst: Die vier Knoepfe sind weiterhin im Dokument und haben nur keine Flaeche mehr. pruef-tippziele meldete sofort "1 ungedeckt: .chat__schriftknopf (40h 40w)" -- am Daumen fehlten vier Pixel. Nachgezogen, wie bei den vier Werkzeugen daneben. Geprueft: pruef-chat-optik (mit 6 neuen Punkten, alle gruen), pruef-tippziele (11), pruef-css-klassen, pruef-chat-ausbau (64). Co-Authored-By: Claude Opus 5 --- server/pruef-chat-optik.mjs | 117 +++++++++++++++++++++++++++++++- workspace/anruf-probe.html | 10 +-- workspace/app.webmanifest | 8 +-- workspace/assets/css/chat.css | 65 +++++++++++++++++- workspace/assets/js/chat.js | 48 ++++++++++++- 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/calls.html | 34 +++++----- workspace/chat.html | 67 ++++++++++++------ 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/material.html | 32 ++++----- workspace/personen.html | 32 ++++----- workspace/profil.html | 36 +++++----- 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/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 +++++----- 44 files changed, 885 insertions(+), 634 deletions(-) diff --git a/server/pruef-chat-optik.mjs b/server/pruef-chat-optik.mjs index 717be9e7..9f4f2e40 100644 --- a/server/pruef-chat-optik.mjs +++ b/server/pruef-chat-optik.mjs @@ -755,6 +755,15 @@ melde("\n=== Die Schreibzeile auf dem Handy ==="); drueber, quer: document.documentElement.scrollWidth - window.innerWidth, werkzeugZahl: werk ? werk.querySelectorAll("button").length : 0, + /* WIE VIELE WERKZEUGE GIBT ES UEBERHAUPT -- unabhaengig davon, + wo sie stehen. Die Zahl daneben sagt, wie viele IN der + Gruppe sitzen; erst der Vergleich beider sagt, ob eines + danebenliegt. Eine feste Zahl kann das nicht: Sie wird + falsch, sobald ein Werkzeug dazukommt -- und genau das ist + am 25.09.2026 passiert (der Schriftknopf „Aa"). */ + werkzeugAlle: document.querySelectorAll( + "#schreiben :is(.chat__anhang, .chat__ton, .chat__gif," + + " .chat__emoji, .chat__schriftknopf)").length, }; }); @@ -809,8 +818,112 @@ melde("\n=== Die Schreibzeile auf dem Handy ==="); in einer ANDEREN Zeile stehen als das Feld -- sonst hiesse "Senden steht daneben" nur, dass alles in einer Zeile liegt und die Messung gar nicht unterscheiden kann. */ - ok(zeile.werkzeugZahl === 4, - `die vier Werkzeuge stehen in einer Gruppe (${zeile.werkzeugZahl})`); + /* HIER STAND EINE 4 (nachgebessert 25.09.2026). + + Sie war vom ersten Tag an eine Rechnung von gestern: Kommt ein + Werkzeug dazu, wird die Zeile rot, obwohl nichts kaputt ist -- + und wer sie dann einfach auf 5 hochsetzt, macht denselben Fehler + mit einer anderen Zahl. Dieses Haus ist an festen Zahlen schon + dreimal hereingefallen (Kopfleiste 06.09., Schriftgroessen + 14.09., Tippziele 20.09.). + + GEFRAGT WIRD JETZT, WAS GEMEINT IST: Liegt KEINES der Werkzeuge + ausserhalb der Gruppe? Das ist die Sache -- sie sollen als Block + umbrechen, damit nicht eines allein auf einer Zeile landet. Die + Regel misst damit, statt zu rechnen, und der naechste Knopf + bringt sie nicht zu Fall. + + DIE ANZAHL STEHT TROTZDEM IN DER BEDINGUNG: Waere die Gruppe + leer, weil jemand die Klasse umbenennt, waeren „0 von 0" sonst + gruen -- ein Haken ohne Gegenstand. */ + ok(zeile.werkzeugAlle >= 4 && zeile.werkzeugZahl === zeile.werkzeugAlle, + `alle ${zeile.werkzeugAlle} Werkzeuge stehen in EINER Gruppe ` + + `(${zeile.werkzeugZahl} davon drin)`); + + /* ==== DIE SCHRIFTLEISTE KLAPPT AUF UND ZU (25.09.2026) ========= + + Filipe: „die sachen von screen3 verbinde die mit dem auf + screen4. so dass wenn man drauf drückt man die anderen zu sehen + bekommt. damit es nicht zu viel platz nimmt." + + GEMESSEN WIRD DER PLATZ, nicht nur der Zustand: Die Konsole muss + zugeklappt SPUERBAR niedriger sein. Ein Knopf, der ein Merkmal + umstellt, ohne dass Platz frei wird, haette den Auftrag nicht + erfuellt -- und ein `aria-expanded`, das sich aendert, waere + trotzdem gruen. + + UND DIE TASTENKUERZEL: Sie haengen am Schreibfeld, nicht an der + Leiste. Waere das anders, haette das Zuklappen Strg+B + mitgenommen -- eine Funktion, die verschwindet, weil man Platz + sparen wollte. */ + const vorher = await handy.seite.evaluate(() => ({ + hoehe: Math.round(document.getElementById("schreiben").getBoundingClientRect().height), + leiste: !!document.querySelector(".textform")?.getBoundingClientRect().height, + auf: document.getElementById("schrift-auf")?.getAttribute("aria-expanded"), + })); + ok(vorher.auf === "false" && vorher.leiste === false, + `die Schriftleiste ist von sich aus zu (aria-expanded=${vorher.auf})`); + + await handy.seite.click("#schrift-auf"); + await handy.seite.waitForTimeout(350); + const offen = await handy.seite.evaluate(() => ({ + hoehe: Math.round(document.getElementById("schreiben").getBoundingClientRect().height), + knoepfe: [...document.querySelectorAll(".textform__knopf")] + .filter((e) => e.getBoundingClientRect().height > 1).length, + auf: document.getElementById("schrift-auf")?.getAttribute("aria-expanded"), + })); + ok(offen.auf === "true" && offen.knoepfe === 4, + `ein Druck macht sie auf -- vier Zeichen (${offen.knoepfe})`); + ok(offen.hoehe > vorher.hoehe + 20, + `und zugeklappt spart das wirklich Platz ` + + `(${vorher.hoehe} px zu ${offen.hoehe} px, ${offen.hoehe - vorher.hoehe} px)`); + + /* DIE WAHL UEBERLEBT DAS NEULADEN -- wer viel gestaltet, gestaltet + weiter. Ohne diese Zeile waere „sie klappt auf" ein Zustand, den + man bei jeder Nachricht neu herstellen muesste. */ + await handy.seite.reload({ waitUntil: "networkidle" }); + await handy.seite.waitForSelector("#schreiben:not([hidden])", { timeout: 8000 }); + await handy.seite.waitForTimeout(700); + const danach = await handy.seite.evaluate(() => ({ + auf: document.getElementById("schrift-auf")?.getAttribute("aria-expanded"), + knoepfe: [...document.querySelectorAll(".textform__knopf")] + .filter((e) => e.getBoundingClientRect().height > 1).length, + })); + ok(danach.auf === "true" && danach.knoepfe === 4, + `und bleibt nach dem Neuladen offen (${danach.auf}, ${danach.knoepfe} Zeichen)`); + + /* GEGENPROBE: ZUGEKLAPPT IST NICHT ABGEBAUT. + + Der erste Anlauf wollte hier Strg+B tippen und pruefen, ob "**" + im Feld landet. Das lief in eine Zeitbombe: Der Treff hat eine + NACHTRUHE, und zwischen 22 und 6 Uhr ist das Schreibfeld + `disabled`. Die Pruefung waere sechs Stunden am Tag rot gewesen, + ohne dass an der Sache etwas ist -- genau die Sorte Fehlalarm, + die dieses Haus am 06.09.2026 schon einmal notiert hat („ein + Test, der die Wanduhr als Annahme benutzt"). + + GEMESSEN WIRD STATTDESSEN DIE SACHE SELBST: Die vier Knoepfe + sind weiterhin IM DOKUMENT, sie haben nur keine Flaeche mehr. + Das ist der Unterschied zwischen „versteckt" und „abgebaut" -- + und daran haengt, dass die Tastenkuerzel weiterlaufen: Sie + haengen am Schreibfeld (textform.js), und die Leiste wird nicht + neu gebaut, wenn man sie wieder aufmacht. Waere sie beim + Zuklappen entfernt worden, waere der naechste Aufbau ein zweiter + Satz Zuhoerer -- und Strg+B haette doppelt zugeschlagen. */ + await handy.seite.click("#schrift-auf"); + await handy.seite.waitForTimeout(300); + const zu = await handy.seite.evaluate(() => ({ + imDokument: document.querySelectorAll(".textform__knopf").length, + sichtbar: [...document.querySelectorAll(".textform__knopf")] + .filter((e) => e.getBoundingClientRect().height > 1).length, + hoehe: Math.round(document.getElementById("schreiben").getBoundingClientRect().height), + merker: document.getElementById("text")?.dataset.textform, + })); + ok(zu.imDokument === 4 && zu.sichtbar === 0, + `Gegenprobe: zugeklappt sind sie versteckt, nicht abgebaut ` + + `(${zu.imDokument} im Dokument, ${zu.sichtbar} sichtbar)`); + ok(zu.merker === "ja" && zu.hoehe === vorher.hoehe, + `und die Konsole ist wieder so hoch wie am Anfang (${zu.hoehe} px)`); /* `!!zeile.werkzeuge` GEHOERT IN DIE BEDINGUNG, und das ist kein Zierrat: In der Gegenprobe gab es die Gruppe nicht, `y` war `undefined`, und `(undefined || 0) < 834` ist wahr -- die Zeile diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 9e64136a..e656858e 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,15 +16,15 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +