diff --git a/.audit-allowlist.json b/.audit-allowlist.json index 66ef05f..6135b93 100644 --- a/.audit-allowlist.json +++ b/.audit-allowlist.json @@ -8,9 +8,9 @@ "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)", + "id": "GHSA-mrhx-c7xc-m3w5", + "package": "zod", + "reason": "Speicher-DoS bei übergroßen Collections: nur noch zod@3 via expo -> @expo/cli (Build-Tooling, validiert lokale Konfiguration); kein gepatchter 3.x-Release, @expo/cli verlangt ^3.25.76. Root-zod (eslint-plugin-react-hooks) auf 4.6.7 gehoben.", "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 `