Chat: die Schreibzeile auf dem Handy -- Feld 130 -> 278 px

Filipe schreibt vom Handy. In der Schreibzeile stehen seit heute Nacht
SECHS Dinge: Bueroklammer, Mikrofon, GIF, Emoji, Schreibfeld, Senden --
das Mikrofon und das GIF habe ich selbst dazugestellt.

GEMESSEN, BEVOR ICH ETWAS ANGEFASST HABE (mit echtem Finger, weil
`pointer: coarse` sonst gar nicht greift):

    320 px   Feld 164
    390 px   Feld 130  -- und "Senden" ALLEIN auf einer eigenen Zeile
    412 px   Feld 151  -- dito

Das Feld lag auf seiner Untergrenze von 8 rem. Kaputt war nichts --
nichts ueberlappte, nichts war zu klein --, aber man sah beim Tippen
etwa zwoelf Zeichen, und der Knopf, der die Nachricht wegschickt, war
weiter vom Text entfernt als die Bueroklammer.

Das ist derselbe Fehler wie am 06.09.2026 in anderer Gestalt: Damals
kam ein sechstes Element in die Kopfleiste, und bei 412 px lag ein
Knopf ueber dem anderen.

ZWEI GRUPPEN STATT SECHS EINZELTEILE
------------------------------------
  chat__werkzeuge     Bueroklammer, Mikrofon, GIF, Emoji
  chat__schreibzeile  Feld und Senden

Damit bricht die Zeile an der richtigen Stelle: Die Werkzeuge wandern
GEMEINSAM nach oben, Feld und Senden bleiben zusammen. Und ein siebtes
Werkzeug laesst kuenftig die Gruppe wachsen, nicht das Feld schrumpfen
-- das ist der Unterschied zwischen einer Regel und einer Zahl, die man
beim naechsten Knopf neu suchen muss.

DER EMOJI-KNOPF IST ZU DEN WERKZEUGEN GEWANDERT. Er sass neben
"Senden", und auf dem Handy landeten damit Emoji und Senden gemeinsam
unten links. Ein Emoji ist dasselbe wie eine Bueroklammer: etwas, das
man in den Text einfuegt. Senden ist das Gegenteil.

NACHHER:
    320 px   Feld 214      390 px   Feld 278
    412 px   Feld 299     1280 px   Feld 560

Auf dem Handy drei Zeilen (Werkzeuge / F K U S / Feld+Senden), am
Rechner alles nebeneinander.

DIE 10 rem SIND GEMESSEN, NICHT GESCHAETZT
------------------------------------------
Durchgespielt wurden 8, 10, 11, 12 und 13 rem auf 320, 390 und 412 px.
Ab 11 rem kommt auf 320 px eine VIERTE Zeile dazu -- also schlechter
dort, wo der Platz ohnehin am knappsten ist. 10 rem verbessert 390 und
412 deutlich, ohne 320 zu verschlechtern. Die Messreihe steht im
Kommentar; wer daran dreht, misst bitte wieder nach.

EIN ZWISCHENSTAND, DEN ICH VERWORFEN HABE
-----------------------------------------
Der erste Versuch gruppierte nur Feld+Senden und liess Emoji stehen.
Gemessen: Feld 160 statt 180 -- schlechter als der Zustand davor. Ich
habe ihn zurueckgenommen, statt ihn schoenzureden. Was ich nicht
messen kann, liefere ich nicht aus.

GEPRUEFT
--------
pruef-chat-optik: die Schreibzeile ist jetzt Teil der Pruefung.
Breite des Feldes, Senden neben dem Feld, nichts ueberlappt, alles am
Daumen treffbar, kein Querscrollen -- und am Rechner das Gegenteil:
Dort MUESSEN die Werkzeuge daneben stehen, sonst waere die Zeile
unnoetig hoch.

GEGENPROBE mit der alten Fassung: 5 Zeilen werden rot, darunter genau
die beiden Symptome von oben (Feld 130, Senden eine Zeile tiefer).

UND ZWEI EIGENE FEHLER IN DER PRUEFUNG, BEIDE VON DER GEGENPROBE
GEFUNDEN:

  * Sie mass mit einem SCOUT -- und der bekommt Mikrofon und GIF gar
    nicht zu sehen. Gemessen wurde eine Zeile mit zwei Dingen darin,
    waehrend der gefaehrliche Fall der mit vier ist. Aufgefallen, weil
    die Gegenprobe 178 px meldete und meine Handmessung 130: zwei
    Zahlen fuer dieselbe Sache.
  * Eine Zeile war gruen mit `undefined`: Es gab die Gruppe nicht,
    `y` war undefiniert, und `(undefined || 0) < 834` ist wahr. Ein
    gruener Haken, der nichts angesehen hat -- genau die Sorte, vor
    der die Hausregeln warnen.

