- Poll request must complete within the interval (10s default)
- If a poll is still in-flight when the next interval fires, skip the
new interval (don’t stack requests)
- Message merge must be O(N) where N is the number of new messages,
not the total history
- Rendering a new message must not cause a full-screen redraw
flicker
NFR-2: Battery / Power
- Polling every 10s over Tailscale WiFi is acceptable for a handheld
device
- The interval should be configurable via
config.json
(e.g., poll_interval_ms)
- Consider adding a “power save” mode that increases interval to 30s
when idle