Cargo.lock | 3573 ++++++++++++++++++++++++++++---- Cargo.toml | 4 + 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 | 21 + crates/canvas/src/bin/layout_probe.rs | 116 ++ crates/canvas/src/bin/page_probe.rs | 144 ++ crates/canvas/src/document.rs | 698 +++++++ crates/canvas/src/editor.rs | 3139 ++++++++++++++++++++++++++++ crates/canvas/src/layout.rs | 657 ++++++ crates/canvas/src/lib.rs | 6 + crates/canvas/src/outline.rs | 646 ++++++ crates/canvas/src/page.rs | 665 ++++++ crates/canvas/src/text.rs | 543 +++++ crates/onestore-offline/src/outline.rs | 2 +- crates/onestore-offline/tests/sync/outline.rs | 16 +- crates/onestore/src/document.rs | 4 + crates/onestore/tests/outline.rs | 12 +- fuzz/Cargo.lock | 625 +++++- fuzz/Cargo.toml | 8 + fuzz/fuzz_targets/canvas_editor.rs | 192 ++ tools/canvas/README.md | 232 +++ tools/canvas/baseline_fixture.py | 69 + tools/canvas/build_macos.py | 43 + tools/canvas/capture_interaction.py | 56 + tools/canvas/capture_view.py | 106 + tools/canvas/compare.py | 143 ++ tools/canvas/compare_baselines.py | 118 ++ tools/canvas/compare_page.py | 89 + tools/canvas/compare_page_pdf.py | 116 ++ tools/canvas/compare_scroll.py | 70 + tools/canvas/core_text_probe.swift | 91 + tools/canvas/native_fixture.py | 54 + tools/canvas/range_stress.py | 68 + tools/canvas/test_compare.py | 67 + tools/canvas/test_compare_baselines.py | 80 + tools/canvas/test_compare_page.py | 63 + tools/canvas/test_compare_page_pdf.py | 78 + tools/canvas/test_compare_scroll.py | 41 + 49 files changed, 18683 insertions(+), 379 deletions(-)