When multiple /notify calls arrive in quick succession, they now queue up and display one at a time rather than clobbering each other. Each notification plays for its full duration before the next is promoted. - /notify returns `queued: true` and `notify_queue_size` when buffered - Cleanup thread auto-advances the queue when the playing notification expires - /clear on the playing notification promotes the next immediately - /clear on a queued (not-yet-playing) notification removes it from the queue - /clear-all also drains the queue - Status response includes `notify_queue_size` for frontend awareness Bump to v2.3.3. Update OpenAPI spec, README, TODO. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
24 lines
1.1 KiB
Markdown
24 lines
1.1 KiB
Markdown
# Kao — TODO
|
|
|
|
Feature ideas for future work, roughly in priority order.
|
|
|
|
## REST API improvements
|
|
|
|
- ~~**Notification queue**~~ — done in v2.3.3
|
|
- **Sticky notifications** — a `sticky: true` flag on `/notify` to keep a
|
|
notification visible until explicitly cleared via `/clear`, rather than TTL-expiring
|
|
- **Named presets** — define reusable notification profiles in `config.json`
|
|
(e.g. `"doorbell"` → specific emote/sound/color/duration) so callers can
|
|
POST `{"preset": "doorbell"}` without repeating fields every time
|
|
- **Batch `/notify`** — accept an array in a single POST so multiple
|
|
notifications can be queued atomically
|
|
- **`/history` endpoint** — a ring buffer of the last N state changes/events
|
|
received, for auditing what fired overnight without tailing logs
|
|
|
|
## Display / frontend
|
|
|
|
- **Brightness curve** — dim gradually after dark rather than hard-sleeping;
|
|
reduces OLED burn-in without losing glanceability
|
|
- **Scrolling ticker** — when multiple events are active, cycle through their
|
|
messages rather than only showing the top one
|