Fix #167 r3: repair wrap-ON renumber verify pass (removed tops var) #208

Closed
fen wants to merge 1 commits from fix-167-r3 into dev
Collaborator

Follow-up to PR #200 (QA-passed, merged as f1665f1). e1056df rewrote renumber() to derive number placement from rowIdx but left the post-placement reflow re-verify pass reading a removed tops variable — wrap-ON renumbering threw ReferenceError every pass and the requestAnimationFrame re-check never ran.

Fix: rebuild placed from rowIdx directly. No happy-path behavior change; restores the reflow re-verify safety net. CSP unchanged (external static JS only, CSSOM only).

Verified locally: go build/test green; rendered check wrap ON 1400x900 and 375x812 — number tops == line tops, maxDelta 0px (paste with blank line + 110px wrapped line); wrap OFF text gutter unchanged.

Follow-up to PR #200 (QA-passed, merged as f1665f1). e1056df rewrote renumber() to derive number placement from rowIdx but left the post-placement reflow re-verify pass reading a removed `tops` variable — wrap-ON renumbering threw ReferenceError every pass and the requestAnimationFrame re-check never ran. Fix: rebuild `placed` from rowIdx directly. No happy-path behavior change; restores the reflow re-verify safety net. CSP unchanged (external static JS only, CSSOM only). Verified locally: go build/test green; rendered check wrap ON 1400x900 and 375x812 — number tops == line tops, maxDelta 0px (paste with blank line + 110px wrapped line); wrap OFF text gutter unchanged.
fen added 1 commit 2026-09-10 17:29:48 +00:00
Fix #167 r3: repair renumber verify pass referencing removed tops variable
CI / docker (pull_request) Skipped
CI / test (pull_request) Successful in 44s
26377b95d5
e1056df (PR #200) rewrote renumber() to derive placement from rowIdx but
left the post-placement verify pass reading a removed 'tops' variable;
wrap-ON renumbering threw ReferenceError on every pass and the rAF
re-check never ran. Rebuild 'placed' from rowIdx directly. No behavior
change on the happy path; restores the reflow re-verify safety net.
Author
Collaborator

Context for QA: PR #200 (merged f1665f1) QA-passed on the happy path, but its renumber() rewrite left the post-placement reflow re-verify pass reading a removed tops variable — every wrap-ON renumber pass threw a ReferenceError and the rAF re-check was dead code. This PR rebuilds placed from rowIdx directly; no other change. Verified locally: go build/test green; wrap ON 1400x900 and 375x812 maxDelta number-vs-line-start = 0px (paste incl. blank line and a 3-row wrapped line); wrap OFF text gutter unchanged; no CSP-impacting changes.

Context for QA: PR #200 (merged f1665f1) QA-passed on the happy path, but its renumber() rewrite left the post-placement reflow re-verify pass reading a removed `tops` variable — every wrap-ON renumber pass threw a ReferenceError and the rAF re-check was dead code. This PR rebuilds `placed` from `rowIdx` directly; no other change. Verified locally: go build/test green; wrap ON 1400x900 and 375x812 maxDelta number-vs-line-start = 0px (paste incl. blank line and a 3-row wrapped line); wrap OFF text gutter unchanged; no CSP-impacting changes.
fen closed this pull request 2026-09-10 17:31:17 +00:00
fen deleted branch fix-167-r3 2026-09-10 17:31:17 +00:00
Author
Collaborator

QA close-out (superseded): this branch was cut from 23cf315, BEFORE fix-167-r2 (ec791cc, merged 5c6cd40) landed. Its target bug is already fixed on dev tip 348f792 - dev's renumber() re-verify pass declares bodyTop2/lh2 correctly, and r3's only functional delta vs dev (placed = rowIdx.slice()) is behaviorally identical to dev's loop-copy. Served palette-dev paste-lines.js sha256 b323e7b5... matches origin/dev byte-for-byte, so the live fix is r2's. No merge/deploy needed; branch already deleted. Closing as superseded by r2.

QA close-out (superseded): this branch was cut from 23cf315, BEFORE fix-167-r2 (ec791cc, merged 5c6cd40) landed. Its target bug is already fixed on dev tip 348f792 - dev's renumber() re-verify pass declares bodyTop2/lh2 correctly, and r3's only functional delta vs dev (placed = rowIdx.slice()) is behaviorally identical to dev's loop-copy. Served palette-dev paste-lines.js sha256 b323e7b5... matches origin/dev byte-for-byte, so the live fix is r2's. No merge/deploy needed; branch already deleted. Closing as superseded by r2.

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.