Some checks failed
CI / validate (push) Has been cancelled
Tag 1: Phase 0–10c Marathon, Live-Cut auf cardecky.mana.how. Tag 2: Marketplace-Restore (Phase 12 R0–R5 + G1–G4). Tag 3: Karten-Typ-Vollausbau (Periodensystem, audio, typing, multiple-choice, Vision-LLM-Deck-Generation). Tag 4: Mobile-Nav + 5 Sprachen + CSV/PDF + Astro-Landing. Tag 5: Security-Hardening (fail-secure, CSP, DSGVO-Audit, rate-limit) + Leech-Detection + AASA. Tag 6: Recovery + Undo + FSRS-Slider + Streak + Stats-Charts + Blog + Marketplace-Report + Privacy/Help. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.7 KiB
3.7 KiB
| date | day | view | weekday | commits | review |
|---|---|---|---|---|---|
| 2026-05-13 | 6 | macher | Mittwoch | 8 | written |
Mittwoch, 2026-05-13 — Tag 6 (Macher-Sicht)
App-Store-Submission-Vorbereitung für cards-native + Funktions- Erweiterungen: Recovery + Undo, FSRS-Slider, Streak, Stats-Charts, Blog, Marketplace-Report + Author-Block.
Stats
8 Commits, +6 347 / −35 LoC, 43 Files. Top-Dirs: api/db (22 %), web/routes (20 %), web/lib (17 %), landing/pages (15 %), api/routes (13 %). Tags: web, infra, cards, api, aasa. Session 11:17 → 00:04, 20 aktive Minuten in einem Block, längster Fokus 20 Min.
Schritte
- feat(infra): PUBLIC_APPLE_TEAM_ID für AASA-Endpoint. Statt hardcoded jetzt Env-Var, damit dev/staging/prod unterschiedliche Teams nutzen können.
- fix(web): AASA bundleId
ev.mana.cards→ev.mana.cardecky. Tag-1-Drift: Domain heißt cardecky, Bundle muss matchen. - feat(cards): recovery mode, undo, FSRS slider, streak header,
stats charts, blog. Großer Sammel-Commit (+5 200 LoC):
- Recovery-Mode: gelöschte Karten 30 Tage in
deleted_at-Soft- Delete, Undo-Pfad in UI. - FSRS-Slider in Settings:
desiredRetention0.7–0.97. - Streak-Header: Daily-Streak-Counter aus Reviews.
- Stats-Charts: Lern-Verlauf (Recharts).
- Blog: Astro-Content-Collection in
apps/landing/.
- Recovery-Mode: gelöschte Karten 30 Tage in
- feat(web): /privacy + /help Stubs für App-Store-Submission.
- fix(api): 0002_decks_archived_at — schließt Schema-Drift.
Web nutzte
decks.archived_at, Schema hatte das aber nicht. Migration nachgezogen. - feat(aasa): /auth/* in Universal-Link-Paths. Native-App öffnet Auth-Reset-Links direkt.
- feat(web): /auth/reset + /auth/verify als Fallback-Pages. Falls Universal-Link in Browser landet, gibt's eine Web-Seite, die den Token annimmt.
- feat(marketplace): Deck-Report + Author-Block + me/decks-
Endpoints. Report-Reason-Picker, Block-Tabelle,
/me/decks- Listing-API.
Architektur-Entscheidungen
- Soft-Delete mit
deleted_atstatt Hard-Delete. 30 Tage Recovery-Frist. Nach 30 Tagen GC-Job. Conform mit DSGVO (recovery = User wollte's nicht). - FSRS-Slider als User-Setting, persistiert in
user_settings. Server kennt's und passt Card-Reviews entsprechend an. - Blog als Astro-Content-Collection in
apps/landing/. Cardecky- Web bleibt SvelteKit; Blog ist Marketing-Surface. - Stats-Charts mit Recharts (React-Lib). SvelteKit nutzt Recharts via Bridge — Trade-off Code-Größe vs. Eigen-Implementation.
- Marketplace-Report mit Reason-Picker (URL-spam, Off-topic,
Falschinformation, Anderes). Reports landen in
marketplace_reports-Tabelle, Moderation-Surface. - Author-Block mit
blocked_authors-Tabelle, Joins in Marketplace-Queries.
Trade-offs
- +5 200 LoC in einem Commit ist Anti-Granular, aber alle 6 Features hängen am gleichen Stats-Page-Refactor. PR-Review wäre zäh, Solo-Commit OK.
- Recharts in SvelteKit ist Hack — Tree-Shake-Overhead. Future: native Svelte-Charts oder eigene SVG-Renderer.
- 30-Tage-Recovery-Frist ist großzügig — DSGVO-Auto-Delete müsste 7 Tage maximum. Akzeptiert mit Audit-Trail.
- Soft-Delete-Pfad macht Queries komplexer (alle Queries
brauchen
deleted_at IS NULL).
Offene Punkte
- CSP report-only → enforce Watch läuft noch (Tag 5 begonnen).
- 30-Tage-Soft-Delete-GC-Job noch nicht implementiert.
- Native-cards-App wartet auf TestFlight-Apple-Submission.
- Recharts ersetzen durch native Svelte-Charts oder eigene SVG-Implementation (Code-Größe).
- Blog-Content schreiben — heute nur Infrastruktur, keine Posts.
- Marketplace-Report-Moderations-Surface für den Verein- Admin (heute nur Report-Submit).