Repository navigation
Restliche Review-Befunde und die fehlenden Gestaltungsmuster - #67
Merged
Merged
Conversation
KORREKTHEIT
export() wendet jetzt ValidationUtils.validateDownload() an, dieselbe
Pruefung wie der Downloadknopf. Ohne sie ging ein Bild mit leerem weissen
Logobalken raus: Die App zeichnet den Balken unbedingt, nur der Ortsname
fehlt — es sieht nichts kaputt aus, bis es jemand veroeffentlicht.
Das hat vier bestehende Tests umgeworfen, die ohne Logo exportierten, und
dabei gezeigt, dass render({template, text}) sonst unbenutzbar geworden
waere. Der Logo-Zustand wird deshalb aus dem Spec abgeleitet: Wer keins
nennt, will keins.
setBackground() wartet auf ein ANDERES Bild statt darauf, dass ueberhaupt
eines existiert. contentImage ist ein Einwegriegel — replaceCanvas() und
resetWizard() verwerfen das Canvas, setzen ihn aber nie zurueck. Nach
einem Vorlagenwechsel war er noch wahr, ein Austausch kehrte also sofort
zurueck, bevor das neue Foto geladen war.
addText() setzt jetzt ALLE Bedienelemente, nicht nur die genannten. Der
Handler liest alle; ein weggelassenes Feld erbte damit den vorigen
Aufruf. Ein gelber rechtsbuendiger Text faerbte jeden folgenden mit ein.
GESTALTUNGSMUSTER
sendBackwards() und sendToBack(). Fabric bringt beides mit, die App
verdrahtet keines, die Oberflaeche hat nur einen Nach-vorne-Knopf. Ohne
das laesst sich eine Ueberlappung nie wieder aufloesen. Beide halten
Grundflaeche und Hintergrundfoto ganz hinten.
addCredit() fuer Bildnachweis und KI-Kennzeichnung. Beides steht als
Pflicht in der llms.txt, musste aber als gewoehnlicher Text nachgebaut
werden — und der wird auf 80 % der Bildbreite skaliert. Ein Nachweis in
Schlagzeilengroesse ist kein Nachweis. Feste kleine Groesse relativ zur
kurzen Kante, innerhalb der Schutzzone.
duplicate() fuer wiederholte Motive, etwa Raeder fuer eine Radboerse.
Klont das Fabric-Objekt statt das Bild erneut zu laden; der Test zaehlt
die fetch-Aufrufe mit und belegt: vier Icons, ein Ladevorgang.
Dazu die Emoji-Einordnung aus dem Review in der llms.txt: Emoji kommen
durch, aber aus der Systemschrift statt der Hausschrift, und
zusammengesetzte zerfallen in ihre Bestandteile. Ein Symbol als PNG oder
SVG ist verlaesslich, ein Emoji nicht.
VERSION auf 13. 132 Jest, 137 e2e gruen.
Claude-Session: https://claude.ai/code/session_01Qtib9MPRZATQU3j9w7ymDk
flomotlik
deleted the
feature/restliche-review-befunde-und-bildmuster
branch
September 25, 2026 18:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Die restlichen Korrektheitsbefunde aus dem externen Review, plus die Gestaltungsmuster, die alle drei Reviewer als fehlend nannten.
Korrektheit
export()prüft jetzt wie der Downloadknopf. Ohne gewählte Organisation ging ein Bild mit leerem weißen Logobalken raus — die App zeichnet den Balken unbedingt, nur der Ortsname fehlt. Es sieht nichts kaputt aus, bis es jemand veröffentlicht.Das hat vier bestehende Tests umgeworfen und dabei gezeigt, dass
render({ template, text })sonst unbenutzbar geworden wäre. Der Logo-Zustand wird deshalb aus dem Spec abgeleitet: Wer keins nennt, will keins. WerlogoEnabled: truesetzt und keins wählt, bekommt zu Recht den Fehler.setBackground()wartet auf ein anderes Bild.contentImageist ein Einwegriegel —replaceCanvas()undresetWizard()verwerfen das Canvas, setzen ihn aber nie zurück. Nach einem Vorlagenwechsel war er noch wahr, ein Austausch kehrte also sofort zurück, bevor das neue Foto geladen war.addText()setzt alle Bedienelemente, nicht nur die genannten. Der Handler liest alle; ein weggelassenes Feld erbte den vorigen Aufruf. Ein gelber rechtsbündiger Text färbte jeden folgenden mit ein. Ein Test rendert zweimal dasselbe Spec und vergleicht.Gestaltungsmuster
sendBackwards()/sendToBack()— Fabric bringt beides mit, die App verdrahtet keines, die Oberfläche hat nur einen Nach-vorne-Knopf. Ohne das lässt sich eine Überlappung nie wieder auflösen. Beide halten Grundfläche und Hintergrundfoto ganz hinten.addCredit()für Bildnachweis und KI-Kennzeichnung. Beides steht als Pflicht in derllms.txt, musste aber als gewöhnlicher Text nachgebaut werden — und der wird auf 80 % der Bildbreite skaliert. Ein Nachweis in Schlagzeilengröße ist kein Nachweis. Jetzt feste kleine Größe relativ zur kurzen Kante, innerhalb der Schutzzone.duplicate()für wiederholte Motive — der Radbörse-Fall. Klont das Fabric-Objekt statt das Bild erneut zu laden. Der Test zählt diefetch-Aufrufe mit und belegt: vier Icons, ein Ladevorgang.Dazu die Emoji-Einordnung aus dem Review: Emoji kommen durch, aber aus der Systemschrift statt der Hausschrift, und zusammengesetzte zerfallen in ihre Bestandteile (Flaggen, Familien, Hauttöne). Ein Symbol als PNG oder SVG ist verlässlich, ein Emoji nicht.
Ein Test mit falscher Annahme
Mein Stapelreihenfolge-Test ging davon aus, dass der Störer über dem Text liegt. Tatsächlich holt der Störer-Handler alle Textobjekte selbst nach vorne — der Kreis lag schon hinten,
sendBackwards()konnte nichts bewirken. Der Test prüft jetzt zwei gleichrangige Elemente.132 Jest grün, 137 e2e grün. VERSION auf 13.
https://claude.ai/code/session_01Qtib9MPRZATQU3j9w7ymDk