From bda4b813cb007530e4675e56cc44cf2a09ffae5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wallner=20=C3=81d=C3=A1m?= Date: Tue, 21 Jul 2026 11:06:37 +0200 Subject: [PATCH 1/4] Add Whisper language selection --- Fluid.xcodeproj/project.pbxproj | 4 + Sources/Fluid/Persistence/BackupService.swift | 1 + Sources/Fluid/Persistence/SettingsStore.swift | 20 ++++ .../VoiceEngineLanguageCatalog.swift | 14 ++- Sources/Fluid/Services/WhisperProvider.swift | 19 ++- .../AISettings/VoiceEngineSettingsView.swift | 2 + .../UI/AISettingsView+SpeechRecognition.swift | 110 +++++++++++++++++- .../DictationE2ETests.swift | 6 +- .../WhisperLanguageSelectionTests.swift | 24 ++++ 9 files changed, 191 insertions(+), 9 deletions(-) create mode 100644 Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift diff --git a/Fluid.xcodeproj/project.pbxproj b/Fluid.xcodeproj/project.pbxproj index 2b135c8c..aacc8d63 100644 --- a/Fluid.xcodeproj/project.pbxproj +++ b/Fluid.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ 272BFB5CB271489892CAE50C /* TemperatureSupportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 980330F3CE464336ADCE3E23 /* TemperatureSupportTests.swift */; }; A62300000000000000000002 /* AudioBufferConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62300000000000000000001 /* AudioBufferConverterTests.swift */; }; C0DE63600000000000000002 /* AudioEngineRetirementDrainTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DE63600000000000000001 /* AudioEngineRetirementDrainTests.swift */; }; + C0DE63700000000000000002 /* WhisperLanguageSelectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DE63700000000000000001 /* WhisperLanguageSelectionTests.swift */; }; 7CDB0A2F2F3C4D5600FB7CAD /* dictation_fixture.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7CDB0A2B2F3C4D5600FB7CAD /* dictation_fixture.wav */; }; 7CDB0A302F3C4D5600FB7CAD /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CDB0A2C2F3C4D5600FB7CAD /* XCTest.framework */; }; 7CE006BD2E80EBE600DDCCD6 /* AppUpdater in Frameworks */ = {isa = PBXBuildFile; productRef = 7CE006BC2E80EBE600DDCCD6 /* AppUpdater */; }; @@ -54,6 +55,7 @@ 980330F3CE464336ADCE3E23 /* TemperatureSupportTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemperatureSupportTests.swift; sourceTree = ""; }; A62300000000000000000001 /* AudioBufferConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioBufferConverterTests.swift; sourceTree = ""; }; C0DE63600000000000000001 /* AudioEngineRetirementDrainTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioEngineRetirementDrainTests.swift; sourceTree = ""; }; + C0DE63700000000000000001 /* WhisperLanguageSelectionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WhisperLanguageSelectionTests.swift; sourceTree = ""; }; 7C078D8F2E3B339200FB7CAC /* FluidVoice Debug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "FluidVoice Debug.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 7C91B0022F42AA0100C0DEF0 /* HotkeyShortcutTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HotkeyShortcutTests.swift; sourceTree = ""; }; 7CDB0A202F3C4D5600FB7CAD /* FluidDictationIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FluidDictationIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -132,6 +134,7 @@ 980330F3CE464336ADCE3E23 /* TemperatureSupportTests.swift */, A62300000000000000000001 /* AudioBufferConverterTests.swift */, C0DE63600000000000000001 /* AudioEngineRetirementDrainTests.swift */, + C0DE63700000000000000001 /* WhisperLanguageSelectionTests.swift */, ); path = FluidDictationIntegrationTests; sourceTree = ""; @@ -291,6 +294,7 @@ 272BFB5CB271489892CAE50C /* TemperatureSupportTests.swift in Sources */, A62300000000000000000002 /* AudioBufferConverterTests.swift in Sources */, C0DE63600000000000000002 /* AudioEngineRetirementDrainTests.swift in Sources */, + C0DE63700000000000000002 /* WhisperLanguageSelectionTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Sources/Fluid/Persistence/BackupService.swift b/Sources/Fluid/Persistence/BackupService.swift index 03528d67..7bb8896a 100644 --- a/Sources/Fluid/Persistence/BackupService.swift +++ b/Sources/Fluid/Persistence/BackupService.swift @@ -17,6 +17,7 @@ struct SettingsBackupPayload: Codable, Equatable { let privateAIBackendPreference: SettingsStore.PrivateAIBackendPreference? let privateAIContextTokenLimit: Int? let selectedSpeechModel: SettingsStore.SpeechModel + let selectedWhisperLanguageCode: String? let selectedCohereLanguage: SettingsStore.CohereLanguage let selectedNemotronLanguage: SettingsStore.NemotronLanguage? let selectedAppleSpeechLocaleIdentifier: String? diff --git a/Sources/Fluid/Persistence/SettingsStore.swift b/Sources/Fluid/Persistence/SettingsStore.swift index e786893f..ac2131c7 100644 --- a/Sources/Fluid/Persistence/SettingsStore.swift +++ b/Sources/Fluid/Persistence/SettingsStore.swift @@ -3007,6 +3007,7 @@ final class SettingsStore: ObservableObject { privateAIBackendPreference: self.privateAIBackendPreference, privateAIContextTokenLimit: self.privateAIContextTokenLimit, selectedSpeechModel: self.selectedSpeechModel, + selectedWhisperLanguageCode: self.selectedWhisperLanguageCode, selectedCohereLanguage: self.selectedCohereLanguage, selectedNemotronLanguage: self.selectedNemotronLanguage, selectedAppleSpeechLocaleIdentifier: self.selectedAppleSpeechLocaleIdentifier, @@ -3115,6 +3116,7 @@ final class SettingsStore: ObservableObject { self.privateAIContextTokenLimit = privateAIContextTokenLimit } self.selectedSpeechModel = payload.selectedSpeechModel + self.selectedWhisperLanguageCode = payload.selectedWhisperLanguageCode self.selectedCohereLanguage = payload.selectedCohereLanguage if let selectedNemotronLanguage = payload.selectedNemotronLanguage { self.selectedNemotronLanguage = selectedNemotronLanguage @@ -5000,6 +5002,7 @@ private extension SettingsStore { /// Unified Speech Model (replaces above two) static let selectedSpeechModel = "SelectedSpeechModel" + static let selectedWhisperLanguageCode = "SelectedWhisperLanguageCode" static let selectedCohereLanguage = "SelectedCohereLanguage" static let selectedNemotronLanguage = "SelectedNemotronLanguage" static let selectedAppleSpeechLocaleIdentifier = "SelectedAppleSpeechLocaleIdentifier" @@ -5258,6 +5261,23 @@ extension SettingsStore { } } + /// The language Whisper should transcribe, or `nil` to detect it from each recording. + /// Existing installs inherit the language chosen during onboarding until the user + /// explicitly selects Automatic or another language. + var selectedWhisperLanguageCode: String? { + get { + if let stored = self.defaults.string(forKey: Keys.selectedWhisperLanguageCode) { + guard stored != "auto" else { return nil } + return VoiceEngineLanguageCatalog.whisperLanguage(forCode: stored) == nil ? nil : stored + } + return VoiceEngineLanguageCatalog.whisperLanguageCode(for: self.onboardingSelectedLanguageID) + } + set { + objectWillChange.send() + self.defaults.set(newValue ?? "auto", forKey: Keys.selectedWhisperLanguageCode) + } + } + var selectedCohereLanguage: CohereLanguage { get { if let rawValue = self.defaults.string(forKey: Keys.selectedCohereLanguage), diff --git a/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift b/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift index 7d380539..317f1bdb 100644 --- a/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift +++ b/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift @@ -93,6 +93,14 @@ enum VoiceEngineLanguageCatalog { self.allLanguages(availableModels: availableModels).first { $0.id == id } } + static var whisperLanguages: [VoiceEngineLanguage] { + self.languageDefinitions.filter { self.whisperLanguageCode(for: $0.id) != nil } + } + + static func whisperLanguage(forCode languageCode: String) -> VoiceEngineLanguage? { + self.whisperLanguages.first { self.whisperLanguageCode(for: $0.id) == languageCode } + } + static func routes( for language: VoiceEngineLanguage, availableModels: [SettingsStore.SpeechModel] = SettingsStore.SpeechModel.availableModels @@ -117,8 +125,10 @@ enum VoiceEngineLanguageCatalog { settings.selectedSpeechModel = route.model switch route.binding { - case .automatic, .whisper: + case .automatic: break + case let .whisper(languageCode): + settings.selectedWhisperLanguageCode = languageCode case let .appleSpeech(localeIdentifier): settings.selectedAppleSpeechLocaleIdentifier = localeIdentifier case let .cohere(language): @@ -182,7 +192,7 @@ enum VoiceEngineLanguageCatalog { self.nemotronLanguageMap[languageID] } - private static func whisperLanguageCode(for languageID: String) -> String? { + static func whisperLanguageCode(for languageID: String) -> String? { self.whisperLanguageCodeMap[languageID] } diff --git a/Sources/Fluid/Services/WhisperProvider.swift b/Sources/Fluid/Services/WhisperProvider.swift index c2e47a1a..0af30138 100644 --- a/Sources/Fluid/Services/WhisperProvider.swift +++ b/Sources/Fluid/Services/WhisperProvider.swift @@ -25,13 +25,20 @@ final class WhisperProvider: TranscriptionProvider { private let overriddenModelDirectory: URL? private let urlSession: URLSession + private let languageCodeOverride: String? var modelOverride: SettingsStore.SpeechModel? - init(modelDirectory: URL? = nil, urlSession: URLSession = .shared, modelOverride: SettingsStore.SpeechModel? = nil) { + init( + modelDirectory: URL? = nil, + urlSession: URLSession = .shared, + modelOverride: SettingsStore.SpeechModel? = nil, + languageCodeOverride: String? = nil + ) { self.overriddenModelDirectory = modelDirectory self.urlSession = urlSession self.modelOverride = modelOverride + self.languageCodeOverride = languageCodeOverride } deinit { @@ -309,14 +316,16 @@ final class WhisperProvider: TranscriptionProvider { ) } - let transcript = try await session.run( - samples, - options: RunOptions(timestamps: .segment) - ) + let languageCode = self.languageCodeOverride ?? SettingsStore.shared.selectedWhisperLanguageCode + let transcript = try await session.run(samples, options: Self.runOptions(languageCode: languageCode)) let fullText = transcript.text.trimmingCharacters(in: .whitespacesAndNewlines) return ASRTranscriptionResult(text: fullText, confidence: 1.0) } + static func runOptions(languageCode: String? = SettingsStore.shared.selectedWhisperLanguageCode) -> RunOptions { + RunOptions(timestamps: .segment, language: languageCode) + } + func modelsExistOnDisk() -> Bool { return self.isModelFileValid(at: self.modelURL, for: self.selectedModel) } diff --git a/Sources/Fluid/UI/AISettings/VoiceEngineSettingsView.swift b/Sources/Fluid/UI/AISettings/VoiceEngineSettingsView.swift index 91851f44..e370eed3 100644 --- a/Sources/Fluid/UI/AISettings/VoiceEngineSettingsView.swift +++ b/Sources/Fluid/UI/AISettings/VoiceEngineSettingsView.swift @@ -5,6 +5,8 @@ struct VoiceEngineSettingsView: View { @ObservedObject var settings: SettingsStore @Environment(\.colorScheme) var colorScheme @State var isShowingNemotronLanguagePicker = false + @State var isShowingWhisperLanguagePicker = false + @State var whisperLanguageSearchText = "" let theme: AppTheme var voiceEngineTitleText: Color { diff --git a/Sources/Fluid/UI/AISettingsView+SpeechRecognition.swift b/Sources/Fluid/UI/AISettingsView+SpeechRecognition.swift index 131ffc5d..c55b5d2c 100644 --- a/Sources/Fluid/UI/AISettingsView+SpeechRecognition.swift +++ b/Sources/Fluid/UI/AISettingsView+SpeechRecognition.swift @@ -548,7 +548,9 @@ extension VoiceEngineSettingsView { @ViewBuilder private func speechModelLanguagePicker(for model: SettingsStore.SpeechModel) -> some View { - if model == .cohereTranscribeSixBit { + if model.isWhisperModel { + self.whisperLanguagePickerButton + } else if model == .cohereTranscribeSixBit { Menu { ForEach(SettingsStore.CohereLanguage.allCases) { language in Button { @@ -572,6 +574,112 @@ extension VoiceEngineSettingsView { } } + private var whisperLanguagePickerButton: some View { + Button { + self.whisperLanguageSearchText = "" + self.isShowingWhisperLanguagePicker.toggle() + } label: { + self.languageChipLabel(self.selectedWhisperLanguageName) + } + .buttonStyle(.plain) + .popover(isPresented: self.$isShowingWhisperLanguagePicker, arrowEdge: .bottom) { + self.whisperLanguagePickerPopover + } + } + + private var selectedWhisperLanguageName: String { + guard let languageCode = self.settings.selectedWhisperLanguageCode, + let language = VoiceEngineLanguageCatalog.whisperLanguage(forCode: languageCode) + else { + return "Automatic" + } + return language.displayName + } + + private var filteredWhisperLanguages: [VoiceEngineLanguage] { + let query = self.normalizedWhisperLanguageSearchText + guard !query.isEmpty else { return VoiceEngineLanguageCatalog.whisperLanguages } + return VoiceEngineLanguageCatalog.whisperLanguages.filter { language in + language.displayName.lowercased().contains(query) || + language.id.lowercased().contains(query) || + language.aliases.contains { $0.lowercased().contains(query) } + } + } + + private var normalizedWhisperLanguageSearchText: String { + self.whisperLanguageSearchText.trimmingCharacters(in: .whitespacesAndNewlines).lowercased() + } + + private var whisperLanguagePickerPopover: some View { + VStack(spacing: 0) { + HStack(spacing: 8) { + Image(systemName: "magnifyingglass") + .foregroundStyle(self.voiceEngineTertiaryText) + TextField("Search languages", text: self.$whisperLanguageSearchText) + .textFieldStyle(.plain) + } + .padding(.horizontal, 12) + .frame(height: 36) + + Divider() + + ScrollView(.vertical, showsIndicators: true) { + LazyVStack(alignment: .leading, spacing: 0) { + if self.normalizedWhisperLanguageSearchText.isEmpty || + "automatic".contains(self.normalizedWhisperLanguageSearchText) + { + Button { + self.settings.selectedWhisperLanguageCode = nil + self.isShowingWhisperLanguagePicker = false + } label: { + self.whisperLanguagePickerRow( + title: "Automatic", + isSelected: self.settings.selectedWhisperLanguageCode == nil + ) + } + .buttonStyle(.plain) + + Divider() + .padding(.vertical, 4) + } + + ForEach(self.filteredWhisperLanguages) { language in + let languageCode = VoiceEngineLanguageCatalog.whisperLanguageCode(for: language.id) + Button { + self.settings.selectedWhisperLanguageCode = languageCode + self.isShowingWhisperLanguagePicker = false + } label: { + self.whisperLanguagePickerRow( + title: language.displayName, + isSelected: languageCode == self.settings.selectedWhisperLanguageCode + ) + } + .buttonStyle(.plain) + } + } + .padding(.vertical, 6) + } + } + .frame(width: 280, height: 420) + } + + private func whisperLanguagePickerRow(title: String, isSelected: Bool) -> some View { + HStack(spacing: 8) { + Text(title) + .font(self.theme.typography.bodySmall) + .foregroundStyle(.primary) + Spacer(minLength: 12) + if isSelected { + Image(systemName: "checkmark") + .font(self.theme.typography.bodySmall) + .foregroundStyle(self.theme.palette.accent) + } + } + .contentShape(Rectangle()) + .padding(.horizontal, 12) + .frame(height: 28) + } + private func languageChipLabel(_ title: String) -> some View { HStack(spacing: 5) { Image(systemName: "globe") diff --git a/Tests/FluidDictationIntegrationTests/DictationE2ETests.swift b/Tests/FluidDictationIntegrationTests/DictationE2ETests.swift index ba08bc0f..4a2dc446 100644 --- a/Tests/FluidDictationIntegrationTests/DictationE2ETests.swift +++ b/Tests/FluidDictationIntegrationTests/DictationE2ETests.swift @@ -1223,7 +1223,11 @@ final class DictationE2ETests: XCTestCase { let modelDirectory = Self.modelDirectoryForRun() try FileManager.default.createDirectory(at: modelDirectory, withIntermediateDirectories: true) - let provider = WhisperProvider(modelDirectory: modelDirectory, modelOverride: .whisperTiny) + let provider = WhisperProvider( + modelDirectory: modelDirectory, + modelOverride: .whisperTiny, + languageCodeOverride: "en" + ) // Act try await provider.prepare() diff --git a/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift b/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift new file mode 100644 index 00000000..f281fdd1 --- /dev/null +++ b/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift @@ -0,0 +1,24 @@ +@testable import FluidVoice_Debug +import XCTest + +final class WhisperLanguageSelectionTests: XCTestCase { + func testHungarianLanguageCodeIsAvailable() { + XCTAssertEqual(VoiceEngineLanguageCatalog.whisperLanguageCode(for: "hu"), "hu") + XCTAssertEqual(VoiceEngineLanguageCatalog.whisperLanguage(forCode: "hu")?.displayName, "Hungarian") + } + + func testWhisperRunOptionsUseSelectedLanguage() { + XCTAssertEqual(WhisperProvider.runOptions(languageCode: "hu").language, "hu") + } + + func testWhisperRunOptionsAllowAutomaticDetection() { + XCTAssertNil(WhisperProvider.runOptions(languageCode: nil).language) + } + + func testWhisperLanguageCodesAreUnique() { + let languageCodes = VoiceEngineLanguageCatalog.whisperLanguages.compactMap { + VoiceEngineLanguageCatalog.whisperLanguageCode(for: $0.id) + } + XCTAssertEqual(languageCodes.count, Set(languageCodes).count) + } +} From 10744e1bd9d01edcdaf75529f017f648621ecd96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wallner=20=C3=81d=C3=A1m?= Date: Tue, 21 Jul 2026 11:32:49 +0200 Subject: [PATCH 2/4] Add Whisper language picker screenshot --- .../screenshots/whisper-language-selection.jpg | Bin 0 -> 106429 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/screenshots/whisper-language-selection.jpg diff --git a/.github/screenshots/whisper-language-selection.jpg b/.github/screenshots/whisper-language-selection.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7075062d4cefb014b2caa24f1ada3de85d34b59f GIT binary patch literal 106429 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 V3`!LvjRqA|4gdgP3b#NX|JhE*CoKQ~ literal 0 HcmV?d00001 From a0546b8b82e38050f5b78d072643be8ccbb5c1af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wallner=20=C3=81d=C3=A1m?= Date: Tue, 21 Jul 2026 11:44:45 +0200 Subject: [PATCH 3/4] Address language selection review feedback --- Sources/Fluid/Persistence/SettingsStore.swift | 4 +++- Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift | 4 ++-- Sources/Fluid/Services/WhisperProvider.swift | 2 +- .../WhisperLanguageSelectionTests.swift | 5 +++++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Sources/Fluid/Persistence/SettingsStore.swift b/Sources/Fluid/Persistence/SettingsStore.swift index ac2131c7..049680a9 100644 --- a/Sources/Fluid/Persistence/SettingsStore.swift +++ b/Sources/Fluid/Persistence/SettingsStore.swift @@ -3116,7 +3116,9 @@ final class SettingsStore: ObservableObject { self.privateAIContextTokenLimit = privateAIContextTokenLimit } self.selectedSpeechModel = payload.selectedSpeechModel - self.selectedWhisperLanguageCode = payload.selectedWhisperLanguageCode + if let selectedWhisperLanguageCode = payload.selectedWhisperLanguageCode { + self.selectedWhisperLanguageCode = selectedWhisperLanguageCode + } self.selectedCohereLanguage = payload.selectedCohereLanguage if let selectedNemotronLanguage = payload.selectedNemotronLanguage { self.selectedNemotronLanguage = selectedNemotronLanguage diff --git a/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift b/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift index 317f1bdb..7d13f4b7 100644 --- a/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift +++ b/Sources/Fluid/Persistence/VoiceEngineLanguageCatalog.swift @@ -361,7 +361,7 @@ enum VoiceEngineLanguageCatalog { private static let whisperLanguageCodeMap: [String: String] = { var languageMap: [String: String] = [:] for language in Self.languageDefinitions { - let whisperCode = language.id == "he" ? "iw" : language.id + let whisperCode = language.id guard Self.whisperSupportedLanguageCodes.contains(whisperCode) else { continue } languageMap[language.id] = whisperCode } @@ -372,7 +372,7 @@ enum VoiceEngineLanguageCatalog { "af", "am", "ar", "as", "az", "ba", "be", "bg", "bn", "bo", "br", "bs", "ca", "cs", "cy", "da", "de", "el", "en", "es", "et", "eu", "fa", "fi", "fo", "fr", "gl", "gu", "ha", "haw", - "hi", "hr", "ht", "hu", "hy", "id", "is", "it", "iw", "ja", + "he", "hi", "hr", "ht", "hu", "hy", "id", "is", "it", "ja", "jw", "ka", "kk", "km", "kn", "ko", "la", "lb", "ln", "lo", "lt", "lv", "mg", "mi", "mk", "ml", "mn", "mr", "ms", "mt", "my", "ne", "nl", "nn", "no", "oc", "pa", "pl", "ps", "pt", diff --git a/Sources/Fluid/Services/WhisperProvider.swift b/Sources/Fluid/Services/WhisperProvider.swift index 0af30138..feecfe6d 100644 --- a/Sources/Fluid/Services/WhisperProvider.swift +++ b/Sources/Fluid/Services/WhisperProvider.swift @@ -322,7 +322,7 @@ final class WhisperProvider: TranscriptionProvider { return ASRTranscriptionResult(text: fullText, confidence: 1.0) } - static func runOptions(languageCode: String? = SettingsStore.shared.selectedWhisperLanguageCode) -> RunOptions { + static func runOptions(languageCode: String?) -> RunOptions { RunOptions(timestamps: .segment, language: languageCode) } diff --git a/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift b/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift index f281fdd1..d9ac75cd 100644 --- a/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift +++ b/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift @@ -7,6 +7,11 @@ final class WhisperLanguageSelectionTests: XCTestCase { XCTAssertEqual(VoiceEngineLanguageCatalog.whisperLanguage(forCode: "hu")?.displayName, "Hungarian") } + func testHebrewUsesWhisperLanguageCode() { + XCTAssertEqual(VoiceEngineLanguageCatalog.whisperLanguageCode(for: "he"), "he") + XCTAssertEqual(VoiceEngineLanguageCatalog.whisperLanguage(forCode: "he")?.displayName, "Hebrew") + } + func testWhisperRunOptionsUseSelectedLanguage() { XCTAssertEqual(WhisperProvider.runOptions(languageCode: "hu").language, "hu") } From 142e1a79ab8b23df4abeafdd5ef037945403b46d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wallner=20=C3=81d=C3=A1m?= Date: Tue, 21 Jul 2026 12:06:27 +0200 Subject: [PATCH 4/4] Preserve automatic language in settings backups --- Sources/Fluid/Persistence/SettingsStore.swift | 17 +++++++++++++---- .../WhisperLanguageSelectionTests.swift | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/Sources/Fluid/Persistence/SettingsStore.swift b/Sources/Fluid/Persistence/SettingsStore.swift index 049680a9..d018e2a3 100644 --- a/Sources/Fluid/Persistence/SettingsStore.swift +++ b/Sources/Fluid/Persistence/SettingsStore.swift @@ -12,6 +12,7 @@ import FluidAudio // swiftlint:disable file_length type_body_length final class SettingsStore: ObservableObject { static let shared = SettingsStore() + private static let automaticWhisperLanguageCode = "auto" static let transcriptionPreviewCharLimitRange: ClosedRange = 50...800 static let transcriptionPreviewCharLimitStep = 50 static let defaultTranscriptionPreviewCharLimit = 150 @@ -3007,7 +3008,7 @@ final class SettingsStore: ObservableObject { privateAIBackendPreference: self.privateAIBackendPreference, privateAIContextTokenLimit: self.privateAIContextTokenLimit, selectedSpeechModel: self.selectedSpeechModel, - selectedWhisperLanguageCode: self.selectedWhisperLanguageCode, + selectedWhisperLanguageCode: Self.whisperLanguageBackupValue(for: self.selectedWhisperLanguageCode), selectedCohereLanguage: self.selectedCohereLanguage, selectedNemotronLanguage: self.selectedNemotronLanguage, selectedAppleSpeechLocaleIdentifier: self.selectedAppleSpeechLocaleIdentifier, @@ -3117,7 +3118,7 @@ final class SettingsStore: ObservableObject { } self.selectedSpeechModel = payload.selectedSpeechModel if let selectedWhisperLanguageCode = payload.selectedWhisperLanguageCode { - self.selectedWhisperLanguageCode = selectedWhisperLanguageCode + self.selectedWhisperLanguageCode = Self.whisperLanguageCode(fromBackupValue: selectedWhisperLanguageCode) } self.selectedCohereLanguage = payload.selectedCohereLanguage if let selectedNemotronLanguage = payload.selectedNemotronLanguage { @@ -5269,17 +5270,25 @@ extension SettingsStore { var selectedWhisperLanguageCode: String? { get { if let stored = self.defaults.string(forKey: Keys.selectedWhisperLanguageCode) { - guard stored != "auto" else { return nil } + guard stored != Self.automaticWhisperLanguageCode else { return nil } return VoiceEngineLanguageCatalog.whisperLanguage(forCode: stored) == nil ? nil : stored } return VoiceEngineLanguageCatalog.whisperLanguageCode(for: self.onboardingSelectedLanguageID) } set { objectWillChange.send() - self.defaults.set(newValue ?? "auto", forKey: Keys.selectedWhisperLanguageCode) + self.defaults.set(newValue ?? Self.automaticWhisperLanguageCode, forKey: Keys.selectedWhisperLanguageCode) } } + static func whisperLanguageBackupValue(for languageCode: String?) -> String { + languageCode ?? self.automaticWhisperLanguageCode + } + + static func whisperLanguageCode(fromBackupValue value: String) -> String? { + value == self.automaticWhisperLanguageCode ? nil : value + } + var selectedCohereLanguage: CohereLanguage { get { if let rawValue = self.defaults.string(forKey: Keys.selectedCohereLanguage), diff --git a/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift b/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift index d9ac75cd..2ed30922 100644 --- a/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift +++ b/Tests/FluidDictationIntegrationTests/WhisperLanguageSelectionTests.swift @@ -20,6 +20,20 @@ final class WhisperLanguageSelectionTests: XCTestCase { XCTAssertNil(WhisperProvider.runOptions(languageCode: nil).language) } + func testAutomaticWhisperLanguageRoundTripsThroughBackupValue() { + let backupValue = SettingsStore.whisperLanguageBackupValue(for: nil) + + XCTAssertEqual(backupValue, "auto") + XCTAssertNil(SettingsStore.whisperLanguageCode(fromBackupValue: backupValue)) + } + + func testForcedWhisperLanguageRoundTripsThroughBackupValue() { + let backupValue = SettingsStore.whisperLanguageBackupValue(for: "hu") + + XCTAssertEqual(backupValue, "hu") + XCTAssertEqual(SettingsStore.whisperLanguageCode(fromBackupValue: backupValue), "hu") + } + func testWhisperLanguageCodesAreUnique() { let languageCodes = VoiceEngineLanguageCatalog.whisperLanguages.compactMap { VoiceEngineLanguageCatalog.whisperLanguageCode(for: $0.id)