feat: live presence between Snowbounds on one notebook (#35, feature `live`)

Peers find each other by mDNS (`_snowbound._tcp`) or connect directly, meet through
SPAKE2 on a secret both hold (the notebook TOC identity, or a code typed on both), then
exchange AES-256-GCM frames of a kind and a CBOR map that later versions extend by kinds
and fields. Hello carries a name and the account picture; Presence carries section, page
and caret as text object + UTF-16 offset. The app (only with SNOWBOUND_LIVE=network or
loopback) draws avatars beside the search box, dots on page tabs and peers' carets,
flags and selections; clicking an avatar opens their page. TextOutline::caret_at now holds
the caret geometry the editor used inline. Design: resources/live-share.md.

Assisted-by: claude-opus-5.5
ab00bdcf0cclover caruso committed on 10/2/2026, 9:58:06 AMparentf3bfb4d
13 files changedLine totals unavailable