# Commit history · clo/snowbound

[View on GitCafe](https://git.cafe/clo/snowbound/commits/11bf37c8a7d470d535338524dbe2c81bbcff29bb)

Repository: [clo/snowbound](https://git.cafe/clo/snowbound)

Visibility: public

Requested revision: 11bf37c8a7d470d535338524dbe2c81bbcff29bb

Requested commit: 11bf37c8a7d470d535338524dbe2c81bbcff29bb

- [feat\(ios\): iterative select all](https://git.cafe/clo/snowbound/commit/11bf37c8a7d470d535338524dbe2c81bbcff29bb?format=markdown) — 11bf37c8a7d470d535338524dbe2c81bbcff29bb; clover caruso

- [feat\(data\): page versions, editable links and math, TOC and discovery repairs](https://git.cafe/clo/snowbound/commit/71e4e308b60bf1a52ad839646150a0f9e324ecee?format=markdown) — 71e4e308b60bf1a52ad839646150a0f9e324ecee; clover caruso

- [chore: update readme and docs](https://git.cafe/clo/snowbound/commit/b589fec9d51d404e16bcb68a176f226d5b5fa459?format=markdown) — b589fec9d51d404e16bcb68a176f226d5b5fa459; clover caruso

- [fix\(onestore\): read sections OneNote has garbage-collected](https://git.cafe/clo/snowbound/commit/c1bbd6da524e4caf05b6b87c1559e61bfe7cbb70?format=markdown) — c1bbd6da524e4caf05b6b87c1559e61bfe7cbb70; clover caruso

- [feat: notebook search, Options, faster tab switches, and a split test suite](https://git.cafe/clo/snowbound/commit/04cf1f351630be2d74efa40ded0af99c0f440f8f?format=markdown) — 04cf1f351630be2d74efa40ded0af99c0f440f8f; clover caruso

- [docs: AGENTS.md and arc/ architecture essays](https://git.cafe/clo/snowbound/commit/bb5a7aff22be6cf47f808f3d65e597869ba30486?format=markdown) — bb5a7aff22be6cf47f808f3d65e597869ba30486; clover caruso

- [feat: notebooks, sections and pages in the app, native Linux titlebars](https://git.cafe/clo/snowbound/commit/1c5ad4e548ef0556a3810f749c2cee0e5e51f289?format=markdown) — 1c5ad4e548ef0556a3810f749c2cee0e5e51f289; clover caruso

- [feat\(ios\): saving, embedded SMB, format bar, search and page management](https://git.cafe/clo/snowbound/commit/130e7b1bd5ad7e9aac3a3b4e1dadb6ab3452cb27?format=markdown) — 130e7b1bd5ad7e9aac3a3b4e1dadb6ab3452cb27; clover caruso

- [feat\(data\): page series like OneNote, page colours, and notebook management ops](https://git.cafe/clo/snowbound/commit/16f919e13a25e8ef16fcd7e7acc311210c81688b?format=markdown) — 16f919e13a25e8ef16fcd7e7acc311210c81688b; clover caruso

- [feat: Linux, bundled Calibri-compatible fonts, our own template art, notebooks in progress](https://git.cafe/clo/snowbound/commit/20f70854dfb31efe4ad51f2844399553822889c1?format=markdown) — 20f70854dfb31efe4ad51f2844399553822889c1; clover caruso

- [feat\(ios\): native selection, loupe, moving boxes, navigation and dark mode](https://git.cafe/clo/snowbound/commit/46b2c3bf9ebd9f51be378aaf1835936a82f4ddb9?format=markdown) — 46b2c3bf9ebd9f51be378aaf1835936a82f4ddb9; clover caruso

- [feat\(data\): conflict pages, SMB like OneNote, and no whole-image edit API left](https://git.cafe/clo/snowbound/commit/b305654ab5ef9281fe63f30857a5ae23fa611558?format=markdown) — b305654ab5ef9281fe63f30857a5ae23fa611558; clover caruso

- [feat: the editor records ops and the app saves them](https://git.cafe/clo/snowbound/commit/ed9e69d6d927206decb398664df5f135e7244603?format=markdown) — ed9e69d6d927206decb398664df5f135e7244603; clover caruso

- [feat\(data\): the notebook queues ops and publishes sealed transactions](https://git.cafe/clo/snowbound/commit/4292e4deb721a9526b18e9d9385d225c033b245c?format=markdown) — 4292e4deb721a9526b18e9d9385d225c033b245c; clover caruso

- [feat: native caret and selection, tag geometry, OneNote scroll and snap, iOS spike](https://git.cafe/clo/snowbound/commit/216e64b3c750a6df75ac13a7f3779327f01cbe9e?format=markdown) — 216e64b3c750a6df75ac13a7f3779327f01cbe9e; clover caruso

- [feat\(data\): edits as ops, header-checked transactions, and a long-lived section](https://git.cafe/clo/snowbound/commit/878b4a52ab2bcb1aa6ef93be7f006594429deb4a?format=markdown) — 878b4a52ab2bcb1aa6ef93be7f006594429deb4a; clover caruso

- [feat: structural edits everywhere, all nine tags, and pages that always open](https://git.cafe/clo/snowbound/commit/05027137f9f30b0179a4f73df88c69aaf898d2de?format=markdown) — 05027137f9f30b0179a4f73df88c69aaf898d2de; clover caruso

- [feat: the toolbar formats the page](https://git.cafe/clo/snowbound/commit/263f6a1b7979ef2640fe4d7cfba53c4b9974b442?format=markdown) — 263f6a1b7979ef2640fe4d7cfba53c4b9974b442; clover caruso

- [perf: page writes in one revision, and saves off the main thread](https://git.cafe/clo/snowbound/commit/e0b4334a77134228b5f773ce7cb9227fc2dd027d?format=markdown) — e0b4334a77134228b5f773ce7cb9227fc2dd027d; clover caruso

- [feat: list rows squash out and unfold in one motion](https://git.cafe/clo/snowbound/commit/710848e64a97302d4f0df26f496f6d1d3de7e809?format=markdown) — 710848e64a97302d4f0df26f496f6d1d3de7e809; clover caruso

- [feat: lists fade reordered rows through the middle; page tabs with even gaps](https://git.cafe/clo/snowbound/commit/1bdd0ee601a3ec4c0ebe18ad7a462ae85df968c2?format=markdown) — 1bdd0ee601a3ec4c0ebe18ad7a462ae85df968c2; clover caruso

- [fix: pills beside the open page tab leave it a little more room](https://git.cafe/clo/snowbound/commit/a4301e095f7de2385624ba99646b141f79eb306d?format=markdown) — a4301e095f7de2385624ba99646b141f79eb306d; clover caruso

- [fix: page tab pills keep OneNote's rounding and hover in the section's hue](https://git.cafe/clo/snowbound/commit/277262ce2972c2ec8337aff6a6d1a255efcfa0a8?format=markdown) — 277262ce2972c2ec8337aff6a6d1a255efcfa0a8; clover caruso

- [feat: popups, animated lists and shell polish](https://git.cafe/clo/snowbound/commit/8a427ca60769dc6268c802235ceed1f70d44ee6f?format=markdown) — 8a427ca60769dc6268c802235ceed1f70d44ee6f; clover caruso

- [feat: formatting commands for the toolbar](https://git.cafe/clo/snowbound/commit/332e865dc1d25461af433a52794ec50ebf81f388?format=markdown) — 332e865dc1d25461af433a52794ec50ebf81f388; clover caruso

- [feat: OneNote-shaped shell, themes, dark pages, template backgrounds and large-page speed](https://git.cafe/clo/snowbound/commit/0d005581890507e46939e22ee0d991887bb3c1b7?format=markdown) — 0d005581890507e46939e22ee0d991887bb3c1b7; clover caruso

- [feat: ui kit and the Snowbound shell around the page](https://git.cafe/clo/snowbound/commit/14ffea224c2042a06a245dcbcc1710ce2cfd9df7?format=markdown) — 14ffea224c2042a06a245dcbcc1710ce2cfd9df7; clover caruso

- [refactor: move the renderer out of canvas into a draw crate](https://git.cafe/clo/snowbound/commit/939081be8a62e17d4e2ec4abb68c052f8e3c506d?format=markdown) — 939081be8a62e17d4e2ec4abb68c052f8e3c506d; clover caruso

- [refactor: move page interaction from the snowbound host into canvas](https://git.cafe/clo/snowbound/commit/1b0d6e5c862e65471df75c1239a1a111b9c11302?format=markdown) — 1b0d6e5c862e65471df75c1239a1a111b9c11302; clover caruso

- [feat: draw superscripts and subscripts as OneNote does](https://git.cafe/clo/snowbound/commit/dc52eff3f6dfc98dc61d48517051cac6ad04d9de?format=markdown) — dc52eff3f6dfc98dc61d48517051cac6ad04d9de; clover caruso

- [feat: select, resize and delete pictures inside outlines](https://git.cafe/clo/snowbound/commit/7b577f2383c4ed4a5d5a84a8b564d088198a773e?format=markdown) — 7b577f2383c4ed4a5d5a84a8b564d088198a773e; clover caruso

- [feat: keep outlines editable around content the canvas cannot draw](https://git.cafe/clo/snowbound/commit/b822df2242bfd846f6475e49af173e4736187b4b?format=markdown) — b822df2242bfd846f6475e49af173e4736187b4b; clover caruso

- [feat: draw equations in two dimensions as OneNote does](https://git.cafe/clo/snowbound/commit/5b135a22151997c7b480c1e65db0c2d85ad41712?format=markdown) — 5b135a22151997c7b480c1e65db0c2d85ad41712; clover caruso

- [feat: draw links blue and underlined as OneNote does](https://git.cafe/clo/snowbound/commit/73142aea074afbea99f51a217ef30bbc6bbe4863?format=markdown) — 73142aea074afbea99f51a217ef30bbc6bbe4863; clover caruso

- [feat: lay out pictures, files and handwriting inside outlines as OneNote does](https://git.cafe/clo/snowbound/commit/ac8ebd9b6dfd7e1c002ec56155fc01c435562209?format=markdown) — ac8ebd9b6dfd7e1c002ec56155fc01c435562209; clover caruso

- [feat: align paragraphs left, center or right as stored](https://git.cafe/clo/snowbound/commit/f5d0249a43558a42eb7286211d167646f9eed475?format=markdown) — f5d0249a43558a42eb7286211d167646f9eed475; clover caruso

- [fix: present the resized frame inside the window resize](https://git.cafe/clo/snowbound/commit/c3f7869026fe3c368c667c6d6d40cfe6c7fef277?format=markdown) — c3f7869026fe3c368c667c6d6d40cfe6c7fef277; clover caruso

- [fix: snap to the grid anchored at the page margin origin](https://git.cafe/clo/snowbound/commit/22ec560def0e7769c2cfd79da312576382966e1e?format=markdown) — 22ec560def0e7769c2cfd79da312576382966e1e; clover caruso

- [feat: delete a selected picture and leave it with the arrow keys as OneNote does](https://git.cafe/clo/snowbound/commit/1916e882c31374800ac83f9c8bc6a362c71320ca?format=markdown) — 1916e882c31374800ac83f9c8bc6a362c71320ca; clover caruso

- [feat: draw every tag the notebook uses as OneNote does](https://git.cafe/clo/snowbound/commit/4527a055161bfd2ca5f5beb5d38f2c6cceb675ad?format=markdown) — 4527a055161bfd2ca5f5beb5d38f2c6cceb675ad; clover caruso

- [feat: draw page ink as OneNote does](https://git.cafe/clo/snowbound/commit/9954b152f54c18a0150bbf7ef92fc56b4c23d2a8?format=markdown) — 9954b152f54c18a0150bbf7ef92fc56b4c23d2a8; clover caruso

- [fix: open outlines that store only the level-zero indent](https://git.cafe/clo/snowbound/commit/2632a55ddb21bfc41f307e6d85abff189f9823dd?format=markdown) — 2632a55ddb21bfc41f307e6d85abff189f9823dd; clover caruso

- [fix: decode GIF pictures so pages holding them open](https://git.cafe/clo/snowbound/commit/4960c06d9ae353c4c2379730578d6105b3e8da4d?format=markdown) — 4960c06d9ae353c4c2379730578d6105b3e8da4d; clover caruso

- [feat: select, move and resize page pictures as OneNote does](https://git.cafe/clo/snowbound/commit/b5d8955327de829054dd337a86eed6fc6582be62?format=markdown) — b5d8955327de829054dd337a86eed6fc6582be62; clover caruso

- [fix: keep an outline's width handle reachable beside the outline above it](https://git.cafe/clo/snowbound/commit/72cf5607adf5f82934a103defa655f845b225b4a?format=markdown) — 72cf5607adf5f82934a103defa655f845b225b4a; clover caruso

- [fix: stop scrolling at the topmost and leftmost page content](https://git.cafe/clo/snowbound/commit/ac71f3406bb294c83e6ad73ba9661192c9c04b99?format=markdown) — ac71f3406bb294c83e6ad73ba9661192c9c04b99; clover caruso

- [fix: keep digits in the paragraph font when its family is missing](https://git.cafe/clo/snowbound/commit/1a88f66f3e89db9e9b9c016c61f9fdd549b74228?format=markdown) — 1a88f66f3e89db9e9b9c016c61f9fdd549b74228; clover caruso

- [fix: review findings in protected saves, the cache and the parser; store only named table entries](https://git.cafe/clo/snowbound/commit/b26c81f7c036b864e287820c6d3b0498b64159cf?format=markdown) — b26c81f7c036b864e287820c6d3b0498b64159cf; clover caruso

- [perf: parse a section once per side when saving; store the working image as a patch](https://git.cafe/clo/snowbound/commit/be6b82da9a9e19b3a47c24655949fd2d66db0800?format=markdown) — be6b82da9a9e19b3a47c24655949fd2d66db0800; clover caruso

- [fix: bring the soak harnesses up to coalesced saves and a loaded host](https://git.cafe/clo/snowbound/commit/3d0dd98f39482111b7e2e32734d71bc806d826c8?format=markdown) — 3d0dd98f39482111b7e2e32734d71bc806d826c8; clover caruso

- [perf: share one GUID across new identities; verify coalesced saves in the soak harness](https://git.cafe/clo/snowbound/commit/cf24fa511d61da2e5d87246aad01eccced587479?format=markdown) — cf24fa511d61da2e5d87246aad01eccced587479; clover caruso

- [feat: save page edits to password-protected sections](https://git.cafe/clo/snowbound/commit/860f9341c754f84c8ce5d06a103d2d1fd39fefdb?format=markdown) — 860f9341c754f84c8ce5d06a103d2d1fd39fefdb; clover caruso

- [fix: bring the canvas-editor fuzz target up to the page model](https://git.cafe/clo/snowbound/commit/2393166f77111e9fcba3a433294bddc0c4df5ec9?format=markdown) — 2393166f77111e9fcba3a433294bddc0c4df5ec9; clover caruso

- [feat: recordings and annotations in the page model, kept through edits](https://git.cafe/clo/snowbound/commit/0402199d1cdc50e08ec9c94f60a4def64754c8c4?format=markdown) — 0402199d1cdc50e08ec9c94f60a4def64754c8c4; clover caruso

- [feat: notebook structure over SMB, nested-table page copies, run language](https://git.cafe/clo/snowbound/commit/94b162d4813c318a27b96cc9f1923bd80c21c1d6?format=markdown) — 94b162d4813c318a27b96cc9f1923bd80c21c1d6; clover caruso

- [feat: copy pages between sections, quick styles on new paragraphs, scale baseline](https://git.cafe/clo/snowbound/commit/3d72c72fcc4bf5ea8b86377b6117843fea073b61?format=markdown) — 3d72c72fcc4bf5ea8b86377b6117843fea073b61; clover caruso

- [feat: notebook structure, change detection, link resolution, reviewed release of uncertain saves](https://git.cafe/clo/snowbound/commit/75e67fc117387e3301560b6a3ee21075f3487b71?format=markdown) — 75e67fc117387e3301560b6a3ee21075f3487b71; clover caruso

- [feat: render matrices, equation arrays, boxes and one-sided limits as OneNote does](https://git.cafe/clo/snowbound/commit/5b4f04b30a869396c509201367a1d5b296becf7e?format=markdown) — 5b4f04b30a869396c509201367a1d5b296becf7e; clover caruso

- [feat: render roots, limits, named fences, accents and function names as OneNote does](https://git.cafe/clo/snowbound/commit/bdb38ac1f1a4e8f65b558380079eeab79033b2f8?format=markdown) — bdb38ac1f1a4e8f65b558380079eeab79033b2f8; clover caruso

- [feat: write equations through the page model; give new identities n 1](https://git.cafe/clo/snowbound/commit/6478bd1e6e851e3c9bfe58640dfb03ffb64f09f8?format=markdown) — 6478bd1e6e851e3c9bfe58640dfb03ffb64f09f8; clover caruso

- [feat: parse equations into a tree that renders the MathML OneNote exports](https://git.cafe/clo/snowbound/commit/db49720208e16a932d4c13ebe1172ab872638ac7?format=markdown) — db49720208e16a932d4c13ebe1172ab872638ac7; clover caruso

- [feat: write ink drawings and handwriting through the page model](https://git.cafe/clo/snowbound/commit/237d4668ad21d8c6275da60e59bc4acb066fb853?format=markdown) — 237d4668ad21d8c6275da60e59bc4acb066fb853; clover caruso

- [feat: read ink drawings and handwriting as strokes in page coordinates](https://git.cafe/clo/snowbound/commit/7f30bf34648c9ac7a69e74956b04546b9894a380?format=markdown) — 7f30bf34648c9ac7a69e74956b04546b9894a380; clover caruso

- [feat: build internal links from page and section identities; tag colours gated](https://git.cafe/clo/snowbound/commit/bcb13ba046299393ccadffa70cc2c57963ffc3ce?format=markdown) — bcb13ba046299393ccadffa70cc2c57963ffc3ce; clover caruso

- [feat: edit cell shading and indents and nest tables through the page model](https://git.cafe/clo/snowbound/commit/23f0f23fc7064901d2942eb0d0ff5c4adea3afd6?format=markdown) — 23f0f23fc7064901d2942eb0d0ff5c4adea3afd6; clover caruso

- [feat: place pictures directly on the page through the page model](https://git.cafe/clo/snowbound/commit/ebed33c87eab2e83fb48269388f22950d118ea53?format=markdown) — ebed33c87eab2e83fb48269388f22950d118ea53; clover caruso

- [feat: resize and describe stored pictures through the page model](https://git.cafe/clo/snowbound/commit/d0ec66f9b4d3023668fa156d8a0903b3b5b8a316?format=markdown) — d0ec66f9b4d3023668fa156d8a0903b3b5b8a316; clover caruso

- [feat: write pictures and attachments through the page model](https://git.cafe/clo/snowbound/commit/cb4842d4e6047a60f7c99dcbf033c4fe366e8b8f?format=markdown) — cb4842d4e6047a60f7c99dcbf033c4fe366e8b8f; clover caruso

- [feat: write table rows, columns and new tables through the page model](https://git.cafe/clo/snowbound/commit/59c8648048632812f85fd595c05aa9720ad2a051?format=markdown) — 59c8648048632812f85fd595c05aa9720ad2a051; clover caruso

- [feat: write hyperlinks through the page model](https://git.cafe/clo/snowbound/commit/8b4f45b5b7a6d9b8555e7234a123c9887495d265?format=markdown) — 8b4f45b5b7a6d9b8555e7234a123c9887495d265; clover caruso

- [feat: write note tags and tag definitions through the page model](https://git.cafe/clo/snowbound/commit/190fb2d10c46ced562a7f0d96f63aa803f4b47d4?format=markdown) — 190fb2d10c46ced562a7f0d96f63aa803f4b47d4; clover caruso

- [feat: write bullets and numbering through the page model](https://git.cafe/clo/snowbound/commit/8a86e3ac0f817d8d27104a0a58e865b17e94eb35?format=markdown) — 8a86e3ac0f817d8d27104a0a58e865b17e94eb35; clover caruso

- [feat: write paragraph alignment, direction and spacing through the page model](https://git.cafe/clo/snowbound/commit/b6b6e903d65a5b876c5c009ba390df25d9842040?format=markdown) — b6b6e903d65a5b876c5c009ba390df25d9842040; clover caruso

- [feat: open sections through a replica-backed session for the app](https://git.cafe/clo/snowbound/commit/cffb5ce4bca95f8c242b5513d981a708206cee41?format=markdown) — cffb5ce4bca95f8c242b5513d981a708206cee41; clover caruso

- [test: capture native paragraph formatting and style inheritance](https://git.cafe/clo/snowbound/commit/7d2feb6f84ba766193b4041b9d6ee375a354e98e?format=markdown) — 7d2feb6f84ba766193b4041b9d6ee375a354e98e; clover caruso

- [perf: decode only the selected synchronization head](https://git.cafe/clo/snowbound/commit/d956049b4eeac2458cf646e61eb29a90390ff59f?format=markdown) — d956049b4eeac2458cf646e61eb29a90390ff59f; clover caruso

- [test: measure durable offline queue scaling](https://git.cafe/clo/snowbound/commit/613bb6e8c7022b768402c9801dc069a9c5bb78bd?format=markdown) — 613bb6e8c7022b768402c9801dc069a9c5bb78bd; clover caruso

- [test: preserve dependent conflicts through remote restore review](https://git.cafe/clo/snowbound/commit/e3d3b5f60eac76bbde6907df41c1133e1f089b13?format=markdown) — e3d3b5f60eac76bbde6907df41c1133e1f089b13; clover caruso

- [test: retain recovery evidence across remote restores](https://git.cafe/clo/snowbound/commit/57e5817759454103af57785fe4a566b34a18c1a7?format=markdown) — 57e5817759454103af57785fe4a566b34a18c1a7; clover caruso

- [feat: add replica-backed section sessions with offline resume](https://git.cafe/clo/snowbound/commit/a380cb56a0a524f24a9edfa7a153336e4db3201c?format=markdown) — a380cb56a0a524f24a9edfa7a153336e4db3201c; clover caruso

- [test: rerun the native reconciliation gates on page saves](https://git.cafe/clo/snowbound/commit/d7b8dcee3e1a2f16ec6335f18cd91b96ed0f3b12?format=markdown) — d7b8dcee3e1a2f16ec6335f18cd91b96ed0f3b12; clover caruso

- [fix: let new paragraphs leave unspecified formatting to the insertion default](https://git.cafe/clo/snowbound/commit/2209a77660d46fe4a034fd72298b65f3201a9118?format=markdown) — 2209a77660d46fe4a034fd72298b65f3201a9118; clover caruso

- [refactor: replace per-operation intents with page saves](https://git.cafe/clo/snowbound/commit/cc5b6a1bca8a59e2c06208c9086e7b002f0e95df?format=markdown) — cc5b6a1bca8a59e2c06208c9086e7b002f0e95df; clover caruso

- [feat: merge concurrent page edits during reconciliation](https://git.cafe/clo/snowbound/commit/2e2f9466aec89c2ab7fc03378e3cbf975ffd7f9d?format=markdown) — 2e2f9466aec89c2ab7fc03378e3cbf975ffd7f9d; clover caruso

- [feat: save edited page models to the local replica](https://git.cafe/clo/snowbound/commit/59f5163e0c2a80a4addceedf0e3f4bc3b6c235c3?format=markdown) — 59f5163e0c2a80a4addceedf0e3f4bc3b6c235c3; clover caruso

- [refactor: merge the notebook, offline, SMB and diagnostic crates into notebook](https://git.cafe/clo/snowbound/commit/09ee1d6454d9862cd2b895fea88eee8541e6caaf?format=markdown) — 09ee1d6454d9862cd2b895fea88eee8541e6caaf; clover caruso

- [chore: keep proprietary references and lab configuration out of the tree](https://git.cafe/clo/snowbound/commit/1dea3f70f427bd13315c88c22cab8f539a791187?format=markdown) — 1dea3f70f427bd13315c88c22cab8f539a791187; clover caruso

- [test: create native pages after Rust page removal and reopen cold](https://git.cafe/clo/snowbound/commit/c7a3a67441644b41cb53718b670c1315d096e56a?format=markdown) — c7a3a67441644b41cb53718b670c1315d096e56a; clover caruso

- [test: reopen page-model edits in OneNote and edit them natively](https://git.cafe/clo/snowbound/commit/8f943380df58facba8f67538e833f1e7f86a515a?format=markdown) — 8f943380df58facba8f67538e833f1e7f86a515a; clover caruso

- [fix: read native wrap reservations from the layout in the outline test](https://git.cafe/clo/snowbound/commit/a12631917f7c136f8549fd670561c6face5fe85a?format=markdown) — a12631917f7c136f8549fd670561c6face5fe85a; clover caruso

- [chore: update readme](https://git.cafe/clo/snowbound/commit/9ec3d92ecff734adff8d8e5c37122994a422b96a?format=markdown) — 9ec3d92ecff734adff8d8e5c37122994a422b96a; clover caruso

- [test: fuzz page-model edits](https://git.cafe/clo/snowbound/commit/4bd588bce728596d838724ac0cd6d0bb7acf3aba?format=markdown) — 4bd588bce728596d838724ac0cd6d0bb7acf3aba; clover caruso

- [feat: publish edited page models](https://git.cafe/clo/snowbound/commit/3283203e9f87d21af0fe6dd1f6aaa18866cbc25e?format=markdown) — 3283203e9f87d21af0fe6dd1f6aaa18866cbc25e; clover caruso

- [refactor: use the onestore page model in canvas](https://git.cafe/clo/snowbound/commit/c5acf4f0209f9e28a4496e04a421a11cb40b2984?format=markdown) — c5acf4f0209f9e28a4496e04a421a11cb40b2984; clover caruso

- [feat: merge the canvas crates into snowbound and extend the editor](https://git.cafe/clo/snowbound/commit/13f6c1c7a897937e5eb4c3d9260d9071200ddb54?format=markdown) — 13f6c1c7a897937e5eb4c3d9260d9071200ddb54; clover caruso

- [feat: add the Snowbound app icon](https://git.cafe/clo/snowbound/commit/200c25e12ad5083feb3e7594ccf16959042c6c8f?format=markdown) — 200c25e12ad5083feb3e7594ccf16959042c6c8f; clover caruso

- [feat: initial canvas implementation](https://git.cafe/clo/snowbound/commit/1c1d0b1a96f8a3a9a9d12d82a7f8089296a13163?format=markdown) — 1c1d0b1a96f8a3a9a9d12d82a7f8089296a13163; clover caruso

- [feat: add the editable page model](https://git.cafe/clo/snowbound/commit/e00506af62d3a184a53b6dec1b40ac6bd6372c3c?format=markdown) — e00506af62d3a184a53b6dec1b40ac6bd6372c3c; clover caruso

- [refactor: expose active-revision, page and parent accessors](https://git.cafe/clo/snowbound/commit/ad10b477304448e0310a90215fdfab07b4dd337f?format=markdown) — ad10b477304448e0310a90215fdfab07b4dd337f; clover caruso

- [feat: delete pages permanently](https://git.cafe/clo/snowbound/commit/de01c779539ae34b40906112aa468ef3a52979fa?format=markdown) — de01c779539ae34b40906112aa468ef3a52979fa; clover caruso

More commits follow; continue with `GET /api/repos/clo/snowbound/commits?after=ImRjM2ZmYzRlZGE3YTg0Njc2YjYyNTlkMzlmMGNmYjAwODVkOGU1NzUi`.
