Acht Empfehlungen für Sketch-to-Figure und analog-v1, drei Moonshots, zwei Beifänge für Engine und Export und ein kleiner Abschnitt zum Backlog-Brett
Datum
2026-09-30
Anlass
Anschlussrecherche an Band 4 (research-mzp-extravaganzen), zugeschnitten in einem kurzen Grilling: Kern ist das visuelle Handwerk, Engine/Viewer und Export laufen als Beifang mit, das Backlog-Brett bekommt einen Abschnitt mit niedriger Priorität. Wiki bleibt ausgeschlossen. Nur Report, keine Tickets.
Maßstab
Wenige harte Empfehlungen statt einer breiten Liste. Jede nennt die Andockstelle im Code, den Aufwand und ein Urteil, ob sie wegen der Modellgeneration lohnt oder unabhängig davon. Leitplanken wie in Band 4: keine neue Abhängigkeit im Spring-Dienst, Konzept vor Bibliothek, permissive Lizenz, Aktivität in den letzten zwölf Monaten.
Abgrenzung
18 Vorgänger-Reports wurden heruntergeladen und nach jedem Kandidaten durchsucht. Excalidraw, tldraw, Rough.js, roughViz und der Excalidraw-MCP stehen dort schon und fehlen hier. Die Funde unten tauchen in keinem der 18 Reports auf.
Grundlage
Code gegen main (f5a4a06) gelesen, dazu mzone-render/server.js. Produktion am 2026-09-30 befragt (getCapabilityFor, backlogQuery, drei publizierte Blätter per HTTP). Sterne, Push und Lizenz per GitHub-API am selben Tag. Was nicht geprüft wurde, steht am Ende.
TL;DR
Der größte Hebel dieser Runde ist kein Fund aus dem Netz, sondern ein Befund im eigenen Haus:
analog-v1 ist im MZP ein Gast, kein Bewohner.
Der Server kennt den Stil nicht (getCapabilityFor('analog-v1') antwortet heute mit
unknown), vier der fünf Schriftschnitte kommen von Google, und die
Passungsprüfung mit „Toleranz 0“ läuft von Hand in einem lokalen Headless-Chrome, obwohl
mzone-render dieselbe Art Messung für Diagramme längst macht.
Die ersten drei Empfehlungen (H1 bis H3) beheben das zusammen: Schriften ins Haus, der Stil nach
/lib/ mit Auskunft über getCapabilityFor, und
Passung plus Kollision als Befund im vorhandenen Render-Check. Danach ist ein Blatt für jeden Agenten
baubar und vom Server geprüft, nicht nur für einen, der das Repo lesen kann.
Zur Modellgeneration: Die Ankündigung von Opus 5.5 (2026-09-22) sagt nichts über Bildverstehen.
Was dem Handwerk wirklich hilft, gilt schon seit Claude 4.7: Bilder bis 2576 px an der langen Kante und
Bounding-Boxes in absoluten Pixelkoordinaten. Darauf bauen H4, H5 und H7. Alles andere lohnt unabhängig vom Modell.
Opus 5.5 selbst macht vor allem die Eval-Läufe billiger (4 $/20 $ je Million Tokens).
Auf einen Blick
#
Empfehlung
Label
Andockstelle
Aufwand
Modellgeneration
H1
Schriften ins Haus holen
ticket-reif
fonts-maierzone, FigureSvgExtractor
klein
unabhängig
H2
analog nach /lib/, Server erklärt den Stil
ticket-reif
static/lib, getCapabilityFor
mittel
unabhängig, hilft kleinen Modellen am meisten
H3
Passung und Kollision in den Render-Check
ticket-reif
mzone-render, validateArtifact
mittel
unabhängig
H4
Skizzen-Inventar mit Pixelkoordinaten
ticket-reif
sketch-to-figure.md
klein
wegen der Modellgeneration (ab Claude 4.7)
H5
Pauspapier-Ansicht statt Umschalter
ticket-reif
Snippet analog-v3
mittel
wegen der Modellgeneration (baut auf H4)
H6
Blätter für Screenreader lesbar machen
ticket-reif
Bausteinkatalog, art-a11y-check
klein
unabhängig
H7
Eval-Aufgaben eval-sketch-*
ticket-reif
evals/tasks
klein, nach H2–H4
wegen der Modellgeneration (Modellvergleich)
H8
Etiketten nach Kandidatenliste setzen
Muster
sketch-to-figure.md, Regel B3
klein
unabhängig
B1
PDF über page.pdf im Render-Dienst
ticket-reif
mzone-render, MZP-131
mittel
unabhängig
B2
Skin kartografie für die Engine
ticket-reif
DiagramVariant, DiagramSkinCss
mittel
unabhängig
M1
Das Blatt zeichnet sich selbst
Moonshot
Snippet, mzone-render
mittel
unabhängig
M2
Entwürfe sehen aus wie Entwürfe
Moonshot
Lifecycle draft, /lib/
mittel
unabhängig
M3
Plotter-Export auf echtes Papier
Moonshot
figure.svg
groß
unabhängig
K1
Backlog-Brett: fünf kleine Eingriffe
niedrige Priorität
backlog_board.html
je Stunden
unabhängig
H · Visuelles Handwerk
Der Workflow sketch-to-figure.md ist mit 48.765 Zeichen das größte Dokument unter
docs/agent-workflows/ und trägt Stil, Snippet, 30 Bausteine und zwei Prüfskripte in sich.
Das war für den Anfang richtig. Jetzt, mit zwei publizierten Blättern im Stil
(analog-musterkarte, analog-coding-harness), lohnt es sich, die
tragenden Teile aus dem Dokument in den Server zu ziehen.
H1 · Schriften
Spectral und Plex Mono 600 ins Haus holen
Befund im Code, keine externe Quelle · FigureSvgExtractor.FONT_FACE_CSS, static/lib/fonts-maierzone@1.0.0
ticket-reifDie Messung mit Toleranz 0 hängt an einem fremden Server
fonts-maierzone@1.0.0 enthält IBM Plex Mono nur in 400 und 500 und Spectral gar nicht.
Die Bausteine setzen aber fast überall font-weight="600". Deshalb lädt
FigureSvgExtractor vier von fünf Schnitten von fonts.gstatic.com,
und alle drei geprüften Blätter binden fonts.googleapis.com ein.
Das hat drei Folgen. Der PNG-Export (figure.png) hängt zur Renderzeit an Google.
Jeder Besucher eines Blatts schickt seine IP dorthin. Und die Passungsprüfung misst mit
getBBox() gegen die Schrift, die gerade geladen ist. Fällt der Abruf aus, misst sie
Georgia und Monospace, und ein „Passung = 0“ sagt dann nichts über das Blatt, das der Leser sieht.
Zugeschnitten auf MZPfonts-maierzone@1.1.0 mit Spectral 400, 600 und 400 kursiv sowie Plex Mono 600
(neue Versionsnummer, weil /lib/immutable ausliefert).
FONT_FACE_CSS zeigt danach nur noch auf /lib/, der Workflow
ersetzt den Google-Link durch fonts.css. Die Lizenzdatei für Spectral kommt wie bei den anderen dazu.
berührt: static/lib/fonts-maierzone, FigureSvgExtractor, sketch-to-figure.md · Aufwand: klein · Messgröße: kein Abruf an fonts.g* beim Laden eines Blatts
H2 · Stil als Bibliothek
analog nach /lib/, und der Server erklärt den Stil
Live-Probe 2026-09-30: getCapabilityFor('analog-v1, analog') → "unknown": ["analog-v1", "analog"] · offen seit Band 4 (N10, Blocker aus MZP-130)
ticket-reifDie Einfrier-Regel des Workflows ist genau das, was /lib/ schon kann
Der Workflow verlangt von Hand, was die Bibliotheksauslieferung technisch erzwingt: „Änderungen an diesem
Snippet erzeugen analog-v2, alte Blätter bleiben eingefroren.“ Unter
/lib/analog@1.0.0/ wäre das keine Absprache mehr, sondern die Versionsnummer im Pfad.
Heute trägt jedes Blatt rund 5 KB Snippet inline, und ein Agent ohne Repo-Zugriff kommt an Katalog und Regeln gar nicht heran.
Zugeschnitten auf MZP
(1) /lib/analog@1.0.0/analog.css und analog.js mit dem heutigen
Stand von analog-v2, dazu die sechs Marker als einbindbares Fragment.
(2) getCapabilityFor('analog') liefert Tokens, Regeln und die Bausteinliste als Namen mit Größe und
Knoten-Eigenschaft; ein einzelner Bausteinname liefert dessen SVG-Fragment. Das ist dasselbe Muster wie bei
icons (MZP-105) und spart dem Agenten, 48 KB Dokument zu lesen, um drei Bausteine zu brauchen.
(3) Das Workflow-Dokument schrumpft auf Ablauf und Kompositionsregeln.
Das widerspricht dem Nicht-Ziel „keine /lib/-Versionierung“ aus v1. Mit zwei Blättern im Stil und
einem Eval, das daran scheitert, ist der Grund dafür entfallen.
berührt: static/lib, LibRegistry, CapabilitiesAssembler, sketch-to-figure.md · Aufwand: mittel · Messgröße: ein Agent ohne Repo baut ein Blatt, das H3 besteht
H3 · Prüfen
Passung und Kollision als Befund im Render-Check
Befund im Code · mzone-render/server.js ruft für Diagramme bereits page.evaluate(messeDiagramm) und liefert overflow, containment, legendCollisions
ticket-reifDie zwei Prüfskripte aus dem Workflow gehören neben messeDiagramm
Schritt 5 des Workflows verlangt heute einen lokalen Chrome mit --dump-dom, eine Testkopie mit
eingefügtem Skript und das Auslesen von window.__fitcheck und
window.__collcheck. Das setzt einen Agenten mit Shell und Browser voraus. Der Render-Dienst
lädt dieselbe Seite ohnehin in Chromium, sobald validateArtifact läuft.
Zugeschnitten auf MZP
Eine dritte Messfunktion messeFigur, die nur greift, wenn die Seite ein
#az-svg trägt, und vorher auf document.fonts.ready wartet (deshalb nach H1).
Drei Notices: FIGURE_FIT (Text läuft aus seinem Rahmen, mit data-name und Text),
FIGURE_COLLISION (fremdes Element schneidet einen Knoten) und
FIGURE_NO_FRAMES für den Fall, den das Dokument selbst als Falle nennt: kein .frame,
also blind null Treffer. Stufe WARNING, wie bei a11y. Die Skripte stehen fertig im Workflow und wandern nur um.
Ein Tester der Opus-5.5-Ankündigung schreibt, Selbstprüfschleifen seien leichter aufzusetzen. Dieser Haken ist die Stelle, an der eine solche Schleife ansetzt.
Anthropic-Doku „Vision“ und „Coordinates and bounding boxes“ (abgerufen 2026-09-30) · Hochauflösende Stufe für „Claude 4.7 and later models“: 2576 px lange Kante, 4784 Bild-Tokens, automatisch
Die Idee: Das Modell liefert zu jedem Element der Skizze einen Rahmen [x1, y1, x2, y2] in absoluten Pixeln des Bildes, das es sieht. Die Doku rät ausdrücklich zu Pixeln statt normierten Werten und dazu, das Bild vorher selbst auf die Zielgröße zu bringen.
ticket-reifErsetzt D1 (vtracer) aus Band 4, ohne neues Werkzeug
Schritt 2 des Workflows heißt heute „Elemente, Beschriftungen und die grobe Anordnung inventarisieren“ und hinterlässt
nichts Prüfbares. Band 4 wollte die Treue zur Skizze über eine Vektorisierung des Fotos messen. Das Modell kann das Inventar
selbst mit Koordinaten liefern, und ein Handyfoto verliert auf der hochauflösenden Stufe deutlich weniger als früher:
3 Megapixel gehen laut Tabelle ungekürzt durch, auf der Standardstufe wurden sie auf 1269×952 verkleinert.
Zugeschnitten auf MZP
Das Inventar wird zur Begleitdatei inventar.json im Bundle: je Element eine Id, der gelesene Text,
der zugeordnete Baustein und der Rahmen. Jedes .el aus der Skizze trägt
data-sketch-id. Daraus folgt ein Deckungsbericht ohne Bildverarbeitung: jeder Inventar-Eintrag
braucht ein Element, jedes Element ohne Eintrag braucht den +-Baustein.
Die Doku nennt die Koordinaten „approximate“ und empfiehlt eine Sichtprobe. Dafür ist H5 da.
berührt: sketch-to-figure.md (Schritt 2 und 5) · Aufwand: klein (nur Dokument) · Messgröße: Inventar-Einträge ohne Element = 0
Die Idee hinter der Quelle: Die Autoren messen, wie gut multimodale Modelle handgezeichnete Diagramme bewerten, und halten fest, dass selbst starke Modelle deutlich hinter Menschen zurückbleiben.
ticket-reifDas Modell liest, der Mensch urteilt — also muss der Vergleich einen Blick kosten
Der Knopf „Skizze zeigen“ tauscht heute SVG gegen Foto aus (display:none hin und her). Wer die Treue prüfen will,
muss sich das eine Bild merken, während er das andere ansieht. Die Treue von einem Modell benoten zu lassen, wäre nach SketchJudge der falsche Schluss.
Zugeschnitten auf MZP
Das Foto liegt als halbtransparente Ebene unter der Reinzeichnung, mit einem Schieberegler für die Deckkraft.
Skalierung und Versatz ergeben sich aus den Rahmen in inventar.json (H4) und den Rahmen der zugehörigen Elemente,
als einfache Ausgleichsrechnung über die Mittelpunkte. Wo die Reinzeichnung von der Skizze abweicht, sieht man es sofort als Doppelkontur.
Das ändert den Snippet und erzeugt nach der Einfrier-Regel analog-v3.
ticket-reif41 fokussierbare Elemente, ein einziges aria-label
Beide publizierten Blätter tragen je 41 Elemente mit class="el" tabindex="0", aber nur ein
aria-label und eine role auf der ganzen Seite. Name und Erklärung stehen in
data-name und data-desc und erreichen nur das Tooltip-Skript.
Ein Screenreader landet per Tab auf 41 namenlosen Gruppen. Das trifft genau die Regel „Form vor Farbe“, die der Stil für Farbsehschwäche schon ernst nimmt.
Zugeschnitten auf MZP
Im Katalog bekommt das <svg>role="graphics-document" mit einem
aria-label aus dem Blatttitel, jeder Baustein role="graphics-symbol",
aria-label gleich data-name und die Erklärung als
aria-description. Schattenkopien und Deko bekommen aria-hidden.
Gemessen wird mit dem vorhandenen a11y: true (axe-core im Render-Dienst).
Die Unterstützung der Grafik-Rollen ist je Screenreader ungleich; falls axe oder ein Test sie nicht anerkennt, ist
role="img" mit aria-label der robuste Rückfall.
berührt: Bausteinkatalog (30 Vorlagen), analog-musterkarte, Eval art-a11y-check · Aufwand: klein · Messgröße: A11Y_CLEAN auf beiden Blättern
H7 · Messen
Eval-Aufgaben eval-sketch-* mit deterministischer Bewertung
Anschluss an MZP-130 (Ergebnis: eigene Skizzen statt SkeTikZ, Bild per stream-json; Blocker: der Server erklärt den Stil nicht) und MZP-113
ticket-reifMit H2 bis H4 wird Sketch-to-Figure zum ersten Mal zählbar
Unter evals/tasks/ liegen zwölf Aufgaben, keine davon mit einem Bild als Eingabe. Der Spike MZP-130 hat den Weg
gezeigt und ist am fehlenden Stil-Wissen des Servers hängen geblieben. Sobald H2 den Blocker löst und H3 Befunde liefert,
braucht eine Sketch-Aufgabe kein Modell als Richter.
Zugeschnitten auf MZP
Drei bis fünf eigene Skizzen mit einem von Hand geschriebenen Soll-Inventar. expect prüft: Zahl der
.node-Elemente, die Menge der data-name-Werte, FIGURE_FIT und
FIGURE_COLLISION gleich null, Legende vorhanden. Der Lauf über Haiku, Sonnet und Opus zeigt dann, ab welchem Modell
das Handwerk trägt. Bei 4 $/20 $ je Million Tokens für Opus 5.5 ist die Matrix rund ein Fünftel billiger als mit Opus 5.
github.com/kevinschaul/avoid-overlap (10 Sterne, Push 2026-03, ohne Lizenzangabe — deshalb nur als Muster) · entstanden für Grafiken der Washington Post
Die Idee: zwei Techniken gegen überlappende Beschriftungen. Choices probiert je Etikett eine vorgegebene Liste von Positionen durch, Nudge schiebt Etiketten auseinander, bis nichts mehr kollidiert.
MusterDie Kollisionsprüfung findet das Problem, sagt aber nicht, wohin mit dem Etikett
Regel B3.4 lautet „Beschriftung auf die Mitte des längsten geraden Segments“. Das ist genau eine Position. MZP-108 hat die
Kollisionsprüfung nachgerüstet, weil diese eine Position oft in einem fremden Knoten landet.
Zugeschnitten auf MZP
Die Regel wird zur Reihenfolge: Mitte des längsten Segments, dann Mitte des zweitlängsten, dann je 12 px quer versetzt.
Die erste Position ohne Kollision gewinnt. FIGURE_COLLISION (H3) kann die nächste freie Kandidatenposition
gleich mitliefern, dann kostet die Korrektur den Agenten einen Aufruf statt drei.
berührt: sketch-to-figure.md (B3), optional messeFigur · Aufwand: klein
B · Beifang für Export und Engine
B1 · Export
PDF über page.pdf im Render-Dienst
Playwright-Doku page.pdf(): nutzt standardmäßig das Print-Medium; page.emulateMedia({ media: 'screen' }) davor liefert die Bildschirmfassung
ticket-reifLöst MZP-131 mit dem Werkzeug, das schon läuft
MZP-131 beschreibt ein PDF, das erfolgreich aussieht und leer ist, weil pandoc kein JavaScript ausführt.
mzone-render fährt Playwright 1.50 und kennt drei Pfade: /render,
/inspect und /rasterize. Ein PDF-Pfad fehlt.
Zugeschnitten auf MZP
Ein vierter Pfad /pdf: Seite laden, auf Ruhe warten wie beim Render-Check, dann page.pdf
mit Hintergründen. Der Export-Endpunkt aus MZP-76 wählt den Weg nach Seitenart: Template-Seiten bleiben bei pandoc/typst,
Artefakt-Bundles gehen an den Render-Dienst. Für Slidev hängt er ?print an, wie im Ticket beschrieben.
Nebenbei fällt für jedes analog-Blatt ein Vektor-PDF zum Drucken ab.
Unabhängig davon sollte der pandoc-Weg einen leeren Rumpf als Notice melden, statt ein leeres PDF als Erfolg auszugeben.
berührt: mzone-render/server.js, Export-Endpunkt (MZP-76) · Aufwand: mittel · Messgröße: legacy-frontend-migration-playbook liefert ein PDF mit Text
B2 · Engine
Skin kartografie für die Diagramm-Engine
Befund im Code · DiagramVariant kennt zehn Skins plus custom, keine davon mit der Palette aus analog-v1
ticket-reifFür Abläufe bis zwölf Knoten rechnet die Engine, was der Agent heute von Hand setzt
Die Kompositionsregeln „Flow bauen“ (Raster 40, Ports, keine Kante durch einen Knoten, 12 px Abstand) beschreiben in Prosa, was
LayoutEngine, EdgeRouter und EdgeNudger ausrechnen und was die
Layout-Ratsche misst. Für reine Ablaufdiagramme ist die Handkomposition der teurere und fehleranfälligere Weg.
Zugeschnitten auf MZP
Eine elfte Variante mit den zehn Tokens des Stils, Spectral und Plex Mono, dem harten Versatzschatten als versetzte Formkopie und den zwei Kantenarten
(Rost durchgezogen, Petrol gestrichelt). Die Handkomposition bleibt für alles, was kein Graph ist: Ringe, Git-Bahn, Zeitachse, Vorher/Nachher.
Der Workflow bekommt eine Weiche am Anfang: Ist die Skizze ein Ablauf, dann publishDiagram mit der Skin.
Ob custom das schon heute teilweise kann, habe ich nicht gelesen. Das ist der erste Schritt des Tickets.
github.com/dai-shi/excalidraw-animate (~2,1k Sterne, MIT, Push 2026-09-10) · github.com/excalimate/excalimate (76 Sterne, MIT, Push 2026-09-18; MCP-Server mit 35 Tools, Export als WebM und animiertes SVG; die README warnt selbst, dass viel Code KI-erzeugt und noch nicht aufgeräumt ist)
Die Idee: Eine Zeichnung baut sich Strich für Strich in einer festgelegten Reihenfolge auf, so wie sie am Whiteboard entstanden wäre.
MoonshotDer Trick dafür steckt schon im Snippet
Der Puls auf den Rost-Kanten nutzt pathLength und stroke-dashoffset. Dieselbe Technik zeichnet
eine Kontur von null auf voll. Mit einem data-order je Element entsteht aus einem Blatt eine Erklärung in Leserichtung.
Zugeschnitten auf MZP
Ein Knopf „Aufbau zeigen“, der unter prefers-reduced-motion verschwindet. Mit dem Aufnahmeweg aus Band 4 (A7, Playwright
recordVideo) wird daraus ein WebM für Präsentationen. Moonshot, weil es das Nicht-Ziel „kein Schrittmodus“ berührt und die
Reihenfolge vom Agenten gepflegt werden muss. Übernommen wird das Muster, keine der beiden Bibliotheken.
github.com/fskpf/svg2roughjs (217 Sterne, MIT, Push 2026-06-12) · wandelt ein fertiges SVG im Browser in eine handgezeichnet wirkende Fassung um
Die Idee: der umgekehrte Weg zu Sketch-to-Figure. Aus einer sauberen Vektorgrafik wird wieder eine Skizze.
MoonshotDer Lifecycle-Status wird sichtbar, ohne dass jemand ein Banner lesen muss
MZP kennt den Status draft. Eine Seite in diesem Status sieht heute genauso fertig aus wie eine abgenommene.
Ein Diagramm oder Blatt, das im Entwurf krakelig gezeichnet erscheint und erst mit current glatt wird, sagt einem Reviewer
auf den ersten Blick: Hier darf noch alles anders werden.
Zugeschnitten auf MZP
Nur auf Review-Links und Draft-Seiten, als Browser-Skript aus /lib/, nie im Spring-Dienst. Offen ist, ob die Umwandlung
deterministisch genug ist, damit zwei Reviewer dasselbe sehen, und ob Viewer-Funktionen (Hover, Radar) die umgezeichneten Pfade noch treffen.
Rough.js als Unterbau käme als zweite Bibliothek mit.
berührt: static/lib, DiagramPageRenderer, Preview-Auslieferung · Aufwand: mittel, mit Spike vorab
M3 · Papier
Plotter-Export: das Kartografie-Blatt auf echtem Papier
github.com/golanlevin/p5.plotSvg (208 Sterne, MIT, Push 2026-06-23) · SVG-Export für Stiftplotter: reine Pfade, Ebenen je Stift
Die Idee: SVG so ausgeben, dass ein Stiftplotter es zeichnen kann. Keine Füllungen, keine Filter, je Stiftfarbe eine Ebene.
MoonshotDer verrückteste Fund: der Kreis von der Handskizze zurück zur Tusche
Der Stil hat genau drei Strichfarben (Tinte, Rost, Petrol) und verzichtet auf Verläufe und Filter. Das ist zufällig fast die Definition eines plotbaren Blatts.
Was fehlt, sind Flächen als Schraffur statt Füllung und Text als Pfad.
Zugeschnitten auf MZP
Eine zweite Begleitdatei figure.plot.svg neben figure.svg: drei Ebenen, Schattenkopien als
Schraffur, Text über eine Einlinien-Schrift. Nutzen hat es nur, wenn ein Plotter im Haus steht. Als Wandbild eines Architekturblatts wäre es allerdings
das einzige MZP-Artefakt, das man anfassen kann.
berührt: FigureSvgExtractor · Aufwand: groß
K · Das Backlog-Brett (niedrige Priorität)
Das Brett ist ein Thymeleaf-Fragment mit HTMX 2.0.3 und selbst geschriebenem HTML5-Drag-and-drop, bewusst ohne Bibliothek.
Der Charakter (Kontobuch, Liegezeit auf jeder Karte) ist eigenständig und sollte bleiben. Fünf Eingriffe modernisieren das Gefühl, ohne den Aufbau zu ändern.
Den Admin-Bereich konnte ich nicht ansehen (Basic-Auth); alles hier stammt aus backlog_board.html.
Karten gleiten statt springen. Ein Zug tauscht heute das ganze Brett per outerHTML. HTMX kann den Tausch in eine
View Transition legen: swap: 'outerHTML transition:true', dazu je Karte ein eindeutiger view-transition-name.
Die Karte wandert dann sichtbar in ihre neue Spalte, die Zähler blenden um. Same-Document View Transitions sind seit Firefox 144 (Oktober 2025) „Baseline newly available“;
ältere Browser tauschen einfach wie bisher. Rund fünfzehn Zeilen.
Verschieben ohne Ziehen. WCAG 2.2 verlangt in Erfolgskriterium 2.5.7 (Stufe AA) für jede Zieh-Bedienung eine Alternative mit einfachem Zeiger.
Ein kleines Menü je Karte („nach Bereit“, „nach In Arbeit“) über denselben /place-Endpunkt erfüllt das und macht das Brett am Telefon und per Tastatur bedienbar.
Die Ideen-Spalte entlasten. Von 25 offenen Tickets stehen heute 20 auf IDEA, je zwei auf READY und REVIEW, eines auf DOING. Eine Spalte trägt also vier Fünftel des Bretts.
Innerhalb der Spalte nach Priorität gruppieren und P3 als <details> einklappen. Dazu Filter-Chips für Labels; die Daten trägt jedes Ticket schon.
Ticket als Seitenblatt. Ein Klick auf eine Karte verlässt heute das Brett. Ein <dialog>, per
hx-get gefüllt, hält Brett und Ticket nebeneinander. Der Link bleibt als Rückfall und für „in neuem Tab öffnen“.
HTMX ins Haus._layout.html lädt HTMX von unpkg.com. Der Kommentar im Brett begründet den Verzicht auf
Bibliotheken gerade mit der CSP. Die eine Bibliothek, die es gibt, gehört dann nach /lib/.
Nicht empfohlen: eine Drag-and-drop-Bibliothek. atlassian/pragmatic-drag-and-drop (~12,8k Sterne) ist gut, setzt aber auf dieselben
nativen Ereignisse, die das Brett schon nutzt, und löst für fünf Spalten kein Problem, das Punkt 2 nicht billiger löst.
Was ich ausdrücklich nicht empfehle
Ein Bild-zu-SVG-Modell betreiben. VFig (arXiv 2603.24575, März 2026) vektorisiert Diagramme mit einem eigenen Modell. In dessen eigener Auswertung liegt es mit 78,2 % knapp vor Claude Sonnet 4.6 mit 76,7 %.
Der Abstand rechtfertigt keine GPU. H4 nutzt das Modell, das ohnehin am Tisch sitzt.
Die Treue zur Skizze vom Modell benoten lassen. SketchJudge zeigt, dass Modelle genau dabei hinter Menschen liegen. Das Inventar zählen (H4), den Rest ansehen (H5).
CSS Anchor Positioning für den Tooltip. Der Tooltip folgt dem Zeiger, das sind 25 Zeilen JavaScript, die funktionieren. Ob sich innere SVG-Elemente als Anker eignen, habe ich nicht geprüft.
Scroll-gesteuerte Animationen. Laut einer Sekundärquelle steht die Funktion in Firefox noch hinter einem Schalter (Stand Juni 2026). Für ein Blatt, das überall gleich aussehen soll, zu früh.
textures.js und Vivus. Beide passen thematisch (Schraffur-Muster, Strich-Animation), der letzte Push liegt aber bei 2023 bzw. 2022. Beides sind wenige Zeilen SVG, die der Katalog selbst tragen kann.
Reihenfolge
Ein Block, zusammen etwa drei bis vier Tage: H1, H2, H3. Danach ist der Stil im Server zu Hause, und jedes weitere Blatt wird geprüft statt beaufsichtigt.
H6 passt in denselben Zug, weil der Katalog ohnehin angefasst wird.
Danach messen: H4 ins Workflow-Dokument, H7 als Aufgaben, ein Lauf über drei Modelle. Das Ergebnis sagt, ob H5 und H8 nötig sind oder ob die Blätter schon stimmen.
Unabhängig davon: B1, weil MZP-131 ein Fehler ist, der wie ein Erfolg aussieht. MZP-135 (Phantomknoten beim Mermaid-Import) hat dieselbe Eigenschaft und sollte vor jedem neuen Engine-Ausbau fallen.
Wenn Lust auf Glanz besteht: B2 zuerst, weil es Arbeit spart, dann M1. M2 und M3 nur mit Spike. K1 jederzeit, in Stunden.
Was nicht geprüft wurde
Band 4 habe ich zu etwa 90 % gelesen; die Abschnitte N8 bis N10 nur über die Übersichtstabelle.
Band 4 nennt zehn Tickets auf REVIEW. Das Backlog zeigt heute nur noch MZP-133 und MZP-134 dort. Ob die übrigen abgenommen oder nur umgebucht sind, habe ich nicht nachverfolgt.
Die Lizenz von Spectral (H1) habe ich nicht nachgeschlagen; ich erinnere sie als OFL. Vor der Übernahme prüfen.
Wie Screenreader die Grafik-Rollen aus H6 tatsächlich vorlesen, ist ungetestet. Die W3C-Empfehlung ist von 2018, die Unterstützung laut Sekundärquellen ungleich.
Die Koordinaten-Genauigkeit aus H4 habe ich an keiner echten Skizze ausprobiert. Die Doku selbst nennt sie „approximate“.
Was die Variante custom der Engine heute kann (B2), habe ich nicht gelesen.
Ob HTML5-Drag-and-drop auf heutigen Mobilbrowsern trägt (K, Punkt 2), ist nicht getestet. Das WCAG-Kriterium gilt unabhängig davon.
Die Aufwandsangaben sind Schätzungen aus dem Lesen des Codes, keine Messung.