- Shipped
- August 6, 2026 at 12:15 AM UTC
- Author
- kamo
- Commit
- bc29cad
Three things that only start to matter once a document arrives carrying forty detected fields instead of two hand-placed ones. Page rotation: rotating a page turned the canvas but left fields and annotations behind, so they slid off the content they were anchored to. The two layers now turn with the page, keeping their coordinates in the page's own unrotated space because that is what the backend positions against. Every pointer interaction is mapped back out of screen space through the new pageGeometry helpers — dragging, resizing, annotation drawing, and dropping a new field from the toolbox — and unrotated: those are placed against the page frame, not its content. Unreviewed marker: auto-placed fields carry a dashed ring until the user clicks one, so a large import reads as a checklist. Session-only, never saved. Reading order: detected fields are sorted down the page and across each line, with a tolerance so a slightly misaligned row still sorts left to right. Widget order in the file is an authoring-tool artefact and often is not reading order. Also fixes an option-value collision of my own making: two radio buttons whose printed captions match (two "Yes" on one question) were given the same value, and the signer lights a button by comparing the group value to the button's own, so both would have lit at once.