Fix/web app tasks UI - #12248
Conversation
The pending list used overflow-hidden, which cropped the absolutely positioned due-date popover. Co-authored-by: Cursor <cursoragent@cursor.com>
Click stopPropagation does not stop dblclick, so a fast +1d press bubbled to the row handler. Co-authored-by: Cursor <cursoragent@cursor.com>
Cache invalidation after delete flipped loading true and TaskHub unmounted every row until the GET returned. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Thanks @Yny4ii — nicely scoped set of fixes, and the verification section of the description is exactly what makes this fast to review. I traced all three fixes through the code and ran the full web/app vitest suite against this head (60 files / 328 tests, all green, including the two new test files — useful since CI here only ran the AI reviewer). Per-file notes:
No blockers from my side — leaving the merge sign-off to a maintainer. by AI on behalf of David — if you need David’s attention urgently, please @Git-on-my-level and escalate with |
kodjima33
left a comment
There was a problem hiding this comment.
Three real, well-scoped UI bug fixes (date-popover clip, dblclick selection, delete-unmount) with tests for 2 of 3. Confidence gate score ~2/5 (no linked issue, diff over 300-line threshold) — approving only per policy, not merging.
What changed and why
Three Tasks UI bugs on
web/app/tasks: the due-date popover was clipped byoverflow-hidden, a double-click on+1dentered row selection becauseclickstopPropagationdoes not stopdblclick, and deleting a task unmounted the whole list because cache-invalidation refetch flippedloadingto true.Product invariants affected
none
How it was verified
cd web/app && bun run typecheck— passbunx vitest run --config vitest.config.mts src/components/tasks/__tests__/TaskRow.test.tsx src/hooks/__tests__/useActionItems.test.tsx— 2 files, passNODE_OPTIONS=--no-experimental-webstorage bun run check— typecheck + 328 tests pass (local Node 25 needs that flag; CI Bun 1.3.14 is the suite authority)bun run build— pass (firebase SW generated, 26 routes)scripts/pre-push— pass; pushedfix/web-app-tasks-uiManual: exercised the list-view date picker (popover no longer clipped), double-click on
+1d(snooze without selection mode), and delete (remaining rows stay on screen). Could not sign in against production Firebase from a contributor env; those checks were on the local Tasks UI with loaded tasks.Tests
overflow-hiddenon the pending-list wrapper; clipping only shows in layout. Asserting a class string would be a static tripwire.+1d:web/app/src/components/tasks/__tests__/TaskRow.test.tsx— dblclick snooze does not callonEnterSelectionMode.web/app/src/hooks/__tests__/useActionItems.test.tsx— cache-invalidation refetch keepsloading === falseand existing items mounted.Failure class (fixes)
Failure-Class: none