Files
dogfather-universe/workspace/notizen.html
T
DogFatherGitandClaude Opus 5 fdadd5d573 Teilen gibt einen fertigen Discord-Beitrag -- und die zwei Seiten bekommen ein Gesicht
Filipe: "beim teilen wird auch nur der link geteilt, und ich will dass
wenn ich es teile im discord der agentur, dass ein banner und ein
kompletter fertiger text fuer die creator entsteht und nicht einfach
der link kopiert wird damit die leute drauf gehen. das ist kake."
Und: "perfektionier die zwei events kategorien. ich will es noch viel
krasser und spezieller."

EIN LINK IN EINEM DISCORD-KANAL IST EINE AUFFORDERUNG. Wer ihn nicht
anklickt -- und das sind die meisten -- weiss nicht, dass es die
Kampagne gibt. Was in Discord steht, muss die Kampagne SEIN. Der
Teilen-Knopf legt deshalb einen fertigen Beitrag in die Zwischenablage:
Titel als Ueberschrift, Zeitraum, Einleitung, die Aufgaben als Liste,
die Geschenke mit Coinpreis, "Gut zu wissen" aus Rangliste, Zeitplan
und Teilnahme. Er steht zusaetzlich sichtbar unter der Kachel, mit
Zeichenzaehler und zweitem Kopierknopf -- was man nicht gesehen hat,
fuegt man blind ein.

ZWEI DINGE SIND DABEI NICHT BELIEBIG:
  - Der Link steht GANZ AM ENDE. Discord setzt die Bannervorschau
    UNTER die Nachricht; steht er oben, schiebt das Banner den Text
    aus dem Blick.
  - Der Link steht NACKT da. Spitze Klammern unterdruecken die
    Vorschau -- und damit genau das Banner, um das es geht.

2000 ZEICHEN, UND NICHT EINS MEHR. Gekuerzt wird auf dem Server, in
fester Reihenfolge und an Abschnittsgrenzen: erst "Gut zu wissen",
dann die Einleitung auf zwei Saetze, dann die Geschenke. Titel,
Zeitraum, Aufgaben und Link bleiben IMMER. Gemessen gegen sieben
Laengen und einen 1500-Zeichen-Titel als Haertefall.

Gebaut wird der Beitrag aus `teilenDaten()` -- derselben Funktion, aus
der auch die offene Seite entsteht. Zwei Aufbauten fuer dasselbe Event
wuerden irgendwann Verschiedenes sagen, und niemand koennte entscheiden,
welcher recht hat.

DIE ZWEI SEITEN: ein gezeichnetes Wappen in der Farbe der Spalte, ein
Kopf mit Lichtkante und Verlauf, der beim Scrollen oben stehen bleibt,
und eine Lagezeile ("2 laufen - 1 kommt - 3 vorbei"). Gezaehlt mit
derselben Regel, die die Gruppen darunter bildet; was null ist,
erscheint nicht. Augenschonend bleibt es ueber Form und Tiefe, nicht
ueber Leuchtkraft.

NEBENBEFUND, BEHOBEN: Der Einlesekasten war durch Seitenwahl und
Bildweg auf 521 px gewachsen -- auf 412 px mehr als ein halber
Telefonbildschirm, bevor man die erste Kachel sieht. Er klappt jetzt zu
(82 px) und merkt sich die Wahl; ein Druck, und er bleibt offen.

BERICHTIGT, WEIL GEMESSEN:
  - Der Bindestrich wurde entwertet: "4\-woechige", "Ahorn\-Welt". In
    Discord ist "-" nur am Zeilenanfang eine Aufzaehlung.
  - Das Klappschild hatte nur eine Handy-Regel und sonst kein
    Aussehen -- auf 1400 px ein nackter Knopf mit 27 px statt 48.
  - bild-kampagne mass elementFromPoint ausserhalb des
    Sichtfensters und meldete "etwas liegt auf dem Knopf", wo nichts
    lag; und r(null) liess den ganzen Lauf abstuerzen, statt die
    Zusicherung rot zu machen.
  - EINE GEGENPROBE WAR BLIND: DISCORD_MAX von 2000 auf 99999 zu
    setzen liess die Pruefung gruen -- der Testbeitrag ist 1230
    Zeichen lang, die Grenze wurde also nie geprueft. Jetzt mit einem
    Beitrag, der ohne Kuerzung sicher zu lang waere.

