.gitignore | 1 + Cargo.toml | 5 + apps/ios/Snowbound/Lists.swift | 2 +- apps/ios/Snowbound/Notebooks.swift | 11 +- corpus/search/README.md | 27 + corpus/search/notebook/Garden.one | Bin 0 -> 181224 bytes corpus/search/notebook/Home.one | Bin 0 -> 17104 bytes corpus/search/notebook/Journal.one | Bin 0 -> 17376 bytes corpus/search/notebook/Kitchen.one | Bin 0 -> 22488 bytes corpus/search/notebook/Open Notebook.onetoc2 | Bin 0 -> 5856 bytes corpus/search/notebook/Reading.one | Bin 0 -> 16792 bytes corpus/search/notebook/Trips.one | Bin 0 -> 17336 bytes crates/canvas/src/editor.rs | 122 +- crates/canvas/src/interaction/mod.rs | 30 +- crates/canvas/src/interaction/tests.rs | 5 +- crates/canvas/src/layout.rs | 21 +- crates/canvas/src/search.rs | 47 +- crates/canvas/tests/ops_differential.rs | 20 +- crates/canvas/tests/search.rs | 216 ++++ crates/canvas/tests/structural_roundtrip.rs | 23 +- crates/mobile/src/lib.rs | 25 +- crates/mobile/src/library.rs | 206 ++-- crates/mobile/src/tests.rs | 14 +- crates/notebook/README.md | 4 + crates/notebook/src/session.rs | 34 + crates/notebook/tests/assets.rs | 6 +- crates/notebook/tests/cache.rs | 15 +- crates/notebook/tests/session.rs | 6 +- crates/notebook/tests/sync.rs | 14 +- crates/notebook/tests/sync/tree.rs | 5 +- crates/notebook/tests/sync_formatting.rs | 7 +- crates/notebook/tests/sync_outline.rs | 2 + crates/notebook/tests/sync_page.rs | 4 +- crates/notebook/tests/sync_worker.rs | 63 +- crates/onestore/src/active.rs | 2 + crates/onestore/src/create.rs | 13 + crates/onestore/src/lib.rs | 3 + crates/onestore/src/op/tests.rs | 10 +- crates/onestore/src/section.rs | 7 +- crates/onestore/tests/commit.rs | 98 ++ crates/onestore/tests/formatting.rs | 4 +- crates/onestore/tests/insertion.rs | 4 +- crates/onestore/tests/outline.rs | 4 +- crates/onestore/tests/page_deletion.rs | 12 +- crates/onestore/tests/page_movement.rs | 10 +- crates/onestore/tests/support/sweep.rs | 20 + crates/onestore/tests/tree.rs | 7 +- crates/snowbound/Cargo.toml | 2 +- crates/snowbound/assets/icons/options.svg | 5 + crates/snowbound/assets/icons/page.svg | 3 + crates/snowbound/examples/search_probe.rs | 76 ++ crates/snowbound/src/art.rs | 2 + crates/snowbound/src/conflict_render.rs | 2 +- crates/snowbound/src/linux.rs | 10 + crates/snowbound/src/macos.rs | 37 + crates/snowbound/src/main.rs | 294 ++--- crates/snowbound/src/menus.rs | 3 - crates/snowbound/src/options.rs | 303 +++++ crates/snowbound/src/screenshot.rs | 2 +- crates/snowbound/src/search.rs | 1212 ++++++++++++++++++++ crates/snowbound/src/settings.rs | 45 +- crates/snowbound/src/sidebar.rs | 9 +- crates/ui/src/lib.rs | 4 +- crates/ui/src/popup.rs | 4 +- crates/ui/src/widgets.rs | 45 + fuzz/Cargo.lock | 16 + platform/snow-leopard/Cargo.lock | 1907 ++++++++++++++++++++++++++++++++ platform/snow-leopard/Cargo.toml | 13 + platform/snow-leopard/cargo.sh | 21 + platform/snow-leopard/gl21/Cargo.toml | 6 + platform/snow-leopard/gl21/src/draw.glsl | 102 ++ platform/snow-leopard/gl21/src/lib.rs | 118 ++ platform/snow-leopard/gl21/src/painter.rs | 272 +++++ platform/snow-leopard/hello/Cargo.toml | 6 + platform/snow-leopard/hello/src/main.rs | 42 + platform/snow-leopard/link.sh | 43 + platform/snow-leopard/probe/Cargo.toml | 24 + platform/snow-leopard/probe/src/main.rs | 12 + platform/snow-leopard/probe/src/render.rs | 104 ++ platform/snow-leopard/probe/src/scene.rs | 40 + platform/snow-leopard/probe/src/window.rs | 133 +++ platform/snow-leopard/reference/Cargo.toml | 12 + platform/snow-leopard/reference/src/main.rs | 111 ++ platform/snow-leopard/remote.sh | 60 + platform/snow-leopard/rt/coretext.c | 9 + platform/snow-leopard/rt/objc.c | 39 + platform/snow-leopard/rt/shims.c | 188 ++++ platform/snow-leopard/x86_64-apple-macosx10.6.json | 54 + tools/TESTING.md | 22 +- tools/canvas/README.md | 6 +- tools/check_public.py | 2 +- tools/soak.sh | 35 + tools/test_concurrent_rust.py | 6 +- 93 files changed, 6096 insertions(+), 494 deletions(-)