Repository navigation
feat(projects): select several roadmap tasks at once (P25) - #185
Merged
Merged
Conversation
Why: a project with many tasks could only be changed one task at a time, and done tasks filled the roadmap. Roman asked on 2026-10-19 for multi-select with Complete, Move to milestone and Delete, done tasks folded. - lib/roadmap.ts: selectTasks (click toggles, shift-click adds the shown range) + 4 tests. - components/modules/project-roadmap.tsx: Select mode (select checkboxes, row menus and Add task hidden), sticky action bar (Select shown, Complete, Move to, Delete, each with an Undo toast), TaskGroup folds done tasks under "Done (n)" per group. - components/ui/sonner.tsx: toasts pointer-events-auto, so Undo works under an open Sheet. - components/ui/sheet.tsx: a click on a toast does not count as a click outside the sheet. - Docs: spec P25 open with acceptance criteria; CHANGELOG. Verified: npm run lint exit 0; npm test (typecheck + vitest) exit 0, 99 tests in 11 files; npm run build via the commit hook. Headless Edge, demo mode, 1366x768 and 390 px: Done (n) folded and opens; Select hides row menus and Add task; shift-click range of 3; Move to + Undo, Complete + Undo, Select shown + Delete + Undo all change the store and revert it; Undo clickable with the sheet open and the sheet stays open; toolbar fits, no horizontal scroll; no page errors. Not verified: Roman's real data (Job-Search, 23 tasks); keyboard-only range selection (Shift+Space is a plain toggle); light theme; Safari, Firefox; touch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
6 tasks done
romahawk
added a commit
that referenced
this pull request
Oct 21, 2026
Why: P25 merged as #185 after P27's close (#184); the spec still said `open` and the handoff pointed at P25 as next. - docs/CONTROL_PLANE_UI_SPEC.md: P25 status -> done (#185), with what was not checked. - docs/NEXT_SESSION_START.md: header for main 408494e (gates of 2026-10-21, 99 tests); next by rank is P19 (own ADR + ANTHROPIC_API_KEY first); new 2026-10-21 section (P25 changes incl. the toast Undo fix, branch map, verified, not verified); older sections dropped (in git history); page-file cause of the build memory failures added to Local dev; keyboard-only P25 ranges added to Roman's decisions. Verified: main 408494e differs from gated 6a04280 by docs only; on 6a04280 npm run lint, typecheck, build exit 0 and npm test exit 0 (99 tests), 2026-10-21; hook gates on this commit. Not verified: docs only, nothing to check in the app; P25's own gaps are listed in the note. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A project roadmap gets a Select mode: tick several tasks (Shift-click for a range, or "Select shown"), then Complete, Move to a milestone or Delete them together, each with Undo. Done tasks fold under "Done (n)" in every group, collapsed by default. Also fixes toast Undo being unclickable while a project sheet is open.
Why
CONTROL_PLANE_UI_SPEC P25. A project with many tasks (Job-Search: 23 under "No milestone", most done) could only be changed one task at a time. Roman asked for multi-select on 2026-10-19 and chose "hide done tasks" over a new Archived state.
Changes
lib/roadmap.ts:selectTasks: a click toggles, a shift-click adds the shown range (never deselects); 4 tests inlib/roadmap.test.ts.components/modules/project-roadmap.tsx: Select button; in Select mode the row checkbox selects (row menu and Add task hidden); sticky action bar (count, Select shown, Complete, Move to, Delete, stop); Undo toast for each action;TaskGroupfolds done tasks under "Done (n)" per milestone and for "No milestone".components/ui/sonner.tsx: toasts getpointer-events-auto. An open Sheet/Dialog setspointer-events: noneon<body>, so Undo could not be clicked.components/ui/sheet.tsx: a click on a toast no longer counts as a click outside the sheet (it would close the project).docs/CONTROL_PLANE_UI_SPEC.md: P25 →open, shape confirmed as written, acceptance criteria.CHANGELOG.md: P25 entry.No store schema, Firestore rules or route change.
Base and merge order
main. Merge #184 first (docs only, sets P27done); otherwisemainbriefly has P27 and P25 bothopen. No file conflicts between them.Verification
Gates (on
6a04280):Manual checks done (headless Edge, demo mode, scripted through CDP, 1366×768 and 390 px; demo project seeded with 8 tasks, 4 done):
elementFromPointhit the sheet and the store did not change; after it, the button is hit and the sheet stays open.Not verified:
Screenshots (if UI change)
Not attached (see Not verified).
Checklist
npm run typecheck,npm run lint,npm run buildpass (output pasted above)console.logleft in production codedocs/NEXT_SESSION_START.mdreflects this branch (session close): at/session-close🤖 Generated with Claude Code