From a0a1257e3be098da1dc67ecdd633557abba944f2 Mon Sep 17 00:00:00 2001 From: Beingpax Date: Sun, 22 Jun 2025 23:37:03 +0545 Subject: [PATCH] Add enhancement prompt support when power mode disabled --- VoiceInk.xcodeproj/project.pbxproj | 8 +- VoiceInk/HotkeyManager.swift | 28 +++--- .../Recorder/EnhancementPromptPopover.swift | 91 +++++++++++++++++++ .../Views/Recorder/MiniRecorderView.swift | 55 ++++++----- .../Views/Recorder/MiniWindowManager.swift | 1 + .../Views/Recorder/NotchRecorderView.swift | 86 +++++++++++------- .../Views/Recorder/NotchWindowManager.swift | 1 + powerModeConfigurationsV2 | 3 + 8 files changed, 200 insertions(+), 73 deletions(-) create mode 100644 VoiceInk/Views/Recorder/EnhancementPromptPopover.swift create mode 100644 powerModeConfigurationsV2 diff --git a/VoiceInk.xcodeproj/project.pbxproj b/VoiceInk.xcodeproj/project.pbxproj index c61a3e4..5474052 100644 --- a/VoiceInk.xcodeproj/project.pbxproj +++ b/VoiceInk.xcodeproj/project.pbxproj @@ -448,7 +448,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 134; + CURRENT_PROJECT_VERSION = 136; DEVELOPMENT_ASSET_PATHS = "\"VoiceInk/Preview Content\""; DEVELOPMENT_TEAM = V6J6A3VWY2; ENABLE_HARDENED_RUNTIME = YES; @@ -463,7 +463,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.34; + MARKETING_VERSION = 1.36; PRODUCT_BUNDLE_IDENTIFIER = com.prakashjoshipax.VoiceInk; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -481,7 +481,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 134; + CURRENT_PROJECT_VERSION = 136; DEVELOPMENT_ASSET_PATHS = "\"VoiceInk/Preview Content\""; DEVELOPMENT_TEAM = V6J6A3VWY2; ENABLE_HARDENED_RUNTIME = YES; @@ -496,7 +496,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.34; + MARKETING_VERSION = 1.36; PRODUCT_BUNDLE_IDENTIFIER = com.prakashjoshipax.VoiceInk; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/VoiceInk/HotkeyManager.swift b/VoiceInk/HotkeyManager.swift index 057baee..92faa4c 100644 --- a/VoiceInk/HotkeyManager.swift +++ b/VoiceInk/HotkeyManager.swift @@ -308,21 +308,21 @@ class HotkeyManager: ObservableObject { let powerModeManager = PowerModeManager.shared - // Only proceed if Power Mode is enabled - guard powerModeManager.isPowerModeEnabled else { return } - - let availableConfigurations = powerModeManager.getAllAvailableConfigurations() - - if index < availableConfigurations.count { - let selectedConfig = availableConfigurations[index] + if powerModeManager.isPowerModeEnabled { + let availableConfigurations = powerModeManager.getAllAvailableConfigurations() + if index < availableConfigurations.count { + let selectedConfig = availableConfigurations[index] + powerModeManager.setActiveConfiguration(selectedConfig) + await ActiveWindowService.shared.applyConfiguration(selectedConfig) + } + } else { + guard let enhancementService = await self.whisperState.getEnhancementService(), + enhancementService.isEnhancementEnabled else { return } - // Set as active configuration - powerModeManager.setActiveConfiguration(selectedConfig) - - // Apply the configuration - await ActiveWindowService.shared.applyConfiguration(selectedConfig) - - print("🎯 Switched to Power Mode: \(selectedConfig.name) via Command+\(index + 1)") + let availablePrompts = enhancementService.allPrompts + if index < availablePrompts.count { + enhancementService.setActivePrompt(availablePrompts[index]) + } } } } diff --git a/VoiceInk/Views/Recorder/EnhancementPromptPopover.swift b/VoiceInk/Views/Recorder/EnhancementPromptPopover.swift new file mode 100644 index 0000000..89f086c --- /dev/null +++ b/VoiceInk/Views/Recorder/EnhancementPromptPopover.swift @@ -0,0 +1,91 @@ +import SwiftUI + +// Enhancement Prompt Popover for recorder views +struct EnhancementPromptPopover: View { + @EnvironmentObject var enhancementService: AIEnhancementService + @State private var selectedPrompt: CustomPrompt? + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + // Enhancement Toggle at the top + HStack(spacing: 8) { + Toggle("Enhancement Prompt", isOn: $enhancementService.isEnhancementEnabled) + .foregroundColor(.white.opacity(0.9)) + .font(.headline) + .lineLimit(1) + + Spacer() + } + .padding(.horizontal) + .padding(.top, 8) + + Divider() + .background(Color.white.opacity(0.1)) + + ScrollView { + VStack(alignment: .leading, spacing: 4) { + // Available Enhancement Prompts + ForEach(enhancementService.allPrompts) { prompt in + EnhancementPromptRow( + prompt: prompt, + isSelected: selectedPrompt?.id == prompt.id, + isDisabled: !enhancementService.isEnhancementEnabled, + action: { + enhancementService.setActivePrompt(prompt) + selectedPrompt = prompt + } + ) + } + } + .padding(.horizontal) + } + } + .frame(width: 200) + .frame(maxHeight: 300) + .padding(.vertical, 8) + .background(Color.black) + .environment(\.colorScheme, .dark) + .onAppear { + // Set the initially selected prompt + selectedPrompt = enhancementService.activePrompt + } + } +} + +// Row view for each enhancement prompt in the popover +struct EnhancementPromptRow: View { + let prompt: CustomPrompt + let isSelected: Bool + let isDisabled: Bool + let action: () -> Void + + var body: some View { + Button(action: action) { + HStack(spacing: 8) { + // Use the icon from the prompt + Image(systemName: prompt.icon.rawValue) + .font(.system(size: 14)) + .foregroundColor(isDisabled ? .white.opacity(0.2) : .white.opacity(0.7)) + + Text(prompt.title) + .foregroundColor(isDisabled ? .white.opacity(0.3) : .white.opacity(0.9)) + .font(.system(size: 13)) + .lineLimit(1) + + if isSelected { + Spacer() + Image(systemName: "checkmark") + .foregroundColor(isDisabled ? .green.opacity(0.3) : .green) + .font(.system(size: 10)) + } + } + .contentShape(Rectangle()) + .padding(.vertical, 4) + .padding(.horizontal, 8) + } + .buttonStyle(.plain) + .background(isSelected ? Color.white.opacity(0.1) : Color.clear) + .cornerRadius(4) + .disabled(isDisabled) + } +} \ No newline at end of file diff --git a/VoiceInk/Views/Recorder/MiniRecorderView.swift b/VoiceInk/Views/Recorder/MiniRecorderView.swift index db087cd..573b921 100644 --- a/VoiceInk/Views/Recorder/MiniRecorderView.swift +++ b/VoiceInk/Views/Recorder/MiniRecorderView.swift @@ -5,8 +5,11 @@ struct MiniRecorderView: View { @ObservedObject var recorder: Recorder @EnvironmentObject var windowManager: MiniWindowManager @State private var showPowerModePopover = false + @State private var showEnhancementPromptPopover = false @ObservedObject private var powerModeManager = PowerModeManager.shared + @EnvironmentObject private var enhancementService: AIEnhancementService + var body: some View { Group { if windowManager.isVisible { @@ -14,10 +17,7 @@ struct MiniRecorderView: View { .fill(.clear) .background( ZStack { - // Base dark background Color.black.opacity(0.9) - - // Subtle gradient overlay LinearGradient( colors: [ Color.black.opacity(0.95), @@ -26,21 +26,17 @@ struct MiniRecorderView: View { startPoint: .top, endPoint: .bottom ) - - // Very subtle visual effect for depth VisualEffectView(material: .hudWindow, blendingMode: .withinWindow) .opacity(0.05) } .clipShape(Capsule()) ) .overlay { - // Subtle inner border Capsule() .strokeBorder(Color.white.opacity(0.1), lineWidth: 0.5) } .overlay { HStack(spacing: 0) { - // Record Button - on the left NotchRecordButton( isRecording: whisperState.isRecording, isProcessing: whisperState.isProcessing @@ -50,7 +46,6 @@ struct MiniRecorderView: View { .frame(width: 24) .padding(.leading, 8) - // Visualizer - centered and expanded Group { if whisperState.isProcessing { StaticVisualizer(color: .white) @@ -65,21 +60,39 @@ struct MiniRecorderView: View { .frame(maxWidth: .infinity) .padding(.horizontal, 8) - // Power Mode Button - on the right - NotchToggleButton( - isEnabled: powerModeManager.isPowerModeEnabled, - icon: powerModeManager.currentActiveConfiguration.emoji, - color: .orange, - disabled: !powerModeManager.isPowerModeEnabled - ) { - if powerModeManager.isPowerModeEnabled { + if powerModeManager.isPowerModeEnabled { + NotchToggleButton( + isEnabled: powerModeManager.isPowerModeEnabled, + icon: powerModeManager.currentActiveConfiguration.emoji, + color: .orange, + disabled: false + ) { showPowerModePopover.toggle() } - } - .frame(width: 24) - .padding(.trailing, 8) - .popover(isPresented: $showPowerModePopover, arrowEdge: .bottom) { - PowerModePopover() + .frame(width: 24) + .padding(.trailing, 8) + .popover(isPresented: $showPowerModePopover, arrowEdge: .bottom) { + PowerModePopover() + } + } else { + NotchToggleButton( + isEnabled: enhancementService.isEnhancementEnabled, + icon: enhancementService.activePrompt?.icon.rawValue ?? "brain", + color: .blue, + disabled: false + ) { + if enhancementService.isEnhancementEnabled { + showEnhancementPromptPopover.toggle() + } else { + enhancementService.isEnhancementEnabled = true + } + } + .frame(width: 24) + .padding(.trailing, 8) + .popover(isPresented: $showEnhancementPromptPopover, arrowEdge: .bottom) { + EnhancementPromptPopover() + .environmentObject(enhancementService) + } } } .padding(.vertical, 8) diff --git a/VoiceInk/Views/Recorder/MiniWindowManager.swift b/VoiceInk/Views/Recorder/MiniWindowManager.swift index 5045457..c91f042 100644 --- a/VoiceInk/Views/Recorder/MiniWindowManager.swift +++ b/VoiceInk/Views/Recorder/MiniWindowManager.swift @@ -57,6 +57,7 @@ class MiniWindowManager: ObservableObject { let miniRecorderView = MiniRecorderView(whisperState: whisperState, recorder: recorder) .environmentObject(self) + .environmentObject(whisperState.enhancementService!) let hostingController = NSHostingController(rootView: miniRecorderView) panel.contentView = hostingController.view diff --git a/VoiceInk/Views/Recorder/NotchRecorderView.swift b/VoiceInk/Views/Recorder/NotchRecorderView.swift index b4f5631..8dc1ed9 100644 --- a/VoiceInk/Views/Recorder/NotchRecorderView.swift +++ b/VoiceInk/Views/Recorder/NotchRecorderView.swift @@ -6,8 +6,11 @@ struct NotchRecorderView: View { @EnvironmentObject var windowManager: NotchWindowManager @State private var isHovering = false @State private var showPowerModePopover = false + @State private var showEnhancementPromptPopover = false @ObservedObject private var powerModeManager = PowerModeManager.shared + @EnvironmentObject private var enhancementService: AIEnhancementService + private var menuBarHeight: CGFloat { if let screen = NSScreen.main { if screen.safeAreaInsets.top > 0 { @@ -18,27 +21,21 @@ struct NotchRecorderView: View { return NSStatusBar.system.thickness } - // Calculate exact notch width private var exactNotchWidth: CGFloat { if let screen = NSScreen.main { - // On MacBooks with notch, safeAreaInsets.left represents half the notch width if screen.safeAreaInsets.left > 0 { - // Multiply by 2 because safeAreaInsets.left is half the notch width return screen.safeAreaInsets.left * 2 } - // Fallback for non-notched Macs - use a standard width return 200 } - return 200 // Default fallback + return 200 } var body: some View { Group { if windowManager.isVisible { HStack(spacing: 0) { - // Left side group with fixed width HStack(spacing: 8) { - // Record Button NotchRecordButton( isRecording: whisperState.isRecording, isProcessing: whisperState.isProcessing @@ -47,36 +44,51 @@ struct NotchRecorderView: View { } .frame(width: 22) - // Power Mode Button - moved from right side - NotchToggleButton( - isEnabled: powerModeManager.isPowerModeEnabled, - icon: powerModeManager.currentActiveConfiguration.emoji, - color: .orange, - disabled: !powerModeManager.isPowerModeEnabled - ) { - if powerModeManager.isPowerModeEnabled { + if powerModeManager.isPowerModeEnabled { + NotchToggleButton( + isEnabled: powerModeManager.isPowerModeEnabled, + icon: powerModeManager.currentActiveConfiguration.emoji, + color: .orange, + disabled: false + ) { showPowerModePopover.toggle() } - } - .frame(width: 22) - .popover(isPresented: $showPowerModePopover, arrowEdge: .bottom) { - PowerModePopover() + .frame(width: 22) + .popover(isPresented: $showPowerModePopover, arrowEdge: .bottom) { + PowerModePopover() + } + } else { + NotchToggleButton( + isEnabled: enhancementService.isEnhancementEnabled, + icon: enhancementService.activePrompt?.icon.rawValue ?? "brain", + color: .blue, + disabled: false + ) { + if enhancementService.isEnhancementEnabled { + showEnhancementPromptPopover.toggle() + } else { + enhancementService.isEnhancementEnabled = true + } + } + .frame(width: 22) + .popover(isPresented: $showEnhancementPromptPopover, arrowEdge: .bottom) { + EnhancementPromptPopover() + .environmentObject(enhancementService) + } } Spacer() } - .frame(width: 64) // Increased width for both controls + .frame(width: 64) .padding(.leading, 16) - // Center section with exact notch width Rectangle() .fill(Color.clear) .frame(width: exactNotchWidth) - .contentShape(Rectangle()) // Make the entire area tappable + .contentShape(Rectangle()) - // Right side group with visualizer only HStack(spacing: 0) { - Spacer() // Push visualizer to the right + Spacer() Group { if whisperState.isProcessing { @@ -89,12 +101,11 @@ struct NotchRecorderView: View { ) } } - .scaleEffect(y: min(1.0, (menuBarHeight - 8) / 25), anchor: .center) .frame(width: 30) - .padding(.trailing, 8) // Add padding to keep it away from the edge + .padding(.trailing, 8) } - .frame(width: 64) // Increased width to match left side + .frame(width: 64) .padding(.trailing, 16) } .frame(height: menuBarHeight) @@ -115,7 +126,6 @@ struct NotchRecorderView: View { -// New toggle button component matching the notch aesthetic struct NotchToggleButton: View { let isEnabled: Bool let icon: String @@ -131,11 +141,22 @@ struct NotchToggleButton: View { self.action = action } + private var isEmoji: Bool { + return !icon.contains(".") && !icon.contains("-") && icon.unicodeScalars.contains { !$0.isASCII } + } + var body: some View { Button(action: action) { - Text(icon) - .font(.system(size: 12)) - .foregroundColor(disabled ? .white.opacity(0.3) : (isEnabled ? .white : .white.opacity(0.6))) + Group { + if isEmoji { + Text(icon) + .font(.system(size: 12)) + } else { + Image(systemName: icon) + .font(.system(size: 11)) + } + } + .foregroundColor(disabled ? .white.opacity(0.3) : (isEnabled ? .white : .white.opacity(0.6))) } .buttonStyle(PlainButtonStyle()) .disabled(disabled) @@ -161,12 +182,10 @@ struct NotchRecordButton: View { ProcessingIndicator(color: .white) .frame(width: 14, height: 14) } else if isRecording { - // Show white square for recording state RoundedRectangle(cornerRadius: 3) .fill(Color.white) .frame(width: 8, height: 8) } else { - // Show white circle for idle state Circle() .fill(Color.white) .frame(width: 8, height: 8) @@ -183,7 +202,6 @@ struct NotchRecordButton: View { } else if isRecording { return .red } else { - // Neutral gray for idle state return Color(red: 0.3, green: 0.3, blue: 0.35) } } diff --git a/VoiceInk/Views/Recorder/NotchWindowManager.swift b/VoiceInk/Views/Recorder/NotchWindowManager.swift index cffd2c4..f22f7c6 100644 --- a/VoiceInk/Views/Recorder/NotchWindowManager.swift +++ b/VoiceInk/Views/Recorder/NotchWindowManager.swift @@ -60,6 +60,7 @@ class NotchWindowManager: ObservableObject { let notchRecorderView = NotchRecorderView(whisperState: whisperState, recorder: recorder) .environmentObject(self) + .environmentObject(whisperState.enhancementService!) let hostingController = NotchRecorderHostingController(rootView: notchRecorderView) panel.contentView = hostingController.view diff --git a/powerModeConfigurationsV2 b/powerModeConfigurationsV2 new file mode 100644 index 0000000..2e66321 --- /dev/null +++ b/powerModeConfigurationsV2 @@ -0,0 +1,3 @@ +bplist00Q +  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUX[^_`abccefghiTkloTstwzc|T~TcTTccTcTTTT_CurrentTranscriptionModelZGROQAPIKey_isPowerModeEnabled_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $244ef137c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationSplitView_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23fbaf8ac).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-2, SidebarNavigationSplitView_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $2413478ac).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-2, SidebarNavigationSplitView]pushToTalkKey_VoiceInkTrialStartDate_NSWindow Frame SUUpdateAlert_DeepgramSelectedModel_!NSNavPanelExpandedSizeForOpenMode_!VoiceInkLicenseRequiresActivation^SendStatistics\GeminiAPIKey_powerModeConfigurationsV2_selectedAIProvider_AudioRetentionPeriod_@NSWindow Frame SwiftUI._ConditionalContent, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23be8d37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1_IsAutoCopyEnabled_VoiceInkLicense_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $246ccd37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationSplitView_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23fbaf8ac).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationSplitView_IsAudioCleanupEnabled\RecorderType_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23be8d37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationView_>NSSplitView Subview Frames SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23be8d37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>>, VoiceInk.NotificationPresenter>-1-AppWindow-1, SidebarNavigationSplitView_defaultPowerModeConfigV2_UseAppleScriptPaste_SelectedLanguage_useScreenCaptureContext_ElevenLabsAPIKey_isSoundFeedbackEnabled_%NSWindow Frame NSNavPanelAutosaveName_prioritizedDevices_lastUsedMicrophoneDeviceID_selectedAudioDeviceUID_TranscriptionPrompt_PromptMigrationVersion_customCloudModels_CustomDictionaryItems_GROQSelectedModel]IsMenuBarOnly_isPushToTalkEnabled_SUEnableAutomaticChecks_SULastCheckTime_wordReplacements_activeConfigurationId_SUAutomaticallyUpdate^audioInputMode_SUSendProfileInfo_CustomLanguagePrompts]customPrompts_hasCompletedOnboarding_selectedPromptId_SUScheduledCheckInterval_NSWindow Frame SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23fbaf8ac).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1_NSWindow Frame SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $2413478ac).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1_NSWindow Frame SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $244ef137c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1_NSWindow Frame SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $246ccd37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1_NSWindow Frame SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23be8d37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1_NSWindow Frame SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $246ab537c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1_ollamaSelectedModel_SUEnableSystemProfiling_SUUpdateGroupIdentifier_SUHasLaunchedBefore_GeminiSelectedModel_OpenAISelectedModel_isSystemMuteEnabled]Release Group_VoiceInkHasLaunchedBefore_isAIEnhancementEnabled_NSWindow Frame SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23be8d37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>>, VoiceInk.NotificationPresenter>-1-AppWindow-1_&NSStatusItem Preferred Position Item-0_NSOSPLastRootDirectory\CurrentModel_userAddedEmojis_hNSSplitView Subview Frames SwiftUI._ConditionalContent, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23be8d37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationSplitView_$KeyboardShortcuts_toggleMiniRecorder_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $23be8d37c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationSplitView_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $2413478ac).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationSplitView_NSSplitView Subview Frames SwiftUI._ConditionalContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, _SwiftData_SwiftUI.(unknown context at $246ab537c).PassthroughModelContainerViewModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI._BackgroundModifier>, SwiftUI._AppearanceActionModifier>, SwiftUI.ModifiedContent>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._EnvironmentKeyWritingModifier>>, SwiftUI._FlexFrameLayout>, SwiftUI._ClipEffect>, SwiftUI._ClipEffect>, SwiftUI._BackgroundModifier>>-1-AppWindow-1, SidebarNavigationSplitView_ggml-large-v3-turbo_8gsk_e0ww8bHI6rKzlhwsv6UJWGdyb3FYZhwLMIr4PSVsPXigBrvHNlLE VW_20.000000, 0.000000, 200.000000, 777.500000, NO, NO_4201.000000, 0.000000, 739.000000, 777.500000, NO, NOYZ_20.000000, 0.000000, 200.000000, 763.000000, NO, NO_4201.000000, 0.000000, 739.000000, 763.000000, NO, NO\]_20.000000, 0.000000, 200.000000, 763.000000, NO, NO_4201.000000, 0.000000, 739.000000, 763.000000, NO, NO\rightCommand3Ag_446 412 620 398 0 0 1512 948 Ywhisper-1[{1182, 793}_'AIzaSyBn_tER_oeAIl9XcFiRSubcCfAZTPc0LDgO y[{"name":"Vibe-Coding","selectedLanguage":"en","useScreenCapture":true,"isAIEnhancementEnabled":false,"selectedAIProvider":"GROQ","selectedAIModel":"llama-3.3-70b-versatile","appConfigs":[{"bundleIdentifier":"com.todesktop.230313mzl4w4u92","appName":"Cursor","id":"75C5FDEC-83D5-47A3-8385-527C32D88428"},{"bundleIdentifier":"com.exafunction.windsurf","appName":"Windsurf","id":"7CAF89F8-9FBE-4FE7-AC81-33C829D15DF5"}],"id":"6A790955-B3B7-4CE2-9E52-D59D386457BC","selectedPrompt":"00000000-0000-0000-0000-000000000001","selectedTranscriptionModelName":"ggml-large-v3-turbo","emoji":"🔥","urlConfigs":[{"url":"chatgpt.com","id":"95633898-B448-42EC-A23A-3AA130F24F15"},{"url":"gemini","id":"988D08EC-6F7F-4AB2-8A37-18D6DA2593F1"},{"url":"aistudio.google.com","id":"DFB6FD7C-130E-4AB2-B3AE-B566E1781301"},{"url":"gemini.google.com","id":"47476218-FCFE-44F4-936B-8A1AA34314DF"},{"url":"claude.ai","id":"2BD02544-7E2A-4AFB-9682-A7EC17AECCBE"}]},{"name":"E-mail","selectedLanguage":"en","useScreenCapture":true,"isAIEnhancementEnabled":true,"selectedAIProvider":"Gemini","selectedAIModel":"gemini-2.0-flash-lite","appConfigs":[{"bundleIdentifier":"com.apple.mail","appName":"Mail","id":"9565E000-5E17-48CE-9870-DC58BA3C6698"}],"id":"0F13D274-D8AF-4642-80F5-AC73AD0893A2","selectedPrompt":"6E45741E-ED3D-44C6-B6C2-1A8FA9998A87","selectedTranscriptionModelName":"ggml-large-v3-turbo","emoji":"✏️","urlConfigs":[{"url":"mail.google.com","id":"C76D93BA-5A1D-47D7-B27D-A396344EDD30"},{"url":"mail.google.com\/","id":"813D3A02-B142-48DB-9FB3-6A6D6948C671"}]},{"name":"Chat","selectedLanguage":"en","selectedAIModel":"llama-3.3-70b-versatile","isAIEnhancementEnabled":true,"selectedAIProvider":"GROQ","appConfigs":[{"bundleIdentifier":"com.hnc.Discord","appName":"Discord","id":"7DC833FF-718C-4B92-A386-24025B675260"}],"id":"31BEA1FB-0EBE-44EF-9AA8-ACEB16B53E5E","selectedPrompt":"D7C1DF50-0CDA-44E0-B5E1-313F6B685ADB","selectedTranscriptionModelName":"ggml-large-v3-turbo","emoji":"📱","useScreenCapture":true},{"name":"Writing","selectedLanguage":"en","useScreenCapture":true,"isAIEnhancementEnabled":true,"selectedAIProvider":"GROQ","selectedAIModel":"llama-3.3-70b-versatile","id":"1E78EC7E-27F0-4167-897D-BA9006947671","selectedPrompt":"00000000-0000-0000-0000-000000000001","selectedTranscriptionModelName":"ggml-large-v3-turbo","emoji":"📝","urlConfigs":[{"url":"medium.com","id":"3E2E5109-20CD-4372-9D04-A2FE8E0B5B8D"}]}]TGROQ_286 95 940 758 0 0 1512 948 _'VI-4E0368E6-CE9A-496A-B393-8A1863766F52mn_20.000000, 0.000000, 200.000000, 777.500000, NO, NO_4201.000000, 0.000000, 739.000000, 777.500000, NO, NOpq_20.000000, 0.000000, 200.000000, 777.500000, NO, NO_4201.000000, 0.000000, 739.000000, 777.500000, NO, NO Unotchuv_10.000000, 0.000000, 140.000000, 19.000000, NO, NO_3141.000000, 0.000000, 329.000000, 19.000000, NO, NOxy_20.000000, 0.000000, 200.000000, 763.000000, NO, NO_4201.000000, 0.000000, 739.000000, 763.000000, NO, NOO[{"selectedPrompt":"00000000-0000-0000-0000-000000000001","useScreenCapture":true,"isAIEnhancementEnabled":true,"id":"DCCB954D-C144-40BD-A583-505DF98D4DA8","selectedLanguage":"en","emoji":"⚙️","selectedAIProvider":"Gemini","name":"Default Configuration","selectedTranscriptionModelName":"apple-speech","selectedAIModel":"gemini-2.0-flash-lite"}Ren _3sk_54f8f31db7b34a1155d2753d72e061afcc0883124db99db5 _165 116 1182 793 0 0 1512 948 Ob[{"name":"Prakash Joshi Pax Microphone","priority":0,"id":"B8FA0BFE-7CAD-4E33-83A4-8C7400000003"}]R82_BuiltInMicrophoneDevice_XHello, how are you doing? Nice to meet you. +VoiceInk, Pooja Dumre, Prakash Joshi Pax, noO[{"name":"whisper-large-v3-en","description":"Custom transcription model","supportedLanguages":{"uz":"Uzbek","te":"Telugu","bs":"Bosnian","ro":"Romanian","bg":"Bulgarian","am":"Amharic","tk":"Turkmen","lo":"Lao","ar":"Arabic","hr":"Croatian","mn":"Mongolian","my":"Myanmar","az":"Azerbaijani","ta":"Tamil","yi":"Yiddish","uk":"Ukrainian","ps":"Pashto","cs":"Czech","hu":"Hungarian","id":"Indonesian","be":"Belarusian","fr":"French","cy":"Welsh","br":"Breton","mt":"Maltese","th":"Thai","en":"English","ln":"Lingala","mi":"Maori","km":"Khmer","yue":"Cantonese","eu":"Basque","fa":"Persian","no":"Norwegian","mk":"Macedonian","bo":"Tibetan","mg":"Malagasy","la":"Latin","gl":"Galician","lb":"Luxembourgish","su":"Sundanese","af":"Afrikaans","mr":"Marathi","fo":"Faroese","el":"Greek","as":"Assamese","sl":"Slovenian","tr":"Turkish","tt":"Tatar","pa":"Punjabi","kn":"Kannada","gu":"Gujarati","sa":"Sanskrit","nn":"Norwegian Nynorsk","ha":"Hausa","hi":"Hindi","hy":"Armenian","zh":"Chinese","sd":"Sindhi","nl":"Dutch","jw":"Javanese","yo":"Yoruba","lv":"Latvian","de":"German","ms":"Malay","sk":"Slovak","ne":"Nepali","pt":"Portuguese","sv":"Swedish","he":"Hebrew","oc":"Occitan","is":"Icelandic","si":"Sinhala","ml":"Malayalam","tg":"Tajik","auto":"Auto-detect","pl":"Polish","lt":"Lithuanian","sw":"Swahili","kk":"Kazakh","ba":"Bashkir","ru":"Russian","bn":"Bengali","ka":"Georgian","ja":"Japanese","et":"Estonian","it":"Italian","sq":"Albanian","sr":"Serbian","es":"Spanish","ht":"Haitian Creole","fi":"Finnish","ur":"Urdu","vi":"Vietnamese","tl":"Tagalog","sn":"Shona","ca":"Catalan","so":"Somali","ko":"Korean","da":"Danish","haw":"Hawaiian"},"id":"2520C763-7218-422D-AB23-1FEE9FE1691A","apiKey":"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","displayName":"Whisper Large v3 en","apiEndpoint":"https:\/\/api.groq.com\/openai\/v1\/audio\/transcriptions","modelName":"distil-whisper-large-v3-en","isMultilingualModel":true,"provider":"Custom"}]OQ[{"id":"CBC0D9D4-6599-4E90-8012-AC98DABE9937","word":"Pooja Dumre","dateAdded":770781482.498501,"isEnabled":true},{"id":"62030EE0-0D86-4C3F-9B4E-59B990EA8EAD","word":"Prakash Joshi Pax","dateAdded":770781476.931795,"isEnabled":true},{"id":"8C86AEE5-1197-4678-AE35-90C4E5AB479A","word":"no","dateAdded":770195901.007203,"isEnabled":true}]_llama-3.3-70b-versatile 3A;>C֎Zmy website\Github HannaXmy email]VoiceInk LInk[dot dot dot[five kisses_https://tryvoiceink.com\@Doimhneacht_prakashjoshipax@gmail.com_https://tryvoiceink.coma &j=====_$1E78EC7E-27F0-4167-897D-BA9006947671]Custom DeviceџUen-USPO%F[{"icon":"checkmark.seal.fill","description":"Default mode to improved clarity and accuracy of the transcription","id":"00000000-0000-0000-0000-000000000001","isActive":false,"title":"Default","triggerWords":["default"],"promptText":"You are tasked with cleaning up transcribed text in the tag. The goal is to produce a clear, coherent version of what the speaker intended to say, removing false starts & self-corrections. Use the available context from if directly related to the user's text. \nPrimary Rules:\n0. The output should always be in the same language as the original text.\n1. Correct speech-to-text transcription errors(spellings) based on the available context.\n2. Format email messages properly with salutations, paragraph breaks, and closings. For example:\n Input: \"hey prakash um hope you're doing well um I wanted to follow up on the project we discussed last week um I think we should move forward with it um let me know what you think um thanks john\"\n Output: \"Hey Prakash,\n \n Hope you're doing well. I wanted to follow up on the project we discussed last week. I think we should move forward with it.\n \n Let me know what you think.\n \n Thanks,\n John\"\n3. Maintain the original meaning and intent of the speaker. Do not add new information or change the substance of what was said.\n4. Always break structure into clear, logical sections with new paragraphs every 2-3 sentences \n5. When the speaker corrects themselves, keep only the corrected version.\n Examples:\n Input: \"We need to finish by Monday... actually no... by Wednesday\" \n Output: \"We need to finish by Wednesday\"\n\n Input: \"um so basically what happened was that when I tried to implement the new feature yesterday afternoon it caused some unexpected issues with the database and then the server started throwing errors which affected our production environment\"\n Output: \"When I tried to implement the new feature yesterday afternoon, it caused some unexpected issues with the database.\n\n The server started throwing errors, which affected our production environment.\"\n6. Ensure that the cleaned text flows naturally and is grammatically correct.\n7. NEVER answer questions that appear in the text. Only format them properly:\n Input: \"hey so what do you think we should do about this. Do you like this idea.\"\n Output: \"What do you think we should do about this. Do you like this idea?\"\n\n Input: \"umm what do you think adding dark mode would be good for our users\"\n Output: \"Do you think adding dark mode would be good for our users?\"\n\n Input: \"This needs to be properly written somewhere. Please do it. How can we do it? Give me three to four ways that would help the AI work properly.\"\n Output: \"This needs to be properly written somewhere. How can we do it? Give me 3-4 ways that would help the AI work properly?\"\n8. Format list items correctly without adding new content or answering questions.\n - When input text contains sequence of items, restructure as:\n * Ordered list (1. 2. 3.) for sequential or prioritized items\n * Unordered list (•) for non-sequential items\n Examples:\n Input: \"i need to do three things first buy groceries second call mom and third finish the report\"\n Output: I need to do three things:\n 1. Buy groceries\n 2. Call mom\n 3. Finish the report\n9. Use numerals for numbers (3,000 instead of three thousand, $20 instead of twenty dollars)\n10. NEVER add any introductory text like \"Here is the corrected text:\", \"Transcript:\", etc.\n\nAfter cleaning the text, return only the cleaned version without any additional text, explanations, or tags. The output should be ready for direct use without further editing.\n","isPredefined":true},{"icon":"bubble.left.and.bubble.right.fill","description":"AI assistant that provides direct answers to queries","id":"00000000-0000-0000-0000-000000000002","isActive":false,"title":"Assistant","triggerWords":["chat","chad"],"promptText":"\nGive a helpful and informative response to the user's query. Use information from the section if directly related to the user's query. \nRemember to:\n1. ALWAYS provide ONLY the direct answer to the user's query.\n2. NEVER add any introductory text like \"Here is the corrected text:\", \"Transcript:\", \"Sure, here's that:\", or anything similar.\n3. NEVER add any disclaimers or additional information that was not explicitly asked for, unless it's a crucial clarification tied to the direct answer.\n4. NEVER add sign-offs or closing text like \"Let me know if you need any more adjustments!\", or anything like that.\n5. Your response must be directly address the user's request.\n6. Maintain a friendly, casual tone.\n<\/SYSTEM_INSTRUCTIONS>\n\n\nYour task is to work ONLY with the content within the tags.\n\nIMPORTANT: The information in section is ONLY for reference.\n- If the & contains similar looking names, nouns, company names, or usernames, prioritize the spelling and form from the section, as the may contain errors during transcription.\n- Use the to understand the user's intent and context.\n<\/CONTEXT_USAGE_INSTRUCTIONS>","isPredefined":true},{"icon":"envelope.fill","description":"Template for converting casual messages into professional email format","id":"6E45741E-ED3D-44C6-B6C2-1A8FA9998A87","isActive":false,"title":"Email","triggerWords":["email","emil","e-mail"],"promptText":"Primary Rules:\n1. Preserve the speaker's original tone and personality\n2. Maintain professional tone while keeping personal speaking style\n3. Structure content into clear paragraphs\n4. Fix grammar and punctuation while preserving key points\n5. Remove filler words and redundancies\n6. Keep important details and context\n7. Format lists and bullet points properly\n8. Preserve any specific requests or action items\n9. Always include a professional sign-off\n10. Use appropriate greeting based on context\n\nExamples:\n\nInput: \"hey just wanted to follow up on yesterday's meeting about the timeline we need to finish by next month can you send the docs when ready thanks\"\n\nOutput: \"Hi,\n\nI wanted to follow up on yesterday's meeting about the timeline. We need to finish by next month.\n\nCould you send the docs when ready?\n\nThanks,\nPrakash Joshi Pax”\n\nInput: \"quick update on the project we're at 60% complete but facing some testing issues that might delay things we're working on solutions\"\n\nOutput: \"We're at 60% complete but facing some testing issues that might delay things. We're working on solutions.\n\nI'll keep you updated.\n\nRegards,\nPrakash Joshi Pax”\n\nInput: \"hi sarah checking in about the design feedback from last week can we proceed to the next phase\"\n\nOutput: \"Hi Sarah,\n\nI'm checking in about the design feedback from last week. Can we proceed to the next phase?\n\nThanks,\nPrakash Joshi Pax”","isPredefined":false},{"icon":"bubble.left.and.bubble.right.fill","description":"Casual chat-style formatting","id":"D7C1DF50-0CDA-44E0-B5E1-313F6B685ADB","isActive":false,"title":"Chat","triggerWords":["message","massage"],"promptText":"Primary Rules:\nWe are in a causual chat conversation.\n1. Focus on clarity while preserving the speaker's personality:\n - Keep personality markers that show intent or style (e.g., \"I think\", \"The thing is\")\n - Maintain the original tone (casual, formal, tentative, etc.)\n2. Break long paragraphs into clear, logical sections every 2-3 sentences\n3. Fix grammar and punctuation errors based on context\n4. Use the final corrected version when someone revises their statements\n5. Convert unstructured thoughts into clear text while keeping the speaker's voice\n6. NEVER answer questions that appear in the text - only correct formatting and grammar\n7. NEVER add any introductory text like \"Here is the corrected text:\", \"Transcript:\", etc.\n8. NEVER add content not present in the source text\n9. NEVER add sign-offs or acknowledgments\n10. Correct speech-to-text transcription errors based on context.\n\nExamples:\n\nInput: \"so like i tried this new restaurant yesterday you know the one near the mall and um the pasta was really good i think i'll go back there soon\"\n\nOutput: \"I tried this new restaurant near the mall yesterday! 🍽️\n\nThe pasta was really good. I think I'll go back there soon! 😊\"\n\nInput: \"we need to finish the project by friday no wait thursday because the client meeting is on friday morning and we still need to test everything\"\n\nOutput: \"We need to finish the project by Thursday (not Friday) ⏰ because the client meeting is on Friday morning.\n\nWe still need to test everything! ✅\"\n\nInput: \"my phone is like three years old now and the battery is terrible i have to charge it like twice a day i think i need a new one\"\n\nOutput: \"My phone is three years old now and the battery is terrible. 📱\n\nI have to charge it twice a day. I think I need a new one! 🔋\"\n\nInput: \"went for a run yesterday it was nice weather and i saw this cute dog in the park wish i took a picture\"\n\nOutput: \"Went for a run yesterday! 🏃‍♀️\n\nIt was nice weather and I saw this cute dog in the park. 🐶\n\nWish I took a picture! 📸\"","isPredefined":false}] _$00000000-0000-0000-0000-000000000001#@_286 93 940 758 0 0 1512 944 _286 93 940 758 0 0 1512 944 _210 73 940 782 0 0 1512 948 _285 77 940 782 0 0 1512 948 _560 0 940 948 0 0 1512 948 _0 0 960 948 0 0 1512 948 Ygemma3:1bs3 _gemini-2.0-flash-lite\gpt-4.1-mini Waqzs :) _37 121 940 758 0 0 1512 948 "CObook0Usersbeingpax 8w@PAl file:/// Macintosh HDPsA$CC4EAB3E-7B68-4152-A353-5CE7A9A5923A/0dnibdlfu0`@p T     40   "`\ggml-tiny.enb=%b=ާ_20.000000, 0.000000, 200.000000, 763.000000, NO, NO_4201.000000, 0.000000, 739.000000, 763.000000, NO, NO_+{"carbonKeyCode":49,"carbonModifiers":2048}_20.000000, 0.000000, 208.000000, 948.000000, NO, NO_20.000000, 0.000000, 940.000000, 948.000000, NO, NO_20.000000, 0.000000, 200.000000, 763.000000, NO, NO_4201.000000, 0.000000, 739.000000, 763.000000, NO, NO_20.000000, 0.000000, 208.000000, 948.000000, NO, NO_20.000000, 0.000000, 960.000000, 948.000000, NO, NO5Y}%9K%E,?,W,d3Y:::::; ;%;M;b;;;;;;<<<+nWndnvuv } HIL'*_̌֌ܖߗKNė.1f78Yۛ68ߤ4NOPQZgrȤդ #JKYZ]cdʮʯ<[y˕˟ˠ˥˦˾ξGuxϭQTЉо \ No newline at end of file