921 Commits

Author SHA1 Message Date
Beingpax
bf3c035e58 Add rollback for failed dictionary operations 2025-12-28 12:32:14 +05:45
Beingpax
7beb63e3c6 Prevent crashes and duplicates in import operations 2025-12-28 12:26:50 +05:45
Beingpax
a631043167 Add error handling for dictionary save operations 2025-12-28 12:19:36 +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
2a9bf12e0e Remove unused isEnabled property from VocabularyWord 2025-12-27 21:20:26 +05:45
Beingpax
01c12cdd2d Refactor word replacements with inline UI 2025-12-27 20:19:33 +05:45
Beingpax
a363745f36 Prevent duplicate word replacements 2025-12-27 18:24:33 +05:45
Beingpax
fe842de807 Rename Correct Spellings to Vocabulary and update related terminology 2025-12-27 15:27:00 +05:45
Beingpax
e74e6c1df5 Add support for gemini 3.0 models for cloud transcription 2025-12-23 12:12:50 +05:45
Beingpax
f351ed4dde Add support for gemini 3 flash for AI enhancement 2025-12-23 11:33:21 +05:45
Prakash Joshi Pax
0592b27ac8
Merge pull request #447
Update selectedtextkit package
2025-12-21 22:54:28 +05:45
Beingpax
5d6a2208cf Update selectedtextkit package 2025-12-21 22:48:18 +05:45
Prakash Joshi Pax
bd4b25e7c1
Merge pull request #446 from Beingpax/improved-recorder-setup
Improve Audio Engine Recorder Setup
2025-12-21 22:37:25 +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
c57c729d6c init power meters to silence 2025-12-21 21:30:08 +05:45
Beingpax
3306c6a6e4 fix(audio): Reduce recording validation timer for faster feedback 2025-12-21 20:28:14 +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
d7504412c9 Only trigger device change when recording is active 2025-12-21 13:22:15 +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
6ea41020a0 Move Help & Feedback button inline 2025-12-19 09:48:43 +05:45
Prakash Joshi Pax
aa10377a55
Merge pull request #443 from Beingpax/refactor/centralize-transcription-services
Add TranscriptionServiceRegistry to eliminate duplicate service
2025-12-19 09:33:52 +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
b07a571fc2 Improve notification View 2025-12-13 09:38:46 +05:45
Beingpax
eceb43f490 Add toggle recorder option in menu bar 2025-12-12 21:24:30 +05:45
Prakash Joshi Pax
80d4dff640
Merge pull request #438 from Beingpax/AV-AudioEngine-Setup
Avaudioengine setup
2025-12-12 20:32:29 +05:45
Beingpax
eb04104bcb Record failure notifications 2025-12-12 20:31:41 +05:45
Beingpax
ac8174b258 Fix migration logic 2025-12-12 14:36:33 +05:45
Beingpax
4f4837d310 Fix audio format changes and thread safety issues 2025-12-12 14:32:20 +05:45
Beingpax
42f4b93ff7 Fix AVAudioConverter callback to prevent buffer duplication 2025-12-12 13:09:44 +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
8f48c91642 Add AV Audio Engine recorder setup 2025-12-11 21:37:31 +05:45
Beingpax
baae439aae Preserve transcription in clipboard by default, add restore option with configurable delay 2025-12-07 15:24:10 +05:45
Prakash Joshi Pax
45dbd57722
Merge pull request #429 from klaudworks/fix/ocr-window-detection
Fix OCR capturing VoiceInk status overlay instead of frontmost app window
2025-12-07 12:27:31 +05:45
Beingpax
85e26856df Optimize recorder startup 2025-12-07 09:26:52 +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
557ac95478 1.64 update 2025-12-06 08:43:41 +05:45
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