Skip to content

feat(react): grouped list and reminder cards - #393

Merged
kauereinbold merged 1 commit into
mainfrom
feat/react-grouped-list
Aug 19, 2026
Merged

feat(react): grouped list and reminder cards#393
kauereinbold merged 1 commit into
mainfrom
feat/react-grouped-list

Conversation

@kauereinbold

Copy link
Copy Markdown
Owner

Summary

  • Replace the MUI table on the list page with the redesigned grouped list: sections Overdue/Today/Upcoming/Done (empty groups hidden, items sorted ascending by limitDate), serif section headers with counts and rules
  • New ReminderCard component per design handoff: 24px circle checkbox with optimistic toggle (rollback on API error), title/description, date pill (accent tint when overdue; Today/Tomorrow/Yesterday/'N days late'/short date labels), 34px edit icon button
  • Pure grouping/date logic in util/reminderGroups.ts, built on the feat(react): design tokens and fonts foundation #326 design tokens

Fixes surfaced during E2E and manual testing

  • api: updateReminder initialized errors as [] (truthy), making the optimistic rollback fire on every successful update
  • api: getErrors crashed (Object.keys on undefined) on the flat { message } 400 body returned by the Go/C++ APIs; now mapped to BadRequest with fallbacks
  • ReminderForm never rendered BadRequest errors; AlertError now shows InternalServer or BadRequest
  • Page wrapper had fixed 6rem padding, collapsing cards on small viewports; now uses the design gutter token

Cypress

  • reminders-list, reminders-integration, and commands updated from table selectors to the card UI (kept the post-deploy Pages run green)
  • New create-page test covering the flat { message } 400 shape
  • New visual-check spec (@visual) capturing per-viewport screenshots for design review

Out of scope, tracked in siblings: header/sidebar/week progress (#328), search/filters (#329), modal + delete confirm (#330), mobile shell (#331), full MUI removal (#332).

Closes #327

Test plan

  • jest: 87/87 passing
  • cypress: 40/40 across 6 specs against local dev + docker api profile
  • next lint and tsc --noEmit clean
  • Manual pass on http://localhost:3000 with seeded data; screenshots reviewed at 1280/768/375

Replace the MUI table with the redesigned grouped list: sections
Overdue/Today/Upcoming/Done (empty hidden, sorted asc by limitDate),
serif section headers with counts, card layout with optimistic checkbox
toggle, date pills with overdue styling, and edit icon (issue #327).

Fixes surfaced while wiring the toggle and E2E coverage:
- updateReminder initialized errors as [] (truthy), which made any
  errors-based check fire on successful updates
- getErrors crashed on the flat { message } 400 shape returned by the
  Go/C++ APIs; BadRequest errors were also never rendered by the form
- page wrapper used a fixed 6rem padding, collapsing cards on mobile

Cypress specs updated from table selectors to the card UI, plus a
visual-check spec capturing per-viewport screenshots for design review.

Closes #327
@kauereinbold
kauereinbold merged commit 2d72741 into main Aug 19, 2026
8 checks passed
@kauereinbold
kauereinbold deleted the feat/react-grouped-list branch August 19, 2026 02:07
kauereinbold added a commit that referenced this pull request Aug 19, 2026
Replace the MUI table with the redesigned grouped list: sections
Overdue/Today/Upcoming/Done (empty hidden, sorted asc by limitDate),
serif section headers with counts, card layout with optimistic checkbox
toggle, date pills with overdue styling, and edit icon (issue #327).

Fixes surfaced while wiring the toggle and E2E coverage:
- updateReminder initialized errors as [] (truthy), which made any
  errors-based check fire on successful updates
- getErrors crashed on the flat { message } 400 shape returned by the
  Go/C++ APIs; BadRequest errors were also never rendered by the form
- page wrapper used a fixed 6rem padding, collapsing cards on mobile

Cypress specs updated from table selectors to the card UI, plus a
visual-check spec capturing per-viewport screenshots for design review.

Closes #327
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(react): grouped list and reminder cards

1 participant