Send later for drafts

Let users schedule a draft to be sent at a chosen time. Scheduled drafts are stored server-side and sent by the existing job runner, so closing the app does not cancel them.

Ledger file: docs/plans/demo-send-later-for-drafts/decisions.json · rev 1

4 decisions for you; 1 asked and answered in Codex, recorded in the ledger; 2 defaults the plan assumed, kept unless you change them below

QuestionAnswered in Codexn-send-later-entry

Send later entry

Where should users schedule a draft?

Default: Menu next to Send · leave it empty and it is recorded as "not answered; default kept", not as agreement
Questiond1

Where is the schedule stored?

Default: column on the drafts table · leave it empty and it is recorded as "not answered; default kept", not as agreement
Affects: src/db/migrations/**src/api/drafts.ts
Questiond2

What happens if sending fails at the scheduled time?

Default: Retry 3 times with backoff, then mark as failed · leave it empty and it is recorded as "not answered; default kept", not as agreement
Affects: src/jobs/sendScheduled.ts
Questiond3

Maximum schedule horizon?

Default: 30 days · leave it empty and it is recorded as "not answered; default kept", not as agreement
Questiond4

Time zone for the picker

Time zone for the picker: use the user's profile time zone or the device time zone?

No default, please choose · leave it empty and it is recorded as "not answered; default kept", not as agreement
Affects: src/ui/composer/**
AssumptionDefault, reviewabled-drafts-without-recipients-cannot-be

Drafts without recipients cannot be scheduled.

Default: Drafts without recipients cannot be scheduled. · leave it empty and it is recorded as "not answered; default kept", not as agreement
AssumptionDefault, reviewabled-default-horizon-is-30-days-unless-d3

Default horizon is 30 days unless D3 says otherwise.

Default: Default horizon is 30 days unless D3 says otherwise. · leave it empty and it is recorded as "not answered; default kept", not as agreement
Full plan

Send later for drafts

Summary

Let users schedule a draft to be sent at a chosen time. Scheduled drafts are stored server-side and sent by the existing job runner, so closing the app does not cancel them.

Key Changes

Decisions

Test Plan

Assumptions

Paste it into your next Codex message