What's new
What's new in VoiceHotKey — release notes across Mac, Windows, iOS, Android and Linux. Filter by your platform.
Menu bar sparkles during AI actions
- AI-action sparkle animation on the menu bar icon.
Telegram Cyrillic paste fix
- Fix
Cyrillic paste into Telegram — multi-format clipboard (CF_TEXT + CF_UNICODETEXT), GMEM_FIXED HGLOBALs, script-aware ANSI code page.
- Microphone device names in UI: stripped localized "Microphone" prefix for cleaner list.
- Bundled ScSignTool so release signing no longer depends on system PATH.
- Post-close clipboard re-verify and 1 s restore timer.
- New "Voice to text" menu item with smart status bar click handling.
- "Show Floating Animation" setting lets you hide the overlay during recording.
- Fix
paste location when dictating into Notion.
- Cancel transcription by tapping the rotating animation (with 1 s grace period).
- "Cancelled" shown in red in history.
- Improvement
OkHttp read/write timeout reduced from 2 min to 1 min.
Customizable Air Button colors
- Customizable gradient colors for the Air Button, with color pickers in settings.
- Menu bar icon becomes an animated AirButton-style SwiftUI view.
- Fix
amplitude bars freezing after the audio buffer fills up.
- Entire AI-tools row is now clickable to toggle each checkbox.
Color picker
- Color picker in settings to customize mic and animation gradient colors.
- Material You dynamic colors for the mic.
- Live preview while dragging color sliders.
- Option to show a cancel button during recording.
Gesture AI menu, macOS-matching animations
- Recording workflow refactor — choose AI action after recording via gestures.
- Radial OK recording animation matching macOS.
- AirButton icon matching macOS.
- Rotating arc spinner matching macOS.
- Option to pause other apps' audio during recording.
- Toggle between clipboard vs direct text insertion for dictation.
- Right-click anywhere on the recording overlay to cancel (left-click no longer cancels).
- Radial amplitude bars now start just outside the OK circle for better whisper visibility.
- Archive script: notarization fix using notarytool submit, stapling, and verification.
Air Button becomes default
- Air Button shown by default at 32 px, with 16–32 px slider range.
- Case-sensitive option added to substitutions.
- Per-language retranscription buttons in history items.
- Rotating arc spinner matching macOS.
- Programmatic concentric-circles Air Button icon (no more PNG).
- Right-click to cancel recording on the animation overlay.
Air Button, draggable overlay, rotating arc spinner
- Air Button becomes draggable; recording overlay unified and repositionable.
- Rotating arc spinner replaces the transcribing dots.
- Radial amplitude bars replace circular volume rings during recording.
- OK button and circular volume animation replace the recording waveform.
- Improvement
continuous-speech responsiveness.
- Fix
intermittent paste failure (Cmd+V now posted synchronously).
- Auto-select default model from server (removed hardcoded gpt-4o-mini).
- Fix
login via email link (long-poll now actually runs).
- Fix
dictated text inserted at wrong position when cursor is mid-sentence.
- Fix
dictation not saved in Google Keep.
- Air Button redesigned with programmatic concentric circles and three breaks in the outer ring.
- camelCase and Title Case post-processing hotkeys.
- Uses your keyboard input sources to choose default transcription languages on first launch.
- Fix
external USB mic being overridden by the built-in MacBook mic.
- Zebra striping for hotkey list rows with theme-aware contrast.
- "Show press-and-hold option" setting — hide the hold checkbox by default.
- Fix
hotkey display showing modifiers after regular keys (e.g. 1+Ctrl).
- Fix
paste typing a single letter instead of Ctrl+V on Russian layout.
- Fix
empty hotkey list on fresh sign-in.
- Drag-and-drop reorder for hotkeys, with drop indicator.
- Multiline input for substitution replacement fields.
- Zebra striping for hotkey groups.
- Fix
crash when audio device disconnects during active recording.
- Improvement
batched evdev forwarding and cached X11 overlay XID reduce input pipeline overhead.
- Fix
crash in auth flow when app goes to background.
- Fix
crash when AI servers list is empty.
- Fix
crash when long-poll auth request is redelivered.
- Persists "last working" API server to survive endpoint failover.
- Auto-copy retranscribed text to clipboard in history view.
- Fix
punctuation/spacing/capitalization artifacts after empty substitutions.
API failover everywhere
- API server failover for all builds — app survives individual endpoint outages.
- Renamed "Manage" → "Manage subscription" across all 59 translations.
- Improved subscription button label logic using server flags.
- Fix
Manage subscription button not opening browser due to spaces in URL.
- Fix
substitutions not working for non-Latin languages (Russian, CJK, etc.).
- Crash handler improved to handle heap/stack corruption errors.
- Crash dumps now included in manual problem reports.
- API server failover with hardcoded defaults and api_version=2.
- Added ANDROID_ID to deviceId for unique per-device identification.
- Reduced GTK stalls in history tab to prevent hotkey freeze.
- Fix
hotkey permanently dying after GTK main-thread stalls.
- Fix
hotkey unresponsive for 3–6 s (X11 overlay ops moved off GTK main thread).
- Recording guard rails to prevent accidental short/duplicate recordings.
- Fix
report button hanging (subprocess timeouts and doubled-logging fix).
Audio capture stability
- Finalize vorbis stream before WASAPI device teardown to prevent heap corruption.
- Disable WASAPI AUTOCONVERTPCM for capture devices.
- CancelToken-based cancellation for all HTTP requests.
- Fix
hotkeys dying after keyboard disconnect (reconnection loops).
- Fix
heap corruption crash during recording stop on Windows 10 14393.
- Fix
audio callback race condition during capture stop.
- Hide mic when device is not interactive (locked, doze, Always-on Display).
- "Mouse" prefix added to mouse-button display names.
- Fix
mouse-button hold mode.
Mac App Store release
- Data privacy consent dialog for MAS Guidelines 5.1.1(i) / 5.1.2(i).
- Unified bundle name "VoiceHotKey" across MAS and Direct distributions.
- Launcher bundle name pinned to "VoiceHotKey Launcher" in all locales.
- Neutral "Continue" text replaces directive permission prompts for MAS review.
Mouse hotkeys, AI tab, Files tab
- Mouse-button hotkey support.
- X11 clipboard support and hold mode.
- uinput udev rule and installer reboot prompt when the input group is added.
- AI tab with custom prompt management (completion-capable models only).
- Files tab for audio/video file transcription.
- About tab with app info, copyright and social links.
- Installation health checks.
- API server failover using the server-provided api_servers list.
- Failover on non-JSON API responses (nginx/proxy errors).
- SSE stream response parsing fix for file transcription.
- Hide overlay when device is locked or on Always-on Display.
- API server failover.
- API server failover for all API calls (with api2.voicehotkey.com default).
- Warning shown when hotkeys fail due to missing input group permissions.
- Automatic subscription check on launch using StoreKit 2 entitlements.
- Inline accessibility tutorial replaces the separate tutorial window.
- Out-of-process AccessibilityStatusHelper for accurate TCC permission state.
- Renamed setting to "Restore Clipboard After Pasting" (with inverted default).
- SHA256 hash verification for auto-updates.
- Server-driven full hotkey replacement (dropped merge logic).
- Setting — stop Files-tab recordings with hotkeys.
- Drag-and-drop reordering for hotkeys.
- Overlay no longer interferes with App Store purchase sheets.
- Subscription restore now uses original_transaction_id for conflict detection.
- Copyright year bumped to 2026.
- Drag-and-drop reordering for hotkeys in main tab.
- Removed the "primary hotkey" concept — all hotkeys are now equal.
- Server-driven release URLs for region-based update checks.
- Empty shortcut row on first launch when no hotkeys are defined.
13 new UI languages
- 13 new UI language translations with live language switching.
- Audio device caching to avoid repeated ALSA enumeration.
- Accurate distro and desktop-environment detection for bug reports.
- New PasteLast hotkey action — paste last result from history.
- Simplified Intelligence menu with dedicated Translate and Fix Layout actions.
- Default language/model for translate actions with server-driven model replacement.
- Fix
Chinese quotation marks in zh.rc causing RC compiler errors.
X11 + Wayland, x86_64 + aarch64
- Linux Mint compatibility fixes; Cinnamon icon/menu integration; emoji font support.
- 4-build architecture — X11 + Wayland for x86_64 and aarch64.
- SSH remote build support for cross-architecture deploys.
- xdotool fallback for auto-paste on X11.
- Remove "Upgrade Pro" when already on Pro.
- Fix
expired date using local date.
- Multi-architecture support for x86_64 and aarch64.
- Non-disruptive auto-updates applied when the app is idle.
- Logs moved to persistent location with size-based rotation.
- Balancer caching for offline resilience.
- Language-specific retry, dev mode, upgrade-only updates.
- ALSA package detection for Ubuntu 24.04+.
Auto-install and auto-update
- Auto-install, auto-update infrastructure with SHA256 verification and UPX compression.
- Replaced microphone icon with custom MacOS-inspired icon.
- Combined transcription and AI processing into a single request.
- Global device and parallel operations for lower paste latency.
- Recording overlay with waveform animation and history popup.
- Substitutions tab for text replacement rules.
- Report Problem tab for sending bug reports.
- Real audio levels during recording.
- Save/restore window size on restart.
- Sets both CLIPBOARD and PRIMARY selection when pasting.
Linux MVP
- Initial Linux client — hotkeys, history, clipboard paste, login, substitutions, AI actions, languages.
Black theme
- Black theme.
- Add-hotkey via "+" button in main tab.
- Windows restart/log-off handled gracefully.
- Retry button when retranscribing.
- Error message when changing mode with invalid license.
- Fix
recordings getting stuck in processing after a cancelled upload.
- Dictation now inserts text in the middle of existing text instead of replacing.
- Multi-punctuation handling; prefix/suffix conditional insertion.
- Reduced CPU creep during recording (timer moved into AppState to avoid retention cycles).
- Reset appStatus from callbacks to guarantee `.idle` state after operations.
- Order the record panel to front as soon as it is available.
- Block non-user-triggered reactivation events; extra logging around reactivation.
- Minimize window instead of exiting the app on close.
- Fix
license error message hidden when license is updated.
Press Esc to stop recording
- Added option to press Escape to stop recording.
- Esc key event swallowed when cancelling so it won't propagate to other apps.
- Fallback mechanism and enhanced logging for intermittent transcribing-animation visibility.
Bluetooth recording
- Bluetooth recording option with differentiated audio source handling.
- Vibration feedback.
- Safeguard when Bluetooth is disabled.
- Fix
layout jump on Samsung devices.
- Suppress unintended app activation within 1.5 s of wake or power-source changes.
- Fallback positioning logic when `kCGWindowBounds` is missing — overlay always appears.
- Reduced channel size to prevent high memory usage.
- Fix
multiple potential crashes on init.
Mix voice + headphones to text
- Mix audio — voice and headphones transcribed together, normalized and flushed every second.
- Fix
mixing audio race condition.
- Workaround for apps with non-constant focus like ChatGPT Atlas and Notion.
- Save battery when user is not logged in or has exited the app.
- Email included in log file name; filename length capped at 255 chars.
- AI tool "translate" added to Air Button menu.
- AI tool positioning in circle layout with mouse-click support.
- Upgraded several libraries.
- Temporarily disabled tutorial.
- Fix
history bottom button not visible when user has nav bar.
- Performance fixes for the recording flow.
- Loading indicator while querying purchase.
- Updated billing library version.
- Fix
crash due to main-thread access and mutability.
- Added `PowerSourceMonitor` to correlate charger connections with app activations.
Air Button launches on Windows
- Air Button — first introduction on Windows (matches the macOS design).
- Reduced microphone polling frequency to avoid upsetting CoreAudio and returning incomplete device lists.
- Fix
crash caused by force-unwrapping of overlay coordinates.
- Do not register for Open at Login by default in the Mac App Store build.
- Moved Terms of Service and Privacy Policy buttons to the About menu.
- Delete-account option added (build 467).
- Code changes in response to "Missing Screen Recording Usage Explanation."
- Fix
lost network permissions caused by editing entitlements.
Manual spoken-language selection
- Option to manually select spoken language.
- Force retry on another server whenever transcribe errors.
- Reposition correctly on spoken-language selection view.
- Same scale when recording and AI transcribing.
- Wake observers ensure the overlay is shown on wake.
- Fix
Accessibility permissions detection on macOS ≥ 12 and < 15.
- Apply accessibility without restart.
- Mac App Store friendly handling of Accessibility relaunch.
- Dropped AlamoFire, Moya and KeyboardKit dependencies.
- Updated KeyboardShortcuts library to 2.4.
- Mac-style recording and transcription animations.
- Server selection logic.
- Don't show language option when user speaks only one language.
- Show "stop speaking" hint on first time.
- Detect revoked Accessibility permissions at runtime and safely relaunch app instead of freezing macOS CGEvent system.
- Automatic app activation when Accessibility permissions are disabled at runtime.
API v2 compliance
- API v2 compliance with tighter access control.
- Debounce for `LoginResourceService.refreshUserInfo()`.
- Autodetect Accessibility grant and restart app to apply it.
Per-hotkey input language
- Added input language selection at `UserShortcut` level.
- New "Start with an Uppercase letter" AI action.
- Fix
Core Data crash when a `UserShortcut` entity has a nil UUID.
- Fix
animation radius and wave-length calculation.
- Upload-file action support.
- Show spoken-language menu while recording.
- Reset spoken language when stopping transcription.
- Wave form animation view prepared.
- Rating popup throttled — not shown when user already rated or chose "never rate."
- Fix
tap anywhere causing recording to stop.
- Improvement
fixed tab switching speed.
- Balancer skips unavailable servers and refreshes the list when empty.
- Convenient method for API calls.
- Upgrade to Xcode 26 recommended project settings.
- Fix
multiple Swift concurrency and deprecation warnings.
- Added Microphone level-to-maximum option with translations.
- Sanitized localization system (removed unsupported Whisper languages — Kyrgyz, Irish, Dogri, Rajasthani, Sanskrit, etc.).
- Prevent race condition when user toggles Accessibility too quickly.
- Instant show whenever Accessibility is activated.
- Added `api_version=2` support (WIP).
- Settings persistence via `/users/config` endpoint.
- Potential fix for language switch on iPhone SE.
- Phone number saved in report form.
Air Button rename + unified mic selection
- Renamed "Floating Button" to "Air Button" throughout the app.
- Unified microphone-selection logic across menus.
- Right-click menu on the floating/Air Button.
- Hide-button menu added.
- Show upload-file option.
- Fix
share from WhatsApp (and likely other apps too).
- Prevent crash when parsing server responses (Gson).
- Attempt to reopen app after reinstall.
- Exit all activities when user swipes away the notification.
- Fix
app cannot be exited when no active activity.
- Button and animation resizing from Settings avoids weird cutoffs.
- Focus restoration after Overlay interactions.
- Light haptic feedback on sliders.
- Continuous voice-to-text.
- Tooltips on all controls on mouse hover.
Floating-button controls
- Floating-button options moved to a dedicated tab with more controls.
- Floating-button opacity slider, size slider, hot-reload for size/position.
- Allow drag while recording.
- "Start upper-case without terminal mark" AI action.
Audio device selection
- Audio-device selection dialog with live volume meter (5× per second refresh).
- Localized "system audio" in recording animation.
- Copy transcript to clipboard.
- "Pause keyboard and mouse tracking" setting.
- Fix
recording stopping after 1 minute.
- "Stop recording manually" toggle with timer.
Rebrand to VoiceKey
- Renamed the C++ rewrite executable from VoiceHotKey to VoiceKey to differentiate from the .NET app.
New voice transcription flow
- New voice transcription flow.
- Audio wave animation during recording.
- Added bottom-center overlay position.
- Share files from history.
- More clipboard copy actions.
- Menu options added to history items.
- Removed "run at startup" permission dialog.
- Hide content on Main tab when not authenticated.
- Save-to-file from history.
- Mouse/keyboard tracking change.
Floating button + Files tab
- Floating button with action buttons.
- Files tab — retranscribe from history, audio wave during recording.
- Cancel button during recording.
- Recording duration shown in history.
- Real voice level during recording (replaced animation).
- Option to remove timestamps.
- Refresh list of audio devices when a device is added/removed/enabled/disabled.
- Mic unmute and level controls (aligned with C# app min-level threshold).
- Remind-to-use window size fix.
- Cancellation logic during transcribing.
- Audio duration shown in history.
Reminder to use app
- "Reminder to use app" feature (reminds you to dictate if you have been typing a lot).
- Hide several unused icons on the VHK keyboard build.
iPad support
- Delete-account functionality.
- iPad support with iPad screenshots.
- Keyboard top-bar button color changed per Apple feedback.
- Feedback cue when playing audio transcriptions.
- Cancel recording button.
- Minimize-to-tray-only option.
- TranscribeLast workflow update.
- Main menu moved to the left.
- Settings moved to the left; tab names get emojis; window can be resized.
- Cancel hotkey (separate from transcribe).
- Minimize-to-tray-only option.
- Duration and timeout settings UI.
- Proxy support.
- Default theme set to System.
Themes + Start-with actions
- Themes support (first implementation).
- "Start with..." AI actions.
- Unauthorized handling.
- New AI actions.
- "Start with lower case without terminal sign" AI action.
- Compose module for installing additional languages.
- Page listing installed languages.
- Clear virtual keyboard state when user locks/unlocks the screen.
- Main dialog layout optimization — less space between main menu and content.
- Publisher and estimated install size added to registry.
- Keyboard input focus when navigating via main menu.
- Paste text into the edit control in focus.
- Added recording-directory setting.
- DPI-change flicker fixes.
VHK Mic split from keyboard
- Duplicated the project to create a standalone "vhk-mic" app separate from the keyboard app.
- Separate onboarding and behavior for mic vs keyboard apps.
- Deduce action from ending shortcut.
- Show lottie animation on every monitor.
- Keep scroll position when removing item from history.
- Fix
duplicated items in history.
- Fix
language priority allows duplicates.
- Main tab controls alignment.
- New UI languages — id (Indonesian), kk (Kazakh), uk (Ukrainian).
- Post-install dialog.
- Windows application event log attached to user reports.
- Check Windows microphone-access settings before recording.
- List of running processes added to user report.
- Auto-update of the loader itself.
- Memory optimization and memory-leak fixes.
Files tab
- Added Files tab for audio/video file transcription.
- History tab — play recording button.
- Click history item to copy to clipboard.
- Date/time UTC-string conversion fix.
History tab
- History tab — "try again" button.
- Fix
iOS 18 microphone issue.
- Fix
can't stop or start recording issue.
- Apply update to the new version when the app is idle.
- Convert last recording to text.
- AI dialog — implement keyboard shortcuts.
- Internet connection check before refreshing data or submitting reports.
- Improved error messages (fewer "Something went wrong").
- Fix
long TextAI output appending instead of replacing.
Voice-to-text on Main tab
- Main tab voice-to-text logic.
- `/transcribe_with_ai` REST endpoint implemented.
- Choose AI server for `/completions`.
AI dialog
- Initial AI dialog implementation.
- Native edit control replaced with custom (Direct2D) version.
- Custom edit control — single-line mode.
Auth with link polling
- Auth with link polling.
- Green banner duration increased.
- Cancel button on animation window.
- Auto-update triggers restart only when app is idle.
- Version info added to the loader.
- Send crash reports at startup.
- About tab — Report Problem.
Subscriptions
- Subscriptions implementation.
- AI actions sorted by usage.
- Current subscription view.
- "Run on startup" setting.
- Clean up previous installation for clean setup.
NSIS installer
- Installer via NSIS script.
- GitHub Actions split into develop and release workflows.
- Ensure single instance of the app (bring running instance to foreground).
- Custom combobox with emojis/images in the main tab.
- Placeholder support in edit box.
- Light theme color update.
- Direct2D edit draft (manual tab-key handling).
Usability Warnings
- Introducing Usability Warnings — surface keyboard, mic and accessibility issues proactively.
- Color font support for emojis.
- Cancelled recordings now shown in History.
- Improvement
History text wrapping and scroll performance.
- Extra settings for AI actions.
- Languages priority UI.
- Auto-detect UI language on first run.
- `refreshUserInfo()` now fails silently when the internet guard is closed.
DeepL + proxy
- DeepL translation support.
- HTTP proxy support.
- Client-side file-extension checks.
- Rewrote file upload flow — transcription task cancellation, progress indicator, SHA256 hashing.
- Mock API server for integration testing.
- UpgradePlan handling; balancer errors; online/offline handling.
- Start/stop keyboard detection only when needed (saves battery).
- Tested on Vivo X70 Pro.
- Top-level license error UI.
- Tooltip window.
- Performance improvements to keyboard detection.
- Fix
potential NPE.
Fast keyboard detection
- Speed up keyboard detection — collect all nodes at once.
- Immediately stop searching once focused editable is found.
- Fix
keyboard detector sometimes not detecting.
File transcription
- Ability to transcribe audio and video files.
Auth long-polling
- Auth long-polling (email link-based login).
- REST API logging.
- Upgrade to Java 21 (then reverted to 17); increase Kotlin version.
- Print last exit reason when app starts.
- Fix
potential NPE when user has no expiration timestamp.
- Complete macOS "About" menu.
- Always return to the primary input source when recording key released — fixes Russian E/T issue.
- `/users/info` endpoint implementation.
- Progress bar control.
Idle CPU ≤ 1%
- Performance improvements throughout the app — idle CPU usage reduced to ≤ 1%.
- Unified the way keyboard shortcuts are displayed across recorder, menu bar and dock menu.
- Device ID computation.
- Gathering system info.
- Shorter AI-action version.
- Cancel AI action.
- Play Integrity integration.
- Email used as account id.
- Timber for logging.
In-app billing
- Google Play billing feature implemented.
- Save purchase receipt to app database.
- Activity to show list of purchases; close activity when purchase succeeds.
Cancel from Overlay
- Recording, Uploading and Processing can now be cancelled from the Overlay.
- Response to macOS multi-display coordinate system change (TopLeft → BottomLeft origin).
Settings migration from C#
- Mic, mic2, lang and theme settings persistence + migration from C# app storage format.
- General settings and hotkeys migration from C# storage.
- Log level added to settings.
- Mousebutton hotkey activation support for AI Presets window.
- Latency test for selected balancer added to logging.
- Centralized access to `NSPasteboard` through ClipboardHelper.
- Pricing plan activity.
- Purchase items from web via in-app browser.
- Fix
mic color not displayed correctly on light theme.
- Billing pop-up when clicking expiration date.
- Fix
keyboard hiding text input.
- Send-report functionality with logging.
Shortcuts in Dock menu
- All shortcuts now accessible from the macOS Dock icon.
- Replaced reliance on `NSManagedObjectContextDidSave` notification with a realtime solution.
- Refresh microphone on system wake — fixes app ignoring USB-C/TB mics attached to an external screen.
- Keep settings when switching between voice-to-text and copy-text.
- Lower CPU usage from shortcut managers by reducing DB reliance.
VHKToastView
- Introducing `VHKToastView` — colour-coded, tap-actionable toast system for app messages.
Reorderable shortcuts
- Shortcut reorderability with UX/UI improvements.
- Mousebutton shortcut support for `SendReportView`.
- Logic, flow and stability improvements for `KeyShortcutRecorder` and `MouseShortcutManager`.
- Better visual separation between shortcuts.
- Drag-and-drop for hotkeys.
- Unmute mic option, set mic level to max.
- Auto-focus on hotkey textbox when a combo value is changed.
- Show "Copilot" key name instead of LWin+LeftShift+F23.
- Consolidated endpoints.
- Forced local audio saving; privacy migration; localization refresh.
- Implemented Paste/Dialog functionality for Action and Translate, matching Windows behavior.
- Fix
backwards compatibility with macOS Monterey.
- Rearranged Actions + AI menus with eligibility checks and display.
Report problem
- Added "Report problem" button.
- Added file logging with a privacy filter.
- Fix-layout feature for clipboard mode (MVP).
- Whole user state moved to AccountService for proper license-changed handling.
- Migrated old hotkey actions to the new action system.
- "Use AI without closing" — right-click on `IntelligenceResultsView`.
- Edit button next to custom prompts (opens AI Presets).
Text AI action + translate
- Text AI action implemented.
- Translate languages added.
- Login required to use the app.
- Diarization off by default.
C++ rewrite scaffolding
- Initial Windows C++ project scaffolding — beginning of the rewrite that later replaces the .NET app.
- Moved to Room for local database.
- Rating view redesigned for better appeal.
- Fix
AI transcribing state never shown.
- Fix
difficult scroll-up in history.
- Converted "Action" button to a dropdown menu.
- Rating feature added (#51).
- Toast when item is copied to clipboard (#52).
- AI shown in history.
- Flag emoji next to languages.
- Multiple UI adjustments per Material Guidelines.
Continuous voice-to-text
- Continuous voice-to-text support.
- Show languages as `Русский (Russian)` (endonym + English name).
- Localization updates and action order improvements.
- Use Material YOU dynamic colors.
- Differentiate error/success colors in dark vs light mode.
Custom prompts + AI history
- Custom prompts (save your own AI prompts).
- Click history item to copy to clipboard.
- Show both original and transcribed text in history.
AI Actions
- AI Actions — first implementation and UI.
Copy text and ask AI
- Implemented "Copy text and ask AI" workflow.
Activation logic redesign
- Redesigned activation logic — simpler and more robust.
- Hotkey handling fixes — force key order; support normal shortcuts with Control even when a Control hotkey is set.
- Edit custom prompts directly from AI dialog.
- Windows 7 installer — net45 dependency added.
- Migration of critical options to a new format.
- Show window as fast as possible and then do initialization.
- Prejit on install.
- Fix
bug when text disappears on allow keyboard/mouse prompt.
- Clear license error on login.
- "Improve writing" AI action added.
- Handle startup errors for root, logs and recording directories.
- Check whether balancer is reachable before using it; better retry logic for unstable networks.
- App can now be resized vertically to enlarge the Shortcuts section.
- Show "D1" and other digit keys as "1" (cleaner hotkey display).
- Handle mic offline in transcription pipeline.
- Select-mics dialog handles the case when no mics are online.
- Fix
memory leak for action selector.
- For problem reports, attach Windows errors from the last 7 days.
- Log uptime and memory usage.
- Added built-in AI prompts, translation and tone support to AI Results.
AI on macOS
- Implemented the AI feature from the Windows version.
- Force user to provide report details.
- Last 20 crash errors added to problem reporting.
AI foundations
- Default AI prompts with "last used" saved.
- `CanAI` license flag replaces per-model eligibility.
- Configure translate languages on AI tab.
- Change language list to alphabetical order.
- Persist overlay even when macOS closes it via Handoff-related display refreshes.
- Firebase Crashlytics integration.
- Multi-paste improvements.
- Phone field added to Report Problem, saved in settings.
- Fallback to default mic when primary/secondary lookup fails.
- Microphone menu added to the main UI; compact UI via tighter spacing.
Files tab reaches parity
- Send-report tab in About.
- No-hold default option for hotkey.
- User-friendly "no internet" error.
- Fix
last audio part not transcribed on completion.
- Basic auto-transcribe (split long audio into chunks).
- Silence-duration threshold added to settings (default 500 ms).
- Adapted `MouseShortcutManager` to use `CGEventTap`.
- Level meter shown when selecting mics.
- Separate dialog for mic selection.
- Microphone "default" option.
- Switch to public server.
Files tab (upload + transcribe)
- Initial file upload and transcribe flow on the Files tab.
- Cancellable file transcription with progress.
- Allow voice transcription while a file is transcribing.
FleksySDK
- FleksySDK integration — typing and swiping in the system keyboard.
- Backspace triggers the xmark function; fixed the way F-keys are displayed.
New auth system
- New auth system with refresh tokens.
- Unicode Scalar non-printable-character support + fixed Fn key support.
- `stream_progress` support; removed obsolete GPT option.
Custom shortcut recorder
- Removed reliance on KeyboardShortcuts package — new shortcut recorder built from the ground up.
- History timestamp indexing improves database speed.
- 60-minute timeout for file transcription; fixed timeouts for large files.
- Fix
remind timestamp not updating during transcribe.
- Space key as confirmation.
- Tooltip on disabled actions.
- Ignore the left-Alt key; Tab key confirmation.
History
- History functionality.
- Transcribe button at top of keyboard, settings moved to its left.
- Hotkey setup redesigned to match the Windows version.
- Separate menu item for selecting hotkeys with or without holding.
- Hotkey editor handles wheel, escape, minimize, close, ctrl+enter (use as is).
- Save/load substitutions, AI prompts and hotkeys.
- If a textbox is focused in the app, paste there; otherwise paste into the Files text area.
- Del or Backspace clears hotkey.
- AI selection is a normal window — save dimensions on close; allow recording in the AI window.
- Option for delay before stopping recording.
- Refresh subscription before transcribe if user just bought or subscription expired.
- Added option to use double-tap (or single-tap) of a key to start and stop recording.
Usability Helper
- Usability Helper detects Punto Switcher conflicts and advises how to resolve them.
- Access Substitutions list from the menu bar.
Tap / hold / reclick UI
- Press-hold-release and click-and-reclick transcription modes.
- Maximum-recording-duration setting.
- Fix
compiler warnings.
- Obey the macOS Quit command from Apple menu.
- Option to show/hide the dock icon.
Lottie mic animation
- Lottie animation for the floating mic.
- Repository to detect current mic state.
- Service-status model.
- Initial language chooser, app icon, portrait-only mode.
- Status checks for keyboard enabled, full access, microphone access.
- Insert transcribed text in active app.
Action selection
- Minimum working action selection (choose what to do with transcribed text).
- Fix
sticky keys; first row of hotkeys (record + transcribe) now frozen.
- Support multiple keys in recording.
- Default to English if language detection fails.
- Animated snackbar.
- Fix
Russian translation for 'Keep Running'.
- Fix
text truncation for 'min record duration' in long translations.
- Fix
Cut, Copy, Paste now work inside the app.
- Ignore battery optimization setting.
- Detect Notification permission toggled off from App Info.
- Detect hint text via `ACTION_SET_SELECTION`.
Initial commit
- Custom keyboard scaffolding and project set-up.
- Record without holding the hotkey.
- Option to paste in the initial (source) window.
- Migrate retrieve-cursor-position logic from InsertIt.
- Accessibility key/value dictionary.
- Several new extension functions (clipboard, nodeInfo printing).
- Substitutions now filtered through `NSRegularExpression` — whole words only, respecting capitalization.
- Remind interval option.
- Substitution "replace by words."
- Upgrade Plan window.
- Recording button error style to match colors.
- Russian, Thai and Japanese text normalizers.
- Microphone stability improvements for external displays and other removable microphones.
- Persistence after a mic is removed.
- Remove unnecessary menu items.
- Remind window — nudge to use the app.
- Fallback balancers list updated.
- Handle invalid files dropped on the Files tab.
- Default recordings directory.
- Prejit on install and update hooks.
- Paste now works on any keyboard layout.
- Added delay slider for mouse-button hold; stability improvements.
- Use Win32 for platform detection.
- Software rendering on Windows below 10.
- Fallback balancers list on refresh error.
- Ask for startup permissions.
Settings split + permissions window
- Move duration threshold to Settings tab; move some settings to a separate tab.
- Permissions window with click-to-change.
- Lazy hooks.
- Shared OK button.
- Don't access backend on startup for new installs.
Mouse recording
- Added Mouse-button recording function.
- Files tab working — select and drop file, diarization checkbox, editable file path.
- FilePath extension validation to prevent bad submissions.
- Checkbox for copy-transcript.
- Simplified paste to always use Command+V via `simulateCommandV`.
Files tab + mouse hook
- Initial Files tab — select and drop file.
- Mouse hook implementation with `isdown` state tracking.
- Replaced `NSAlert` with `VHKAlert`.
- Recording directory option.
- Secondary mic option.
- Fix
deadlock.
- Added support for macOS ≥ 13 `SMAppService` (modern Login Items API).
- Promote Control (regular recording) to Control+I (AI recording) without interrupting an already-started recording.
- Refresh mics on display count change.
- Refresh mics on Mac wake from sleep.
- YouTube link added; GPT option hidden.
- Transcribe with GPT.
- Social network links.
- Use localized backend responses.
- Translate to all required languages.
Russian + runtime language switch
- Russian localization with runtime language switching.
- All strings moved to resources.
- Ask user to buy before evaluation period ends.
- Reduced app size to 40 MB (from 54 MB).
- Blacklist logic implemented.
Working shortcuts
- Default shortcuts shipped.
- Working shortcuts implementation.
- Special handling for license errors.
- Open settings or history from the taskbar icon.
- Device ID unique per machine, OS passed as separate query param.
- Lottie animations used throughout.
- Hourly user-info refresh.
- Select text from history.
- Show full device name so you can tell Line-In from Mic.
- Save balancers list to file; refresh before recording (but at most once every 5 minutes).
- Use balancers in the order provided by the server.
- Show version in message box.
- Fix
scaling problem.
- Fix
saved microphone selection.
- winget manifest.
- Extended substitution syntax — Notepad++-style regex (prefix with `r'...'`).
- Use fallback balancer; reduce recording-start delay from 300 ms to 15 ms.
- Fix
mutex problem.
Auto-update
- Added automatic update functionality.
- Fix
MenuBarExtra icon sizes.
- Clicking the Dock icon opens/closes Settings.
- Crashlytics setup.
- Auto-rename APK based on git.
- Refactor — shared recorder in view model.
Draggable mic, saved position
- Save and load mic size and position.
- Accessibility processor moved to use case.
- Move to Hilt dependency injection throughout.
- Remembers the last-used microphone across relaunches.
- Auth for non-registered users.
- Ping balancers and use the fastest.
- Save recordings as OGG instead of WAV.
- Subscription purchase available in-app.
- Recording format switched from WAV to OGG (better compression).
- Validated compatible encoder sample rate through `kAudioFormatOpusSamplingRate`.
- Mic overlay animation works correctly on SideCar and multi-display setups.
- Updated microphone list when opening MenuBarExtra.
Initial commit
- Initial Android project with mic permission request and Hilt setup.
- Subscribe and Manage buttons added.
History tab (first version)
- History tab — first version.
- Updated app icon.
- Default hotkey changed to Right Control.
- App size reduced from 86 MB to 51 MB.
- UI redesign per user feedback — single-tab "Main," substitutions tab, right-aligned delete buttons, save-on-change.
- Notification animation (close on click).
- Retry policy for every backend request.
- HTTPS-only endpoints.
- Auth via link; login via code.
- Select any Whisper language for transcription.
- Sticky notification window next to opened app.
- User can change password.
- Updated app icon.
- Refresh auth token every 4 hours.
- Timeout added to options.
Initial Windows version
- Minimal Windows implementation with recording, hotkey activation and paste-on-release.
- Fix
paste not working in some apps; swallow hotkey so Telegram doesn't keep typing the letter.
Initial commit
- Base macOS project with menu bar options.
No entries for this platform yet — check back soon.