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.
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.
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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-up to PR #200 (QA-passed, merged as
f1665f1).e1056dfrewrote renumber() to derive number placement from rowIdx but left the post-placement reflow re-verify pass reading a removedtopsvariable — wrap-ON renumbering threw ReferenceError every pass and the requestAnimationFrame re-check never ran.Fix: rebuild
placedfrom 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.
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 removedtopsvariable — every wrap-ON renumber pass threw a ReferenceError and the rAF re-check was dead code. This PR rebuildsplacedfromrowIdxdirectly; 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.QA close-out (superseded): this branch was cut from
23cf315, BEFORE fix-167-r2 (ec791cc, merged5c6cd40) landed. Its target bug is already fixed on dev tip348f792- 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