Context
Admins can extract highlights (short video clips of council members speaking) from a meeting page. The generated video has burned-in subtitles and a speaker-name overlay, both currently rendered as white text on a black background.
Problem
When a speaker talks a lot, the subtitle box grows and covers the speaker's face, which looks bad in the exported clip.
Request
Change the subtitle styling so it doesn't obscure the speaker. Options, in order of preference:
- Render subtitles as white text with no background (e.g. white text with a subtle shadow/outline for legibility), instead of a solid black box; or
- Give the admin a choice of subtitle style/format at generation time (e.g. "white text on black box" vs "white text, no background").
Important: the styling lives in the external render service, not this repo
Highlight videos are generated server-side by an external media-processing service (TASK_API_URL) that burns the captions and speaker name into the MP4. This repo only sends render options and plays back the finished video — there is no client-side caption/subtitle overlay to restyle here.
So the actual white-text/black-background look is defined in that external render service (likely an ffmpeg/remotion-style renderer in a separate repo). The visual change must be implemented there. This repo needs to plumb through a new option.
What needs to change in THIS repo
- Add a subtitle-style field to the render request type:
GenerateHighlightRequest.render in src/lib/apiTypes.ts (~lines 390–404). Today it only has includeCaptions, includeSpeakerOverlay, aspectRatio, socialOptions — nothing for subtitle text color/background.
- Wire a control into the generation dialog:
src/components/meetings/HighlightPreviewDialog.tsx (render options at ~lines 48–52; the "Formatting" fieldset ~lines 216–252).
- Pass it through the render payload:
src/lib/tasks/generateHighlight.ts (~lines 118–126), which dispatches to the external server via src/lib/tasks/tasks.ts:120.
- If the choice should be remembered per highlight (not just per session), a new column on
model Highlight would be needed — prisma/schema.prisma (~lines 656–682). Currently render options are session-scoped only (not persisted).
What needs to change in the EXTERNAL render service (separate repo/service behind TASK_API_URL)
- Actually apply the new subtitle style (white, no background / outline) when burning captions into the video.
- Accept and honor the new style field from the render request.
Reference (current appearance options)
includeCaptions (default true), includeSpeakerOverlay (default true), aspectRatio (default | social-9x16), socialOptions (margins/background for the 9x16 format only — not the subtitle box).
- Docs:
docs/guides/meeting-highlights.md.
Acceptance criteria
- Exported highlights no longer show a large black subtitle box covering the speaker's face.
- Either subtitles are white with no solid background by default, or the admin can pick a subtitle style in the generation dialog.
- Speaker-name overlay remains readable.
Context
Admins can extract highlights (short video clips of council members speaking) from a meeting page. The generated video has burned-in subtitles and a speaker-name overlay, both currently rendered as white text on a black background.
Problem
When a speaker talks a lot, the subtitle box grows and covers the speaker's face, which looks bad in the exported clip.
Request
Change the subtitle styling so it doesn't obscure the speaker. Options, in order of preference:
Important: the styling lives in the external render service, not this repo
Highlight videos are generated server-side by an external media-processing service (
TASK_API_URL) that burns the captions and speaker name into the MP4. This repo only sends render options and plays back the finished video — there is no client-side caption/subtitle overlay to restyle here.So the actual white-text/black-background look is defined in that external render service (likely an ffmpeg/remotion-style renderer in a separate repo). The visual change must be implemented there. This repo needs to plumb through a new option.
What needs to change in THIS repo
GenerateHighlightRequest.renderinsrc/lib/apiTypes.ts(~lines 390–404). Today it only hasincludeCaptions,includeSpeakerOverlay,aspectRatio,socialOptions— nothing for subtitle text color/background.src/components/meetings/HighlightPreviewDialog.tsx(render options at ~lines 48–52; the "Formatting" fieldset ~lines 216–252).src/lib/tasks/generateHighlight.ts(~lines 118–126), which dispatches to the external server viasrc/lib/tasks/tasks.ts:120.model Highlightwould be needed —prisma/schema.prisma(~lines 656–682). Currently render options are session-scoped only (not persisted).What needs to change in the EXTERNAL render service (separate repo/service behind
TASK_API_URL)Reference (current appearance options)
includeCaptions(default true),includeSpeakerOverlay(default true),aspectRatio(default|social-9x16),socialOptions(margins/background for the 9x16 format only — not the subtitle box).docs/guides/meeting-highlights.md.Acceptance criteria