Collaboration
Share a deck, invite editors, comment, and coordinate work with presence and cursor indicators in connected sessions.
Sharing a deck#
Open Share in the editor. The dialog is headed Share “<your deck's title>”. Type an address into Add people by email…, pick a role — Can edit or Can view — and press Share. Enter sends too.
Everyone you have added appears under People with access, each with their own Can edit / Can view switch and a remove button. Changing a role there takes effect immediately; there is no separate save.
- Shared successfully, and the dialog says: Shared with them — they've been emailed.
- Not in the beta yet, and the access is parked: isn't in the beta yet — the access is saved and unlocks the moment they join. The person is listed with the tag waiting to join the beta, and you can withdraw that pending access at any time.
If you invite someone who isn't in the beta yet, the access is parked and unlocks the moment they join — the dialog tells you when this happens. Only the deck's owner manages sharing.

Decks shared with you appear in the dashboard under Shared with me, tagged with your role. Opening one as an editor shows a chip in the editor's title bar: Shared with you · can edit.
Python in a shared or imported deck never auto-runs. The editor shows Python is paused for this external deck until you press Trust and run. See Python & code.
What each role may do#
| Can edit | Can view | |
|---|---|---|
| Open the deck | Yes | Yes |
| Change slides and objects | Yes | No |
| Comment and reply in the deck UI | Yes | No controls in the current viewer |
| Resolve threads in the deck UI | Yes | No controls in the current viewer |
| Delete their own comment in the deck UI | Yes | No controls in the current viewer |
| Manage sharing | Owner only | No |
The dialog states the rule in its own footer: Viewers get a read-only copy of the deck — code never runs on their side. For a circuit it reads: Editors can change the schematic; viewers can open and probe it, but not alter it.
Link sharing#
A deck can also carry a public link for view-only access without an account. The Link sharing row reads Off — only you can open this deck until you press Create link; after that it reads Anyone with the link · Can view, with No sign-in required to open underneath. The address is copied to your clipboard as it is minted.
The token is stored only as a hash, so the full address is visible only in the session that created it. Open the dialog later and it says the link has been active since a date, and that for safety the address isn't stored — reset to mint a fresh one. Reset link revokes the old one and mints a new address; Turn off revokes link sharing entirely.
Someone opening a link that has been reset or turned off gets a plain page: This link isn't active — It may have been turned off by the deck's owner, or the address wasn't copied completely.
Circuits share by invitation only — there is no public-link viewer for one.
What a viewer sees#
Both read-only routes — a public link, and a Can view collaborator opening a deck from Shared with me — land on the same viewer: the real renderers on the real paper, with no editor chrome. It carries the deck's title, a slide counter, and a Made with Quodra link.
→,↓,PageDownorSpacemoves forward;←,↑orPageUpmoves back. Clicking the slide advances it.- The viewer does not run Python or the dependency engine. Supported equation results, plots and legends are derived locally from saved inputs and settings. Python output that exists only in the author's running session may not be available to the viewer.
- The viewer has slide navigation but no editing or comment controls. It loads a version when opened; reload to fetch subsequent saved changes.
The public sample demo is a separate experience with selected live controls. A demo, a shared deck viewer, and the editor's presenter view do not have the same capabilities.
Sample decks can't be shared. The dialog explains that everyone already has the sample, and that your first edit mints your personal copy, which then syncs and shares normally.
Working together#
When realtime collaboration is available and connected, the editor can show:
- Presence — avatars in the top bar, up to three of them, then a +N for the rest, and a count reading editing. When you're alone the bar shows nothing at all.
- Live cursors — each peer's pointer drawn on the slide in their own colour, sent in slide coordinates so it lands on the same object however either of you is zoomed. Cursors are rate-limited to
20updates per second and expire after8 sof silence, so a closed laptop doesn't leave a ghost behind. - Selection halos — an outline and a name badge on whatever a colleague has selected. These are advisory coordination indicators, not exclusive locks.
- Live edits — their changes appear as they happen, no reload.
Colours are deterministic: the same person is the same colour on every machine, drawn from eight hues chosen to stay legible on paper and on the dark chrome. Quodra's own violet is excluded on purpose, so a collaborator's cursor never looks like a piece of the interface.
Per-user undo#
Undo uses your local edit history. Changes received from other people are not added to that history. Undo still changes the current shared document, so it can affect an object a colleague has subsequently edited. Coordinate changes to the same objects and use revision history when you need to recover an earlier version.
Comments#
Open Comments from the editor. The drawer has two tabs, Comments and Activity, and takes the place of the inspector rather than floating over your work.
- Leave a comment. With nothing selected the composer reads Comment on this slide…; select an object and it becomes Comment on the selected object…, with the hint Anchored to the selected object — it follows if you move it. Press Comment to post, or ⌘⏎ from the box — plain Enter keeps writing, because review comments run long.
- Reply. Every thread has a Reply button and its own composer, so a point can be answered in place.
- Resolve. Anyone reading the deck can mark a thread resolved, and reopen it again. A resolved thread keeps a resolved tag.
- Delete your own. The delete button appears only on comments you wrote; the database enforces the same rule, so the button is never offered where it would fail.
The anchor is the object, not the slide. Move an equation to another slide and its comments travel with it; reorder the deck and nothing needs rewriting. Delete the object and the thread is marked object deleted rather than dropped — it stays visible on every slide so a colleague's review is never quietly discarded.
An object with unresolved comments carries a numbered pin; clicking it opens the drawer. Resolved threads are left out of that count, because a badge that keeps counting settled conversations trains people to ignore it.
A thread is always in one of three states, and the card says which:
| State | What it means |
|---|---|
| open | Nobody has settled it yet — this is what the pin counts. |
| resolved | Someone marked it done. It stays readable, and can be reopened. |
| object deleted | The object it was about is gone. The thread survives, shown on every slide. |
Comments are stored with the cloud collaboration data so they remain available when an editor returns later. Threads for the slide you're on are shown together with any orphans, and an empty slide says so: No comments on this slide. Select an object to comment on it, or leave a note for the slide.
Activity#
The activity feed records what people did — "added a chart," "deleted a heading" — in words, not raw edits, so you can catch up on what changed while you were away. Lines are written from the shape of the change: added a slide, deleted a slide, added, deleted, edited, moved, restyled, reordered the slide, each naming the object by its own text where it has any.
It is deliberately coarse. A run of identical edits inside about three quarters of a minute folds into one line, so nudging a chart into place is one event rather than a dozen. Times are short: just now, then minutes, hours, days. An empty feed says so: Nothing yet. Every change to this deck shows up here, with who made it.
Staying in sync#
Edits travel as patches the moment they happen, and the durable record underneath is still the revision-checked whole-document save with its offline queue. The two paths are never asked to do each other's job.
While connected peers are present, Quodra also checks the cloud copy when local work is saved and sync is healthy. This helps recover changes missed during a connection drop. Concurrent edits can still require conflict resolution; presence and cursors are not proof that both devices have saved the same version.
The save badge in the top bar is the honest report: Saved, Saving…, Syncing…, Offline, Conflict, or Error. Click it for the Save center, which explains that your device copy is saved first and that cloud confirmation and revision history are tracked separately. Offline it reads Saved on this device — waiting for a connection, and your edits queue.
If two versions genuinely diverge, the Save center says Two versions changed and tells you which cloud revision differs, adding that neither version will be overwritten until you choose. You pick Use cloud version or Keep this device. Cloud revisions are listed below with a Restore for each; restoring creates a new revision, and history is never rewritten.
Revoking someone's access removes them from the live room as well as the document.
Next#
- Presenting — take the finished deck to a room.
- Circuit Studio — the same collaboration, on a schematic.