When several people edit a template together, a colour, tint or opacity now changes on everyone's screen while someone holds the slider or the swatch, not only when they let go.
edit_together, the others see an element's colour,
tint or opacity change as it is being dragged. Only the values travel, at most 20 times a second,
and each window draws the newest once a frame; the change reaches the document once, on release,
as one undo step. Past 50 elements at once the others see it when it lands. Only people who may
edit send it. See Collaboration.For live colours and the lighter traffic nothing changes for a host: no new option, event or key. An editor without this sends no preview and ignores the others', so a room with older editors in it keeps working.
For the full room, a host that draws its own chrome gets:
typograph_collaboration_changed with status: 'full' while the window waits for a seat, and a
new seats in its detail: how many people the room seats, null otherwise.gEditorUI.get_editing_held_reason() answers 'room_full', and gEditorUI.get_room_seats() the
number. The editor's own mode control shows the notice on screen; a host that draws its own
(set_available_modes(modes, { render: false })) shows it from these.preview in its awareness state while the mouse
button is held, from canvas's preview_properties(), and clears it on release. Canvas draws the
others' preview with set_remote_presence() without touching the document (canvas
docs/presence.md). The collaboration protocol version stays the same: preview is a new
optional field.2b5ed74 to fab0216, which also brings canvas #256: how a form offers
a choice list (TYP-1280).send_only_own_awareness() skips those. The pointer tick now also
carries moving and preview, set with one setLocalState(). collab-service no longer sends a
change back to its sender and limits a socket to 40 awareness messages a second, which an editor
from before this never reaches: either can ship first.room-full: 8 people in the room. The editor leaves the room, holds editing with the reason room_full, and starts a
new provider after 10 to 12 seconds, each time with a fresh token from the host. Another refusal
while it waits makes it denied, editing alone, as before. An editor from before this shows a full
room as denied. Either repository can ship first: without collab-service's limit nobody is
refused.