- dissolve core-bridge into api (wire contract), domain (models), services (what the UI
calls) and worker (everything that runs in the Web Worker, grouped by account, crypto,
space, files, shares, runtime); regroup features, lib and store by responsibility and
delete unused components
- the UI only reads backend capabilities (domain/capabilities); one tokenRole picks the
token, hasCode/isRetryable handle errors; pre-checks that decided permissions on the
client are gone; tests fail if those rules are reimplemented
- files go straight to the file domain (create, upload, download, delete, commit, cancel);
the host sees one registration per file; creating a channel allocates a file domain and
works even when the file service is down
- file panel shows which channel the files belong to and its space usage; unlimited files
preview in chat; videos get a stored cover; the file service status is shown
- fix: console flooded by Retry-After reads on every upload frame
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]
- account settings: sidebar sections (profile, devices, security,
invitations, sync and sign-in) instead of one long scroll; inline device
rename, confirmations for destructive actions and toast feedback
- sign-in/register: split layout with a quiet brand column, text tabs and
underlined inputs; registering asks for the password twice and explains
that it cannot be recovered
- move invitation accept/label helpers into store/invitations so the
toast and the settings inbox share them
- add the home page zone styles used by the next commit
- 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