Date: April 7, 2026 Current Phase: Phase 8 (Testing & Bug Fixes) — Continued Previous Log: Day 10 (Upsert support + full test suite)
| Task | Description | Status |
|---|---|---|
| Backend upsert verification | Confirmed confirm/skip upsert behavior | ✅ Done |
| Weekly schedule save fix | Backend PATCH now updates schedules table | ✅ Done |
| Weekly home screen filter | Only show medications on matching weekdays | ✅ Done |
| Edit screen weekday highlight | Selected weekdays now highlighted on entry | ✅ Done |
| History date tap detail view | Tap date to see individual medication logs | ✅ Done |
| History stats accuracy fix | Fixed total count (was including inactive schedules) | ✅ Done |
| History log sort order | Done → Skipped → Missed | ✅ Done |
| History instant sync | History updates immediately after confirm/skip | ✅ Done |
| Signup redirect fix | After signup, navigate to login screen | ✅ Done |
| DB cleanup | All test users and data deleted | ✅ Done |
Confirmed dose_service.py confirm / skip correctly performs upsert:
update status and taken_atinsertALREADY_LOGGED 400 errormedication_service.update() only updated the medications table and completely ignored schedule changes. Weekly day selections were lost on save.
MedicationUpdate schema had no schedules fieldupdate() method docstring literally read "Update medication info (except schedules)"schemas/medication.pyAdded ScheduleUpdate model and schedules field to MedicationUpdate:
class ScheduleUpdate(BaseModel):
scheduled_time: str
cycle_type: str
cycle_value: Optional[dict | list] = None
class MedicationUpdate(BaseModel):
name: Optional[str] = None
dosage: Optional[str] = None
color_tag: Optional[str] = None
memo: Optional[str] = None
schedules: Optional[list[ScheduleUpdate]] = None # Added