Conversations
When the chat UI loads
The full layout only appears when the workspace has at least two people who are not in invitation sent state—pending invites do not count toward that headcount. Below that threshold you get a compact empty state with a shortcut to Members to add someone.
Opening Team → Conversations with a `dm` query (for example from a colleague’s message icon on Members) auto-selects that person’s direct message once the app loads.
Layout, sidebar, and channels
The page is a tall card: a fixed sidebar on desktop and the thread on the right. On mobile, the sidebar is a left sheet opened with the panel button in the header. When the channel list arrives and you have not picked anything yet, the first channel is selected automatically.
Search (top of the sidebar) narrows both channels and DM names. Channels use a hash for public rooms and a lock for private ones, and may show a member count badge. Direct messages list everyone except you, with a green online dot or a muted offline dot; the DM header can also show an away state when the API reports it.
+ beside Channels opens create channel: name, public vs private (each with a short hint), optional members chosen from a searchable checklist with avatars—read-only viewers can open the dialog but fields are disabled. After create, the channel list refreshes.
Who is in a channel
For a channel (not a DM), the header’s people icon opens channel members: see who is already in the room, search the company roster, toggle checkboxes to add or remove people, then Save to persist through the API and refresh channel metadata. Without edit permission the roster is view-only.
Messages and composer
Threads show day labels when the date changes, then each message with avatar, name, time, and HTML body so formatting survives—@mentions are highlighted in the text. Hover a message to add emoji reactions from a picker.
The composer is the shared rich-text Editor with toolbar, Send, and (for channels only) attach: multiple files are allowed, constrained to common office, text, and image extensions (pdf, doc/xls/ppt, txt, jpg/png/gif, etc.). Direct messages use the same editor but only the message body is sent—attachments are not uploaded for DMs, and switching channel or DM clears any staged files.
You must pick a channel or DM before typing; placeholders explain when nothing is selected. Enter sends; Shift+Enter inserts a newline. `@` while typing opens the mention list filtered by the current token (first-name style matching). If your role is read-only, the composer is disabled.