Files
dogfather-universe/workspace/aufgaben.html
T
DogFatherGitandClaude Opus 5 a9815e291a Ein Hintergrund fuer alles -- und Zeichen, die endlich vollstaendig sind
ZWEI AUFTRAEGE.

1. DER NEUE HINTERGRUND
   Das Dogfather/Spicy-Media-Bild loest die neun Buehnen ab. Der Login
   behaelt ausdruecklich sein eigenes Bild (body.gate, unangetastet) --
   dort wird der Zugangscode eingegeben, und genau das sollte bleiben.

   Nicht einfach hingelegt: Das Bild ist sehr kraeftig, vor allem die
   rote Haelfte. Ohne Behandlung fiel der Textkontrast auf 3,03:1
   (noetig sind 4,5:1) -- ausgerechnet in der Personenverwaltung und auf
   dem Aufgabenbrett. Gemessen hat das server/pruef-buehne.mjs, das den
   Kontrast an bis zu 36 echten Bildpunkten je Seite nachrechnet.

   In vier Schritten angepasst und jedes Mal nachgemessen:
     -0,14 Helligkeit -> 4,12:1   (immer noch zu wenig)
     -0,20 Helligkeit -> 4,48:1   (zwei Hundertstel zu wenig)
     -0,23 Helligkeit -> 4,63:1   bestanden, alle Seiten
   Dazu Saettigung 0,72 und Gamma 0,91 -- dieselbe Behandlung, die auch
   die alten Buehnen bekommen haben (tools/buehne-bauen.mjs arbeitet mit
   Helligkeit 0,66 bis 0,88). Das Bild bleibt ein Bild und wird nicht
   zur Tapete, aber Text steht darauf lesbar.

2. DIE ZEICHEN
   Sie bekommen einen VERLAUF: oben hell, nach unten gedaempft -- eine
   Lichtquelle ueber dem Zeichen, wie in der echten Welt. Dazu ein
   weicher Schlagschatten in der eigenen Farbe. Der Verlauf ist EINMAL
   definiert und arbeitet mit currentColor: ein Verlauf fuer siebzehn
   Kachelfarben.

   ZWEI SACKGASSEN AUF DEM WEG, beide aufgeschrieben statt weggeraeumt:

   a) Erst lag unter jeder Linie eine dicke, weichgezeichnete Kopie --
      "Licht, das die Linie wirft". Bei einem grossen Symbol traegt das.
      Hier nicht: Ein Zeichen ist 24 Einheiten breit und 25 px gross,
      eine Einheit ist also ein Pixel. Linie 1,65 plus Schein 2,5 fuellt
      jede Luecke, die enger als vier Einheiten ist -- aus dem Kalender
      wurde ein leerer Kasten. Gesehen habe ich das erst bei dreifacher
      Vergroesserung; auf dem normalen Schirm sah es nur "satter" aus.
      Die Lage ist wieder weg.

   b) Der Verlauf lief zunaechst in OBJEKTKOORDINATEN. Damit wird er auf
      den Umriss jedes einzelnen Pfades gerechnet -- und eine waagerechte
      Linie hat die Hoehe null. Der Verlauf ist dann entartet, und der
      Browser zeichnet den Pfad GAR NICHT. Verschwunden waren dadurch:
      die Querlinie im Kalender, alle drei Regler-Striche in Technik,
      die Grundlinie der Berichte. Jetzt laeuft er in Benutzer-
      koordinaten ueber die festen 24 Einheiten -- was ohnehin richtiger
      ist, denn das Licht kommt von oben und nicht von jedem Strich
      einzeln.

   AUSSERDEM ECHT REPARIERT: Das Technik-Zeichen hatte drei Griffe aus
   Boegen der Laenge null ("a1.4 1.4 0 1 0 0-.02z") -- sie wurden nie
   gezeichnet. Uebrig blieben drei nackte Striche, die aussahen wie ein
   Menue-Symbol. Jetzt sind es echte Kreise. Kalender und Dashboard haben
   mehr Luft zwischen ihren Linien bekommen, damit sie bei 25 px nicht
   zu einer Flaeche verschmelzen.

GEPRUEFT: Buehne 38 (Kontrast an echten Bildpunkten), Startansicht 133,
Rollen 97, Handy 50, Grosscheck 15, Lesbarkeit 14 -- alle gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-03 01:26:52 +02:00

