People working in the same template edit it together: each edit reaches the others within a moment, element by element. Off unless the host turns it on.
collaboration.edit_together option everyone who may edit edits
at once; nobody waits for a pen. Moving, resizing, restyling, adding, deleting, grouping and
reordering elements reach the others within a moment, and so do a spread's bleed, colour, name
and lock, and adding, deleting, moving and keeping together pages. Two people changing different
properties of one element both keep their change, and a window that joins late or loaded an older
version is brought up to date. Undo takes back your own step only, and never over what someone
else changed since. One window saves for everyone (editing.writer), so a host autosaves only
there. See "Editing together" in docs/Collaboration.md.ui.get_editing_held_reason(), 'others' or 'view_only' (docs/API-EditorUI.md).typograph_document_changed has a new reason, 'remote', for someone else's change arriving
while editing together (docs/DocumentEvents.md). A host that switches on the reason should treat
it as a change to save, in the window that saves for everyone. Without edit_together it never fires.people[].color and editing.by.color carry that colour, no longer the token's own.edit_together) is overwritten by the room's next save. A window
editing together waits while a window on the pen edits in the same room.feat/TYP-919-element-sync): src/elementsync.ts keeps the shared Y.Doc
in the B2 model of the sync design (a node per element with its properties, parent, fractional
position and tombstone, repaired on read; a map of each spread's own properties), writes canvas's
typograph_element_changes into it and applies the others' changes with canvas's
apply_remote_changes(), holding them back during a drag (is_pointer_down()). Needs canvas
feat/TYP-919-apply-remote, so the canvas pin moves with it. Vitest elementsync.test.ts.feat/TYP-919-share-pages): the spread list is shared the same way, each
spread a node with its own properties, a fractional position and a tombstone; canvas's
typograph_structure_changes is written into it and apply_remote_structure() rebuilds the
others' spread list in place. Needs canvas feat/TYP-919-share-pages. Vitest pagesync.test.ts.