Repository navigation
fix: Darkmode-Kontrastbug bei Strichzeichnungen (#335) + Markenfarbe Blau (#306) - #340
Merged
Merged
Conversation
…n, Security-Fix Sammel-Merge von testing nach main. - Web-Auffindbarkeit außerhalb des Play Stores (#296) - Micro-Animationen + klarere Nutzerführung (#294) - Label-/Icon-Anpassungen aus APK-Testing-Feedback (#292) - fix(security): image-size DoS über veraltetes metro 0.83.7 (Override auf 0.83.8) - CI: Workflows nur noch bei PRs gegen main (#300) Validiert: 452 Tests, tsc clean, svg-counts 81, npm audit exit 0.
Schwelle lag 30+ Punkte unter der tatsächlichen Abdeckung und hätte einen deutlichen Einbruch nicht erkannt. Auf Ist-Stand minus kleinem Puffer angehoben (branches 47, functions 52, lines 55, statements 53). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKKsCtexSeDGBEmdXrCttP
… machen (#335) extra-01-stick-figure.svg und Bilder im "Nur Umriss merken"-Modus zeichnen reine schwarze/dunkelgraue Konturen ohne Fläche. Im Darkmode verschwinden diese auf den dunklen Surface-/Background-Farben (Merke- Phase, Vorschau-Modal, Ergebnis-Vergleich). LevelImageDisplay bekommt einen theme-Prop: unausgefüllte schwarze Konturen (fill="none", stroke="#000000") werden im Darkmode auf ein helles Grau gemappt, ebenso die feste Outline-Farbe des Umriss-Modus. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKKsCtexSeDGBEmdXrCttP
, #338) Alte app-icon.png/adaptive-icon.png/favicon.png waren byte-identische, alphakanal-lose Rasterisierungen derselben app-icon.svg (grünes Chamäleon-Icon) — daher weiße Ecken auf Launchern und ein irrelevanter Flackerübergang zum In-App-Splash. adaptive-icon.png hatte zudem gar keinen transparenten Vordergrund, wie von Android für Adaptive Icons gefordert. Neues Motiv (zwei Bildkarten + Stift, vom Repo-Owner via KI-Bildgenerator erstellt) ersetzt das Chamäleon: - app-icon.png / favicon.png: volle 1024x1024 Kachel, deckend auf Markenfarbe #60D5FA (Store-/Web-Icon) - adaptive-icon.png: freigestellter, transparenter Vordergrund, ins Android-Safe-Zone-Zentrum (~65% der Canvas) skaliert - splash-icon.png (neu) + expo-splash-screen-Plugin: der native Splash war bisher wirkungslos (Paket nicht installiert, app.json "splash"-Key wird seit SDK 52 ignoriert) — jetzt korrekt verdrahtet scripts/generate-icon-assets.js rasterisiert nur noch die Feature- Graphic; app-icon.svg (alter Motiv-Entwurf) ist obsolet und entfernt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKKsCtexSeDGBEmdXrCttP
app.json führte Blau (#60D5FA, App-Icon/Store/Splash) während constants/Colors.ts und ThemeContext.tsx Violett (#7C5CFF) als primary-Ton führten — sichtbarster Bruch war der Farbsprung zwischen nativem Splash (blau) und In-App-Splash (AnimatedSplashScreen, violett via Colors.primary). primary/primaryDark sind jetzt eine kontraststarke Blau-Variante (#0585AD light / #7DE0FF dark, ~4:1 bzw. ~10:1 Kontrast) statt des literalen Icon-Blaus #60D5FA — das wäre als Button-/Text-Farbe mit <2:1 Kontrast gegen Weiß nicht mehr lesbar gewesen. primaryLight führt stattdessen die eigentliche Icon-Farbe #60D5FA für dekorative Flächen ohne Text (Kreise, Chips). Betrifft alle Verbraucher, die Colors.primary/ colors.primary referenzieren (Buttons, Gradients, Shadows, In-App- Splash) — keine hartkodierten Violett-Hex-Werte gefunden, die separat hätten migriert werden müssen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKKsCtexSeDGBEmdXrCttP
…plan-vxha3g # Conflicts: # CLAUDE.md # app.json # assets/icons/adaptive-icon.png # assets/icons/app-icon-512.png # assets/icons/app-icon.png # assets/icons/app-icon.svg # assets/icons/favicon.png # constants/ExternalLinks.ts # jest.config.js # package-lock.json # scripts/generate-icon-assets.js
🔀 Mergeability-Report✅ Konfliktfrei mergebar ( CI-Checks: ✅ keine fehlgeschlagenen Checks ⏳ ⚙️ Workflow Linting / actionlint Merge-Checkliste
Kostenlos generiert von reusable-mergeability.yml · keine API-Kosten · review-gate: |
Der Branch war vermutlich von einem veralteten main-Stand abgezweigt — pull_request lief nur gegen main, wodurch CI für diesen gegen testing gerichteten PR gar nicht auslöste. Auf testing-Stand [main, testing] zurückgesetzt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKKsCtexSeDGBEmdXrCttP
This was referenced Sep 22, 2026
Closed
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.
Zusammenfassung
Scope-Update: #304, #338 und #312 wurden zwischenzeitlich bereits unabhängig in
testinggefixt (PR #305 bzw. #313) — nach dem Merge vontestingin diesen Branch ist der Diff auf die tatsächlich neuen Fixes geschrumpft:#335 — Darkmode-Kontrastbug
extra-01-stick-figure.svgsowie jedes Bild in der Spielvariante „Nur Umriss merken" zeichnen unausgefüllte schwarze/dunkelgraue Konturen — im Darkmode auf den dunklen Surface-/Background-Farben praktisch unsichtbar (Merke-Phase, Vorschau-Modal im Draw-Screen, Ergebnis-Vergleich).LevelImageDisplaybekommt einentheme-Prop; unausgefüllte schwarze Konturen und die feste Outline-Farbe werden im Darkmode auf ein helles Grau (#D8D4E8) gemappt.Nachträglich gefundener Bug in der eigenen ersten Fassung: Die Erkennung „unausgefüllt" prüfte nur
fill === 'none'—<Line>-Elemente (Arme/Beine des Strichmännchens) haben aber gar keinfill-Prop und wurden dadurch nicht erfasst (nur der Kopf wäre sichtbar geworden). Per Test abgesichert (siehe unten) und korrigiert: zusätzlichnode.type === Lineprüfen.#306 — Markenfarbe vereinheitlichen
app.json(Blau#60D5FA) vs.constants/Colors.ts/ThemeContext.tsx(Violett#7C5CFF) — sichtbarster Bruch war der Farbsprung zwischen nativem Splash (blau) und In-App-Splash (violett). Entscheidung des Repo-Owners: Blau.Wichtige Abweichung von "einfach
#60D5FAüberall einsetzen": das reine Icon-Blau hat nur ~1.7:1 Kontrast gegen Weiß (WCAG-Minimum 3:1 für fetten Button-Text) — als Button-/Text-Farbe wäre es kaum lesbar gewesen.primary/primaryDarksind daher eine kontraststarke Blau-Variante derselben Farbfamilie (#0585ADlight-theme /#7DE0FFdark-theme, ~4:1 bzw. ~10:1 Kontrast gegen ihren jeweiligen Hintergrund),primaryLightführt das literale Icon-Blau#60D5FAfür dekorative Flächen ohne Text (Kreise, Splash-Hintergrund). Per Web-Build visuell verifiziert.Zusätzlich (Nebenbefund)
.github/workflows/ci-cd.yml: Derpull_request-Trigger deckte auf diesem Branch nurmainab (nichttesting), vermutlich weil der Branch von einem veraltetenmain-Stand abgezweigt war — dadurch lief für diesen PR (Zieltesting) zunächst gar keine CI. Auf[main, testing]korrigiert.Test plan
npm test(456 Tests grün, inkl. 3 neuer Tests für dentheme-Prop vonLevelImageDisplay, die den<Line>-Bug abdecken)npx tsc --noEmit,npm run lint,npm run validate:svg-counts,npm run format— alle saubernpx expo export --platform web+ lokaler Headless-Browser-Rundgang (Onboarding, Home, Settings) in Dark und Light Theme — neue Blau-Töne konsistent und lesbartestingkalibrierten Schwelle (test(#312): coverageThreshold auf den Ist-Stand anheben #313)🤖 Generated with Claude Code
https://claude.ai/code/session_01MKKsCtexSeDGBEmdXrCttP