What's New
π Expanded Language Support β 59 Languages
TermSub now supports 59 source and target languages, covering the full OpenAI Audio API (Whisper / GPT-4o transcribe) supported language set.
- Searchable language dropdown β type to find any language by English or native name (e.g., "EspaΓ±ol" or "Spanish")
- Pinned common languages β the 10 most spoken languages plus Persian (Farsi) appear at the top for one-click access
- Native-name display β each language shown as
English β English,Arabic β Ψ§ΩΨΉΨ±Ψ¨ΩΨ©,Persian (Farsi) β ΩΨ§Ψ±Ψ³Ϋ - New centralized
app/core/languages.pymodule replaces hardcoded dictionaries across the codebase
β±οΈ Editable Timecodes in Subtitle Timeline
Subtitle segments can now have their timestamps edited directly in the web UI.
PUT /segments/{segment_id}acceptsstart_timeandend_timefields- Chronological validation ensures
start_timeis strictly beforeend_time - Smart session handling prevents DB refresh from undoing edits on commit
- Unified timestamp formatting utilities (
format_timestamp,format_timestamp_vtt) across all export formats
π΅ Audio Chunking for Large Files
Audio files that exceed OpenAI Whisper's 25 MB upload limit are now automatically split and transcribed seamlessly.
app/core/audio.pyβ new 196-line stateless audio utility modulechunk_audio_if_needed()β intelligently splits audio at ~10-minute intervals (well under the 25 MB threshold)- Fast FFmpeg stream-copy splitting β no re-encoding, chunks are produced in seconds
- Seamless timestamp merging β chunk results are shifted by cumulative offsets to produce a single continuous segment list relative to the original audio
- Per-chunk progress logging β each chunk reports its progress via the existing WebSocket pipeline
UI Improvements
| Feature | Description |
|---|---|
| Searchable language dropdown | Tom Select integration replaces native <select> with type-ahead search across all 59 languages |
| Dark mode for dropdowns | Complete CSS overrides for Tom Select in dark theme β no more blinding light dropdowns |
| "How to Use" modal | Built-in onboarding guide accessible from the UI β walkthrough of upload β transcribe β review β export |
| Version indicator | New GET /api/version endpoint + footer badge showing the running app version |
| Toast notifications | Non-blocking toast messages for user feedback (success, error, info) |
| Enhanced timeline cards | Editable timestamps with contenteditable, improved Add/Split/Remove buttons with hover states |
| Activity log refinements | Cleaner message formatting, consistent progress reporting across all pipeline stages |
Export Pipeline Improvements
- Fixed DB session lifecycle in all export endpoints (SRT, VTT, TXT, JSON) β content is now generated while the session is still open, preventing lazy-loading errors
- Sanitized export filenames β derived from the original video filename for consistency
- Unified timestamp formatting β
format_timestamp()andformat_timestamp_vtt()used consistently across SRT and WebVTT exporters
Bug Fixes
- MIT license copyright year corrected from 2025 β 2026
- Leading silence preserved β first subtitle timestamp now correctly respects leading silence in the audio
- Import sorting fixed in test files for consistent style
- OpenAI 429 retry logic β longer exponential backoff for rate-limited batches so they wait and retry instead of being dropped
Testing
- New
tests/test_audio_chunking.pyβ 186 lines of comprehensive tests covering:- Chunking decision logic (under/over size threshold)
- Offset accumulation across multiple chunks
- FFmpeg integration test (skipped if FFmpeg not installed)
- Full chunked transcription orchestration with cleanup verification
Migration Notes
No database migrations required for this release. The changes are fully backward-compatible with existing v2.0.0 installations.
Docker Deployment
docker compose pull
docker compose up --buildLocal Development
git pull origin main
source venv/bin/activate
pip install -r requirements.txt
# Restart Celery worker and FastAPI serverTermSub is a production-ready FastAPI application for AI-powered video transcription, translation, and terminology management β with particular strength for Persian (Farsi) and RTL languages.