diff --git a/README.md b/README.md
index a6129e3..e2f1239 100644
--- a/README.md
+++ b/README.md
@@ -14,9 +14,7 @@
-[](https://github.com/user-attachments/assets/9235a554-ea51-4284-b14b-7bbf3defaf58)
-
-_Click to watch the demo_
+[](./assets/minecard.mp4)
diff --git a/assets/card-mine.mkv b/assets/card-mine.mkv
deleted file mode 100644
index c5d398f..0000000
Binary files a/assets/card-mine.mkv and /dev/null differ
diff --git a/assets/demo-poster.jpg b/assets/demo-poster.jpg
deleted file mode 100644
index ad030fd..0000000
Binary files a/assets/demo-poster.jpg and /dev/null differ
diff --git a/assets/kiku-integration.mkv b/assets/kiku-integration.mkv
deleted file mode 100644
index 3f8a513..0000000
Binary files a/assets/kiku-integration.mkv and /dev/null differ
diff --git a/docs/public/assets/card-mine.webm b/assets/minecard.gif
similarity index 50%
rename from docs/public/assets/card-mine.webm
rename to assets/minecard.gif
index a6c9472..4823bb6 100644
Binary files a/docs/public/assets/card-mine.webm and b/assets/minecard.gif differ
diff --git a/assets/minecard.mp4 b/assets/minecard.mp4
new file mode 100644
index 0000000..889a615
Binary files /dev/null and b/assets/minecard.mp4 differ
diff --git a/assets/minecard.png b/assets/minecard.png
new file mode 100644
index 0000000..3d8c767
Binary files /dev/null and b/assets/minecard.png differ
diff --git a/assets/minecard.webm b/assets/minecard.webm
new file mode 100644
index 0000000..d23c971
Binary files /dev/null and b/assets/minecard.webm differ
diff --git a/backlog/tasks/task-91 - Add-config-toggle-to-preserve-visible-overlay-subtitle-line-breaks.md b/backlog/tasks/task-91 - Add-config-toggle-to-preserve-visible-overlay-subtitle-line-breaks.md
index 9571455..fc79f2f 100644
--- a/backlog/tasks/task-91 - Add-config-toggle-to-preserve-visible-overlay-subtitle-line-breaks.md
+++ b/backlog/tasks/task-91 - Add-config-toggle-to-preserve-visible-overlay-subtitle-line-breaks.md
@@ -4,7 +4,7 @@ title: Add config toggle to preserve visible overlay subtitle line breaks
status: Done
assignee: []
created_date: '2026-02-20 06:35'
-updated_date: '2026-02-20 06:42'
+updated_date: '2026-02-20 11:10'
labels: []
dependencies: []
priority: medium
@@ -33,4 +33,8 @@ Renderer now supports line-break-preserving token output via `alignTokensToSourc
Validation:
- `bun run build && node --test dist/config/config.test.js dist/renderer/subtitle-render.test.js`
+
+Follow-up (2026-02-20): when `preserveLineBreaks=false`, token render path now flattens token `CR/LF` to spaces to avoid accidental `
` insertion from token surfaces. Regression coverage added in `src/renderer/subtitle-render.test.ts`.
+
+Follow-up (2026-02-20, second pass): non-preserve renderer now aligns tokens to normalized source text and skips unmatched overlap/tail tokens to prevent duplicated phrase rendering (observed with multiline token + duplicated second-line token payload).
diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
index 3171944..84f2c71 100644
--- a/docs/.vitepress/config.ts
+++ b/docs/.vitepress/config.ts
@@ -38,6 +38,7 @@ export default {
appearance: 'dark',
cleanUrls: true,
lastUpdated: true,
+ srcExclude: ['subagents/**'],
markdown: {
theme: {
light: 'catppuccin-latte',
diff --git a/docs/index.md b/docs/index.md
index 46001a0..096d224 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -195,8 +195,11 @@ features:
## See It in Action
diff --git a/assets/card-mine.webm b/docs/public/assets/minecard.gif
similarity index 50%
rename from assets/card-mine.webm
rename to docs/public/assets/minecard.gif
index a6c9472..4823bb6 100644
Binary files a/assets/card-mine.webm and b/docs/public/assets/minecard.gif differ
diff --git a/docs/public/assets/minecard.mp4 b/docs/public/assets/minecard.mp4
new file mode 100644
index 0000000..889a615
Binary files /dev/null and b/docs/public/assets/minecard.mp4 differ
diff --git a/docs/public/assets/minecard.webm b/docs/public/assets/minecard.webm
new file mode 100644
index 0000000..d23c971
Binary files /dev/null and b/docs/public/assets/minecard.webm differ
diff --git a/docs/subagents/INDEX.md b/docs/subagents/INDEX.md
index eb30b57..5aacb19 100644
--- a/docs/subagents/INDEX.md
+++ b/docs/subagents/INDEX.md
@@ -4,6 +4,7 @@ Read first. Keep concise.
| agent_id | alias | mission | status | file | last_update_utc |
| ------------ | -------------- | ---------------------------------------------------- | --------- | ------------------------------------- | ---------------------- |
+| `codex-generate-minecard-image-20260220T112900Z-vsxr` | `codex-generate-minecard-image` | `Generate media fallbacks (GIF) from assets/minecard.webm and wire README/docs fallback markup` | `done` | `docs/subagents/agents/codex-generate-minecard-image-20260220T112900Z-vsxr.md` | `2026-02-20T11:35:30Z` |
| `codex-main` | `planner-exec` | `Fix frequency/N+1 regression in plugin --start flow` | `in_progress` | `docs/subagents/agents/codex-main.md` | `2026-02-19T19:36:46Z` |
| `codex-config-validation-20260219T172015Z-iiyf` | `codex-config-validation` | `Find root cause of config validation error for ~/.config/SubMiner/config.jsonc` | `completed` | `docs/subagents/agents/codex-config-validation-20260219T172015Z-iiyf.md` | `2026-02-19T17:26:17Z` |
| `codex-task85-20260219T233711Z-46hc` | `codex-task85` | `Resume TASK-85 maintainability refactor from latest handoff point` | `in_progress` | `docs/subagents/agents/codex-task85-20260219T233711Z-46hc.md` | `2026-02-20T02:56:34Z` |
diff --git a/docs/subagents/agents/codex-generate-minecard-image-20260220T112900Z-vsxr.md b/docs/subagents/agents/codex-generate-minecard-image-20260220T112900Z-vsxr.md
new file mode 100644
index 0000000..2eb1597
--- /dev/null
+++ b/docs/subagents/agents/codex-generate-minecard-image-20260220T112900Z-vsxr.md
@@ -0,0 +1,37 @@
+# Agent: `codex-generate-minecard-image-20260220T112900Z-vsxr`
+
+- alias: `codex-generate-minecard-image`
+- mission: `Generate media fallbacks (GIF) from assets/minecard.webm and wire README/docs fallback markup`
+- status: `done`
+- branch: `main`
+- started_at: `2026-02-20T11:29:09Z`
+- heartbeat_minutes: `5`
+
+## Current Work (newest first)
+- [2026-02-20T11:35:13Z] handoff: switched `README.md` demo embed to GitHub-mobile-safe GIF-first pattern (linked image + explicit WebM/MP4 links).
+- [2026-02-20T11:34:27Z] handoff: generated `assets/minecard.gif` (960x540 @ 12fps) and mirrored to `docs/public/assets/minecard.gif`; updated `README.md` + `docs/index.md` video sections to embed GIF fallback when video unsupported.
+- [2026-02-20T11:34:27Z] test: verified media files exist and fallback refs present via `rg`; GIF dimensions/fps validated with `ffprobe`.
+- [2026-02-20T11:33:36Z] intent: create GIF fallback from `assets/minecard.webm`; update `README.md` + `docs/index.md` video sections to include fallback content for unsupported video.
+- [2026-02-20T11:29:35Z] handoff: created `assets/minecard-image-1.png` from `assets/minecard.webm` at `00:00:10`; verified `1920x1080`.
+- [2026-02-20T11:29:35Z] test: confirmed output file exists and dimensions via `ffprobe`.
+- [2026-02-20T11:29:09Z] progress: updated subagent index/own record for this session.
+- [2026-02-20T11:29:09Z] intent: extract a new still image from `assets/minecard.webm`; keep change minimal.
+
+## Files Touched
+- `README.md`
+- `docs/index.md`
+- `docs/public/assets/minecard.gif`
+- `assets/minecard.gif`
+- `assets/minecard-image-1.png`
+- `docs/subagents/INDEX.md`
+- `docs/subagents/agents/codex-generate-minecard-image-20260220T112900Z-vsxr.md`
+
+## Assumptions
+- User wants a still frame image generated from the video source.
+- User now wants GIF fallback available where WebM playback may fail (README/docs).
+
+## Open Questions / Blockers
+- none currently
+
+## Next Step
+- Await user review; tune GIF size/quality if needed.
diff --git a/docs/subagents/agents/codex-preserve-linebreak-display-20260220T110436Z-r8f1.md b/docs/subagents/agents/codex-preserve-linebreak-display-20260220T110436Z-r8f1.md
new file mode 100644
index 0000000..5869649
--- /dev/null
+++ b/docs/subagents/agents/codex-preserve-linebreak-display-20260220T110436Z-r8f1.md
@@ -0,0 +1,29 @@
+# Agent: `codex-preserve-linebreak-display-20260220T110436Z-r8f1`
+
+- alias: `codex-preserve-linebreak-display`
+- mission: `Fix visible overlay display artifact when subtitleStyle.preserveLineBreaks is disabled.`
+- status: `done`
+- branch: `main`
+- started_at: `2026-02-20T11:04:36Z`
+- heartbeat_minutes: `5`
+- backlog_ticket: `TASK-91`
+
+## Current Work (newest first)
+- [2026-02-20T11:10:51Z] follow-up: switched non-preserve token rendering to source-aligned inline segments; skip unmatched overlap tokens that caused duplicate phrase rendering; added regression test for two-line + duplicate-tail token payload.
+- [2026-02-20T11:07:29Z] handoff: patched non-preserve token render path to flatten CR/LF into spaces (no `
` insertion); added regression test for formatter helper; build + renderer test pass.
+- [2026-02-20T11:04:36Z] intent: investigate renderer regression reported when `subtitleStyle.preserveLineBreaks=false`; add targeted regression test + minimal fix.
+- [2026-02-20T11:04:36Z] planned files: `src/renderer/subtitle-render.ts`, `src/renderer/subtitle-render.test.ts`, `docs/subagents/*`.
+- [2026-02-20T11:04:36Z] assumptions: artifact originates in token render path for non-preserve mode, likely newline handling in token surfaces.
+
+## Files Touched
+- `docs/subagents/INDEX.md`
+- `docs/subagents/collaboration.md`
+- `docs/subagents/agents/codex-preserve-linebreak-display-20260220T110436Z-r8f1.md`
+- `src/renderer/subtitle-render.ts`
+- `src/renderer/subtitle-render.test.ts`
+
+## Open Questions / Blockers
+- none.
+
+## Next Step
+- optional: capture one problematic payload from logs and extend formatter coverage if additional control chars appear.
diff --git a/docs/subagents/agents/codex-vitepress-subagents-ignore-20260220T101755Z-k2m9.md b/docs/subagents/agents/codex-vitepress-subagents-ignore-20260220T101755Z-k2m9.md
new file mode 100644
index 0000000..3fe2ade
--- /dev/null
+++ b/docs/subagents/agents/codex-vitepress-subagents-ignore-20260220T101755Z-k2m9.md
@@ -0,0 +1,31 @@
+# Agent: codex-vitepress-subagents-ignore-20260220T101755Z-k2m9
+
+- alias: codex-vitepress-subagents-ignore
+- mission: Exclude docs/subagents from VitePress build
+- status: completed
+- branch: main
+- started_at: 2026-02-20T10:17:55Z
+- heartbeat_minutes: 5
+
+## Current Work (newest first)
+
+- [2026-02-20T10:18:30Z] handoff: added `srcExclude: ['subagents/**']` in `docs/.vitepress/config.ts`; verified `bun run docs:build` passes and no `subagents` routes emitted.
+- [2026-02-20T10:17:55Z] intent: answer whether VitePress can ignore `docs/subagents` and implement exclusion in config.
+
+## Files Touched
+
+- `docs/.vitepress/config.ts`
+- `docs/subagents/INDEX.md`
+- `docs/subagents/agents/codex-vitepress-subagents-ignore-20260220T101755Z-k2m9.md`
+
+## Assumptions
+
+- Excluding `docs/subagents/**` from docs routes is desired for both local dev and production docs builds.
+
+## Open Questions / Blockers
+
+- none
+
+## Next Step
+
+- none