diff --git a/VoiceInk.xcodeproj/project.pbxproj b/VoiceInk.xcodeproj/project.pbxproj index 5474052..9976323 100644 --- a/VoiceInk.xcodeproj/project.pbxproj +++ b/VoiceInk.xcodeproj/project.pbxproj @@ -7,9 +7,9 @@ objects = { /* Begin PBXBuildFile section */ - E131EA9E2DFEF894009E79D8 /* whisper.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E11CB51D2DB1F8AF00F9F3ED /* whisper.xcframework */; }; - E131EA9F2DFEF894009E79D8 /* whisper.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E11CB51D2DB1F8AF00F9F3ED /* whisper.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; E1A261122CC143AC00B233D1 /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = E1A261112CC143AC00B233D1 /* KeyboardShortcuts */; }; + E1A8C8CB2E1257B7003E58EC /* whisper.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1A8C8CA2E1257B7003E58EC /* whisper.xcframework */; }; + E1A8C8CC2E1257B7003E58EC /* whisper.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E1A8C8CA2E1257B7003E58EC /* whisper.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; E1ADD45A2CC5352A00303ECB /* LaunchAtLogin in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD4592CC5352A00303ECB /* LaunchAtLogin */; }; E1ADD45F2CC544F100303ECB /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD45E2CC544F100303ECB /* Sparkle */; }; E1F5FA7A2DA6CBF900B1FD8A /* Zip in Frameworks */ = {isa = PBXBuildFile; productRef = E1F5FA792DA6CBF900B1FD8A /* Zip */; }; @@ -33,13 +33,13 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - E131EAA02DFEF894009E79D8 /* Embed Frameworks */ = { + E1A8C8CD2E1257B7003E58EC /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - E131EA9F2DFEF894009E79D8 /* whisper.xcframework in Embed Frameworks */, + E1A8C8CC2E1257B7003E58EC /* whisper.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -50,8 +50,7 @@ E11473B02CBE0F0A00318EE4 /* VoiceInk.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VoiceInk.app; sourceTree = BUILT_PRODUCTS_DIR; }; E11473C32CBE0F0B00318EE4 /* VoiceInkTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VoiceInkTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; E11473CD2CBE0F0B00318EE4 /* VoiceInkUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VoiceInkUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - E11CB51D2DB1F8AF00F9F3ED /* whisper.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = whisper.xcframework; path = "../build-apple/whisper.xcframework"; sourceTree = ""; }; - E136D0102DA3EE57000E1E8A /* whisper.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = whisper.xcframework; path = "../Downloads/build-apple/whisper.xcframework"; sourceTree = ""; }; + E1A8C8CA2E1257B7003E58EC /* whisper.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = whisper.xcframework; path = "../whisper.cpp/build-apple/whisper.xcframework"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -80,7 +79,7 @@ E1ADD45A2CC5352A00303ECB /* LaunchAtLogin in Frameworks */, E1ADD45F2CC544F100303ECB /* Sparkle in Frameworks */, E1A261122CC143AC00B233D1 /* KeyboardShortcuts in Frameworks */, - E131EA9E2DFEF894009E79D8 /* whisper.xcframework in Frameworks */, + E1A8C8CB2E1257B7003E58EC /* whisper.xcframework in Frameworks */, E1F5FA7A2DA6CBF900B1FD8A /* Zip in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -126,8 +125,7 @@ E114741C2CBE1DE200318EE4 /* Frameworks */ = { isa = PBXGroup; children = ( - E11CB51D2DB1F8AF00F9F3ED /* whisper.xcframework */, - E136D0102DA3EE57000E1E8A /* whisper.xcframework */, + E1A8C8CA2E1257B7003E58EC /* whisper.xcframework */, ); name = Frameworks; sourceTree = ""; @@ -142,7 +140,7 @@ E11473AC2CBE0F0A00318EE4 /* Sources */, E11473AD2CBE0F0A00318EE4 /* Frameworks */, E11473AE2CBE0F0A00318EE4 /* Resources */, - E131EAA02DFEF894009E79D8 /* Embed Frameworks */, + E1A8C8CD2E1257B7003E58EC /* Embed Frameworks */, ); buildRules = ( ); diff --git a/VoiceInk/Views/AudioTranscribeView.swift b/VoiceInk/Views/AudioTranscribeView.swift index 1c3cdb1..924dd5d 100644 --- a/VoiceInk/Views/AudioTranscribeView.swift +++ b/VoiceInk/Views/AudioTranscribeView.swift @@ -172,10 +172,7 @@ struct AudioTranscribeView: View { } .padding(.horizontal, 12) .padding(.vertical, 8) - .background( - RoundedRectangle(cornerRadius: 8) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - ) + .background(CardBackground(isSelected: false)) } .frame(maxWidth: .infinity, alignment: .center) .onAppear { diff --git a/VoiceInk/Views/Dictionary/DictionarySettingsView.swift b/VoiceInk/Views/Dictionary/DictionarySettingsView.swift index b313da9..265ee5e 100644 --- a/VoiceInk/Views/Dictionary/DictionarySettingsView.swift +++ b/VoiceInk/Views/Dictionary/DictionarySettingsView.swift @@ -95,12 +95,10 @@ struct DictionarySettingsView: View { switch selectedSection { case .spellings: DictionaryView(whisperPrompt: whisperPrompt) - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(10) + .background(CardBackground(isSelected: false)) case .replacements: WordReplacementView() - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(10) + .background(CardBackground(isSelected: false)) } } } @@ -131,15 +129,7 @@ struct SectionCard: View { } .frame(maxWidth: .infinity, alignment: .leading) .padding() - .background( - RoundedRectangle(cornerRadius: 16) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - .shadow(color: isSelected ? .blue.opacity(0.2) : .clear, radius: 8, y: 4) - .overlay( - RoundedRectangle(cornerRadius: 16) - .stroke(isSelected ? .blue.opacity(0.5) : .clear, lineWidth: 2) - ) - ) + .background(CardBackground(isSelected: isSelected)) } .buttonStyle(.plain) } diff --git a/VoiceInk/Views/Dictionary/WordReplacementView.swift b/VoiceInk/Views/Dictionary/WordReplacementView.swift index 8cc1358..a487be3 100644 --- a/VoiceInk/Views/Dictionary/WordReplacementView.swift +++ b/VoiceInk/Views/Dictionary/WordReplacementView.swift @@ -172,7 +172,7 @@ struct AddReplacementSheet: View { } .padding(.horizontal) .padding(.vertical, 12) - .background(Color(.windowBackgroundColor).opacity(0.4)) + .background(CardBackground(isSelected: false)) Divider() diff --git a/VoiceInk/Views/EnhancementSettingsView.swift b/VoiceInk/Views/EnhancementSettingsView.swift index 5fdf984..7bd8ee2 100644 --- a/VoiceInk/Views/EnhancementSettingsView.swift +++ b/VoiceInk/Views/EnhancementSettingsView.swift @@ -60,14 +60,7 @@ struct EnhancementSettingsView: View { } } .padding() - .background( - RoundedRectangle(cornerRadius: 10) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - .overlay( - RoundedRectangle(cornerRadius: 10) - .stroke(Color.blue.opacity(0.2), lineWidth: 1) - ) - ) + .background(CardBackground(isSelected: false)) // 1. AI Provider Integration Section VStack(alignment: .leading, spacing: 16) { @@ -75,8 +68,7 @@ struct EnhancementSettingsView: View { .font(.headline) APIKeyManagementView() - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(10) + .background(CardBackground(isSelected: false)) } .padding() .background(Color(.windowBackgroundColor).opacity(0.4)) @@ -109,8 +101,7 @@ struct EnhancementSettingsView: View { } } .padding() - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(10) + .background(CardBackground(isSelected: false)) .opacity(enhancementService.isEnhancementEnabled ? 1.0 : 0.6) } } diff --git a/VoiceInk/Views/LicenseManagementView.swift b/VoiceInk/Views/LicenseManagementView.swift index eeb7e54..2305991 100644 --- a/VoiceInk/Views/LicenseManagementView.swift +++ b/VoiceInk/Views/LicenseManagementView.swift @@ -50,7 +50,7 @@ struct LicenseManagementView: View { Text(licenseViewModel.licenseState == .licensed ? "Thank you for supporting VoiceInk" : - "Transform your voice into text with advanced features") + "Transform your voice into text with instantly with AI") .font(.title3) .foregroundStyle(.secondary) .multilineTextAlignment(.center) @@ -138,8 +138,7 @@ struct LicenseManagementView: View { .frame(maxWidth: .infinity, alignment: .center) } .padding(32) - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(16) + .background(CardBackground(isSelected: false)) .shadow(color: .black.opacity(0.05), radius: 10) // License Activation @@ -175,8 +174,7 @@ struct LicenseManagementView: View { } } .padding(32) - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(16) + .background(CardBackground(isSelected: false)) .shadow(color: .black.opacity(0.05), radius: 10) } } @@ -213,8 +211,7 @@ struct LicenseManagementView: View { } } .padding(32) - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(16) + .background(CardBackground(isSelected: false)) .shadow(color: .black.opacity(0.05), radius: 10) // Deactivation Card @@ -232,8 +229,7 @@ struct LicenseManagementView: View { .buttonStyle(.bordered) } .padding(32) - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(16) + .background(CardBackground(isSelected: false)) .shadow(color: .black.opacity(0.05), radius: 10) } } diff --git a/VoiceInk/Views/ModelManagementView.swift b/VoiceInk/Views/ModelManagementView.swift index 5d9e427..5f12a5b 100644 --- a/VoiceInk/Views/ModelManagementView.swift +++ b/VoiceInk/Views/ModelManagementView.swift @@ -48,7 +48,7 @@ struct ModelManagementView: View { } .padding() .frame(maxWidth: .infinity, alignment: .leading) - .background(Color(.windowBackgroundColor).opacity(0.4)) + .background(CardBackground(isSelected: false)) .cornerRadius(10) } diff --git a/VoiceInk/Views/PermissionsView.swift b/VoiceInk/Views/PermissionsView.swift index 7d48b52..081124b 100644 --- a/VoiceInk/Views/PermissionsView.swift +++ b/VoiceInk/Views/PermissionsView.swift @@ -176,7 +176,7 @@ struct PermissionCard: View { } } .padding() - .background(Color(.windowBackgroundColor).opacity(0.9)) + .background(CardBackground(isSelected: false)) .cornerRadius(16) .shadow(color: Color.black.opacity(0.05), radius: 5, y: 2) } diff --git a/VoiceInk/Views/RecordView.swift b/VoiceInk/Views/RecordView.swift index c25bba0..d4ab5f4 100644 --- a/VoiceInk/Views/RecordView.swift +++ b/VoiceInk/Views/RecordView.swift @@ -105,6 +105,7 @@ struct RecordView: View { } } .padding(24) + .background(CardBackground(isSelected: false)) } private var shortcutSection: some View { @@ -193,11 +194,7 @@ struct RecordView: View { } } .padding(28) - .background( - RoundedRectangle(cornerRadius: 16) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - - ) + .background(CardBackground(isSelected: false)) } private var afterRecordingSection: some View { diff --git a/VoiceInk/Views/Settings/AudioInputSettingsView.swift b/VoiceInk/Views/Settings/AudioInputSettingsView.swift index e75efd2..226e307 100644 --- a/VoiceInk/Views/Settings/AudioInputSettingsView.swift +++ b/VoiceInk/Views/Settings/AudioInputSettingsView.swift @@ -167,10 +167,7 @@ struct AudioInputSettingsView: View { } .frame(maxWidth: .infinity) .padding(40) - .background( - RoundedRectangle(cornerRadius: 16) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - ) + .background(CardBackground(isSelected: false)) } private var prioritizedDevicesList: some View { @@ -295,15 +292,7 @@ struct InputModeCard: View { } .frame(maxWidth: .infinity, alignment: .leading) .padding() - .background( - RoundedRectangle(cornerRadius: 16) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - .shadow(color: isSelected ? .blue.opacity(0.2) : .clear, radius: 8, y: 4) - .overlay( - RoundedRectangle(cornerRadius: 16) - .stroke(isSelected ? .blue.opacity(0.5) : .clear, lineWidth: 2) - ) - ) + .background(CardBackground(isSelected: isSelected)) } .buttonStyle(.plain) } @@ -341,10 +330,7 @@ struct DeviceSelectionCard: View { } } .padding() - .background( - RoundedRectangle(cornerRadius: 12) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - ) + .background(CardBackground(isSelected: isSelected)) } .buttonStyle(.plain) } @@ -435,10 +421,6 @@ struct DevicePriorityCard: View { .buttonStyle(.plain) } .padding() - .background( - RoundedRectangle(cornerRadius: 16) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - .opacity(isAvailable ? 1 : 0.8) - ) + .background(CardBackground(isSelected: false)) } -} \ No newline at end of file +} diff --git a/VoiceInk/Views/Settings/SettingsView.swift b/VoiceInk/Views/Settings/SettingsView.swift index b45c888..f37d02c 100644 --- a/VoiceInk/Views/Settings/SettingsView.swift +++ b/VoiceInk/Views/Settings/SettingsView.swift @@ -336,10 +336,7 @@ struct SettingsSection: View { } .padding(16) .frame(maxWidth: .infinity, alignment: .leading) - .background( - RoundedRectangle(cornerRadius: 12) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - ) + .background(CardBackground(isSelected: showWarning, useAccentGradientWhenSelected: true)) .overlay( RoundedRectangle(cornerRadius: 12) .stroke(showWarning ? Color.red.opacity(0.5) : Color.clear, lineWidth: 1) diff --git a/VoiceInk/Views/TranscriptionCard.swift b/VoiceInk/Views/TranscriptionCard.swift index 32f7abd..ba129ce 100644 --- a/VoiceInk/Views/TranscriptionCard.swift +++ b/VoiceInk/Views/TranscriptionCard.swift @@ -99,10 +99,7 @@ struct TranscriptionCard: View { } } .padding(16) - .background( - RoundedRectangle(cornerRadius: 12) - .fill(Color(.windowBackgroundColor).opacity(0.4)) - ) + .background(CardBackground(isSelected: false)) .cornerRadius(12) .shadow(color: Color.black.opacity(0.05), radius: 3, x: 0, y: 2) .contextMenu { diff --git a/VoiceInk/Views/TranscriptionHistoryView.swift b/VoiceInk/Views/TranscriptionHistoryView.swift index f045309..e95608e 100644 --- a/VoiceInk/Views/TranscriptionHistoryView.swift +++ b/VoiceInk/Views/TranscriptionHistoryView.swift @@ -98,8 +98,7 @@ struct TranscriptionHistoryView: View { } .frame(maxWidth: .infinity) .padding(.vertical, 12) - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(8) + .background(CardBackground(isSelected: false)) } .buttonStyle(.plain) .disabled(isLoading) @@ -177,8 +176,7 @@ struct TranscriptionHistoryView: View { .textFieldStyle(PlainTextFieldStyle()) } .padding(12) - .background(Color(.windowBackgroundColor).opacity(0.4)) - .cornerRadius(10) + .background(CardBackground(isSelected: false)) .padding(.horizontal, 24) .padding(.vertical, 16) } @@ -195,7 +193,7 @@ struct TranscriptionHistoryView: View { .foregroundColor(.secondary) } .frame(maxWidth: .infinity, maxHeight: .infinity) - .background(Color(.windowBackgroundColor).opacity(0.4)) + .background(CardBackground(isSelected: false)) .padding(24) }