302 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
fd1219580d Enable log export across multiple sessions for better diagnostic support 2026-01-12 16:45:45 +05:45
Beingpax
7a16c7bec4 Add glm models 2026-01-12 09:24:56 +05:45
Beingpax
94be2ffccd Remove system prompt and user message logging from AI services 2026-01-12 09:16:25 +05:45
Beingpax
d1fe77f2aa Remove verbose logging from cleanup and capture services 2026-01-12 08:48:50 +05:45
Beingpax
c457cf89d7 Add System Default audio input mode 2026-01-11 20:12:12 +05:45
Beingpax
8fce0475a5 Fix potential crashes and silent failures in audio recording: guard against division by zero in audio metering, check ExtAudioFileWrite return status, and safely unwrap downloads directory 2026-01-11 09:14:52 +05:45
Beingpax
c530367a04 Replace audio recorder with CoreAudio AUHAL
New low-level recorder targeting devices directly. Includes device switching during recording, enhanced logging (transport type, format, buffer), and log export feature.
2026-01-10 20:45:37 +05:45
Beingpax
69c5d4abd1 Migrate legacy "GROQ" raw value to "Groq" 2026-01-06 14:20:33 +05:45
Beingpax
c4167e9e90 Fix keychain access errors by removing explicit access group that mismatched entitlements 2026-01-05 23:19:30 +05:45
Beingpax
aab096d252 Move license key and trial date from UserDefaults to Keychain 2026-01-05 23:06:46 +05:45
Beingpax
eadf889a15 Remove unused aiProviderApiKey from UserDefaults 2026-01-05 22:37:56 +05:45
Beingpax
8c1443f901 Standardize Groq naming to proper case 2026-01-05 22:32:22 +05:45
Beingpax
948033ac28 Migrate API key storage to Keychain with iCloud sync
Move API keys from UserDefaults to secure Keychain storage. Add KeychainService and APIKeyManager for centralized key management. Enable iCloud Keychain sync for cross-device sharing between macOS and iOS.
2026-01-05 22:28:34 +05:45
Beingpax
0090b2f8f8 Add GPT 5.2 model support
Added gpt-5.2 to OpenAI available models list and set as default model
2026-01-03 08:55:32 +05:45
Beingpax
658291635b Remove prewarm transcription database saving 2026-01-01 17:56:13 +05:45
Beingpax
8bfaf88f9b Add configurable audio resumption delay for Bluetooth headphones
Fixes #459
2025-12-31 16:23:13 +05:45
Beingpax
93f8811d77 Add missing rollback in dictionary import error handling 2025-12-28 12:47:21 +05:45
Beingpax
7beb63e3c6 Prevent crashes and duplicates in import operations 2025-12-28 12:26:50 +05:45
Beingpax
4e551926e7 Fix Soniox vocabulary integration to read from SwiftData 2025-12-28 12:16:59 +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
fe842de807 Rename Correct Spellings to Vocabulary and update related terminology 2025-12-27 15:27:00 +05:45
Beingpax
f351ed4dde Add support for gemini 3 flash for AI enhancement 2025-12-23 11:33:21 +05:45
Beingpax
003e0d8205 Revert "Fix: Allow device switching during recording on disconnection"
This reverts commit 0445dca865d0776c5ffe7efe502b001c151d37ea.
2025-12-21 22:05:55 +05:45
Beingpax
0445dca865 Fix: Allow device switching during recording on disconnection 2025-12-21 21:50:35 +05:45
Beingpax
4cef5aa12d Fix: Replace deprecated kAudioObjectPropertyElementMaster with kAudioObjectPropertyElementMain 2025-12-21 21:45:07 +05:45
Prakash Joshi Pax
621f99c10f
Update VoiceInk/Services/AudioDeviceConfiguration.swift
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2025-12-21 21:41:57 +05:45
Beingpax
873379c0ca Improve audio recording startup with validation, retry logic, and device change handling 2025-12-21 19:37:03 +05:45
Beingpax
2944e4ce5c Improve recorder device change handling 2025-12-21 13:04:35 +05:45
Beingpax
6ab3705123 Add timeout and retry logic to GroqTranscriptionService 2025-12-19 12:16:33 +05:45
Beingpax
583165f219 Cleanup resources properly 2025-12-19 09:24:22 +05:45
Beingpax
b227fa4b0d Fix Force unwrapping serviceRegistry! is risky 2025-12-19 09:21:38 +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
a2f19b04c6 Add model prewarm service on system wake and app launch 2025-12-17 21:23:30 +05:45
Beingpax
078e02c503 Parakeet model validation & Intel mac local model warning 2025-12-17 09:41:57 +05:45
Beingpax
ac8174b258 Fix migration logic 2025-12-12 14:36:33 +05:45
Beingpax
bd6973e559 Better device fallback logic 2025-12-12 11:39:25 +05:45
Beingpax
a3226bb0fb Simplify audio input modes: keep Custom and Prioritized, remove System Default option 2025-12-12 09:19:29 +05:45
Beingpax
baae439aae Preserve transcription in clipboard by default, add restore option with configurable delay 2025-12-07 15:24:10 +05:45
Nico Duldhardt
d25ae52333 Fix OCR capturing VoiceInk status overlay instead of frontmost app window
The screen capture service was selecting the first layer-0 window, which
during recording was VoiceInk's own status indicator overlay. This caused
OCR to always return 'No text detected' since the overlay has no readable
content.

Changes:
- Filter out windows owned by VoiceInk's process
- Prioritize windows belonging to NSWorkspace.frontmostApplication
- Refactor WindowCandidate struct to class scope
2025-12-07 01:05:00 +01:00
Nico Duldhardt
df2a8d9901 remove check for windows < 120x120 2025-12-07 00:52:52 +01:00
Nico Duldhardt
3b043f4da9 Fix OCR capturing VoiceInk status overlay instead of frontmost app window
The screen capture service was selecting the first layer-0 window, which
during recording was VoiceInk's own status indicator overlay. This caused
OCR to always return 'No text detected' since the overlay has no readable
content.

Changes:
- Filter out windows owned by VoiceInk's process
- Prioritize windows belonging to NSWorkspace.frontmostApplication
- Filter out tiny windows (<120x120) to avoid tooltips/overlays
- Move CGWindowListCopyWindowInfo off main thread for better UI responsiveness
- Refactor WindowCandidate struct to class scope
2025-12-07 00:23:04 +01:00
Beingpax
ab9d6ad830 Add option to dismiss Affiliate promotion 2025-12-06 08:18:35 +05:45
Beingpax
d4fb2125e6 Remove virtual and aggregate device filtering from isValidInputDevice 2025-12-05 19:15:13 +05:45
Beingpax
8cc83f84dc Exclude virtual devices and aggregate devices for Audio input devices 2025-12-04 21:50:23 +05:45
Beingpax
feea0d7f2a Fix race conditions due to audio device selection in menu bar 2025-12-04 21:24:36 +05:45
Beingpax
8ce84e9a69 Add llama3.1-8b from Cerebras 2025-12-04 20:55:13 +05:45
Beingpax
ea64ff3109 Update AI enhancement models 2025-12-04 20:53:15 +05:45
Beingpax
b754f39d89 Remove text formatting during Paste operation 2025-12-04 19:06:20 +05:45
Beingpax
45a2b72bfd Resolve fatal crash due to text insertion 2025-12-02 08:19:20 +05:45