GEPRUEFT: 190 (Route und Teilen, +8), 183 (Kachel, +13), 69 Messungen
(Bild, +2), 67 (Agentur), 43 (Bildleser), struktur, css-klassen,
zeichen, deutsche-texte, tippziele. Sechs Gegenproben: Link nur noch
Link, Link oben statt unten, Grenze weg, Lagezeile weg, Kopf klebt
nicht, Kasten wieder offen -- alle sechs werden bemerkt, alle Dateien
byte-gleich wiederhergestellt.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-08 11:20:51 +02:00

193 lines
8.7 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>Notizen · Team Dogi</title>
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202610081119" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202610081119" />
<link rel="stylesheet" href="assets/css/gate.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/start.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/notizen.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/module.css?v=202610081119" />
<link rel="stylesheet" href="assets/css/haus.css?v=202610081119" />
</head>
<body class="start" data-ton="46">
<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">Team&nbsp;Dogi</a> · Notizen</span></p>
<div class="kopfleiste__rechts">
<span class="wer" id="wer">…</span>
<button type="button" class="abmelden" id="abmelden">Abmelden</button>
</div>
</header>
<!-- ======================================================================
DER BLOCK (26.09.2026)
Filipe: „ich will dass du das auch wie ein notizblock erstellst.
ich will dass es übelst geil und einzigartig ist."
ZWEI SPALTEN AUF DEM RECHNER, EINE AUF DEM HANDY. Links der
Stapel, rechts das aufgeschlagene Blatt. Auf dem Handy wäre
nebeneinander beides zu schmal; dort ist der Stapel die Seite,
und ein Blatt legt sich darüber. Der Zurück-Knopf der Kopfleiste
schließt es wieder — das ist die Geste, die jeder kennt.
KEIN SPEICHERN-KNOPF. Nirgends. Wer einen Block aufschlägt und
lostippt, drückt hinterher nicht auf „sichern"; er klappt ihn zu.
Die Anzeige unten rechts sagt, was gerade passiert, und ist der
einzige Ort, an dem das Thema überhaupt vorkommt.
====================================================================== -->
<main class="inhalt inhalt--breit notizblock" id="block">
<!-- ---------- Die Kopfzeile der Seite ---------------------------- -->
<section class="kopf-zeile n-kopf">
<div>
<p class="marke">Notizen</p>
<h1 class="titel">Dein Block</h1>
<p class="unterzeile">
Schreib hinein, was dir einfällt. Es sichert sich von selbst —
und niemand außer dir sieht es.
</p>
</div>
<div class="n-kopf__griffe">
<label class="n-suche" for="suche">
<svg class="n-suche__zeichen" viewBox="0 0 24 24" aria-hidden="true">
<circle cx="10.5" cy="10.5" r="6" />
<path d="M15.2 15.2 20 20" />
</svg>
<input type="search" id="suche" class="n-suche__feld" placeholder="Suchen"
autocomplete="off" spellcheck="false" />
</label>
<button type="button" class="knopf n-neu" id="neu">
<span aria-hidden="true">+</span> Neues Blatt
</button>
</div>
</section>
<p class="fehler" id="fehler" role="alert" aria-live="polite" hidden></p>
<div class="n-raum">
<!-- ---------- Links: der Stapel ------------------------------- -->
<aside class="n-stapel" id="stapel-spalte" aria-label="Deine Blätter">
<div class="n-stapel__kopf">
<h2 class="n-stapel__titel">Blätter <span class="n-zahl" id="anzahl">–</span></h2>
<button type="button" class="n-korb-knopf" id="korb-auf" hidden>
Papierkorb <span class="n-zahl" id="korb-zahl">0</span>
</button>
</div>
<ol class="n-liste" id="liste" aria-live="polite"></ol>
<p class="n-leer" id="leer" hidden>
Noch nichts drauf. <button type="button" class="n-leer__knopf" id="leer-neu">Fang an</button>
</p>
</aside>
<!-- ---------- Rechts: das aufgeschlagene Blatt ---------------- -->
<section class="n-blatt" id="blatt" hidden aria-label="Das aufgeschlagene Blatt">
<!-- Die Perforation. Reine Zierde, deshalb aria-hidden — sie
sagt dem Auge „Block", einer Vorlesefunktion nichts. -->
<div class="n-blatt__perforation" aria-hidden="true"></div>
<header class="n-blatt__kopf">
<h2 class="n-blatt__titel" id="blatt-titel">Ohne Titel</h2>
<div class="n-blatt__griffe">
<!-- Die Haken-Bilanz. Sie erscheint nur, wenn es welche
gibt: Eine Null neben einer Notiz ohne Aufgaben wäre
eine Zahl, die etwas behauptet. -->
<span class="n-haken-stand" id="haken-stand" hidden></span>
<button type="button" class="n-griff" id="anheften" aria-pressed="false"
title="Oben anheften">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M9 3.6h6l-.9 5.2 3.4 3.1H6.5l3.4-3.1z" />
<path d="M12 11.9v8.5" />
</svg>
<span class="n-griff__text">Anheften</span>
</button>
<div class="n-farben" id="farben" role="group" aria-label="Papierfarbe"></div>
<button type="button" class="n-griff n-griff--weg" id="wegtun" title="In den Papierkorb">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M5.5 7h13" />
<path d="M7.5 7V5.2h9V7" />
<path d="M6.8 7.6 7.7 20h8.6l.9-12.4" />
</svg>
<span class="n-griff__text">Wegtun</span>
</button>
</div>
</header>
<!-- ==================================================================
DAS BLATT SELBST — ein Schreibfeld mit einer Deckschicht
Das Feld trägt den Text und den Cursor, sieht ihn aber
nicht: `color: transparent`. Sichtbar ist die Deckschicht
darüber, die denselben Text noch einmal zeichnet — nur mit
Haken, Überschriften, Strichen und Links.
WARUM DIESER UMWEG: Ein `contenteditable` kann all das
direkt, bricht aber beim Einfügen aus fremden Programmen,
beim Rückgängigmachen und bei jeder Tastatur, die über
eine Zwischenzeile schreibt. Ein Schreibfeld tut nichts
davon — es ist das Bauteil, das der Browser seit dreißig
Jahren richtig hinbekommt.
DAMIT DAS AUFGEHT, müssen beide Schichten auf den Pixel
gleich fließen: gleiche Schrift, gleiche Zeilenhöhe,
gleicher Innenabstand, gleicher Umbruch. Und die Auszeichnung
darf die BREITE eines Zeichens nie ändern — kein Fettdruck,
keine andere Schriftgröße, kein Sperren. Erlaubt sind nur
Farbe, Durchstreichen, Schatten und Rahmen. Genau danach
ist die Gestaltung gebaut, und pruef-notizen misst es nach.
================================================================== -->
<div class="n-papier" id="papier">
<div class="n-papier__deck" id="deck" aria-hidden="true"></div>
<textarea class="n-papier__feld" id="feld" spellcheck="true"
autocomplete="off" autocapitalize="sentences"
aria-label="Text dieses Blattes"></textarea>
</div>
<footer class="n-blatt__fuss">
<span class="n-stand" id="stand" aria-live="polite"></span>
<span class="n-wann" id="wann"></span>
</footer>
</section>
<!-- ---------- Der Papierkorb ---------------------------------- -->
<section class="n-korb" id="korb" hidden aria-label="Papierkorb">
<header class="n-korb__kopf">
<h2 class="n-blatt__titel">Papierkorb</h2>
<button type="button" class="knopf-still" id="korb-zu">Zurück zum Block</button>
</header>
<p class="n-korb__satz" id="korb-satz"></p>
<ol class="n-liste n-liste--korb" id="korb-liste" aria-live="polite"></ol>
</section>
</div>
</main>
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
liest daraus die Leitungsrollen. -->
<script src="assets/js/bereiche.js?v=202610081119" defer></script>
<script src="assets/js/wahl.js?v=202610081119" defer></script>
<script src="assets/js/nachfrage.js?v=202610081119" defer></script>
<script src="assets/js/installieren.js?v=202610081119" defer></script>
<script src="assets/js/kopf.js?v=202610081119" defer></script>
<script src="assets/js/glocke.js?v=202610081119" defer></script>
<script src="assets/js/notizen.js?v=202610081119" defer></script>
</body>
</html>