Skip to content

fix(web,mobile): snooze menu no longer offers the same wake time twice - #8741

Merged
maria-rcks merged 2 commits into
pingdotgg:mainfrom
vitalyiegorov:fix/snooze-duplicate-wake-times
Aug 30, 2026
Merged

fix(web,mobile): snooze menu no longer offers the same wake time twice#8741
maria-rcks merged 2 commits into
pingdotgg:mainfrom
vitalyiegorov:fix/snooze-duplicate-wake-times

Conversation

@vitalyiegorov

@vitalyiegorov vitalyiegorov commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Found on a Sunday, fixed on a Sunday — for the ones who work on Sundays only!

Fixes #8740

What Changed

  • resolveSnoozePresets (the shared snooze-preset builder in packages/client-runtime) now only offers "Next week" when it lands on a different instant than "Tomorrow".
  • On Sundays both resolve to Monday 9:00 AM, so the menu collapses to four options and never shows the same wake time twice.
  • One new unit test pinning Sunday 2026-08-30 (the repro date) in threadSnoozed.test.ts.

Why

"Next week" is next Monday 9:00 AM — and on a Sunday, tomorrow is Monday. Every client (web sidebar popover, web context menus, chat-header menu, mobile native snooze menus) renders the same shared preset list, so the menu offered two rows with identical wake targets one day a week. The guard lives in the one shared builder, so no per-client duplication and every surface inherits the fix.

UI Changes

Before (Sunday): five options — "Tomorrow 9:00 AM" and "Next week Mon 9:00 AM" are the same instant:

before: snooze menu shows Tomorrow and Next week pointing at the same Monday 9:00 AM

After (Sunday): four options, duplicate gone:

after: four snooze options, no duplicate wake time

No motion or timing changes, so no video.

Testing

  • vp test run packages/client-runtime/src/state/threadSnoozed.test.ts — new Sunday test asserts the four-option list and that what remains lands on Monday.
  • Reproduced in a live dev environment on Sunday 2026-08-30: before the fix the popover showed the duplicate; after the fix it shows four options (screenshots above are from that run).
  • Targeted typecheck, lint, and format on the touched files are clean.

Checklist

  • Small and focused: 2 files, +26/−7, one concern
  • Explained what changed and why
  • Before/after screenshots attached
  • No video needed (no motion/interaction change)

Created with z-ai/glm-5.3-flash via the opencode harness in T3 Code.


Note

Low Risk
Small calendar-edge guard in shared snooze preset generation with no auth, data, or server contract changes.

Overview
Fixes duplicate snooze options on Sundays by tightening the shared resolveSnoozePresets builder in client-runtime.

The "Next week" preset is only added when its wake instant differs from "Tomorrow". On Sundays both resolve to Monday morning (9:00), so the menu drops the redundant row and every surface that uses this list (web and mobile snooze menus) shows four choices instead of two identical wake times.

A unit test locks Sunday 2026-08-30 to assert next-week is omitted while Tomorrow still targets Monday.

Reviewed by Cursor Bugbot for commit 4776f84. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix resolveSnoozePresets duplicating the same wake time on Sundays

On Sundays, the "Tomorrow" and "Next week" snooze presets both resolve to Monday morning, causing the menu to show the same wake time twice. resolveSnoozePresets now compares the computed "next-week" Date against "tomorrow" and omits "next-week" when they are equal. A test in threadSnoozed.test.ts verifies the Sunday edge case.

Macroscope summarized 4776f84.

On Sundays "Tomorrow" and "Next week" both resolve to Monday 9:00 AM,
so the snooze menu listed the same wake time as two rows. "Next week"
is now only offered when it lands on a different instant than
"Tomorrow", in the shared resolveSnoozePresets builder that feeds the
web popover, context menus, the chat-header menu, and mobile menus.

Created with z-ai/glm-5.3-flash via the opencode harness in T3 Code.
@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 593ea279-d45a-4737-b6a3-9970a1605461

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Aug 30, 2026
@macroscopeapp

macroscopeapp Bot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 4776f84

Macroscope's review found this PR approvable — This is a localized, tested bug fix that removes a redundant Sunday snooze option while preserving all other web and mobile behavior. It changes no product defaults, APIs, schemas, infrastructure, or sensitive code.

You can add or adjust custom eligibility rules. Learn more.

@vitalyiegorov vitalyiegorov changed the title fix: snooze menu no longer offers the same wake time twice fix(web,mobile): snooze menu no longer offers the same wake time twice Aug 30, 2026
…s doc

Created with z-ai/glm-5.3-flash via the opencode harness in T3 Code.
@CDVolvik

Copy link
Copy Markdown
Contributor

Verified fix(web,mobile): snooze menu duplicate wake time at 4776f84 as CDVolvik. resolveSnoozePresets now guards next-week with nextWeek.getTime() != tomorrow.getTime(), so on Sundays menu collapses 5 to 4 (both Monday 9am). Tested pnpm exec vitest run threadSnoozed.test.ts 26/26 passed including new Sunday case 2026-08-30. CI green. Revert safe. LGTM.

