Preserve eraser state and finish plugin modularization - #1
Merged
Conversation
Keep the dormant page-transaction writer private while cross-notebook moves are disabled; promoting it alone adds otherwise-elided Qt imports and fails the binary parity gate.
Promote the verified page context, reorder, duplicate, and document access paths behind explicit FirmwareApi and cover-cache dependencies. Keep dormant cross-notebook move code in the umbrella so its extra Qt imports remain un-emitted.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Candidate SHA-256: 4e2ba785f1153c408eb769f3fb92ed45efc019593b99556317d812b92f0f0502.
Promote only the startup cleanup for legacy notebook backups, preserving the visibility-hook transaction and timer lifecycle in the umbrella translation unit. The backup root remains an explicit caller-owned dependency and its QString conversion stays at the original execution point.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Candidate SHA-256: e6db7174415136a79d89c68b9251c2a8226aa407779243f97aa296c59e5f2106.
Move URI classification and sync-exclusion normalization behind hidden visibility helpers while leaving both exported hooks, firmware calls, runtime state, and one-shot tracing in the umbrella translation unit. The helpers use references so the exported ARM ABI and QString return path stay unchanged.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Candidate SHA-256: d7511592068e3bed15b25c32d4a30a1fe44f4a85bb16855e4f24dd16562ed21b.
Promote the active cover picker, backup, update, and page-zero insertion path behind explicit FirmwareApi and cover-cache dependencies. Keep the layer/layout bridge and dormant cross-notebook move code quarantined in the umbrella translation unit.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Dormant move-page symbols and Qt imports remain absent. Candidate SHA-256: 792d92e0d22e01620d2068694590d37b5bdefe637a0e5fffe620f1456657bba2.
Promote the exact IInkNotePadWidget classifier and ancestor/descendant lookup from the layer fragment into the existing notebook_widget service. All page, cover, eraser, and layer call sites now share the same hidden implementation.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Candidate SHA-256: 599b1261c6c9d8d0e4129f55016589149ad7f0dcd3f00fd837240e414b91d87b.
Move duplicate/reorder execution and error handling into a hidden page_actions service with explicit firmware and cover-cache dependencies. Preserve the controller guard and compile-time-disabled cross-notebook address-taking block in the umbrella so dormant code stays un-emitted.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Dormant move-page symbols and imports remain absent. Candidate SHA-256: 23dbdd94b1171720cd7cac8127268ba1a638828bed1d41e816ec0e162163f063.
Keep every exported hook ABI, caller-address capture, stock background-options result object, and stock grid load in the umbrella while moving template/cover routing, title handling, thumbnail composition, and grid augmentation into a stateless hidden service.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. ARM disassembly confirms the background hook preserves its original sret storage. Candidate SHA-256: 5ef37fcb3b4b0a594d38a66e40c88e6985f8e1ab1da5ef0cce99967741f9d022.
Move cover and page receiver wiring plus native row construction into a hidden notebook_menu service. Keep the exported hook's stock call, caller-range validation, once property, shared icon, and inline layer contribution in place, with the umbrella page adapter passed as a narrow callback.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Dormant cross-notebook symbols/imports remain absent. Candidate SHA-256: 71a63bc9ceb36fc714634a41579a8386d66f85ad0d49f87dad7349023060cf49.
Give the visibility module ownership of its process-lifetime runtime state and move backing-file preservation plus sync-exclusion one-shot behavior behind explicit stateful handlers. Exported hooks still perform firmware guards, content lookup, stock calls, and ABI forwarding.\n\nVerified against the Phase 2 device artifact: 46 dynamic exports, 350 dynamic imports, and 9 ordered DT_NEEDED entries. Candidate SHA-256: 1bf807f65e8cade26594c9d1822612a018d2a4dd8b935bb30fd0842da9674f68.
MRoiban
marked this pull request as ready for review
July 16, 2026 21:26
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.
Summary
.cc.incfragments with explicit runtime, resolver, entry-point, hook, visibility, and feature translation unitsmake check0.0.2-alpharelease changesSafety and compatibility
condor) firmware4.38.23697onlylibiinknote.sof80a7de7a1c482173a89b18f2bb8164fcfb53b8fab9b2a75bd23998813a528eaValidation
make -C mods/custom-notebook-templates checkpython3 scripts/verify-layer-abi.py-Wall -Wextra -Werrorbuildv0.0.1-alpha: 46 exports, 350 imports, and 9 orderedDT_NEEDEDentriesverified=no