export type ChangeLogEntry = { version: string; releaseDate: string; repoVersion: string; summary: string; features: string[]; tests: string[]; }; export const CHANGE_LOG_ENTRIES: ChangeLogEntry[] = [ { version: "2026.03.17-live-camera-preview-recovery", releaseDate: "2026-03-17", repoVersion: "06b9701", summary: "修复实时分析页标题乱码、同步观看残留状态导致的黑屏,以及切回本机摄像头后预览无法恢复的问题。", features: [ "runtime 标题恢复逻辑新增更严格的乱码筛除与二次 UTF-8 解码兜底,`服...`、带替换字符的脏标题现在会优先恢复为正常中文,无法恢复时会安全回退到稳定默认标题", "同步观看退出时会完整重置 viewer 轮询、连接标记和帧版本,不再把旧 viewer 状态残留到 owner 或空闲态,避免页面继续停留在黑屏或“等待同步画面”", "本地摄像头预览新增独立重绑流程和多次 watchdog 重试,即使浏览器在首帧时没有及时绑定 `srcObject` 或 `play()` 被短暂打断,也会自动恢复预览", "视频区域是否显示画面改为按当前 runtime 角色分别判断,避免 viewer 的旧连接状态误导 owner 模式,导致本地没有预览时仍隐藏占位提示", ], tests: [ "pnpm check", "pnpm vitest run client/src/lib/liveCamera.test.ts", "pnpm exec playwright test tests/e2e/app.spec.ts --grep \"live camera\"", "pnpm build", "线上 smoke: `curl -I https://te.hao.work/`,并检查页面源码中的 `/assets/index-*.js`、`/assets/index-*.css`、`/assets/pose-*.js` 已切换到新构建且返回正确 MIME", ], }, { version: "2026.03.16-live-camera-runtime-refresh", releaseDate: "2026-03-16", repoVersion: "8e9e491", summary: "修复实时分析页偶发残留在同步观看状态、标题乱码,以及摄像头预览绑定波动导致的启动失败。", features: [ "live-camera 在打开拍摄引导、启用摄像头、开始分析前,都会先向服务端强制刷新 runtime 状态,避免旧的 viewer 锁残留导致本机明明已释放却仍无法启动", "同步观看标题新增乱码恢复逻辑,可自动把 UTF-8 被误按 Latin-1 显示的标题恢复成正常中文,避免出现 `服...` 一类异常标题", "摄像头启动链路改为以 `getUserMedia` 成功为准;即使本地预览 `