# feat\(web\): customize snooze presets · PR \#23884 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/23884)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: open

Source repository: Unavailable fork

Source branch: feat/snooze-presets

Target branch: main

Head commit: aa44af5bbc115b5a7f01db83261e5ec42c9eac60

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/23884)

[Commits](https://git.cafe/pingdotgg/t3code/pull/23884/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/23884/diffs?format=markdown)

## Description

---

## Problem

The existing snooze menu has fixed durations and wake times. Users who need early-morning wakes or a seven-day snooze cannot configure those presets.

## Change

- Add five configurable snooze slots in General settings on web/desktop and Thread behavior on mobile. Each slot accepts either 1–168 elapsed hours or an absolute local day/time.
- Keep slots in their configured order. Weekdays use their next occurrence, including today when the time is still ahead.
- Keep natural menu labels such as “This afternoon,” “This evening,” “Tomorrow,” “Next week,” and “In 7 days.”
- Preserve existing defaults and their contextual visibility/deduplication until customization; restoring defaults returns to that behavior.
- Give the existing auto-settle controls their own header, preserving their capability checks, controls, defaults, and behavior.

Snooze preferences stay on the current device. Shared contracts and resolution logic keep web, desktop, and mobile behavior consistent.

## Scope and approval

This is focused configuration of the existing snooze capability under the configuration-option exception in CONTRIBUTING.md. It adds preset choices without introducing a new workflow, changing product defaults, or changing server settlement rules. The settings, client integration, shared resolver, tests, and user guide all support that configuration.

## Verification

- `vp run check:changed HEAD`: format, lint, knip, affected typechecks, and relevant tests passed.
- A Chromium regression test confirms that typing `1.5` keeps the saved preset unchanged, a subsequent unrelated time-format change still persists, and valid values such as 168 hours continue to save.
- Time-editing regression tests cover clearing and replacing a time without saving empty drafts, restoring the saved value on blur, and reflecting later saved-value changes.
- Focused coverage checks validation and settings round trips, fixed preset order, next weekday occurrences, expired Today slots, daylight saving transitions, natural labels, unchanged default labels, and mobile action recomputation.
- Used T3’s built-in browser against isolated development state: edited and persisted presets, confirmed 169 hours caps at 168, checked the layout at 390px without horizontal overflow, and verified the actual snooze menu.
- In the integrated client, confirmed that clearing a time leaves its saved value intact, blur restores the saved time, and the existing auto-settle controls appear under their own header.
- Native iOS/Android and packaged Electron were not run.

### Before customization: unchanged default menu

![Default snooze menu with one-hour and three-hour durations and 9 AM wake times](https://github.com/user-attachments/assets/8c3b82c9-d524-4f51-82f4-3ead6290ce27)

### After customization

![Customized snooze menu with In 7 days, This evening, Tomorrow at 6 AM, and Next week at 6 AM](https://github.com/user-attachments/assets/e3f7c2bc-ad38-4741-b932-97ec225f5849)

<details>
<summary>Settings layout before and after</summary>

Before: auto-settle rows are part of Organization.

![Auto-settle controls within Organization](https://github.com/user-attachments/assets/671288aa-eee5-453b-9aa7-2b5572530d6a)

After: the same controls have a dedicated Auto-settle header.

![Existing controls under the Auto-settle header](https://github.com/user-attachments/assets/be0fa8cd-d7e9-454d-96c4-83db880c1fd9)

</details>

Implemented with GPT-6.1-Sol using the Codex harness in T3 Code.


