feat: 实现会话配置与多轮上下文
All checks were successful
Backend CI / ci (pull_request) Successful in 1m0s
Frontend CI / ci (pull_request) Successful in 1m0s

- 新增 ConfigPanel 组件:TTS 开关、detail level、语言选择
- 新增 storage.ts:配置持久化到 localStorage
- useVisionSession:连接后自动发送 config,维护最近 10 轮对话历史
- App:齿轮按钮展开配置面板,HD 角标,TTS 播放联动 ttsEnabled

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-13 14:19:47 +08:00
parent 8033807f7c
commit 7e3762b589
5 changed files with 267 additions and 18 deletions

View File

@@ -0,0 +1,55 @@
// ============================================================
// ConfigPanel — 会话配置面板
// 职责TTS 开关、detail level 切换、语言选择
// ============================================================
import type { SessionConfig } from "../../types";
interface ConfigPanelProps {
config: SessionConfig;
onUpdate: (partial: Partial<SessionConfig>) => void;
onClose: () => void;
}
export function ConfigPanel({ config, onUpdate, onClose }: ConfigPanelProps) {
return (
<div className="config-panel">
<div className="config-panel__header">
<span></span>
<button className="config-panel__close" onClick={onClose}></button>
</div>
<label className="config-row">
<span></span>
<input
type="checkbox"
checked={config.ttsEnabled}
onChange={(e) => onUpdate({ ttsEnabled: e.target.checked })}
/>
</label>
<label className="config-row">
<span></span>
<select
value={config.detailLevel}
onChange={(e) => onUpdate({ detailLevel: e.target.value as "low" | "high" })}
>
<option value="low"></option>
<option value="high"></option>
</select>
</label>
<label className="config-row">
<span></span>
<select
value={config.language}
onChange={(e) => onUpdate({ language: e.target.value })}
>
<option value="zh-CN"></option>
<option value="en-US">English</option>
<option value="ja-JP"></option>
</select>
</label>
</div>
);
}