Presence-based Chat Rooms
A new chat room type where participants are only the people currently in the room — closing the page removes them instantly, no membership is stored, and the participants list always shows who is really there.
Every chat room now starts with a Chat room type choice in its editor. Regular chat room keeps the classic behavior — users join, stay members until they leave, and get unread counters and notifications. Presence-based chat room brings classic IRC-style semantics to Better Messages: nobody joins and no membership is ever stored. The participants are exactly the people who have the room open right now — close the tab, navigate away, or lose the connection, and you disappear from the list within seconds. The room header shows a live "N people here" count that updates the moment someone enters or leaves.
Access is controlled per role with two columns — Can Read and Can Reply. Roles allowed to reply can always read, and guest users can be allowed to read or chat without an account. There are no unread counters, no email or push notifications, and the room never appears in user inboxes — a presence-based room lives entirely in the moment.
Everything realtime works as expected: messages are broadcast instantly to everyone present, delivery statuses reflect who is actually in the room, and group video / audio calls work for members and guests alike. A companion pair of per-room Group video calls and Group audio calls toggles — available for all chat room types — lets you disable calls in specific rooms while keeping them enabled globally.
Presence-based chat rooms require the WebSocket version — the live roster and instant broadcast run on the realtime connection. Regular chat rooms are unchanged and work in both the free and WebSocket versions.