Canvas live in-view multiplayer #46

Closed
opened 2026-09-21 18:03:44 +01:00 by cruelacid · 1 comment
Owner

Part of #37. Depends on canvas structural merge; a separate decision, not implied by it.

What Relay does

Cursors, viewports, selections and in-progress connections on a shared canvas.
Note their own implementation sits behind a labs flag enableCanvasPresence
that defaults to off (src/flags.ts, read 21 Sep 2026) — the merge shipped
default-on, the presence did not.

The cost to weigh

This requires patching leaf.view.canvas, which is undocumented Obsidian
internals. It will break on Obsidian releases, and our minAppVersion is
deliberately conservative (1.13.7, the one version the suite runs nightly).
That is a standing maintenance obligation, not a one-off build.

Recommendation

Do the merge first and ship it. Take this one only if users ask for it after the
merge lands — the merge is what makes canvas collaboration work; this makes it
feel live.

Risk

risk:none to the server; high upkeep in the client.

Verification

Pin the Obsidian version the internals were read against, and fail loudly rather
than silently when the shape changes.

Part of #37. Depends on canvas structural merge; **a separate decision, not implied by it.** ## What Relay does Cursors, viewports, selections and in-progress connections on a shared canvas. Note their own implementation sits behind a `labs` flag `enableCanvasPresence` that **defaults to off** (`src/flags.ts`, read 21 Sep 2026) — the merge shipped default-on, the presence did not. ## The cost to weigh This requires patching `leaf.view.canvas`, which is undocumented Obsidian internals. It will break on Obsidian releases, and our `minAppVersion` is deliberately conservative (`1.13.7`, the one version the suite runs nightly). That is a standing maintenance obligation, not a one-off build. ## Recommendation Do the merge first and ship it. Take this one only if users ask for it after the merge lands — the merge is what makes canvas collaboration *work*; this makes it *feel* live. ## Risk `risk:none` to the server; high upkeep in the client. ## Verification Pin the Obsidian version the internals were read against, and fail loudly rather than silently when the shape changes.
Author
Owner

Moved to the Vikunja board as NEC-23: https://projectron.nerchure.com/tasks/23

Moved to the Vikunja board as **NEC-23**: https://projectron.nerchure.com/tasks/23
Sign in to join this conversation.
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Nectenda/nectenda#46
No description provided.