Free Notes is an iPad-first notebook app focused on permanence and paper-like constraints.
The app now uses a layered page engine with explicit input channels:
- Finger channel: PDF text selection/copy and rich-text block editing.
- Pencil channel: active-layer stroke input only.
This removes the previous conflict where PDF selection and Pencil drawing could not reliably work together.
Each page has:
- Base layer (original notes)
- Optional revision layers (timestamped, toggleable, lockable)
Notebook pages now persist a V2 layered payload (layerData) while keeping compatibility with legacy fields.
Older .nbk files are opened and migrated automatically:
- legacy strokes -> base layer
- legacy text annotations -> base text blocks
- legacy images -> base image blocks
- PDF page data -> PDF background reference
- Fixed-size notebook pages (A4/B5/A5)
- Portrait single-page and landscape spread view
- PDF page import into notebook timeline
- PencilKit writing
- Rich text paste with formatting preservation (RTFD/RTF/HTML/plain fallback)
- Revision layer workflow for reading/revision passes
- Stroke-only undo (no redo), configurable depth
1...5(default3) - Local-first
.nbkdocument storage
/Users/valipokkann/Developer/free-notes/free_notes– iPad app project/Users/valipokkann/Developer/free-notes/cursor_notebook_bootstrap.md– canonical product + architecture spec
cd /Users/valipokkann/Developer/free-notes/free_notes
xcodebuild -project free_notes.xcodeproj -scheme free_notes -destination 'generic/platform=iOS Simulator' build- Harden layered text/image lock UX
- Add explicit reading-mode timeline tools
- Zone-based manual indexing for memory workflows
- Optional sync phase (post-local-first maturity)
- Target today: iPadOS 17+ (optimized for iPad 6 baseline)
- Designed to remain compatible with newer iPad hardware and iPadOS releases