authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-27 17:36:32-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-27 20:52:19-07:00
logb589fec9d51d404e16bcb68a176f226d5b5fa459
tree37e51e60f02f92d0e7aa9ba9da0999abad134872
parentc1bbd6da524e4caf05b6b87c1559e61bfe7cbb70
signature Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU

chore: update readme and docs


6 files changed, 37 insertions(+), 9 deletions(-)

arc/canvas.md+6-1
......@@ -74,7 +74,12 @@ give placement. The comparators in `tools/canvas` (with the probes
7474`layout-probe` and `page-probe`) keep checking them.
7575
7676Equations draw in two dimensions from the tree `onestore::page::Math` parses.
77The linear text stays the editable source. Ink draws stroke by stroke in page
77They are edited as OneNote's equation editor edits them: Alt+= starts one,
78typing is its linear format (UnicodeMath), and a space builds up what it ends.
79Linear and Professional switch an equation between the forms, and OneNote
80stores both. Links follow OneNote too: a typed URL links itself when a space or
81Enter ends it, the Link dialog stores its address in a hidden field code before
82the label, and a click opens a link. Ink draws stroke by stroke in page
7883coordinates. Page templates' background art is recreated as vector art and
7984recognised by the stored picture's hash. OneNote's bitmaps aren't shipped.
8085
arc/file-format.md+4
......@@ -43,6 +43,10 @@ the file grows):
4343 changes and depends on the revision before it. OneNote itself typically
4444 appends a small dependent revision for each edit: the changed objects plus
4545 the chain of containers above them, whose modification times moved.
46- **Contexts** label revisions besides the current one. A page's *versions* are earlier
47 revisions of its own space kept current under contexts of their own, and its version
48 history is one more revision, under a fixed context, listing them. Restoring a version
49 forks the page's chain from it; deleting one only unlists it.
4650- **Objects** have a type (a JCID) and a property set. They reference each
4751 other by *ExtendedGUID*: a GUID plus a small integer. Inside a revision these
4852 are compressed to compact IDs through a global ID table.
arc/platforms.md+11-1
......@@ -27,7 +27,10 @@ Accessibility for the page goes through AccessKit's winit adapter on both.
2727### macOS
2828
2929- The title bar is transparent. The app draws its own around AppKit's traffic
30 lights, as part of the same frame as the rest of the chrome.
30 lights, as part of the same frame as the rest of the chrome. Under the whole
31 window lies AppKit's title bar material, an `NSVisualEffectView`, and the
32 chrome is drawn transparent over it, so the title bar, toolbar, tab row and
33 sidebar take the system's desktop tint, appearance and focus state exactly.
3134- AppKit supplies the open and save panels, alerts, the date picker, date
3235 formatting for new page titles and conflict labels, the account's full name
3336 (used as the author, as OneNote uses Office's user name), and the caret and
......@@ -45,6 +48,10 @@ Accessibility for the page goes through AccessKit's winit adapter on both.
4548 the compositor where it offers server-side decorations and a client-side
4649 frame otherwise. The app draws its own window controls only where no frame
4750 could be made.
51- The toolbar and the rest of the chrome continue the title bar's fill,
52 focused and not: on KDE the colour scheme's header colours from
53 `kdeglobals`, as KWin paints its title bars, and on GNOME winit's Adwaita
54 frame's. A settings portal signal re-reads them when the scheme changes.
4855- zenity or kdialog provide the pickers and alerts. The XDG settings portal
4956 provides the colour scheme. Text conventions come from the C library's
5057 locale. Fontconfig is loaded at run time, so builds need no headers for it.
......@@ -58,6 +65,9 @@ Accessibility for the page goes through AccessKit's winit adapter on both.
5865The readme names both as goals. Nothing platform-specific exists for them yet.
5966Keeping `ui` and `draw` free of platform toolkits is what keeps them within
6067reach.
68The chrome's fill already has its seam: `platform::install_backdrop` lays a
69system material under a transparent surface, as Mica or Aero glass would,
70and `platform::titlebar` names opaque fills where the system has those.
6171
6272## iOS: native around the canvas
6373
arc/testing.md+1-1
......@@ -1,4 +1,4 @@
1# Testing, and why the code can be trusted
1# Testing — Why the code can be trusted
22
33Snowbound writes into other people's notebooks, often while their copy of
44OneNote is writing to the same file. A bug doesn't just crash an app. It can
arc/ui.md+4-2
......@@ -22,8 +22,10 @@ The motion comes from [File Pilot](https://filepilot.tech): things move
2222quickly and never feel like they're waiting on an animation. Animated values
2323ease exponentially toward their targets with a short half-life. That is
2424frame-rate independent, a retargeted animation continues smoothly from where
25it is, and it settles fast. A context menu opens instantly at the pointer. A
26drop-down grows out of its anchor.
25it is, and it settles fast. Popups open and close on short timed curves,
26slow enough to follow: a menu grows out of the pointer or its button as it
27fades in, a combo's field widens into its list, and a dialog swings up into
28place over a dimmed window, as Windows opens a window.
2729
2830## Why not native widgets
2931
readme.md+11-4
......@@ -7,8 +7,10 @@ Type and draw notes on any platform, while maintaining ownership of your data.
77Snowbound does not use a typical markdown or structured note format, but rather
88uses rich text on a free canvas. Unlike other infinite canvas apps, our canvas
99feels more like a standard text editor software as textboxes automatically
10create and resize as you would expect. In addition, Snowbound (TODO) supports
11pen and drawing tools, recording audio and video, revision history, multi-machine
10create and resize as you would expect. In addition, Snowbound supports
11pen and drawing tools [(WIP)](https://shale.paperclover.net/snowbound/issues/21), recording audio and video
12[(WIP)](https://shale.paperclover.net/snowbound/issues/36), revision
13history[(WIP)](https://shale.paperclover.net/snowbound/issues/37), multi-machine
1214live collaboration, and much more.
1315
1416<!-- Regenerate from the sample notebook (edit it freely in OneNote or Snowbound):
......@@ -20,8 +22,13 @@ python3 tools/canvas/build_macos.py --release && d=$(mktemp -d) && cp -R docs/sa
2022</picture>
2123
2224Snowbound implements the file and sync protocol used in 2010 Microsoft OneNote,
23so notebooks are fully compatible, including collaboration features. It (TODO)
24supports OS X 10.6, all the way to modern macOS, iOS, Linux, and Windows.
25so notebooks are fully compatible, including collaboration features. It supports
26OS X 10.6 Snow Leopard
27[(WIP)](https://shale.paperclover.net/snowbound/issues/13), all the way to
28modern macOS, Linux, Windows
29[(WIP)](https://shale.paperclover.net/snowbound/issues/11), and fully capable
30iOS[(WIP)](https://shale.paperclover.net/snowbound/issues/36) and
31Android[(WIP)](https://shale.paperclover.net/snowbound/issues/24) apps.
2532
2633For my songwriting for *[paper clover](https://paperclover.net)*, I use this app
2734alongside OneNote on my Windows 7 laptop.