P3 Stream K: Glance widgets (small/medium/large) matching iOS
- HoneyDueSmallWidget (2x2), HoneyDueMediumWidget (4x2),
HoneyDueLargeWidget (4x4) rewritten to consume the
iOS-parity WidgetDataRepository (Stream J).
- Free-tier shows a large count-only layout (matches iOS
FreeWidgetView); premium shows task list + complete buttons
(Large widget also renders the Overdue / 7 Days / 30 Days
stats row from WidgetDataRepository.computeStats()).
- WidgetFormatter mirrors iOS formatWidgetDate: "Today" /
"in N day(s)" / "N day(s) ago".
- WidgetColors maps priority levels (1-4) to primary/yellow/
accent/error, matching iOS OrganicTaskRowView.priorityColor.
- WidgetUi shared Glance composables (TaskRow, WidgetHeader,
EmptyState, TaskCountBlock, StatPill, StatsRow, CompleteButton)
wired to Stream M's CompleteTaskAction for interactive rows.
- JVM tests: WidgetFormatterTest + WidgetColorsTest covering
10 formatter assertions and 11 color mapping assertions.
Glance caveats: no radial/linear gradients or custom shapes, so
iOS's "organic" glows are dropped in favor of cream background +
tinted TaskRow cards. Colors, typography, and priority semantics
match iOS exactly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>