pruef-chat, pruef-erwaehnung (119), pruef-chat-anhaenge (109):
unveraendert gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-23 12:00:32 +02:00
co-authored by Claude Opus 5
parent 036f30454c
commit bff7c6ce14
41 changed files with 843 additions and 593 deletions
+77 -22
View File
@@ -12,26 +12,26 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231131" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231131" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609231131" />
<link rel="stylesheet" href="assets/css/start.css?v=202609231131" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609231200" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609231200" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609231200" />
<link rel="stylesheet" href="assets/css/start.css?v=202609231200" />
<!-- aufgaben.css bringt die Dialog- und Formularstile mit (.dialog,
.neu__zeile, .dialog__knoepfe). Sie stehen dort seit dem
Aufgabenbrett; sie hierher zu kopieren hiesse, sie an zwei Stellen
zu pflegen. Dieselbe Lösung nutzen kalender.html und content.html.
Gemeldet von pruef-css-klassen.mjs, bevor jemand einen ungestylten
Dialog zu sehen bekam. -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231131" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609231131" />
<link rel="stylesheet" href="assets/css/module.css?v=202609231131" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609231200" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609231200" />
<link rel="stylesheet" href="assets/css/module.css?v=202609231200" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609231131" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609231200" />
</head>
<body class="start">
@@ -320,6 +320,26 @@
Das Feld selbst bleibt unsichtbar -- ein Datei-Auswahlfeld
sieht in jedem Browser anders aus und lässt sich nicht
gestalten. Bedient wird es über die Büroklammer daneben. -->
<!-- DIE DREI WERKZEUGE SIND EINE GRUPPE (23.09.2026)
---------------------------------------------------------
Sie standen einzeln in der Zeile. Solange es zwei waren,
ging die Rechnung auf; seit heute Nacht sind es drei
(Büroklammer, Mikrofon, GIF), und gemessen auf 390 px
blieben dem Schreibfeld noch 130 Pixel — seine
Untergrenze. „Senden" rutschte allein auf eine eigene
Zeile darunter.
Das ist genau der Fehler vom 06.09.2026 in anderer
Gestalt: Damals kam ein sechstes Element in die
Kopfleiste, und ein Knopf landete über dem anderen.
ALS GRUPPE bricht die Zeile an der richtigen Stelle: Die
drei wandern GEMEINSAM nach oben, und Feld, Emoji und
Senden bleiben zusammen. Kommt morgen ein viertes
Werkzeug dazu, wächst die Gruppe — das Schreibfeld nicht
kleiner. Das ist der Unterschied zwischen einer Regel und
einer Zahl, die man beim nächsten Knopf neu suchen muss. -->
<div class="chat__werkzeuge">
<input type="file" id="anhang-feld" class="chat__anhang-feld"
accept="image/png,image/jpeg,image/webp,image/gif,application/pdf"
tabindex="-1" aria-hidden="true" />
@@ -372,6 +392,21 @@
aria-label="GIF schicken" title="GIF schicken">GIF</button>
<input type="file" id="gif-feld" class="chat__anhang-feld"
accept="image/gif" tabindex="-1" aria-hidden="true" />
<!-- EMOJI-AUSWAHL (09.09.2026). Die Bildschirmtastatur am Handy
hat sie ohnehin -- am Rechner nicht, und dort schreibt die
Betreuung. Dreissig feste Zeichen statt einer nachgeladenen
Tafel: Das deckt den Alltag ab und lädt nichts.
STEHT SEIT DEM 23.09.2026 BEI DEN WERKZEUGEN. Vorher saß
er neben „Senden" — und auf dem Handy landeten damit
Emoji und Senden gemeinsam auf einer eigenen Zeile unten
links, weit weg vom Schreibfeld. Ein Emoji ist dasselbe
wie eine Büroklammer: etwas, das man in den Text
einfügt. Der Senden-Knopf ist das Gegenteil. -->
<button type="button" class="chat__emoji" id="emoji-auf"
aria-expanded="false" aria-controls="emoji-tafel"
aria-label="Emoji einfügen" title="Emoji einfügen">☺</button>
</div><!-- /chat__werkzeuge -->
<div class="gif-tafel" id="gif-tafel" hidden role="group"
aria-label="GIF aus der Kiste schicken">
<div class="gif-tafel__kopf">
@@ -388,6 +423,28 @@
Team sehen es dann auch.
</p>
</div>
<!-- SCHREIBEN UND ABSCHICKEN GEHÖREN ZUSAMMEN (23.09.2026)
---------------------------------------------------------
Gemessen auf 390 px: Das Feld stand bei den Werkzeugen,
der Senden-Pfeil eine Zeile tiefer unten links. Man
schreibt rechts und drückt links unten — und der Knopf,
der die Nachricht wegschickt, war weiter vom Text
entfernt als die Büroklammer.
Als Gruppe bleiben Feld und Senden beieinander, egal wo
die Zeile umbricht, und das Feld bekommt die ganze
Restbreite statt eines Rests.
`flex-wrap: wrap` INNEN: Die Gestaltungsleiste (F K U S)
hängt sich beim Laden vor das Textfeld und wandert damit
in diese Gruppe. Ohne Umbruch würde sie sich hier in die
Zeile quetschen; mit ihm nimmt sie ihre eigene und alles
bleibt, wo es hingehört.
DIE TAFELN BLEIBEN DRAUSSEN (Emoji, Erwähnen, GIF): Sie
sind absolut gesetzt und brauchen `.chat__eingabe` als
Bezugspunkt. -->
<div class="chat__schreibzeile">
<textarea id="text" rows="1" maxlength="4000"
placeholder="Nachricht schreiben …"
title="Enter schickt ab, Umschalt+Enter macht eine neue Zeile, @ erwähnt jemanden"></textarea>
@@ -395,9 +452,6 @@
hat sie ohnehin -- am Rechner nicht, und dort schreibt die
Betreuung. Dreissig feste Zeichen statt einer nachgeladenen
Tafel: Das deckt den Alltag ab und laedt nichts. -->
<button type="button" class="chat__emoji" id="emoji-auf"
aria-expanded="false" aria-controls="emoji-tafel"
aria-label="Emoji einfügen" title="Emoji einfügen">☺</button>
<div class="emoji-tafel" id="emoji-tafel" role="group"
aria-label="Emoji auswählen" hidden></div>
<!-- WER IST GEMEINT? (20.09.2026)
@@ -418,6 +472,7 @@
<path d="M4 12l16-7-7 16-2.5-6.5z" />
</svg>
</button>
</div><!-- /chat__schreibzeile -->
</form>
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
</section>
@@ -496,25 +551,25 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202609231131"></script>
<script src="assets/js/bereiche.js?v=202609231200"></script>
<!-- TEXTFORM VOR ALLEM ANDEREN (21.09.2026): chat.js und bereich.js
fragen beim Zeichnen nach `window.Textform`. Kaeme sie spaeter,
waere die erste gezeichnete Nachricht ohne Gestaltung -- und das
faellt nur dem auf, der genau hinsieht. KEIN `defer`, damit sie
wirklich vor den anderen dasteht. -->
<script src="assets/js/textform.js?v=202609231131"></script>
<script src="assets/js/meldung.js?v=202609231131" defer></script>
<script src="assets/js/hochladen.js?v=202609231131" defer></script>
<script src="assets/js/nachfrage.js?v=202609231131" defer></script>
<script src="assets/js/wahl.js?v=202609231131" defer></script>
<script src="assets/js/kopf.js?v=202609231131"></script>
<script src="assets/js/glocke.js?v=202609231131"></script>
<script src="assets/js/textform.js?v=202609231200"></script>
<script src="assets/js/meldung.js?v=202609231200" defer></script>
<script src="assets/js/hochladen.js?v=202609231200" defer></script>
<script src="assets/js/nachfrage.js?v=202609231200" defer></script>
<script src="assets/js/wahl.js?v=202609231200" defer></script>
<script src="assets/js/kopf.js?v=202609231200"></script>
<script src="assets/js/glocke.js?v=202609231200"></script>
<!-- ANRUF VOR CHAT (18.09.2026): anruf.js stellt `window.anrufStarten`
bereit, und chat.js baut die Knoepfe nur, wenn es das gibt.
Andersherum waere die Reihenfolge eine stille Abhaengigkeit --
die Knoepfe fehlten, und niemand wuesste warum. -->
<script src="assets/js/anruf.js?v=202609231131"></script>
<script src="assets/js/chat.js?v=202609231131"></script>
<script src="assets/js/installieren.js?v=202609231131" defer></script>
<script src="assets/js/anruf.js?v=202609231200"></script>
<script src="assets/js/chat.js?v=202609231200"></script>
<script src="assets/js/installieren.js?v=202609231200" defer></script>
</body>
</html>