@maria-rcks
maria-rcks merged commit 7980dfd into pingdotgg:main Aug 30, 2026
27 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 30, 2026
## What's Changed
* feat(mobile): update tool summaries and chat transitions by @juliusmarminge in pingdotgg/t3code#8793
* feat(web): play video attachments in chat by @Bil0000 in pingdotgg/t3code#8688
* fix(web,mobile): snooze menu no longer offers the same wake time twice by @vitalyiegorov in pingdotgg/t3code#8741
* fix(grok): allow model changes in existing threads by @ahmed-besic in pingdotgg/t3code#8392
* feat(mobile): pick, share, and receive files in threads by @t3dotgg in pingdotgg/t3code#8237

## New Contributors
* @ahmed-besic made their first contribution in pingdotgg/t3code#8392

**Full Changelog**: pingdotgg/t3code@v0.0.37-nightly.20260830.1227...v0.0.37-nightly.20260830.1232

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.37-nightly.20260830.1232
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 31, 2026
## What's Changed
* Remove Messages Glass Lab experiment by @juliusmarminge in pingdotgg/t3code#8599
* Require human review for pull requests changing product defaults by @juliusmarminge in pingdotgg/t3code#8603
* fix(codex): avoid quadratic app-server input buffering by @juliusmarminge in pingdotgg/t3code#8605
* fix(mobile): stabilize iOS header item transitions by @juliusmarminge in pingdotgg/t3code#8607
* chore(mobile): upgrade to Expo SDK 57 by @juliusmarminge in pingdotgg/t3code#8609
* fix(mobile): harden native header toolbar items by @juliusmarminge in pingdotgg/t3code#8611
* fix(server): stop querying Claude context usage after turns by @t3dotgg in pingdotgg/t3code#8610
* chore: vouch ryanrhughes by @t3dotgg in pingdotgg/t3code#8613
* feat(web): attach PDFs, ZIPs, and other files to a turn by @t3dotgg in pingdotgg/t3code#8236
* feat(web): keybinding settings as settings rows by @StiensWout in pingdotgg/t3code#8532
* feat: let an environment publish themes as a file by @ryanrhughes in pingdotgg/t3code#8569
* fix(web): clean up provider settings list and editor by @StiensWout in pingdotgg/t3code#8504
* fix(web): keep project picker popup inside the sidebar by @SunkenInTime in pingdotgg/t3code#8627
* fix(mobile): prevent header overflow and back-button artifacts by @juliusmarminge in pingdotgg/t3code#8624
* fix(server): retry automatic thread title generation by @Bil0000 in pingdotgg/t3code#8087
* fix(client-runtime): refresh edited pull request comments by @Bil0000 in pingdotgg/t3code#8094
* fix(web): four composer spacing defects by @Bil0000 in pingdotgg/t3code#8090
* perf(desktop): skip duplicate browser updates by @Bil0000 in pingdotgg/t3code#8018
* fix(web): render nested markdown images correctly by @flamboh in pingdotgg/t3code#8501
* fix(web): unify activity logs and composer banners by @juliusmarminge in pingdotgg/t3code#8693
* fix(mobile): reduce dev-client reload and Metro startup cost by @juliusmarminge in pingdotgg/t3code#8694
* revert(web): restore previous composer banners by @t3dotgg in pingdotgg/t3code#8733
* test(web): remove tests for unreachable helpers by @t3-code[bot] in pingdotgg/t3code#8738
* feat(mobile): update tool summaries and chat transitions by @juliusmarminge in pingdotgg/t3code#8793
* feat(web): play video attachments in chat by @Bil0000 in pingdotgg/t3code#8688
* fix(web,mobile): snooze menu no longer offers the same wake time twice by @vitalyiegorov in pingdotgg/t3code#8741
* fix(grok): allow model changes in existing threads by @ahmed-besic in pingdotgg/t3code#8392
* feat(mobile): pick, share, and receive files in threads by @t3dotgg in pingdotgg/t3code#8237
* fix(web): reduce title bar scroll fade height by @maria-rcks in pingdotgg/t3code#8799
* fix(windows): strip quotes from repaired PATH by @UtkarshUsername in pingdotgg/t3code#8746
* fix(web): open agent images in expanded preview by @maria-rcks in pingdotgg/t3code#8807
* fix(git): follow repository instructions in generated source control text by @maria-rcks in pingdotgg/t3code#8804
* fix(server): stop overpricing cached Claude tokens by @SunkenInTime in pingdotgg/t3code#8806
* fix(web): keep image preview above sidebar control by @maria-rcks in pingdotgg/t3code#8811
* fix(web): keep right panel synced with agent edits by @maria-rcks in pingdotgg/t3code#8803
* fix(web,mobile): render Codex citations and artifact templates by @Yash-Singh1 in pingdotgg/t3code#8584
* chore: add Windows setup script to t3.json by @UtkarshUsername in pingdotgg/t3code#8814
* fix(web): fold interim turn responses by @maria-rcks in pingdotgg/t3code#8828
* fix(web): use circle alert for failed tool calls by @maria-rcks in pingdotgg/t3code#8840
* feat(mobile): add offline iPhone voice input by @t3dotgg in pingdotgg/t3code#8614
* fix(web): prevent pull request metadata overlap by @MatthewFeroz in pingdotgg/t3code#8790

## New Contributors
* @ryanrhughes made their first contribution in pingdotgg/t3code#8569
* @ahmed-besic made their first contribution in pingdotgg/t3code#8392
* @MatthewFeroz made their first contribution in pingdotgg/t3code#8790

**Full Changelog**: pingdotgg/t3code@v0.0.36...v0.0.37

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Snooze menu offers "Tomorrow" and "Next week" as duplicate Monday 9:00 AM wake times on Sundays

3 participants