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...@@ -74,7 +74,12 @@ give placement. The comparators in `tools/canvas` (with the probes
74`layout-probe` and `page-probe`) keep checking them.74`layout-probe` and `page-probe`) keep checking them.
7575
76Equations draw in two dimensions from the tree `onestore::page::Math` parses.76Equations draw in two dimensions from the tree `onestore::page::Math` parses.
77The linear text stays the editable source. Ink draws stroke by stroke in page77They 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
78coordinates. Page templates' background art is recreated as vector art and83coordinates. Page templates' background art is recreated as vector art and
79recognised by the stored picture's hash. OneNote's bitmaps aren't shipped.84recognised 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):...@@ -43,6 +43,10 @@ the file grows):
43 changes and depends on the revision before it. OneNote itself typically43 changes and depends on the revision before it. OneNote itself typically
44 appends a small dependent revision for each edit: the changed objects plus44 appends a small dependent revision for each edit: the changed objects plus
45 the chain of containers above them, whose modification times moved.45 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.
46- **Objects** have a type (a JCID) and a property set. They reference each50- **Objects** have a type (a JCID) and a property set. They reference each
47 other by *ExtendedGUID*: a GUID plus a small integer. Inside a revision these51 other by *ExtendedGUID*: a GUID plus a small integer. Inside a revision these
48 are compressed to compact IDs through a global ID table.52 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....@@ -27,7 +27,10 @@ Accessibility for the page goes through AccessKit's winit adapter on both.
27### macOS27### macOS
2828
29- The title bar is transparent. The app draws its own around AppKit's traffic29- 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.
31- AppKit supplies the open and save panels, alerts, the date picker, date34- AppKit supplies the open and save panels, alerts, the date picker, date
32 formatting for new page titles and conflict labels, the account's full name35 formatting for new page titles and conflict labels, the account's full name
33 (used as the author, as OneNote uses Office's user name), and the caret and36 (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....@@ -45,6 +48,10 @@ Accessibility for the page goes through AccessKit's winit adapter on both.
45 the compositor where it offers server-side decorations and a client-side48 the compositor where it offers server-side decorations and a client-side
46 frame otherwise. The app draws its own window controls only where no frame49 frame otherwise. The app draws its own window controls only where no frame
47 could be made.50 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.
48- zenity or kdialog provide the pickers and alerts. The XDG settings portal55- zenity or kdialog provide the pickers and alerts. The XDG settings portal
49 provides the colour scheme. Text conventions come from the C library's56 provides the colour scheme. Text conventions come from the C library's
50 locale. Fontconfig is loaded at run time, so builds need no headers for it.57 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....@@ -58,6 +65,9 @@ Accessibility for the page goes through AccessKit's winit adapter on both.
58The readme names both as goals. Nothing platform-specific exists for them yet.65The readme names both as goals. Nothing platform-specific exists for them yet.
59Keeping `ui` and `draw` free of platform toolkits is what keeps them within66Keeping `ui` and `draw` free of platform toolkits is what keeps them within
60reach.67reach.
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
62## iOS: native around the canvas72## iOS: native around the canvas
6373
arc/testing.md+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1# Testing, and why the code can be trusted1# Testing — Why the code can be trusted
22
3Snowbound writes into other people's notebooks, often while their copy of3Snowbound writes into other people's notebooks, often while their copy of
4OneNote is writing to the same file. A bug doesn't just crash an app. It can4OneNote 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...@@ -22,8 +22,10 @@ The motion comes from [File Pilot](https://filepilot.tech): things move
22quickly and never feel like they're waiting on an animation. Animated values22quickly and never feel like they're waiting on an animation. Animated values
23ease exponentially toward their targets with a short half-life. That is23ease exponentially toward their targets with a short half-life. That is
24frame-rate independent, a retargeted animation continues smoothly from where24frame-rate independent, a retargeted animation continues smoothly from where
25it is, and it settles fast. A context menu opens instantly at the pointer. A25it is, and it settles fast. Popups open and close on short timed curves,
26drop-down grows out of its anchor.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
28## Why not native widgets30## 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....@@ -7,8 +7,10 @@ Type and draw notes on any platform, while maintaining ownership of your data.
7Snowbound does not use a typical markdown or structured note format, but rather7Snowbound does not use a typical markdown or structured note format, but rather
8uses rich text on a free canvas. Unlike other infinite canvas apps, our canvas8uses rich text on a free canvas. Unlike other infinite canvas apps, our canvas
9feels more like a standard text editor software as textboxes automatically9feels more like a standard text editor software as textboxes automatically
10create and resize as you would expect. In addition, Snowbound (TODO) supports10create and resize as you would expect. In addition, Snowbound supports
11pen and drawing tools, recording audio and video, revision history, multi-machine11pen 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
12live collaboration, and much more.14live collaboration, and much more.
1315
14<!-- Regenerate from the sample notebook (edit it freely in OneNote or Snowbound):16<!-- 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...@@ -20,8 +22,13 @@ python3 tools/canvas/build_macos.py --release && d=$(mktemp -d) && cp -R docs/sa
20</picture>22</picture>
2123
22Snowbound implements the file and sync protocol used in 2010 Microsoft OneNote,24Snowbound implements the file and sync protocol used in 2010 Microsoft OneNote,
23so notebooks are fully compatible, including collaboration features. It (TODO)25so notebooks are fully compatible, including collaboration features. It supports
24supports OS X 10.6, all the way to modern macOS, iOS, Linux, and Windows.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
26For my songwriting for *[paper clover](https://paperclover.net)*, I use this app33For my songwriting for *[paper clover](https://paperclover.net)*, I use this app
27alongside OneNote on my Windows 7 laptop.34alongside OneNote on my Windows 7 laptop.