feat: Add "Schedule for Later" message delivery
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Motivation
Asynchronous communication is fundamental to distributed teams and respects work-life balance across time zones. Many teams have members in different regions, and immediate message delivery can interrupt sleep, focus time, or off-hours for collaborators. Slack's "Schedule message" feature has become a standard expectation in team communication platforms, allowing users and agents to compose messages now and deliver them at a time that doesn't interrupt recipients.
Buzz currently lacks this capability, which means:
- Users must manually send messages at specific times or interrupt teammates across time zones
- Agents cannot respect timezone-aware delivery windows for automated messages
- Teams lose the ability to queue communications for working hours without external workarounds
## Proposed solution
Add a **"Schedule for Later"** feature that:
1. **Composer integration**: Add a "Schedule" button or time-picker in the message composer (alongside "Send now") that lets users specify:
- Date and time for delivery
- Optional: recurring schedule or delivery window
- Display selected delivery time near the send button
2. **Agent support**: Allow agents to schedule messages via the CLI/API:
- `buzz messages send --channel --scheduled-at --content "..."`
- Messages persist in the harness queue across agent restarts
3. **Queue and delivery**:
- Store scheduled messages durably (relay-backed or local)
- Deliver at the specified time automatically
- Show scheduled messages in a "Scheduled" view before delivery
- Allow editing/cancellation of pending scheduled messages
4. **User experience**:
- Show clear indication in the channel when a message is scheduled vs. sent
- Display delivery time in local timezone
- Timezone-aware scheduling for teams across regions (stretch goal)
## Alternatives considered
- External scheduling via cron/Lambda: brittle, requires manual setup per team, no UX integration
- Relay-side scheduling microservice: adds operational complexity; feature should live in the client for simplicity
- Draft messages: solves the "compose later" problem but not "deliver later"
## Additional context
- [Slack's Schedule Message docs](https://slack.com/help/articles/1386781024547-Schedule-messages)
- This mirrors a core feature in Discord, Teams, and other async-communication platforms
- Agents benefit especially: can publish summaries, reminders, and updates outside human working hours
- Duplicate check: None found in open issues
Contributor guide
Assessment
This issue has not been assessed yet.