feat(subtitles): add line-break display toggle and narrow-space normalization

This commit is contained in:
2026-02-19 22:50:27 -08:00
parent bc75a0cfbd
commit 8c2d82e361
18 changed files with 344 additions and 6 deletions

View File

@@ -0,0 +1,34 @@
# Agent: `codex-narrow-space-tokenizer-20260220T061716Z-p97s`
- alias: `codex-narrow-space-tokenizer`
- mission: `Fix narrow/invisible subtitle spacing causing incorrect tokenizer boundaries.`
- status: `done`
- branch: `main`
- started_at: `2026-02-20T06:17:31Z`
- heartbeat_minutes: `5`
## Current Work (newest first)
- [2026-02-20T06:20:07Z] handoff: normalized invisible separators in tokenizer input; added regression test; targeted tests green.
- [2026-02-20T06:19:20Z] test: `bun run build && node --test dist/subtitle/stages/normalize.test.js` (pass, 1/1); `node --test dist/core/services/tokenizer.test.js` (pass, 43/43).
- [2026-02-20T06:18:38Z] edit: updated `normalizeTokenizerInput` to map `U+200B/U+2060/U+FEFF` to regular spaces before whitespace collapsing.
- [2026-02-20T06:18:02Z] test: added failing regression for subtitle sample with `\u200B` separator.
- [2026-02-20T06:17:31Z] intent: create TASK-90; TDD-first regression for narrow Unicode spacing in subtitle line `キリキリと かかってこい`.
- [2026-02-20T06:17:31Z] progress: coordination started; index row added; scanning tokenizer normalization points next.
## Files Touched
- `docs/subagents/INDEX.md`
- `docs/subagents/agents/codex-narrow-space-tokenizer-20260220T061716Z-p97s.md`
- `docs/subagents/collaboration.md`
- `backlog/tasks/task-90 - Normalize-narrow-Unicode-whitespace-in-tokenizer-input.md`
- `src/subtitle/stages/normalize.ts`
- `src/subtitle/stages/normalize.test.ts`
## Assumptions
- issue likely Unicode spacing code point treated as token boundary.
- target behavior: collapse/normalize narrow spacing to standard spacing before lookup token grouping.
## Open Questions / Blockers
- possible overlap with TASK-85 refactor touching tokenizer paths.
## Next Step
- done.

View File

@@ -0,0 +1,42 @@
# Agent: `codex-preserve-linebreaks-20260220T063538Z-s4nd`
- alias: `codex-preserve-linebreaks`
- mission: `Add config option to preserve subtitle line breaks in visible overlay rendering.`
- status: `done`
- branch: `main`
- started_at: `2026-02-20T06:35:38Z`
- heartbeat_minutes: `5`
## Current Work (newest first)
- [2026-02-20T06:42:51Z] handoff: TASK-91 complete; added config flag `subtitleStyle.preserveLineBreaks` (default false), renderer token-linebreak alignment path, tests/docs/examples updated.
- [2026-02-20T06:42:20Z] test: `bun run build && node --test dist/config/config.test.js dist/renderer/subtitle-render.test.js` pass (43/43); macOS helper compile falls back due sandboxed Swift cache write.
- [2026-02-20T06:41:07Z] edit: added `alignTokensToSourceText` helper + preserve-line-break render path in `src/renderer/subtitle-render.ts`; state/config plumbing added.
- [2026-02-20T06:39:34Z] test: added config parse/warn coverage + renderer helper newline-segment test.
- [2026-02-20T06:35:38Z] intent: create backlog ticket; implement opt-in config flag default-off; keep current normalization default behavior.
- [2026-02-20T06:35:38Z] progress: located normalization/render paths in `src/core/services/tokenizer.ts` and `src/renderer/subtitle-render.ts`.
## Files Touched
- `docs/subagents/INDEX.md`
- `docs/subagents/agents/codex-preserve-linebreaks-20260220T063538Z-s4nd.md`
- `docs/subagents/collaboration.md`
- `backlog/tasks/task-91 - Add-config-toggle-to-preserve-visible-overlay-subtitle-line-breaks.md`
- `src/types.ts`
- `src/config/definitions.ts`
- `src/config/service.ts`
- `src/config/config.test.ts`
- `src/renderer/state.ts`
- `src/renderer/subtitle-render.ts`
- `src/renderer/subtitle-render.test.ts`
- `docs/configuration.md`
- `config.example.jsonc`
- `docs/public/config.example.jsonc`
## Assumptions
- request targets visible overlay rendering parity with MPV line breaks.
- default behavior must remain whitespace-collapsed for tokenizer/texthooker consistency.
## Open Questions / Blockers
- none.
## Next Step
- done.