block / block/buzz

feat: Add "Schedule for Later" message delivery

Open
#5,356 2 comments 1 reaction 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.