Files
PaperClipAI/ui/src/hooks
DottaandClaude Opus 4.8 5b98e17c4f PAP-13408 T2: Inbox-style attention toolbar, date grouping, curtains
Rework the What-needs-me queue around the approved PAP-13401 plan (§1, §2,
curtains from §6, left-align from §9):

- lib/attention.ts: date-first grouping (Today/Yesterday/This week/Earlier),
  Type/Project/Severity group-by, newest/oldest sort, and type/project/
  workspace/severity filters — all pure functions with localStorage helpers
  mirroring the InboxWorkItemGroupBy pattern. Re-buckets client-side (no
  refetch).
- WhatNeedsMe.tsx: Inbox-language toolbar (ListFilter / Layers / ArrowUpDown
  popovers), collapsible group sections via the shared IssueGroupHeader with
  counts, and Snoozed(n)/Dismissed(n) curtains listing hidden rows (fetched
  with includeDismissed=true) with Restore + snooze reappear time. Fetches
  under a distinct query key so dismissed rows never inflate the sidebar
  badge. Left-aligned container (dropped mx-auto).
- AttentionQueueRow.tsx: snooze presets submenu + dismiss on active rows;
  "hidden" variant renders curtain rows with Restore and reappear time.
- inboxDismissals API + useInboxDismissals hook: add snooze + restore, and
  invalidate the attention feed on any dismiss/snooze/restore.
- Tests: 20+ new cases covering sort/date-bucket/group/filter/options.
  Backfilled fixtures for T1's new required fields (dismissal, project,
  workspace, detail, InboxDismissal.kind/snoozedUntil).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 20:08:18 +00:00
..