Changelog
All notable changes to MioSub
All notable changes to this project will be documented in this file.
[3.0.20] - 2026-02-26
Fixes
- macOS: Switch QuickJS engine from cosmopolitan APE builds to quickjs-ng native binaries, fixing codesign failures on macOS (Ref: MIOSUB-38).
- Glossary: Guard against undefined glossary terms in LLM responses, preventing crashes during glossary merging (Fixes MIOSUB-3A).
- JSON Parser: Strip markdown code fences from JSON responses when third-party proxies ignore
responseMimeType, with improved error position logging (Fixes MIOSUB-11). - Aligner: Wrap CTC aligner audio and model paths with
ensureAsciiSafePath(), fixing alignment failures on non-ASCII paths (Fixes MIOSUB-3H).
[3.0.19] - 2026-02-22
Features
- Glossary: Added "Duplicate" button to glossary sidebar and widened the modal layout to reduce name truncation.
Fixes
- Linux: Fixed binary updates silently failing on AppImage by writing to a writable overlay directory instead of the read-only FUSE mount (Fixes MIOSUB-36).
- Linux: Added versioned
libonnxruntime.so.1soname required by the Linux dynamic linker at runtime. - i18n: Added 27 missing translation keys for English and Japanese locales.
[3.0.18] - 2026-02-21
Features
- Workspace: Added a desktop sidebar toggle and responsive editor panel expansion so the subtitle workspace can use more horizontal space when the sidebar is hidden.
Fixes
- Storage (macOS): Disabled portable-path storage mode on macOS and always use
userDatapaths, preventing startup/write failures caused by App Translocation read-only locations (Fixes MIOSUB-32). - Editor: Prevented dropdown menus from closing during playback-driven auto-scroll in the subtitle list.
- Subtitles (ASS): Generate ASS
PlayResand font sizes from actual video dimensions in preview/export/compression flows, fixing incorrect subtitle scaling on non-16:9 videos.
Chore
- Dev Tooling: Normalized Windows path handling in local hook trackers and ignored
cpp-ort-aligner/source directory for cleaner repository state.
[3.0.17] - 2026-02-20
Features
- Aligner: Support Omnilingual ASR CTC 300M model with automatic model type detection (MMS vs Omnilingual) and aligner version compatibility check (requires v0.2.0+).
- Aligner: Add warning-only preflight flow — version warnings show "Continue Anyway" instead of blocking generation.
Fixes
- Binary: Fix macOS/Linux file picker incorrectly showing Windows
.exefilter for whisper/aligner executables (Ref: MIOSUB-2P). - Binary: Gracefully handle missing binaries — return "Not found" instead of crashing on version detection.
- UX: Extract human-readable error messages from Gemini SDK JSON error responses instead of showing raw JSON to users.
Refactor
- Update: Overhaul update service for GitHub repo migration, add HTTP redirect handling and improved error logging.
[3.0.16] - 2026-02-17
Performance
- Pipeline: Reduce default chunk duration from 300s to 120s for better transcription accuracy (MMS benchmark shows lower alignment error on shorter chunks).
- Aligner: Raise CTC aligner memory threshold from 512MB to 1GB to prevent OOM kills on 8GB M1 Macs.
Fixes
- Build: Re-sign macOS ZIP after patching
distribution.jsonto preserve code signature seal. FixesKERN_CODESIGN_ERRORcrash when launching binaries from portable (ZIP) installs on Apple Silicon. - Binary Updates: Install companion libraries (e.g.
libonnxruntime.dylib) alongside binary updates, with atomic backup/restore and ad-hoc codesigning on macOS.
[3.0.15] - 2026-02-12
Features
- Local Whisper: Auto fallback to CPU when GPU transcription fails, so users with incompatible GPU drivers can still transcribe without manual configuration.
Fixes
- Compression: Copy subtitle file to a safe temp path when the filename contains special characters (emoji, CJK, apostrophes, parentheses), fixing ffmpeg filter graph parse errors.
- Speaker Detection: Use frequency-based speaker name extraction to prevent false positives from partial matches in subtitle text.
- Aligner: Add memory pre-check before CTC alignment and show warning toasts when available memory is too low, preventing silent OOM crashes on low-memory devices.
- UI: Truncate long error messages across all error display components to prevent layout overflow.
- Glossary: Prevent accidental modal closure during term editing.
Chore
- FFmpeg: Update ffmpeg download URLs to n8.0 release.
Documentation
- FAQ: Comprehensive FAQ update based on common user issues.
[3.0.14] - 2026-02-09
Features
- Glossary: Added CSV import support with custom parser handling quoted fields, escaped quotes, and automatic header detection. Import button now opens a dropdown menu with JSON/CSV options and a format hint tooltip.
- Glossary: Auto-detect glossary target language on JSON import when not specified in the file.
- Settings: Added option to remove trailing punctuation from translated subtitles.
Fixes
- i18n: Fixed hardcoded target language in Gemini prompt schemas and EndToEnd settings merge, ensuring dynamic language selection works correctly.
- Storage: Fixed startup crash when storage directory does not exist by ensuring the directory is created before access.
[3.0.13] - 2026-02-08
Features
- Preflight Check: Added warning severity level with "Continue Anyway" button. Glossary language mismatches now show as amber warnings instead of blocking errors.
- Glossary: Added target language field to glossaries with auto-detection via ELD. Glossary manager now shows a language badge and dropdown selector per glossary.
- Settings: Added clear button for custom whisper binary path to easily reset to bundled default.
- Binary Updates: Added whisper-cli to in-app binary update system alongside aligner and yt-dlp.
Fixes
- Translation: Fixed hardcoded "Simplified Chinese" defaults in 7 prompt functions that caused non-Chinese target languages to still produce Chinese output.
- Glossary: Added blocking preflight check when active glossary language does not match target language, preventing wrong-language terms from being injected into prompts.
- Local Whisper: Rebuilt whisper.cpp as statically linked binary, fixing macOS crash caused by missing
libwhisper.dylib. - Local Whisper: Fixed retry loop continuing after user cancellation. Aborted requests now fail fast instead of retrying.
- FFmpeg: Fixed spawn args not split for concat extraction, causing long video (>2h) speaker analysis to fail with exit code 2880417800.
- UI: Fixed long toast messages breaking layout by adding max width and text truncation.
[3.0.12] - 2026-02-06
Fixes
- Local Whisper: Added ASCII-safe path workaround for non-ASCII model paths on Windows. Creates temporary symlinks so third-party whisper binaries can handle Chinese/CJK paths without crashes.
- Local Whisper: Fixed version detection silently falling back to hardcoded v1.7.4. Now tries
--versionfirst, then-houtput, then reportsunknown. - Local Whisper: Updated bundled whisper binary to v1.8.4 with upstream path encoding fix (
MultiByteToWideCharinstead of brokencodecvt_utf8). - Settings: Fixed whisper binary path reading from wrong settings key.
- Electron: Fixed backend log subscription not re-initializing after React StrictMode cleanup.
[3.0.11] - 2026-02-06
Fixes
- Long Video Mode: Fixed all entry points to check video duration before decoding audio. Previously, end-to-end generation and batch regenerate would decode entire audio into memory before checking duration, causing OOM crashes for videos longer than 2 hours.
- Long Video Mode: Removed the 6-hour video duration limit. With on-demand FFmpeg extraction now fully functional for videos over 2 hours, there's no longer a need for artificial duration restrictions.
[3.0.10] - 2026-02-06
Fixes
- macOS Auto-Update: Fixed SHA512 checksum mismatch regression. The build script now recalculates hashes after patching ZIP files with distribution mode, ensuring
latest-mac.ymlcontains correct checksums. - Video Preview: Added cache versioning to invalidate old transcoded files after updates. Users upgrading from v3.0.8/v3.0.9 will now get fresh previews with streaming optimizations instead of using stale cache.
[3.0.9] - 2026-02-05
Features
- Binary Updates: Added in-app update support for aligner and yt-dlp binaries. The header now shows update notifications when new versions are available, with one-click download and installation.
- Progress Smoothing: Added smooth progress bar animations with exponential easing interpolation for download and video preview operations.
Fixes
- Long Video Mode: Comprehensive fix for videos longer than 2 hours. Speaker analysis and glossary extraction now work correctly using fixed-interval FFmpeg sampling instead of accessing null audio buffer.
- YouTube Download: Fixed issue where AI-dubbed audio tracks were downloaded instead of original audio. Now prefers original audio track using
format_note*=originalselector. - macOS: Added ad-hoc code signing for bundled binaries (ffmpeg, whisper, aligner, yt-dlp), fixing installation issues on Apple Silicon Macs.
- Electron: Fixed logger stack overflow caused by Sentry instrumentation triggering infinite recursion when accessing Error.stack.
- Electron: Fixed "Object has been destroyed" crash in update service by adding isDestroyed() checks before sending IPC messages.
- Electron: Fixed mainWindow undefined error in forceClose handler by using BrowserWindow.getFocusedWindow() fallback.
- Electron: Fixed package.json path resolution in packaged app by using app.getAppPath() instead of __dirname.
- Video Preview: Optimized audio streaming to prevent Chromium OOM crashes by adding 1-second fragment duration and forcing 48kHz sample rate.
- Audio Decoder: Added 500MB threshold to prevent Web Audio API fallback for large files that would cause OOM.
Chore
- Added typecheck script that runs before builds to catch type errors early.
[3.0.8] - 2026-02-04
Features
- Preflight Check: Added configuration validation before generation starts. Validates API keys, Whisper model files (GGML/GGUF format), and CTC alignment model directories. Shows clear error messages with links to settings and documentation.
- Close Confirmation: Added warning dialog when closing the app with active tasks (generation, download, compression, transcoding). Prevents accidental data loss.
- Audio Extraction: Added support for cancelling audio extraction operations.
Fixes
- Windows: Fixed Unicode path encoding issues once and for all. Replaced cmd.exe wrapper with direct binary spawning, ensuring Chinese/Japanese/Korean paths work correctly without code page conversion issues.
- Video Preview: Fixed "ReadableStream is already closed" error when switching from live transcoding to static playback mode for MKV files.
[3.0.7] - 2026-02-03
Fixes
- CTC Aligner: Fixed language detection failure that caused alignment errors for CJK languages. The
eldlibrary now uses static imports for proper Vite bundling, with CJK character-based fallback detection for Japanese, Korean, and Chinese. - Gemini API: Fixed unnecessary API calls when JSON parsing fails. The truncation continuation logic now only triggers on explicit
MAX_TOKENSfinish reason, preventing wasted retries on malformed responses. - macOS: Fixed auto-update SHA512 checksum mismatch. The
latest-mac.ymlnow correctly contains ZIP file hashes instead of DMG hashes.
[3.0.6] - 2026-02-03
Fixes
- Generation: Display aggregated error messages when subtitle generation fails, helping users understand what went wrong instead of generic failure messages.
- Windows: Fixed "C:\Program is not recognized" error when the app is installed in paths containing spaces (e.g.,
C:\Program Files\...). - macOS: Enabled auto-update functionality by adding ZIP target alongside DMG builds.
Refactor
- UI: Centered toast notifications for better visibility.
[3.0.5] - 2026-02-03
Fixes
- Pipeline: Fixed crash when processing videos longer than 2 hours. The long video mode now correctly extracts audio segments on-demand instead of accessing null audio buffer.
- Electron: Fixed ENOENT error when saving subtitle files. The output directory is now recreated if deleted by user during processing.
- macOS: Fixed missing
libonnxruntime.dylibthat caused CTC forced alignment to fail on macOS. The dynamic library is now included in the app bundle.
[3.0.4] - 2026-02-02
Important: Users who downloaded v3.0.3 should update immediately. This release fixes a critical bug that prevented downloading certain videos and generating subtitles for them.
Fixes
- Electron: Fixed shell argument escaping to prevent URL parsing errors. URLs containing special characters (like
&in Bilibili'svd_sourceparameter) were incorrectly interpreted as command separators on Windows, causing video downloads and subtitle generation to fail.
[3.0.3] - 2026-02-02
Fixes
- Electron: Fixed Windows Unicode path encoding issues affecting Whisper, yt-dlp, and CTC aligner when paths contain non-ASCII characters (Chinese, Japanese, etc.).
- Electron: Fixed IPC crash when window is destroyed during long-running operations (audio extraction, compression, download progress).
- Editor: Added regex syntax error feedback with debounced validation in search & replace panel.
Refactor
- Error Handling: Added error codes to
UserActionableErrorfor type-safe error handling.
[3.0.2] - 2026-02-01
Fixes
- Video Preview: Fixed issue where cancelling video preview would incorrectly trigger CPU fallback transcoding.
- Whisper: Improved model file validation and fixed filename encoding issues for non-ASCII paths.
[3.0.1] - 2026-02-01
Features
- Long Video Support: Added on-demand audio segment extraction for videos longer than 2 hours, preventing out-of-memory issues by extracting audio segments via FFmpeg instead of loading the entire audio into memory.
Fixes
- Electron: Fixed duplicate IPC handler registration in update service that could cause errors on app restart.
- Path Handling: Improved filename sanitization to handle more special characters (shell metacharacters, smart quotes) that could cause file creation failures.
- Path Handling: Limited yt-dlp output filename to 80 characters to avoid path length issues on Windows.
- FFmpeg: Fixed subtitle path escaping for single quotes in FFmpeg filter syntax.
Refactor
- Error Handling: Introduced
UserActionableErrorclass for better error categorization, preventing user-resolvable errors (API key, quota, billing) from being reported to Sentry.
[3.0.0] - 2026-01-31
Highlights
This major release brings significant architectural improvements, new features, and better stability.
New Features
- Project Renamed to MioSub: The project has been officially renamed from Gemini-Subtitle-Pro to MioSub.
- CTC Forced Aligner: Integrated CTC-based forced alignment for precise subtitle timing synchronization.
- Audio-Only File Support: Full support for audio files (MP3, WAV, etc.) without video, including optimized player UI.
- Editor Search & Replace: New search and replace functionality in the subtitle editor for batch text modifications.
- Manual Whisper Path Selection: Users can now manually specify the Whisper executable path for custom installations.
- Auto-Update System: Built-in update detection and automatic update support for seamless upgrades.
- Startup Splash Screen: New splash screen prevents white flash during application startup.
- Enhanced Logging System: New logging system with JSON view, log viewer UI, and improved debugging capabilities.
- Linux ARM64 Support: Added build support for Linux ARM64 architecture.
Improvements
- UI Overhaul: Redesigned editor, layout components, and settings panel for a more unified look and smoother interactions.
- Built-in CJK Fonts: Integrated NotoSans JP/SC fonts for better subtitle rendering.
- React Compiler Integration: Integrated React Compiler v1.0 for automatic performance optimizations.
- State Management Migration: Migrated from React Context to Zustand stores for better performance and maintainability.
- JSON Parsing Enhancement: Unified JSON parsing with jsonrepair library for better handling of malformed AI responses.
- Cancellation Improvements: Transcoding and download tasks now support cancellation with automatic temp file cleanup.
- Error Tracking: Integrated Sentry for error tracking and analytics to improve stability.
- Resource Cleanup: Fixed multiple resource leaks and improved memory management throughout the application.
- Subtitle Editor Performance: Fixed 10+ performance issues in the subtitle editor for smoother editing experience.
- Pipeline Robustness: Enhanced cancellation handling and error boundaries in the generation pipeline.
- Bundle Optimization: Improved bundle splitting and reduced application size.
Documentation
- New Documentation Site: Migrated documentation to Fumadocs with full i18n support (English/Chinese).
- Redesigned README: New landing page style README with improved layout and badges.
Other Changes
- License Change: Switched to AGPL-3.0 license.
- macOS x64 Cross-Compile: Added macOS x64 cross-compilation support on ARM64 runners.
- CI Improvements: Faster builds with binary caching and newer OS runners.
[2.13.0] - 2026-01-15
Features
- Batch Operations: Replace "Fix Timestamps" with "Regenerate" - full pipeline re-run (transcription → refinement → alignment → translation) on selected batches with optional user hints.
- RegenerateModal: New modal for regenerate operation with transcription and translation hint inputs.
- Speaker Manager: Add custom color editing and merge functionality for speakers.
- About Tab: Add system info display with Whisper details, GPU detection, and separate log path.
- Logging: Enhanced logging system with JSON view and IPC handlers.
- Editor: Add subtitle validation rules with visual markers for timing issues.
- i18n: Complete Japanese (ja-JP) translations and regenerate modal strings for all locales.
Fixes
- Pipeline: Update generation hooks and configuration to support new step architecture.
- UI: Improve glossary configuration explanation and color picker validation.
- Core: Resolve lint warnings and binary path resolution issues.
- Video Preview: Fix ASS renderer dependency on collapsed state.
- Reconciler: Stop inheriting comment field after processing.
- Editor: Reset auto-scroll when exiting filter mode, support CANCELLED status.
Refactor
- Electron: Portable storage paths (config/logs in exe directory) and async hardware detection for faster startup.
- Pipeline: Extract shared context to pipelineCore.ts, add ProofreadStep for future integration.
- Pipeline: Simplify chunk processor architecture with new step-based design.
- Batch: Split operations.ts into proofread.ts and regenerate.ts for cleaner separation.
- Prompts: Remove fix_timestamps mode, simplify to refinement/translation/proofread only.
- Settings: Migrate console logs to logger, split settings modal into modular components.
- Workspace: Optimize auto-save and update data types for speaker profiles.
Chore
- i18n Checker: Add --check-missing and --check-unused flags with improved detection.
- Config: Increase subtitle max width (55→65) and min split width (10→20).
- Config: Disable thinking level for cost optimization (can be re-enabled).
- OpenSpec: Archive completed proposals and add permanent specs for batch operations.
- Build: Update build system for git commit hash injection.
[2.12.1] - 2026-01-08
Features
- Video Preview: Improve aspect ratio handling and loading state.
Fixes
- Config: Adjust thinking level to medium for refinement and translation.
- Workspace: Prevent snapshot history clearing when loading new files.
- API: Include
text_originalin translation schema for reference. - Pipeline: Fix diarization flag logic in batch operations.
- Subtitle: Improve non-speech filtering and cleanup test exports.
Refactor
- Pipeline: Simplify translation payload structure and improve metadata inheritance.
[2.12.0] - 2026-01-06
Features
- Alignment: Complete CTC forced aligner integration
- Pipeline: Add reconciler for metadata preservation
- Subtitle: Implement visual width based splitting
- Debug: Add granular mock API controls
- Pipeline: Enhance metadata preservation and processing robustness
- Alignment: Add CTC aligner service and settings UI
Fixes
- Subtitle: Handle undefined speaker color
- Snapshots: Include date in timestamp display
- I18n: Add missing translation keys for all locales
- Lint: Add missing hook dependencies
- UI: Isolate component errors with granular boundaries
- I18n: Add missing localization keys for subtitle generation pipeline
- Subtitle: Service improvements (generator, parser, time)
Refactor
- Naming: Rename glossary-state.ts to glossaryState.ts
- Structure: Update services and hooks after component restructure
- Types: Centralize type definitions and update imports
- Components: Update components and fix imports after restructure
- I18n: Localize hardcoded Chinese strings and improve extraction script
Chore
- Skills: Add release-version skill
- Config: Add Claude AI development config
- Scripts: Add i18n key validation script
- Deps: Update dependencies and types
[2.11.0] - 2026-01-01
Features
- Video Preview: Implemented comprehensive video preview system with smart caching and cache management UI.
- Rendering: Added WYSIWYG subtitle rendering using
assjsfor accurate style representation (font, size, color, etc.). - UI: Added source text toggle in video preview and improved internationalization support.
Fixes
- i18n: Added missing translations for auto-scroll toggle and API key error messages.
- Cache: Fixed i18n and cleanup logic in cache management.
Chore
- Deps: Removed
react-playerin favor of native video handling and updated dependencies. - Cleanup: Removed unused code in
ytdlpmodule and fixed lint warnings.
[2.10.2] - 2025-12-28
Features
- i18n: Added Japanese localization (ja-JP) for full multi-language support.
Fixes
- i18n: Shortened home page card descriptions for better layout on smaller screens.
- i18n: Polished translations for more natural phrasing across all supported languages.
- Batch Processing: Fixed timestamp conversion to use relative time before sending to Gemini API for improved accuracy.
- Build: Fixed critical issue where locale files were missing in the packaged application (ENOENT error).
[2.10.1] - 2025-12-25
Features
- Settings: Language preference is now stored in unified app settings for persistence across sessions.
- i18n Sync: Added language synchronization between renderer and main process for consistent localization.
- Electron: Added i18n support for main process dialogs and native UI elements.
Fixes
- i18n: Fixed language initialization to occur at app startup instead of waiting for settings modal, ensuring correct language from first render.
Refactor
- LanguageSwitcher: Simplified current value logic for cleaner implementation.
Documentation
- i18n: Added infrastructure documentation for the v2.10.0 internationalization system.
[2.10.0] - 2025-12-25
Features
- Internationalization (i18n): Complete multi-language support implementation across the entire application.
- Setup i18n infrastructure with
react-i18next(Phase 1). - Transformed all major components: HomePage, SettingsModal, SubtitleEditor, WorkspacePage, DownloadPage, CompressionPage, Editor components, and EndToEndWizard (Phases 2-12).
- Added language switcher for users to change application language.
- Created comprehensive translation files for Settings, UI components, and all modals.
- Extracted Chinese strings with automated scripts for translation workflow.
- Setup i18n infrastructure with
Fixes
- Hooks: Fixed race condition in native subtitle import error handling.
- Pipeline: Correctly pass width and height parameters for video compression.
Documentation
- Bilingual Docs: Added English versions of README and ARCHITECTURE documentation for international users.
[2.9.14] - 2025-12-20
Documentation
- Architecture: Updated architecture documentation to reflect recent refactoring, including the new Generation Service, centralized timers, and component structure.
[2.9.13] - 2025-12-20
Features
- Timeline: Added robust timeline validation with retry mechanisms and visual UI markers to identify and correct subtitle overlap or timing issues.
Refactor
- Workspace: Refactored
useWorkspaceLogicby extracting hooks into separate, focused modules to improve code maintainability and readability. - Translation: Integrated timeline validation logic directly into the translation flow for better reliability.
Style
- Linting: Fixed various linting issues and verified ESLint configuration to ensure code quality standards.
[2.9.12] - 2025-12-19
Fixes
- Glossary (E2E Mode): Fixed issue where user's explicit glossary selection was not respected in End-to-End mode.
- Glossary (Runtime): Prioritized runtime glossary override in
getActiveGlossaryTermsto ensure correct term resolution. - Glossary (Settings): Restored glossary field as a runtime carrier in AppSettings for proper data flow.
Refactor
- Glossary: Simplified glossary access logic and removed legacy items migration code.
- Glossary: Removed deprecated glossary field and associated migration code for cleaner architecture.
- Logging: Standardized log levels with
[DEBUG]/[WARN]/[ERROR]prefixes for better troubleshooting.
Chore
- Cleanup: Removed unused
electron/env.d.tstype declaration. - Cleanup: Removed unused code and fixed deprecated patterns across the codebase.
[2.9.11] - 2025-12-19
Features
- Debug: Added debug artifact saving functionality for troubleshooting and development.
Fixes
- Audio Processing: Merged trailing audio chunks shorter than 30 seconds with the previous chunk to prevent incomplete transcription at the end of files.
- UI (GenrePicker): Fixed issue where the genre picker did not display the current value when first opened.
- Workspace: Speaker count hints now only appear in new project mode, avoiding confusion in existing projects.
- Prompts: Ensured glossary terms have absolute priority over web search results to maintain translation consistency.
Refactor
- API: Updated Gemini API client implementation and revised pricing configuration for latest model tiers.
- Config: Updated default model name configuration.
Documentation
- Architecture: Updated architecture documentation with centralized model configuration and new UI components.
- AI Agents: Added GitHub Copilot instructions for AI coding agents to improve development workflow.
[2.9.10] - 2025-12-18
Features
- Prompts: Added dynamic search-enhanced prompts and improved priority numbering.
- UI: Improved disabled state visual feedback for Toggles.
Fixes
- Prompts: Restored full context-aware translation rules with detailed examples.
- UI: Fixed toggle UI consistency.
- Security: Fixed prompt injection vulnerabilities.
Refactor
- Config: Centralized Gemini model configuration.
[2.9.9] - 2025-12-18
Fixes
- UI: Made project settings collapse logic responsive to zoom level.
- Compatibility: Improved overall zoom level compatibility.
[2.9.8] - 2025-12-17
Features
- UI: Implemented robust web zoom support using CSS transforms and safe layout classes.
- Core: Updated FFmpeg, FFprobe, and yt-dlp executables.
Fixes
- UI: Optimized web zoom safety for Electron and fixed layout responsiveness.
- UI: Ensure correct dropdown positioning across all zoom levels.
- System: Improved snapshot system reliability.
[2.9.7] - 2025-12-16
Features
- Performance: Optimized file loading and improved UI loading indicators.
UI
- Style: Refined overall UI layout and spacing.
Build & Packaging
- FFmpeg: Bundled FFmpeg/FFprobe binaries and optimized path resolution logic.
- CI: Automated changelog inclusion in GitHub releases.
- Docs: Updated README for zip distribution format.
[2.9.6] - 2025-12-16
Features
- UI: Improved High-DPI support and overall UI responsiveness.
Build
- Windows: Switched build target from portable exe to zip for faster application startup.
- Electron: Fixed electron-builder zip configuration.
Chore
- Cleanup: Removed unused AboutModal and related code.
[2.9.5] - 2025-12-16
Features
- UI: Implemented desktop fluid layout updates for better responsiveness.
[2.9.4] - 2025-12-16
Features
- Core: Added shared utility hooks for better
AbortControllersignal handling. - UI: Added new base UI components for consistent design system usage.
Fixes
- UI: Improved settings toggle and input consistency.
Refactor
- UI: Cleaned up redundant wizard components (progress, header, resolution selectors) and simplified Title Editor integration.
[2.9.3] - 2025-12-16
Features
- Speaker Analysis: Enhanced speaker analysis and synchronized settings for better diarization control.
Fixes
- End-to-End: Resolved critical infinite loop in
useEndToEndSubtitleGenerationhook. - Robustness: Improved JSON parsing reliability and error logging.
Refactor
- Cleanup: Repository structure cleanup (Phases 1-2, 5, 7, 9).
Documentation
- Architecture: Updated diagrams for the End-to-End pipeline.
[2.9.2] - 2025-12-15
Features
- End-to-End Pipeline: Auto-advance after successful parsing, persist auto-confirmed glossary terms.
- UI Architecture: Implemented new reusable UI components and unified page layouts.
- Electron: Added context menu support.
Fixes
- End-to-End: Fixed double-click requirement for starting Full Auto mode.
Refactor
- UI Migration: Migrated pages, modals, and settings to new layout and component primitives.
- Prompts: Enforced strict segment boundaries and improved timestamp verification rules.
- Codebase: Unified glossary logic and improved variable naming (
enableDiarization).
[2.9.1] - 2025-12-14
Features
- Speaker Diarization: Added
minSpeakers/maxSpeakershints for improved LLM diarization accuracy. - End-to-End Pipeline: Enhanced input parsing and pipeline handling.
Fixes
- YouTube: Improved URL parsing to correctly handle playlist links.
Refactor
- Path Aliases: Replaced relative imports with absolute aliases (
@/,@electron/) throughout codebase. - UI: Refined
StepConfigandCustomSelectcomponent styling.
Documentation
- Architecture: Updated project architecture documentation.
[2.9.0] - 2025-12-14
Features
- Full Auto Mode: Implemented complete End-to-End pipeline with new wizard UI (
EndToEndWizard), core service (EndToEndPipelineService), and main process integration. - Security: Implemented high-risk security fixes based on Electron best practices audit.
- Error Handling: Added graceful warning for thumbnail download failures.
Fixes
- Core: Miscellaneous improvements to audio decoding, timing accuracy, and UI stability.
- Build: Fixed
ytdlpcompilation issues.
Documentation
- Guides: Added documentation for Full Auto / End-to-End mode.
[2.8.5] - 2025-12-12
Features
- Translation Prompts: Added context-aware translation instructions and tuned Conservative Mode for better timing adherence (0.5s threshold).
Refactor
- UI: Removed redundant StatusBadge and improved toolbar responsiveness.
- Validation: Adjusted subtitle validation duration thresholds.
[2.8.4] - 2025-12-11
Features
- HiDPI Support: Added optimizations for high pixel density screens (Retina/4K), including compact spacing and refined layout.
- Fluid Typography: Implemented viewport-aware font scaling for better readability across different screen sizes.
- Prompt Engineering: Improved translation prompts with "Visual Balance" checks and better filler word removal.
- Hardware Acceleration: Enhanced GPU encoder detection by verifying encoding capability with test frames.
[2.8.3] - 2025-12-11
Features
- Hardware Acceleration: Added hardware acceleration support for video encoding.
- File Handling: Improved file handling in Electron main process.
[2.8.2] - 2025-12-10
Features
- Responsive Layout: Optimized responsive layout and window size limits for better UX.
[2.8.1] - 2025-12-09
Refactor
- Subtitle IDs: Migrated from numeric to string-based IDs to fix AI re-indexing bugs.
Performance
- Token Efficiency: Optimized subtitle ID length to 4 characters for better LLM token usage.
[2.8.0] - 2025-12-09
Features
- Unified Snapshots: Implemented a unified persistent snapshot system for better history management.
- UI Redesign: Redesigned
BatchHeaderwith improved responsive layout and aesthetics.
[2.7.3] - 2025-12-09
Refactor
- Model Names: Unified model names across the codebase and auto-fixed unused imports.
- Hooks Architecture: Split
useWorkspaceLogicinto 4 smaller focused hooks for better maintainability. - Environment Variables: Centralized env vars configuration.
Chore
- Code Quality: Added Prettier + ESLint with pre-commit hooks.
[2.7.2] - 2025-12-06
Features
- Batch Operations: Enhanced
BatchHeaderwith improved bulk editing and speaker assignment. - Speaker Manager: Added batch speaker assignment and improved merge workflow.
Fixes
- Subtitle Editor: Improved row selection and keyboard navigation.
- Workspace Logic: Enhanced state management and undo/redo handling.
[2.7.1] - 2025-12-06
Performance
- Virtualized Subtitle List: Optimized large file rendering using
react-virtuosofor virtualized subtitle lists.
Fixes
- UI Improvements: Minor UI fixes and refinements.
[2.7.0] - 2025-12-06
Features
- Speaker Management: New speaker manager modal with rename, delete, and merge functionality. Added
SpeakerSelectcomponent for easy speaker assignment in subtitle editor. - About Modal: New about dialog displaying version info and project credits.
- Enhanced Logging: Added
MainLoggerfor Electron main process with file persistence and IPC broadcasting. - Editor Improvements: Enhanced
SubtitleEditor,SubtitleRow, andBatchHeaderwith better speaker handling and UI. - File Upload: Improved
FileUploaderwith better drag-and-drop and file validation.
Fixes
- Whisper Service: Enhanced error handling and response parsing.
- Subtitle Parser/Generator: Improved speaker tag handling in SRT/ASS formats.
- Gemini Client: Better retry logic and error recovery.
Performance
- Batch Processing: Optimized batch translation with improved concurrency.
- Workspace Logic: Streamlined state management in
useWorkspaceLogic.
[2.6.0] - 2025-12-05
Features
- Video Compression: Built-in FFmpeg engine supporting H.264/H.265 encoding, CRF quality control, resolution adjustment, and subtitle hardcoding.
- Video Download: Integrated yt-dlp for downloading videos from YouTube and Bilibili.
- Workspace History: New history panel showing session snapshots and persistent project history.
- UI Improvements: Enhanced dropdown menus to open upwards when near the screen bottom.
Fixes
- Compression: Fixed error handling for
isStreamduring compression. - UI: Fixed CRF input field to support decimal values.
- UI: Fixed
CustomSelectdropdown positioning.
Performance
- Gemini API: Optimized client error handling and retry logic.