Skip to content

feat(snooze): choose custom wake date or duration - #830

Merged
rynfar merged 4 commits into
pylonfrom
feat/custom-snooze-dates-20260924
Sep 26, 2026
Merged

rynfar merged 4 commits into
pylonfrom
feat/custom-snooze-dates-20260924

Conversation

@rynfar

@rynfar rynfar commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Change

Adapts upstream 3be02ae5791480b8c8bf3a13020a932378eca1ba (#11800) to Pylon's existing snooze command, capability gate, receipt, Undo notice, and mobile thread-row actions. Users can choose a local date/time or an elapsed duration in the web/desktop thread menu or mobile v2 row. The five existing presets remain. A shared resolver rejects past/invalid dates and nonexistent spring-forward times; repeated fall-back wall times use the first occurrence while it is future, then the second occurrence if that remains future; duration days mean 24 elapsed hours.

The web dialog uses native browser date/time inputs, avoiding a new calendar dependency. The browser/OS supplies their locale-specific calendar presentation. Upstream e1cbb705273a261d26b489f35a7ddca6567d9663 specifically configures an upstream custom calendar's week start and is not claimed as adopted here. The web request host keys each dialog to its own request so a stale close or submit cannot resolve a replacement request; unmount cancels only its matching request.

Scope and verification

  • 219 focused shared resolver, sidebar/menu, and mounted web dialog tests passed after reconciliation with current pylon; the additional fall-back regression brings the focused shared resolver test to 23 passing cases. Client-runtime/web/mobile scoped typechecks and lint passed; formatting and diff checks passed.
  • An independent adversarial review of the reconciled head found that a repeated fall-back hour rejected its second occurrence after the first had passed. Fixed at 816b01b534 with regression coverage for both the future second occurrence and the expired second occurrence.
  • Isolated browser verification covered date and duration modes and exposed a dialog-footer overflow; fixed at 056423f679. Isolated iOS Simulator verification covered both modes against a disposable Pylon environment and synthetic thread projection. The native appearance passed; the synthetic thread was not used to assert a successful backend snooze mutation.
  • Browser and iOS screenshots were captured in isolated state and uploaded to GitHub. The browser before image shows the footer below the dialog; the after image shows it inside the panel. The iOS images show both native input modes. The synthetic thread was not used to assert a successful backend mutation.
Web before Web after
Custom snooze dialog with overflowed footer before fix Custom snooze dialog with footer contained after fix
iOS date and time iOS duration
iOS custom snooze date and time mode iOS custom snooze duration mode

Owning review: #736. No ledger cursor advancement or merge is included.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@vercel

vercel Bot commented Sep 24, 2026

Copy link
Copy Markdown

Deployment failed for project pylon-marketing with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/pylon-code?upgradeToPro=build-rate-limit

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL labels Sep 24, 2026
@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 14.0 KiB 14.0 KiB −40 B (−0.3%) 15.1 KiB ✅
Codex Thread snapshot wire 7.3 KiB 7.3 KiB +2 B (+0.0%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.8 KiB 6.7 KiB −42 B (−0.6%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 58.0 KiB 58.0 KiB −44 B (−0.1%) 66.4 KiB ✅
Codex Live turn messages 10 9 −1 (−10.0%) 21 ✅
Claude Total thread wire 14.0 KiB 14.0 KiB −13 B (−0.1%) 15.1 KiB ✅
Claude Thread snapshot wire 7.3 KiB 7.3 KiB +2 B (+0.0%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.7 KiB 6.7 KiB −15 B (−0.2%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.9 KiB 58.9 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: 196876d · PR result: 816b01b · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 115.7 KiB
  • Claude decoded thread snapshot: 116.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@vercel

vercel Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
pylon-marketing Ignored Ignored Preview Sep 26, 2026 8:39pm UTC

@rynfar
rynfar marked this pull request as ready for review September 26, 2026 21:32
@rynfar
rynfar merged commit b0d7af1 into pylon Sep 26, 2026
25 checks passed
@rynfar
rynfar deleted the feat/custom-snooze-dates-20260924 branch September 26, 2026 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant