Skip to content

Preserve cross-page ink and editable assets in OpenNotes 1.3.4 - #34

Merged
markm39 merged 2 commits into
mainfrom
fix/continuous-content
Oct 12, 2026
Merged

markm39 merged 2 commits into
mainfrom
fix/continuous-content

Conversation

@markm39

@markm39 markm39 commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Drawing, images, and text previously stopped at page boundaries. The editor now uses a continuous document canvas, keeps each asset editable across pages, and preserves chronological undo/redo across ink and overlay edits. PDF export renders the canonical ink and every overlapping asset instead of trusting potentially incomplete thumbnails.

Rotated resize/crop follows the current zoom and local image axes, canceled gestures restore their original geometry, and callbacks stop retaining closed notebooks. Failed native loads show recovery without overwriting the saved body. The release metadata is bumped to 1.3.4 (17).

Mobile Ink 0.3.8 is published and pinned in the package declaration and npm lockfile. Published runtime sources match the candidate used for native verification and the signed archive. Registry install/lock validation and the focused checks pass. The signed device archive and App Store IPA have been verified; upload and review submission are the remaining release steps.

Validation: 111 unit tests and TypeScript pass. Release iPad-simulator XCTest passed all nine normal interaction/performance tests, including cross-page ink, image/text editing, mixed history, rotated crop/reset/lock, persistence and export. A separate malformed-native-payload test passed retry, library return, relaunch and reopen; the original body SHA256 remained unchanged. Native screenshots were inspected. Simulator results do not establish physical-iPad latency.

Simplify/security review: new coordinate, history and callback-lifetime helpers are separated and covered by focused tests. Existing app/note/[id].tsx, ImageInsertOverlay.tsx and TextBoxOverlay.tsx remain above 500 lines: their shared editor lifecycle and gesture worklet state are kept together to avoid changing capture/commit boundaries during this interaction fix; extracting those boundaries would need another behavioral refactor. This is an explicit size exception for those existing components. Review covered immutable history patch application, prototype-key rejection, source-image URI handling, recovery data preservation, save/export barriers, and gesture cancellation; no remaining security finding was identified in these changes.

@markm39
markm39 marked this pull request as ready for review October 12, 2026 13:30
@markm39
markm39 merged commit ff5f065 into main Oct 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant