feat(client): schedule custom snooze times - #6082
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 19a0a98. Configure here.
ApprovabilityVerdict: Needs human review This PR introduces a new feature adding custom snooze time selection across mobile and web platforms. New screens, dialogs, navigation routes, and datetime parsing logic with DST edge case handling represent significant new user-facing behavior warranting human review. You can customize Macroscope's approvability policy. Learn more. |

What Changed
Why
The preset choices work for common cases, but they cannot express a specific date and time. Custom scheduling makes snooze useful for deadlines, handoffs, and planned follow-ups without changing the underlying snooze model.
Related prior proposal: #4677. This implementation was built fresh from current
mainand extends the feature across web, desktop, iPhone, iPad split view, and Android foldable layouts.UI Changes
Before
Desktop preset-only snooze menu:
After
Evidence is stored outside the feature branch in this immutable fork commit.
Verification
pnpm --filter @t3tools/mobile test— 102 files, 626 tests passedgit diff --checkpassedChecklist
Model: GPT-5.6 Sol | Harness: Codex in T3 Code
Note
Low Risk
Client-only UI and shared validation around the existing snooze command; DST parsing is covered by tests but is the main subtlety.
Overview
Adds Until… beside snooze presets so users can pick an exact local wake time. Web/desktop wires the choice through the sidebar popover, thread context menus, and bulk snooze; it opens a global
SnoozeForDialogwith adatetime-localfield and DST-aware parsing inSidebar.snooze.ts. Mobile registers aSnoozeForroute/sheet from thread list and iPad sidebar menus, with iOS inline datetime picker and Android date/time dialogs plus UTC merge helpers.client-runtime gains
resolveSnoozeForDefault(15-minute step, ≥1 hour ahead) andsnoozeForTimeErrorfor shared validation. Snooze handlers now take ISOsnoozedUntilstrings instead of preset objects. User docs note custom snoozing; no server or wire changes.Reviewed by Cursor Bugbot for commit f926ffe. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add custom snooze time scheduling via 'Until…' action on web and mobile
SnoozeForDialogrenders a datetime-local input seeded withresolveSnoozeForDefault(next 15-minute boundary ≥1 hour ahead) and validates input with sharedsnoozeForTimeErrorfromclient-runtime.SnoozeForroute presents as a form sheet (iOS) or card screen (Android); Android uses split date/time pickers withresolveAndroidPickerValueandmergeAndroidPickerValueto handle timezone-safe merging of selected parts.packages/client-runtime/src/state/threadSettled.tsprovidesresolveSnoozeForDefaultandsnoozeForTimeErrorfor consistent defaults and validation across platforms.apps/web/src/components/Sidebar.snooze.tshandles DST edge cases and repeated local times using a ±2 day candidate window.Macroscope summarized f926ffe.