|
28213
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"ce505ce5a {"Commits":[{"Sha1":"ce505ce5a247c42b98fd6d66459476971651c1ac","Message":"fix(renderer): 替换 SFTP 文件夹图标并对齐视觉尺寸\n\n使用 Icons8 蓝色文件夹 SVG,收紧画布留白以匹配旧图标可见宽度,保持列表和路径导航的布局尺寸,并更新资源来源说明。\n\n验证:npm run typecheck、SVG 格式和尺寸计算校验、git diff --check 均通过。\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-07T13:47:06+08:00"},{"Sha1":"aa78d0d82b46e9734d5ee9be8eb985d19f22d4cd","Message":"perf(logs): 优化日志采集传输与通道准备流程\n\n完整文件通过 SFTP 并发读取固定快照范围,时间窗口复用句柄读取不重叠区间;不支持 SFTP 时在同一线路回退到 exec。\n\n元数据查询与数据通道初始化并行,只查询所选文件,减少正文复制和无关键词时的逐行处理。补充协议、初始化和剩余等待耗时指标,以及配置页文件列表查询的回归测试。\n\n验证:\n- 日志采集、SFTP 和文件路由相关 93 项测试通过,补充配置页回归后日志相关 34 项测试通过\n- npm run typecheck、npm run build 通过\n- 用户经服务器 B 采集约 27 MB 完整文件由约 11.3 秒降至 5.8 秒,并确认配置页验证通过\n- git diff --cached --check 通过\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-07T13:43:58+08:00"},{"Sha1":"7ffacb030579515113cd7bffb430ec0fa715daa8","Message":"feat(app): 增加备用中继文件与日志传输加速\n\n为经反向 SSH 中转的设备提供独立文件数据线路,缓解原中转服务器带宽限制。\n\n实现内容:\n- 在设置中增加独立传输加速开关,复用公网远程服务地址和认证配置\n- 识别反向 SSH 接入,仅将对应文件传输和日志数据路由到备用中继\n- 局域网及公网直连保持原路径,切换开关不打断已开始的传输\n- 增加设备端临时隧道和服务端双向转发,保留 SSH 认证与主机指纹校验\n- 增加短期凭据、角色隔离、会话回收、回归测试及支持失败回滚的升级脚本\n\n验证:\n- npm test:101 个测试文件、880 项测试通过\n- go test -race ./...:remote-access 全模块通过\n- npm run build:类型检查、设备端与服务端构建、Electron 和 renderer 构建通过\n- 备用服务部署后通过 HTTPS 入口双向传输各 1 MiB 随机数据,SHA-256 一致\n- 错误凭据拒绝、角色隔离及双端释放检查通过\n- 用户已实际验证并确认传输加速效果符合预期\n","AuthorEmail":"gamebyteyu@gmail.com","AuthorName":"starry","CommitterEmail":"gamebyteyu@gmail.com","CommitterName":"starry","Timestamp":"2026-09-07T00:13:14+08:00"}],"HeadCommit":{"Sha1":"ce505ce5a247c42b98fd6d66459476971651c1ac","Message":"fix(renderer): 替换 SFTP 文件夹图标并对齐视觉尺寸\n\n使用 Icons8 蓝色文件夹 SVG,收紧画布留白以匹配旧图标可见宽度,保持列表和路径导航的布局尺寸,并更新资源来源说明。\n\n验证:npm run typecheck、SVG 格式和尺寸计算校验、git diff --check 均通过。\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-07T13:47:06+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/3a2f2fffa7d64a5bdc4165eab087a9aa4539049a...ce505ce5a247c42b98fd6d66459476971651c1ac","Len":3}...
|
1788762395
|
Edit
Delete
|
|
28181
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"3a2f2fffa {"Commits":[{"Sha1":"3a2f2fffa7d64a5bdc4165eab087a9aa4539049a","Message":"perf(electron): 优化 SFTP 并发下载与传输进度广播\n\n将单文件下载改为 32 KiB 分块、最多 32 个并发请求,按偏移顺序输出并限制预读内存。保留取消、空闲超时、短读取补齐、句柄关闭确认及临时文件提交机制。\n\n传输进度广播限制为每 150 ms 一次,终态即时发送,减少 IPC 和主页活动摘要读取。共享 SSH 连接启用 TCP_NODELAY。\n\n验证:\n- SFTP、复制队列和 SSH 连接相关测试共 70 项通过\n- npm run build 通过,包含 npm run typecheck\n- 用户实测同一 23.62 MB 文件下载由约 20 秒降至 2 秒多\n- git diff --cached --check 通过\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-06T23:04:02+08:00"},{"Sha1":"c19696ec92ab2d1dd9635352eabd0603b29361c2","Message":"feat(devices): 实现设备列表在线探测与首次型号识别\n\n设备列表需要在未打开详情时展示在线状态并识别型号,避免依赖详情面板触发采集。\n\n实现内容:\n- 在设置主页增加默认关闭的自动探测开关,开启后立即探测全部设备\n- 主进程每分钟仅检查 SSH 在线状态,限制四台并发并隔离迟到结果\n- 仅启动、开启功能和档案新增或变更时读取 INI 型号,读取失败回退未知\n- 在卡片和列表展示在线、离线、待验证与检测失败标志,并适配紧凑布局\n- 关闭开关、页面重新导航或主页销毁时清理监控任务\n\n验证:\n- 5 个相关测试文件共 56 项测试通过\n- npm run build 通过,包含 npm run typecheck\n- git diff --cached --check 通过\n- 尚未进行真机交互验证\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-06T22:32:38+08:00"},{"Sha1":"53c68aef197279dd7cb1c701e96e210a93d78bd5","Message":"feat(devices): 随主题切换设备图标配色\n\n新增 P960、P970、P975、P980 和未知型号的黑色机身图标。Light 使用黑色机身与白色型号,Dark 保留白色机身,并复用已解析的外观状态支持 Auto 跟随系统及拖拽预览。\n\n验证:暂存内容的隔离副本通过 npm run typecheck,两个相关测试文件共 9 项测试通过;五款黑白 SVG 的尺寸、透明区域与轮廓一致;git diff --cached --check 通过。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-06T22:23:17+08:00"},{"Sha1":"97cc8919987e0ea6683033a29b44dd9f05e4dea4","Message":"fix(devices): 提升设备图标型号文字清晰度\n\n将 P960、P970、P975、P980 的型号文字调整为右倾样式,并适度加宽、加粗和加深颜色。保持机身材质、外形和无型号图标不变。\n\n验证:SVG 渲染及文字区域像素差异检查通过;git diff --cached --check 通过。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-06T22:08:56+08:00"},{"Sha1":"4600031e7278ff5be5d87b58de02b54df9284dbb","Message":"feat(devices): 根据 INI 型号匹配设备图标\n\n设备卡片原先统一使用通用图标,现复用设备详情的 INI 探测按实际型号显示机身。\n\n实现内容:\n- 从 room.ini 的备用mac前缀识别 P960、P970、P975、P980,缺失或未知时使用无型号图标\n- 补充 data/media 下的 INI 目录,兼容大小写、UTF-8 和 GBK,不向渲染端传输完整设备标识\n- 按设备和 SSH 目标隔离探测结果,接入五款 SVG 并调整卡片和列表中的图标尺寸与居中\n\n验证:\n- 6 个相关测试文件共 41 项测试通过\n- npm run build 通过,包含 npm run typecheck\n- git diff --cached --check 通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-06T22:02:39+08:00"}],"HeadCommit":{"Sha1":"3a2f2fffa7d64a5bdc4165eab087a9aa4539049a","Message":"perf(electron): 优化 SFTP 并发下载与传输进度广播\n\n将单文件下载改为 32 KiB 分块、最多 32 个并发请求,按偏移顺序输出并限制预读内存。保留取消、空闲超时、短读取补齐、句柄关闭确认及临时文件提交机制。\n\n传输进度广播限制为每 150 ms 一次,终态即时发送,减少 IPC 和主页活动摘要读取。共享 SSH 连接启用 TCP_NODELAY。\n\n验证:\n- SFTP、复制队列和 SSH 连接相关测试共 70 项通过\n- npm run build 通过,包含 npm run typecheck\n- 用户实测同一 23.62 MB 文件下载由约 20 秒降至 2 秒多\n- git diff --cached --check 通过\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-06T23:04:02+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/05a7a8d4ec04ef2784973cf6825268ca2f310d9e...3a2f2fffa7d64a5bdc4165eab087a9aa4539049a","Len":17}...
|
1788708031
|
Edit
Delete
|
|
28161
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"05a7a8d4e {"Commits":[{"Sha1":"05a7a8d4ec04ef2784973cf6825268ca2f310d9e","Message":"refactor(remote-preview): 优化操作台预览布局和侧栏信息展示\n\n原实时预览工具栏控件挤在一行,侧栏把协议参数全部平铺,文案也偏 WebRTC / TURN 术语,不利于日常查看和操作设备。\n\n实现内容:\n- 重组预览工具栏:屏幕切换、画质、连接、远程操作和查看方式分组展示\n- 全屏时保留工具栏,并优化空状态、实时角标和用户可见提示\n- 侧栏默认只展示画质、分辨率、连接和操作四张常用卡片\n- 将码率、丢包、组件版本等诊断参数收入可展开的详细信息\n- 将连接方式、错误和状态栏文案改成更贴近使用场景的说法\n\n验证:\n- npm run typecheck\n- npx vitest run src/features/remotePreview/RemotePreviewWorkspace.test.ts\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-04T21:34:51+08:00"}],"HeadCommit":{"Sha1":"05a7a8d4ec04ef2784973cf6825268ca2f310d9e","Message":"refactor(remote-preview): 优化操作台预览布局和侧栏信息展示\n\n原实时预览工具栏控件挤在一行,侧栏把协议参数全部平铺,文案也偏 WebRTC / TURN 术语,不利于日常查看和操作设备。\n\n实现内容:\n- 重组预览工具栏:屏幕切换、画质、连接、远程操作和查看方式分组展示\n- 全屏时保留工具栏,并优化空状态、实时角标和用户可见提示\n- 侧栏默认只展示画质、分辨率、连接和操作四张常用卡片\n- 将码率、丢包、组件版本等诊断参数收入可展开的详细信息\n- 将连接方式、错误和状态栏文案改成更贴近使用场景的说法\n\n验证:\n- npm run typecheck\n- npx vitest run src/features/remotePreview/RemotePreviewWorkspace.test.ts\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-04T21:34:51+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/812f6947d082b5e293f4584ad575afe67df5b08f...05a7a8d4ec04ef2784973cf6825268ca2f310d9e","Len":1}...
|
1788529572
|
Edit
Delete
|
|
28152
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"812f6947d {"Commits":[{"Sha1":"812f6947d082b5e293f4584ad575afe67df5b08f","Message":"perf(remote-preview): 缩短首次远程首帧等待\n\n实现内容:\n- 在操作台建立 SSH 连接后后台预部署 Agent 和 scrcpy 固定资源\n- 使用 gzip 压缩大型 Agent,并在设备端校验解压后的大小和 SHA-256 后原子替换\n- 在设备或本机不支持压缩时自动回退原始上传\n- 增加预热、压缩、上传和启动阶段耗时诊断\n- 复用并发预热与启动任务,避免重复部署\n\n验证:\n- npm test(82 个测试文件、633 个测试)\n- npm run typecheck\n- npm run build\n- 首次远程预热后首帧从 20.90 秒缩短至 4.44 秒\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T18:39:19+08:00"}],"HeadCommit":{"Sha1":"812f6947d082b5e293f4584ad575afe67df5b08f","Message":"perf(remote-preview): 缩短首次远程首帧等待\n\n实现内容:\n- 在操作台建立 SSH 连接后后台预部署 Agent 和 scrcpy 固定资源\n- 使用 gzip 压缩大型 Agent,并在设备端校验解压后的大小和 SHA-256 后原子替换\n- 在设备或本机不支持压缩时自动回退原始上传\n- 增加预热、压缩、上传和启动阶段耗时诊断\n- 复用并发预热与启动任务,避免重复部署\n\n验证:\n- npm test(82 个测试文件、633 个测试)\n- npm run typecheck\n- npm run build\n- 首次远程预热后首帧从 20.90 秒缩短至 4.44 秒\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T18:39:19+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/2cb4bc7bf7e8116d5f40acd12a3f2de52e6a7338...812f6947d082b5e293f4584ad575afe67df5b08f","Len":1}...
|
1788519156
|
Edit
Delete
|
|
28139
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"2cb4bc7bf {"Commits":[{"Sha1":"2cb4bc7bf7e8116d5f40acd12a3f2de52e6a7338","Message":"feat(remote-preview): 增强切屏恢复与分段诊断\n\n实现内容:\n- TV 采集失败时自动恢复触摸屏并保持 WebRTC 会话\n- 过滤旧切屏代次,以连续两帧实际呈现作为切换完成点\n- 使用 remote-state-v4 上报停止、socket 建立和首个关键帧分段耗时\n- 按 P2P 与 TURN 路线记录切屏总耗时和 Agent 阶段指标\n- 避免画质重启复用旧切屏时间,并补充 SSH 回退异常诊断\n\n验证:\n- npm test(82 个测试文件、625 个测试)\n- npm run typecheck\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- GOCACHE=/private/tmp/juhai-go-test-cache go test ./...\n- GOCACHE=/private/tmp/juhai-go-race-cache go test -race ./...\n- GOCACHE=/private/tmp/juhai-go-vet-cache go vet ./...\n- android-box-3.208 局域网 P2P 与强制 TURN 各 20 次切屏测试\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T17:31:49+08:00"},{"Sha1":"56275acce88349d4b466d98eb4cc8f0d2ca3c144","Message":"fix(remote-preview): 兼容缺少 SHA-256 工具的设备部署\n\n实现内容:\n- 在远端缺少 sha256sum 时回读资源并在本机校验哈希\n- 上传到受控临时文件,校验通过后再原子替换正式资源\n- 为复用、更新和回滚路径补充完整性回退诊断\n- 增加旧设备部署成功与回读损坏保护测试\n\n验证:\n- npm test(82 个测试文件、625 个测试)\n- npm run typecheck\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- GOCACHE=/private/tmp/juhai-go-test-cache go test ./...\n- GOCACHE=/private/tmp/juhai-go-race-cache go test -race ./...\n- GOCACHE=/private/tmp/juhai-go-vet-cache go vet ./...\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T17:31:10+08:00"}],"HeadCommit":{"Sha1":"2cb4bc7bf7e8116d5f40acd12a3f2de52e6a7338","Message":"feat(remote-preview): 增强切屏恢复与分段诊断\n\n实现内容:\n- TV 采集失败时自动恢复触摸屏并保持 WebRTC 会话\n- 过滤旧切屏代次,以连续两帧实际呈现作为切换完成点\n- 使用 remote-state-v4 上报停止、socket 建立和首个关键帧分段耗时\n- 按 P2P 与 TURN 路线记录切屏总耗时和 Agent 阶段指标\n- 避免画质重启复用旧切屏时间,并补充 SSH 回退异常诊断\n\n验证:\n- npm test(82 个测试文件、625 个测试)\n- npm run typecheck\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- GOCACHE=/private/tmp/juhai-go-test-cache go test ./...\n- GOCACHE=/private/tmp/juhai-go-race-cache go test -race ./...\n- GOCACHE=/private/tmp/juhai-go-vet-cache go vet ./...\n- android-box-3.208 局域网 P2P 与强制 TURN 各 20 次切屏测试\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T17:31:49+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/78697e65f7521cd126fc4138c92cbc3c9a168f81...2cb4bc7bf7e8116d5f40acd12a3f2de52e6a7338","Len":2}...
|
1788514340
|
Edit
Delete
|
|
28001
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"78697e65f {"Commits":[{"Sha1":"78697e65f7521cd126fc4138c92cbc3c9a168f81","Message":"feat(remote-preview): 支持触摸屏与 TV 屏切换\n\n实现内容:\n- 复用单条 WebRTC 视频轨道与 scrcpy 进程切换触摸屏和 TV 屏\n- 缓存各屏最后一帧,并在目标屏新帧确认前提供冻结画面过渡\n- 增加显示目标代次与旧信令兼容状态,避免旧屏残留帧提前结束切换\n- 切屏时释放活动触点,TV 屏保持只读且 SSH 回退固定触摸屏\n\n验证:\n- npm test -- --run(82 个测试文件、615 个测试)\n- npm run typecheck\n- GOCACHE=/private/tmp/juhai-go-build npm run build\n- GOCACHE=/private/tmp/juhai-go-build go test ./...\n- GOCACHE=/private/tmp/juhai-go-build go test -race ./internal/agent ./internal/control ./internal/server\n- GOCACHE=/private/tmp/juhai-go-build go vet ./...\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T15:28:38+08:00"}],"HeadCommit":{"Sha1":"78697e65f7521cd126fc4138c92cbc3c9a168f81","Message":"feat(remote-preview): 支持触摸屏与 TV 屏切换\n\n实现内容:\n- 复用单条 WebRTC 视频轨道与 scrcpy 进程切换触摸屏和 TV 屏\n- 缓存各屏最后一帧,并在目标屏新帧确认前提供冻结画面过渡\n- 增加显示目标代次与旧信令兼容状态,避免旧屏残留帧提前结束切换\n- 切屏时释放活动触点,TV 屏保持只读且 SSH 回退固定触摸屏\n\n验证:\n- npm test -- --run(82 个测试文件、615 个测试)\n- npm run typecheck\n- GOCACHE=/private/tmp/juhai-go-build npm run build\n- GOCACHE=/private/tmp/juhai-go-build go test ./...\n- GOCACHE=/private/tmp/juhai-go-build go test -race ./internal/agent ./internal/control ./internal/server\n- GOCACHE=/private/tmp/juhai-go-build go vet ./...\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T15:28:38+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/c79acc2b40569f37dce63b2a5a8c6c98a89811ca...78697e65f7521cd126fc4138c92cbc3c9a168f81","Len":1}...
|
1788506950
|
Edit
Delete
|
|
27983
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"c79acc2b4 {"Commits":[{"Sha1":"c79acc2b40569f37dce63b2a5a8c6c98a89811ca","Message":"feat(remote-preview): 支持会话计时和运行中画质切换\n\n实现内容:\n- 实时显示本次远程会话时长并在停止后固定结果\n- 允许用户在网络安全上限内手动升降画质\n- 分离用户目标、实际档位和网络可选上限\n- 兼容旧版信令服务透传画质确认状态\n\n验证:\n- npm test -- --run\n- npm run typecheck\n- npm run build\n- go test ./...\n- go test -race ./internal/agent ./internal/control ./internal/server\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T14:57:33+08:00"}],"HeadCommit":{"Sha1":"c79acc2b40569f37dce63b2a5a8c6c98a89811ca","Message":"feat(remote-preview): 支持会话计时和运行中画质切换\n\n实现内容:\n- 实时显示本次远程会话时长并在停止后固定结果\n- 允许用户在网络安全上限内手动升降画质\n- 分离用户目标、实际档位和网络可选上限\n- 兼容旧版信令服务透传画质确认状态\n\n验证:\n- npm test -- --run\n- npm run typecheck\n- npm run build\n- go test ./...\n- go test -race ./internal/agent ./internal/control ./internal/server\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T14:57:33+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/f4c066bad5372ac955a6ea4a5b6be1d5269bc12d...c79acc2b40569f37dce63b2a5a8c6c98a89811ca","Len":1}...
|
1788505088
|
Edit
Delete
|
|
27950
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"f4c066bad {"Commits":[{"Sha1":"f4c066bad5372ac955a6ea4a5b6be1d5269bc12d","Message":"perf(remote-preview): 优化触控移动链路延迟\n\n实现内容:\n- 将 move 拆分到无序零重传 DataChannel,边界与按键操作继续使用可靠有序通道\n- 在 renderer 和 Agent 双端丢弃、合并过时 move,避免丢包时队头阻塞\n- 增加控制通道积压、队列等待和 scrcpy 注入耗时统计\n- 将 control 包纳入 Agent build ID,确保协议改动触发设备端更新\n\n验证:\n- npm test -- --run\n- go test ./...\n- go test -race ./internal/agent ./internal/control\n- go vet ./...\n- npm run typecheck\n- npm run build\n- npx vitest run scripts/remote-access-release.test.mjs\n- 192.168.3.208 局域网 P2P 原画质人工测试约 10 分钟\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T14:11:30+08:00"}],"HeadCommit":{"Sha1":"f4c066bad5372ac955a6ea4a5b6be1d5269bc12d","Message":"perf(remote-preview): 优化触控移动链路延迟\n\n实现内容:\n- 将 move 拆分到无序零重传 DataChannel,边界与按键操作继续使用可靠有序通道\n- 在 renderer 和 Agent 双端丢弃、合并过时 move,避免丢包时队头阻塞\n- 增加控制通道积压、队列等待和 scrcpy 注入耗时统计\n- 将 control 包纳入 Agent build ID,确保协议改动触发设备端更新\n\n验证:\n- npm test -- --run\n- go test ./...\n- go test -race ./internal/agent ./internal/control\n- go vet ./...\n- npm run typecheck\n- npm run build\n- npx vitest run scripts/remote-access-release.test.mjs\n- 192.168.3.208 局域网 P2P 原画质人工测试约 10 分钟\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-04T14:11:30+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/519c56add73ca280a345ae5cac1b6a68c68fc292...f4c066bad5372ac955a6ea4a5b6be1d5269bc12d","Len":1}...
|
1788502334
|
Edit
Delete
|
|
27795
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"519c56add {"Commits":[{"Sha1":"519c56add73ca280a345ae5cac1b6a68c68fc292","Message":"perf(remote-preview): 抑制原画关键帧突发冻结\n\n针对原画档周期性大关键帧导致的发送阻塞:\n- 将原画目标码率从 8 Mbps 调整为 6 Mbps\n- 将视频队列扩展为 18 帧并增加 500 ms 媒体时长上限\n- 避免等待关键帧期间重复触发溢出恢复\n- 记录关键帧体积、队列溢出和慢 RTP 帧写入信息\n\n验证:\n- npm run typecheck\n- npm test -- --run\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- go test ./...\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T23:23:23+08:00"},{"Sha1":"86b8e7f744307892c4ffdecd67f4c2f06d57c9a2","Message":"perf(remote-preview): 降低视频冻结与恢复振荡\n\n优化 WebRTC 视频发送和诊断链路:\n- 使用 scrcpy PTS 生成显式 RTP 时间戳\n- 避免 PLI 和本地解码压力直接触发重启式恢复\n- 扩大短突发队列并限制 scrcpy 重启频率\n- 增加抖动缓冲、解码耗时和冻结统计\n\n验证:\n- npm run typecheck\n- npm test -- --run\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- go test ./...\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T22:34:06+08:00"}],"HeadCommit":{"Sha1":"519c56add73ca280a345ae5cac1b6a68c68fc292","Message":"perf(remote-preview): 抑制原画关键帧突发冻结\n\n针对原画档周期性大关键帧导致的发送阻塞:\n- 将原画目标码率从 8 Mbps 调整为 6 Mbps\n- 将视频队列扩展为 18 帧并增加 500 ms 媒体时长上限\n- 避免等待关键帧期间重复触发溢出恢复\n- 记录关键帧体积、队列溢出和慢 RTP 帧写入信息\n\n验证:\n- npm run typecheck\n- npm test -- --run\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- go test ./...\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T23:23:23+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/dec97acac475d4140ef0905872e8f84933c6a921...519c56add73ca280a345ae5cac1b6a68c68fc292","Len":2}...
|
1788451575
|
Edit
Delete
|
|
27794
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"dec97acac {"Commits":[{"Sha1":"dec97acac475d4140ef0905872e8f84933c6a921","Message":"perf(remote-preview): 优化 WebRTC 预览与触控流畅度\n\n优化远程预览关键链路:\n- 并行启动准备并准确记录首帧呈现时间\n- 修正入站流选择、解码压力和静止画面自适应判断\n- 缩短视频发送队列并采用渐进关键帧恢复\n- 对控制通道积压丢弃过时移动事件\n\n验证:\n- npm run typecheck\n- npm test\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- go test ./...\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T21:54:53+08:00"}],"HeadCommit":{"Sha1":"dec97acac475d4140ef0905872e8f84933c6a921","Message":"perf(remote-preview): 优化 WebRTC 预览与触控流畅度\n\n优化远程预览关键链路:\n- 并行启动准备并准确记录首帧呈现时间\n- 修正入站流选择、解码压力和静止画面自适应判断\n- 缩短视频发送队列并采用渐进关键帧恢复\n- 对控制通道积压丢弃过时移动事件\n\n验证:\n- npm run typecheck\n- npm test\n- GOCACHE=/private/tmp/juhai-go-build-cache npm run build\n- go test ./...\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T21:54:53+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/8bccd9517663cfc13d2b5cdf83b0b7ba69dc0055...dec97acac475d4140ef0905872e8f84933c6a921","Len":1}...
|
1788443951
|
Edit
Delete
|
|
27793
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"8bccd9517 {"Commits":[{"Sha1":"8bccd9517663cfc13d2b5cdf83b0b7ba69dc0055","Message":"fix(remote-preview): 修复适应窗口画面裁剪\n\n适应窗口模式将媒体固定在播放器视口内,并使用 contain 按比例完整缩小,避免媒体固有尺寸溢出后被裁剪。\n\n同时补充模式切换提示,原始尺寸模式继续保留滚动查看。\n\n验证:\n- npm run typecheck\n- npm test -- src/features/remotePreview/RemotePreviewWorkspace.test.ts src/features/remotePreview/remoteControlProtocol.test.ts\n- npm run build\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T19:25:14+08:00"}],"HeadCommit":{"Sha1":"8bccd9517663cfc13d2b5cdf83b0b7ba69dc0055","Message":"fix(remote-preview): 修复适应窗口画面裁剪\n\n适应窗口模式将媒体固定在播放器视口内,并使用 contain 按比例完整缩小,避免媒体固有尺寸溢出后被裁剪。\n\n同时补充模式切换提示,原始尺寸模式继续保留滚动查看。\n\n验证:\n- npm run typecheck\n- npm test -- src/features/remotePreview/RemotePreviewWorkspace.test.ts src/features/remotePreview/remoteControlProtocol.test.ts\n- npm run build\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T19:25:14+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/95b0fd5bf5c728cdce74ad170f5f230b630a0b23...8bccd9517663cfc13d2b5cdf83b0b7ba69dc0055","Len":1}...
|
1788434727
|
Edit
Delete
|
|
27784
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"95b0fd5bf {"Commits":[{"Sha1":"95b0fd5bf5c728cdce74ad170f5f230b630a0b23","Message":"feat(remote-access): 实现 WebRTC 远程触控\n\n实现内容:\n- 增加可靠有序的远程控制 DataChannel 和版本化控制协议\n- 接入 scrcpy 视频与控制双通道,支持单触点和最近任务\n- 修复竖屏坐标、滑出画面触点残留及断线释放\n- 更新 Agent 发布能力、兼容校验和自动测试\n\n验证:\n- npm run typecheck\n- npm test\n- npm run build\n- cd remote-access \u0026\u0026 go test ./...\n- cd remote-access \u0026\u0026 go vet ./...\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T19:12:47+08:00"}],"HeadCommit":{"Sha1":"95b0fd5bf5c728cdce74ad170f5f230b630a0b23","Message":"feat(remote-access): 实现 WebRTC 远程触控\n\n实现内容:\n- 增加可靠有序的远程控制 DataChannel 和版本化控制协议\n- 接入 scrcpy 视频与控制双通道,支持单触点和最近任务\n- 修复竖屏坐标、滑出画面触点残留及断线释放\n- 更新 Agent 发布能力、兼容校验和自动测试\n\n验证:\n- npm run typecheck\n- npm test\n- npm run build\n- cd remote-access \u0026\u0026 go test ./...\n- cd remote-access \u0026\u0026 go vet ./...\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T19:12:47+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/86a99cbf334287c059f8f655d15e8e9566ba694b...95b0fd5bf5c728cdce74ad170f5f230b630a0b23","Len":1}...
|
1788433986
|
Edit
Delete
|
|
27783
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"86a99cbf3 {"Commits":[{"Sha1":"86a99cbf334287c059f8f655d15e8e9566ba694b","Message":"feat(remote-access): 加固 Agent 发布与部署生命周期\n\n实现内容:\n- 增加可复现 Agent 构建身份和 ARMv7、ARM64 发布清单\n- 在创建云端会话前完成远端 SHA-256、版本、架构和能力校验\n- 增加同设备部署互斥、受控回滚、历史资源清理和非敏感 UI 诊断\n- 加强远程访问错误中的密钥引用、本机路径和 Token 脱敏\n\n验证:\n- npm run typecheck\n- npm test\n- npm run build\n- cd remote-access \u0026\u0026 go test ./...\n- cd remote-access \u0026\u0026 go vet ./...\n- git diff --check\n- 人工验证远程预览更新、复用、并行部署和会话释放\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T17:57:10+08:00"}],"HeadCommit":{"Sha1":"86a99cbf334287c059f8f655d15e8e9566ba694b","Message":"feat(remote-access): 加固 Agent 发布与部署生命周期\n\n实现内容:\n- 增加可复现 Agent 构建身份和 ARMv7、ARM64 发布清单\n- 在创建云端会话前完成远端 SHA-256、版本、架构和能力校验\n- 增加同设备部署互斥、受控回滚、历史资源清理和非敏感 UI 诊断\n- 加强远程访问错误中的密钥引用、本机路径和 Token 脱敏\n\n验证:\n- npm run typecheck\n- npm test\n- npm run build\n- cd remote-access \u0026\u0026 go test ./...\n- cd remote-access \u0026\u0026 go vet ./...\n- git diff --check\n- 人工验证远程预览更新、复用、并行部署和会话释放\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T17:57:10+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/40a27c05d0dc0263bb2dd24746ba07dc2075aa88...86a99cbf334287c059f8f655d15e8e9566ba694b","Len":1}...
|
1788430074
|
Edit
Delete
|
|
27702
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"40a27c05d {"Commits":[{"Sha1":"40a27c05d0dc0263bb2dd24746ba07dc2075aa88","Message":"fix(remote-access): 优先复用已有 SSH 密钥配置\n\n移除公网远程设置的新用户固定私钥默认值:\n- 首次使用时优先复用设备档案中的可用密钥,再使用应用密钥库条目\n- 支持密钥库 ID 与本机私钥路径两种互斥引用,从未配置时保持为空\n- 迁移旧 v2 固定默认路径,同时保留用户自定义路径和 v3 显式空值\n- 设置页增加密钥来源选择与本机文件选择入口,私钥解析仍限制在主进程\n\n验证:\n- npm run typecheck\n- npm test(567 项)\n- npm run build\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T17:02:51+08:00"}],"HeadCommit":{"Sha1":"40a27c05d0dc0263bb2dd24746ba07dc2075aa88","Message":"fix(remote-access): 优先复用已有 SSH 密钥配置\n\n移除公网远程设置的新用户固定私钥默认值:\n- 首次使用时优先复用设备档案中的可用密钥,再使用应用密钥库条目\n- 支持密钥库 ID 与本机私钥路径两种互斥引用,从未配置时保持为空\n- 迁移旧 v2 固定默认路径,同时保留用户自定义路径和 v3 显式空值\n- 设置页增加密钥来源选择与本机文件选择入口,私钥解析仍限制在主进程\n\n验证:\n- npm run typecheck\n- npm test(567 项)\n- npm run build\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T17:02:51+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/dc76bdf38e10321f0610a2e84be507131e207365...40a27c05d0dc0263bb2dd24746ba07dc2075aa88","Len":1}...
|
1788426259
|
Edit
Delete
|
|
27683
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"dc76bdf38 {"Commits":[{"Sha1":"dc76bdf38e10321f0610a2e84be507131e207365","Message":"test(terminal): 稳定 SSH 自动重连时序断言\n\n将固定 5 毫秒等待改为带上限的条件等待,避免全量并行测试负载下偶发失败。\n\n验证:\n- npm test\n- npm run typecheck\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T16:23:09+08:00"},{"Sha1":"6b89c495f606c787fc74c49051113c4b6f25f5a9","Message":"fix(remote-preview): 按窗口计算浏览器解码压力\n\n修复累计 WebRTC 帧计数长期污染自适应判断的问题:\n- 以相邻反馈点增量计算当前窗口解码压力\n- 明确累计丢帧展示,并在坏窗口出现时退出恢复观察状态\n- 补充历史缺口、窗口压力和状态切换测试\n\n验证:\n- npm run typecheck\n- npm test\n- npm run build\n- cd remote-access \u0026\u0026 go test ./...\n- cd remote-access \u0026\u0026 go vet ./...\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T16:22:50+08:00"},{"Sha1":"f98d14fa5de8f13ffaf38490771729c1b30b77c0","Message":"feat(remote-preview): 增加弱网自适应与关键帧恢复\n\n实现内容:\n- 增加版本化网络反馈和窗口增量丢包统计\n- 使用迟滞与冷却控制真实 scrcpy 编码档位重启\n- 处理 PLI、FIR、持续 NACK 和有界视频发送队列\n- 区分用户画质上限与当前有效编码参数\n\n验证:\n- npm run typecheck\n- npm test(557 项)\n- npm run build\n- cd remote-access \u0026\u0026 go test ./...\n- cd remote-access \u0026\u0026 go vet ./...\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T15:48:56+08:00"},{"Sha1":"c3f3a11d956b69ed393e1c321a3e8f1d54d80140","Message":"fix(electron): 阻止关闭操作台后启动预览回退\n\n修复操作台确认关闭期间,云端会话释放事件触发 renderer 启动 SSH 回退,并被立即重开的窗口复用的问题。\n\n实现内容:\n- 关闭阶段拒绝创建新的远程预览资源\n- 同一设备复用唯一资源清理任务\n- 重新打开操作台前等待旧窗口最终清理完成\n- 同步覆盖设备删除和应用退出期间的预览启动请求\n\n验证:\n- npm run typecheck\n- npm test(552 项)\n- npm run build\n- git diff --cached --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T15:25:16+08:00"},{"Sha1":"ceb4dcf5431d382dc044c37f9cf71a98cb219ab8","Message":"fix(remote-preview): 忽略主动停止的视频播放中断\n\n修复首帧出现后立即停止时 video.play() 与 pause() 竞争产生的误报。\n\n实现内容:\n- 仅忽略旧会话、已替换媒体流和标准 AbortError\n- 保留自动播放限制与不支持格式等真实播放错误\n- 增加 Chromium pause 和新加载中断文案测试\n\n验证:\n- npm run typecheck\n- npm test(550 项)\n- npm run build\n- git diff --cached --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T15:17:59+08:00"}],"HeadCommit":{"Sha1":"dc76bdf38e10321f0610a2e84be507131e207365","Message":"test(terminal): 稳定 SSH 自动重连时序断言\n\n将固定 5 毫秒等待改为带上限的条件等待,避免全量并行测试负载下偶发失败。\n\n验证:\n- npm test\n- npm run typecheck\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T16:23:09+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/c089081d281339010876430a95c40118f69b2ce9...dc76bdf38e10321f0610a2e84be507131e207365","Len":6}...
|
1788425164
|
Edit
Delete
|
|
27636
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"c089081d2 {"Commits":[{"Sha1":"c089081d281339010876430a95c40118f69b2ce9","Message":"feat(remote-access): 统一派生公网操作员 Token\n\n实现内容:\n- 从所有设备共用的 SSH 私钥确定性派生操作员 Token\n- 设置与 renderer 只保存和展示私钥路径,不持久化 Token\n- 部署脚本要求首次安装显式提供派生 Token 并保留既有秘密\n\n验证:\n- npm run typecheck\n- npm test(542 项)\n- npm run build\n- bash -n deploy/remote-access/install-server.sh\n- git diff --cached --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T14:51:30+08:00"},{"Sha1":"708253bd9b956e67945c9da7057fba717ec9de2b","Message":"fix(build): 避免开发模式复用旧版 Agent\n\n修复内容:\n- 在 npm run dev 前增量校验远程访问构建产物\n- 根据 Go 源码与构建脚本指纹按需重新编译\n- 使用临时文件成功构建后再原子替换现有产物\n- 更新 README 中的开发启动说明\n\n验证:\n- npm run predev 首次重建并在第二次正确跳过\n- npm test\n- npm run build\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T14:40:45+08:00"}],"HeadCommit":{"Sha1":"c089081d281339010876430a95c40118f69b2ce9","Message":"feat(remote-access): 统一派生公网操作员 Token\n\n实现内容:\n- 从所有设备共用的 SSH 私钥确定性派生操作员 Token\n- 设置与 renderer 只保存和展示私钥路径,不持久化 Token\n- 部署脚本要求首次安装显式提供派生 Token 并保留既有秘密\n\n验证:\n- npm run typecheck\n- npm test(542 项)\n- npm run build\n- bash -n deploy/remote-access/install-server.sh\n- git diff --cached --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T14:51:30+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/b495009b33c967294de2d9540af33e04dfb7fce8...c089081d281339010876430a95c40118f69b2ce9","Len":2}...
|
1788418409
|
Edit
Delete
|
|
27590
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b495009b3 {"Commits":[{"Sha1":"b495009b33c967294de2d9540af33e04dfb7fce8","Message":"feat(remote-preview): 增加选路诊断与断线恢复\n\n实现内容:\n- 增加自动与强制 TURN 选路,并保持画质档位独立\n- 展示局域网 P2P、公网 P2P、候选对和 WebRTC 性能指标\n- 增加 ICE restart 协商与十二秒断线恢复窗口\n- 补充 Electron、renderer、Agent 和信令服务测试\n\n验证:\n- npm test\n- npm run typecheck\n- npm run build\n- go test ./...\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T13:28:13+08:00"},{"Sha1":"f4c464548b0cc9f06b062a295482211f0fde1d83","Message":"fix(remote-preview): 修复 WebRTC 设备建链与采集启动\n\n实现内容:\n- 修复 Agent 后台启动命令、设备 DNS 解析和 Android 系统 CA 加载\n- 使用绝对 app_process 路径启动 scrcpy,兼容 32 位与 64 位设备\n- 完善 P2P、TURN 与 SSH 回退展示,并保留完整回退原因\n- 增加 ICE 候选、连接状态和 Agent 退出日志诊断\n- 补充启动阶段、选路识别和设备网络兼容测试\n\n验证:\n- npm run typecheck\n- npm test(77 个测试文件,533 项测试)\n- go test ./...\n- go vet ./...\n- npm run build\n- 同网、手机热点和首次部署设备实测均建立 WebRTC P2P,首帧约 5 至 7 秒\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T11:59:15+08:00"}],"HeadCommit":{"Sha1":"b495009b33c967294de2d9540af33e04dfb7fce8","Message":"feat(remote-preview): 增加选路诊断与断线恢复\n\n实现内容:\n- 增加自动与强制 TURN 选路,并保持画质档位独立\n- 展示局域网 P2P、公网 P2P、候选对和 WebRTC 性能指标\n- 增加 ICE restart 协商与十二秒断线恢复窗口\n- 补充 Electron、renderer、Agent 和信令服务测试\n\n验证:\n- npm test\n- npm run typecheck\n- npm run build\n- go test ./...\n- go vet ./...\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-03T13:28:13+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/b637c340912deca3578f1992bea76defd8d015cb...b495009b33c967294de2d9540af33e04dfb7fce8","Len":2}...
|
1788413350
|
Edit
Delete
|
|
27543
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b637c3409 {"Commits":[{"Sha1":"b637c340912deca3578f1992bea76defd8d015cb","Message":"docs(remote-access): 记录 WebRTC 与 SSH 混合架构\n\n实现内容:\n- 说明 P2P 优先、TURN 回退和 SSH 运维兜底的架构边界\n- 记录同仓库存放与独立部署的迁移策略\n- 补充服务器容量、四档画质、安全要求和阶段验收状态\n\n验证:\n- 文档参数已与当前代码、云端部署和测试设备验证结果核对\n- git diff --cached --check\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-03T00:09:31+08:00"},{"Sha1":"b49deb9b2f8f6827ab2c837957739189a9a68df2","Message":"feat(remote-preview): 集成 WebRTC 预览与 SSH 回退\n\n实现内容:\n- 在 Electron main 中安全保存操作员 Token并创建短期远程会话\n- 通过 SSH 探测设备 ABI、部署临时 Agent,并优先建立 WebRTC P2P/TURN 视频链路\n- WebRTC 失败时自动回退现有 SSH 预览并完整清理设备资源\n- 增加连接路径展示和流畅、标准、高清、原画四档画质\n\n验证:\n- npm run typecheck\n- npm test(77 个测试文件,519 个测试)\n- npm run build\n- android-box-online ARMv7 Agent 校验与可执行探测通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-03T00:08:33+08:00"},{"Sha1":"e8f390ce3bea89d9580616a9818540f17ea01f84","Message":"feat(remote-access): 实现 WebRTC 信令服务与设备 Agent\n\n实现内容:\n- 新增短期会话、WSS 信令和 coturn REST 临时凭据服务\n- 新增 ARMv7/ARM64 H.264 WebRTC Agent 与跨平台构建脚本\n- 新增可迁移的 Nginx、coturn 和 systemd 部署资产\n\n验证:\n- go test ./...\n- go vet ./...\n- npm run build\n- 云端会话 API、TURN UDP 与 TURN TLS 分配验证通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-03T00:07:50+08:00"}],"HeadCommit":{"Sha1":"b637c340912deca3578f1992bea76defd8d015cb","Message":"docs(remote-access): 记录 WebRTC 与 SSH 混合架构\n\n实现内容:\n- 说明 P2P 优先、TURN 回退和 SSH 运维兜底的架构边界\n- 记录同仓库存放与独立部署的迁移策略\n- 补充服务器容量、四档画质、安全要求和阶段验收状态\n\n验证:\n- 文档参数已与当前代码、云端部署和测试设备验证结果核对\n- git diff --cached --check\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-09-03T00:09:31+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/e993301f4b18f33623e788ea69c1ba5388b94031...b637c340912deca3578f1992bea76defd8d015cb","Len":3}...
|
1788400422
|
Edit
Delete
|
|
27534
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"e993301f4 {"Commits":[{"Sha1":"e993301f4b18f33623e788ea69c1ba5388b94031","Message":"feat(app): 实现触摸屏只读实时预览\n\n在设备操作台中增加基于 SSH 的实时预览第一期能力。\n\n实现内容:\n- 动态部署并清理 scrcpy 服务端,通过安全 IPC 转发 H.264 视频流\n- 使用 WebCodecs 和 Canvas 渲染画面,支持原始尺寸与全屏查看\n- 提供高清、标准和流畅三档画质,并按设备档案保存默认选择\n- 复用截图朝向规则,补齐 Android 11 Runtime 环境兼容\n- 将预览会话纳入窗口关闭、设备修改和应用退出清理流程\n\n验证:\n- npm run typecheck\n- npm test -- --run(74 个测试文件、510 项测试)\n- npm run build\n- 局域网与公网链路实机预览通过\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-02T18:48:34+08:00"},{"Sha1":"3182b804c67cfe47bfcf5a8d948c424acc43b0c5","Message":"feat(devices): 重做应用重启弹窗并改为只校验进程\n\n通用确认框和进度日志列表无法表达“只重启业务应用、设备保持在线”,\n也把日志扫描结果和进程校验混在一起。\n\n实现内容:\n- 新增独立确认/进度弹窗:工作区色机箱叠标题板、主面板和操作台\n- 进度按发送命令、等待拉起、校验进程三阶段展示,并保留可折叠过程记录\n- 重启后只检查目标进程数量,不再扫描最近日志;日志字段保留兼容\n- 同步 MCP 工具说明、帮助文案和校验结果类型注释\n\n验证:\n- npm run typecheck\n- npx vitest run src/features/devices/appRestartPresentation.test.ts src/features/help/helpContent.test.ts electron/agent/mcpServer.test.ts\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-02T17:29:27+08:00"}],"HeadCommit":{"Sha1":"e993301f4b18f33623e788ea69c1ba5388b94031","Message":"feat(app): 实现触摸屏只读实时预览\n\n在设备操作台中增加基于 SSH 的实时预览第一期能力。\n\n实现内容:\n- 动态部署并清理 scrcpy 服务端,通过安全 IPC 转发 H.264 视频流\n- 使用 WebCodecs 和 Canvas 渲染画面,支持原始尺寸与全屏查看\n- 提供高清、标准和流畅三档画质,并按设备档案保存默认选择\n- 复用截图朝向规则,补齐 Android 11 Runtime 环境兼容\n- 将预览会话纳入窗口关闭、设备修改和应用退出清理流程\n\n验证:\n- npm run typecheck\n- npm test -- --run(74 个测试文件、510 项测试)\n- npm run build\n- 局域网与公网链路实机预览通过\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-02T18:48:34+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/7216f8387f24304288cc07ab9070d3c91bd6c3da...e993301f4b18f33623e788ea69c1ba5388b94031","Len":2}...
|
1788346149
|
Edit
Delete
|
|
27528
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"7216f8387 {"Commits":[{"Sha1":"7216f8387f24304288cc07ab9070d3c91bd6c3da","Message":"feat(devices): 增强双屏截图与朝向修正\n\n实现内容:\n- 为全屏截图增加触摸屏、TV 屏及双屏选择\n- 增加可选的触摸屏截图朝向自动修正,并仅处理 90 与 -90 配置\n- 优化截图加载反馈、结果提示和二级菜单鼠标移动体验\n\n验证:\n- npm run typecheck\n- npm test(70 个测试文件,496 项测试)\n- npm run build\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-02T16:49:30+08:00"}],"HeadCommit":{"Sha1":"7216f8387f24304288cc07ab9070d3c91bd6c3da","Message":"feat(devices): 增强双屏截图与朝向修正\n\n实现内容:\n- 为全屏截图增加触摸屏、TV 屏及双屏选择\n- 增加可选的触摸屏截图朝向自动修正,并仅处理 90 与 -90 配置\n- 优化截图加载反馈、结果提示和二级菜单鼠标移动体验\n\n验证:\n- npm run typecheck\n- npm test(70 个测试文件,496 项测试)\n- npm run build\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-02T16:49:30+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/4580f2b6058140461e21b226a276bd2451c6848c...7216f8387f24304288cc07ab9070d3c91bd6c3da","Len":1}...
|
1788339007
|
Edit
Delete
|
|
27483
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"4580f2b60 {"Commits":[{"Sha1":"4580f2b6058140461e21b226a276bd2451c6848c","Message":"feat(devices): 实现设备全屏截图与加载反馈\n\n新增设备端全屏截图、可选本地保存目录和首次使用设置引导。\n\n实现内容:\n- 通过 Electron 主进程和 preload bridge 执行截图与文件下载\n- 增加 SSH 端口快速探测,缩短离线设备失败等待时间\n- 为截图中的设备卡片增加蒙版、加载动画和重复操作保护\n- 增加截图服务单元测试与响应式设置样式\n\n验证:\n- npm run typecheck\n- npm test(67 个文件,477 项测试)\n- npm run build\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-02T15:42:04+08:00"}],"HeadCommit":{"Sha1":"4580f2b6058140461e21b226a276bd2451c6848c","Message":"feat(devices): 实现设备全屏截图与加载反馈\n\n新增设备端全屏截图、可选本地保存目录和首次使用设置引导。\n\n实现内容:\n- 通过 Electron 主进程和 preload bridge 执行截图与文件下载\n- 增加 SSH 端口快速探测,缩短离线设备失败等待时间\n- 为截图中的设备卡片增加蒙版、加载动画和重复操作保护\n- 增加截图服务单元测试与响应式设置样式\n\n验证:\n- npm run typecheck\n- npm test(67 个文件,477 项测试)\n- npm run build\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-09-02T15:42:04+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/8bb55651291d9621d16bfdb9bf3eb8ead642219d...4580f2b6058140461e21b226a276bd2451c6848c","Len":1}...
|
1788335682
|
Edit
Delete
|
|
26862
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"8bb556512 {"Commits":[{"Sha1":"8bb55651291d9621d16bfdb9bf3eb8ead642219d","Message":"fix(logs): 修复 JSON 弹窗拉伸后误关闭\n\n操作台日志页的 JSON 查看弹窗允许右下角拉伸。放大时鼠标会离开弹窗落到遮罩上,原先用 click 关闭会把这次松手当成点遮罩,导致弹窗被误关。\n\n实现内容:\n- 调整 React 弹窗遮罩 ModalBackdrop 的关闭判定\n- 将 click 改为 pointerdown,仅在遮罩空白处按下主键时关闭\n- 点遮罩、Escape 和关闭按钮仍可关闭弹窗\n\n验证:\n- npm run typecheck\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-31T14:37:44+08:00"}],"HeadCommit":{"Sha1":"8bb55651291d9621d16bfdb9bf3eb8ead642219d","Message":"fix(logs): 修复 JSON 弹窗拉伸后误关闭\n\n操作台日志页的 JSON 查看弹窗允许右下角拉伸。放大时鼠标会离开弹窗落到遮罩上,原先用 click 关闭会把这次松手当成点遮罩,导致弹窗被误关。\n\n实现内容:\n- 调整 React 弹窗遮罩 ModalBackdrop 的关闭判定\n- 将 click 改为 pointerdown,仅在遮罩空白处按下主键时关闭\n- 点遮罩、Escape 和关闭按钮仍可关闭弹窗\n\n验证:\n- npm run typecheck\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-31T14:37:44+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/0dd229392358882382dd6ea0d83488e868d8ca27...8bb55651291d9621d16bfdb9bf3eb8ead642219d","Len":1}...
|
1788158429
|
Edit
Delete
|
|
26803
|
16
|
5
|
16
|
92
|
0
|
0
|
refs/heads/feat/control-plane-integration
|
1
|
{"Commits":[{"Sha1":"0b971bcd4 {"Commits":[{"Sha1":"0b971bcd460dce801591f038077501d28c6d8d11","Message":"feat(desktop): 优化会话列表折叠与侧栏拖动\n\n实现内容:\n- 将项目外会话归入最近列表,并支持独立展开收起\n- 项目会话列表与最近列表使用同一套折叠交互,并加入展开收起动画\n- 会话列表支持拖动调宽,限制在 200px 至 480px\n- 右侧工作详情改为过渡出现,避免直接弹出\n- 仅会话保留选中态,项目行不再同时高亮\n\n验证:\n- npm run typecheck\n- git diff --check\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T23:08:44+08:00"}],"HeadCommit":{"Sha1":"0b971bcd460dce801591f038077501d28c6d8d11","Message":"feat(desktop): 优化会话列表折叠与侧栏拖动\n\n实现内容:\n- 将项目外会话归入最近列表,并支持独立展开收起\n- 项目会话列表与最近列表使用同一套折叠交互,并加入展开收起动画\n- 会话列表支持拖动调宽,限制在 200px 至 480px\n- 右侧工作详情改为过渡出现,避免直接弹出\n- 仅会话保留选中态,项目行不再同时高亮\n\n验证:\n- npm run typecheck\n- git diff --check\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T23:08:44+08:00"},"CompareURL":"pengzhiyu/juhai-agent-desktop/compare/f96b235c8d1be7df3ed967725acdfc622031eb81...0b971bcd460dce801591f038077501d28c6d8d11","Len":1}...
|
1788102662
|
Edit
Delete
|
|
26802
|
16
|
5
|
16
|
92
|
0
|
0
|
refs/heads/feat/control-plane-integration
|
1
|
{"Commits":[{"Sha1":"f96b235c8 {"Commits":[{"Sha1":"f96b235c8d1be7df3ed967725acdfc622031eb81","Message":"feat(desktop): 接入 GPT 模型与 Codex 会话\n\n实现内容:\n- 将普通聊天切换为 Codex App Server\n- 为本地会话持久化 Codex Thread ID\n- 接入 GPT-5.6 Sol、Terra、Luna 和动态思考深度选择\n- 更新 JUHAI 模型设置与运行状态展示\n\n验证:\n- npm run typecheck\n- npm run build\n- macOS Electron 界面检查\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T22:29:50+08:00"},{"Sha1":"b0e051a64b1f6ca428d0342afb4715f089d18313","Message":"feat(runtime): 接入 Codex App Server 对话主链路\n\n实现内容:\n- 使用固定 Codex 版本生成并引入 App Server TypeScript 协议类型\n- 接入 thread start/resume、turn start/interrupt 和流式事件处理\n- 增加命令与文件修改审批,并保留显式 GLM 回退链路\n- 将项目目录、GPT 模型和思考深度传入 Codex turn\n\n验证:\n- npm run typecheck\n- npm run build\n- GPT-5.6 Sol App Server V2 真实对话\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T22:29:08+08:00"},{"Sha1":"c80256d577efe53349daf44e55fff0c3b81f1dac","Message":"docs(plan): 记录三仓联调与验收进展\n\n实现内容:\n- 更新三仓试点分支、联调端口与阶段状态\n- 记录 GLM 对话、控制平面 Tool Calling 和报价链路验收结果\n- 补充后续批次与未完成事项\n\n验证:\n- 检查 Markdown 差异和提交边界\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T22:28:12+08:00"},{"Sha1":"7e506063c1f6e504a4e6621fe4c4bdd9c9f66e16","Message":"chore(git): 忽略本地临时目录\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T22:26:39+08:00"}],"HeadCommit":{"Sha1":"f96b235c8d1be7df3ed967725acdfc622031eb81","Message":"feat(desktop): 接入 GPT 模型与 Codex 会话\n\n实现内容:\n- 将普通聊天切换为 Codex App Server\n- 为本地会话持久化 Codex Thread ID\n- 接入 GPT-5.6 Sol、Terra、Luna 和动态思考深度选择\n- 更新 JUHAI 模型设置与运行状态展示\n\n验证:\n- npm run typecheck\n- npm run build\n- macOS Electron 界面检查\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T22:29:50+08:00"},"CompareURL":"pengzhiyu/juhai-agent-desktop/compare/0067cfab73f714ab76cf495f2900a0041a15dd8c...f96b235c8d1be7df3ed967725acdfc622031eb81","Len":4}...
|
1788100254
|
Edit
Delete
|
|
26801
|
16
|
5
|
16
|
92
|
0
|
0
|
refs/heads/feat/control-plane-integration
|
1
|
{"Commits":[{"Sha1":"0067cfab7 {"Commits":[{"Sha1":"0067cfab73f714ab76cf495f2900a0041a15dd8c","Message":"feat(desktop): 按 Codex Desktop 重做工作区界面\n\n实现内容:\n- 建立项目对话与普通对话并存的侧栏导航,仅会话保留选中态\n- 重做聊天画布、欢迎页和底部输入器,并提供模型、权限与技能入口\n- 将右侧工作详情改为占用布局的浮动检查器,支持左右栏独立收起\n- 当前聊天仍使用 GLM 5.3 Flash,Codex 模型仅只读展示\n\n验证:\n- 执行 npm run typecheck,类型检查通过\n- 执行 npm run build,桌面应用构建通过\n- 执行 git diff --cached --check,检查通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T21:23:49+08:00"},{"Sha1":"92082b3f30d821cb4de716c14986fd4e4e2b3362","Message":"chore(desktop): 忽略桌面 UI 参考截图\n\n实现内容:\n\n- 将 `docs/images/` 加入 Git 忽略规则,避免 Codex 桌面参考截图进入仓库。\n\n验证:\n\n- 核对 `.gitignore` 包含 `docs/images/`。\n- `git diff --cached --check`\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T21:23:37+08:00"},{"Sha1":"af725a29d76fca02a7aae3aa43bb76817a3db687","Message":"feat(desktop): 接入 Codex 项目工作区与 App Server 基础\n\n实现内容:\n\n- 新增 Codex App Server 侧车进程、JSON-RPC 生命周期与安全 IPC 接口。\n- 建立项目工作区、项目内会话、模型技能目录和 Agent 运行时界面。\n- 记录 Juhai 与 Codex 的架构边界及后续实施顺序。\n- 保留现有 GLM 聊天链路作为迁移期间的回退。\n\n验证:\n\n- `npm run typecheck`\n- `npm run build`\n- `git diff --check`\n- 实机连接 `codex-cli` 0.146.0,读取 5 个模型和 19 个技能。\n- 验证旧版缺少 `project/list` 时降级使用 Juhai 工作区。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T20:00:38+08:00"}],"HeadCommit":{"Sha1":"0067cfab73f714ab76cf495f2900a0041a15dd8c","Message":"feat(desktop): 按 Codex Desktop 重做工作区界面\n\n实现内容:\n- 建立项目对话与普通对话并存的侧栏导航,仅会话保留选中态\n- 重做聊天画布、欢迎页和底部输入器,并提供模型、权限与技能入口\n- 将右侧工作详情改为占用布局的浮动检查器,支持左右栏独立收起\n- 当前聊天仍使用 GLM 5.3 Flash,Codex 模型仅只读展示\n\n验证:\n- 执行 npm run typecheck,类型检查通过\n- 执行 npm run build,桌面应用构建通过\n- 执行 git diff --cached --check,检查通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T21:23:49+08:00"},"CompareURL":"pengzhiyu/juhai-agent-desktop/compare/7d6ff2bc19598ac1f04a78e5dd3fe2b1600bc358...0067cfab73f714ab76cf495f2900a0041a15dd8c","Len":3}...
|
1788096511
|
Edit
Delete
|
|
26800
|
16
|
5
|
16
|
92
|
0
|
0
|
refs/heads/feat/control-plane-integration
|
1
|
{"Commits":[{"Sha1":"7d6ff2bc1 {"Commits":[{"Sha1":"7d6ff2bc19598ac1f04a78e5dd3fe2b1600bc358","Message":"feat(desktop): 恢复控制平面任务结果\n\n实现内容:\n\n- 新增受限的任务 Runtime 结果 IPC,并校验任务标识。\n- 已完成任务在桌面端恢复结果,运行中任务定时刷新任务状态和事件。\n- 补充开源 Codex 架构与许可证适配分析文档。\n\n验证:\n\n- `npm run typecheck`\n- `npm run build`\n- `git diff --cached --check`\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T19:03:49+08:00"},{"Sha1":"daf1fbb473a8aa37c85254c8e6f7f9f271a712a0","Message":"docs(desktop): 补充 GLM 与本地联调说明\n\n实现内容:\n\n- 记录 GLM 流式配置、思考深度选项与本地安全存储约定\n- 记录控制平面、数字员工前端和报价系统前后端的本地联调地址\n- 明确当前报价能力为只读查询,报价草稿写入仍未实现\n\n验证:\n\n- 执行 `git diff --cached --check`,暂存差异检查通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:28:25+08:00"},{"Sha1":"e7f2e44358a1bf62b52fef160748366db1e18c4e","Message":"feat(desktop): 接入 GLM 流式对话与控制平面任务执行\n\n实现内容:\n\n- 接入 GLM 5.3 Flash 配置、思考深度选择与 SSE 流式会话\n- 接入控制平面远程只读任务,并支持安全取消本地模型请求\n- 归一化任务结果并将报价信息整理为普通员工可读的中文摘要\n\n验证:\n\n- 执行 `npm run typecheck`,类型检查通过\n- 执行 `npm run build`,桌面应用构建通过\n- 执行 `git diff --check`,检查通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:27:36+08:00"},{"Sha1":"63a02249246072d314e5f0ff8d93f66affaecdb9","Message":"feat(desktop): 接入控制平面任务只读界面\n\n实现内容:\n\n- 增加固定 Actor、Task 和 Task Event 路由的受限控制平面客户端\n- 支持本地租户与 Bearer 开发会话,并通过 Electron `safeStorage` 保存访问令牌\n- 增加控制平面连接状态、Actor 切换、任务摘要和持久事件时间线界面\n- 限制远程地址协议、响应体大小和列表数量,避免 Renderer 发起任意远程请求\n\n验证:\n\n- 执行 `npm run typecheck`,类型检查通过\n- 执行 `npm run build`,桌面应用构建通过\n- 执行 `git diff --check`,检查通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T11:51:10+08:00"},{"Sha1":"e8f764ed19b3dfcfafb751df109fd44772dfaa0d","Message":"docs(plan): 固化首期本地试点执行口径\n\n实现内容:\n\n- 记录两个企业内部 Fork 的固定基线、检出状态和本地联调入口\n- 明确本地测试账号、Docker 依赖、最少测试数据和报价草稿人工确认要求\n- 补充首批报价知识来源、跨仓任务交付流程和桌面端批次进展\n\n验证:\n\n- 核对两份方案文档的启动条件与用户确认内容一致\n- 执行 `git diff --cached --check`,检查通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T11:50:38+08:00"}],"HeadCommit":{"Sha1":"7d6ff2bc19598ac1f04a78e5dd3fe2b1600bc358","Message":"feat(desktop): 恢复控制平面任务结果\n\n实现内容:\n\n- 新增受限的任务 Runtime 结果 IPC,并校验任务标识。\n- 已完成任务在桌面端恢复结果,运行中任务定时刷新任务状态和事件。\n- 补充开源 Codex 架构与许可证适配分析文档。\n\n验证:\n\n- `npm run typecheck`\n- `npm run build`\n- `git diff --cached --check`\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T19:03:49+08:00"},"CompareURL":"","Len":10}...
|
1788088191
|
Edit
Delete
|
|
26799
|
16
|
5
|
16
|
92
|
0
|
0
|
refs/heads/feat/control-plane-integration
|
1
|
|
1788088191
|
Edit
Delete
|
|
26798
|
16
|
1
|
16
|
92
|
0
|
0
|
|
1
|
|
1788088113
|
Edit
Delete
|
|
26797
|
16
|
5
|
16
|
89
|
0
|
0
|
refs/heads/feat/agent-connector-read-api
|
0
|
{"Commits":[{"Sha1":"39edae8a9 {"Commits":[{"Sha1":"39edae8a93e2802b09b2b9c1815c0c6b8cc37e48","Message":"chore(git): 忽略 IDE 项目文件\n\n实现内容:\n\n- 在 `.gitignore` 增加 `.idea` 目录规则,排除 JetBrains 本地项目元数据。\n- 保持其余忽略规则和功能提交边界不变。\n\n验证:\n\n- `git check-ignore -v --stdin` 确认 `.idea/workspace.xml` 与 `.idea/modules.xml` 均命中新增规则。\n- 历史改写前执行 `git diff --check` 通过,工作区与暂存区均为空。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T12:01:47+08:00"},{"Sha1":"44a5ffe52d9f6eb259d0860604a3104aa21f1ab4","Message":"chore(reports): 刷新 Agent Connector 验收报告\n\n实现内容:\n\n- 刷新 22 份 `reports/*.latest.json`,记录本地 runtime、迁移与治理检查结果。\n- 保留既有 `approvalPayloadContractViolations=1`,并将报告限定为绑定 dirty worktree 的本地证据。\n\n验证:\n\n- `runtime-acceptance.latest.json` 记录 573/573,contracts 445、NestJS 62、Fastify 66,迁移 deploy/status 无失败。\n- 22 份 latest 报告均通过 `jq -e` JSON 解析检查,governance 中既有 violation 已复核为 1。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T11:56:53+08:00"},{"Sha1":"20ebc407598e39469546c9af5eb0861937542bf8","Message":"docs(agent-connector): 记录资源服务器领域边界\n\n实现内容:\n\n- 新增 Agent Connector 蓝图,记录只读 API、信任边界、窄投影、限流和非目标。\n- 在 owner matrix 登记无表窄读模型,明确 Connector 直接执行 tenant-scoped Prisma 查询且不虚构源域读服务。\n\n验证:\n\n- 文档事实复核确认 Quotation 投影来自 Connector 窄读模型,不经过写服务或不存在的读服务。\n- 最终文档工作区执行 `git diff --check` 与 `pnpm check:runtime` 均通过,运行态用例为 573/573。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T11:55:54+08:00"},{"Sha1":"d177c958eecde9b63edf166b483941e7bdfcc15e","Message":"test(agent-connector): 增加双后端运行与对等验收\n\n实现内容:\n\n- 为双后端真实 HTTP acceptance 增加五端点成功、400、401、403、404、429、受控 500、跨租户和 requestId 边界场景。\n- 增加黑盒 parity harness 与 `check:agent-parity` 脚本,归一化动态字段后比较两端状态码、错误结构和业务投影。\n\n验证:\n\n- 隔离 PostgreSQL、Redis 与 MinIO 环境执行 `pnpm check:runtime` 通过 573/573。\n- 黑盒 parity 实际通过五端点 200 及 400、401、403、404、429;受控 500 由双后端 acceptance 覆盖,409 由翻译层测试覆盖。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T11:55:12+08:00"},{"Sha1":"c091df374f28b8d3d246be8a164307a36f424d23","Message":"feat(web): 复用报价工作台 Hash 深链接规则\n\n实现内容:\n\n- 将 Web 根页面的工作台跳转改为消费 contracts 提供的 `buildWorkspaceHash`。\n- 统一报价深链接与 `quote-inbox` 工作台的 `focus` 定位规则,移除页面内重复拼接实现。\n\n验证:\n\n- Agent Connector contracts 定向测试 9/9 通过,并覆盖工作台 Hash 生成规则。\n- 最终提交前工作区执行 `git diff --check` 通过。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T11:54:28+08:00"}],"HeadCommit":{"Sha1":"39edae8a93e2802b09b2b9c1815c0c6b8cc37e48","Message":"chore(git): 忽略 IDE 项目文件\n\n实现内容:\n\n- 在 `.gitignore` 增加 `.idea` 目录规则,排除 JetBrains 本地项目元数据。\n- 保持其余忽略规则和功能提交边界不变。\n\n验证:\n\n- `git check-ignore -v --stdin` 确认 `.idea/workspace.xml` 与 `.idea/modules.xml` 均命中新增规则。\n- 历史改写前执行 `git diff --check` 通过,工作区与暂存区均为空。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T12:01:47+08:00"},"CompareURL":"pengzhiyu/juhai-quotation-system/compare/125c54d328d3da221b5d91c0a2dd0475712c6e96...39edae8a93e2802b09b2b9c1815c0c6b8cc37e48","Len":7}...
|
1788087354
|
Edit
Delete
|
|
26796
|
16
|
5
|
16
|
89
|
0
|
0
|
refs/heads/feat/agent-connector-read-api
|
0
|
|
1788087354
|
Edit
Delete
|
|
26795
|
16
|
5
|
16
|
88
|
0
|
0
|
refs/heads/feat/juhai-agent-control-plane
|
0
|
{"Commits":[{"Sha1":"4749f3df3 {"Commits":[{"Sha1":"4749f3df37316e72da7314c4151971c91e233575","Message":"chore(reports): 绑定最终治理文档迁移证据\n\n实现内容:\n- 将 migrations.latest.json 的 provenance 更新到最终治理文档提交。\n- 不改变迁移检查指标和通过结果。\n\n验证:\n- node scripts/check-migrations.mjs 再次通过。\n- camelCase 标量与关系判定负向探针 2/2 通过。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:44:47+08:00"},{"Sha1":"3299c68752ab4c04f4f171cb15b7dea897029818","Message":"docs(governance): 区分稳定包登记与下游验收\n\n实现内容:\n- 保留 contracts 1.13.0 与 tool-runtime 2.2.0 的当前登记事实。\n- 明确下游 tarball 候选验收仍停留在 contracts 1.12.0 与 tool-runtime 2.1.0。\n\n验证:\n- git diff --cached --check 通过。\n- staged diff 仅包含 CLAUDE.md 的证据口径更正。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:44:09+08:00"},{"Sha1":"a068ed932c183b9ced5320765872c33e7c453fa1","Message":"chore(reports): 刷新远程读取迁移检查报告\n\n实现内容:\n- 重新生成 migrations.latest.json,并绑定完成源码与文档提交后的本地提交 SHA。\n- 保留迁移危险语句、双后端目录和 Prisma 字段映射检查结果。\n\n验证:\n- node scripts/check-migrations.mjs 通过。\n- camelCase 标量与关系判定负向探针 2/2 通过。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:43:17+08:00"},{"Sha1":"1c5d0e1885693aaa93630e3c73d79d7277583f1d","Message":"docs(agent): 记录报价只读工具与 GLM 执行语义\n\n实现内容:\n- 更新控制平面蓝图和 owner matrix,区分 Connector 发布审核与 REMOTE_READ 每次调用确认。\n- 记录 GLM Provider、SSE 聚合、reasoning_content 续执、任务思考深度和结构修复边界。\n- 将 DeepSeek 限定为历史事故记录,并同步稳定包版本真源。\n\n验证:\n- git diff --cached --check 通过。\n- 当前 Provider 文档漂移检索无未解释的 DeepSeek 或智谱兼容端点表述。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:42:31+08:00"},{"Sha1":"13bc0d17c7d9026aa17cbb2d5347620dd401119f","Message":"feat(api): 接入双后端报价远程读取与 GLM 执行链\n\n实现内容:\n- 在 NestJS 与 Fastify 执行前共同校验 Tool Activation、Assignment、Grant、CapabilityPack、ConnectorDefinition 和 ACTIVE Installation。\n- 对等实现 REMOTE_READ 调度、稳定错误映射、结果治理、推理续执和任务思考深度冻结。\n- 补充真实数据库 dispatcher 与 LLM acceptance 回归,并更新流式 smoke 传输。\n\n验证:\n- pnpm --filter api-nestjs typecheck 与 build 通过。\n- pnpm --filter api-fastify typecheck 与 build 通过。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:41:33+08:00"}],"HeadCommit":{"Sha1":"4749f3df37316e72da7314c4151971c91e233575","Message":"chore(reports): 绑定最终治理文档迁移证据\n\n实现内容:\n- 将 migrations.latest.json 的 provenance 更新到最终治理文档提交。\n- 不改变迁移检查指标和通过结果。\n\n验证:\n- node scripts/check-migrations.mjs 再次通过。\n- camelCase 标量与关系判定负向探针 2/2 通过。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-30T18:44:47+08:00"},"CompareURL":"pengzhiyu/digital-employee-os/compare/b6d0797b80846ca21150fbb900a59f495f6d2cd3...4749f3df37316e72da7314c4151971c91e233575","Len":10}...
|
1788087343
|
Edit
Delete
|
|
26794
|
16
|
5
|
16
|
88
|
0
|
0
|
refs/heads/feat/juhai-agent-control-plane
|
0
|
|
1788087343
|
Edit
Delete
|
|
26758
|
16
|
1
|
16
|
89
|
0
|
0
|
|
0
|
|
1788003143
|
Edit
Delete
|
|
26757
|
16
|
1
|
16
|
88
|
0
|
0
|
|
0
|
|
1788003082
|
Edit
Delete
|
|
26575
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"0dd229392 {"Commits":[{"Sha1":"0dd229392358882382dd6ea0d83488e868d8ca27","Message":"fix(terminal): 修复 SSH 指令历史解密失败\n\n应用名变更后,已持久化的终端历史密文无法用当前 safeStorage 密钥解密。\n原先 fail-closed,提交指令后再打开历史会稳定报错,且无法继续写入。\n\n实现内容:\n- 识别 safeStorage 密文解密失败并隔离无法读取的历史文件\n- 隔离后从空历史继续记录新指令,避免直接展示 Chromium 英文错误\n- 补充密文无法解密时允许继续写入的回归测试\n\n验证:\n- npm run typecheck\n- npx vitest run electron/terminalHistoryStore.test.ts\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T17:57:29+08:00"}],"HeadCommit":{"Sha1":"0dd229392358882382dd6ea0d83488e868d8ca27","Message":"fix(terminal): 修复 SSH 指令历史解密失败\n\n应用名变更后,已持久化的终端历史密文无法用当前 safeStorage 密钥解密。\n原先 fail-closed,提交指令后再打开历史会稳定报错,且无法继续写入。\n\n实现内容:\n- 识别 safeStorage 密文解密失败并隔离无法读取的历史文件\n- 隔离后从空历史继续记录新指令,避免直接展示 Chromium 英文错误\n- 补充密文无法解密时允许继续写入的回归测试\n\n验证:\n- npm run typecheck\n- npx vitest run electron/terminalHistoryStore.test.ts\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T17:57:29+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/557c3fe29f14dcd7697c14d3710a81d1886036ef...0dd229392358882382dd6ea0d83488e868d8ca27","Len":1}...
|
1787824759
|
Edit
Delete
|
|
26561
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"557c3fe29 {"Commits":[{"Sha1":"557c3fe29f14dcd7697c14d3710a81d1886036ef","Message":"fix(styles): 对齐密钥和快捷指令卡片网格自适应列\n\n密钥和快捷指令原先用容器断点锁死最多三列,并限制最大卡宽,宽屏下右侧留白且第四张卡落到下一行。\n\n实现内容:\n- 移除密钥和快捷指令的两列、三列及最大卡宽容器断点\n- 与设备列表共用 auto-fill + 1fr,按实际宽度自动填列并拉满整行\n- 统一最小卡宽为 280px,窄于一张卡时允许单列收缩\n\n验证:\n- npm run typecheck\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T17:24:36+08:00"}],"HeadCommit":{"Sha1":"557c3fe29f14dcd7697c14d3710a81d1886036ef","Message":"fix(styles): 对齐密钥和快捷指令卡片网格自适应列\n\n密钥和快捷指令原先用容器断点锁死最多三列,并限制最大卡宽,宽屏下右侧留白且第四张卡落到下一行。\n\n实现内容:\n- 移除密钥和快捷指令的两列、三列及最大卡宽容器断点\n- 与设备列表共用 auto-fill + 1fr,按实际宽度自动填列并拉满整行\n- 统一最小卡宽为 280px,窄于一张卡时允许单列收缩\n\n验证:\n- npm run typecheck\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T17:24:36+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/53205a5662eec60a462328aa30ff9bd05bd40431...557c3fe29f14dcd7697c14d3710a81d1886036ef","Len":1}...
|
1787822862
|
Edit
Delete
|
|
26544
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"53205a566 {"Commits":[{"Sha1":"53205a5662eec60a462328aa30ff9bd05bd40431","Message":"docs(docs): 重写 README 为中文功能介绍\n\n原 README 仍是英文 POC 摘要,已落后于当前主页、操作台和 MCP 能力。\n\n本次改为中文说明:\n- 补充主页与设备操作台窗口模型\n- 按界面入口列出设备、密钥、快捷指令、终端、日志、INI、SFTP、UDP 和设置\n- 增加 MCP 工具对照、远端默认路径、启动方式和目录结构\n\n验证:\n- 仅文档改动,未涉及 TypeScript、React 或构建配置\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T16:25:57+08:00"},{"Sha1":"ab470d838e708fa8bba1042b4018a6ed8a05541d","Message":"feat(devices): 重构设备详情并改为读取 INI 配置\n\n主页设备详情不再依赖点歌应用诊断快照,改为展示运行状态和点歌应用基础信息。\n\n实现内容:\n- 系统资源继续监控 CPU、内存和温度\n- 皮肤、屏幕方向、播放器模式和串口从约定 INI 目录的 room.ini 读取\n- 串口对照系统发现结果,歌曲盘扫描候选目录并展示资源根\n- 重做详情布局,屏幕方向用显示屏示意正反向\n- 重启应用或设备成功后等待 30 秒再刷新 INI\n- 健康采集和 MCP 不再读取或返回诊断快照\n\n验证:\n- npm run typecheck\n- npx vitest run\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T16:21:20+08:00"},{"Sha1":"f5de56e3812b0d8bb01abff0867cd978b6199df7","Message":"feat(app): 增加操作台功能入口和状态栏设置\n\n用户需要按工作习惯隐藏不常用的操作台功能和底部状态栏。\n在主页设置新增「操作台」分类,默认全部开启:\n- 可分别关闭 SSH 终端、UDP、SFTP、INI 和日志入口\n- 关闭后操作台不再显示对应功能,并同步隐藏主页 SFTP 快捷入口\n- 可隐藏各功能底部状态栏,把高度让给内容区\n- 至少保留一个功能;日志和 INI 仍受设备路径约束\n\n验证:\n- npm run typecheck\n- 用户手工确认设置开关、操作台入口隐藏和跨窗口同步\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T14:42:15+08:00"},{"Sha1":"7299d2479afa08a6797efe79d75eab6eaa06c20b","Message":"fix(electron): 修复 UDP 远端端口进程误归属\n\nUDP socket 快照只描述当前设备,原实现按端口直接关联进程,导致进入设备的远端广播报文被误标为本机进程。\n\n实现内容:\n- 按报文方向只为当前设备的本地端点关联进程\n- 保留回环报文双端进程归属并补充方向回归测试\n- 更新 UDP 消息监视器的进程归属说明\n\n验证:\n- npm run typecheck\n- npm test(61 个测试文件,448 项测试通过)\n- git diff --check\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T11:32:14+08:00"},{"Sha1":"4d5a78c068818a7d7e8e8e97813df54689855d03","Message":"feat(renderer): 为 UDP 已观察端点展示端口中文含义\n\n把设备详情里的端口用途抽成共用清单,并让 UDP 侧栏直接显示:\n- 已知端口优先展示中文用途,右侧用徽章显示报文条数\n- 补充 Windows Youtube 解析、触摸屏 Youtube、跳舞机和广播 iPad 端口\n- 未收录端口只显示端口号和进程,不编造名称\n\n验证:\n- npm run typecheck\n- npx vitest run src/shared/juhaiPortCatalog.test.ts src/features/devices/juhaiHealthPresentation.test.ts electron/juhaiHealthEvaluator.test.ts electron/juhaiDeviceHealthService.test.ts\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T11:09:38+08:00"}],"HeadCommit":{"Sha1":"53205a5662eec60a462328aa30ff9bd05bd40431","Message":"docs(docs): 重写 README 为中文功能介绍\n\n原 README 仍是英文 POC 摘要,已落后于当前主页、操作台和 MCP 能力。\n\n本次改为中文说明:\n- 补充主页与设备操作台窗口模型\n- 按界面入口列出设备、密钥、快捷指令、终端、日志、INI、SFTP、UDP 和设置\n- 增加 MCP 工具对照、远端默认路径、启动方式和目录结构\n\n验证:\n- 仅文档改动,未涉及 TypeScript、React 或构建配置\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-27T16:25:57+08:00"},"CompareURL":"pengzhiyu/JuhaiOpsDesk/compare/75d35938ce8adec0f028271fa64b39f1a57a3934...53205a5662eec60a462328aa30ff9bd05bd40431","Len":10}...
|
1787819461
|
Edit
Delete
|
|
26543
|
16
|
5
|
16
|
86
|
0
|
0
|
refs/heads/main
|
1
|
|
1787819461
|
Edit
Delete
|
|
26542
|
16
|
1
|
16
|
86
|
0
|
0
|
|
1
|
|
1787819406
|
Edit
Delete
|
|
25122
|
16
|
17
|
16
|
6
|
0
|
0
|
refs/heads/detached
|
0
|
|
1787501230
|
Edit
Delete
|
|
25120
|
16
|
5
|
16
|
6
|
0
|
0
|
refs/heads/feat/agent-framework
|
0
|
{"Commits":[{"Sha1":"248914b04 {"Commits":[{"Sha1":"248914b04a0be437317c50a8a641be8f06e94b7a","Message":"fix(agent): 保留 AI 助手非事实回应\n\n实现内容:\n- Result Verifier 按句区分一般能力介绍与具体事实声明\n- 问候与一般能力咨询无需工具证据,具体产品、质保、工单和 SLA 事实仍保持 fail-closed\n- 系统提示词统一使用 AI 助手定位并递增提示词版本\n\n验证:\n- AI 助手与 Agent Runtime 单测 49 条通过\n- 最终聚焦回归测试 26 条通过\n- 后端 TypeScript 与改动文件 ESLint 通过\n- AI Assist 覆盖、技能绑定、决策质量与上下文脱敏审计通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T08:37:43-07:00"},{"Sha1":"444a93a0d245349d3f8e229b2c896ef52df6a1d8","Message":"fix(agent): 合并并行工具调用结果消息\n\n实现内容:将同一轮连续 tool_result 合并为 Anthropic 协议要求的单条 user 消息,保留每个工具的追加式事件,并让上下文压缩范围覆盖合并事件。补充两个并行工具调用的消息结构回归断言。\n\n验证:AI 助手与 Agent Runtime 聚焦单测 61/61 通过;后端 TypeScript 和聚焦 ESLint 通过;AI Assist Coverage、Skill Binding、Decision Quality、Context Provider Redact 审计通过。\n\n未执行:新的 DeepSeek 两轮真实产品知识回归因本次具体数据发送范围未获重新授权而未运行。\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T08:18:05-07:00"},{"Sha1":"c7269cf1876db06be814f2ba20423e5d88ce359d","Message":"feat(agent): 新增全局 AI 助手聊天入口\n\n实现内容:\n- 新增 AI 助手会话 API 与全局聊天抽屉,支持历史、新对话、连续追问、停止、重试、引用和澄清状态\n- 在桌面与移动壳接入响应式悬浮入口,隐藏 Task、Trace 等内部执行设施\n- 修正移动悬浮按钮尺寸与底导避让,并提升抽屉层级避免桌面 Header 遮挡\n\n验证:\n- 前端聚焦测试 3 files / 12 tests 通过\n- 前端 TypeScript 与定向 ESLint 通过\n- 真实后端桌面 Playwright smoke 1/1 通过\n- 桌面 1440x900 与移动 390x844 截图回放通过,无横向溢出或控件重叠\n- 前端运行时、点击交互、字段契约、类型债与 AI 四项审计通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T07:42:50-07:00"},{"Sha1":"af6d6f9c09bee4d9b10de011be2ac53df304f3dc","Message":"feat(agent): 新增 AI 助手对话后端入口\n\n实现内容:\n- 新增当前登录用户的会话创建、列表、详情、消息和停止接口\n- 每轮刷新权限快照并复用现有 Harness、只读 Tool Gateway、Verifier 与 Session Trace\n- 强制 tenant + created_by 属主隔离,过滤内部事件与工具标识\n- 固定 deepseek-v4-flash 与 Anthropic-compatible Base URL\n\n验证:\n- 聚焦单测 8 files / 55 tests 通过\n- 真实 PostgreSQL/Redis API 1 file / 6 tests 通过,未调用外部模型\n- 后端 TypeScript 与定向 ESLint 通过\n- route-contract、route-registration、api-test-coverage、tenant、docs 和 AI Assist 四项审计通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T07:05:23-07:00"}],"HeadCommit":{"Sha1":"248914b04a0be437317c50a8a641be8f06e94b7a","Message":"fix(agent): 保留 AI 助手非事实回应\n\n实现内容:\n- Result Verifier 按句区分一般能力介绍与具体事实声明\n- 问候与一般能力咨询无需工具证据,具体产品、质保、工单和 SLA 事实仍保持 fail-closed\n- 系统提示词统一使用 AI 助手定位并递增提示词版本\n\n验证:\n- AI 助手与 Agent Runtime 单测 49 条通过\n- 最终聚焦回归测试 26 条通过\n- 后端 TypeScript 与改动文件 ESLint 通过\n- AI Assist 覆盖、技能绑定、决策质量与上下文脱敏审计通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T08:37:43-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/1a23fbc06f3d0862aafce4dc8e1815e24443b9ff...248914b04a0be437317c50a8a641be8f06e94b7a","Len":4}...
|
1787500853
|
Edit
Delete
|
|
25118
|
16
|
5
|
16
|
6
|
0
|
0
|
refs/heads/feat/agent-framework
|
0
|
|
1787500853
|
Edit
Delete
|
|
25116
|
16
|
5
|
16
|
6
|
0
|
0
|
refs/heads/detached
|
0
|
{"Commits":[{"Sha1":"1a23fbc06 {"Commits":[{"Sha1":"1a23fbc06f3d0862aafce4dc8e1815e24443b9ff","Message":"docs(agent): 固化 AI 助手产品与兼容迁移契约\n\n实现内容:\n- 定义 AI 助手目标用户、问题范围、权限与知识边界、澄清拒答、人工复核及会话留存策略\n- 盘点 customer_service 在数据库、API、前端、Prompt、Capability、评测和文档中的兼容语义\n- 将旧 M6 调整为 AI 助手体验层,并把影子运行与单租户试点顺延为 M7\n- 同步统一文档入口与治理经验,保留历史标识和非 AI 助手客服域不变\n\n验证:\n- React 文档真源审计通过:30 个当前入口,0 缺失,0 可执行旧引用,0 七层失败\n- docs 单一真源审计通过:254 个模块,0 failure;159 个 warning 为既有基线\n- git diff --cached --check 通过\n- pnpm 版本切换因 registry 签名校验失败,审计使用当前本地依赖树的 Node/tsx 入口等价执行\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T06:38:11-07:00"},{"Sha1":"6e5cb3333749ca73dbdcfab72e1a2918242a7bc4","Message":"fix(agent): 修复任务权限快照加载\n\n实现内容:\n- 按 PostgreSQL UUID 列规范形态识别任务创建人,保留非法占位 ID 失败关闭\n- 规范化权限快照并在查询异常时以空权限降级,日志仅记录错误类型\n- 增加种子管理员、非法 ID 和异常降级的真实轮询回归\n\n验证:\n- 消费者聚焦测试 15/15 通过\n- Agent Sandbox 与 Runtime 安全边界测试 25/25 通过\n- 后端 TypeScript 检查通过\n- 消费者真实性及 AI Assist 四项审计通过\n- pnpm 版本切换因 registry 签名校验失败,测试与检查使用当前本地依赖树等价执行\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T06:13:16-07:00"},{"Sha1":"9aa2ee36835da89bebac52db81a80115054206ed","Message":"fix(ai-agent): 修正任务审核状态与类型推荐\n\n- 区分等待执行、生成中和待审核状态,仅为可复核任务提供审核入口\n- 为客服 Agent 推荐服务响应类型,移除其他 Agent 的默认线索评分\n- 补充任务生命周期和创建表单回归测试\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T05:56:54-07:00"},{"Sha1":"0fcb5702413eba780205c6d62a0b061dadd674d5","Message":"feat(agent): 完善客服 Trace 与人工反馈闭环\n\n实现内容:\n- 贯通 executionId、traceId、taskId 和 sessionId,记录六阶段可观测 Trace\n- 增加租户隔离的 Trace 聚合接口与最小披露响应\n- 完善人工复核队列的草稿修改、证据、工具、风险和执行信息展示\n- 将人工复核反馈纳入客服评测报告并同步 M5 治理口径\n\n影响范围:\n- 人工通过只确认客服草稿,不发送客户消息或执行业务写入\n- M5 完成不代表已完成生产影子流量或单租户放量\n\n验证:\n- 后端聚焦测试 7 个文件共 56 项通过\n- 前端聚焦测试 1 个文件共 5 项通过\n- 真实 PostgreSQL 复核队列 API 5 项通过\n- 前后端 TypeScript 与相关治理审计通过\n- git diff --cached --check 通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T05:12:47-07:00"},{"Sha1":"b32ca9274842ce672f92d9f9cf6cc979dfb6706c","Message":"feat(service): 完善客服结果校验与人工复核\n\n实现内容:\n- 增加客服草稿事实、引用和证据一致性校验\n- 固化人工复核仅认可草稿且不执行业务写入的边界\n- 补充纯合成结果评测、真实数据库接口测试和治理记录\n\n验证:\n- pnpm -C backend run type-check\n- 聚焦单测 5 个文件共 50 项通过\n- 真实 PostgreSQL 复核队列接口 5 项通过\n- 相关治理审计通过\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T04:06:59-07:00"}],"HeadCommit":{"Sha1":"1a23fbc06f3d0862aafce4dc8e1815e24443b9ff","Message":"docs(agent): 固化 AI 助手产品与兼容迁移契约\n\n实现内容:\n- 定义 AI 助手目标用户、问题范围、权限与知识边界、澄清拒答、人工复核及会话留存策略\n- 盘点 customer_service 在数据库、API、前端、Prompt、Capability、评测和文档中的兼容语义\n- 将旧 M6 调整为 AI 助手体验层,并把影子运行与单租户试点顺延为 M7\n- 同步统一文档入口与治理经验,保留历史标识和非 AI 助手客服域不变\n\n验证:\n- React 文档真源审计通过:30 个当前入口,0 缺失,0 可执行旧引用,0 七层失败\n- docs 单一真源审计通过:254 个模块,0 failure;159 个 warning 为既有基线\n- git diff --cached --check 通过\n- pnpm 版本切换因 registry 签名校验失败,审计使用当前本地依赖树的 Node/tsx 入口等价执行\n","AuthorEmail":"ngotruc672498@gmail.com","AuthorName":"xp","CommitterEmail":"ngotruc672498@gmail.com","CommitterName":"xp","Timestamp":"2026-08-23T06:38:11-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/f23014a01acfc11abb251f3a76ea6c904a44ecac...1a23fbc06f3d0862aafce4dc8e1815e24443b9ff","Len":9}...
|
1787498873
|
Edit
Delete
|
|
25114
|
16
|
5
|
16
|
6
|
0
|
0
|
refs/heads/detached
|
0
|
|
1787498873
|
Edit
Delete
|
|
21925
|
16
|
17
|
16
|
6
|
0
|
0
|
refs/heads/fix/frontend-service-service-dashboard
|
0
|
|
1786438570
|
Edit
Delete
|
|
21915
|
16
|
5
|
16
|
6
|
0
|
0
|
refs/heads/fix/frontend-service-service-dashboard
|
0
|
{"Commits":[{"Sha1":"66d832ab1 {"Commits":[{"Sha1":"66d832ab1b3d0934d4b39cfc77da31d8eb1de029","Message":"fix(service-dashboard): 阻断工单统计与趋势分析图表高度被持续拉伸\n\n服务看板「工单统计 / 趋势分析」ECharts 容器使用 height:100% + min-height,\n并直接对图表 DOM 调用 ResizeObserver → resize(),形成高度反馈环。\n\n- 图表容器改为固定高度并 overflow:hidden\n- resize 增加 rAF 合并与尺寸未变短路\n- 覆盖 TicketStatsPanel、TrendsPanel\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-11T13:40:54+08:00"}],"HeadCommit":{"Sha1":"66d832ab1b3d0934d4b39cfc77da31d8eb1de029","Message":"fix(service-dashboard): 阻断工单统计与趋势分析图表高度被持续拉伸\n\n服务看板「工单统计 / 趋势分析」ECharts 容器使用 height:100% + min-height,\n并直接对图表 DOM 调用 ResizeObserver → resize(),形成高度反馈环。\n\n- 图表容器改为固定高度并 overflow:hidden\n- resize 增加 rAF 合并与尺寸未变短路\n- 覆盖 TicketStatsPanel、TrendsPanel\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-11T13:40:54+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/c32dc69661d18fedc3e6939936535f3f5906bf7d...66d832ab1b3d0934d4b39cfc77da31d8eb1de029","Len":1}...
|
1786437401
|
Edit
Delete
|
|
21913
|
16
|
5
|
16
|
6
|
0
|
0
|
refs/heads/fix/frontend-service-service-dashboard
|
0
|
|
1786437401
|
Edit
Delete
|
|
679
|
13
|
5
|
1
|
19
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"990721ec8 {"Commits":[{"Sha1":"990721ec880cfdc4d7897d728e30000d178446d3","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-04-07T20:27:20+08:00"}],"HeadCommit":{"Sha1":"990721ec880cfdc4d7897d728e30000d178446d3","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-04-07T20:27:20+08:00"},"CompareURL":"pythonTimed/pythoncodes/compare/main...990721ec880cfdc4d7897d728e30000d178446d3","Len":1}...
|
1775564857
|
Edit
Delete
|
|
677
|
13
|
5
|
1
|
19
|
0
|
0
|
refs/heads/master
|
0
|
|
1775564857
|
Edit
Delete
|
|
675
|
13
|
5
|
1
|
19
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"02b9eabb7 {"Commits":[{"Sha1":"02b9eabb7afebf7a4b4af72ec84e6cee0c9305b5","Message":"添加 TimedTask\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-04-07T20:21:23+08:00"}],"HeadCommit":{"Sha1":"02b9eabb7afebf7a4b4af72ec84e6cee0c9305b5","Message":"添加 TimedTask\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-04-07T20:21:23+08:00"},"CompareURL":"","Len":1}...
|
1775564484
|
Edit
Delete
|