QA-fail follow-up to #188: the gutter feedback loop is closed by pinning .code .gutter width (flex 0 0 auto, 3ch, overflow visible), so its blank-row padding can no longer shrink the code column and re-wrap lines. paste-lines.js (external, CSP-safe) renumbers the gutter from each .codeline block measured height (height / line-height) so numbers count VISUAL rows; blank .gutline rows keep numbers aligned with line starts. Rebased on current dev; only #167 files differ from dev.
Verified in headless chromium on a local build (1400x900 and 375x812): long unbroken lines (10 lines -> 11 visual rows each) and mixed content both give gutter element count == measured visual rows, correct number at each line start, every gutter row on the 36.72px pitch, and no horizontal scroll. Works on load and on live wrap toggle; wrap-off unchanged.
QA-fail follow-up to #188: the gutter feedback loop is closed by pinning .code .gutter width (flex 0 0 auto, 3ch, overflow visible), so its blank-row padding can no longer shrink the code column and re-wrap lines. paste-lines.js (external, CSP-safe) renumbers the gutter from each .codeline block measured height (height / line-height) so numbers count VISUAL rows; blank .gutline rows keep numbers aligned with line starts. Rebased on current dev; only #167 files differ from dev.
Verified in headless chromium on a local build (1400x900 and 375x812): long unbroken lines (10 lines -> 11 visual rows each) and mixed content both give gutter element count == measured visual rows, correct number at each line start, every gutter row on the 36.72px pitch, and no horizontal scroll. Works on load and on live wrap toggle; wrap-off unchanged.
Split the paste codebody into per-line block spans (paste-lines.js) and
rebuild the gutter from each line's wrapped height so numbers count
visual rows, not logical lines. Pinned the gutter width (flex 0 0 auto,
3ch) so its row count no longer feeds back into the code column width.
ResizeObserver renumbers on wrap toggle / resize; wrap-off behavior is
unchanged (one number per newline).
Split the paste codebody into per-line block spans (paste-lines.js) and
rebuild the gutter from each line's wrapped height so numbers count
visual rows, not logical lines. Pinned the gutter width (flex 0 0 auto,
3ch) so its row count no longer feeds back into the code column width.
ResizeObserver renumbers on wrap toggle / resize; wrap-off behavior is
unchanged (one number per newline).
fen
merged commit d77f1faf67 into dev2026-09-10 17:09:56 +00:00
Reopen verification: the push after reopen landed as PR #192 (merged 17:09:56Z) and is confirmed on dev (merge-base ancestry: head is an ancestor of dev; merge fix-167 f1665f1 into dev). Follow-up QA pass on #167 verified the gutter alignment fix live on palette-dev (PR #200 merged, dev image rebuilt and rolled out, rendered CDP checks at 1400x900 and 375x812 passed). No further work needed; leaving the close to the owner/QA flow.
Reopen verification: the push after reopen landed as PR #192 (merged 17:09:56Z) and is confirmed on dev (merge-base ancestry: head is an ancestor of dev; merge fix-167 f1665f1 into dev). Follow-up QA pass on #167 verified the gutter alignment fix live on palette-dev (PR #200 merged, dev image rebuilt and rolled out, rendered CDP checks at 1400x900 and 375x812 passed). No further work needed; leaving the close to the owner/QA flow.
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.
QA-fail follow-up to #188: the gutter feedback loop is closed by pinning .code .gutter width (flex 0 0 auto, 3ch, overflow visible), so its blank-row padding can no longer shrink the code column and re-wrap lines. paste-lines.js (external, CSP-safe) renumbers the gutter from each .codeline block measured height (height / line-height) so numbers count VISUAL rows; blank .gutline rows keep numbers aligned with line starts. Rebased on current dev; only #167 files differ from dev.
Verified in headless chromium on a local build (1400x900 and 375x812): long unbroken lines (10 lines -> 11 visual rows each) and mixed content both give gutter element count == measured visual rows, correct number at each line start, every gutter row on the 36.72px pitch, and no horizontal scroll. Works on load and on live wrap toggle; wrap-off unchanged.
Reopen verification: the push after reopen landed as PR #192 (merged 17:09:56Z) and is confirmed on dev (merge-base ancestry: head is an ancestor of dev; merge fix-167
f1665f1into dev). Follow-up QA pass on #167 verified the gutter alignment fix live on palette-dev (PR #200 merged, dev image rebuilt and rolled out, rendered CDP checks at 1400x900 and 375x812 passed). No further work needed; leaving the close to the owner/QA flow.