Filipe: „fuer die modis, rechte und linke hand und dogfather eine
kachel hinzufuegst, sie soll: Notizen, heissen. ich will dass du das
auch wie ein notizblock erstellst. ich will dass es uebelst geil und
einzigartig ist."
=================================================================
TEIL 1: DIE FARBE -- UND WAS DABEI AUFFIEL
=================================================================
Fuer die neue Kachel braucht es einen Ton. Beim Suchen fiel auf, dass
tools/kachelton-entzerren.mjs zwoelf der 45 Farben fuer FREI hielt.
Sie sind es nicht. bereicheFuer() gibt fuer die fuenf Rollen des
Agenturhauses null zurueck -- das heisst „nimm die Liste aus dem
Browser", und die steht in workspace/assets/js/bereiche.js. Dort
stehen die Toene 1 bis 22 und 44: Dashboard, Zahlen, Team-Lage,
Scout-Pipeline. Kacheln, die jeden Tag jemand ansieht.
pruef-kachelfarben hatte denselben blinden Fleck. Sie meldete seit
Wochen „33 benutzte Toene" und war gruen. Was sie dadurch NICHT sah:
* Der Farblauf von gestern Nacht hat zwoelf dieser Kacheln
verschoben und drei davon unter die Buntheitsgrenze gedrueckt.
Gruen geblieben.
* Ton 7, 16 und 22 lagen SEIT JEHER unter der Grenze (0,112 / 0,116
/ 0,068). Nie gemeldet.
Das ist die Sorte gruener Haken, vor der die Hausregel warnt: Er sagt
nur, dass die Bedingung erfuellt war -- nicht, dass sie das Richtige
angesehen hat.
BEHOBEN, und zwar an der Wurzel: Die REGELN (Kontrast, Buntheit)
gelten jetzt fuer jeden Ton, der irgendwo an einer Kachel steht --
gelesen aus denselben fuenf Dateien, die auch pruef-kachel-universum
liest. Dazu die Namen der Kacheln, damit „Ton 1 traegt Dashboard"
ueberhaupt pruefbar ist.
DIE PALETTE WURDE NEU GERECHNET, mit dem dritten Verfahren an einem
Tag -- die ersten zwei stehen als Fehler im Kopf des Werkzeugs:
1. Alle 45 neu verteilt. Lief ueber zwei ausdrueckliche Wuensche
hinweg (#ff1a1a, #a8d8ff).
2. Nur die Kollisionen, aber immer nur EINEN der beiden bewegt.
Ergebnis: Ton 1 sprang vom Tuerkis ins Altrosa, 0,197 weit.
3. BEIDE duerfen sich bewegen, und zwar beide nur ein bisschen.
Zwei Toene, die 0,02 auseinanderstehen und 0,09 brauchen, teilen
sich das -- jeder rueckt 0,045, und beide bleiben, was sie waren.
kleinster Abstand 0,0154 -> 0,0905
zu blass 4 -> 0
sichtbar veraendert 7 Kacheln (ueber 0,05)
kaum zu sehen 28 (13 zwischen 0,02 und 0,05, 15 darunter)
EINE AUSNAHME MIT ZAHL, keine mit Achselzucken: Ton 1 (Dashboard)
bleibt acht Tausendstel unter der Buntheitsgrenze. Gemessen ueber ALLE
16,7 Millionen sRGB-Farben ist die naechste, die alle Regeln haelt,
#7a75c8 -- ein Blauviolett, 0,113 entfernt. Tuerkis erreicht in sRGB
schlicht keine hoehere Buntheit, und das schmale Band teilen sich
schon sieben Toene. Eine Kachel, die ihre Farbfamilie behaelt, ist die
bessere Antwort auf „richtig geil und speziell" als eine, die acht
Tausendstel bunter ist und niemand wiedererkennt. blassBis sagt jetzt
bei jeder Ausnahme, WIE WEIT sie reicht -- vorher hiess blassErlaubt
schlicht „hier wird weggesehen".
DIE NEUE FARBE IST GRUEN UND WOLLTE BERNSTEIN SEIN. Gesucht war die
Farbe von Papier. Gemessen gibt es sie nicht mehr: Der beste Bernstein
im ganzen Farbraum haelt 0,0799 Abstand -- unter der Hausgrenze. Und
Platz schaffen hilft nicht: Setzt man ihn fest, muss ein warmer Ton
das Band verlassen (Ton 45 waere 0,212 weit ins Magenta gewandert).
Die groesste wirklich freie Luecke liegt im Gruen, bei 0,0917. Ein
linierter Block in Gruen ist Papier, seit es Papier gibt.
=================================================================
TEIL 2: DER BLOCK
=================================================================
DREI ENTSCHEIDUNGEN, AUS DENEN DER REST FOLGT:
1. ES GIBT KEINEN SPEICHERN-KNOPF. Nirgends. Wer einen Block
aufschlaegt und lostippt, drueckt hinterher nicht auf „sichern";
er klappt ihn zu. Gesichert wird 800 ms nach dem letzten
Tastendruck. Geht das nicht, bleibt der Text im Browser liegen und
wird nachgereicht -- und der Fuss sagt ehrlich „noch nicht
gesichert", statt einen Verlust zu melden, den man gerade nicht
verhindern kann.
2. DAS BLATT IST EIN SCHREIBFELD MIT EINER DECKSCHICHT. Das Feld
traegt Text und Cursor und ist unsichtbar; darueber zeichnet eine
zweite Schicht denselben Text noch einmal -- mit Kaestchen,
Ueberschriften, Strichen und Links.
DARAUS FOLGT EINE EISERNE REGEL, und sie steht dreimal im Code:
KEINE Auszeichnung darf die BREITE eines Zeichens aendern. Kein
Fettdruck, keine andere Groesse, keine Sperrung. Erlaubt sind nur
Farbe, Flaeche, Rahmen und Durchstreichen. Ein einziges
font-weight: 700 verschoebe den Umbruch, und ab der zweiten Zeile
stuende der sichtbare Text neben dem Cursor.
pruef-notizen misst das am echten Umbruch: eine Probe mit allen
Auszeichnungen und einer Zeile, die umbrechen MUSS. Sind beide
Schichten verschieden hoch, sitzt der Umbruch woanders. Mit
Gegenprobe -- Fettdruck auf der Deckschicht bricht die Deckung um
genau eine Zeile (30 px), und die Zeile wird rot.
3. DIE TASTATUR FUEHRT DIE LISTE FORT, NICHT EINE LEISTE. Ein
Spiegelstrich und Enter macht den naechsten Punkt, ein leeres
Kaestchen und Enter das naechste Kaestchen -- und ein GESETZTER
Haken wird dabei nicht mitgenommen, die naechste Aufgabe ist ja
noch nicht erledigt. Zweimal Enter beendet die Liste. Ein Klick
aufs Kaestchen hakt ab. Es gibt keine Werkzeugleiste, weil man beim
Schreiben nie den Stift wechselt.
UND: NIEMAND SIEHT DIE NOTIZEN EINES ANDEREN. Auch DogFather nicht.
Es gibt in workspace-notizen.js keinen siehtAlles()-Zweig, keinen
Umschalter, keine fremde Liste -- jede Abfrage hat person_id = ? fest
eingebaut. Die Kachel steht deshalb in „Fuer dich" und nicht in
„Taeglich": Die Gruppe sagt die wichtigste Eigenschaft, bevor man sie
anfasst.
NUR AUF DER TEAM-ADRESSE. Auf der Agenturadresse ist die Seite ein
404 -- auch fuer DogFather. Das ist dieselbe Trennung wie bei Chat,
Kalender und Aufgaben, und sie steht an zwei Stellen: in
GEHOERT_ZU_ADRESSE (die Datei) und in der Schnittstelle (die Daten).
Die Seite ist nur HTML; die Daten sind die Sache.
Dazu: sechs Papierfarben, Anheften, Suche mit Hervorhebung im Text,
Papierkorb mit dreissig Tagen und einem Eintrag in der
Aufbewahrungsliste (ohne den waere die Frist ein Satz in einem
Kommentar -- genau das ist dem Support am 24.09. passiert).
=================================================================
EIN FUND BEIM BAUEN, DER ALLEN GEHOERT
=================================================================
DELETE /workspace/api/notizen/:id gab es schon -- in
workspace-aufgaben.js, fuer die Notizen AN einer Aufgabe. Weil jener
Router frueher eingehaengt ist, hat er jeden Loeschversuch des Blocks
abgefangen und mit 404 beantwortet.
Von aussen sah das aus wie ein Fehler im neuen Modul: Anlegen ging,
Aendern ging, Loeschen nicht. Man sucht dann im eigenen Code, und dort
ist nichts. Express meldet so etwas nicht -- es nimmt die erste Route,
die passt, und schweigt ueber die zweite.
Der Block liegt jetzt unter /workspace/api/notizblock. Und
pruef-notizen geht seitdem den Routenbaum von express durch und meldet
jedes Paar aus Methode und Pfad, das zweimal vergeben ist. Gemessen:
307 Wege, keine Dublette. Die Pruefung gilt fuers ganze Haus, auch
wenn sie in dieser Datei steht -- hier ist sie gefunden worden.
Nebenbei berichtigt: pruef-crew-adresse verlangte von jedem Eintrag
der Haustafel HTTP 200 mit Inhalt. Das stimmte, solange dort nur
oeffentliche Dateien standen. notizen.html ist die erste Seite hinter
der Anmeldung -- sie antwortet mit 302, und das ist richtig. Gefragt
wird jetzt, was die Tafel wirklich meint: GIBT es das hier.
GEMESSEN, alles nach den Aenderungen:
pruef-notizen 76 Punkte, 0 Fehler (neu)
pruef-kachelfarben 31 Punkte, 0 Fehler (vorher 26)
pruef-kachel-universum 13 Punkte, 0 Fehler
pruef-crew-adresse 157 Punkte, 0 Fehler
pruef-buehne 230 Punkte, 0 Fehler -- notizen.html neu in
der Liste, schlechtester Kontrast 6,73:1,
also 50 % ueber der Grenze
pruef-rechtetafel, -haus-seiten, -struktur, -css-klassen,
-jeder-hat-eine-seite, -workspace-seiten, -kachelraster,
-rueckmeldung alle 0 Fehler
Co-Authored-By: Claude Opus 5 <[email protected]>
178 lines
8.7 KiB
JavaScript
178 lines
8.7 KiB
JavaScript
/* =====================================================================
|
|
DIE REGELN FÜR EINEN KACHELTON — an einer Stelle (22.09.2026)
|
|
=====================================================================
|
|
|
|
ENTSTANDEN AUS EINEM WIDERSPRUCH, den niemand bemerkt hätte, bis er
|
|
Arbeit gekostet hat.
|
|
|
|
Für die neue Kachel „Calls & Protokolle" musste ein Ton gerechnet
|
|
werden. `tools/kachel-farbe-einzeln.mjs` lieferte `#bcdbff` mit
|
|
einem Abstand von 0,1339 — dem besten Wert weit und breit.
|
|
`server/pruef-kachelfarben.mjs` lehnte ihn ab:
|
|
|
|
FEHL keiner ist blasser als 0.12 — Ton 43 #bcdbff (0.060)
|
|
|
|
Beide hatten recht. Das Werkzeug suchte die Buntheit von 0,30 bis
|
|
herunter auf 0,04, die Prüfung verlangt mindestens 0,12. Zwei
|
|
Zahlen für dieselbe Regel, in zwei Dateien, die nichts voneinander
|
|
wissen — die eine kannte die andere nicht.
|
|
|
|
Das ist dieselbe Krankheit wie eine abgeschriebene Spaltenliste:
|
|
Es wird nicht falsch, es wird UNZUSTÄNDIG. Ein Werkzeug, das
|
|
Vorschläge macht, die die Prüfung danach ablehnt, ist schlimmer als
|
|
keines — man hält das Ergebnis für fertig.
|
|
|
|
Deshalb stehen die Schwellen jetzt hier, und beide Seiten lesen sie
|
|
von hier. Wer eine ändert, ändert sie für alle.
|
|
===================================================================== */
|
|
|
|
/** Der dunkle Grund, gegen den jede Kachelfarbe gemessen wird. */
|
|
export const GRUND = "#0a121e";
|
|
|
|
/* DIE SCHWELLE IST GEMESSEN, NICHT GERATEN.
|
|
Vor dem Lauf vom 22.09.2026 lag das engste Paar der benutzten Töne
|
|
bei 0,0741 („Was ansteht" neben dem neuen Rot von „Draußen") — das
|
|
war der Zustand, den Filipe als „ähnlich" gemeldet hat. Danach:
|
|
0,1028. 0,090 liegt dazwischen: Der heutige Stand hat Luft, ein
|
|
Rückfall auf „sieht gleich aus" schlägt an. */
|
|
export const MINDEST_ABSTAND = 0.090;
|
|
|
|
/* Der Median der Buntheit aller Töne lag bei 0,168, die fünf
|
|
blassesten zwischen 0,064 und 0,088. Filipe: „die farben sollen auch
|
|
richtig geil und speziell sein." Augenschonend heißt dunkles Schema
|
|
und kein Flackern — NICHT blass. */
|
|
export const MINDEST_BUNTHEIT = 0.12;
|
|
|
|
/* Die Obergrenze. Über 0,30 wird es auf einem dunklen Grund grell, und
|
|
grell ist das, was die Augen belastet. */
|
|
export const HOECHST_BUNTHEIT = 0.30;
|
|
|
|
/* Nicht verhandelbar: Eine Kachelfarbe trägt auch Text und Zahlen. */
|
|
export const MINDEST_KONTRAST = 4.5;
|
|
|
|
/* =====================================================================
|
|
WAS FESTGELEGT IST -- und warum (hierher geholt am 25.09.2026)
|
|
|
|
Diese Liste stand in server/pruef-kachelfarben.mjs. Dort konnte sie
|
|
nur EINES: eine Abweichung melden, nachdem sie passiert ist.
|
|
|
|
Genau das ist am 25.09. passiert. Eine Rechnung hat die 45
|
|
Kachelfarben neu verteilt, um acht fast gleiche Paare zu trennen --
|
|
und dabei zwei ausdrueckliche Wuensche ueberfahren, weil sie sie
|
|
nicht kannte:
|
|
|
|
Ton 38 #ff1a1a „nur die soll knall rot sein!!!" -> #ff241e
|
|
Ton 44 #a8d8ff „soll auch babyblau sein" -> #90c3ff
|
|
|
|
Die Pruefung hat beides gefunden, und das ist ihr Verdienst. Aber
|
|
eine Bedingung, die erst NACH dem Schaden spricht, ist die
|
|
schwaechere Form: Wer die Farben rechnet, soll gar nicht erst die
|
|
Moeglichkeit haben, sie zu verschieben.
|
|
|
|
Deshalb steht sie jetzt hier, neben den Schwellen -- und beide
|
|
Seiten lesen sie von hier: die Pruefung, um zu melden, und das
|
|
Rechenwerkzeug, um sie festzuhalten.
|
|
===================================================================== */
|
|
export /* Was festgelegt ist — mit dem Grund, aus dem es festgelegt wurde. */
|
|
const FESTGELEGT = [
|
|
/* BERICHTIGT AM 22.09.2026. Ich hatte screen5 und screen6 vertauscht
|
|
und das Rot auf "Draussen" gelegt. Filipe: "nicht die kachel
|
|
draussen soll rot sein sondern die kachel vertraulich melden nur
|
|
die soll knall rot sein!!!" */
|
|
{ ton: 38, kachel: "Vertraulich melden", hex: "#ff1a1a",
|
|
warum: "knalliges Rot -- wer den vertraulichen Weg sucht, soll ihn finden, ohne zu lesen" },
|
|
{ ton: 39, kachel: "Draußen",
|
|
warum: "die Farbe, die Regeln & Hilfe hatte -- ausdruecklicher Wunsch (screen5)" },
|
|
/* BABYBLAU IST PER DEFINITION BLASS (25.09.2026).
|
|
|
|
Filipe: „die hauptfarbe der kachel soll auch babyblau sein mit
|
|
bissl lila."
|
|
|
|
Diese Farbe haelt die Buntheitsgrenze von 0,12 NICHT (sie liegt
|
|
bei 0,074) -- und kann sie nicht halten, das liegt am Wort.
|
|
Nachgemessen mit `node tools/_babyblau-suchen.mjs`: Unter allen
|
|
Blautoenen im Umkreis des Wunsches gibt es KEINEN, der gleichzeitig
|
|
Buntheit >= 0,12 und Abstand >= 0,09 schafft -- der beste kommt
|
|
auf 0,075 Abstand. Der Blaubereich ist von den Toenen 15, 23, 26,
|
|
31, 41 und 43 besetzt.
|
|
|
|
DIE GRENZE WIRD DESHALB NICHT GESENKT, sondern hier BENANNT
|
|
ausgenommen. Eine gesenkte Grenze gaelte fuer alle 45 Toene und
|
|
liesse ab morgen jede blasse Farbe durch; eine benannte Ausnahme
|
|
gilt fuer genau diese eine und steht mit ihrem Grund da.
|
|
|
|
UND SIE IST NICHT GRATIS: Wer blass sein darf, muss dafuer beim
|
|
ABSTAND ueberdurchschnittlich sein -- das ist der Zweck, den die
|
|
Buntheitsregel nur stellvertretend misst. Gemessen 0,1125 zur
|
|
naechsten Farbe (Ton 15), das 7,3-Fache des engsten Paares, das im
|
|
Haus ohnehin steht. Die Bedingung dazu steht unten bei der
|
|
Pruefung und ist echt: Faellt der Abstand unter 0,10, wird diese
|
|
Zeile rot. */
|
|
{ ton: 44, kachel: "Support", hex: "#a8d8ff", blassErlaubt: 0.10, blassBis: 0.070,
|
|
warum: "Babyblau auf Wunsch -- blass, dafuer mit gemessenem Sicherheitsabstand" },
|
|
|
|
/* ==== TUERKIS GEHT NICHT BUNTER (26.09.2026) =====================
|
|
|
|
Ton 1 traegt „Dashboard" im Agenturhaus und liegt bei einer
|
|
Buntheit von 0,112 -- acht Tausendstel unter der Hausgrenze.
|
|
Aufgefallen ist das erst, als diese Pruefung endlich AUCH die
|
|
Toene des Agenturhauses ansah; vorher kannte sie nur 33 von 45.
|
|
|
|
DIE NAHELIEGENDE ANTWORT WAERE, IHN BUNTER ZU MACHEN. Gemessen
|
|
geht das nicht: Durchsucht man ALLE 16,7 Millionen sRGB-Farben
|
|
nach der naechstgelegenen, die gleichzeitig Buntheit >= 0,124,
|
|
Kontrast >= 4,65 und 0,09 Abstand zu allen 44 anderen haelt,
|
|
kommt #7a75c8 heraus -- ein Blauviolett, 0,113 entfernt. Aus
|
|
dem Tuerkis des Dashboards wuerde also Flieder.
|
|
|
|
Der Grund ist der Farbraum selbst: Tuerkis erreicht in sRGB nur
|
|
eine geringe Buntheit, und dieses schmale Band teilen sich
|
|
bereits die Toene 15, 16, 23, 26, 31, 32 und 43. Es ist voll.
|
|
|
|
ALSO EINE AUSNAHME MIT ZAHL, KEIN FREIBRIEF: `blassBis` sagt,
|
|
wie blass er hoechstens sein darf -- blasser als heute darf er
|
|
nicht werden. Und `blassErlaubt` fordert weiterhin den vollen
|
|
Abstand ein. Eine Kachel, die ihre Farbfamilie behaelt, ist die
|
|
bessere Antwort auf „richtig geil und speziell" als eine, die
|
|
acht Tausendstel bunter ist und niemand wiedererkennt. */
|
|
{ ton: 1, kachel: "Dashboard", blassErlaubt: 0.09, blassBis: 0.108,
|
|
warum: "Tuerkis -- in diesem schmalen Band gibt es keine buntere Farbe mit Abstand" },
|
|
|
|
/* ==== DER SECHSUNDVIERZIGSTE TON (26.09.2026) ====================
|
|
|
|
Filipe: „fuer die modis, rechte und linke hand und dogfather
|
|
eine kachel ... sie soll: Notizen, heissen."
|
|
|
|
GESUCHT WAR BERNSTEIN -- die Farbe von Papier. Gemessen gibt es
|
|
sie nicht mehr: Durchsucht man alle sRGB-Farben im Bernsteinband
|
|
(Farbwinkel 55 bis 100 Grad) nach der, die am weitesten von
|
|
allen 45 vorhandenen wegliegt, kommt #d0ac48 heraus -- mit
|
|
0,0799 Abstand, also UNTER der Hausgrenze von 0,09.
|
|
|
|
Und Platz zu schaffen hilft nicht: Setzt man diesen Bernstein
|
|
fest und laesst die Nachbarn ausweichen, geht es zwar auf --
|
|
aber ein warmer Ton muss dafuer das Band verlassen. Gemessen
|
|
wanderte Ton 45 (Orange) 0,212 weit ins Magenta; haelt man auch
|
|
den fest, trifft es Ton 40 mit 0,246. Das warme Band ist voll,
|
|
und jede neue Farbe darin kostet eine vorhandene Kachel ihre
|
|
Identitaet. Das ist ein schlechter Tausch.
|
|
|
|
DIE FREIEN LUECKEN, alle gemessen:
|
|
|
|
Gruen #9cde90 0,0917 <- genommen
|
|
Violett #ca50ac 0,0913
|
|
Blau #746afc 0,0890
|
|
Tuerkis #66e2bc 0,0821
|
|
Bernstein #d0ac48 0,0799
|
|
|
|
Gruen passt zur Sache besser, als es zunaechst klingt: Das
|
|
Notizblatt im Haus traegt seine Linien in dieser Farbe, und ein
|
|
linierter Block in Gruen ist Papier, seit es Papier gibt.
|
|
|
|
ER IST FESTGELEGT, weil die Kachel ihre eigene Oberflaeche hat
|
|
(siehe `papier` in start.css): Ein Farblauf, der ihn verschiebt,
|
|
wuerde Linien und Flaeche auseinanderlaufen lassen. */
|
|
{ ton: 46, kachel: "Notizen", hex: "#9cde90",
|
|
warum: "die groesste freie Luecke der Palette -- Bernstein gibt es nicht mehr" },
|
|
];
|