Messages should appear immediately when sent.
Flow:
User sends message
Add to UI with pending status and temp ID
Send to server
On success: Update with server ID, mark as sent
On failure: Show retry option
Status progression:
- Pending (clock icon)
- Sent (single check)
- Delivered (double check)
- Read (double check, colored)
Retry queue: Store failed messages for retry when connection restored.