Filipes Frage: „koennen die leute auch schon mehrere fotos schicken wenn die im support was melden wollen?" Technisch seit dem 02.10. (VanVans Meldung #11), und heute mehrfach am laufenden Server nachgemessen. Beim Nachsehen auf der SEITE stand aber: Knopf: „Bild anhängen" -- Einzahl Unterzeile: „häng ein Bild dran" -- Einzahl daneben: (nichts) Wer nicht zufaellig ein zweites Mal auf den Knopf tippt, schickt eines. Aus seiner Sicht waere VanVans Meldung ungeloest -- und er haette recht. EINE MOEGLICHKEIT, VON DER MAN NICHTS WEISS, GIBT ES NICHT. Das ist dieselbe Sorte wie ein Knopf, der eine Absage holt, nur andersherum: Dort verspricht die Oberflaeche zu viel, hier zu wenig. Beides kostet denselben Menschen dieselbe Zeit. GEAENDERT Knopf: „Bilder anhängen" Unterzeile: „häng Bilder dran" daneben: „bis zu 3 Bilder" -- bevor man etwas waehlt nach einem: „eins.png · 24 KB · noch 2 möglich" Die letzte Zeile ist die wichtigere von beiden: „eins.png · 24 KB" allein sagt nicht, dass ein zweites geht -- und genau an dieser Stelle hoert jemand auf. DIE ZAHL KOMMT VOM SERVER (`bilder_max`) und wird neu geschrieben, sobald sie da ist. Ohne das stuende beim ersten Laden der Vorgabewert dort -- heute zufaellig derselbe, morgen vielleicht nicht. Eine Zahl, die zufaellig stimmt, ist keine Auskunft. GEPRUEFT -- pruef-support-bilder 52 -> 56 ok der Knopf steht in der Mehrzahl („Bilder anhängen") und daneben steht, wie viele gehen („bis zu 3 Bilder") auch die Unterzeile sagt nicht mehr „ein Bild" und daneben steht, dass noch Platz ist („eins.png · 0 KB · noch 2 möglich") Dazu gruen: pruef-zeichen 7 · pruef-css-klassen. Co-Authored-By: Claude Opus 5 <[email protected]>
775 lines
40 KiB
HTML
775 lines
40 KiB
HTML
<!doctype html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||
<title>Chat · Spicy & Dogi</title>
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<link rel="manifest" href="/workspace/app.webmanifest" />
|
||
<!-- Die Farbe der Fensterleiste, wenn der Workspace als App laeuft.
|
||
Stand auf #0674b9 (kraeftiges Blau) und stach damit als einziger
|
||
heller Balken ueber einer durchweg dunklen Seite. Jetzt derselbe
|
||
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=202610031224" />
|
||
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610031224" />
|
||
<link rel="stylesheet" href="assets/css/gate.css?v=202610031224" />
|
||
<link rel="stylesheet" href="assets/css/start.css?v=202610031224" />
|
||
<!-- 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=202610031224" />
|
||
<link rel="stylesheet" href="assets/css/chat.css?v=202610031224" />
|
||
<link rel="stylesheet" href="assets/css/module.css?v=202610031224" />
|
||
<!-- 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=202610031224" />
|
||
</head>
|
||
|
||
<body class="start">
|
||
|
||
<div class="schleier" aria-hidden="true"></div>
|
||
|
||
<header class="kopfleiste">
|
||
<button type="button" class="zurueck-knopf" id="zurueck" hidden>
|
||
<svg class="zurueck-knopf__pfeil" viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M14.5 5.5 8 12l6.5 6.5" />
|
||
</svg>
|
||
<span class="zurueck-knopf__text">Zurück</span>
|
||
</button>
|
||
<p class="marke"><span class="marke__text"><a class="zurueck" href="start.html">Creator Workspace</a> · Chat</span></p>
|
||
<div class="kopfleiste__rechts">
|
||
<span class="wer" id="wer">…</span>
|
||
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="inhalt inhalt--breit chat-seite">
|
||
|
||
<!-- DIE GANZE SEITE IST EINE FLÄCHE, kein Dokument zum Scrollen.
|
||
|
||
Ein Chat ist kein Text, den man von oben nach unten liest --
|
||
man springt zwischen Gesprächen, und das Eingabefeld muss
|
||
immer erreichbar sein, ohne zu suchen. Deshalb: feste Höhe,
|
||
und gescrollt wird nur INNERHALB der beiden Spalten.
|
||
|
||
data-ansicht steuert am Handy, welche Spalte zu sehen ist:
|
||
"liste" oder "verlauf". Am Rechner stehen beide nebeneinander
|
||
und das Merkmal bewirkt nichts. -->
|
||
<div class="chat" id="chat" data-ansicht="liste">
|
||
|
||
<!-- ---------- Links: die Gespräche ---------- -->
|
||
<section class="chat__spalte chat__spalte--liste" aria-labelledby="liste-titel">
|
||
<div class="chat__kopf">
|
||
<h1 class="chat__titel" id="liste-titel">Gespräche</h1>
|
||
<!-- WIE VIELE WARTEN AUF MICH? (24.09.2026)
|
||
|
||
Die Zahl stand bisher nur an jeder einzelnen Zeile. Wer
|
||
morgens hereinkommt, will aber zuerst wissen, ob es
|
||
ÜBERHAUPT etwas gibt – und am Handy sieht man von der
|
||
Liste nur die ersten drei Zeilen.
|
||
|
||
Sie steht NUR da, wenn es etwas zu zählen gibt. Eine „0"
|
||
neben der Überschrift wäre jeden Tag im Weg für den einen
|
||
Tag, an dem sie etwas sagt. -->
|
||
<span class="chat__zaehler" id="liste-zaehler" hidden></span>
|
||
<!-- MEINE KACHEL (20.09.2026).
|
||
Filipe: "jeder account soll seine kachel personalisieren
|
||
koennen."
|
||
Der Knopf steht LINKS bei den Gespraechen und nicht rechts
|
||
im Verlauf: Es ist eine Einstellung ueber MICH, nicht ueber
|
||
dieses eine Gespraech. Rechts stehen ausserdem schon fuenf
|
||
Knoepfe, und ein sechster hat dort am Handy keinen Platz
|
||
mehr -- das war am 19.09. schon einmal der Fehler. -->
|
||
<button type="button" class="chat__kachelknopf" id="kachel-oeffnen"
|
||
aria-label="Meine Kachelfarbe wählen"
|
||
title="Meine Kachelfarbe">
|
||
<span class="chat__kachelknopf-probe" aria-hidden="true"></span>
|
||
</button>
|
||
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Neu</button>
|
||
</div>
|
||
|
||
<!-- Die Auswahl. Als <dialog>, wie die anderen Nachfragen im
|
||
Haus -- ein eigenes Aufklapp-Menue waere ein zweites Muster
|
||
fuer dieselbe Sache. -->
|
||
<dialog class="nachfrage chat-kachelwahl" id="kachel-wahl">
|
||
<h2 class="nachfrage__titel">Deine Kachel</h2>
|
||
<!-- DER SATZ WAR SEIT HEUTE FALSCH (25.09.2026).
|
||
|
||
„Alle Töne leuchten gleich stark" stimmte, solange es
|
||
360 Farben auf einer Leuchtdichte gab. Mit den sieben
|
||
Helligkeiten stimmt es nicht mehr – und ein Satz, der
|
||
etwas verspricht, was man daneben anders sieht, ist
|
||
schlimmer als keiner.
|
||
|
||
WAS WEITERHIN STIMMT UND WICHTIGER IST: Jede der 2520
|
||
Farben bleibt als Name auf der Blase lesbar. Das ist
|
||
nachgerechnet (pruef-chat-neu), und genau das sagt der
|
||
neue Satz. -->
|
||
<p class="nachfrage__text">
|
||
So sieht dein Name an deinen Nachrichten aus. Dreh am Ring
|
||
für den Farbton, tipp unten auf heller oder dunkler – in der
|
||
Mitte siehst du sofort, wie es aussieht. Jede der 2520
|
||
Farben bleibt lesbar, egal welche du nimmst.
|
||
</p>
|
||
|
||
<!-- ================================================================
|
||
DER FARBRING (23.09.2026)
|
||
|
||
Filipe: „anstatt sowas um die farben auszusuchen, kannst du
|
||
nicht so eine art diagramm machen wo man mit einem kreis
|
||
herum gehen kann und sie die farbe ganz genau selber
|
||
auswählen kann?"
|
||
|
||
Der Ring wird aus 360 fertig gerechneten Farben gemalt, die
|
||
der Server schickt – nicht aus einem üblichen Farbkreis.
|
||
Der Unterschied ist der ganze Punkt: Ein gewöhnlicher
|
||
Farbkreis hat ein blendendes Gelb und ein fast schwarzes
|
||
Blau, und helle Schrift ist darauf mal gut und mal gar
|
||
nicht lesbar. Hier liegt jeder Winkel auf derselben
|
||
Leuchtdichte. Das sieht ruhiger aus – und es heißt, dass
|
||
man sich hier nicht unlesbar machen KANN.
|
||
|
||
role="slider" und nicht „radiogroup": Es ist ein
|
||
fortlaufender Wert mit 360 Stufen. Wer mit der Tastatur
|
||
kommt, dreht mit den Pfeiltasten. Eine Radiogruppe mit 360
|
||
Einträgen wäre für eine Sprachausgabe unbenutzbar. -->
|
||
<div class="kachelrad" id="kachelrad">
|
||
<div class="kachelrad__ring" id="kachelrad-ring" role="slider"
|
||
tabindex="0" aria-label="Farbton"
|
||
aria-valuemin="0" aria-valuemax="359" aria-valuenow="0">
|
||
<span class="kachelrad__arm" id="kachelrad-arm" aria-hidden="true">
|
||
<span class="kachelrad__griff"></span>
|
||
</span>
|
||
</div>
|
||
<!-- Die Mitte ist kein Schmuck, sondern die Antwort auf
|
||
„wie sieht das aus?" – eine echte Blase mit echter
|
||
Schrift, in der echten Farbe. -->
|
||
<div class="kachelrad__mitte" id="kachelrad-mitte" aria-hidden="true">
|
||
<span class="kachelrad__probe">Aa</span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ================================================================
|
||
HELLER UND DUNKLER (25.09.2026)
|
||
|
||
Filipe: „dieser kreis muss viel perfekter sein. ich will
|
||
dass die leute auch heller und dunkler aussuchen koennen.
|
||
perfektionier das bitte viel krasser. viel
|
||
profissioneller. so dass die leute viel krassere
|
||
moeglichkeiten haben."
|
||
|
||
EIN ZWEITER SCHIEBER UND KEIN ZWEITER KREIS: Farbton und
|
||
Helligkeit sind zwei Achsen derselben Farbe. Ein Rad für
|
||
die eine, eine Leiste für die andere – so erkennt man auf
|
||
einen Blick, was rund läuft und was von dunkel nach hell.
|
||
|
||
`role="slider"` wie der Ring darüber: Es ist ein Wert mit
|
||
sieben Stufen, keine Auswahl aus sieben Dingen. Wer mit
|
||
der Tastatur kommt, benutzt dieselben Pfeiltasten.
|
||
|
||
DIE STUFEN BAUT DAS SKRIPT, nicht diese Datei: Wie viele
|
||
es gibt und wie stark sie mischen, steht in
|
||
chat-kreis-stufen.js und kommt vom Server. Feste Felder
|
||
hier wären eine zweite Wahrheit, die bei der nächsten
|
||
Messung falsch wird. -->
|
||
<div class="kachelhell" id="kachelhell">
|
||
<span class="kachelhell__schild" id="kachelhell-schild">Helligkeit</span>
|
||
<div class="kachelhell__leiter" id="kachelhell-leiter" role="slider"
|
||
tabindex="0" aria-labelledby="kachelhell-schild"
|
||
aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"></div>
|
||
</div>
|
||
|
||
<!-- Was auf dem Ring nicht vorkommt: Grau hat keinen Farbton,
|
||
und Babyblau ist die eine helle Kachel mit eigener,
|
||
dunkler Schrift. Beide gehören weiter dazu. -->
|
||
<div class="chat-kachelwahl__gitter" id="kachel-gitter" role="group"
|
||
aria-label="Weitere Kachelfarben"></div>
|
||
<div class="nachfrage__knoepfe">
|
||
<button type="button" class="abmelden" id="kachel-zu">Fertig</button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<!-- Suchen erst, wenn es etwas zu suchen gibt (chat.js blendet
|
||
es ab acht Gesprächen ein). Ein Suchfeld über drei Einträgen
|
||
ist Zierde. -->
|
||
<!-- ================================================================
|
||
DREI KATEGORIEN (25.09.2026)
|
||
|
||
Filipe: „ich will 3 kategorien haben. chats mit einzelnen
|
||
personen, gruppen chats und kanäle. ich will dass man diese
|
||
drei kategorien hat und in den jeweiligen kategorien halt
|
||
die richtigen chats."
|
||
|
||
SIE STEHEN GANZ OBEN, ueber dem Suchfeld: Man waehlt zuerst
|
||
das Fach und sucht dann darin -- nicht andersherum.
|
||
|
||
GEBAUT WIRD SIE VOM SKRIPT, nicht hier: An jeder Karte
|
||
haengt eine Zahl (wie viele Gespraeche) und ein Punkt (wie
|
||
viele ungelesen), und beides aendert sich mit jeder
|
||
Nachricht. Fest eingetragene Beschriftungen waeren beim
|
||
ersten Eintreffen falsch.
|
||
|
||
`role="tablist"` und nicht einfach drei Knoepfe: Wer mit der
|
||
Tastatur arbeitet, springt damit mit den Pfeiltasten
|
||
zwischen den Faechern statt mit sechs Tabulatorschritten. -->
|
||
<div class="chat-arten" id="chat-arten" role="tablist"
|
||
aria-label="Art der Gespräche"></div>
|
||
|
||
<div class="chat__suche" id="suche-zeile" hidden>
|
||
<input type="search" id="suche" placeholder="Name oder Gruppe …"
|
||
aria-label="Gespräche durchsuchen" autocomplete="off" />
|
||
</div>
|
||
|
||
<ul class="chat__liste" id="raeume" aria-live="polite"></ul>
|
||
|
||
<!-- ---------- Fundstellen in Nachrichten (09.09.2026, Punkt 15)
|
||
|
||
Das Suchfeld darueber durchsuchte bisher nur die NAMEN der
|
||
Gespraeche. Das ist die kleinere Haelfte: Was man wirklich
|
||
sucht, ist ein Satz, den jemand vor drei Wochen geschrieben
|
||
hat.
|
||
|
||
Die Fundstellen stehen UNTER der Gespraechsliste und nicht
|
||
an ihrer Stelle -- beides ist eine Antwort auf dieselbe
|
||
Eingabe, und wer nach "Patrick" sucht, will vielleicht das
|
||
Gespraech und vielleicht die Nachricht. Ein Umschalter
|
||
zwischen zwei Ansichten haette ihn zwingen wollen, das
|
||
vorher zu wissen. -->
|
||
<div class="chat-funde" id="funde" hidden>
|
||
<p class="chat-funde__schild" id="funde-schild">In Nachrichten</p>
|
||
<ul class="chat-funde__liste" id="funde-liste"></ul>
|
||
</div>
|
||
|
||
<p class="chat__leer" id="liste-leer" hidden>
|
||
Noch keine Gespräche. Mit <strong>Neu</strong> schreibst du der
|
||
ersten Person.
|
||
</p>
|
||
</section>
|
||
|
||
<!-- ---------- Rechts: der Verlauf ---------- -->
|
||
<section class="chat__spalte chat__spalte--verlauf" aria-labelledby="verlauf-titel">
|
||
|
||
<!-- Der Kopf trägt am Handy den Zurück-Weg zur Liste. -->
|
||
<div class="chat__kopf chat__kopf--verlauf">
|
||
<button type="button" class="chat__zurueck" id="zur-liste" aria-label="Zurück zu den Gesprächen">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.5 5.5 8 12l6.5 6.5" /></svg>
|
||
</button>
|
||
<!-- ================================================================
|
||
EIN GESICHT IM KOPF DES GESPRÄCHS (25.09.2026)
|
||
|
||
Filipe: „ich will dass du überhaupt die komplette kachel
|
||
veränderst, ich will dass alles anderst aussieht und
|
||
gestaltet ist … dass die ganze community und team morgen
|
||
total überrascht sind und den chat nicht wieder erkennen."
|
||
|
||
Im Kopf stand bisher nur ein Name. Links in der Liste
|
||
trägt jedes Gespräch sein Zeichen – Gesicht, Raute oder
|
||
Gruppenzahl –, und ausgerechnet beim Öffnen verschwand
|
||
es. Am Handy ist die Liste dann gar nicht mehr zu sehen:
|
||
Man sitzt in einem Gespräch und hat nur ein Wort davon.
|
||
|
||
ES IST DASSELBE ZEICHEN wie in der Liste, nicht ein
|
||
ähnliches: dieselbe Klasse, dieselben Rollenfarben,
|
||
dasselbe Profilbild – gefüllt von derselben Funktion
|
||
(`zeichenFuellen` in chat.js). Eine zweite Bauweise für
|
||
dieselbe Sache wäre die, die beim nächsten Umbau
|
||
vergessen wird.
|
||
|
||
`hidden`, solange kein Gespräch offen ist: Dann steht
|
||
rechts „Wähle ein Gespräch", und es gibt niemanden
|
||
abzubilden. -->
|
||
<span class="chat-raum__zeichen chat__kopf-zeichen" id="verlauf-zeichen"
|
||
hidden aria-hidden="true"></span>
|
||
<div class="chat__kopf-text">
|
||
<h2 class="chat__titel" id="verlauf-titel">Wähle ein Gespräch</h2>
|
||
<p class="chat__unter" id="verlauf-unter"></p>
|
||
</div>
|
||
<!-- GESPRÄCH WEGRÄUMEN (09.09.2026).
|
||
Filipe: "man muss die chats auch gelöscht bekommen!!!"
|
||
Es verschwindet nur bei DIR -- das Gegenüber behält seinen
|
||
Verlauf. Der Knopf steht erst da, wenn auch ein Gespräch
|
||
offen ist; sonst wäre er ein Angebot ohne Gegenstand. -->
|
||
<!-- WER IST IM KANAL (10.09.2026, Kapitel 7.2).
|
||
Steht nur in einem Kanal da und nur bei der Teamleitung --
|
||
der Server entscheidet das, nicht diese Datei. -->
|
||
<!-- EIN BEHAELTER STATT DREIMAL "margin-left: auto" (11.09.2026).
|
||
Jeder Knopf schob sich vorher selbst nach rechts. Bei zwei
|
||
sichtbaren teilen sich zwei auto-Raender den freien Platz
|
||
und reissen sie auseinander -- und welche sichtbar sind,
|
||
entscheidet der Server, nicht diese Datei. Der Behaelter
|
||
schiebt einmal, die Knoepfe stehen beieinander, egal wie
|
||
viele es sind. -->
|
||
<div class="chat__kopf-knoepfe">
|
||
<button type="button" class="chat__weg chat__leute" id="kanal-leute" hidden
|
||
aria-label="Wer ist in diesem Kanal?"
|
||
title="Wer ist in diesem Kanal?">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||
<circle cx="9" cy="8.5" r="3" />
|
||
<path d="M3.5 19c0-3 2.5-5 5.5-5s5.5 2 5.5 5" />
|
||
<path d="M16 6.2a3 3 0 0 1 0 5.6M17.5 14.4c2 .7 3.3 2.4 3.3 4.6" />
|
||
</svg>
|
||
</button>
|
||
<!-- AUFLOESEN — FUER ALLE (11.09.2026).
|
||
Filipe: "die person die ihn oeffnet soll auch das recht
|
||
haben das zu loeschen und so dass es dan fuer jeden
|
||
geloescht ist. aber nur die person die es gruendet."
|
||
|
||
Bewusst ein ANDERES Zeichen als der Knopf daneben und eine
|
||
eigene Warnfarbe: Zwei gleich aussehende Papierkoerbe
|
||
nebeneinander, von denen einer nur bei mir und einer bei
|
||
allen loescht, waeren eine Falle. Der Server entscheidet,
|
||
ob er ueberhaupt dasteht. -->
|
||
<button type="button" class="chat__weg chat__weg--ganz" id="raum-aufloesen" hidden
|
||
aria-label="Diese Gruppe für alle auflösen"
|
||
title="Für alle auflösen – endgültig">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||
<circle cx="12" cy="12" r="8.2" />
|
||
<path d="M7.2 7.2 16.8 16.8" />
|
||
</svg>
|
||
</button>
|
||
<button type="button" class="chat__weg" id="gespraech-weg" hidden
|
||
aria-label="Dieses Gespräch wegräumen"
|
||
title="Gespräch wegräumen – nur bei dir">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M5 7h14M10 7V5h4v2M6.5 7l.8 12h9.4l.8-12M10 10.5v5.5M14 10.5v5.5" />
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- aria-live="polite": Ein Vorleseprogramm sagt neue Nachrichten
|
||
an, ohne den Nutzer mitten im Satz zu unterbrechen. -->
|
||
<!-- ZUM NEUESTEN (09.09.2026). Vorher sprang der Verlauf bei jeder
|
||
neuen Nachricht ans Ende -- wer weiter oben nachlas, wurde
|
||
mitten im Satz weggerissen. Jetzt bleibt er stehen, und hier
|
||
steht, wie viel unten wartet. -->
|
||
<button type="button" class="chat__zum-neuesten" id="zum-neuesten" hidden></button>
|
||
<!-- HINEINZIEHEN (09.09.2026). Erscheint nur, solange wirklich
|
||
etwas über dem Fenster hängt. Eine dauerhaft sichtbare
|
||
Ablagefläche wäre jeden Tag im Weg für den Fall, dass man
|
||
sie vielleicht braucht. -->
|
||
<div class="chat__ablage" id="ablage" hidden aria-hidden="true">
|
||
<span>Loslassen – Foto oder PDF schicken</span>
|
||
</div>
|
||
<!-- ANGEHEFTETE ANKÜNDIGUNGEN (10.09.2026, Kapitel 7.2).
|
||
Sie stehen ÜBER dem Verlauf und rollen nicht mit: Eine
|
||
Ankündigung, die man erst suchen muss, ist keine. Leer bleibt
|
||
der Kasten verborgen – ein leerer Rahmen wäre jeden Tag im
|
||
Weg für den Fall, dass irgendwann etwas darin steht. -->
|
||
<div class="chat-pins" id="pins" hidden aria-label="Angeheftet"></div>
|
||
<div class="chat__verlauf" id="verlauf" role="log" aria-live="polite" aria-relevant="additions">
|
||
<!-- DER LEERE RAUM RECHTS (24.09.2026).
|
||
|
||
Vorher stand hier ein einzelner grauer Satz, oben links
|
||
in einer Fläche von tausend mal siebenhundert Pixeln. Das
|
||
sah nicht ruhig aus, sondern unfertig – als hätte die
|
||
Seite nicht zu Ende geladen.
|
||
|
||
Jetzt steht er in der Mitte, mit einem Zeichen darüber.
|
||
Der Satz bleibt Wort für Wort derselbe: Er sagt, was zu
|
||
tun ist, und das war nie das Problem. -->
|
||
<p class="chat__leer chat__leer--mitte" id="verlauf-leer">
|
||
<span class="chat__leer-zeichen" aria-hidden="true">
|
||
<svg viewBox="0 0 24 24">
|
||
<path d="M20 12a8 8 0 0 1-8 8H7l-3.2 2.4A.5.5 0 0 1 3 22v-4.6A8 8 0 1 1 20 12Z" />
|
||
<path d="M8.5 11.5h7M8.5 14.5h4" />
|
||
</svg>
|
||
</span>
|
||
<span class="chat__leer-text">Links ein Gespräch auswählen – oder mit <strong>Neu</strong> eines anfangen.</span>
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Das Eingabefeld. Ein <form>, damit Enter abschickt, ohne
|
||
dass dafür Code nötig wäre. -->
|
||
<!-- DIE ANTWORTLEISTE (09.09.2026, Punkt 15).
|
||
|
||
Sie steht UEBER dem Eingabefeld und innerhalb desselben
|
||
<form>: So sieht man beim Tippen, worauf man antwortet, und
|
||
kann es mit einem Griff wieder loswerden. Eine Leiste
|
||
ausserhalb waere beim Tippen ausserhalb des Blickfelds.
|
||
|
||
`hidden` als Vorgabe -- sie erscheint erst, wenn wirklich
|
||
auf etwas geantwortet wird. Ein leerer Kasten ueber dem
|
||
Eingabefeld waere jeden Tag im Weg fuer den Fall, dass man
|
||
ihn vielleicht braucht. -->
|
||
<!-- ==================================================================
|
||
DIE NACHTRUHE DES TREFFS (19.09.2026)
|
||
|
||
Filipe: "nach mitternacht bis morgens 6 uhr keiner schreiben
|
||
kann damit auch die privatsphaere beruecksichtig wird ueber
|
||
nacht."
|
||
|
||
SIE STEHT UEBER DEM EINGABEFELD, nicht darunter und nicht in
|
||
einer Fusszeile: Wer schreiben will, sieht zuerst, ob er es
|
||
kann. Ein Hinweis unter dem Feld liest man erst, nachdem man
|
||
getippt hat -- und dann ist die Arbeit schon gemacht.
|
||
|
||
ZWEI ZUSTAENDE, und der zweite ist der wichtigere:
|
||
zu Der Chat schlaeft. Das Feld ist aus.
|
||
gleich Es sind noch weniger als 15 Minuten. Das Feld
|
||
bleibt an, aber man weiss Bescheid. Ohne diese
|
||
Vorwarnung waere die Nachtruhe ein Abbruch mitten
|
||
im Satz.
|
||
=============================================================== -->
|
||
<p class="chat__nachtruhe" id="nachtruhe" hidden role="status" aria-live="polite">
|
||
<span class="chat__nachtruhe-zeichen" aria-hidden="true">
|
||
<svg viewBox="0 0 24 24"><path d="M20 14.5A8.5 8.5 0 0 1 9.5 4 8.5 8.5 0 1 0 20 14.5z"/></svg>
|
||
</span>
|
||
<span class="chat__nachtruhe-text" id="nachtruhe-text"></span>
|
||
</p>
|
||
|
||
<!-- DER HOCHLADE-BALKEN (19.09.2026). Er steht UEBER der
|
||
Schreibleiste, nicht darunter: Am Handy sitzt die Leiste
|
||
direkt ueber der Tastatur, und alles darunter waere
|
||
verdeckt -- also genau dann unsichtbar, wenn man ihn
|
||
braucht. -->
|
||
<p class="hochlade" id="anhang-fortschritt" hidden></p>
|
||
<!-- DIE AUFNAHME LÄUFT (23.09.2026)
|
||
Über der Schreibzeile und nicht darunter -- aus demselben
|
||
Grund wie der Hochladebalken darüber: Am Handy sitzt die
|
||
Leiste direkt über der Tastatur, alles darunter wäre
|
||
verdeckt.
|
||
|
||
DIE ZEIT STEHT DA, GROß. Ohne sie weiß niemand, ob noch
|
||
aufgenommen wird — und man redet in eine Aufnahme, die
|
||
längst steht, oder hört auf, während sie läuft.
|
||
`aria-live` sagt sie auch dem vor, der nicht hinsieht;
|
||
bewusst nur alle fünf Sekunden (siehe chat.js), sonst
|
||
spricht das Vorleseprogramm im Sekundentakt. -->
|
||
<div class="tonleiste" id="tonleiste" hidden role="group"
|
||
aria-label="Sprachnachricht aufnehmen">
|
||
<span class="tonleiste__punkt" aria-hidden="true"></span>
|
||
<span class="tonleiste__zeit" id="ton-zeit">0:00</span>
|
||
<span class="tonleiste__wort" id="ton-wort" aria-live="polite">nimmt auf …</span>
|
||
<button type="button" class="tonleiste__weg" id="ton-weg"
|
||
aria-label="Aufnahme verwerfen" title="Verwerfen">✕</button>
|
||
<button type="button" class="tonleiste__senden" id="ton-senden"
|
||
aria-label="Sprachnachricht abschicken" title="Abschicken">✓</button>
|
||
</div>
|
||
<form class="chat__eingabe" id="schreiben" hidden>
|
||
<div class="antwort-leiste" id="antwort-leiste" hidden>
|
||
<span class="antwort-leiste__strich" aria-hidden="true"></span>
|
||
<span class="antwort-leiste__inhalt">
|
||
<span class="antwort-leiste__schild">Antwort an</span>
|
||
<span class="antwort-leiste__von" id="antwort-von"></span>
|
||
<span class="antwort-leiste__text" id="antwort-text"></span>
|
||
</span>
|
||
<button type="button" class="antwort-leiste__weg" id="antwort-weg"
|
||
aria-label="Antwort verwerfen">✕</button>
|
||
</div>
|
||
<label class="chat__eingabe-schild" for="text">Nachricht</label>
|
||
<!-- KURZER PLATZHALTER. Hier stand der Hinweis "Enter schickt,
|
||
Umschalt+Enter macht eine neue Zeile" -- zwei Fehler auf
|
||
einmal: Am Handy brach er auf zwei Zeilen um und schob das
|
||
Feld halb unter den Bildschirmrand, UND er stimmte dort
|
||
nicht: Auf Geräten ohne Tastatur schickt Enter absichtlich
|
||
nicht, sonst käme man nie zu einer zweiten Zeile.
|
||
Die Tastenbelegung steht jetzt im title -- sie ist ein
|
||
Hinweis für Wiederkehrer, keine Aufforderung. -->
|
||
<!-- ANHANG (09.09.2026): "pdfs und fotos".
|
||
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" />
|
||
<button type="button" class="chat__anhang" id="anhang-auf"
|
||
aria-label="Foto oder PDF anhängen" title="Foto oder PDF anhängen">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M20 11.5 12.3 19.2a4.4 4.4 0 0 1-6.2-6.2l7.9-7.9a2.9 2.9 0 0 1 4.1 4.1l-7.9 7.9a1.5 1.5 0 0 1-2.1-2.1l7.2-7.2" />
|
||
</svg>
|
||
</button>
|
||
<!-- SPRACHNACHRICHT (23.09.2026)
|
||
Filipe: „dan will ich auch dass man im chat auch
|
||
sprachnachrichten und gifts reinschicken kann. also nur die
|
||
modis rechte linke hand und dogfather."
|
||
|
||
ER STEHT VON HAUS AUS AUF `hidden`. Ob er erscheint, sagt
|
||
der Server mit `darf_ton` beim Öffnen eines Gesprächs --
|
||
hier steht keine Rolle. Ein Knopf, der da ist und dann
|
||
abgelehnt wird, ist schlimmer als keiner.
|
||
|
||
TIPPEN, NICHT HALTEN. Gedrückthalten ist der bekanntere
|
||
Weg, aber der schlechtere: Wer beim Sprechen den Finger
|
||
verrutscht, verliert die ganze Aufnahme, und mit einer
|
||
Hand am Lenker, am Kind oder am Kaffee hält niemand
|
||
neunzig Sekunden still. Einmal tippen startet, der
|
||
Häkchen-Knopf schickt, das Kreuz verwirft. -->
|
||
<button type="button" class="chat__ton" id="ton-auf" hidden
|
||
aria-label="Sprachnachricht aufnehmen" title="Sprachnachricht aufnehmen">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||
<path d="M12 3.5a2.6 2.6 0 0 1 2.6 2.6v5.4a2.6 2.6 0 0 1-5.2 0V6.1A2.6 2.6 0 0 1 12 3.5Z" />
|
||
<path d="M6.4 11a5.6 5.6 0 0 0 11.2 0M12 16.6V20M9.2 20h5.6" />
|
||
</svg>
|
||
</button>
|
||
<!-- DIE GIF-KISTE (23.09.2026)
|
||
Filipe: „dan will ich auch dass man im chat auch
|
||
sprachnachrichten und gifts reinschicken kann."
|
||
|
||
Ich lese „gifts" als GIFs und sage das ausdrücklich.
|
||
|
||
EIGENE KISTE STATT GIPHY: Ein fremder Anbieter bräuchte
|
||
einen Schlüssel, ein Konto und bekäme bei jedem
|
||
Tastendruck mit, wonach hier gesucht wird — aus einem
|
||
Arbeitsplatz heraus, in dem sonst nichts nach außen geht.
|
||
Was in dieser Kiste liegt, hat das Team selbst
|
||
hineingelegt.
|
||
|
||
Der Knopf steht von Haus aus auf `hidden`; ob er
|
||
erscheint, sagt der Server mit `darf_gif`. -->
|
||
<button type="button" class="chat__gif" id="gif-auf" hidden
|
||
aria-expanded="false" aria-controls="gif-tafel"
|
||
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>
|
||
<!-- ================================================================
|
||
DIE SCHRIFTLEISTE KLAPPT AUF (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."
|
||
|
||
F, K, U und S standen als eigene Zeile ÜBER dem
|
||
Schreibfeld – dauerhaft, auf jedem Gerät. Gemessen auf
|
||
412 px: Die Konsole brauchte dafür drei Reihen statt zwei,
|
||
also rund 60 px Höhe, jeden Tag, für vier Zeichen, die man
|
||
in den seltensten Nachrichten braucht.
|
||
|
||
ER STEHT ALS LETZTES WERKZEUG, direkt vor dem Schreibfeld:
|
||
Büroklammer, Mikrofon, GIF und Emoji fügen etwas EIN – das
|
||
hier verändert, was schon dasteht. Die Reihenfolge geht
|
||
damit von „dazu" nach „daran", und das Letzte ist das,
|
||
was dem Text am nächsten liegt.
|
||
|
||
„Aa" UND KEIN SYMBOL: Ein Stift heißt „bearbeiten", ein
|
||
Pinsel „malen". Für Fett und Kursiv gibt es seit jeher
|
||
genau ein Zeichen, das jeder liest, ohne es zu lernen.
|
||
|
||
`aria-expanded` UND `aria-controls` wie bei GIF und Emoji
|
||
daneben – derselbe Handgriff, dieselbe Ansage. -->
|
||
<button type="button" class="chat__schriftknopf" id="schrift-auf"
|
||
aria-expanded="false" aria-controls="schrift-leiste"
|
||
aria-label="Textgestaltung ein- und ausklappen"
|
||
title="Fett, kursiv, unterstrichen, durchgestrichen">Aa</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">
|
||
<label class="gif-tafel__suchschild" for="gif-suche">Suchen</label>
|
||
<input type="search" id="gif-suche" class="gif-tafel__suche"
|
||
placeholder="Suchen …" autocomplete="off" />
|
||
<button type="button" class="gif-tafel__dazu" id="gif-dazu">
|
||
+ GIF hinzufügen
|
||
</button>
|
||
</div>
|
||
<div class="gif-tafel__gitter" id="gif-gitter"></div>
|
||
<p class="gif-tafel__leer" id="gif-leer" hidden>
|
||
Die Kiste ist noch leer. Leg das erste GIF hinein – alle aus dem
|
||
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>
|
||
<!-- 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 laedt nichts. -->
|
||
<div class="emoji-tafel" id="emoji-tafel" role="group"
|
||
aria-label="Emoji auswählen" hidden></div>
|
||
<!-- WER IST GEMEINT? (20.09.2026)
|
||
Erscheint beim Tippen von "@" und zeigt die Leute DIESES
|
||
Gesprächs. Sie steht hier im Formular und nicht am
|
||
Seitenende, weil sie sich über der Schreibzeile öffnet --
|
||
ein absolut gesetzter Kasten braucht seinen Bezugspunkt in
|
||
der Nähe, sonst wandert er bei jedem Umbruch woanders hin.
|
||
`role=listbox` und `aria-activedescendant` am Textfeld:
|
||
Ein Vorleseprogramm sagt dann beim Blättern den Namen an,
|
||
statt nur "Bearbeitungsfeld". -->
|
||
<div class="erwaehn-liste" id="erwaehn-liste" role="listbox"
|
||
aria-label="Person erwähnen" hidden></div>
|
||
<!-- Erscheint erst, wenn es eng wird -- siehe chat.js. -->
|
||
<span class="chat__zeichen" id="zeichen" aria-live="polite" hidden></span>
|
||
<button type="submit" class="chat__senden" id="senden" aria-label="Abschicken">
|
||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||
<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>
|
||
</div>
|
||
</main>
|
||
|
||
<!-- Neues Gespräch. Beides in einem Dialog: Wer eine Person anklickt,
|
||
schreibt ihr; wer mehrere anhakt, legt eine Gruppe an. Zwei
|
||
getrennte Dialoge hätten die Frage "Einzeln oder Gruppe?" VOR die
|
||
eigentliche Absicht gestellt. -->
|
||
<dialog class="dialog" id="neu-dialog">
|
||
<form method="dialog" id="neu-form" class="neu neu--blank">
|
||
<h2 class="dialog__titel" id="neu-titel">Neues Gespräch</h2>
|
||
<p class="dialog__unter" id="neu-unter">
|
||
Eine Person antippen, um ihr zu schreiben. Mehrere auswählen ergibt
|
||
eine Gruppe.
|
||
</p>
|
||
|
||
<!-- ZWEI ARTEN, EIN DIALOG (10.09.2026, Kapitel 7.2).
|
||
Ein zweiter Dialog wäre dieselbe Personenwahl ein zweites Mal –
|
||
und die zweite Fassung wäre die, in der eine Regel fehlt.
|
||
Sichtbar nur, wenn der Server sagt, dass Kanäle erlaubt sind. -->
|
||
<div class="neu__art" id="neu-art" role="group" aria-label="Was soll es werden?" hidden>
|
||
<button type="button" data-art="gespraech" data-an="ja" aria-pressed="true">Gespräch</button>
|
||
<button type="button" data-art="kanal" aria-pressed="false">Kanal</button>
|
||
</div>
|
||
|
||
<!-- WAS IST DER UNTERSCHIED? (11.09.2026)
|
||
Filipe: "ich will eine bessere erklärung dafür bitte."
|
||
|
||
Der Umschalter stand da, und daneben stand ein Satz über das
|
||
ANTIPPEN von Personen -- also über den nächsten Schritt, nicht
|
||
über die Wahl, die gerade ansteht. Wer die beiden Wörter zum
|
||
ersten Mal sieht, erfährt nirgends, was sie bedeuten.
|
||
|
||
Der Unterschied ist nicht "wenige/viele Leute", sondern WONACH
|
||
der Raum benannt ist: ein Gespräch nach den Menschen darin, ein
|
||
Kanal nach einem Thema. Daran hängt alles Weitere -- dass es
|
||
einen Kanal je Zuständigkeit nur EINMAL gibt, dass sein Name
|
||
festliegt, und dass Leute darin wechseln können, ohne dass der
|
||
Raum ein anderer wird. Genau das steht hier.
|
||
|
||
Steht nur da, wenn auch der Umschalter dasteht. -->
|
||
<div class="neu__erklaerung" id="neu-erklaerung" hidden>
|
||
<p><strong>Gespräch</strong> – du wählst die <em>Leute</em>. Eine Person:
|
||
ihr beide. Mehrere: eine Gruppe mit eigenem Namen.</p>
|
||
<p><strong>Kanal</strong> – du wählst ein <em>Thema</em>. Eine Zuständigkeit,
|
||
ein fester Raum, den es genau einmal gibt. Sein Name kommt aus der
|
||
Zuständigkeit, die Teamleitung ist immer dabei, und wer sonst noch
|
||
dazugehört, lässt sich später ändern.</p>
|
||
</div>
|
||
|
||
<div class="neu__zeile" id="kanal-zeile" hidden>
|
||
<label class="feld-schild" for="kanal-kategorie">Zuständigkeit</label>
|
||
<select id="kanal-kategorie"></select>
|
||
<p class="neu__hinweis" id="kanal-alle" hidden>
|
||
Für jede Zuständigkeit gibt es schon einen Kanal.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="chat-wahl" id="partner"></div>
|
||
|
||
<!-- Erscheint erst ab zwei Ausgewählten -- vorher wäre ein
|
||
Gruppenname eine Frage ohne Anlass. -->
|
||
<div class="neu__zeile" id="gruppenname-zeile" hidden>
|
||
<label class="feld-schild" for="gruppenname">Name der Gruppe</label>
|
||
<input id="gruppenname" maxlength="80" placeholder="z. B. Luna & Betreuung" />
|
||
</div>
|
||
|
||
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
|
||
|
||
<div class="dialog__knoepfe">
|
||
<button type="submit" class="knopf knopf--klein" id="neu-los" disabled>Schreiben</button>
|
||
<button type="button" class="abmelden" id="neu-zu">Abbrechen</button>
|
||
</div>
|
||
</form>
|
||
</dialog>
|
||
|
||
<script src="assets/js/bereiche.js?v=202610031224"></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=202610031224"></script>
|
||
<script src="assets/js/meldung.js?v=202610031224" defer></script>
|
||
<script src="assets/js/hochladen.js?v=202610031224" defer></script>
|
||
<script src="assets/js/nachfrage.js?v=202610031224" defer></script>
|
||
<script src="assets/js/wahl.js?v=202610031224" defer></script>
|
||
<script src="assets/js/kopf.js?v=202610031224"></script>
|
||
<script src="assets/js/glocke.js?v=202610031224"></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=202610031224"></script>
|
||
<!-- DIE BILDSCHAU (25.09.2026). Eigene Datei, weil sie nichts vom
|
||
Chat weiss: Sie bekommt einen Weg und einen Namen und zeigt ein
|
||
Bild. Jede andere Seite mit Fotos kann sie ebenso benutzen, ohne
|
||
dass etwas doppelt gebaut wird.
|
||
|
||
VOR chat.js und ohne `defer`: chat.js haengt den Klick an und
|
||
fragt dabei `window.Bildschau`. Kaeme die Schau spaeter, waere
|
||
sie beim ersten Foto noch nicht da -- und der erste Klick ginge
|
||
wie frueher in den Tab. Ein Fehler, der nur beim ERSTEN Mal
|
||
auftritt, ist der, den man nie nachstellen kann. -->
|
||
<script src="assets/js/bildschau.js?v=202610031224"></script>
|
||
<script src="assets/js/chat.js?v=202610031224"></script>
|
||
<script src="assets/js/installieren.js?v=202610031224" defer></script>
|
||
</body>
|
||
</html>
|