112 Commits

Author SHA1 Message Date
Jake Shore
de1c1e51aa Add hybrid streaming transcription for improved accuracy
- Implement real-time streaming preview using Parakeet EOU (160ms chunks)
- Add batch transcription on completion for accurate final result
- Prefer Whisper large-v3-turbo (2.7% WER) over Parakeet (6.05% WER) when available
- Remove audio preprocessing that hurts ASR accuracy (gain control, noise reduction)
- Add streaming audio callback support in Recorder and CoreAudioRecorder
- Raw audio passthrough - SDK handles resampling internally

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 07:35:53 -05:00
Beingpax
58577c3a7a Run power mode detection in background 2026-01-08 10:19:13 +05:45
Beingpax
18464df195 Fix Power Mode not detecting app/website on subsequent recordings when auto-restore is disabled 2026-01-06 16:32:41 +05:45
Beingpax
4ea8d382a4 Add Power Mode keyboard shortcuts and improve session management
Power Mode Keyboard Shortcuts:
- Add hotkeyShortcut property to PowerModeConfig for storing custom shortcuts
- Implement keyboard shortcut UI in Power Mode configuration view
- Add hotkey registration system in HotkeyManager to manage Power Mode shortcuts
- Support cleanup of shortcuts when Power Mode configurations are removed
- Post notifications when Power Mode configurations change

Explicit Power Mode Activation:
- Add optional powerModeId parameter to toggleRecord and toggleMiniRecorder
- Refactor ActiveWindowService.applyConfigurationForCurrentApp to applyConfiguration
- Support direct Power Mode activation via powerModeId instead of auto-detection
- Pass powerModeId through recording flow for explicit mode selection

Session Management Improvements:
- Fix auto-restore to preserve baseline when switching Power Modes mid-recording
- Only capture baseline state on first session creation
- Prevent subsequent beginSession calls from overwriting original baseline
- Ensure auto-restore returns to settings from before recording started

UI Refinements:
- Remove redundant "Record" label from keyboard shortcut recorder
2026-01-03 08:43:11 +05:45
Beingpax
60125c316b Migrate dictionary data from UserDefaults to SwiftData
Migrates vocabulary words and word replacements from UserDefaults to SwiftData for better data management and persistence.

Changes:
- Create VocabularyWord and WordReplacement SwiftData models
- Add dual ModelConfiguration setup (default.store for transcripts, dictionary.store for dictionary data)
- Implement DictionaryMigrationService for one-time UserDefaults→SwiftData migration
- Rename "Correct Spellings" to "Vocabulary" for clearer terminology
- Update all dictionary views to use @Query instead of manager classes
- Update all services to fetch from SwiftData using FetchDescriptor
- Enhance word replacement duplicate detection (now checks during add AND edit)
- Update import/export services to work with SwiftData
- Preserve all existing functionality with improved data integrity

