corpus/link-edit/README.md | 39 ++ corpus/link-edit/editor/candidate/Open Notebook.onetoc2 | Bin 0 -> 1604 bytes corpus/link-edit/editor/candidate/links.one | Bin 0 -> 24856 bytes corpus/link-edit/editor/cold/commands.jsonl | 3 + corpus/link-edit/editor/cold/machine.json | 1 + corpus/link-edit/editor/cold/notebook/Open Notebook.onetoc2 | Bin 0 -> 3764 bytes corpus/link-edit/editor/cold/notebook/links.one | Bin 0 -> 26368 bytes corpus/link-edit/editor/cold/read/environment.json | 7 + corpus/link-edit/editor/cold/read/hierarchy.xml | 2 + corpus/link-edit/editor/cold/read/page-000.navigation.json | 13 + corpus/link-edit/editor/cold/read/page-000.png | Bin 0 -> 46692 bytes corpus/link-edit/editor/cold/read/page-000.xml | 16 + corpus/link-edit/editor/cold/read/page-001.navigation.json | 13 + corpus/link-edit/editor/cold/read/page-001.png | Bin 0 -> 36460 bytes corpus/link-edit/editor/cold/read/page-001.xml | 2 + corpus/link-edit/editor/cold/read/payloads.json | 3 + corpus/link-edit/editor/cold/run.json | 18 + corpus/link-edit/editor/cold/scripts/cold.ps1 | 27 ++ corpus/link-edit/editor/cold/scripts/read.ps1 | 142 ++++++ corpus/link-edit/editor/cold/source.json | 14 + corpus/link-edit/editor/cold/teardown.json | 1 + corpus/link-edit/editor/expected.json | 28 ++ corpus/link-edit/native-typed/before-read/environment.json | 7 + corpus/link-edit/native-typed/before-read/hierarchy.xml | 2 + corpus/link-edit/native-typed/before-read/page-000.xml | 3 + corpus/link-edit/native-typed/before-read/payloads.json | 3 + corpus/link-edit/native-typed/cold/commands.jsonl | 3 + corpus/link-edit/native-typed/cold/machine.json | 1 + corpus/link-edit/native-typed/cold/read/environment.json | 7 + corpus/link-edit/native-typed/cold/read/hierarchy.xml | 2 + corpus/link-edit/native-typed/cold/read/page-000.navigation.json | 13 + corpus/link-edit/native-typed/cold/read/page-000.png | Bin 0 -> 50299 bytes corpus/link-edit/native-typed/cold/read/page-000.xml | 21 + corpus/link-edit/native-typed/cold/read/payloads.json | 3 + corpus/link-edit/native-typed/cold/run.json | 18 + corpus/link-edit/native-typed/cold/scripts/cold.ps1 | 27 ++ corpus/link-edit/native-typed/cold/scripts/read.ps1 | 142 ++++++ corpus/link-edit/native-typed/cold/source.json | 14 + corpus/link-edit/native-typed/cold/teardown.json | 1 + corpus/link-edit/native-typed/commands.jsonl | 6 + corpus/link-edit/native-typed/links.ahk | 133 ++++++ corpus/link-edit/native-typed/links.json | 13 + corpus/link-edit/native-typed/links.png | Bin 0 -> 50199 bytes corpus/link-edit/native-typed/machine.json | 1 + corpus/link-edit/native-typed/notebook/Open Notebook.onetoc2 | Bin 0 -> 3764 bytes corpus/link-edit/native-typed/notebook/links.one | Bin 0 -> 18320 bytes corpus/link-edit/native-typed/read/environment.json | 7 + corpus/link-edit/native-typed/read/hierarchy.xml | 2 + corpus/link-edit/native-typed/read/page-000.xml | 21 + corpus/link-edit/native-typed/read/payloads.json | 3 + corpus/link-edit/native-typed/run.json | 18 + corpus/link-edit/native-typed/scripts/cold.ps1 | 27 ++ corpus/link-edit/native-typed/scripts/read.ps1 | 142 ++++++ corpus/link-edit/native-typed/source.json | 14 + corpus/link-edit/native-typed/teardown.json | 1 + corpus/math-edit/README.md | 38 ++ corpus/math-edit/native-editor-4/before-read/environment.json | 7 + corpus/math-edit/native-editor-4/before-read/hierarchy.xml | 2 + corpus/math-edit/native-editor-4/before-read/page-000.xml | 3 + corpus/math-edit/native-editor-4/before-read/payloads.json | 3 + corpus/math-edit/native-editor-4/commands.jsonl | 6 + corpus/math-edit/native-editor-4/equations.ahk | 248 +++++++++++ corpus/math-edit/native-editor-4/equations.json | 13 + corpus/math-edit/native-editor-4/equations.png | Bin 0 -> 41735 bytes corpus/math-edit/native-editor-4/machine.json | 1 + corpus/math-edit/native-editor-4/notebook/Open Notebook.onetoc2 | Bin 0 -> 3764 bytes corpus/math-edit/native-editor-4/notebook/links.one | Bin 0 -> 31648 bytes corpus/math-edit/native-editor-4/read/environment.json | 7 + corpus/math-edit/native-editor-4/read/hierarchy.xml | 2 + corpus/math-edit/native-editor-4/read/page-000.xml | 3 + corpus/math-edit/native-editor-4/read/payloads.json | 3 + corpus/math-edit/native-editor-4/run.json | 18 + corpus/math-edit/native-editor-4/scripts/cold.ps1 | 27 ++ corpus/math-edit/native-editor-4/scripts/read.ps1 | 142 ++++++ corpus/math-edit/native-editor-4/source.json | 14 + corpus/math-edit/native-editor-4/teardown.json | 1 + corpus/math-edit/native-enter/before-read/environment.json | 7 + corpus/math-edit/native-enter/before-read/hierarchy.xml | 2 + corpus/math-edit/native-enter/before-read/page-000.xml | 3 + corpus/math-edit/native-enter/before-read/payloads.json | 3 + corpus/math-edit/native-enter/commands.jsonl | 6 + corpus/math-edit/native-enter/enter.ahk | 53 +++ corpus/math-edit/native-enter/enter.json | 13 + corpus/math-edit/native-enter/enter.png | Bin 0 -> 38324 bytes corpus/math-edit/native-enter/machine.json | 1 + corpus/math-edit/native-enter/notebook/Open Notebook.onetoc2 | Bin 0 -> 3764 bytes corpus/math-edit/native-enter/notebook/links.one | Bin 0 -> 15776 bytes corpus/math-edit/native-enter/read/environment.json | 7 + corpus/math-edit/native-enter/read/hierarchy.xml | 2 + corpus/math-edit/native-enter/read/page-000.xml | 6 + corpus/math-edit/native-enter/read/payloads.json | 3 + corpus/math-edit/native-enter/run.json | 18 + corpus/math-edit/native-enter/scripts/cold.ps1 | 27 ++ corpus/math-edit/native-enter/scripts/read.ps1 | 142 ++++++ corpus/math-edit/native-enter/source.json | 14 + corpus/math-edit/native-enter/teardown.json | 1 + corpus/math-edit/native-linear/notebook/links.one | Bin 0 -> 73208 bytes corpus/page-versions/README.md | 65 +++ corpus/page-versions/candidate-delete-all/History.one | Bin 0 -> 23048 bytes corpus/page-versions/candidate-delete-all/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/candidate-restore/History.one | Bin 0 -> 21128 bytes corpus/page-versions/candidate-restore/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/cold-delete-all/before-read/environment.json | 7 + corpus/page-versions/cold-delete-all/before-read/hierarchy.xml | 2 + corpus/page-versions/cold-delete-all/before-read/page-000.xml | 2 + corpus/page-versions/cold-delete-all/before-read/page-001.xml | 2 + corpus/page-versions/cold-delete-all/before-read/payloads.json | 3 + corpus/page-versions/cold-delete-all/commands.jsonl | 6 + corpus/page-versions/cold-delete-all/machine.json | 1 + corpus/page-versions/cold-delete-all/notebook/History.one | Bin 0 -> 23048 bytes corpus/page-versions/cold-delete-all/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/cold-delete-all/read/environment.json | 7 + corpus/page-versions/cold-delete-all/read/hierarchy.xml | 2 + corpus/page-versions/cold-delete-all/read/page-000.xml | 2 + corpus/page-versions/cold-delete-all/read/page-001.xml | 2 + corpus/page-versions/cold-delete-all/read/payloads.json | 3 + corpus/page-versions/cold-delete-all/run.json | 18 + corpus/page-versions/cold-delete-all/scripts/cold.ps1 | 27 ++ corpus/page-versions/cold-delete-all/scripts/read.ps1 | 142 ++++++ corpus/page-versions/cold-delete-all/shots/cold-closed.ahk | 4 + corpus/page-versions/cold-delete-all/shots/cold-closed.json | 13 + corpus/page-versions/cold-delete-all/shots/cold-closed.png | Bin 0 -> 37256 bytes corpus/page-versions/cold-delete-all/shots/cold-main.ahk | 14 + corpus/page-versions/cold-delete-all/shots/cold-main.json | 13 + corpus/page-versions/cold-delete-all/shots/cold-main.png | Bin 0 -> 37754 bytes corpus/page-versions/cold-delete-all/shots/cold-menu.ahk | 4 + corpus/page-versions/cold-delete-all/shots/cold-menu.json | 13 + corpus/page-versions/cold-delete-all/shots/cold-menu.png | Bin 0 -> 37920 bytes corpus/page-versions/cold-delete-all/shots/cold-shown.ahk | 6 + corpus/page-versions/cold-delete-all/shots/cold-shown.json | 13 + corpus/page-versions/cold-delete-all/shots/cold-shown.png | Bin 0 -> 55588 bytes corpus/page-versions/cold-delete-all/shots/cold-version.ahk | 4 + corpus/page-versions/cold-delete-all/shots/cold-version.json | 13 + corpus/page-versions/cold-delete-all/shots/cold-version.png | Bin 0 -> 37256 bytes corpus/page-versions/cold-delete-all/source.json | 14 + corpus/page-versions/cold-delete-all/teardown.json | 1 + corpus/page-versions/cold-restore/before-read/environment.json | 7 + corpus/page-versions/cold-restore/before-read/hierarchy.xml | 2 + corpus/page-versions/cold-restore/before-read/page-000.xml | 2 + corpus/page-versions/cold-restore/before-read/page-001.xml | 2 + corpus/page-versions/cold-restore/before-read/payloads.json | 3 + corpus/page-versions/cold-restore/commands.jsonl | 6 + corpus/page-versions/cold-restore/machine.json | 1 + corpus/page-versions/cold-restore/notebook/History.one | Bin 0 -> 22928 bytes corpus/page-versions/cold-restore/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/cold-restore/read/environment.json | 7 + corpus/page-versions/cold-restore/read/hierarchy.xml | 2 + corpus/page-versions/cold-restore/read/page-000.xml | 2 + corpus/page-versions/cold-restore/read/page-001.xml | 2 + corpus/page-versions/cold-restore/read/payloads.json | 3 + corpus/page-versions/cold-restore/run.json | 18 + corpus/page-versions/cold-restore/scripts/cold.ps1 | 27 ++ corpus/page-versions/cold-restore/scripts/read.ps1 | 142 ++++++ corpus/page-versions/cold-restore/shots/cold-delete.ahk | 7 + corpus/page-versions/cold-restore/shots/cold-delete.json | 13 + corpus/page-versions/cold-restore/shots/cold-delete.png | Bin 0 -> 38525 bytes corpus/page-versions/cold-restore/shots/cold-main.ahk | 14 + corpus/page-versions/cold-restore/shots/cold-main.json | 13 + corpus/page-versions/cold-restore/shots/cold-main.png | Bin 0 -> 37736 bytes corpus/page-versions/cold-restore/shots/cold-menu.ahk | 4 + corpus/page-versions/cold-restore/shots/cold-menu.json | 13 + corpus/page-versions/cold-restore/shots/cold-menu.png | Bin 0 -> 46293 bytes corpus/page-versions/cold-restore/shots/cold-shown.ahk | 6 + corpus/page-versions/cold-restore/shots/cold-shown.json | 13 + corpus/page-versions/cold-restore/shots/cold-shown.png | Bin 0 -> 38413 bytes corpus/page-versions/cold-restore/shots/cold-version.ahk | 4 + corpus/page-versions/cold-restore/shots/cold-version.json | 13 + corpus/page-versions/cold-restore/shots/cold-version.png | Bin 0 -> 41383 bytes corpus/page-versions/cold-restore/source.json | 14 + corpus/page-versions/cold-restore/teardown.json | 1 + corpus/page-versions/native-scripted/commands.jsonl | 12 + corpus/page-versions/native-scripted/machine.json | 1 + corpus/page-versions/native-scripted/setup.ps1 | 11 + corpus/page-versions/native-scripted/shots/01-typed.json | 13 + corpus/page-versions/native-scripted/shots/01-typed.png | Bin 0 -> 39209 bytes corpus/page-versions/native-scripted/shots/02-menu.json | 13 + corpus/page-versions/native-scripted/shots/02-menu.png | Bin 0 -> 58242 bytes corpus/page-versions/native-scripted/shots/02-second-author.json | 13 + corpus/page-versions/native-scripted/shots/02-second-author.png | Bin 0 -> 39711 bytes corpus/page-versions/native-scripted/shots/02-shown.json | 13 + corpus/page-versions/native-scripted/shots/02-shown.png | Bin 0 -> 39024 bytes corpus/page-versions/native-scripted/shots/02-version-menu.json | 13 + corpus/page-versions/native-scripted/shots/02-version-menu.png | Bin 0 -> 46543 bytes corpus/page-versions/native-scripted/shots/02-version.json | 13 + corpus/page-versions/native-scripted/shots/02-version.png | Bin 0 -> 41695 bytes corpus/page-versions/native-scripted/shots/03-copied.json | 13 + corpus/page-versions/native-scripted/shots/03-copied.png | Bin 0 -> 39433 bytes corpus/page-versions/native-scripted/shots/03-copy-dialog.json | 13 + corpus/page-versions/native-scripted/shots/03-copy-dialog.png | Bin 0 -> 47954 bytes corpus/page-versions/native-scripted/shots/04-restored.json | 13 + corpus/page-versions/native-scripted/shots/04-restored.png | Bin 0 -> 40865 bytes corpus/page-versions/native-scripted/shots/04-shown.json | 13 + corpus/page-versions/native-scripted/shots/04-shown.png | Bin 0 -> 41174 bytes corpus/page-versions/native-scripted/shots/05-deleted.json | 13 + corpus/page-versions/native-scripted/shots/05-deleted.png | Bin 0 -> 40051 bytes corpus/page-versions/native-scripted/shots/05-newest.json | 13 + corpus/page-versions/native-scripted/shots/05-newest.png | Bin 0 -> 42998 bytes corpus/page-versions/native-scripted/shots/06-confirm.json | 13 + corpus/page-versions/native-scripted/shots/06-confirm.png | Bin 0 -> 45144 bytes corpus/page-versions/native-scripted/shots/06-deleted-all.json | 13 + corpus/page-versions/native-scripted/shots/06-deleted-all.png | Bin 0 -> 39309 bytes corpus/page-versions/native-scripted/shots/07-third-author-edit.json | 13 + corpus/page-versions/native-scripted/shots/07-third-author-edit.png | Bin 0 -> 41185 bytes corpus/page-versions/native-scripted/shots/08-deleted-only.json | 13 + corpus/page-versions/native-scripted/shots/08-deleted-only.png | Bin 0 -> 40415 bytes corpus/page-versions/native-scripted/shots/09-authors.json | 13 + corpus/page-versions/native-scripted/shots/09-authors.png | Bin 0 -> 41254 bytes corpus/page-versions/native-scripted/shots/09-find-by-author.json | 13 + corpus/page-versions/native-scripted/shots/09-find-by-author.png | Bin 0 -> 40655 bytes corpus/page-versions/native-scripted/shots/09-recent-edits.json | 13 + corpus/page-versions/native-scripted/shots/09-recent-edits.png | Bin 0 -> 57595 bytes corpus/page-versions/native-scripted/step-01/notebook/History.one | Bin 0 -> 13520 bytes corpus/page-versions/native-scripted/step-01/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native-scripted/step-02/notebook/History.one | Bin 0 -> 15128 bytes corpus/page-versions/native-scripted/step-03/notebook/History.one | Bin 0 -> 19064 bytes corpus/page-versions/native-scripted/step-04/notebook/History.one | Bin 0 -> 20936 bytes corpus/page-versions/native-scripted/step-05/notebook/History.one | Bin 0 -> 21248 bytes corpus/page-versions/native-scripted/step-06/notebook/History.one | Bin 0 -> 23792 bytes corpus/page-versions/native-scripted/step-07/notebook/History.one | Bin 0 -> 26384 bytes corpus/page-versions/native-scripted/step-08/notebook/History.one | Bin 0 -> 27552 bytes corpus/page-versions/native-scripted/step-09/notebook/History.one | Bin 0 -> 30136 bytes corpus/page-versions/native/shots/01-version-open.png | Bin 0 -> 44213 bytes corpus/page-versions/native/shots/02-version-menu.png | Bin 0 -> 48986 bytes corpus/page-versions/native/shots/03-closed.png | Bin 0 -> 43992 bytes corpus/page-versions/native/shots/04-copy-dialog.png | Bin 0 -> 50168 bytes corpus/page-versions/native/shots/05-copied.png | Bin 0 -> 41610 bytes corpus/page-versions/native/shots/06-shown-again.png | Bin 0 -> 43446 bytes corpus/page-versions/native/shots/07-restored.png | Bin 0 -> 43046 bytes corpus/page-versions/native/shots/08-other-version.png | Bin 0 -> 45269 bytes corpus/page-versions/native/shots/09-deleted.png | Bin 0 -> 42246 bytes corpus/page-versions/native/shots/10-delete-all-dialog.png | Bin 0 -> 47342 bytes corpus/page-versions/native/shots/11-deleted-all.png | Bin 0 -> 41499 bytes corpus/page-versions/native/shots/14-authors-shown.png | Bin 0 -> 43451 bytes corpus/page-versions/native/shots/15-recent-edits.png | Bin 0 -> 59727 bytes corpus/page-versions/native/shots/16-find-by-author.png | Bin 0 -> 47573 bytes corpus/page-versions/native/shots/17-future.png | Bin 0 -> 42789 bytes corpus/page-versions/native/shots/18-options.png | Bin 0 -> 39670 bytes corpus/page-versions/native/shots/19-save-backup.png | Bin 0 -> 49026 bytes corpus/page-versions/native/shots/20-optimized.png | Bin 0 -> 48099 bytes corpus/page-versions/native/shots/21-after-optimize.png | Bin 0 -> 44157 bytes corpus/page-versions/native/shots/22-page-menu.png | Bin 0 -> 49141 bytes corpus/page-versions/native/shots/23-page-menu-shown.png | Bin 0 -> 49731 bytes corpus/page-versions/native/shots/24-tooltip.png | Bin 0 -> 64445 bytes corpus/page-versions/native/step-01/notebook/History.one | Bin 0 -> 13632 bytes corpus/page-versions/native/step-01/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-02/notebook/History.one | Bin 0 -> 15240 bytes corpus/page-versions/native/step-02/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-03/notebook/History.one | Bin 0 -> 19072 bytes corpus/page-versions/native/step-03/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-04/notebook/History.one | Bin 0 -> 21408 bytes corpus/page-versions/native/step-04/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-05/notebook/History.one | Bin 0 -> 21720 bytes corpus/page-versions/native/step-05/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-06/notebook/History.one | Bin 0 -> 24264 bytes corpus/page-versions/native/step-06/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-07/notebook/History.one | Bin 0 -> 26856 bytes corpus/page-versions/native/step-07/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-08/notebook/History.one | Bin 0 -> 28024 bytes corpus/page-versions/native/step-08/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-09/notebook/History.one | Bin 0 -> 30608 bytes corpus/page-versions/native/step-09/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/page-versions/native/step-10/notebook/History.one | Bin 0 -> 15912 bytes corpus/page-versions/native/step-10/notebook/Open Notebook.onetoc2 | Bin 0 -> 4808 bytes corpus/recycle-bin-repair/README.md | 19 + corpus/recycle-bin-repair/candidate/New Section 1.one | Bin 0 -> 6024 bytes corpus/recycle-bin-repair/candidate/OneNote_RecycleBin/OneNote Table Of Contents.onetoc2 | Bin 0 -> 3848 bytes corpus/recycle-bin-repair/candidate/OneNote_RecycleBin/OneNote_DeletedPages.one | Bin 0 -> 8352 bytes corpus/recycle-bin-repair/candidate/Open Notebook.onetoc2 | Bin 0 -> 5456 bytes corpus/recycle-bin-repair/cold/commands.jsonl | 3 + corpus/recycle-bin-repair/cold/machine.json | 1 + corpus/recycle-bin-repair/cold/notebook/New Section 1.one | Bin 0 -> 6024 bytes corpus/recycle-bin-repair/cold/notebook/OneNote_RecycleBin/OneNote Table Of Contents.onetoc2 | Bin 0 -> 3848 bytes corpus/recycle-bin-repair/cold/notebook/OneNote_RecycleBin/OneNote_DeletedPages.one | Bin 0 -> 8352 bytes corpus/recycle-bin-repair/cold/notebook/Open Notebook.onetoc2 | Bin 0 -> 5456 bytes corpus/recycle-bin-repair/cold/read/environment.json | 7 + corpus/recycle-bin-repair/cold/read/hierarchy.xml | 2 + corpus/recycle-bin-repair/cold/read/page-000.navigation.json | 13 + corpus/recycle-bin-repair/cold/read/page-000.png | Bin 0 -> 35911 bytes corpus/recycle-bin-repair/cold/read/page-000.xml | 2 + corpus/recycle-bin-repair/cold/read/page-001.navigation.json | 13 + corpus/recycle-bin-repair/cold/read/page-001.png | Bin 0 -> 39115 bytes corpus/recycle-bin-repair/cold/read/page-001.xml | 2 + corpus/recycle-bin-repair/cold/read/page-002.navigation.json | 13 + corpus/recycle-bin-repair/cold/read/page-002.png | Bin 0 -> 39061 bytes corpus/recycle-bin-repair/cold/read/page-002.xml | 2 + corpus/recycle-bin-repair/cold/read/payloads.json | 3 + corpus/recycle-bin-repair/cold/run.json | 18 + corpus/recycle-bin-repair/cold/scripts/cold.ps1 | 27 ++ corpus/recycle-bin-repair/cold/scripts/read.ps1 | 142 ++++++ corpus/recycle-bin-repair/cold/source.json | 26 ++ corpus/recycle-bin-repair/cold/teardown.json | 1 + crates/notebook/README.md | 12 +- crates/notebook/examples/migrate_probe.rs | 3 +- crates/notebook/examples/queue_scale.rs | 14 +- crates/notebook/examples/smb_offline_client.rs | 9 +- crates/notebook/examples/support/view.rs | 13 +- crates/notebook/src/discover.rs | 63 ++- crates/notebook/src/lib.rs | 14 + crates/notebook/src/merge.rs | 66 ++- crates/notebook/src/migrate.rs | 15 +- crates/notebook/src/queue.rs | 2 + crates/notebook/src/session.rs | 190 ++++++-- crates/notebook/src/smb/mod.rs | 3 +- crates/notebook/src/smb/tests.rs | 14 +- crates/notebook/src/sync.rs | 13 +- crates/notebook/src/working.rs | 47 +- crates/notebook/tests/assets.rs | 5 +- crates/notebook/tests/cache.rs | 5 +- crates/notebook/tests/changes.rs | 16 +- crates/notebook/tests/discovery.rs | 79 ++++ crates/notebook/tests/migrate.rs | 22 +- crates/notebook/tests/session.rs | 83 +++- crates/notebook/tests/smb_queue.rs | 10 +- crates/notebook/tests/structure.rs | 167 ++++++- crates/notebook/tests/support/model_schedule.rs | 32 +- crates/notebook/tests/support/page_schedule.rs | 12 +- crates/notebook/tests/sync.rs | 30 +- crates/notebook/tests/sync_formatting.rs | 22 +- crates/notebook/tests/sync_outline.rs | 5 +- crates/notebook/tests/sync_page.rs | 5 +- crates/notebook/tests/sync_pages.rs | 135 ++++-- crates/notebook/tests/sync_paragraph.rs | 14 +- crates/onestore/README.md | 1 + crates/onestore/examples/edit_property.rs | 4 +- crates/onestore/examples/insert.rs | 7 +- crates/onestore/examples/support/concurrent.rs | 30 +- crates/onestore/src/active.rs | 20 +- crates/onestore/src/commit.rs | 6 +- crates/onestore/src/create.rs | 19 +- crates/onestore/src/document.rs | 19 +- crates/onestore/src/edit.rs | 35 +- crates/onestore/src/insertion.rs | 14 +- crates/onestore/src/lib.rs | 2 +- crates/onestore/src/objects.rs | 5 +- crates/onestore/src/op/apply.rs | 214 ++++++--- crates/onestore/src/op/content.rs | 25 +- crates/onestore/src/op/levels.rs | 6 +- crates/onestore/src/op/lower.rs | 63 ++- crates/onestore/src/op/mod.rs | 66 ++- crates/onestore/src/op/model.rs | 143 ++++-- crates/onestore/src/op/properties.rs | 4 +- crates/onestore/src/op/tests.rs | 738 +++++++++++++++++++++++++------ crates/onestore/src/page/linear.rs | 741 ++++++++++++++++++++++++++++++++ crates/onestore/src/page/link.rs | 6 +- crates/onestore/src/page/math.rs | 140 ++++-- crates/onestore/src/page/mod.rs | 38 +- crates/onestore/src/pages.rs | 97 +++-- crates/onestore/src/protected/mod.rs | 18 +- crates/onestore/src/section.rs | 518 +++++++++++++++------- crates/onestore/src/section/versions.rs | 492 +++++++++++++++++++++ crates/onestore/src/toc.rs | 136 +++++- crates/onestore/src/tree.rs | 5 +- crates/onestore/src/write.rs | 402 ++++++++++------- crates/onestore/src/write/tests.rs | 5 +- crates/onestore/src/write/tests/multi.rs | 3 +- crates/onestore/tests/commit.rs | 11 +- crates/onestore/tests/conflict.rs | 41 +- crates/onestore/tests/document.rs | 10 +- crates/onestore/tests/edit.rs | 32 +- crates/onestore/tests/formatting.rs | 171 +++++++- crates/onestore/tests/insertion.rs | 74 +++- crates/onestore/tests/outline.rs | 144 +++++-- crates/onestore/tests/page.rs | 26 +- crates/onestore/tests/page_deletion.rs | 14 +- crates/onestore/tests/page_ink.rs | 1 - crates/onestore/tests/page_links.rs | 49 ++- crates/onestore/tests/page_math.rs | 282 +++++++++++- crates/onestore/tests/page_movement.rs | 81 +++- crates/onestore/tests/page_writer.rs | 42 +- crates/onestore/tests/paragraph.rs | 62 ++- crates/onestore/tests/protected.rs | 5 +- crates/onestore/tests/shared_snapshot.rs | 3 +- crates/onestore/tests/support/page_edits.rs | 16 +- crates/onestore/tests/support/page_schedule.rs | 13 +- crates/onestore/tests/support/tree_model.rs | 25 +- crates/onestore/tests/table_growth.rs | 4 +- crates/onestore/tests/tree.rs | 10 +- crates/onestore/tests/versions.rs | 506 ++++++++++++++++++++++ tools/TESTING.md | 14 +- tools/canvas/README.md | 2 +- tools/check_public.py | 2 +- tools/document_model.py | 3 +- tools/native_enter.py | 67 +++ tools/native_format.py | 3 +- tools/native_links.py | 94 ++++ tools/native_versions.py | 219 ++++++++++ tools/test_document_oracle.py | 8 + tools/test_link_edit.py | 32 ++ tools/test_math_edit.py | 1 + tools/test_page_versions.py | 103 +++++ tools/test_pdf_format.py | 5 + tools/test_recycle_bin_repair.py | 45 ++ tools/verify-document.py | 36 +- 393 files changed, 9412 insertions(+), 1125 deletions(-)