37d6796230
feat(gui+ohos): 同步阶段管道工具格「只滚动展示最新一条调用」
...
WebUI 已改为工具格只露最新一条。桌面版与鸿蒙端是同一套运行态面板的
镜像,一并跟上,避免三端口径不一致:
- cmd/gui:renderRuntimePanel 工具格只渲染最新条目 + 本轮累计次数;
overview 是整块 innerHTML 重建,故动画类由 state.toolFlash 单次驱动,
避免任何重渲染都闪一下。
- cmd/ohos:RuntimePanel 工具格改为 latestEvent() + totalCount(),
不再 ForEach 追加。已用 hvigor 实测 BUILD SUCCESSFUL。
2026-09-14 20:09:57 +08:00
2163a7a092
feat(gui+ohos): 同步 WebUI 总览改版 —— 桌面版补运行态面板,两端补内核身份与开源许可
...
WebUI 那边这几轮改完,桌面 app(Electron)与鸿蒙 app(ArkTS)要跟上。
先摸了底:**两个 app 此前都没有运行态面板**(阶段管道 / 中断队列),
所以这不是"移植",是新做;emoji 图标两端本来就没有,无需处理。
## 桌面 app(cmd/gui/renderer)
1) 运行态面板(新)—— 与 WebUI 同一套设计语言:**等大表框**
- 数据源 /api/v1/runtime(此前只拉 /status 与 /kernel)。
- 四个数字块沿用本 app 的 statCard(排队/中断/栈/子代理)。
- 阶段管道:5 个等大框,框内是本阶段本轮发生的事件 chip;
当前阶段整框点亮。图标一律内联 SVG(含「工具会循环」标记)。
- 中断队列:5 个等大框(L4/L3/L2/L1 + 排队)一行排开,
级别名 16px/800、深度 26px/800、可见格槽(0 时也有形状);
有积压整框描边点亮;排队队列虚线框区分(另一类别,不是另一优先级)。
- stage SSE 事件接上轨迹(rtTrailPush,同阶段同一条累加 xN),
2.5s 无新事件回空闲。
- 列宽 repeat(auto-fit, minmax(100px,1fr)):窄容器也保证 5 框一行,
不出「4 个 + 1 个」的孤行。
2) 版本身份(修一个真缺陷)
旧实现是 `s.version || "0.1.0"`:拿不到数据时**向用户展示一个不存在的
版本号** 0.1.0。改为取 /kernel 的 build(-ldflags 注入的真实版本/commit),
并在版本号下补一行「内核名 · commit」。
3) 开源许可卡(新)
协议标识 + 协议全文 + 源码仓库 + §13 说明;网络条款按标识是否含 AGPL
决定是否渲染,不硬写协议名。
## 鸿蒙 app(cmd/ohos/HomeAgent)
4) StatusStore 解析 /kernel 的 build:补 内核版本 / Commit / SDK 兼容 /
构建时间 到「内核」分组;K_VERSION 统一成 v<版本>,新增 K_BUILD 广播
「内核名 · commit」给摘要卡(版本号本身没有内核身份)。
5) 新增「开源许可」分组:许可协议 / 协议全文 / 源码仓库 / 网络条款说明。
## 验证
- 桌面:共享浏览器加载 renderer(桩掉 preload 桥)后喂真实形状数据渲染 ——
版本卡 `v1.4.0+hotfix.f89e57a` + `HomeAgent · f89e57a`;管道
`输入=输入 | 行动=思考 | 工具=qq_get_message x3 qq* | 输出=生成 | 结束=完成`;
队列 `L4:0 | L3:3 on=3[active] | L2:2 on=2[active] | L1:0 | 排队:2 on=2[active]`;
许可卡两个链接均为 target=_blank + rel=noopener noreferrer;无 emoji。
node --check 通过。
- 鸿蒙:/opt/huawei/command-line-tools/bin/hvigorw assembleHap **BUILD SUCCESSFUL**。
## 未做(下一条腿)
鸿蒙端的运行态面板(阶段管道 + 中断队列)**还没有**。它比桌面端贵:
需要新组件(5 框管道 + 5 框队列)、把 /runtime 快照接入 StatusStore,
以及把 SSE 的 stage 事件从 ChatSse 的 sink 引到状态侧——后者是接口改动。
「状态」Tab 此前已被有意删除(并入设置页 + 二级明细),面板落点也要定
(建议放二级明细页顶部)。桌面的实现可直接作参照。
2026-09-14 18:53:25 +08:00
c29abe9569
gui: 设备命令/能力完整实现 + 二进制分块 + 消息ID去重 + 交互优化
...
设备命令执行对齐服务端 cmd_type 契约:
- onDeviceMsg 解析 msg.cmd_type: homeagent->能力分发 / shell->白名单执行
- 统一回执 sendCmdResult(兼容双参), 全链路回执修复
- 修复 pi-lens auto-fix 把 trayLastCmd 改 const 导致的 TypeError(命令未执行/无回执根因)
homeagent 能力:
- screensue: 独立窗口显示文字/HTML, 可配默认屏幕(displays:list IPC), 支持时长参数 "screensue [秒] 内容", 默认常驻
- camerasue: 抓拍单张 jpeg(base64文本); camerasue <N秒>=录像 mp4(libx264), 二进制分块经设备通道回传
- speakeruse: 接收服务端二进制音频(WS 0x2), 聚合后播放(aplay/paplay/ffplay/afplay/SoundPlayer)
二进制分块协议(设备<->网关):
- 录像(设备->网关): cmd_data_start/0x2帧/cmd_data_end
- 音频(网关->设备): cmd_speech_start/0x2帧/cmd_speech_end
- 设备端 WS 读写侧都支持 0x2 帧; N/A 服务端 readFrame 需配套(已发群)
消息重放/交互:
- sendChat 带 client_msg_id 唯一ID(服务端可去重), 超时明确提示勿重复发送
- 托盘菜单: 信息项 enabled(不再灰字)+200ms防抖+连接缓存, 首建立即弹出
- 托盘显示连接/设备桥/远控活动状态
UI:
- 设备页本机卡片: 设备通道配置(网关/ws_token/screensue屏幕/cmdrun目录/沙箱)
- 设备列表经 webui 反代 /api/v1/device/online 拉取
- 连接管理移除 device 类型(设备独立为 GUI 组件), toggleConnType/saveConnForm 清理
- 字体对比度提升(text-muted/secondary重调色), 内联小字 10/11px->12/13px
preload: 新增 displays.list IPC
2026-08-20 09:07:41 +08:00
93203c4af3
gui: 托盘菜单增强(连接/设备桥/远控状态) + 设备页 dot 修复
...
托盘右键菜单(rebuildTrayMenu, 动态刷新):
- 后端连接: 名称 + URL + [已连接]/[未连接](authRule 判定)
- 设备桥: [已连接]/[未连接] + 设备ID + 网关地址
- 远控活动: 上次远控命令 + 结果(输出前40字) + 总次数(收到 cmd 时记录, 回执后更新)
- 刷新时机: 启动 / connections add/update/delete/setCurrent / hello_ack/bind_ack / cmd 到达与回执
- 纯文本不用 emoji
设备页方形外框修复(根因: .dot-* 只定义 background 无尺寸, 直接包文字成整块色块):
- app.js: 状态/授权改为 <span class="dot-green"></span>+文字(本机卡片+设备列表4处)
- style.css: .dot-* 补 inline-block 8x8 圆角, 空 span 呈现小圆点
2026-08-18 09:37:05 +08:00
ef5f010e87
device gateway: remotedevice 插件(设备接入网关) + GUI/waiter 受控设备桥 + 设备页/授权开关/托盘/退出进托盘 + 白屏修复(惰性Tray) + deviceinfo 工具
2026-08-17 09:34:25 +08:00
c52331cd5e
gui+webui: 聊天界面升级(PiDeck风格思考/工具卡片+滴入动画) & 流式卡顿修复(防抖局部增量渲染) & 主题系统修复(启动恢复色板/弹窗溢出wrap)
2026-08-16 09:57:29 +08:00
3f32006341
gui: 修复总网关认证(host域cookie注入+session.fetch登录+sl-session合并) & 连接持久化完整字段+网关徽标; vendor 本地 three.js 备用
2026-08-16 08:17:34 +08:00
15b45c7653
gui: renderChat 增加防护与日志; log:r 改 invoke; 修 SSE 流式丢失气泡; chat 布局 overflow 修复
2026-08-15 09:03:07 +08:00
9e4afa3040
gui: 多主题外观(6色板/背景图缓存)/连接认证(总网关登录窗自动抓Cookie)/中英切换/插件禁用
2026-08-14 16:14:20 +08:00
147d0baaf9
fix: LLM 工具循环 400、中断消息注入、ConPTY 终端支持
...
- agent: 工具轮请求尾部补 user 占位(zen 网关强制),tool 消息正确配对
- agent: 工具提醒/中断以 system 角色注入并带 [中断消息] 前缀,不进用户履历;系统提示词说明中断消息格式
- agentcli: 基于 ConPTY 的交互式终端(ptywin fork),terminal_create/read/write/resize/close/watch
- webui: server 输出通道适配器(保留 reasoning_content/disable_thinking)
- GUI: 沉浸式标题栏、icon 圆角重制、mascot 等打磨
2026-08-14 00:48:40 +08:00
1013aa0aa9
feat(sdk): add RegisterStopHandler/RunStopHandlers and wire stop cleanup into registry lifecycle
...
- SDK PluginSDK gains RegisterStopHandler(fn func()) + RunStopHandlers()
(LIFO, idempotent, cleared after running); synced to third_party copy
- Registry keeps per-plugin SDK refs (sdkRefs); StopAll/ReloadOne/
DisablePlugin run handlers before calling Stop()
- timer built-in plugin demonstrates handler-based shutdown cleanup
- z_bridge (linux/windows templates) runs handlers before plugin.Stop()
2026-08-02 10:23:40 +08:00
94312d714a
fix(webui): capture all-channel chat history and correct input source
...
- handleChat now injects with source=webui so the LLM no longer sees
cli as the input channel
- subscribe to EventRawInput/EventAgentOutput to persist every
conversation turn from all channels (cli/qq/webui), replacing the
manual webui-only addChatMsg to avoid duplicates
- ChatMsg gains a source field; GUI shows a channel badge for
non-webui messages
2026-08-01 14:06:18 +08:00
10638f1308
feat: mascot integration - WebUI/GUI icons, chat avatar, system prompt, docs
2026-07-17 21:41:03 +08:00
121a2edbc5
feat(gui): rewrite UI to match webui, add animations, fix blank page and SSE errors
2026-07-16 22:57:24 +08:00
951d31cca0
feat: align GUI and CLI with WebUI - move GUI to cmd/gui/, add REPL+mgmt to waiter, enhance GUI features
2026-07-16 20:28:56 +08:00