Technical details:
- Separate store files: default.store (transcripts) + dictionary.store (vocabulary + replacements)
- Migration flag: "HasMigratedDictionaryToSwiftData_v2"
- All CRUD operations properly implemented with duplicate detection
2025-12-28 12:09:43 +05:45
Beingpax
5ca848af91 Add TranscriptionServiceRegistry to eliminate duplicate service routing logic
- Create centralized registry for managing transcription services
- Replace duplicate switch statements across 4 manager classes
- Consolidate service initialization into single registry pattern
- Add cleanup method to registry for resource management
- Ensure fresh service registry on each transcription request
2025-12-18 21:29:35 +05:45
Beingpax
85e26856df Optimize recorder startup 2025-12-07 09:26:52 +05:45
Beingpax
b754f39d89 Remove text formatting during Paste operation 2025-12-04 19:06:20 +05:45
Beingpax
ac1a85c056 Improved text formatting during paste operation 2025-11-28 20:39:43 +05:45
Beingpax
5f59b61ee8 Remove toggle switch for word replacements 2025-11-07 10:47:25 +05:45
Beingpax
489f2eaf0c Fix logs showing private instead of actual transcription text 2025-11-07 09:34:18 +05:45
Beingpax
4bff63dc00 Prevent UI stuck state when switching between mini and notch recorders 2025-11-01 10:15:32 +05:45
Beingpax
95790c4a58 Log raw, filtered, formatted, replaced, and AI-enhanced text 2025-10-25 09:57:14 +05:45
Beingpax
a0e4dd1367 Added support for V2 and V3 models 2025-10-19 14:01:31 +05:45
Beingpax
14d52a9c08 Fix screen capture crash by isolating services 2025-10-18 22:07:48 +05:45
Beingpax
07e8c0dddf Fix immediate deletion breaking transcription process 2025-10-10 22:10:32 +05:45
Beingpax
cba11cdc55 Capture clipboard context and screen context at the beginning of the recording. 2025-10-07 09:06:30 +05:45
Beingpax
b7627c9deb Remove screen capture toggle gating 2025-10-06 17:26:38 +05:45
Beingpax
602654e733 Fix cancellation race conditions 2025-10-04 23:08:50 +05:45
Beingpax
eb364416ea Improved cleanup and model loading for parakeet 2025-10-04 13:54:10 +05:45
Beingpax
a37b95620c Improced the recording/transcription flow 2025-09-28 20:54:05 +05:45
Beingpax
0508c3a3b1 Rename and relocate transcription filter 2025-09-27 11:57:39 +05:45
wobondar
2105ae4844
feat: Add Power Mode display to transcription history 2025-09-25 21:22:52 +01:00
Beingpax
afd6e91207 Centralize text formatting in main flows 2025-09-19 09:09:05 +05:45
Beingpax
2b787e8e64 Centralize hallucination filter 2025-09-16 17:30:46 +05:45
Alexey Haidamaka
889c3e5265 add capability to see ai request in history view 2025-09-14 00:24:10 +02:00
Beingpax
4c940749ab Add trailing space setting for CJK languages 2025-09-01 14:34:28 +05:45
Beingpax
2aac1020f8 Added support for preserving the prompt used during enhancement on 2025-08-26 21:34:54 +05:45
Beingpax
87593ac243 Fix AVFoundation failing to get the audio duration 2025-08-14 19:54:19 +05:45
Beingpax
6ad4d70760 Removed session management & use power mode with a new default mode. 2025-08-12 22:33:10 +05:45
Beingpax
6935f58737 Recorder error loggin. 2025-08-12 21:05:53 +05:45
Beingpax
0c517c728b Improved cursorpaster with clipboard restoration 2025-08-08 20:56:54 +05:45
Beingpax
d363808a7b revert copy to clipboard 2025-08-07 10:09:02 +05:45
Beingpax
2970895376 Support for zero data retention on 2025-08-07 01:18:35 +05:45
Beingpax
cdd1783a4c Restore copy to clipboard functionality 2025-08-07 00:41:20 +05:45
Beingpax
41cfc2eca3 refactor: Centralize notification definitions 2025-08-05 21:48:11 +05:45
Beingpax
a26ec91e1b updated Powermode with session manager 2025-08-05 10:53:16 +05:45
Beingpax
5b43f3a2b3 Feat: Overhaul Power Mode to use individual configurations 2025-08-05 08:14:10 +05:45
Beingpax
4b91981879 Conditional delay for stop sound 2025-08-01 20:19:43 +05:45
Beingpax
376781d691 Remove auto-copy toggle, use clipboard preservation 2025-08-01 18:55:41 +05:45
Beingpax
a97d0107af Move stop sound to transcription start 2025-08-01 18:17:19 +05:45
Beingpax
d09a9fba7f Experimental new models 2025-08-01 17:26:08 +05:45
Beingpax
a4356e7fb8 Update AI Enhancement Service: Remove retry logic and fix unused error logging 2025-07-25 16:20:45 +05:45
Beingpax
a0008de55d Revert "Clipboard logic and naming update"
This reverts commit 9d2c61808f088fa0b3a4696c6ed1165db59b5491.
2025-07-25 10:51:23 +05:45
Beingpax
9d2c61808f Clipboard logic and naming update 2025-07-25 10:48:55 +05:45
Beingpax
1068dea78f feat: Added Auto Enter option in Power Mode 2025-07-17 21:09:38 +05:45
Beingpax
9016f885f4 Improve recording failure handling 2025-07-13 10:39:54 +05:45
Beingpax
62c421c0df Fix: Restore transcription failed notification 2025-07-11 09:15:01 +05:45
Beingpax
57f47af062 Add busy state for robust recorder cleanup 2025-07-11 09:05:51 +05:45
Beingpax
516309cb35 Refactor to state machine for recording states & whisperstate file 2025-07-09 16:27:23 +05:45