917 Commits

Author SHA1 Message Date
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
Beingpax
c2666c3c24 Update to 1.63 2025-12-04 22:30:22 +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
2e7112c06a Remove disabled state when enhancement turned off 2025-12-04 21:17:00 +05:45