Cargo.lock | 1 + crates/notebook/src/live.rs | 2 +- crates/notebook/src/live/code.rs | 148 ----------------------------- crates/relay/Cargo.toml | 8 ++ crates/relay/README.md | 50 ++++++++-- crates/relay/deploy/snowbound-relay.service | 2 +- crates/relay/deploy/snowbound-site.service | 33 +++++++ crates/relay/src/code.rs | 148 +++++++++++++++++++++++++++++ crates/relay/src/lib.rs | 2 + crates/relay/src/main.rs | 6 +- crates/relay/src/site.rs | 161 ++++++++++++++++++++++++++++++++ crates/relay/src/site_main.rs | 72 ++++++++++++++ crates/relay/tests/site.rs | 107 +++++++++++++++++++++ crates/snowbound/linux/snowbound.desktop | 4 +- crates/snowbound/src/desktop_linux.rs | 2 +- crates/snowbound/src/library.rs | 2 +- crates/snowbound/src/live.rs | 36 +++++++ crates/snowbound/src/macos.rs | 20 ++++ crates/snowbound/src/main.rs | 6 ++ crates/snowbound/src/share.rs | 47 +++++++--- crates/snowbound/src/sidebar.rs | 4 + crates/snowbound/src/windows.rs | 8 ++ crates/snowbound/tests/replay.rs | 3 +- tools/canvas/build_macos.py | 2 + tools/release_relay.py | 16 ++-- tools/release_web.py | 26 ++++-- tools/web/serve.py | 31 ------ 27 files changed, 725 insertions(+), 222 deletions(-)