From db3cd6ab5a6df8ef7cdbba5a1f8cea0a8df660c6 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 20:36:16 +0000 Subject: [PATCH 1/3] chore: Release 1.9.0 (versionCode 71) auf testing vorbereiten MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CHANGELOG: [Unreleased] zu [1.9.0] konsolidiert (doppelte Abschnitte zusammengeführt), fehlende Änderungen seit Play-Store-Version 1.8.0 ergänzt (Pause-Dialog, Einstellungs-Gruppierung, Impressum, Icon/Farben, Darkmode-Fix, Konfetti-Fix #371) - CLAUDE.md: Versionsstand (Store 1.8.0/69, testing 1.9.0/71) korrigiert - validate-release.sh: stammte aus dem 1x1-Trainer (App.tsx, Android/ Gradle) und lief hier ins Leere; jetzt projektspezifisch (Versionen, versionCode > letzter Tag, CHANGELOG, Lint, tsc, SVG, Jest, Audit-Gate, Web- und Android-Bundle) - .audit-allowlist.json: braces-Eintrag ohne Treffer entfernt Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01AfCKFu51beRuwRbDYQRaJd --- .audit-allowlist.json | 6 - CHANGELOG.md | 58 ++++---- CLAUDE.md | 4 +- scripts/validate-release.sh | 263 ++++++++---------------------------- 4 files changed, 86 insertions(+), 245 deletions(-) diff --git a/.audit-allowlist.json b/.audit-allowlist.json index 66ef05f..2185829 100644 --- a/.audit-allowlist.json +++ b/.audit-allowlist.json @@ -6,12 +6,6 @@ "package": "node-forge", "reason": "RSA PKCS#1 v1.5: kein gepatchter Release; nur via expo -> @expo/cli (Build-Tooling)", "expires": "2026-12-31" - }, - { - "id": "GHSA-vfj7-8cjw-p6xm", - "package": "braces", - "reason": "Stack-Exhaustion DoS: kein gepatchter Release; nur via micromatch/patch-package (Dev-Tooling)", - "expires": "2026-12-31" } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 611e732..d794b87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,48 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Changed - -- Bestätigungsdialog vor destruktiven Aktionen als Helper `confirmDestructive()` in `utils/platform.ts` (Web: `window.confirm`, nativ: `Alert.alert` mit destruktivem Button); die drei kopierten Web/Native-Verzweigungen in `creative.tsx`, `gallery.tsx` und `DrawPhase.tsx` entfallen. `SoundManager` und `SentryService` nutzen `isWeb` statt direkter `Platform.OS`-Checks (#360) -- Die Logik „Zeichnung in eine Fläche einpassen" (Bounding Box → Skalierung/Offset) liegt jetzt einmal in `utils/drawingTransform.ts` (`computeFitTransform`) statt viermal kopiert in Web-/Native-Zeichenfläche und ShareService web/native; Verhalten unverändert (#359) - -### Changed +## [1.9.0] - TBD (versionCode 71) -- Replay: Die Skalierung der Zeichnung wird aus der **gesamten** Zeichnung berechnet, nicht aus den gerade sichtbaren Pfaden — die Zeichnung erscheint von Anfang an in Endgröße und wandert nicht mehr mit. Dadurch können fertige Pfade und Fills in Web und Android zwischen den Frames wiederverwendet werden (pro Frame höchstens 2 statt N Flood-Fills) (#366) -- Web-Zeichenfläche: Beim Malen wird nur noch der Live-Strich über einen gecachten Snapshot der fertigen Zeichnung gelegt. Vorher liefen bei jeder Mausbewegung alle Striche und alle Flood-Fills (volle `getImageData`/`putImageData`-Durchläufe) erneut (#358) +Änderungen seit der Play-Store-Version 1.8.0 (versionCode 69). -### Fixed +### Added -- Web: Füllungen verschwanden (u. a. auf dem Ergebnis-Screen), wenn die Canvas-Breite nicht ganzzahlig war (z. B. `screenWidth * 0.44` = 184,8 px). Die Pixelmaße der Web-Zeichenfläche werden jetzt abgerundet, damit Canvas-Attribut, `getImageData` und Flood-Fill dieselbe Zeilenbreite verwenden -- „Von Level 1 neu starten" setzt den Galerie-Speicherstatus zurück (vorher blieb „In Galerie speichern" ggf. gesperrt) -- Ergebnis-Feedback wechselte bei jedem Re-Render, weil die rotierende Nachricht im Render gewählt wurde — jetzt einmal pro Bewertung; DE/EN-Texte für 1–2 Sterne laufen nicht mehr auseinander +- Pause-Vorschlag nach jedem 5. abgeschlossenen Level (5, 10, 15) mit „Hauptmenü" und „Weiter" (#337) +- Impressum und Datenschutz im Über-Dialog der Einstellungen, in allen 7 Sprachen (#330) +- Micro-Animationen auf den Kern-Screens: Press-Feedback auf Kacheln und Buttons, `prefers-reduced-motion`-aware (`PressableScale`, `PulseView`) +- Auffindbarkeit außerhalb des Play Stores: Play-Store-Badge + deutsche Kurzbeschreibung im README, Web-only Install-Hinweis auf der Startseite, deutsche Keywords/Open-Graph-/JSON-LD-Auszeichnung der Landing Page +- Attributions-Parameter (`referrer` mit UTM-Tags) an allen Play-Store-Links — Installationen aus der Web-Demo werden in der Play Console als eigene Quelle sichtbar (`constants/ExternalLinks.ts`) +- Crawlbarer `