feat: harden Flow cold-start/force-quit and polish macOS dictation UX
Fix cold-start overlay recursion that overflowed the main-thread stack when recording began while the ready overlay was still up; also remove temporary on-screen Flow DEBUG panels after the orange-mic investigation, and land the macOS overlay/catalog/layout polish plus related Flow recovery hardening.
This commit is contained in:
@@ -41,4 +41,30 @@ final class ConfigurationStoreTests: XCTestCase {
|
||||
let service = ASRServiceFactory.make(store: store as any ConfigurationStore)
|
||||
XCTAssertTrue(service is SpeechAnalyzerASR)
|
||||
}
|
||||
|
||||
func testASRAndPolishProvidersAreIndependent() throws {
|
||||
try Keychain.setAPIKey("sk-llm", for: "openai", useICloudSync: false)
|
||||
try Keychain.setASRAPIKey("sk-asr", for: "zhipu", useICloudSync: false)
|
||||
|
||||
var config = AppGroupConfiguration.load(fromAvailable: defaults)
|
||||
config.engineMode = "cloud"
|
||||
config.providerId = "openai"
|
||||
config.asrProviderId = "zhipu"
|
||||
config.save(to: defaults)
|
||||
|
||||
let loaded = AppGroupStore(defaults: defaults)
|
||||
XCTAssertEqual(loaded.providerId, "openai")
|
||||
XCTAssertEqual(loaded.asrProviderId, "zhipu")
|
||||
XCTAssertEqual(loaded.apiKey, "sk-llm")
|
||||
XCTAssertEqual(loaded.asrApiKey, "sk-asr")
|
||||
|
||||
let asrClient = CloudASRClientFactory.make(store: loaded)
|
||||
XCTAssertTrue(asrClient is ZhipuCloudASRClient)
|
||||
}
|
||||
|
||||
func testLegacyInstallCopiesProviderIdToAsrProviderId() {
|
||||
defaults.set("qwen", forKey: AppGroupConfiguration.Keys.providerId)
|
||||
let config = AppGroupConfiguration.load(fromAvailable: defaults)
|
||||
XCTAssertEqual(config.asrProviderId, "qwen")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user