Live collaboration
When you and your teammates open the same project, you see what each other is doing in real-time. Animot uses a single-editor model — one person makes changes at a time, everyone else watches live, and anyone can ask to take over with one click.
Why single-editor?
Concurrent editing (Figma-style multi-cursor) requires a CRDT layer to merge conflicting changes. For presentation work — where edits tend to be sequential and one author usually drives — single-editor + live mirroring covers 95% of team use cases without the complexity. No merge conflicts, no "last save wins" surprises, no hidden state divergence.
What you see
As the editor
- Full editing control — your toolbar, handles, and shortcuts work normally.
- A small presence pill appears at the top-center of the canvas listing teammates currently watching, with a green dot for "live".
- Your changes broadcast to viewers within ~500ms (debounced via Server-Sent Events).
- If a teammate asks to take over, a modal pops up: "Bob wants to edit. Hand over?"
As a viewer
- The canvas is read-only — toolbar buttons, drag handles, and keyboard shortcuts all no-op.
- A purple banner at the top of the canvas shows who's editing plus presence avatars.
- Incoming changes apply to your canvas as they're made — pan and zoom still work locally so you can examine details.
- Click Take over to ask the current editor to hand over.
The take-over flow
| Step | What happens |
|---|---|
| 1. You click Take over | Modal opens: "Asking {editor}…". Their UI shows a confirmation modal: "You wants to edit. Hand over?" |
| 2a. They click Hand over | Lock transfers to you. Both UIs update within a second — you become the editor, they become a viewer. |
| 2b. They click Keep editing | Your modal flips to "Declined" with a Force Take-over button visible immediately. |
| 2c. They don't respond | After 15 seconds your modal reveals a Force take over button — useful when the editor's tab is open but idle. |
| 3. Force take-over | Lock flips immediately, the displaced editor sees a toast "You took over editing" and demotes to viewer mode. |
Edge cases
Tab close / network drop
The editor's lock has a 60-second TTL refreshed every 30 seconds via heartbeat. If their tab closes cleanly, a navigator.sendBeacon releases the lock immediately. If they lose network, the lease expires naturally — once stale, anyone else can acquire without confirmation.
Save protection
Even if a viewer's read-only mode is bypassed (custom client, dev tools), the server rejects saves from non-holders. Multiple layers of defense keep concurrent saves race-free, so two people can never overwrite each other.
Returning after a take-over
When someone takes over your editing, your unsaved local changes are NOT pushed to the new editor — only changes you'd already saved. The displaced editor sees a toast and their canvas reverts to the persisted state once the new editor sends their first tick. Save before stepping away if you want a clean handoff.
Plan availability
Live collaboration is a Team plan feature, since it only makes sense in a shared team workspace. Solo Pro users editing their own personal workspaces don't have anyone to collaborate with — the SSE channel is still wired (so future features can use it) but the take-over UI never surfaces.