fix(renderer): stabilize preserveLineBreaks whitespace and newline rendering

This commit is contained in:
2026-02-20 20:22:37 -08:00
parent 28d2da1e64
commit d6676f7132
5 changed files with 98 additions and 26 deletions

View File

@@ -0,0 +1,38 @@
# Agent Log: codex-overlay-whitespace-newline-20260221T040705Z-aw2j
- alias: codex-overlay-whitespace-newline
- mission: Fix visible overlay whitespace/newline token rendering bug (blank hoverable tokens) with regression tests.
- status: completed
- started_utc: 2026-02-21T04:07:05Z
- last_update_utc: 2026-02-21T04:14:30Z
## Intent
- Reproduce bug around spaces/newlines + `preserveLineBreaks` in visible overlay.
- Add failing renderer/tokenization regression tests first.
- Patch render/token mapping to avoid hoverable blank tokens and preserve-mode duplication.
## Touched Files
- src/renderer/subtitle-render.ts
- src/renderer/subtitle-render.test.ts
- docs/subagents/INDEX.md
- docs/subagents/collaboration.md
- docs/subagents/agents/codex-overlay-whitespace-newline-20260221T040705Z-aw2j.md
## Decisions
- Ignore whitespace-only token surfaces in source alignment.
- Non-preserve mode: flatten token newlines to spaces, whitespace-only surfaces as text nodes.
- Preserve mode alignment: skip unmatched token surfaces (do not append fallback token) to avoid duplicate tail text.
## Verification
- RED: new whitespace-separator test failed before fix.
- GREEN: renderer suite pass after first fix.
- RED: new preserve-mode duplicate-tail mismatch test failed before fix.
- GREEN: `bun run build && node dist/renderer/subtitle-render.test.js` pass (11/11).
- GREEN: `node --test dist/renderer/subtitle-render.test.js` pass.
## Blockers
- none
## Next Step
- User visual verify with `preserveLineBreaks=true` + known mixed-width numeral lines.
- [2026-02-21T04:18:16Z] follow-up: fixed non-token first-paint behavior to collapse line breaks when `preserveLineBreaks=false` (`normalizeSubtitle(..., collapseLineBreaks=true)` in fallback path); added regression test for normalize collapse.