Cargo.lock | 27 + arc/platforms.md | 18 + crates/canvas/Cargo.toml | 2 + crates/canvas/assets/fonts/Caladea-Bold.ttf | Bin 0 -> 84492 bytes crates/canvas/assets/fonts/Caladea-BoldItalic.ttf | Bin 0 -> 83356 bytes crates/canvas/assets/fonts/Caladea-Italic.ttf | Bin 0 -> 83780 bytes crates/canvas/assets/fonts/Caladea-OFL.txt | 93 +++ crates/canvas/assets/fonts/Caladea-Regular.ttf | Bin 0 -> 81600 bytes crates/canvas/src/editor/format.rs | 4 +- crates/canvas/src/editor/recording.rs | 2 +- crates/canvas/src/gpu/page.rs | 19 +- crates/canvas/src/gpu/page/background.rs | 6 +- crates/canvas/src/gpu/page/picture.rs | 8 +- crates/canvas/src/interaction/mod.rs | 6 +- crates/canvas/src/layout.rs | 17 +- crates/draw/Cargo.toml | 2 + crates/draw/src/edit.rs | 6 +- crates/notebook/Cargo.toml | 11 + crates/notebook/src/background.rs | 296 +++++---- crates/notebook/src/bin/onestore-diagnostic.rs | 7 +- crates/notebook/src/discover/source.rs | 15 +- crates/notebook/src/fs.rs | 21 + crates/notebook/src/fs/web.rs | 722 ++++++++++++++++++++ crates/notebook/src/fs/web/sqlite.rs | 143 ++++ crates/notebook/src/lib.rs | 18 +- crates/notebook/src/location.rs | 42 +- crates/notebook/src/package.rs | 8 +- crates/notebook/src/session.rs | 69 +- crates/notebook/src/sidecar.rs | 2 +- crates/notebook/src/task.rs | 159 +++++ crates/notebook/src/worker.rs | 221 ++++--- crates/notebook/src/working.rs | 156 ++++- crates/onestore/Cargo.toml | 2 + crates/onestore/src/create.rs | 2 +- crates/onestore/src/lib.rs | 1 + crates/snowbound/Cargo.toml | 29 +- crates/snowbound/src/attachment.rs | 10 +- crates/snowbound/src/commands.rs | 2 +- crates/snowbound/src/guide.rs | 22 +- crates/snowbound/src/history.rs | 2 +- crates/snowbound/src/library.rs | 88 ++- crates/snowbound/src/main.rs | 325 +++++---- crates/snowbound/src/manage.rs | 43 +- crates/snowbound/src/media_web.rs | 61 ++ crates/snowbound/src/menus.rs | 12 +- crates/snowbound/src/pane.rs | 2 +- crates/snowbound/src/paste.rs | 24 +- crates/snowbound/src/prefetch.rs | 4 + crates/snowbound/src/print.rs | 24 +- crates/snowbound/src/print_web.rs | 18 + crates/snowbound/src/recording.rs | 13 +- crates/snowbound/src/recycle.rs | 14 +- crates/snowbound/src/save_as.rs | 4 +- crates/snowbound/src/search.rs | 97 ++- crates/snowbound/src/server.rs | 9 +- crates/snowbound/src/settings.rs | 14 +- crates/snowbound/src/spell_web.rs | 8 + crates/snowbound/src/surface.rs | 61 +- crates/snowbound/src/sync.rs | 8 +- crates/snowbound/src/tags.rs | 22 +- crates/snowbound/src/themes.rs | 10 +- crates/snowbound/src/undo.rs | 20 +- crates/snowbound/src/unpack.rs | 10 +- crates/snowbound/src/unread.rs | 16 +- crates/snowbound/src/update.rs | 57 +- crates/snowbound/src/watch_web.rs | 13 + crates/snowbound/src/web.rs | 1126 ++++++++++++++++++++++++++++++++ crates/snowbound/web/glue.js | 342 ++++++++++ crates/snowbound/web/index.html | 77 +++ crates/ui/Cargo.toml | 2 + crates/ui/src/lib.rs | 3 +- tools/TESTING.md | 1 + tools/canvas/README.md | 2 +- tools/ci.py | 20 + tools/release_web.py | 109 ++++ 75 files changed, 4080 insertions(+), 749 deletions(-)