Cargo.lock | 1 + apps/ios/Snowbound/CanvasView.swift | 182 +++- apps/ios/Snowbound/Lists.swift | 8 +- apps/ios/Snowbound/Notebooks.swift | 6 +- apps/ios/Snowbound/PageViewController.swift | 11 +- apps/ios/Snowbound/Prototypes.swift | 20 +- apps/ios/Snowbound/Sync.swift | 5 +- crates/canvas/src/editor.rs | 1729 +++++++++++++++++++++++--------- crates/canvas/src/editor/link.rs | 92 +- crates/canvas/src/gpu/page.rs | 116 ++- crates/canvas/src/interaction/accessibility.rs | 158 ++- crates/canvas/src/interaction/ink.rs | 3 + crates/canvas/src/interaction/mod.rs | 525 ++++++++-- crates/canvas/src/interaction/profile.rs | 10 +- crates/canvas/src/interaction/tests.rs | 729 +++++++++++++- crates/canvas/src/reading.rs | 180 +++- crates/mobile/Cargo.toml | 1 + crates/mobile/include/snowbound.h | 7 +- crates/mobile/src/lib.rs | 403 +++++--- crates/mobile/src/library.rs | 14 +- crates/mobile/src/recording.rs | 2 +- crates/mobile/src/tests.rs | 979 +++++++++++++++++- crates/notebook/src/session.rs | 27 +- crates/notebook/src/session/tests.rs | 46 + crates/snowbound/src/main.rs | 9 +- 25 files changed, 4303 insertions(+), 960 deletions(-)