|
|
7a0443ebcc
|
style: 样式优化
|
2026-06-14 16:31:23 +08:00 |
|
|
|
fe053f94dc
|
fix: 隐藏观察模式按钮,清理未使用的 toggleMode 引用
|
2026-06-14 15:56:59 +08:00 |
|
|
|
92f3f45c41
|
feat: 新增会话历史侧边栏,支持新建/切换/删除/重命名会话
类似 ChatGPT 的侧边栏布局,消息历史持久化到 localStorage。
- 新增 SessionSummary 类型和 localStorage 读写函数
- 新增 useSessionList Hook 管理会话列表 CRUD
- 新增 SessionSidebar 组件(展开/折叠、行内重命名)
- App.tsx 协调 useSessionList 和 useVisionSession
- 消息变化时自动持久化,切换/新建会话时保存并加载
- 新增 i18n 翻译 key(中/英/日)
|
2026-06-14 15:44:25 +08:00 |
|
|
|
da8818c3be
|
fix: 隐藏顶部状态栏的 token 数显示
|
2026-06-14 15:10:43 +08:00 |
|
|
|
15b1dd56fa
|
feat: 聊天框与视频功能解耦,输入文字即可开始对话
之前必须点击「开始对话」连接 WebSocket 后才能使用聊天框。
现在聊天输入框始终可用,输入文字自动连接 WebSocket 并发送消息;
左侧按钮改为「开始视频通话」,单独控制摄像头/麦克风。
- ChatPanel 移除 !isConnected early return,始终显示输入框
- useVisionSession 新增待发消息队列,sendTextMessage 支持自动连接
- startSession 改为仅负责视频(摄像头 + 麦克风 + VAD)
- 修复 statusRef 在 useWebSocketManager 之前声明导致的 TDZ 错误
- 更新 i18n 翻译(新增 controls.startVideo、video.placeholder)
|
2026-06-14 15:07:39 +08:00 |
|
|
|
e95b1603c1
|
feat: 前端 UI 国际化,支持中/英/日三语切换
之前语言设置只影响后端 AI 行为,前端 UI 文字始终为中文。
新增轻量 i18n 模块(React Context + 翻译字典),切换语言后所有 UI 文字即时刷新。
- 新增 i18n 核心模块和 zh-CN/en-US/ja-JP 翻译文件(约 72 个 key)
- App.tsx 拆分为 App(Provider)+ AppContent(业务),确保 Hook 可访问 Context
- 所有组件通过 useI18n().t() 获取翻译文本
- errors.ts 改为接受翻译函数参数
- storage.ts saveConfig 时派发事件通知 locale 变化
|
2026-06-14 14:34:30 +08:00 |
|
|
|
da5c727d8c
|
fix: 修复语音与文字不同步的问题,改为句子级流式播放
之前前端 TTSPlayer 攒齐所有音频片段后才播放,导致文字全部显示后才开始语音。
改为后端每句 TTS 发送 is_last: true,前端收到每句即加入播放队列,第一句到达即开始播放。
- 后端 Chunk 结构体新增 Final 字段,区分句子结束和整轮结束
- 前端 TTSPlayer 重写为队列式播放,onended 回调自动衔接下一句
- 同步更新接口文档和测试用例
|
2026-06-14 13:54:49 +08:00 |
|
|
|
81c2b64e5f
|
fix: 修复无摄像头/麦克风时聊天框不显示的问题
- 重构 ChatPanel 逻辑,连接后始终显示输入框
- 将欢迎消息移入消息容器内
- 确保输入框在任何状态下都可见
|
2026-06-14 13:17:14 +08:00 |
|
|
|
dffc8aa538
|
feat: 支持无摄像头/麦克风模式打字聊天
- 修改 startSession 逻辑,摄像头和麦克风为可选
- 连接成功后始终显示聊天输入框
- 更新 UI 提示文字,引导用户打字对话
|
2026-06-14 13:13:29 +08:00 |
|
|
|
41cacaa740
|
fix: 修复麦克风关闭后重新打开无法使用的问题
- 关闭麦克风时同时停止 VAD
- 打开麦克风时重新初始化 VAD
|
2026-06-14 12:54:58 +08:00 |
|
|
|
51ed6aa563
|
feat: 添加文字输入对话功能
- 后端 WsQuery 添加 text 字段,支持文本输入模式
- Pipeline 支持文本查询时跳过 STT 直接使用输入文本
- 前端 ChatPanel 添加文字输入框,连接状态下可用
- useVisionSession 添加 sendTextMessage 方法
- 更新接口文档,添加文本输入模式说明
|
2026-06-14 12:52:39 +08:00 |
|
|
|
563ca12790
|
Merge pull request 'fix/hard-code' (#62) from fix/hard-code into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/62
|
2026-06-14 12:31:55 +08:00 |
|
|
|
24a6ce5295
|
fix: 修复新旧 TTS 语音重叠播放的问题
- TTSPlayer 新增 stopCurrentAudio() 方法,play() 开始前先停止旧音频
- onSpeechEnd 发送新 query 前停止上一轮 TTS 播放
|
2026-06-14 12:01:34 +08:00 |
|
|
|
4a7cf89f29
|
fix: 前端 WebSocket URL 改为环境变量或自动推导,消除 localhost 硬编码
|
2026-06-14 11:55:07 +08:00 |
|
|
|
70dfa1c8f8
|
feat:样式美化
|
2026-06-14 10:18:36 +08:00 |
|
|
|
a7d679d04f
|
feat: 功能优化
|
2026-06-13 22:20:31 +08:00 |
|
|
|
00f10088d0
|
feat: 底部控制栏添加摄像头/麦克风开关,说话时麦克风脉冲动画
- useVisionSession 新增 isCameraOn/isMicOn 状态 + toggleCamera/toggleMic
- 底部控制栏添加 📷🎤 图标按钮,开启绿色/关闭红色
- 说话时麦克风按钮绿色脉冲缩放动画(micPulse)
- 按钮样式优化:nowrap 防换行,flex-wrap 自适应
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 20:01:37 +08:00 |
|
|
|
188782fa66
|
feat: 添加 LIVE 计时器和语言按钮组(P0 优化)
- 视频区左上角显示 LIVE 绿色圆点 + 连接时长计时器
- Header 添加中文/EN/日 语言按钮组,一键切换语言
- live-badge、lang-group 样式
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 19:01:33 +08:00 |
|
|
|
0227822120
|
feat: 增加深色/浅色主题切换功能
- types 新增 Theme 类型(dark/light)
- storage 新增 loadTheme/saveTheme 持久化主题偏好
- ConfigPanel 新增外观分组,主题下拉选择
- App.tsx 通过 data-theme 属性挂载到 html 元素
- App.css 新增 [data-theme=light] 亮色变量覆盖
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 17:08:56 +08:00 |
|
|
|
f17c3c24a7
|
refactor: 设置面板改为右侧抽屉,修复布局跳动问题
- ConfigPanel 重写为 Drawer:右侧 320px 滑入面板 + 半透明遮罩
- 设置按钮始终可见,不依赖连接状态
- 抽屉不推挤主布局,点击遮罩或✕关闭
- 设置项分组显示,带功能描述文案
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 16:54:57 +08:00 |
|
|
|
dd64ed23ee
|
style: 重构为 Web 端双栏布局,突出对话展示
- 重构 App.tsx 为双栏布局:左侧视频面板 + 右侧聊天面板
- 左侧 340px 固定宽度视频区(4:3 比例)
- 右侧对话区 flex:1 占满剩余空间
- Header 改为导航栏风格:标题+副标题+状态标签+设置按钮
- 视频下方控制栏:观察模式/打断/结束对话按钮
- 优化间距、字号、配色,适配桌面端
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 16:16:37 +08:00 |
|
|
|
f5536005f6
|
feat: 实现观察模式,支持持续场景监控(US-05/US-10)
- 新增 useObservationMode Hook:定时 5s 采帧,similarity < 0.85 触发变化回调
- useVisionSession 新增 dialogue/observation 模式切换
- App Footer 加观察模式切换按钮(激活时蓝色脉冲)
- 视频区左上角显示'👁️ 观察中'绿色角标
- 观察模式下画面变化自动发送 query
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 14:46:42 +08:00 |
|
|
|
2c6489b9a6
|
feat: 实现关键帧检测与成本控制
- EdgeProcessor:sampleFrame 降采样 160x120 + compareFrames 像素差异对比
- 重复画面跳过:similarity > 0.9 时不发送 query
- 混合采样策略:静默 5s / 用户说话 1s(docs/08-成本控制.md)
- 请求统计:queryCount + totalTokens 实时显示
- App 状态栏显示成本统计
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 14:38:15 +08:00 |
|
|
|
7e3762b589
|
feat: 实现会话配置与多轮上下文
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>
|
2026-06-13 14:19:47 +08:00 |
|
|
|
6a47c4dfbb
|
feat: 实现 TTS 语音播放,完成 MVP P0 全部用户故事
- 新增 TTSPlayer:收集流式 tts_audio 片段,is_last 时拼接解码播放
- useVisionSession 接入 TTS 播放器,interrupt/stopSession 时停止播放
- App 显示 '🔊 正在播放...' 指示器
- MVP P0 四个用户故事前端全部实现(US-01 ~ US-04)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 13:57:36 +08:00 |
|
|
|
734c93a866
|
feat: 完善端到端对话闭环,增强消息渲染与错误处理
- ChatPanel:流式光标动画、token/延迟元数据、自动滚动、三种空状态
- Toast 组件:错误码映射为中文友好文案,3 秒自动消失
- useVisionSession:stt_result 流式更新、防重复发送、打断保存未完成内容、结束清理全部状态
- App:断线提示、视频 loading 遮罩、按钮连接中状态
- ChatMessage 增加 latencyMs、model 字段
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:43:16 +08:00 |
|
|
|
9ccd4d6238
|
feat: 集成 VAD 语音活动检测,打通核心交互链路
- 重写 useVAD Hook,接入 @ricky0123/vad-web 的 MicVAD
- 支持 onSpeechStart/onSpeechEnd/onVADMisfire 回调
- useVisionSession 中串联摄像头→麦克风→WebSocket→VAD 完整流程
- App.tsx 新增 VAD 加载中和错误状态的 UI 指示
- VAD 参数对齐设计文档:positiveSpeechThreshold=0.5, minSpeechMs=250
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-13 11:10:29 +08:00 |
|
|
|
b5c0d40609
|
feat: 初始化前端项目,搭建 React + TypeScript + Vite 工程结构
- 创建 Vite + React 18 + TypeScript 项目(严格模式)
- 安装 @ricky0123/vad-web、onnxruntime-web、uuid 依赖
- 定义全部 WebSocket 消息类型和数据模型(对齐接口文档)
- 实现 WebSocket 连接管理(心跳保活、指数退避重连)
- 实现音频编码工具(PCM↔Base64、DataURL 转换)
- 创建组件骨架:CameraManager、MicManager、EdgeProcessor、WebSocketManager、ChatPanel、VideoPreview
- 实现核心 useVisionSession Hook 骨架
- 配置 ESLint(_前缀变量忽略规则)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-12 17:46:25 +08:00 |
|