feat: Live Share serves a notebook's storage to guests who meet its host by code
A host serves its notebook's storage verbs (notebook::live::share::Host) to
the peers in the share's room; a guest runs the replica, queue and merge it
runs on an SMB share against them (Notebook::open_hosted,
Section::resume_hosted, Background::hosted), so offline queueing, rebases and
conflict pages work as there and the host's files are written only by its own
storage. A guest meets the host in a short code's room (SPAKE2 on its words
and any password, numbered by the relay or by the host off it) and is
welcomed with the share's room and its random secret; a new share has a new
secret. Guests' commits are checked on the host's image first, paths outside
the notebook and presence's secret are refused, and large bodies travel in
answered 128 KiB chunks so a relay never queues much for a slow peer. A
notebook opens from its last listing while the host is away.
Presence meets in a room whose random secret is kept in .snowbound/live.json
(Notebook::presence_room) in place of the TOC's identity, which every copy of
a notebook holds for good. Live events now carry frames, meetings and
departures, Live::leave says Bye, and the joining end of a code gives up
after one wrong try, as the relay counts each one. onestore::Transaction gains
a byte form to carry a commit to another machine.
Assisted-by: claude-opus-5.5
e01c7cf178clover caruso committed on 10/3/2026, 2:55:46 AMparente9e7245