Skip to content

feat: snooze button, task detail sync, delete button, AI enrichment cancel - #2

Merged
trentmcnitt merged 6 commits into
mainfrom
feat/snooze-sync-delete-improvements
Mar 22, 2026
Merged

feat: snooze button, task detail sync, delete button, AI enrichment cancel#2
trentmcnitt merged 6 commits into
mainfrom
feat/snooze-sync-delete-improvements

Conversation

@trentmcnitt

Copy link
Copy Markdown
Owner

Summary

  • Always show snooze button — removes dependency on stale overdueCount computed in useMemo; badge only appears when overdue tasks exist, action handler shows toast if nothing is overdue
  • Task detail real-time sync — wire up SSE sync stream so the task detail page receives live updates; defers refresh while user has unsaved edits; change QuickActionPanel key from updated_at to id to prevent forced remount mid-edit
  • Delete button on selection bar — surface a dedicated trash button so users can bulk-delete without opening the More sheet
  • Cancel AI enrichment on manual edit — remove ai-to-process label after updateTask so enrichment doesn't overwrite manual changes; undo restores the label

Test plan

  • npm run type-check && npm run lint && npm test — all pass
  • npm run test:e2e
  • Verify snooze button visible on desktop/mobile with 0 overdue tasks
  • Verify snooze toast "No overdue tasks" when tapped with nothing overdue
  • Verify task detail page updates when task is edited from another tab
  • Verify bulk delete from selection bar works

🤖 Generated with Claude Code

The overdue count was computed inside a useMemo with a `now` that only
refreshed when the task list reference changed. Tasks becoming overdue
while the page was idle wouldn't trigger a recompute, so the button
could be missing despite overdue tasks existing. Always show the button
and let the action handler (which computes fresh `now`) show a toast
if nothing is overdue.
Wire up SSE sync stream so the task detail page receives live updates
from other tabs and AI enrichment. Defers refresh while the user has
unsaved edits to avoid losing work. Also change QuickActionPanel key
from updated_at to id so sync refreshes don't forcibly remount the
panel mid-edit.
Surface a dedicated trash button on the floating selection bar so users
can bulk-delete without opening the More sheet.
Remove the ai-to-process label after updateTask so the enrichment
worker does not overwrite the user's manual changes. Done outside the
transaction so undo restores the label and lets enrichment resume.
@trentmcnitt
trentmcnitt merged commit 656c59b into main Mar 22, 2026
6 checks passed
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.

1 participant