The same-network WebRTC feature now shares a live board, not a clipboard of items. When a signed-out peer accepts your invite, you co-edit your board together in real time until the session ends.
Added / Changed
- Live board co-editing. The requester is the host — edits land on their
real active board; the accepter is the guest — their canvas switches to a
throwaway space mirroring the host's board, which is discarded on disconnect
(the host keeps the board with all changes). Cards and connectors sync.
lib/use-local-peers.tsreworked from a tray to a board session: roles (host/guest),sendBoard()(debounced, guest-gated until the host's first snapshot so an empty view can't wipe the board), andremoteBoardto apply.lib/webrtc.tsis now a generic chunked-JSON channel (replaces the item/file-binary protocol) so a board snapshot with inline image data URLs transfers transparently.components/Canvas.tsxgainedgetBoard()/receiveEdges()and anonEdgesSynccallback (local connector changes broadcast; remote-applied ones don't echo).app/page.tsxrenders the guest's shared board in place of their own with a "Live in X's board" banner;components/LocalPeersDock.tsxshows the nearby/invite/incoming UI and a host "Sharing…" pill.
- Superseded: the ephemeral item tray from the 2026-06-23 entry below
(
SharedTray, tray drag-to-canvas, the WebRTC file-chunk protocol) is replaced by live board sharing. Drag-and-drop of files/links/text onto the canvas is unchanged.
Known limitations
- Full-snapshot last-writer-wins sync (fine for two ephemeral peers); a rare concurrent edit can be lost. Image/file cards travel inline as data URLs.