feat: macOS architecture, cloud ASR/LLM providers, and 6-step iOS onboarding
- Add macOS menu-bar dictation app with local ASR models (SenseVoice/Qwen3),
global Option hotkey, and bottom overlay
- Add cloud ASR/LLM providers (Anthropic, Volcengine, Bailian, and more) with
provider logos, model listing, and connection checks
- Add shared 7-day usage stats UI (UsageStatsCluster / SevenDayUsageChart)
- Add iOS onboarding step 6 for polish LLM setup; hide custom-language-model
diagnostic toggle behind DEBUG
- Unify iOS onboarding tagline with the macOS brand line ("开口即文字。")
- Rewrite README (Chinese-first, product-oriented) and refresh GitHub Pages
This commit is contained in:
@@ -17,7 +17,8 @@ final class AppGroupConfigurationTests: XCTestCase {
|
||||
let defaults = makeDefaults()
|
||||
let config = AppGroupConfiguration.load(fromAvailable: defaults)
|
||||
|
||||
XCTAssertEqual(config.providerId, "openai")
|
||||
XCTAssertEqual(config.providerId, "deepseek")
|
||||
XCTAssertEqual(config.asrProviderId, "volcengine")
|
||||
XCTAssertEqual(config.modeId, "polish")
|
||||
XCTAssertEqual(config.localeId, "auto")
|
||||
// Privacy-critical: the default engine must keep audio on-device.
|
||||
@@ -125,14 +126,14 @@ final class AppGroupConfigurationTests: XCTestCase {
|
||||
XCTAssertFalse(config.translationEnabled)
|
||||
}
|
||||
|
||||
func testCloudDeepSeekProviderMigratesToOpenAI() {
|
||||
func testCloudDeepSeekProviderIsPreserved() {
|
||||
let defaults = makeDefaults()
|
||||
defaults.set("deepseek", forKey: AppGroupConfiguration.Keys.providerId)
|
||||
defaults.set("cloud", forKey: AppGroupConfiguration.Keys.engineMode)
|
||||
|
||||
let config = AppGroupConfiguration.load(fromAvailable: defaults)
|
||||
XCTAssertEqual(config.providerId, "openai")
|
||||
XCTAssertEqual(defaults.string(forKey: AppGroupConfiguration.Keys.providerId), "openai")
|
||||
XCTAssertEqual(config.providerId, "deepseek")
|
||||
XCTAssertEqual(defaults.string(forKey: AppGroupConfiguration.Keys.providerId), "deepseek")
|
||||
}
|
||||
|
||||
func testPolishIntensityLegacyOffMigratesToMedium() {
|
||||
|
||||
Reference in New Issue
Block a user