All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Cancel Processing Button: Added ability to cancel ongoing transcription processing
- Dark Mode Icon Inversion: Monochrome provider icons now automatically invert in dark mode for better visibility
- Dynamic Window Resizing: Window automatically resizes based on command menu and toast visibility
- Design System Overhaul: Complete refactor of styling to use design tokens throughout the codebase
- Button component now uses
text-foreground,bg-muted,border-borderinstead of hardcoded hex values - Removed hardcoded classes and inline styles across components
- Improved button and badge consistency
- Button component now uses
- Settings UI Redesign: Overhauled all settings pages with unified panel system, redesigned sidebar, and extracted permissions section
- Dark Mode Polish: Premium button styling, glass morphism toasts, and streamlined visuals
- Onboarding Improvements:
- Streamlined to 4-step flow
- Extended to support multiple local transcription providers (Whisper and NVIDIA Parakeet)
- Improved contrast and design system usage
- Light Mode UI Visibility: Fixed multiple UI elements that were invisible or hard to see in light mode:
- Settings gear icon in permission cards now uses
text-foreground - Troubleshoot button uses proper foreground color
- Reset button in developer settings now correctly shows destructive color
- Settings and Help icons in the toolbar are now properly visible
- Check for Updates button now renders correctly in light mode
- Settings gear icon in permission cards now uses
- Provider Tab Flashing: Resolved TranscriptionModelPicker tab flashing by extracting ModeToggle component and syncing internal state with props
- Local Reasoning Model Persistence: Fixed local reasoning model selection not persisting correctly
- Parakeet Model Status: Added dedicated IPC channel for Parakeet model status checks
- Groq Qwen3 Models: Removed thinking tokens from Qwen3 models on Groq provider
- ONNX Warm-up Inference: Parakeet server now runs warm-up inference on start to eliminate first-request latency from JIT compilation
- Startup Preferences Sync: Renderer startup preferences are now synced to
.envfor server pre-warming on restart
- macOS Tray Behavior: Hide to tray on macOS for consistent cross-platform behavior
- macOS Launch Crash: Added
disable-library-validationentitlement to resolve macOS launch crash (#120) - Reasoning Model Default: Fixed
useReasoningModelnot correctly defaulting to enabled by persisting useLocalStorage defaults and aligning direct reads - Windows Non-ASCII Usernames: Resolved whisper-server crash on Windows with non-ASCII usernames by pre-converting audio to WAV and routing temp files through ASCII-safe directory
- Windows Paths with Spaces: Fixed temp directory fallback to also detect paths with spaces on Windows
- Linux Paste Tools: Prefer xdotool over ydotool for better compatibility
- Windows Zip Extraction: Use tar instead of PowerShell Expand-Archive for zip extraction on Windows to avoid issues with special characters
- Download System Refactor: Consolidated model download logic into shared utilities with resume support, retry logic, abort signals, and improved installing state UI
- Throttled Progress Display: Whisper model download progress updates are now throttled for smoother UI
- NVIDIA Parakeet Support: Fast local transcription via sherpa-onnx runtime with INT8 quantized models
parakeet-tdt-0.6b-v3: Multilingual (25 languages), ~680MB
- Windows Push-to-Talk: Native Windows key listener with low-level keyboard hook for true push-to-talk functionality
- Supports compound hotkeys like
Ctrl+Shift+F11orCommandOrControl+Space - Prebuilt binary automatically downloaded from GitHub releases
- Fallback to tap mode if binary unavailable
- Supports compound hotkeys like
- Custom Dictionary: Improve transcription accuracy for specific words, names, and technical terms
- Add custom words through Settings → Custom Dictionary
- Words are passed as hints to Whisper for better recognition
- Works with both local and cloud transcription
- GitHub Actions Workflow: Automated CI workflow to build and release Windows key listener binary
- Shared Download Utilities: New
scripts/lib/download-utils.jsmodule with reusable download, extraction, and GitHub release fetching functions
- Download Scripts Refactored: All download scripts now use shared utilities for consistency
- GitHub API Authentication: Download scripts support
GITHUB_TOKENto avoid API rate limits in CI - Debug Logging Cleanup: Extracted common window loading code and cleaned up debug logging
- GNOME Wayland Hotkey Improvements: Improved hotkey handling on GNOME Wayland
- Hotkey Persistence: Fixed hotkey selection not persisting correctly
- Custom Endpoint API Keys: Fixed custom endpoint API keys not persisting to
.envfile - Custom Endpoint State: Fixed custom endpoint using shared state instead of its own
- Linux Stale Hotkey Registrations: Clear stale hotkey registrations on startup on Linux
- Wayland XWayland Paste: Try xdotool on Wayland when XWayland is available
- llama-server Libraries: Bundle llama-server shared libraries and search from extract root for varying archive structures
- STT/Reasoning Debug Logging: Added missing debug logging for STT and reasoning pipelines
- App Startup Hang: Fixed app initialization timing issues with Electron 36+
- Manager Initialization: Deferred manager initialization until after
app.whenReady()to prevent hangs - Debug Logger Initialization: Deferred debugLogger file initialization until
app.whenReady() - Config Bundling: Fixed missing config files in production builds
- whisper.cpp Binary Version: Updated whisper.cpp release names and bumped binary version
- ydotool Fallback for Linux: Added ydotool as additional fallback option for clipboard paste operations on Linux systems
- Unified Prompt System: Refactored to single intelligent prompt system for improved consistency and maintainability
- whisper.cpp Remote: Refactored remote whisper.cpp integration for better reliability
- Troubleshooting Mode: New debug logging section in settings with toggle for detailed diagnostic logs, log file path display, and direct folder access for easier support
- Custom Transcription Endpoint: Support for custom OpenAI-compatible transcription endpoints with configurable base URLs
- Enhanced Clipboard Debugging: Detailed clipboard operation logging for diagnosing paste issues across platforms
- API Key Management: Consolidated and refactored API key persistence with improved .env file handling and recovery mechanisms
- Local Network Detection: Refactored URL detection into reusable utility for better code organization
- Electron Builder: Updated to latest version for improved build performance
- Windows/Linux Taskbar: Prevented dual taskbar entries on Windows and Linux by properly configuring window behavior
- Single Instance Lock: Enforced single instance lock with cleaner window state checks
- Model Provider Consistency: Removed redundant fallbacks and ensured consistent use of getModelProvider()
- Cross-env Support: Fixed Windows compatibility in pack script using cross-env
- Linux X11 Paste: Improved paste reliability by capturing target window ID upfront with windowactivate --sync, added xdotool type fallback for terminals
- Tray Minimize: Fixed minimize to tray functionality
- LLM Download Cancellation: Added ability to cancel in-progress local LLM model downloads with throttled progress updates to prevent UI flashing
- Gemini Model Updates: Updated Gemini models to latest versions
- Linux Wayland Improvements: Improved Wayland paste detection with GNOME-specific handling and XWayland fallback support
- whisper.cpp CUDA Support: Updated whisper.cpp download script to include CUDA-enabled binaries
- Windows Paste Delay: Adjusted paste delay timing on Windows for more reliable text insertion
- Blank Audio Prevention: Fixed issue where blank/silent audio recordings would paste empty text
- Newline Handling: Fixed newline formatting issues in transcribed text
- ASAR Path Resolution: Fixed path resolution issues for bundled resources in packaged builds
- Update Checker: Fixed auto-update checker initialization
- Build Includes: Ensured services and models are properly included in production builds
- OS Module Import: Fixed OS module import ordering
- Streaming Backpressure: Fixed proper streaming backpressure handling in audio processing
- Quit and Install: Fixed update installation on app quit
- Path Resolution: Improved path resolution for better cross-platform compatibility
- Microphone Input Selection: Choose your preferred microphone input device in settings, with built-in mic preference to prevent Bluetooth audio interruptions
- Push to Talk Mode: New recording mode option alongside the existing toggle mode
- Hotkey Listening Mode: Prevents conflicts when capturing new hotkeys by temporarily disabling the global hotkey
- Hotkey Fallback System: Automatic fallback with user notifications when preferred hotkey is unavailable
- Cross-Platform Accessibility Settings: Quick access to system accessibility settings on macOS
- Streamlined Onboarding: Removed redundant "How it Works" section, success dialogs, and manual save buttons for a smoother setup experience
- Improved Select Styling: Enhanced dropdown select component appearance
- FFmpeg Availability Types: Corrected type definitions and optimized whisper-cpp download process
- Whisper Models Path: Fixed model storage path resolution
- Better Path Resolution: Improved error handling for file paths
- Open Mic Settings: Fixed system settings link for microphone configuration
- Whisper Server HTTP Mode: Added persistent whisper-server for faster repeated transcriptions with automatic CLI fallback
- Pipeline Timing Instrumentation: Added detailed timing logs for each stage of the transcription pipeline
- Whisper Server Pre-warming: Server pre-warms on startup for faster first transcription
- Windows Clipboard: Reduced clipboard delays for faster text pasting on Windows
- Windows Update Install: Simplified Windows update installation by using silent mode and removing redundant before-quit handling
- Mac Build Workflows: Fixed CI/CD to run separate workflows for Mac builds
- Mac DMG Build Race Condition: Fixed release workflow DMG build failure caused by concurrent arm64/x64 builds mounting same volume
- Windows Download Script: Fixed PowerShell Expand-Archive failure with bracket characters in directory names
- Settings Layout: Moved settings navigation to left side on Windows and Linux for improved consistency
- Linux Whisper Detection: Fixed issue where Python-based Whisper could be used instead of whisper.cpp on Linux systems
- Model Validation: Added validation when deleting or loading Whisper models to ensure model integrity
- Download Cancellation: Added ability to cancel in-progress model downloads in whisper pickers
- Windows Paste Performance: Added nircmd for faster text pasting on Windows
- EventEmitter Memory Leak: Fixed memory leak caused by duplicate listener registration in useUpdater hook across ControlPanel and SettingsPage components
- FFmpeg Path Resolution: Fixed FFmpeg path resolution in unpacked ASAR for local whisper.cpp transcription
- UI Cleanup: Removed redundant UI elements for a cleaner interface
- whisper.cpp Packaging: Moved whisper.cpp binaries from ASAR to extraResources for improved reliability and faster startup
- Package Lock Sync: Fixed package-lock.json synchronization with package.json dependencies
- Extended Hotkey Support: Added numpad keys, media keys, and additional special keys (Pause, ScrollLock, PrintScreen, NumLock) for hotkey selection
- Improved Hotkey Error Messages: Registration failures now include helpful suggestions for alternative hotkeys
- Linux Paste Tools: Only show paste tools installation prompt on Linux when tools are not available
- Hotkey Debugging: Added comprehensive debug logging to hotkey manager for troubleshooting registration issues
- React Version Mismatch: Fixed blank screen caused by incompatible React and React-DOM versions in package-lock.json
- Blank Screen on Upgrade: Fixed white screen issue for users upgrading from older versions with different onboarding step counts. The onboarding step index is now properly clamped to valid range.
- Delete All Whisper Models: New option to delete all downloaded Whisper models at once
- Model Deletion Confirmation: Added confirmation dialog when deleting models in settings
- Migrated to whisper.cpp: Replaced Python-based Whisper with native whisper.cpp for faster, more reliable transcription
- No longer requires Python installation
- WebM-to-WAV audio conversion built-in
- Significantly improved startup and transcription speed
- Streamlined Onboarding: Simplified setup flow with fewer steps now that Python is not required
- Download Cancellation: Added ability to cancel in-progress model downloads
- CI/CD Updates: Updated build and release workflows
- IPC Handler: Fixed broken IPC handler for model operations
- Logging: Standardized logging across the application
- React Hook Dependencies: Improved React hook dependency arrays for better performance
- Button Styling: Fixed button styling consistency across the application
- Python Dependency: Removed Python requirement and all related installation code
- whisper_bridge.py: Removed Python-based Whisper bridge in favor of native whisper.cpp
- Linux Package Dependencies: Recommended xdotool, wtype, and python3 packages for Linux users
- Python Installation Race Condition: Fixed race condition in Python installation check that could cause installation to fail or hang
- Cross-Platform Paste Tools Detection: Onboarding now detects and guides users through installing paste tools on Linux and Windows with auto-grant accessibility
- Qwen Model Compatibility: Disabled thinking mode for Qwen models on Groq to prevent compatibility issues
- Model Registry Refactor: disableThinking flag now uses the centralized model registry
- Consolidated ColorScheme Types: Removed redundant default exports and cleaned up inline font styles
- Provider Icons: Use static imports for provider icons to fix Vite bundling issues
- Recording Cancellation: Restored cancel recording functionality that was accidentally removed
- Model Downloads: Implemented atomic downloads with temp file pattern and robust cleanup handling for cross-platform reliability
- Incomplete Download Prevention: Model file size validation now prevents incomplete downloads from showing as complete
- Windows PowerShell Performance: Optimized paste startup time on Windows
- Compound Hotkey Support: Use multi-key combinations like
Cmd+Shift+KorCtrl+Alt+Dfor dictation - Groq API Integration: Ultra-fast AI inference with Groq's cloud API
- Auto-Update UI: Download progress bars and install button in settings
- Recording Cancellation: Cancel an in-progress recording without transcribing
- Release Notes Viewer: Markdown-rendered release notes in settings
- Major Hotkey Refactor: Complete rewrite of hotkey selection with improved reliability and validation
- Consolidated Model Registry: Single source of truth for all AI models (
modelRegistryData.json) - Unified Model Picker: Reusable component for both transcription and reasoning model selection
- Improved Latency Logging: Numbered stage logs for recording, transcription, reasoning, and paste timing
- Reduced Paste Delay: Lowered from 100ms to 50ms for faster text insertion
- Code Quality: Added ESLint, Prettier for JS/TS, and Ruff for Python
- Windows 11 Compatibility: Fixed PATH separator, cache directories, and process termination
- Python Virtual Environment: Fixed race condition and added Arch Linux venv support
- Microphone Detection: Improved onboarding flow for missing inputs with deep-linking to system settings
- Recording State Alignment: Recording now aligns to MediaRecorder's actual start/stop events
- Caching Optimizations: Cached accessibility, paste tool, and FFmpeg checks to reduce process spawns
- Window Titles: Electron window titles now set correctly after page load
- Button to fully quit OpenWhispr processes from the application
- Linux terminal detection with automatic paste key switching (Ctrl+Shift+V for terminals)
- Standardized logging on log levels with renderer IPC and
.envrefresh for consistent debug output
- Use
kdotoolfor Wayland terminal detection, improving clipboard paste reliability - Increased delay before restoring clipboard to avoid race conditions during paste operations
- Persist OpenAI key before onboarding test to prevent key loss during setup
- Windows Python discovery now correctly handles output parsing
- Keep FFmpeg debug schema as boolean type
- Fixed OpenWhispr documentation paths
- Windows: Resolved issue #16 with WAV validation, registry-based Python detection, and normalized FFmpeg paths
- Enhanced Linux support with Wayland compatibility, multiple package formats (AppImage, deb, rpm, Flatpak), and native window controls
- Auto-detect existing Python during onboarding and gate the installer with a recheck option
- "Use Existing Python" skip flow to onboarding with confirmation dialog
- Reuse audio manager and stabilize dictation toggle callback to fix recording latency
- Add cleanup functions to IPC listeners to prevent memory leaks
- Make Flatpak opt-in for local builds only
- Optimized transcription pipeline with caching, batched reads, and non-blocking operations for improved performance
- Reference error in settings page
- Removed redundant audio listener causing unnecessary processing
- Added IPC listener cleanup to prevent memory leaks
- Performance improvements: removed duplicate useEffect, fixed blur causing re-renders
- Add caching for Electron and Flatpak downloads
- Add Flatpak runtime installation to workflow
- Add Linux packaging dependencies to GitHub Actions workflow
- Added
scripts/complete-uninstall.shplus a new TROUBLESHOOTING guide so you can collect arch diagnostics, clean caches, and reset permissions before reinstalling stubborn builds. - Control Panel history now auto-refreshes through a shared store and IPC events, so new, deleted, or cleared transcripts sync instantly without a manual refresh.
- Distribution artifacts now include both Apple Silicon and Intel macOS DMG/ZIP outputs, and the README documents Debian/Ubuntu packaging along with optional
xdotoolsupport.
- The onboarding flow now validates dictation hotkeys before letting you continue, remembers whether cloud auth was skipped, and only persists sanitized API keys once supplied.
- History entries normalize timestamps and no longer run the removed legacy text cleanup helper, so the UI shows the exact Whisper output that was saved.
- Local Whisper now finds Python on Windows more reliably by scanning typical install paths, honoring
OPENWHISPR_PYTHON, and surfacing actionable ENOENT guidance. - Whisper installs automatically retry pip operations that hit PEP‑668, TOML, or permission errors, sanitizing the output and falling back to
--user+ legacy resolver when needed.
- Settings, onboarding, and the AI model selector now accept OpenAI-compatible custom base URLs for both transcription and reasoning providers, complete with validation and reset helpers.
- Windows now gets full tray behavior: closing the control panel hides it to the tray, left-click reopens it, and the UI adds a native close button.
- ReasoningService sends both
inputandmessagespayloads and automatically falls back between/responsesand/chat/completionsso older OpenAI-compatible endpoints keep working.
- Successful endpoint detection is cached per base URL, so the app remembers whether to call
/responsesor/chat/completionsinstead of retrying the wrong path forever. - Custom endpoint fields now enforce HTTPS (with localhost as the lone exception) across the UI and services, preventing API keys from ever leaving over plain HTTP.
- Added a
compile:globebuild step that emits a macOS Globe listener binary intoresources/binbefore every dev, pack, or dist command so the hotkey ships with all builds.
- Globe key failures now raise a macOS dialog, verify the bundled binary is executable, and kill/restart the listener cleanly so the shortcut survives packaging.
- Simplified the release workflow by removing the bespoke GitHub release job and letting electron-builder upload draft releases directly.
- Globe/Fn hotkey reliability improved by showing the dictation panel before toggling, making focus optional, and surfacing listener spawn errors instead of failing silently.
- Settings update controls now show download progress bars, install countdowns, and clearer messaging while fetching or installing new builds.
- Auto-update internals now track listeners, cache the last release metadata, and keep auto-download/auto-install disabled until the user explicitly triggers an update, eliminating the previous memory leaks.
Install & Restartnow emitsbefore-quit, enablesautoInstallOnAppQuit, logs progress, and callsquitAndInstall(false, true)so updates actually apply when quitting or pressing the button.
- Dictation Panel Command Menu: Clicking the floating panel reveals quick actions, including a one-click "Hide this for now" option.
- macOS Globe Key Support: Added a lightweight Swift listener so the Globe/Fn key can toggle dictation across the system.
- Globe Key Selection UI: Settings and onboarding keyboards now include a dedicated Globe key option.
- Hotkey Validation: Settings and onboarding now verify shortcut registration immediately, alerting users when a key can’t be bound.
- Model Cache Cleanup: Added an in-app command (and installer/uninstaller hooks) to delete all cached Whisper models.
- Tray Controls: macOS tray menu gained quick actions to show or hide the dictation panel.
- Dictation Overlay Placement: Window now anchors to the active workspace's bottom-right corner with a safety margin, preventing it from sliding off-screen on multi-monitor setups.
- Dictation Overlay Canvas: Enlarged the floating window so tooltips, menus, and error states render without being clipped while keeping click-through behaviour outside interactive elements.
- Keyboard UX: Virtual keyboard hides macOS-exclusive keys on Windows/Linux and standardises hotkey labels.
- macOS Window Lifecycle: Ensured the dictation panel keeps the app visible in Dock and Command-Tab while retaining floating behaviour across spaces.
- Control Panel Stability: Reworked close/minimize handling so the panel stays interactive when switching apps and reopens cleanly without spawning duplicate windows.
- Always-On-Top Enforcement: Centralised the logic that reapplies floating window levels, eliminating redundant timers and focus quirks.
- Menu Labelling: macOS application menu items now display the correct OpenWhispr casing instead of "open-whispr".
- Non-mac Hotkey Guard: Prevented the mac-only Globe shortcut from being saved on Windows/Linux.
- Build System: Fixed native module signing conflicts on macOS
- Added
npmRebuild: trueto force rebuild of native modules during packaging - Added
buildDependenciesFromSource: trueto compile native dependencies from source - Added
better-sqlite3toasarUnpackarray to properly unpack SQLite3 native module - Resolves "different Team IDs" error when launching notarized macOS apps
- Added
- CI/CD Pipeline: Fixed automated release workflow issues
- Removed automatic version update step from release workflow (version should be set before tagging)
- Added
contents: writepermission to allow workflow to create GitHub releases - Fixes "Resource not accessible by integration" error during releases
- This is a maintenance release focusing on build reliability and deployment infrastructure
- No feature changes or user-facing functionality updates
- All changes related to packaging, signing, and automated release processes
- Multi-Provider AI Support: Integrated three major AI providers for text processing
- OpenAI: Complete model suite including:
- GPT-5 Series (Nano/Mini/Full) - Latest generation with deep reasoning
- GPT-4.1 Series (Nano/Mini/Full) - Enhanced coding, 1M token context, June 2024 knowledge
- o-series (o3/o3-pro/o4-mini) - Advanced reasoning models with extended thinking time
- GPT-4o/4o-mini - Multimodal models with vision support
- Anthropic: Claude Opus 4.1, Sonnet 4, and 3.5 variants for frontier intelligence
- Google: Gemini 2.5 Pro/Flash/Flash-Lite and 2.0 Flash for advanced processing
- OpenAI: Complete model suite including:
- OpenAI Responses API Integration: Migrated from Chat Completions to the new Responses API
- Simplified request format with
inputarray instead ofmessages - New response parsing for
outputitems with typed content - Automatic handling of model-specific requirements
- Better support for GPT-5 and o-series reasoning models
- Simplified request format with
- Enhanced Reasoning Service: Complete TypeScript rewrite with provider abstraction
- Automatic provider detection based on selected model
- Secure API key caching with TTL
- Unified retry strategies across all providers
- Provider-specific token optimization (up to 8192 for Gemini)
- Comprehensive Debug Logging: Enhanced reasoning pipeline with stage-by-stage logging
- Provider selection and routing logs
- API key retrieval and validation logs
- Request/response details for all providers
- Error tracking with full stack traces
- Improved Settings UI: Comprehensive API key management for all providers
- Color-coded provider sections (OpenAI=green, Anthropic=purple, Gemini=blue)
- Inline API key validation and secure storage
- Provider-specific model selection with descriptions
- Default AI Model: Updated from GPT-3.5 Turbo to GPT-4o Mini for cost-efficient multimodal support
- Model Updates: Refreshed all AI models to their latest 2025 versions
- OpenAI: Added GPT-5 family (released August 2025), migrated to Responses API
- Anthropic: Updated to Claude Opus 4.1 and Sonnet 4, fixed model naming
- Gemini: Added latest 2.5 series models, increased token limits
- ReasoningService: Migrated from JavaScript to TypeScript for better type safety
- API Endpoint Updates:
- OpenAI: Migrated from
/v1/chat/completionsto/v1/responses - Request format simplified for better performance
- Response parsing updated for new output structure
- OpenAI: Migrated from
- Model Configuration Improvements:
- Fixed Anthropic model names (using hyphens instead of dots)
- Increased Gemini 2.5 Pro token limits (2000 minimum)
- Removed temperature parameter for GPT-5 and o-series models
- Documentation: Updated CLAUDE.md, README.md with comprehensive provider information
- API Key Persistence: All provider keys now properly save to
.envfile- Added
saveAllKeysToEnvFile()method for consistent persistence - Keys reload automatically on app restart
- Fixed Gemini and Anthropic key storage issues
- Added
- CORS Issues: Anthropic API calls now route through IPC handler
- Avoids browser CORS restrictions in renderer process
- Proper error handling in main process
- Empty Response Handling: Fixed "No text transcribed" error when AI returns empty
- Falls back to original text when API returns nothing
- Properly handles edge cases in response parsing
- Parameter Compatibility: Fixed OpenAI API parameter errors
- GPT-5 models use simplified parameters (no max_tokens)
- o-series models configured without temperature
- Older models retain full parameter support
- Added Gemini API integration with proper authentication flow
- Implemented SecureCache utility for API key management
- Enhanced IPC handlers for multi-provider support
- Updated environment manager with Gemini key storage
- Improved error handling with provider-specific messages
- Added comprehensive retry logic with exponential backoff
- Enhanced error messages with detailed logging
- Better fallback strategies for API failures
- Improved response validation and parsing
- Centralized API configuration in constants file
- Unified debugging system across all providers
- Local AI Models: Integration with community models for complete privacy
- Support for Llama, Mistral, and other open-source models
- Local model management UI with download progress
- Automatic model validation and testing
- Enhanced Security: Improved API key storage and management
- System keychain integration where available
- Encrypted localStorage fallback
- Automatic key rotation support
- Resolved issues with Whisper model downloads on slow connections
- Fixed clipboard pasting reliability on Windows 11
- Improved error messages for better debugging
- Fixed memory leaks in long-running sessions
- Optimized audio processing pipeline for 30% faster transcription
- Reduced app bundle size by 15MB through dependency optimization
- Improved startup time by lazy-loading heavy components
- Automatic Python Installation: The app now detects and offers to install Python automatically
- macOS: Uses Homebrew if available, falls back to official installer
- Windows: Downloads and installs official Python with proper PATH configuration
- Linux: Uses system package manager (apt, yum, or pacman)
- Enhanced Developer Experience:
- Added MIT LICENSE file
- Improved documentation for personal vs distribution builds
- Added FAQ section to README
- Added security information section
- Clearer prerequisites and setup instructions
- Added comprehensive CLAUDE.md technical reference
- Dock Icon Support: App now appears in the dock with activity indicator
- Changed LSUIElement from true to false in electron-builder.json
- App shows in dock on macOS with the standard dot indicator when running
- Updated supported language count from 90+ to 58 (actual count in codebase)
- Improved README structure for better open source experience
- Agent Naming System: Personalize your AI assistant with a custom name for more natural interactions
- Name your agent during onboarding (step 6 of 8)
- Address your agent directly: "Hey [AgentName], make this more professional"
- Update agent name anytime through settings
- Smart AI processing distinguishes between commands and regular dictation
- Clean output automatically removes agent name references
- Draggable Interface: Click and drag the dictation panel to any position on screen
- Dynamic Hotkey Display: Tooltip shows your actual hotkey setting instead of generic text
- Flexible Hotkey System: Fixed hardcoded hotkey limitation - now fully respects user settings
- [BREAKING] Removed click-to-record functionality to prevent conflicts with dragging
- UI Behavior: Recording is now exclusively controlled via hotkey (no accidental triggering)
- Tooltip Text: Shows "Press {your-hotkey} to speak" with actual configured hotkey
- Cursor Styles: Changed to grab/grabbing cursors to indicate draggable interface
- Hotkey Bug: Fixed issue where hotkey setting was stored but not actually used by global shortcut
- Documentation: Updated all docs to reflect current UI behavior and hotkey system
- User Experience: Eliminated confusion between drag and click actions
- Agent Naming Implementation:
- Added centralized agent name utility (
src/utils/agentName.ts) - Enhanced onboarding flow with agent naming step
- Updated ReasoningService with context-aware AI processing
- Added agent name settings section with comprehensive UI
- Implemented smart prompt generation for agent-addressed vs regular text
- Added centralized agent name utility (
- Added IPC handlers for dynamic hotkey updates (
update-hotkey) - Implemented window-level dragging using screen cursor tracking
- Added real-time hotkey loading from localStorage in main dictation component
- Updated WindowManager to support runtime hotkey changes
- Added proper drag state management with smooth 60fps window positioning
- Code Organization: Extracted functionality into dedicated managers and React hooks:
- HotkeyManager, DragManager, AudioManager, MenuManager, DevServerManager
- useAudioRecording, useWindowDrag, useHotkey React hooks
- WindowConfig utility for centralized window configuration
- Reduced WindowManager from 465 to 190 lines through composition pattern
- Initial release of OpenWhispr (formerly OpenWispr)
- Desktop dictation application using OpenAI Whisper
- Local and cloud-based speech-to-text transcription
- Real-time audio recording and processing
- Automatic text pasting via accessibility features
- SQLite database for transcription history
- macOS tray icon integration
- Global hotkey support (backtick key)
- Control panel for settings and configuration
- Local Whisper model management
- OpenAI API integration
- Cross-platform support (macOS, Windows, Linux)
- Speech-to-Text: Convert voice to text using OpenAI Whisper
- Dual Processing: Choose between local processing (private) or cloud processing (fast)
- Model Management: Download and manage local Whisper models (tiny, base, small, medium, large)
- Transcription History: View, copy, and delete past transcriptions
- Accessibility Integration: Automatic text pasting with proper permission handling
- API Key Management: Secure storage and management of OpenAI API keys
- Real-time UI: Live feedback during recording and processing
- Global Hotkey: Quick access via customizable keyboard shortcut
- Database Storage: Persistent storage of transcriptions with SQLite
- Permission Management: Streamlined macOS accessibility permission setup
- Frontend: React 19, Vite, TailwindCSS, Shadcn/UI components
- Backend: Electron 36, Node.js
- Database: better-sqlite3 for local storage
- AI Processing: OpenAI Whisper (local and API)
- Build System: Electron Builder for cross-platform packaging
- Local-first approach with optional cloud processing
- Secure API key storage and management
- Sandboxed renderer processes with context isolation
- Proper clipboard and accessibility permission handling