feat(keyboard): ship AI mode surface with streaming search answers

Add the AI keyboard tab, Agent settings, and user-owned LLM key path for 1.7.0, including streaming answers and web-search transports without the built-in DeepSeek fallback.
This commit is contained in:
Rocky
2026-08-11 01:06:27 +08:00
parent f6212dcd2c
commit 3de665d254
81 changed files with 4467 additions and 398 deletions
+8 -2
View File
@@ -5,8 +5,9 @@
"engine.asr.appleSpeech" = "Apple SpeechAnalyzer";
/* v0.2.0: flow-level warnings surfaced alongside the final transcript. */
"flow.warning.cloudPolishMissingKey" = "Cloud polish needs an API key in Settings. Inserted raw ASR text.";
"flow.warning.localPolishUnavailable" = "Built-in polish is unavailable. Inserted raw ASR text.";
"flow.warning.polishMissingAPIKey" = "Add an API key in Settings to enable polish. Inserted raw ASR text.";
"flow.warning.cloudPolishMissingKey" = "Add an API key in Settings to enable polish. Inserted raw ASR text.";
"flow.warning.localPolishUnavailable" = "Add an API key in Settings to enable polish. Inserted raw ASR text.";
"flow.warning.polishDegraded" = "Weak network — inserted raw ASR text without polish.";
"flow.warning.polishDegradedQuality" = "Polish output failed validation; inserted a conservative version.";
@@ -104,6 +105,11 @@
"polish.intensity.light.desc" = "Uses full fidelity and question safeguards to reduce distortion.";
"polish.intensity.heavy.desc" = "Uses only transcript formatting before the selected fun personality.";
/* AI response length */
"ai.responseLength.short" = "Short";
"ai.responseLength.medium" = "Medium";
"ai.responseLength.detailed" = "Detailed";
/* v0.3.0: Detected app context labels */
"appContext.code" = "Code";