Community: die Koepfe sagen jetzt, wofuer das Brett da ist

DIE SIEBEN BRETTER HATTEN KEINE UNTERZEILE. Ein Mitglied sah nur:

    — TERMINE
    Was ansteht
    Hier schreibt das Team.

Die Oberzeile ist eine Kategorie, kein Satz; darunter stand
ausschliesslich, OB man schreiben darf -- auf drei Brettern sogar
wortgleich dasselbe. Was das Brett IST und was man hier tut, stand
nirgends.

Jetzt sagt jeder Satz zwei Dinge: wofuer das Brett da ist und was man
konkret tut. Zum Beispiel: "Was ihr euch wuenscht. Drueck ,Will ich
auch' - danach wird sortiert, was am meisten gewollt ist." Der Hinweis
aufs Schreibrecht haengt sich dahinter, in dieser Reihenfolge: "was
ist das hier" kommt vor "darf ich mitmachen".

--- Zwei Funde aus der Highlights-Galerie ---------------------------

1. DREI KARTEN, DREI HOEHEN. `align-items: start` liess jede Karte
   dort enden, wo ihr Text aufhoerte. Eine Galerie ist ein Raster --
   ungleiche Kanten liest man als Fehler, nicht als Absicht. Jetzt
   gleich hoch (gemessen: aus 3 verschiedenen Hoehen wurde 1).

2. "NUR OFFENE" AUF BRETTERN OHNE ZUSTAENDE. Fuenf der sieben kennen
   gar kein "offen/erledigt" -- ein Clip ist nicht erledigt. Der Knopf
   stand trotzdem ueberall und tat dort nichts. Ein Knopf, der nichts
   tut, kostet das Vertrauen in den naechsten.

   Er erscheint jetzt nur, wenn die Liste ueberhaupt etwas Erledigtes
   enthaelt -- dieselbe Regel wie bei der Kanalzeile. Das `||
   filter === 'offen'` daneben ist kein Beiwerk: Ist der Filter aktiv,
   sieht man gerade keine erledigten mehr, und der Knopf wuerde unter
   der eigenen Hand verschwinden.

   GEGENPROBE IM MESSWERKZEUG: Ein Wunsch wird auf erledigt gesetzt.
   Wunschliste 6 Filter (mit "Nur offene"), Highlights 5 (ohne).
   Ohne diesen Eintrag saehe eine abgeschaffte Funktion genauso aus
   wie eine, die richtig entscheidet.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-18 20:16:55 +02:00
co-authored by Claude Opus 5
parent 6e062b2439
commit 447a4157a5
36 changed files with 474 additions and 404 deletions
+21
View File
@@ -140,6 +140,13 @@ for (const b of BRETTER) {
{
const d = new DatabaseSync(DB);
const wer = d.prepare("SELECT id FROM personen WHERE rolle = 'gast' AND name = 'Jonas'").get();
/* GEGENPROBE ZU „NUR OFFENE" (18.09.2026). Der Knopf erscheint
seit heute nur, wenn es etwas zu filtern gibt -- sonst stand er
auf fuenf Brettern, die gar keine Zustaende kennen, und tat dort
nichts. Die Gefahr dabei: dass er auch dort verschwindet, wo er
gebraucht wird. Ein erledigter Wunsch beweist das Gegenteil. */
d.prepare("UPDATE eintraege SET status = 'erledigt' WHERE bereich = 'wunsch'"
+ " AND id = (SELECT MIN(id) FROM eintraege WHERE bereich = 'wunsch')").run();
d.prepare(`INSERT INTO eintraege (bereich, art, titel, text, datum, status, erstellt, erstellt_von)
VALUES ('treff','frage',?,?,?, 'offen', ?, ?)`)
.run("Kommt Casper auch mal in den Stream?",
@@ -210,12 +217,26 @@ for (const b of BRETTER) {
startkatalog: !!document.querySelector("#startkatalog")?.children?.length,
leerText: document.querySelector(".leer, .leer-hinweis, .hinweis")?.textContent?.trim().slice(0, 80) || "",
hoehe: document.body.scrollHeight,
/* Wie viele Filterknoepfe, und sind die Karten gleich hoch? */
filterZahl: document.querySelectorAll('#filter button').length,
kartenHoehen: [...new Set([...document.querySelectorAll('.eintrag-karte')]
.map((k) => Math.round(k.getBoundingClientRect().height)))].length,
/* Der Kopf des Bretts: Was steht da, und wohin fuehrt der Link? */
ober: document.querySelector('.brettkopf__ober, .ober')?.textContent?.trim() || '',
unter: document.querySelector('.brettkopf__unter, .unterzeile, .brettkopf p')?.textContent?.trim() || '',
kopflink: (() => {
const a2 = document.querySelector('.brettkopf a, .kopfkasten a');
return a2 ? a2.textContent.trim() + ' -> ' + (a2.getAttribute('href') || '') : '(keiner)';
})(),
/* Sichtbare Sternchenpaare -- gemeint war Fettschrift. */
sternchen: (document.body.innerText.match(/\*\*/g) || []).length,
}));
console.log(`${b.padEnd(11)} „${z.titel}" · ${z.karten} Karten`
+ ` · Schreibfeld: ${z.schreibfeld ? "ja" : "NEIN"}`
+ ` · Karte ${z.hoeheJeKarte}px · melden: ${z.meldenGesamt}`
+ ` · Filter: ${z.filterZahl} · Kartenhoehen: ${z.kartenHoehen}`
+ `
Kopf: „${z.ober}" / „${z.unter}" · Link: ${z.kopflink}`
+ (z.sternchen ? ` · STERNCHEN: ${z.sternchen}` : "")
+ (z.leerText ? ` · „${z.leerText}"` : ""));
const pfad = `C:/Users/qciga/AppData/Local/Temp/comm-${b}${BREITE < 700 ? "-handy" : ""}.png`;