Repository navigation
Bopa 0.3.0
Highlights
- Now on the Mac. The same app builds as a Mac Catalyst app — library, editor, CouchDB and WebDAV sync, PDF-backed pages — with the trackpad drawing and ⌘[ / ⌘] / ⌘⇧N turning and adding pages, since a mouse wheel cannot pull past the bottom of a sheet. The window opens at a sensible size, Pencil settings stay out of the way, and Show Notebooks in Finder reveals the container that is otherwise invisible.
scripts/archive.sh … macexports a Developer ID-signed, notarised.app; CI builds the Mac target on every push. - A page can carry typed content. Pages gained
blocks— typed markdown paragraphs, pictures, voice recordings and ink groupings — with their own tombstones, merged per block like images so two devices editing different paragraphs both keep their edits, and preserved through every path that rewrites a page (split, duplicate, save). Nothing here creates one yet; this is the half that must be on every device before a writer ships, because a peer that does not carry a block deletes it. - The protocol says so.
couch-sync-protocol.mdgains the block schema,mergeBlocks, the block tiebreak, the page-split rule (flowing paragraphs stay on the first sheet; positioned blocks divide like images), 30-day pruning of block tombstones, and §9's markdown segmentation rule — a transport granularity, not a parser — with 57 merge vectors and 22 segmentation cases byte-identical in both repos. - Assets a block names are fetched. Sync learns the
audio/folder and theaudio/mp4sniff, pulls the bytes a block references, and keeps a block typed through a merge. - The paper you choose sticks. Picking a template applies to every new page of that notebook, on both devices.
Validation
- NotableKit: full suite green (
swift test) on CI at the released commit. - iPad app: full simulator suite (unit, snapshot and UI) green on CI; the Mac Catalyst build job green.
- Merge vectors and markdown segmentation cases diffed byte-for-byte against Notable's on every CI run.
- The Mac build has not been exercised by hand; docs/mac-checklist.md is the list to run through before trusting it.
Compatibility
Syncs with Notable for BOOX v0.48.0. Both apps carry blocks and block tombstones, divide pages by the same rule, and segment markdown identically (markdown-blocks.json). Older peers (Notable < 0.47.0, Bopa 0.2.0) strip blocks on save — they come back on the next merge, but a block deletion may not stick until every device is updated.