Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Fluid.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
7CDB0A2D2F3C4D5600FB7CAD /* DictationE2ETests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CDB0A292F3C4D5600FB7CAD /* DictationE2ETests.swift */; };
B52000000000000000000002 /* PrivateAIDictationTokenBudgetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52000000000000000000001 /* PrivateAIDictationTokenBudgetTests.swift */; };
CD1C7A0000000000000000B2 /* CustomDictionaryManualEntryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1C7A0000000000000000B1 /* CustomDictionaryManualEntryTests.swift */; };
CD1C7A0000000000000000C2 /* OverlayPremiumSettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1C7A0000000000000000C1 /* OverlayPremiumSettingsTests.swift */; };
CD1C7A0000000000000000D2 /* LiveTypingSessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD1C7A0000000000000000D1 /* LiveTypingSessionTests.swift */; };
7CDB0A2E2F3C4D5600FB7CAD /* AudioFixtureLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CDB0A2A2F3C4D5600FB7CAD /* AudioFixtureLoader.swift */; };
86CAA2D4EF18433096185602 /* LLMClientRequestBodyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 343B29013F4441D6A797D12D /* LLMClientRequestBodyTests.swift */; };
272BFB5CB271489892CAE50C /* TemperatureSupportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 980330F3CE464336ADCE3E23 /* TemperatureSupportTests.swift */; };
Expand Down Expand Up @@ -84,6 +86,8 @@
7CDB0A202F3C4D5600FB7CAD /* FluidDictationIntegrationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FluidDictationIntegrationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
7CDB0A292F3C4D5600FB7CAD /* DictationE2ETests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DictationE2ETests.swift; sourceTree = "<group>"; };
CD1C7A0000000000000000B1 /* CustomDictionaryManualEntryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomDictionaryManualEntryTests.swift; sourceTree = "<group>"; };
CD1C7A0000000000000000C1 /* OverlayPremiumSettingsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayPremiumSettingsTests.swift; sourceTree = "<group>"; };
CD1C7A0000000000000000D1 /* LiveTypingSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveTypingSessionTests.swift; sourceTree = "<group>"; };
7CFA1D0B2F500000C0DEF002 /* TypingServiceTransientPasteboardTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypingServiceTransientPasteboardTests.swift; sourceTree = "<group>"; };
803000000000000000000001 /* MediaPlaybackServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlaybackServiceTests.swift; sourceTree = "<group>"; };
0B05F11E000000000000A001 /* SupportedFileExtensionsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportedFileExtensionsTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -158,6 +162,8 @@
7CDB0A272F3C4D5600FB7CAD /* Resources */,
7CDB0A292F3C4D5600FB7CAD /* DictationE2ETests.swift */,
CD1C7A0000000000000000B1 /* CustomDictionaryManualEntryTests.swift */,
CD1C7A0000000000000000C1 /* OverlayPremiumSettingsTests.swift */,
CD1C7A0000000000000000D1 /* LiveTypingSessionTests.swift */,
7C91B0022F42AA0100C0DEF0 /* HotkeyShortcutTests.swift */,
C0DE89000000000000000001 /* SettingsNavigationStateTests.swift */,
343B29013F4441D6A797D12D /* LLMClientRequestBodyTests.swift */,
Expand Down Expand Up @@ -335,6 +341,8 @@
7CDB0A2D2F3C4D5600FB7CAD /* DictationE2ETests.swift in Sources */,
B52000000000000000000002 /* PrivateAIDictationTokenBudgetTests.swift in Sources */,
CD1C7A0000000000000000B2 /* CustomDictionaryManualEntryTests.swift in Sources */,
CD1C7A0000000000000000C2 /* OverlayPremiumSettingsTests.swift in Sources */,
CD1C7A0000000000000000D2 /* LiveTypingSessionTests.swift in Sources */,
7C91B0012F42AA0100C0DEF0 /* HotkeyShortcutTests.swift in Sources */,
C0DE89000000000000000002 /* SettingsNavigationStateTests.swift in Sources */,
86CAA2D4EF18433096185602 /* LLMClientRequestBodyTests.swift in Sources */,
Expand Down
5 changes: 4 additions & 1 deletion Sources/Fluid/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1464,7 +1464,7 @@ struct ContentView: View {
return SettingsStore.shared.saveTranscriptionHistory &&
SettingsStore.shared.saveAudioWithTranscriptionHistory
case .bottomOffset:
return self.settings.overlayPosition == .bottom
return self.settings.overlayPosition.isBottomAnchored
default:
return true
}
Expand Down Expand Up @@ -2082,6 +2082,9 @@ struct ContentView: View {
// Used to restore focus when the user interacts with overlay dropdowns.
let focusTarget = TypingService.captureSystemFocusTarget()
self.recordingFocusTarget = focusTarget
// Live Typing may only ever write into this exact field, so it is bound
// here rather than resolved again when the first partial arrives.
LiveTypingController.shared.bindRecordingFocus(focusTarget)
let focusedPID = focusTarget?.pid
?? NSWorkspace.shared.frontmostApplication?.processIdentifier
NotchContentState.shared.recordingTargetPID = focusedPID
Expand Down
21 changes: 21 additions & 0 deletions Sources/Fluid/Persistence/BackupService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,27 @@ struct SettingsBackupPayload: Codable, Equatable {
let overlayPosition: SettingsStore.OverlayPosition
let overlayBottomOffset: Double
let overlaySize: SettingsStore.OverlaySize
// Optional so backups created before the premium overlay still decode.
let overlayVisualStyle: OverlayVisualStyle?
let overlayColorTheme: OverlayColorTheme?
let overlayGlowIntensity: OverlayGlowIntensity?
let showTargetAppIcon: Bool?
/// Optional so backups written before the user scale still decode.
let overlayScale: Double?
/// Optional so backups written before the surface options still decode.
let overlaySurfaceAppearance: OverlaySurfaceAppearance?
let overlayCustomThemeHex: String?
/// Optional so backups written before the advanced glow tuning still decode.
let overlayGlowStrength: Double?
/// Optional so backups written before the Companion still decode.
let companionScale: Double?
let companionVariant: CompanionVariant?
// Optional so backups written before accessories still decode.
// swiftlint:disable:next discouraged_optional_collection
let companionAccessories: [String]?
let overlayMotionIntensity: MotionIntensity?
/// Optional so backups written before Live Typing still decode.
let liveTypingExperimental: Bool?
let transcriptionPreviewCharLimit: Int
let userTypingWPM: Int
let saveTranscriptionHistory: Bool
Expand Down
Loading
Loading