161 lines
6.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Aufgaben · Creator Workspace</title>
<meta name="robots" content="noindex, nofollow" />
<meta name="theme-color" content="#05070d" />
<link rel="icon" href="assets/img/favicon.png" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609030126" />
<link rel="stylesheet" href="assets/css/start.css?v=202609030126" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609030126" />
</head>
<body class="start">
<!-- Der Schleier ueber der Buehne (Casper und HasiDog in den unteren
Ecken, siehe start.css). Ein eigenes Element statt eines dritten
Pseudo-Elements -- body hat nur ::before und ::after. -->
<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&nbsp;Workspace</a> · Aufgaben</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">
<section class="kopf-zeile">
<div>
<p class="marke">Aufgaben</p>
<h1 class="titel">Offen. In Arbeit. Review. Erledigt.</h1>
</div>
<button type="button" class="knopf knopf--klein" id="neu-oeffnen">Neue Aufgabe</button>
</section>
<!-- Die Leiste über dem Brett (01.09.2026). Drei Zeilen, in dieser
Reihenfolge – die Reihenfolge ist die Aussage:
1. was brennt (ein Satz, sofort lesbar)
2. Ausschnitte (Nur meine · Heute · Überfällig)
3. die eigenen Creator (nur für Betreuer, siehe aufgaben.js)
Alle drei bleiben verborgen, bis feststeht, wer angemeldet ist –
eine Filterleiste ohne Zahlen ist ein Versprechen ohne Deckung. -->
<p class="lage" id="lage" role="status" hidden></p>
<div class="ausschnitte" id="ausschnitte" role="group"
aria-label="Ausschnitt wählen" hidden></div>
<div class="creator-reihe" id="creator-reihe" role="group"
aria-label="Nach Creator einschränken" hidden></div>
<!-- Formular zum Anlegen. Standardmäßig zu, damit das Brett im Vordergrund
steht und die Seite nicht mit einem Formular begrüßt. -->
<form class="neu" id="neu" hidden>
<div class="neu__zeile">
<label class="feld-schild" for="f-titel">Titel</label>
<input id="f-titel" name="titel" maxlength="160" placeholder="Was ist zu tun?" required />
</div>
<div class="neu__zeile">
<label class="feld-schild" for="f-text">Beschreibung <span class="leise">(optional)</span></label>
<textarea id="f-text" name="beschreibung" rows="3" maxlength="4000"
placeholder="Worum geht es genau?"></textarea>
</div>
<div class="neu__raster">
<div>
<label class="feld-schild" for="f-prio">Priorität</label>
<select id="f-prio" name="prioritaet">
<option value="hoch">hoch</option>
<option value="mittel" selected>mittel</option>
<option value="niedrig">niedrig</option>
</select>
</div>
<div>
<label class="feld-schild" for="f-frist">Frist <span class="leise">(optional)</span></label>
<input id="f-frist" name="frist" type="date" />
</div>
<div id="feld-creator" hidden>
<label class="feld-schild" for="f-creator">Bereich von</label>
<select id="f-creator" name="creator_id"><option value="">—</option></select>
</div>
<div id="feld-verant" hidden>
<label class="feld-schild" for="f-verant">Verantwortlich</label>
<select id="f-verant" name="verantwortlich_id"><option value="">—</option></select>
</div>
</div>
<p class="fehler" id="neu-fehler" role="alert" aria-live="polite"></p>
<div class="neu__knoepfe">
<button type="submit" class="knopf knopf--klein" id="neu-speichern">Anlegen</button>
<button type="button" class="abmelden" id="neu-abbrechen">Abbrechen</button>
</div>
</form>
<p class="fehler" id="fehler" role="alert" aria-live="polite"></p>
<div class="brett" id="brett" aria-busy="true">
<p class="leise" id="laedt">Aufgaben werden geladen …</p>
</div>
</main>
<!-- Bearbeiten. Als natives <dialog>: bringt Fokusfang, Schließen mit Esc
und die Abdunklung des Hintergrunds ohne eigenen Code mit. -->
<dialog class="dialog" id="bearbeiten-dialog">
<form method="dialog" id="bearbeiten" class="neu neu--blank">
<h2 class="dialog__titel">Aufgabe bearbeiten</h2>
<div class="neu__zeile">
<label class="feld-schild" for="b-titel">Titel</label>
<input id="b-titel" maxlength="160" required />
</div>
<div class="neu__zeile">
<label class="feld-schild" for="b-text">Beschreibung</label>
<textarea id="b-text" rows="3" maxlength="4000"></textarea>
</div>
<div class="neu__raster">
<div>
<label class="feld-schild" for="b-prio">Priorität</label>
<select id="b-prio">
<option value="hoch">hoch</option>
<option value="mittel">mittel</option>
<option value="niedrig">niedrig</option>
</select>
</div>
<div>
<label class="feld-schild" for="b-frist">Frist</label>
<input id="b-frist" type="date" />
</div>
<div id="b-feld-creator" hidden>
<label class="feld-schild" for="b-creator">Bereich von</label>
<select id="b-creator"><option value="">—</option></select>
</div>
<div id="b-feld-verant" hidden>
<label class="feld-schild" for="b-verant">Verantwortlich</label>
<select id="b-verant"><option value="">—</option></select>
</div>
</div>
<p class="fehler" id="b-fehler" role="alert" aria-live="polite"></p>
<div class="dialog__knoepfe">
<button type="button" class="knopf knopf--klein" id="b-speichern">Speichern</button>
<button type="button" class="abmelden" id="b-abbrechen">Abbrechen</button>
<button type="button" class="abmelden abmelden--warnung" id="b-loeschen" hidden>Löschen</button>
</div>
</form>
</dialog>
<script src="assets/js/wahl.js?v=202609030126" defer></script>
<script src="assets/js/bereiche.js?v=202609030126" defer></script>
<script src="assets/js/kopf.js?v=202609030126" defer></script>
<script src="assets/js/aufgaben.js?v=202609030126" defer></script>
</body>
</html>