diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-07-15 07:23:44 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-07-16 02:48:28 +0000 |
| commit | a9c9da2eaf9101a216fb7b7ab6c8e2f252c0cef4 (patch) | |
| tree | 5f4e1d217fc4f13583ebf754386e19689db177cd /.agent | |
| parent | e846505925b7e537425cb614123e04f263936056 (diff) | |
Update worklog for widget periodic-refresh self-healing fix
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VTUSAEKfsPc6WGDq45yPHD
Diffstat (limited to '.agent')
| -rw-r--r-- | .agent/worklog.md | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/.agent/worklog.md b/.agent/worklog.md index 4448dd4..f30ad52 100644 --- a/.agent/worklog.md +++ b/.agent/worklog.md @@ -4,6 +4,7 @@ Cleaned Backlog ## Recently Completed +- **Widget periodic-refresh self-healing fix** — root-caused a report of "all-day events and tasks gone, now-line stuck on this morning" to the widget's periodic background refresh (`RefreshWorker`, every 15 min) having silently stopped ticking, likely because reinstalling the APK (as happened repeatedly this session, outside the Play Store update path) can clear WorkManager's persisted schedule without the widget itself being removed/re-added — the only place that re-establishes the periodic job was `onEnabled`, which only fires on first-widget-add. Manual refresh always worked (confirmed data/rendering were fine); `onUpdate` (fires far more often: reboot, periodic OS ticks) now also re-arms the schedule via `KEEP` (a no-op if already running), making it self-healing. Deployed new APK. - **Post-recurrence fixups: no more overdue-red, Agent API regression fixed, dead code removed** — removed the red text color for overdue widget tasks (plain title color regardless of overdue state). Found and fixed a real regression via systematic debugging: `agent.go`'s four task write/create switches (complete, update due date, update details, create) never got a `"doot"` case when Todoist was removed in favor of native tasks, so every native-task call through the external Agent API 400'd with "Unknown source" — `go test ./internal/...` is now fully green (also removed a stale `TestMealToAtom` test for a function deleted months earlier). Dead-code sweep: removed unused `SourceMeal`/`TypeMeal` atom constants, an orphaned `HandleGetSourceOptions` handler (never routed, rendered a template that no longer exists), and the always-false `IsRecurring` field/branch (never assigned anywhere; the real recurring indicator is `RecurrenceSeriesID`). Deployed server + widget APK. - **Task recurrence + task-detail popup editing** — doot-native tasks now support server-owned recurrence (daily/weekly/monthly/yearly, optional specific weekdays, custom interval): a new row for the next occurrence is created either when the current one is completed or once its due date passes (a 15-minute background check), whichever comes first — never both, and never blocked by an ignored/overdue task. New endpoints (`GET /api/widget/task`, `POST /api/widget/task/{update,recurrence,next-date}`). The widget's task-detail popup is redesigned: editable title/description (Edit → Cancel/Save), a linkified description (tappable URLs and phone numbers), and independently-tappable date/recurrence/next-date chips with a recurrence-editing dialog. Trello and Google Tasks cards are unaffected — same title + Complete button as before. Deployed both the Go server and `doot-widget.apk`. - **Widget regressions + multi-day calendar events** — fixed popup-shows-behind-settings (missing `taskAffinity` on popup activities caused `FLAG_ACTIVITY_NEW_TASK` to reuse SettingsActivity's task), floored header text at NORMAL scale even when the Small text-size setting is selected, fixed settings-screen label colors, and replaced the event-detail popup with a direct tap-to-open-source link (removed `EventDetailActivity` and its now-dead recurrence-lookup endpoint). Separately, fixed multi-day calendar events: they previously either only rendered in a single hourly grid slot on their start day (vanishing on later days) or, for genuine all-day events, never had their end date forwarded at all. Now render as an all-day-style row on every day they span (web Today/Tomorrow sections + widget), labeled "starts/ends HH:MM" or plain, correctly accounting for Google Calendar's exclusive all-day end-date convention (caught and fixed during review — a single-day all-day event's raw end date is one calendar day past its own day). Deployed both the Go server and `doot-widget.apk`. |
