figcraft/docs
BFlat 94ff3d4df6
M9: collaboration: per-user undo, rejections, reconnect (#105)
* M9: collaboration: per-user undo, rejections, reconnect

Step 3 of docs/collab-protocol.md, the parts that don't need the transport:

- Per-user undo and redo (figcraft_collab::Client::{undo, redo}): each undoable batch is a step
  (values before/after by target, nodes created/deleted). Others' batches ordered after the step
  take its targets for good; creates invert to deletes (not when others built inside), deletes
  re-create the subtree. An undo or redo waits for every earlier batch and is remade from the
  confirmed state when it goes out; derived data follows as a follow-up batch.
- Rejections: refused batches leave the history (with an undo waiting on them) and queue a
  Notice; the engine shows it through Session::message (the UI's toast).
- Offline queue and reconnect: Hello.resume {session, client_id, seq}; the server keeps a
  bounded log and answers with the missed batches or a snapshot, plus what it did with the
  client's batches (processed {last_batch, refused}); queued batches then go out.
  Server::state / restore persist the session (client-id counter, log, session id).
- Presence carries editing_text {node, caret, selection}.
- Engine: documents in a live session (LiveDoc, Session::collab_*): commands, gestures and
  groups sync as one step each; edit.undo / edit.redo route to the per-user history; remote
  edits show under a gesture in progress. Outside a session snapshot undo is unchanged.
- Sim: dropped connections, undo/redo, and a checker that no undo reverts a change by someone
  else its author had seen. New tests in undo_tests, reconnect_tests, collab_live_tests,
  collab_undo_tests.
- CLAUDE.md / AGENTS.md: collab in the L2 layer list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* M9: collaboration wording in the progress docs after per-user undo and reconnect

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* M9: protocol doc: what the engine's live-session tests cover

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 03:19:24 +07:00
..
brand M0.1-M0.3: workspace, licences, geom/color/doc crates 2026-10-09 12:01:57 -04:00
architecture.md M9: live sessions: host from the app, invite links, live cursors and presence (#104) 2026-10-11 02:40:59 +07:00
auto-layout-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
cli.md M6: PDF print options (bleed, marks, CMYK) (#92) 2026-10-10 20:50:29 +07:00
collab-protocol.md M9: collaboration: per-user undo, rejections, reconnect (#105) 2026-10-11 03:19:24 +07:00
collaboration-parity.md M9: collaboration: per-user undo, rejections, reconnect (#105) 2026-10-11 03:19:24 +07:00
components-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
contributors.md About: Contributors and Models tabs with full credits; bump version to 0.2.0 (from 0.1.0) for release 2026-10-09 21:10:33 -04:00
control-protocol.md M9: live sessions: host from the app, invite links, live cursors and presence (#104) 2026-10-11 02:40:59 +07:00
dev-mode-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
file-format-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
gaps.md M9: collaboration: per-user undo, rejections, reconnect (#105) 2026-10-11 03:19:24 +07:00
hardware-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
localization-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
mcp.md M9: collaboration: per-user undo, rejections, reconnect (#105) 2026-10-11 03:19:24 +07:00
parity-checklist.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
plugins.md M7: WASM plugins (#101) 2026-10-11 00:42:17 +07:00
prototyping-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00
release-playbook.md M0.9: MCP server + figcraft-cli, PDF export, web app, release/CI packaging, vector edit mode, workspace lint cleanup 2026-10-09 13:31:53 -04:00
releasing.md M0.9: MCP server + figcraft-cli, PDF export, web app, release/CI packaging, vector edit mode, workspace lint cleanup 2026-10-09 13:31:53 -04:00
roadmap.md M9: collaboration: per-user undo, rejections, reconnect (#105) 2026-10-11 03:19:24 +07:00
target-app-parity.md M9: collaboration: per-user undo, rejections, reconnect (#105) 2026-10-11 03:19:24 +07:00
ui-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#100) 2026-10-10 14:29:24 -04:00