[Bug] Due reminders cannot be cleared from the inbox Reminders list — actions hidden in the inbox-list row
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Summary
Once a reminder comes due, there is no visible way to clear it from the inbox Reminders list. The Inbox nav badge keeps counting it, and a user who has already dealt with the underlying message concludes that reminders cannot be dismissed at all.
The actions exist — they are just not reachable from the surface where the user looks.
## Steps to reproduce
1. Use **Remind me later** on any message, with a short delay.
2. Wait for the reminder to come due. The Inbox nav badge increments.
3. Deal with the message.
4. Go to Home → inbox filter dropdown → **Reminders**.
5. Look for a way to mark the reminder done.
**Expected:** a Complete (and/or Cancel) affordance on the reminder row.
**Actual:** the row shows author, source, preview, and "Nh overdue" — and nothing else. The badge stays.
## Cause
`ReminderRow` in `desktop/src/features/reminders/ui/RemindersPanel.tsx` suppresses its own action cluster whenever it is rendered in the inbox:
```tsx
// desktop/src/features/reminders/ui/RemindersPanel.tsx:223
{isDone || isInboxList ? null : (
...Complete / SnoozeMenu / Cancel
)}
```
`desktop/src/features/home/ui/InboxListPane.tsx:585` is the only caller passing `presentation="inbox-list"`, so in the inbox the buttons are never rendered.
Complete / Snooze / Cancel therefore live *only* in `ReminderDetailPane` (same file), reached by selecting a row. That is a real path — Home → filter → Reminders → click the row → `Complete` in the right-hand detail pane — but nothing on the row hints that selecting it unlocks actions, and on a narrow window the detail pane is a separate view rather than something visible beside the list.
The surface that *did* show inline actions — the standalone `/reminders` route rendering `presentation="card"` — is now a redirect to `/` (`desktop/src/app/routes/reminders.tsx`), so that affordance is gone.
## Related gap (separate fix)
The fire-on-due notification in `desktop/src/features/reminders/useReminderNotifications.ts` has no `Done` action either, so the reminder cannot be cleared from the notification that announces it. Worth its own change; not covered here.
Reminders are kind `30300` (`desktop/src/shared/constants/kinds.ts:58`), NIP-44 self-encrypted, and there is no `buzz reminders` CLI group — so Desktop is currently the only surface that can clear one.
## Proposed fix
Render the existing Complete / Snooze / Cancel controls in the `inbox-list` presentation too, revealed on row hover, keyboard focus, or selection so the list stays visually calm at rest. One condition and one class list in `RemindersPanel.tsx`; no new components, service calls, or event shapes.
PR follows.
Contributor guide
Research direction
Start with ReminderRow in desktop/src/features/reminders/ui/RemindersPanel.tsx and inspect the inbox-list caller at desktop/src/features/home/ui/InboxListPane.tsx:585. Compare the existing action rendering with the detail-pane path, then verify that Complete, Snooze, and Cancel are available on inbox reminder rows on hover, keyboard focus, or selection without changing the standalone route or notification behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- desktop, frontend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100