Working at the same time
What syncs live and what does not, whose cursor you see where, what the connection pill means, and exactly what happens when the connection drops.
All documentation — Working together
Boards and the canvas
The node builder
Modelling the world
Variables, logic and commands
Voice and audio
AI
Working together
Project settings
On this page
Two people can have the same project open and see each other work. This page is what that actually means — where it applies, where it does not, and what happens when the network gets in the way.
What syncs, and when
A project keeps its live state in two places, and the difference explains most of the behaviour on this page.
The project itself is one shared document, synced from the moment you open the project. It holds your boards and everything on them, your entity definitions and items, node types, media, variables, contexts, enums, commands, tags, the document tree, project settings and string resources.
Each lore document and spreadsheet is its own separate document, synced only while it is open. Close the tab and it stops streaming; a project with four hundred documents costs you nothing until you open one. The rule the product follows: anything that could plausibly grow past a few tens of kilobytes gets its own document rather than living inside the project’s.
Rich text on a node or an entity is not a separate document — it lives inline in the project, so it is always live.
Seeing each other
| Where | What you see |
|---|---|
| The header | Overlapping avatars of everyone in the project — up to four, then a +N chip. Nothing at all when you are alone. |
| The canvas | Live mouse cursors and selection halos, each carrying an avatar and a name |
| A document | Live mouse pointers and text carets, coloured per person and labelled — but only from people on the same document |
| A spreadsheet | A highlight and a name label on the cell each person is in. No mouse cursor, and no multi-cell range. |
| The entity grid | The same, and it works across views: someone editing a character in a form and someone editing the same field in the grid see each other |
| An entity form | A coloured ring around the field someone has focused, with their avatar and name, and a +N chip when several people are on one field |
Presence is scoped and bandwidth-aware: fine-grained cursor data is only broadcast when someone else is actually in a position to see it. Which board or document you are on is always broadcast, because that is how everyone finds each other.
The connection pill
The header carries a coloured dot and a word. It has ten states.
| It says | It means |
|---|---|
| Connecting… | Opening the connection |
| Syncing… | Connected, catching up |
| Synced | The steady state |
| Disconnected | The connection closed |
| Reconnecting… | Trying again |
| Paused | The tab has been in the background for five minutes, so the connection was hung up deliberately |
| Offline | Several attempts have failed — still retrying |
| Reload needed | This tab is running an old version the server no longer accepts |
| No access | Your access to this project was removed while it was open |
Paused and No access are deliberately drawn as neutral rather than as errors: an idle tab and a permissions change are not outages.
A separate banner appears in the corner three seconds after a disconnect and clears a second and a half after recovery: Connection lost, retrying…, Reconnecting…, Reconnected, or Offline — still trying to reconnect with a Retry now button. A version mismatch reads A new version is required — please reload, with Reload.
When the connection drops
Anything you wrote in the seconds before the panel appeared is kept locally and uploaded when the connection comes back. Once the panel is up nothing more can be written, so nothing more can be lost.
The panel says different things depending on what went wrong:
| Situation | What it says | What you can do |
|---|---|---|
| The connection dropped | Editing paused — TaleShard lost its connection to the server and is trying to reconnect. Everything you have written so far is safe. Editing resumes on its own. | Try again now, or Back to projects |
| The project never loaded | Couldn’t load this project — Anything on screen behind this may be incomplete or out of date. Nothing has been lost. The project is on the server, not in this tab. | Try again, or Back to projects |
| The whole service is unreachable | Can’t reach TaleShard — this affects the whole app, not just this project. | Try again only — the projects page needs the same server |
| Your access was removed | You no longer have access to this project — Anything you had already written is saved. | Back to projects only — retrying would be refused |
| The tab is out of date | This tab is out of date — A newer version of TaleShard has been released. | Reload |
Retries never stop while the tab is open, and they back off to about thirty seconds between attempts. Coming back online, refocusing the tab or restoring it from the background all reset that immediately.
What happens when two people edit the same thing
It depends on what kind of thing it is, and the difference is deliberate.
| What you are editing | What happens |
|---|---|
| Any text — a field, a code, an expression, a name, a description, rich text | Merged character by character. Both edits survive. Two people can type into one sentence. |
| Anything that is not text — a number, a checkbox, a date, a colour, a picker, a reference, a select | The last write wins. One value replaces the other. |
| Different fields of the same record | No conflict at all — every field is independent |
| The same node type’s layout | The whole layout is one value, so the last edit wins outright |
Who can collaborate
Collaboration itself is not otherwise plan-gated: what your plan changes is how many people can be in, not what they can do once they are. See organizations and roles.
What a Viewer sees
A Viewer’s edits are dropped at the server, silently. There is no error, no toast and no disabled state — the change simply does not happen. Reading always works: the project opens, syncs and exports normally.
A role change reaches a live session within about two minutes. Losing access entirely closes the connection at once, and you get the You no longer have access to this project panel.
Limits
| Limit | Value |
|---|---|
| Documents open at once, per project connection | 32 |
| Idle tab before the connection is paused | 5 minutes |
| Grace before editing is blocked on a lost connection | 5 seconds |
| Reconnect attempts | Unbounded while the tab is open |
| Number of collaborators | Bounded by seats, not by a cap — see organizations |