Cargo.lock | 13 + apps/ios/Info.plist | 22 ++ apps/ios/Snowbound-Bridging-Header.h | 1 + apps/ios/Snowbound.xcodeproj/project.pbxproj | 291 ++++++++++++++ apps/ios/Snowbound/App.swift | 130 ++++++ apps/ios/Snowbound/CanvasView.swift | 449 +++++++++++++++++++++ apps/ios/Snowbound/Script.swift | 56 +++ apps/ios/build-rust.sh | 14 + crates/canvas/examples/render_page.rs | 4 +- crates/canvas/src/document.rs | 97 ++++- crates/canvas/src/editor.rs | 132 +++++-- crates/canvas/src/editor/evidence.rs | 63 ++- crates/canvas/src/editor/format.rs | 141 +++++-- crates/canvas/src/editor/table.rs | 11 +- crates/canvas/src/gpu/mod.rs | 13 +- crates/canvas/src/gpu/page.rs | 359 ++++++++++++++--- crates/canvas/src/gpu/page/background.rs | 115 +----- crates/canvas/src/gpu/page/picture.rs | 173 ++++++++ crates/canvas/src/gpu/profile.rs | 1 + crates/canvas/src/interaction/accessibility.rs | 35 ++ crates/canvas/src/interaction/mod.rs | 260 ++++++++---- crates/canvas/src/interaction/scroll.rs | 13 +- crates/canvas/src/interaction/tests.rs | 237 ++++++++++- crates/canvas/src/language.rs | 162 ++++++++ crates/canvas/src/layout.rs | 21 + crates/canvas/src/lib.rs | 1 + crates/canvas/src/outline.rs | 384 ++++++++++++++++-- crates/canvas/tests/reopen.rs | 11 +- crates/canvas/tests/structural_roundtrip.rs | 577 +++++++++++++++++++++++++++ crates/draw/Cargo.toml | 3 +- crates/draw/src/edit.rs | 104 +++++ crates/draw/src/render.rs | 246 +++++++++--- crates/mobile/Cargo.toml | 17 + crates/mobile/include/snowbound.h | 40 ++ crates/mobile/src/lib.rs | 676 ++++++++++++++++++++++++++++++++ crates/snowbound/src/macos.rs | 81 +++- crates/snowbound/src/main.rs | 271 +++++++++---- crates/ui/examples/popups.rs | 11 +- crates/ui/src/layout.rs | 3 +- crates/ui/src/lib.rs | 88 +++-- crates/ui/src/list.rs | 31 +- crates/ui/src/popup.rs | 11 + crates/ui/src/shell.rs | 14 +- crates/ui/src/tests.rs | 118 +++++- crates/ui/src/text.rs | 26 +- crates/ui/src/theme.rs | 13 +- crates/ui/src/widgets.rs | 27 +- 47 files changed, 5026 insertions(+), 540 deletions(-)