fix(conversation): 修复实时会话 TTS/回复被离屏 WS 抢占
- 列表预热仅预取消息缓存,避免后台 WebSocket 覆盖服务端连接 - RealtimeSession UI 回调按 owner 独占,防止 offscreen 覆盖聊天页 - 列表页聚焦时再 prewarm,会话页 TTS 入队优先 base64 - 管线下发 TTS 同时带 audio_base64 与 audio_url;协议说明同步 - 移除 TTS 排查用前后端调试日志,保留错误/告警 - 补充 WS / RealtimeSession / entry-warmup / 播放器相关单测 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -14,6 +14,7 @@ const KEY_LANGUAGE = 'app_settings_language';
|
||||
const KEY_LARGE_TEXT = 'app_settings_large_text';
|
||||
const KEY_DARK_MODE = 'app_settings_dark_mode';
|
||||
const KEY_THEME_NAME = 'app_settings_theme_name';
|
||||
const KEY_TTS_SPEAK_DEFAULT = 'app_settings_tts_speak_default';
|
||||
|
||||
const webFallback: Record<string, string> = {};
|
||||
|
||||
@@ -83,5 +84,16 @@ export async function setThemeName(value: ThemeName): Promise<void> {
|
||||
await setStored(KEY_THEME_NAME, value);
|
||||
}
|
||||
|
||||
/** 会话页「Speak / 本轮朗读」开关是否默认开启(跨会话记忆) */
|
||||
export async function getTtsSpeakDefault(): Promise<boolean> {
|
||||
const v = await getStored(KEY_TTS_SPEAK_DEFAULT);
|
||||
if (v == null || v === '') return false;
|
||||
return v === 'true';
|
||||
}
|
||||
|
||||
export async function setTtsSpeakDefault(value: boolean): Promise<void> {
|
||||
await setStored(KEY_TTS_SPEAK_DEFAULT, value ? 'true' : 'false');
|
||||
}
|
||||
|
||||
export { supportedLanguages, THEME_NAMES };
|
||||
export type { AppLanguage, ThemeName };
|
||||
|
||||
Reference in New Issue
Block a user