Cargo.lock | 85 +- crates/canvas-app/Cargo.toml | 23 - crates/canvas-app/src/accessibility.rs | 1312 --------- crates/canvas-app/src/macos.rs | 102 - crates/canvas-app/src/main.rs | 2077 --------------- crates/canvas-app/src/profile.rs | 192 -- crates/canvas-gpu/Cargo.toml | 18 - crates/canvas-gpu/examples/render_page.rs | 125 - crates/canvas-gpu/src/canvas.wgsl | 19 - crates/canvas-gpu/src/lib.rs | 1346 ---------- crates/canvas-gpu/src/page.rs | 923 ------- crates/canvas-gpu/src/profile.rs | 150 -- crates/canvas-gpu/src/tags.rs | 120 - crates/canvas/Cargo.toml | 19 +- crates/canvas/assets/tags/checkbox.svg | 24 + crates/canvas/assets/tags/checkmark.svg | 9 + crates/canvas/assets/tags/music.svg | 14 + crates/canvas/assets/tags/question.svg | 9 + crates/canvas/examples/render_page.rs | 125 + crates/canvas/src/bin/layout_probe.rs | 2 +- crates/canvas/src/bin/page_probe.rs | 29 +- crates/canvas/src/date.rs | 247 ++ crates/canvas/src/document.rs | 899 +++++-- crates/canvas/src/editor.rs | 4532 ++++++++++++++++++++++++++++++-- crates/canvas/src/editor/page.rs | 313 +++ crates/canvas/src/editor/table.rs | 706 +++++ crates/canvas/src/gpu/canvas.wgsl | 87 + crates/canvas/src/gpu/mod.rs | 1546 +++++++++++ crates/canvas/src/gpu/page.rs | 1553 +++++++++++ crates/canvas/src/gpu/profile.rs | 151 ++ crates/canvas/src/gpu/tags.rs | 132 + crates/canvas/src/layout.rs | 201 +- crates/canvas/src/lib.rs | 4 + crates/canvas/src/outline.rs | 672 ++++- crates/canvas/src/page.rs | 1032 ++++++-- crates/canvas/src/text.rs | 25 +- crates/snowbound/Cargo.toml | 22 + crates/snowbound/src/accessibility.rs | 1467 +++++++++++ crates/snowbound/src/macos.rs | 377 +++ crates/snowbound/src/main.rs | 3126 ++++++++++++++++++++++ crates/snowbound/src/profile.rs | 192 ++ crates/snowbound/src/scroll.rs | 133 + fuzz/Cargo.lock | 26 +- fuzz/Cargo.toml | 2 +- fuzz/fuzz_targets/canvas_editor.rs | 505 +++- tools/canvas/README.md | 74 +- tools/canvas/build_macos.py | 10 +- 47 files changed, 17497 insertions(+), 7260 deletions(-)