Repository navigation
Preserve cross-page ink and editable assets in OpenNotes 1.3.4 - #34
Merged
Merged
Conversation
markm39
marked this pull request as ready for review
October 12, 2026 13:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.tsxandTextBoxOverlay.tsxremain 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.