cards-native/Sources/Core
Till JS 505aa9db19 feat(study): Typing-Karten + Levenshtein-Match-Logik
CardRenderer für typing ist nicht mehr Placeholder. Web-Vorbild:
TypingView.svelte + cards-domain/typing.ts.

Typing.swift (Sources/Core/Domain/):
- check(input:answer:aliases:) → TypingMatch (correct/close/wrong)
- Normalisierung: trim + lowercase + NFD-Decomp + Combining-Marks
  strippen (Diakritika: ä → a)
- Aliases-Support (Komma-getrennt aus card.fields["aliases"])
- Levenshtein-Threshold max(1, floor(len * 0.2)) → "close"

TypingCardView (Features/Study/):
- TextField mit Auto-Focus 0.15s nach onAppear, Return = Submit
- Submit-Button mit Return-Symbol + primary background
- Nach Submit: Badge (✓ Richtig / ≈ Fast / ✗ Falsch) + User-
  Eingabe in „…" Quotes + Divider + erwartete Antwort
- Haptic-Feedback: heavy bei correct, light bei close/wrong
- Reset on card.id change

TypingTests: 8 Tests für check() — exact, case+whitespace,
NFD-Umlauts, aliases, Levenshtein-close (Berln → Berlin),
empty-input, sowie Levenshtein-Helper-Sanity.

Build 8 → 9. 43 Tests grün (war 35).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 17:39:39 +02:00
..
API feat(study): Multiple-Choice-Karten gerendert 2026-05-13 17:34:07 +02:00
Auth chore: Rebrand auf ev.mana.cardecky 2026-05-13 13:29:04 +02:00
Domain feat(study): Typing-Karten + Levenshtein-Match-Logik 2026-05-13 17:39:39 +02:00
Intents fix: User-facing Strings Cards → Cardecky komplett, Build 3 2026-05-13 15:11:11 +02:00
Notifications fix: ITMS-90129 — DisplayName Cards → Cardecky + Build 2 2026-05-13 15:05:33 +02:00
Storage v0.3.0 — Phase β-2 Study-Loop 2026-05-13 00:16:11 +02:00
Sync chore: Archive-Polish — Versions-Sync + Orientations + Mac-Icon 2026-05-13 14:06:11 +02:00
Telemetry chore: Rebrand auf ev.mana.cardecky 2026-05-13 13:29:04 +02:00
Theme feat(ui): Cardecky-Web-Design — Fan-Stack-Tiles + CardSurface 2026-05-13 17:28:11 +02:00