Collaboration
Expanse can sync a workbook live between people through a collab server. The same collaboration code runs on a self-hosted server and on the hosted Cloudflare backend, so the behaviour is the same either way.
This is opt-in. The desktop app is fully local by default; it only connects when you point it at a collab server.
Turning it on
Section titled “Turning it on”Set two environment variables on the desktop app:
EXPANSE_COLLAB_URL: your collab server’s WebSocket URL, for examplews://your-host:8787/sheet/<workbook-uuid>.EXPANSE_COLLAB_TOKEN: a bearer token from signing in.
See Self-hosting to run your own server, or use the hosted backend.
What syncs today
Section titled “What syncs today”When two clients are connected to the same workbook:
- Cell values, styles, and row / column inserts sync live between everyone connected.
- Edits are ordered by a Lamport clock; two people editing the same cell at once resolve last-write-wins.
- A late joiner gets the edit history replayed on join, so they catch up to the current state.
Sharing
Section titled “Sharing”A workbook is identified by a UUID in the connection URL. The auth service decides who is allowed to join, based on membership of the workbook’s organization or a share link. Everyone connected to the same workbook UUID sees the same live sheet.
Not built yet
Section titled “Not built yet”Collaboration is real but early. Today it does not include:
- Live cursors or presence: you won’t see other people’s selections or where they’re working.
- An in-app share / invite button: you coordinate the workbook URL yourself for now.
- A history or version-travel view: edits are stored, but there’s no timeline UI to browse or roll back.
- Multi-sheet sync: a session covers a single sheet today.
- Concurrent row / column deletes: inserts sync, but deletes aren’t applied across peers yet.