openpencil/crates
Kayshen-X 08a26548fe feat(web): daemon-side collaboration service behind /api/collab routes
Give the serve-web daemon a real collaboration runtime so browser and
VSCode-webview editors can drive public-relay sessions through REST,
mirroring the web_auth proxy pattern:

- WebCollabState + a dedicated driver thread (wake channel + 250/100ms
  tick) run CollabRuntime against the daemon document; documentRevision
  and collabSeq are separate so presence/UI changes never trigger a
  whole-document pull
- versioned wire DTOs (CollabStateWire/CollabActionWire, wireVersion 1)
  map through explicit validation onto the internal UI types instead of
  serde on opaque internals; GET state / POST action / POST presence
  routes ride the existing /api/ auth + origin guards
- document pushes during an Active session ingest through a split
  PreparedDocument::prepare (off-lock validation) +
  install_prepared_document (infallible, in-generation) inside a
  begin/finish_local_edit capture; identical pushes produce no txn
- gate_daemon_mutation centralizes session-time refusals (409
  collab-readonly/busy/active) across document push, sync-reset,
  open-recent, /mcp JSON-RPC, and AI apply paths, matching the desktop
  CollabGatePolicy semantics
2026-08-07 21:14:28 +08:00
..
op-acp
op-ai feat(desktop): one-click mcp registration for twelve clis 2026-08-05 00:52:13 +08:00
op-ai-skills fix(ai): require first-class styled interactive widgets 2026-08-07 02:00:23 +08:00
op-auth-bridge chore: bump version to 0.8.3 2026-08-06 21:15:39 +08:00
op-chrome-extension-core feat(web): chrome extension offline download emits a ready-to-open .op file 2026-08-05 22:15:09 +08:00
op-cli chore: bump version to 0.8.3 2026-08-06 21:15:39 +08:00
op-codegen
op-collab
op-collab-host fix(desktop): make collab avatar test-registry guard reentrant 2026-08-07 21:14:07 +08:00
op-collab-policy-file
op-collab-relay-client
op-collab-relay-control-plane refactor(collab): split the control-plane pairing wire tests 2026-08-03 21:05:11 +08:00
op-collab-relay-locator-hsm
op-collab-relay-locator-server
op-collab-relay-protocol
op-collab-relay-server
op-collab-smoke
op-collab-transport fix(collab): close a gesture whose release never arrives 2026-08-03 21:15:32 +08:00
op-config-store
op-design-lint fix(agent): repair text that is invisible against its own background 2026-08-02 21:21:13 +08:00
op-editor-core feat(web): daemon-side collaboration service behind /api/collab routes 2026-08-07 21:14:28 +08:00
op-editor-host-core feat(desktop): one-click mcp registration for twelve clis 2026-08-05 00:52:13 +08:00
op-editor-ui fix(editor): render interactive widgets with authored design tokens 2026-08-07 02:00:23 +08:00
op-figma
op-git
op-host-desktop refactor(desktop): extract collab runtime into op-collab-host crate 2026-08-07 19:55:26 +08:00
op-host-native refactor(desktop): extract collab runtime into op-collab-host crate 2026-08-07 19:55:26 +08:00
op-host-services feat(web): daemon-side collaboration service behind /api/collab routes 2026-08-07 21:14:28 +08:00
op-host-web feat(ai): import DESIGN.md styles into the asset center 2026-08-07 02:00:23 +08:00
op-host-web-server
op-html fix(html): make web-snapshot text, icon and layout capture faithful 2026-08-05 22:15:09 +08:00
op-i18n feat(ai): import DESIGN.md styles into the asset center 2026-08-07 02:00:23 +08:00
op-mcp fix(agent): inherit artboards for sibling screen continuations 2026-08-07 02:00:23 +08:00
op-opmerge
op-orchestrator fix(agent): inherit artboards for sibling screen continuations 2026-08-07 02:00:23 +08:00
op-pen-loader feat(renderer): carry interactive widget semantics through scenes 2026-08-07 02:00:23 +08:00
op-process-io
op-rpc-transport
op-smoke fix(agent): inherit artboards for sibling screen continuations 2026-08-07 02:00:23 +08:00
op-util
op-web-sdk feat(editor): give decks a full workspace of navigation, generation and export surfaces 2026-08-05 00:57:49 +08:00
CLAUDE.md feat(editor): make the slides rail the deck's only navigator 2026-08-07 02:00:22 +08:00