Skip to content

feat(export): SRT/VTT subtitle export (command + TitleBar entry, #29)#171

Merged
appergb merged 1 commit into
mainfrom
feat/captions
Jun 28, 2026
Merged

feat(export): SRT/VTT subtitle export (command + TitleBar entry, #29)#171
appergb merged 1 commit into
mainfrom
feat/captions

Conversation

@appergb

@appergb appergb commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Wires the existing subtitle_export pure logic into a usable feature: new export_subtitles Tauri command (collect_caption_cues -> export_srt/vtt -> file) + TitleBar Export-Subtitles entry (.srt/.vtt) with save dialog and toast (friendly empty-timeline message). Cue source = existing caption clips (caption_group_id + text). No whisper auto-transcribe (separate). +5 backend tests; domain 209 / tauri 47 / web 184 green.

robot Generated with Claude Code

Wire the pure subtitle_export logic (#29 slice) into a usable feature.

Backend:
- Add `export_subtitles` Tauri command (path + srt/vtt format) that
  collects caption cues from the live timeline via the pure
  `opentake_domain` layer, serializes to SubRip/WebVTT, and writes the
  file. Returns a `SubtitleExportSummary { outPath, cueCount }` so the UI
  can distinguish a real export from an empty (no-caption) timeline.
- Register in generate_handler!. Split the body into a testable
  `write_subtitles` helper; add 5 unit tests (format serde + camelCase
  summary + non-empty SRT/VTT round-trip + zero-cue empty timeline).

Frontend:
- `api.exportSubtitles` mirroring the Rust DTO (lowercase `format`).
- TitleBar "Export Subtitles" entry with an SRT/VTT format popover and
  native save dialog; toasts the cue count, or "timeline has no
  subtitles" when empty. zh-CN + en i18n keys.

Does not include whisper auto-transcription (separate, larger slice).
Cue source is existing caption clips (clip with caption_group_id + text).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@appergb appergb merged commit 04ec854 into main Jun 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant