AGENTS.md | 29 +- Cargo.lock | 3 +- Cargo.toml | 5 +- arc/canvas.md | 14 +- arc/platforms.md | 7 + arc/ui.md | 2 +- crates/canvas/assets/tags/flag.svg | 10 + crates/canvas/assets/tags/highlight.svg | 10 +- crates/canvas/assets/tags/question.svg | 2 +- crates/canvas/assets/tags/tag.svg | 10 + crates/canvas/src/conflict.rs | 65 +- crates/canvas/src/document.rs | 75 +- crates/canvas/src/editor.rs | 341 ++++++- crates/canvas/src/editor/equation.rs | 557 ++++++++++++ crates/canvas/src/editor/evidence.rs | 26 +- crates/canvas/src/editor/format.rs | 615 ++++++++++--- crates/canvas/src/editor/link.rs | 681 ++++++++++++++ crates/canvas/src/editor/ops.rs | 56 ++ crates/canvas/src/editor/table.rs | 11 +- crates/canvas/src/gpu/mod.rs | 16 +- crates/canvas/src/gpu/page.rs | 163 ++-- crates/canvas/src/gpu/page/background.rs | 5 +- crates/canvas/src/interaction/accessibility.rs | 2 + crates/canvas/src/interaction/mod.rs | 347 ++++--- crates/canvas/src/interaction/tests.rs | 120 ++- crates/canvas/src/layout.rs | 67 +- crates/canvas/src/math.rs | 24 +- crates/canvas/src/outline.rs | 544 ++++++++--- crates/canvas/tests/links_equations.rs | 537 +++++++++++ crates/canvas/tests/ops_differential.rs | 41 +- crates/canvas/tests/structural_roundtrip.rs | 4 +- crates/draw/src/edit.rs | 39 +- crates/draw/src/render.rs | 251 ++++- crates/draw/src/render/icon.rs | 503 ++++++++++- crates/draw/src/render/translucent.rs | 110 +++ crates/draw/src/render/translucent.wgsl | 21 + crates/snowbound/Cargo.toml | 4 +- crates/snowbound/assets/icons/align-center.svg | 2 +- crates/snowbound/assets/icons/align-left.svg | 2 +- crates/snowbound/assets/icons/align-right.svg | 2 +- crates/snowbound/assets/icons/attachment.svg | 7 +- crates/snowbound/assets/icons/back.svg | 3 + crates/snowbound/assets/icons/bold.svg | 2 +- crates/snowbound/assets/icons/bullets.svg | 16 +- crates/snowbound/assets/icons/calendar.svg | 16 +- crates/snowbound/assets/icons/clear-formatting.svg | 10 +- crates/snowbound/assets/icons/clock.svg | 11 +- crates/snowbound/assets/icons/copy.svg | 18 + crates/snowbound/assets/icons/cut.svg | 16 + crates/snowbound/assets/icons/date-time.svg | 21 + crates/snowbound/assets/icons/equation.svg | 6 +- crates/snowbound/assets/icons/find-tags.svg | 17 + crates/snowbound/assets/icons/font-color.svg | 2 +- crates/snowbound/assets/icons/format-painter.svg | 14 + crates/snowbound/assets/icons/forward.svg | 3 + crates/snowbound/assets/icons/full-page-view.svg | 12 + crates/snowbound/assets/icons/highlighter.svg | 13 +- crates/snowbound/assets/icons/indent.svg | 8 +- crates/snowbound/assets/icons/insert-space.svg | 8 + crates/snowbound/assets/icons/italic.svg | 2 +- crates/snowbound/assets/icons/link.svg | 15 +- crates/snowbound/assets/icons/notebook.svg | 19 +- crates/snowbound/assets/icons/numbering.svg | 5 +- crates/snowbound/assets/icons/options.svg | 9 +- crates/snowbound/assets/icons/outdent.svg | 8 +- crates/snowbound/assets/icons/page-color.svg | 15 + crates/snowbound/assets/icons/page.svg | 11 +- crates/snowbound/assets/icons/paste.svg | 17 + crates/snowbound/assets/icons/picture.svg | 15 +- crates/snowbound/assets/icons/plus.svg | 8 +- crates/snowbound/assets/icons/record-audio.svg | 13 + crates/snowbound/assets/icons/record-video.svg | 15 + crates/snowbound/assets/icons/redo.svg | 7 +- crates/snowbound/assets/icons/rule-lines.svg | 9 + crates/snowbound/assets/icons/screen-clipping.svg | 8 + crates/snowbound/assets/icons/search.svg | 14 +- crates/snowbound/assets/icons/section-group.svg | 13 +- crates/snowbound/assets/icons/section.svg | 3 + crates/snowbound/assets/icons/sidebar-collapse.svg | 12 +- crates/snowbound/assets/icons/sidebar-expand.svg | 12 +- crates/snowbound/assets/icons/spelling.svg | 9 + crates/snowbound/assets/icons/strikethrough.svg | 3 +- crates/snowbound/assets/icons/subscript.svg | 4 +- crates/snowbound/assets/icons/superscript.svg | 4 +- crates/snowbound/assets/icons/symbol.svg | 8 + crates/snowbound/assets/icons/table.svg | 10 +- crates/snowbound/assets/icons/underline.svg | 3 +- crates/snowbound/assets/icons/undo.svg | 7 +- crates/snowbound/assets/icons/zoom-in.svg | 15 +- crates/snowbound/assets/icons/zoom-out.svg | 15 +- crates/snowbound/src/art.rs | 38 + crates/snowbound/src/commands.rs | 1015 +++++++++++++++++++++ crates/snowbound/src/conflict_render.rs | 239 ++++- crates/snowbound/src/history.rs | 302 +++++++ crates/snowbound/src/library.rs | 14 +- crates/snowbound/src/link.rs | 464 ++++++++++ crates/snowbound/src/linux.rs | 333 ++++++- crates/snowbound/src/macos.rs | 243 +++-- crates/snowbound/src/main.rs | 1558 +++++++++++++++++++++++--------- crates/snowbound/src/manage.rs | 69 +- crates/snowbound/src/menubar.rs | 407 +++++++++ crates/snowbound/src/menus.rs | 395 +++++--- crates/snowbound/src/navigation.rs | 175 ++++ crates/snowbound/src/options.rs | 26 +- crates/snowbound/src/rename.rs | 201 ++++ crates/snowbound/src/screenshot.rs | 36 +- crates/snowbound/src/search.rs | 81 +- crates/snowbound/src/settings.rs | 38 + crates/snowbound/src/sidebar.rs | 909 +++++++++++++------ crates/snowbound/src/templates.rs | 2 +- crates/ui/examples/popups.rs | 207 ++++- crates/ui/src/layout.rs | 46 +- crates/ui/src/lib.rs | 402 ++++++-- crates/ui/src/list.rs | 27 +- crates/ui/src/popup.rs | 167 +++- crates/ui/src/shell.rs | 239 ++++- crates/ui/src/tests.rs | 615 ++++++++++++- crates/ui/src/text.rs | 75 +- crates/ui/src/theme.rs | 120 ++- crates/ui/src/widgets.rs | 33 +- vendor/sctk-adwaita/CHANGELOG.md | 67 ++ vendor/sctk-adwaita/Cargo.toml | 61 ++ vendor/sctk-adwaita/LICENSE | 21 + vendor/sctk-adwaita/README.md | 19 + vendor/sctk-adwaita/SNOWBOUND.md | 34 + vendor/sctk-adwaita/src/buttons.rs | 382 ++++++++ vendor/sctk-adwaita/src/config.rs | 56 ++ vendor/sctk-adwaita/src/lib.rs | 773 ++++++++++++++++ vendor/sctk-adwaita/src/parts.rs | 260 ++++++ vendor/sctk-adwaita/src/pointer.rs | 142 +++ vendor/sctk-adwaita/src/shadow.rs | 397 ++++++++ vendor/sctk-adwaita/src/theme.rs | 139 +++ vendor/sctk-adwaita/src/title.rs | 61 ++ vendor/sctk-adwaita/src/title/Cantarell-Regular.ttf | Bin 0 -> 31236 bytes vendor/sctk-adwaita/src/title/ab_glyph_renderer.rs | 199 ++++ vendor/sctk-adwaita/src/title/config.rs | 20 + vendor/sctk-adwaita/src/title/crossfont_renderer.rs | 227 +++++ vendor/sctk-adwaita/src/title/dumb.rs | 16 + vendor/sctk-adwaita/src/title/font_preference.rs | 91 ++ vendor/sctk-adwaita/src/wl_typed.rs | 52 ++ 140 files changed, 15382 insertions(+), 1945 deletions(-)