Space info now carries avatar_version instead of the inlined thumbnail; the worker fetches the thumbnail once per version. Legacy base64 rows are migrated to files on startup, and the daily backup uploads avatar files.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> [CI]
- 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