Full Changelog:
[New Features]
- Added Native Translation Mode:
- Whisper model now fully supports Translating any language to English
- Added 'task' and 'language' parameters to Transcriber core
- Dual Hotkey Support:
- Added separate Global Hotkeys for Transcribe (default F8) and Translate (default F10)
- Both hotkeys are fully customizable in Settings
- Engine dynamically switches modes based on which key is pressed
[UI/UX Improvements]
- Settings Window:
- Widened Hotkey Input fields (240px) to accommodate long combinations
- Added Pretty-Printing for hotkey sequences (e.g. 'ctrl+f9' display as 'Ctrl + F9')
- Replaced Country Code dropdown with Full Language Names (99+ languages)
- Made Language Dropdown scrollable (max height 300px) to prevent screen overflow
- Removed redundant 'Task' selector (replaced by dedicated hotkeys)
- System Tray:
- Tooltip now displays both Transcribe and Translate hotkeys
- Tooltip hotkeys are formatted readably
[Core & Performance]
- Bootstrapper:
- Implemented Smart Incremental Sync
- Now checks filesize and content hash before copying files
- Drastically reduces startup time for subsequent runs
- Preserves user settings.json during updates
- Backend:
- Fixed HotkeyManager to support dynamic configuration keys
- Fixed Language Lock: selecting a language now correctly forces the model to use it
- Refactored bridge/main connection for language list handling
Problem:
The overlay window, even when fully transparent or visually hidden (opacity 0), was still intercepting mouse events. This created a 'dead zone' on the screen where users could not click through to applications behind the overlay. This occurred because the low-level window hook was answering 'HTCAPTION' to hit tests regardless of the UI state.
Solution:
1. Modified 'WindowHook' to accept an 'enabled' state.
2. When disabled, 'WM_NCHITTEST' now returns 'HTTRANSPARENT', allowing the OS to pass the click to the window underneath.
3. Updated 'main.py' to toggle this hook state dynamically:
- ENABLED when Recording or Processing (UI is visible/active).
- DISABLED when Idling (UI is hidden/transparent).
Result:
The overlay is now completely non-intrusive when not in use.