271 Commits

Author SHA1 Message Date
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
Beingpax
ac1a85c056 Improved text formatting during paste operation 2025-11-28 20:39:43 +05:45
Beingpax
e16c84e1ed Add accessibility permission check to prevent pop-up when calling SelectedTextService 2025-11-20 22:44:45 +05:45
Beingpax
b6068bc881 Show raw API error responses on key verification failure 2025-11-20 22:29:21 +05:45
Beingpax
a762070f3d Remove redundant codefiles 2025-11-18 15:36:12 +05:45
Beingpax
308098694d Add support for scribe v2 model 2025-11-17 10:14:32 +05:45
Beingpax
fb69db2fe9 Simplify the import logic for dictionary 2025-11-14 11:12:41 +05:45
Beingpax
7d12c50fcb Rename dictionary context to custom vocabulary 2025-11-14 09:02:12 +05:45
Beingpax
9d3d1482b0 Remove prepopulated dictionary items 2025-11-14 08:25:52 +05:45
Beingpax
fcc7b4783f Add reasoning parameter support for Gemini and OpenAI models 2025-11-07 22:29:44 +05:45
Beingpax
2e5c737255 Remove reasoning effort parameter for openAI and gemini models 2025-11-07 22:28:18 +05:45
Beingpax
cf8d821436 Implement Dictionary Import export support for iOS companion app(v1) 2025-11-07 11:31:41 +05:45
Beingpax
5f59b61ee8 Remove toggle switch for word replacements 2025-11-07 10:47:25 +05:45
Beingpax
804fae7c01 Remove shortcut option with selectedtextservice 2025-11-06 22:46:47 +05:45
Deborah Mangan
f261e4937b Fix critical production safety issues
- Replace force-unwrapped URLs in cloud transcription services with safe guard statements
  * GroqTranscriptionService: Add URL validation before use
  * ElevenLabsTranscriptionService: Add URL validation before use
  * MistralTranscriptionService: Add URL validation before use
  * OpenAICompatibleTranscriptionService: Add URL validation before use

- Replace fatalError in VoiceInk.swift with graceful degradation
  * Implement in-memory fallback when persistent storage fails
  * Add user notification for storage issues
  * Use proper logging instead of fatal crash

- Fix dictionary force unwrap in WhisperPrompt.swift
  * Add safe fallback when default language prompt missing
  * Prevent potential crash on dictionary access

- Wrap debug print statement in #if DEBUG directive
  * Eliminate production logging overhead in VoiceInk.swift

These changes prevent 6+ potential crash scenarios while maintaining
full functionality with graceful error handling.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-11-03 10:39:35 +10:00
Beingpax
a69f0239b1 Skip the screen recording permission prompt if not provided. 2025-11-01 10:34:31 +05:45
Beingpax
ed9a13c16b Improve prompt icon picker: grid popover UI, 30+ productivity icons, system colors 2025-10-31 12:10:57 +05:45
Beingpax
f6402b1520 feat: Adding support for soniox v3 2025-10-28 22:31:16 +05:45
Beingpax
357804c03d feat: Integrate SelectedTextKit for robust text retrieval with multi-strategy support 2025-10-28 18:30:25 +05:45
Beingpax
5bdbb39ac8 Use Accessibility API's for copying selected text and use copy action as a fallback 2025-10-28 11:31:44 +05:45
Anton Lvovych
cc086c1d92
Update FluidAudio to latest with ESpeakNG framework fix
- Update FluidAudio to f47209a which includes ESpeakNG framework fix
- Fix VadConfig API compatibility: threshold -> defaultThreshold
- Add WorkspaceSettings to allow FluidAudio's unsafe build flags

This resolves the dyld crash: "Library not loaded: ESpeakNG.framework/Versions/A/ESpeakNG"
Fixed upstream in FluidInference/FluidAudio#159 and FluidInference/FluidAudio#160

Tested: All 4 UI tests pass
2025-10-27 15:16:40 +07:00
Beingpax
4fb8bf361b Add option to disable Enhancemnent Shortcut Cmd + E 2025-10-27 10:59:19 +05:45
Beingpax
2c6d1ac5e2 Added gemini 2.0 flash model 2025-10-25 21:20:17 +05:45
Beingpax
e15f2cec50 Added license state and selectedlanguage in System info 2025-10-25 20:57:37 +05:45
Beingpax
95790c4a58 Log raw, filtered, formatted, replaced, and AI-enhanced text 2025-10-25 09:57:14 +05:45
Beingpax
3f01f49f56 Clean up 2025-10-19 16:59:23 +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
81fb97f446 chore: update AI models list 2025-10-17 09:41:15 +05:45
Beingpax
07e8c0dddf Fix immediate deletion breaking transcription process 2025-10-10 22:10:32 +05:45
Beingpax
40f955db36 Migrate to ScreenCaptureKit from deprecated API 2025-10-09 19:43:20 +05:45
Beingpax
d99623b9e1 Improved Context handling 2025-10-09 15:41:39 +05:45