- streak.js: Zustand aus last_practice_at (safe/at_risk/broken/none)
- Feed: Loss-Aversion-Bar "X-Tage-Serie – nur noch Y Std heute!" wenn die Serie heute abläuft
- Profil-Streak-Zeile zeigt Status (heute gesichert ✓ / noch X Std)
- Lokale Tages-Erinnerung via @capacitor/local-notifications (kein APNs nötig),
geplant bei Login, abgebrochen sobald heute geübt – nativ; web no-op
Hinweis: nativ erst nach 'npx cap sync ios' + Rebuild aktiv.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Profil: Begrüßung in Zielsprache, Kategorie-Punkte-Übersicht,
ruhigerer Header (kein rotierender Avatar/Online-Dot), Notch-Fix
und kompaktere Aktivitäts-Heatmap. Außerdem Capacitor-iOS-Projekt
und diverse Auth/Feed/Audio-Verbesserungen aus dem Premium-Redesign.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- App.jsx: use flex column layout so BottomNav stays at bottom and
never scrolls away; Feed gets a proper definite height for scroll-snap
- Feed.css: feed-slot uses min-height so long cards can grow, align top
- PairCards.css: cap image at 40dvh so card always fits on screen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove /languparent prefix from all API calls (routes are at /auth/* now)
- Align register/login token handling (JWT returned directly, no registration token)
- Feed rewritten to use new getFeedPairs endpoint with PairSentenceCard/YesNoCard/WordCard
- App.jsx: check language_native_id / language_target_id for profile completeness
- Profil.jsx: add logout button
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>