- sync: the post-sync toast lumped relay pulls into the CalDAV stats
and always labelled the banner "CalDAV". Split into two separate
toasts (CalDAV cloud-arrow + Relay broadcast icon), each only shown
when its numbers are non-zero. Banners now stack vertically so both
can appear together on a sync that pulled on both sides.
- relay UI: the session chat view was 1:1-only. Group rooms (which
the client API already supports) now surface as first-class threads
in the sidebar — sorted chronologically with 1:1 peers, tagged
"ROOM", with a users-three icon. Sending posts to `room_uid`
instead of `recipient`; history shows the sender name above each
incoming message so it's clear who's talking in the room.
Relay backend: `/api/chat/threads` returns rooms alongside 1:1
threads; `/api/chat/history` accepts `?room_uid=`; `/api/chat/send`
accepts `room_uid` in the body.
- tests: bump "replace all updates card bodies" poll budget from 4s
to 10s and poll both updated cards. Flaky on cold runs because a
fresh PHP worker + SQLite WAL warm-up plus two sequential PATCH
calls can just barely exceed 4 seconds.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>