Skip to content

feat(mvc): redesigned list views with grouping and progress - #401

Merged
kauereinbold merged 1 commit into
mainfrom
feat/mvc-list-views
Aug 22, 2026
Merged

feat(mvc): redesigned list views with grouping and progress#401
kauereinbold merged 1 commit into
mainfrom
feat/mvc-list-views

Conversation

@kauereinbold

Copy link
Copy Markdown
Owner

Summary

  • List page redesigned, server-rendered: app header (serif title, date, search pill, New reminder), sidebar nav All/Today/Upcoming/Done with counts and the THIS WEEK progress block, grouped cards (Overdue/Today/Upcoming/Done) with date pills, done toggle, edit and delete actions. View and search are query-string driven (?view=Today&q=text).
  • Create/edit/delete are modals over the list page (/Reminders/Create, /Reminders/Edit/{id}, /Reminders/Delete/{id} render the list with the modal open; POST validation errors re-open it with inline field errors). Legacy Bootstrap views, Bootstrap CSS and jQuery removed.
  • New RemindersIndexViewModel + ReminderGroups mirror the React reminderGroups util (bucketing, labels, counts, week progress).
  • Fixes found during the smoke test: MVC client serialized PascalCase JSON (cpp API 500 on update); edit form posted no id (dotnet API 409); API error keys like LimitDate.Date now map to the form field.
  • Selenium suite runs on Linux/WSL: Selenium Manager resolves drivers (bundled .exe removed), headless, null-safe cleanup, base URL default http://localhost:5050 (MVC_BASE_URL override), selectors for the new markup, WaitForAbsence after modal submits (fixed a read-before-navigation race). Firefox row opt-in via MVC_TEST_FIREFOX=1 (snap Firefox hangs under geckodriver on WSL).
  • CLAUDE.md: new rule, hand over a test environment plus manual test cases before opening a PR; maintainer can skip.

Remaining from #335: mobile breakpoint under 760px.

Closes #334
Closes #380
Refs #335

Test plan

  • dotnet build for Reminders.Mvc and Reminders.Mvc.Test clean
  • Runtime smoke test with docker compose --profile api --profile mvc: grouping, counts, progress, view/search filters, toggle, create/edit/delete modals, inline validation errors verified via curl and headless Chrome screenshots
  • dotnet test src/test/app/dotnet/Reminders.Mvc.Test against localhost:5050: Chrome row green on 19 of 20 repeated runs (one timeout right after a container rebuild, not reproduced afterwards), Firefox row skipped by default
  • Maintainer manual check on the running stack (confirmed in session)
  • Known: dotnet API rejects updates on past-date reminders while go/cpp accept (fix(api): align create/update validation and error shape across dotnet, go, cpp APIs #394); the MVC shows the error inline or as an alert.

Apply the reminders redesign to the MVC app list page, server-rendered:
header with title, date, search and New reminder; sidebar with All/Today/
Upcoming/Done counts and week progress; grouped cards with date pills,
done toggle, edit and delete. Create, edit and delete open as modals over
the list, replacing the legacy Bootstrap pages (Bootstrap and jQuery
removed).

Also fixes found on the way: the MVC client serialized PascalCase JSON
that the cpp API rejected on update, and the edit form posted no id,
which the dotnet API rejected with 409.

Selenium suite now runs on Linux/WSL: drivers via Selenium Manager
(bundled binaries removed), headless, selectors for the new markup, wait
for modal close after submit. Firefox row is opt-in (MVC_TEST_FIREFOX=1)
since snap Firefox hangs under geckodriver on WSL.

CLAUDE.md: hand over a test environment plus test cases before opening a
PR, skippable on request.

Closes #334
Closes #380
Refs #335
@kauereinbold
kauereinbold merged commit 8334a92 into main Aug 22, 2026
6 checks passed
@kauereinbold
kauereinbold deleted the feat/mvc-list-views branch August 22, 2026 11:28
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.

test(mvc): make Selenium E2E tests run on any machine, including WSL feat(mvc): redesigned list views with grouping and progress

1 participant