Issue #87 (kevinpapst): medications added during onboarding were
never visible afterwards. Root cause: the createMedication schema
requires schedules.min(1) ("Mindestens ein Zeitfenster"), but the
onboarding wizard sent schedules:[]. The 422 was silently swallowed
and the user was redirected to the dashboard as if everything had
worked.
This patch is the minimal-impact fix. The proper fix lives in Phase
3.5 of the audit plan, which replaces the wizard entirely with a
dashboard-first empty-state flow. Until then:
- finishOnboarding() wraps each call in a try/catch, checks
response.ok explicitly, and surfaces a sonner toast on failure.
setSaving(false) on error so the user can retry instead of being
stuck on a spinner.
- Each medication is sent with a default schedule (08:00-09:00) so
it is actually persisted. A new medScheduleHint i18n key is shown
under the meds list while the user is in the wizard, so the
default schedule is not surprising.
- Errors are translated per stage (errorProfile, errorMedication
with {name}, errorTargets) plus an errorGeneric fallback. en.json
and de.json kept symmetric.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
HealthLog — personal health-tracking PWA with weight, blood pressure,
pulse, mood tracking, medication compliance, Withings integration,
doctor report PDF export, and Dracula-themed UI.