FR-6: Silent Failure
- Polling failures (timeout, network error, relay down) must not
trigger the red error screen
- Log the failure to
/tmp/aquaping-client.log for
debugging
- The user should be unaware of transient failures
- After N consecutive failures (e.g., 3), optionally show a subtle
offline indicator (e.g., gray dot in the nav bar) instead of an error
screen
FR-7: Chat List Updates
- If a new message arrives for a different chat (not the one currently
open), the chat list should also update
- Show an unread indicator on the chat list item (e.g., blue dot, bold
text, or subtle highlight)
- The unread state should be persisted in
config.json so
it survives app restarts
Non-Functional Requirements