Messages from other members or devices used to render as an unknown member
until the space structure refreshed. Use the author account the server
records for the object, together with the loaded profiles, when the item
arrives.
Opening a space link while signed out shows the sign-in page first and keeps
the link in memory. The channel settings no longer offer the stranger switch,
and the client supports API contract major 8.
Activate the account with parallel requests, run the full vault sync in the
background, skip the duplicate space list request, and send the rejoin
together with the first screen of data. [CI]
Accepting an invitation no longer waits for the vault sync, the redundant
join right after joining is skipped, and the crypto state, first log page and
channel metadata are requested in parallel.
- chat: left-aligned discord-style messages with grouped senders, hover
actions, an auto-growing composer and file cards
- send: render messages and files locally first and replace the
placeholder when the worker publishes the real item; failures keep the
text with a retry action
- navigation: space rail plus a flatter channel list with the space name
header and collapsible groups
- members: right pane tabs (files / members) grouped by online, offline
and pending users, with a prominent invite action and a top bar shortcut
- notifications: toast host for invite results; invitees get a toast with
an accept action, and the invitation payload now carries the space name
and inviter inside the encrypted grant
- users over devices: drop device names, the device list and device
rename/release; senders show the account (guests show as guest) and the
share panel only keeps links
- follow contract 7.0.0 (max_members, members_used, members_full, /join)
- docs: ui-design and frontend updated for the new layout and concepts