Repository navigation
Releases: silent-reader-cn/hermes-anywhere
Release list
Hermes Anywhere v0.1.82
Hermes Anywhere v0.1.82
聊天回合收尾修正(真机反馈两例)
- 旧用户气泡不再冒到回复末端:回合跑完后,列表最末不会再凭空多出一条蓝色用户气泡(内容往往是会话第一句原文)。根因是发送时的本地乐观行带原文、服务端落库行带注入标记,两者恒不相等 ⇒ 收尾合并把它当新消息插回本轮末尾;现已改为归一化比对 + 新增「陈旧回声」判据。
- 工具卡计数不再虚高:回合过程胶囊不再显示「终端×43 / 视觉×21」这类远大于实际的数字,末条正文之后也不会再冒出本回合根本没调用过的历史工具卡(如 read_file)。done 帧现在是全量转写坐标,客户端已按尾窗裁剪并 rebase。
内置服务页重排
- 启动按钮改为固定贴页底的操作区,设置项再多也不会把它挤出屏幕。
- 设置项常显,去掉「高级设置」折叠与箭头。
- 状态胶囊移到标题行尾右浮,正文只带端口,窄屏不再把端口截成「127.0.0.1:8…」。
- 缺 Hermes 引擎时改为整页空态:警示图标 + 一句解释 + 两个出口(进入安装向导 / 我装好了,重新检测),不再渲染标题、胶囊、端口密码与启动按钮。
本机部署向导
- 删除「进度 x / 5」标签、百分比与进度横条,进度只由步骤轨圆点表达。
- 步骤轨改为「每步等宽一列」网格,圆点与标签严格同列居中,首末两步不再偏出去。
- 未达态圆点补不透明容器底色,连接线不再从圆圈里穿过去。
- 安装日志区吃满卡片整宽(原来只包住一行文字,成了「半个黑块」),外层裁圆角;标题行整行高度 60pt → 28pt。
设置
- 平滑输出默认关闭;开启时默认档位改为「极快」。平滑输出是打字机演出的额外一层,不影响消息到达,默认开着会让每条回复先慢速逐字演一遍。
稳定性
- 重拍 install_guide 金照基线(向导改版后基线同步)。
Hermes Anywhere v0.1.81
Hermes Anywhere v0.1.81
模型列表统一(#205 前置)
- 模型列表统一显示原模型名,不再是自造别名。
- 三处模型展示入口(模型列表页 / 上下文弹层 / 输入栏元信息 chip)共用同一数据源,杜绝「同一模型三种名字」。
聊天图片预览改进(#205)
- 图片预览的下载按钮去掉文字字样化,只留图标。
- 图片预览新增**「引用」**按钮:直接把图片引用进输入框,可直接发出。
工作区交互(#206)
- 工作区页在安卓上的返回键改为回到上一级目录,不再退到主页。
浅色主题深浅适配补修(#204)
- 聊天附件全屏预览:图片大图保持媒体查看器语义(恒黑底),文档类预览改为跟随主题(浅色下不再是「黑栏 + 白正文」的割裂感)。
- 窄屏筛选弹层:分组卡片的描边改为由分组统一提供,卡片外框处处完整连续,不再出现「只有被选中行有描边」。
- 窄屏折叠菜单:菜单动作色改为随「主题 × 高对比度开关」解析,普通档显示普通蓝,不再恒为高对比度配色。
会话列表交互修正
- 会话列表 FAB 长按工作区菜单:命中项只做球高亮,不再重复叠加按下态反馈。
稳定性
- 刷新金照基线(窄屏会话卡片描边补齐后基线陈旧)。
Hermes Anywhere v0.1.80
Hermes Anywhere v0.1.80
上一版:v0.1.77。以下为 v0.1.77 → v0.1.80 的完整说明(含区间内全部提交;v0.1.78 / v0.1.79 为中间 bump,本次一并覆盖)。
品牌
- Hermes UI → Hermes Anywhere:显示层全量更名(应用标题、引导页、文案、渲染图、文档)。
- 仓库同步更名
hermes-keep→hermes-anywhere,Linux 金照基线同步刷新(6 张)。
新功能
聊天:附件「+」按钮支持多选上传
- 一次可勾选多个附件批量上传,不再只能逐个添加。
宽屏洞察页:柱状图两列等高 + 时间线改为从左往右
- 消除右列图表下方的大片空白,两列卡片高度对齐。
- 时间线阅读方向由右往左改为从左往右(符合中文阅读直觉)。
- 守卫测试改用可鉴别判据(
chart.height > chartCard.height - 90+ 末排轴标签贴卡片底),能真正拦住「容器被拉伸、里面还是空的」那一形态。
本机部署向导接回「内置服务」入口
- 缺 agent 时,缺失卡的按钮真进 5 步部署向导(此前被改成打开官网文档,2592 行向导实际无人可达)。
- 向导末步与内置服务 Tab「启动并连接」走同一份链(自动登录 +
builtinIdupsert/activate),消灭第二份实现 —— 原向导硬编码127.0.0.1:8787与空密码,和 sidecar 实配(可改端口 + 首次加载生成 24 位随机密码)错配,装完连不上。 - 设置页「前往安装向导」改为进真向导(原开官网文档);指路文案改写为真实可点层级「设置 → 桌面 → 内置 WebUI 服务」;凭据行只指路不展示明文密码(密码属秘密,不写日志/不进 toString)。
- 向导收尾失败不静默:行内红字 + 可重试。
窄屏会话卡片补描边
- 窄屏会话卡片加描边提升可辨识度。
修复
聊天:治「同一句话重复 N 遍」
- 真因在客户端渲染层(非生成/线程/网络):服务端
already_streamed靠 token 尾部匹配判定续流,弱网丢 token ⇒ 标记失效 ⇒ interim 整段重投。 - 修法:客户端整段指纹闸门 + 诊断埋点。
- 已在低负载下做 R3–R6 四轮全量权威复现,结论稳定。
聊天:done 收尾帧裁窗
- done 收尾帧按 50 条窗口裁剪,避免
state.messages膨胀到整表(长会话收尾时延显著下降)。 - 修掉裁窗把「可渲染行不足窗口」那一支裁反的 bug(提问气泡跑到了回复下方)。
聊天:steer 不可用时不再自动转队列
- 改为直接报失败并交还原文,不静默改投队列。
设置页:其余四个二级页改走 go_router 栈
- 修掉同源返回缺陷(此前自建返回逻辑,返回层级错乱)。
窄屏:修「新增服务器后返回退到主页」的双栈分裂
- 窄屏会话卡片补描边的同时修掉导航栈分裂。
批量栏:修 #184 加载竞态
- 本地 40 轮红 6 → 修后 40/40 全绿。
窄屏筛选弹层顺序
- 「工作区」段提到「项目」段之前(按主人 2026-10-15 要求)。
内部质量
- 全量测试多轮低负载权威复现(R3–R6):失败均为负载抖动(用例身份漂移,非确定性失败),代码未改动。
- MCP 工具列表用例改用 fake 数据真跑,不再靠 skip。
- 新增 done 收尾帧体量/裁窗收益的取证探针(
tools/probe_done_*.dart),便于真机核对行数与体积。 - CI(push main)多轮 dispatch 全 job success。
- Linux 金照基线刷新 2 张:窄屏会话卡片补描边(
session_list_dark)、宽屏引导页文案与布局变更(onboarding_wide_dark)—— 本机只能重拍goldens/windows/那份,Linux 基线由 CIupdate_goldens生成后回填;逐张比对确认其余 24 张逐字节未变。
产物
- Windows:
HermesUI-0.1.80-x64-setup.exe - Android:
HermesUI-0.1.80-arm64-app-release.apk(arm64 单 ABI,对应小米 14 等现代安卓机)
Hermes UI v0.1.77
Hermes UI v0.1.77
上一版:v0.1.76。以下为 v0.1.76 → v0.1.77 的完整说明(含区间内全部提交)。
新功能
宽屏侧栏「槽」:左栏与右侧内容区拉开一个感知台阶
- 起因:宽屏下侧栏与右侧顶栏原本零色差(实测两处同为
#000000/同一页底色),全窗只有一个平面,分区信息仅剩两条 10% 白发丝线 —— 大屏上「哪里是侧栏、哪里是内容」读不出来。 - 做法:新增侧栏「槽」底色令牌,由页底色自动派生一个感知明度台阶(按 ΔL* 定档,不是固定 RGB 差):
- 深色:抬升 ΔL* 10(
#000000→#1B1B1B) - 浅色:下沉 ΔL* 4(
#F2F2F2→#E6E6E6) - 色相跟随页底色、饱和度折半;两处夹紧守住不变量(槽不得撞侧栏内最亮填充
#2C2C2E;浅色槽不低于#E0E0E0)
- 深色:抬升 ΔL* 10(
- 口径:侧栏整列(品牌行 / 工具区 / 会话列表 / 状态条)同底取槽色;右侧(顶栏 + 正文)保持页底色。窄屏不渲染侧栏列,逐像素不变。
- 设置入口:设置 → 外观 → 「页面底色」里新增一行「侧栏槽」:
跟随页底色(自动,推荐)/自定义(复用 HEX 输入 + HSL 双滑杆)。切到「自定义」这一步本身不改变任何像素(预填当前派生值)。顶部预览卡升级为三段真渲染(槽竖条 + 分栏线 + 页底色与居中卡片)。 - 派生实测值:浅色
#F2F2F2→#E6E6E6、#F2F2F7→#E6E6EC、#EDEDED→#E1E1E1、#F8F8F8→#ECECEC、#F1EFEA→#E5E3DF、#F6F3EE→#EAE7E3;深色#000000→#1B1B1B(动态色,高对比度档#262626)、#141414→#1F1F1F、抬不动的#1C1C1C→#131313(反向下沉)。
修复
- 深色页底色设置此前对宽屏外壳不生效:主题层把深色
scaffoldBackgroundColor/barBackgroundColor硬编码成#000000,导致「页面底色」只被部分页面(看板 / 设置 / 记忆 / 任务 / 技能 / 下载 / 诊断 / 洞察…)消费,而宽屏外壳、聊天顶栏、聊天正文、空态详情页拿不到 —— 深色下改页底色会出现「同一窗口两套底色」。现已统一走深色页底色令牌(未覆盖时解析原生systemGroupedBackground,保留动态色语义 / 高对比度档)。 - 侧栏槽面上的文字可读性(AA):浅色槽比页底色更深,而次要文字色
#6A6A6F的明度是按页底色 4.838:1 定的 —— 直接放在槽上只有 4.31:1,低于正文 AA 4.5(命中的是侧栏分组标题与行内相对时间,宽屏列表是朴素行、没有卡片兜着)。新增「槽面上的次要文字色」令牌:对生效槽色二分压暗(只动明度),逐档守 4.5。
内部质量
- 新增守卫测试:派生值表逐档硬钉、四个不变量(含槽面文字 AA)、自定义/复位、深色默认动态色语义、宽屏外壳契约(窄屏无侧栏容器 key)。
- 新增「主题 × 侧栏槽」真渲染目检工装(7 场景 × 1400×900,渲染层 + 文件像素双证,环境变量门控、不参与全量测试)。
- 端到端回归:切页底色档 ⇒ 侧栏槽跟着变(逐档钉 hex);自动档忽略传入的自定义值(标志权威)。
- 全量测试 5922 过 / 238 跳 / 0 红;窄屏像素守门对着改动前基线零变化;金照 26 例零变化(金照不覆盖宽屏外壳,故本轮无金照 churn)。
- CI(push main)8/8 jobs 全绿。
产物
- Windows:
HermesUI-0.1.77-x64-setup.exe(43.72 MB,sha256d7235656a809b6ded41befdac85d83fee270c09baac4556f412d83c2f99a912a) - Android:
HermesUI-0.1.77-arm64-app-release.apk(arm64 单 ABI,对应小米 14 等现代安卓机)
说明
- 本机(开发机)安装版已升级到 0.1.77,双件取证:注册表
DisplayVersion=0.1.77+ 落地 exe 与构建产物 sha256 逐字节一致。
Hermes UI v0.1.76
Hermes UI v0.1.76
本次是一个稳定性修复版:主线是修掉「回合早已结束、界面却永远显示生成中」这个僵尸态,并给会话菜单加一个手动出口。
说明:v0.1.75 之后到本版之间的改动全部包含在本说明里(中间没有单独的 Release)。
修复
- 界面永久卡「生成中 · 已工作 MM:SS」(服务端其实早已收尾):本次最要紧的一条。表现是某个会话一直显示「生成中 ≈24 tps · 已工作 317:40」、几小时不吐新字,但会话列表里它是正常的,用手机/网页连同一台服务器看内容早就写完了,只有这个窗口不动,重启应用才好。
根因在客户端显示态:回合正常结束的那条路径漏清「本回合已工作多久」的计时;而结束之后到达的迟到/重放数据包,又会把「正在生成」的气泡重新建出来。更麻烦的是这一组合恰好落在所有自动恢复逻辑的判定范围之外,于是谁也救不了它。现在:收尾时把计时与残留缓冲一次清干净;回合结束之后到达的迟到数据包一律丢弃;万一还有别的入口把气泡建出来,1 秒一次的看门狗会在 20 秒内清掉它并重新拉一次服务端内容。 - 中文名附件打不开(404):附件名带中文(或空格、特殊符号)时,下载链接会被二次编码、指向不存在的路径。现在链接目标只编码一次并规整路径形态,中文名附件可以正常打开。
- 附件/音频/视频链接前面的 emoji 换成矢量图标:链接文案因此恒等于真实文件名;顺带下载下来的文件名不再带装饰性 emoji / 符号(此前会落到
Downloads/📎 spec.pdf这种名字)。
新增
- 会话菜单新增「强制刷新」:位于会话右上角「⋯」菜单的第一组,紧随「归档」。遇到界面落后于服务端、卡在生成中一类显示问题时点它即可——它会把本地显示状态与服务端对齐、并重新拉取本会话内容。纯读取操作:不改动会话内容;若此刻真有回合在跑,它会改走状态查询,不会打断。
平台
- 本机发布为 Android(arm64)与 Windows x64 安装包;Linux tar.gz 与 macOS zip 由 CI 产出。
文件
- Android:
HermesUI-0.1.76-arm64-app-release.apk(arm64,适配小米 14 等现代机型) - Windows:
HermesUI-0.1.76-x64-setup.exe
升级方式:手机装新版 APK;Windows 直接跑安装包覆盖安装(数据不动)。
Hermes UI v0.1.75
Hermes UI v0.1.75
本次版本的主线是手机与电脑的一键配对:手机首次打开不再要求你手填「服务器地址 + 24 位密码」,而是由电脑端出 6 位配对码,手机扫到就能连。跨网(不在同一 Wi-Fi)可选装 Tailscale,或继续手填地址。
说明:v0.1.74 之后到本版之间的改动全部包含在本说明里(中间没有单独的 Release)。
新增 · 手机 ⇄ 电脑配对
- 手机端首启改成决策树:第一问「Hermes 跑在哪台电脑上?」——① 电脑就在同一个 Wi-Fi(自动发现 → 6 位配对码)② 电脑在别处(配对码)③ 我还没在电脑上装 Hermes(一键复制下载链接,可发到电脑上的微信/QQ 再打开)。
- 桌面端部署向导重做:步骤区改成横向步骤条(环境检查 / 拉取 Agent / 安装依赖 / 启动服务 / 手机配对),只展开当前步;向导的整体成功判据从「安装完成」改为**「手机已连上」**。
- 6 位配对码:10 分钟有效、一次成功即作废;密码由两端后台交接,不需要你抄。
- 局域网自动发现:桌面端广播应答,手机端扫到即连;发现不了时给三条自检 + 手填入口。
- Tailscale 一键安装(可选,默认勾选):勾选后这一步替你下载安装并打开登录页,装好手机在任何网络都能连;浏览器里那一次授权仍需你自己点(Tailscale 官方不支持邮箱注册)。不勾选也能用:同一 Wi-Fi 下手机可直接连。
- 网络受限地区提示:检测到 GitHub 不可达时,向导会提示先开启网络加速(代理)再安装,避免「拉取 Agent / 安装依赖」超时。
- Windows 防火墙首次放行引导:手机端自检新增一条,桌面端向导也加了提示——首次运行 Windows 可能弹一次网络访问询问,请点「允许」,否则手机连不上。
- 同机多地址折叠:同一台电脑的局域网与 Tailscale 两条地址在「设置 → 连接」里折叠成一条主行(另有 N 个地址),展开即可切换。
修复
- 图片偶发不加载、点一下窗口才出现:图片淡入的首帧是完全透明且占着位置,一旦动画时钟没推进(桌面窗口失焦等)就会永远停在那——现在关闭动画时直接给终态,并加了看门狗兜底,图片不会再「隐形等待你点一下」。
- 配对地址可能选到手机连不上的网卡:原先会取「第一个非回环地址」,在开了代理 TUN、虚拟网卡(Hyper-V/WSL/Docker/VMware)或无线网卡没拿到 DHCP 的机器上会选中根本不可达的地址(表现为「配对码输了连不上」)。现在改为:排除链路本地 / 代理伪栈(198.18/15)/ 虚拟网卡,优先与默认路由同网段的那块网卡,且每个候选都要真连上健康检查才采用;一个都不可用时不再静默回退到 127.0.0.1,而是在向导里明确告警。
- 手机可能存下「死地址」:配对应答原先回的是调用方传入的地址(可能是 127.0.0.1 或虚拟网卡),现在统一下发校验过能连上的地址。
- 兜底「我有服务器地址」表单成了死胡同:现在可返回(回到你来时的那一屏)。
- 会话列表、下载、看板、工作区若干修复:多选态底部栏不再压住列表末尾 / 行 key 改为身份型、不再整屏重建元素 / 新建工作区在聊天里立刻可选 / 深滚列表刷新不再塌陷 / 刷新不再「闪一下」。
平台
- Linux tar.gz、macOS zip 的构建与自足性口径已补齐(媒体库依赖闭包等);本机发布为 Android(arm64)与 Windows x64 安装包。
文件
- Android:
HermesUI-0.1.75-arm64-app-release.apk(arm64,适配小米 14 等现代机型) - Windows:
HermesUI-0.1.75-x64-setup.exe
升级方式:手机装新版 APK;Windows 直接跑安装包覆盖安装(数据不动)。
Hermes UI v0.1.74
Hermes UI v0.1.74
从 v0.1.73 到 v0.1.74 的累计更新(App 内「检查更新」会直接跳到本版)。
本轮两件事:界面缩放真正生效,以及两处宽屏 UI 缺陷收口(弹层越界、卡片描边被盖)。
界面缩放:从「只改数据」到「真放大」
问题(主人报告):设置里的 100/125/150/200% 档位切换后画面纹丝不动——「百分比缩放对字体和布局无效」。
根因:原实现只覆写 MediaQuery 的 size / devicePixelRatio。渲染用的逻辑像素坐标系由引擎真实
dpr 决定,只改 MediaQuery 数据不改变任何绘制尺寸(字体、间距、图标全不变)⇒ 数据改了、屏幕没变。
改法:两段式,缺一不可——
MediaQuery覆写(size / factor、devicePixelRatio * factor):内层按缩小视口布局,各页宽窄屏判定随之生效;- 新增绘制缩放层
Transform.scale(factor)+OverflowBox:把布局好的画面按系数放大画回真实视口
—— 「看得见」的缩放靠这一步。OverflowBox保证内层仍拿到缩小视口,且Transform自身尺寸等于真实
视口 ⇒ 放大后整屏仍可命中。
实测 150%:固定 100×100 盒子在屏上 = 150×150、文字 ×1.5、内层布局仍 853×533、五点命中 5/5;
100% 档原样返回,既有像素与金照零影响。
宽屏弹层:改按宿主 Overlay 收敛(修「模型选择弹窗右侧出屏」)
问题(主人报告):宽屏下模型选择弹窗右侧出屏、被窗口右缘裁掉。
根因:路由挂在 go_router ShellRoute 的嵌套 Navigator 上,宽屏外壳把这只 Navigator(连同它的
Overlay)放进右侧详情栏——比视口窄一条侧栏(实机 341.9pt)且整体右移。弹层由这只 Overlay 定位,
坐标系就是详情栏;而定位壳原先用 MediaQuery 的整窗宽度算横向 clamp 上限 ⇒ 多放行一条侧栏宽
(实机视口 1638.4 vs 宿主 Overlay 1296.5)。
改法:定位壳的边界改取宿主 Overlay 的盒子(与同族 adaptive_popover 一直以来的口径对齐);
聊天大纲弹层有同一类问题,一并修。实测弹层卡片右缘 2120.5 → 2038(窗口 2048,留 10pt 安全边距)。
宽屏筛选:段卡片 1px 描边恢复可见
问题(主人报告):「为什么只有两个『全部』项的外框正常?其他行都没边框了」。
根因:CupertinoListSection.insetGrouped 把段卡片的 decoration(白底 + 1px 描边)画在子项之下,
而未选中行底是不透明白 #FFFFFF、又铺满整段宽度 ⇒ 描边被整段盖掉。整屏只剩「显示」段(该行从未传
背景色)与选中行(半透明灰底让描边透出)看得见外框。
改法:宽屏的行底交还给它所在的段(未选中不画底);暗色下选中行底与段面同色、画了只是白盖描边、
像素无差,同样不画 —— 描边这才连续(否则每段顶边与圆角会缺一段)。窄屏维持既有行底,逐像素不变。
守卫与验证
- 新增
test/features/chat/composer_popover_pane_bounds_test.dart:真实ShellRoute+ 外壳 + 聊天页 +
界面缩放 125% 档下量弹层矩形;另锁窄屏「宿主 Overlay == 视口、几何逐点一致」不变式。 - 筛选弹层新增渲染像素取样用例(取段左缘描边 vs 行内底亮度差)。
- 两处都做过 RED 验证:回退修复后分别以「越界 72.5pt」「描边亮度差 0」失败。
- 全量
flutter test:5646 通过 / 0 失败。
说明
- 本版未做本机(桌面安装版)升级 —— 桌面端仍是你当前安装的那一版;需要升级说一声。
本版补充的平台包(Linux / macOS)
除 Windows 安装包与 Android APK 外,本 Release 另附两个平台的包 —— 源码取自本 tag(v0.1.74),由 CI 在对应宿主上构建:
| 资产 | 平台 | 用法 / 说明 |
|---|---|---|
HermesUI-0.1.74-linux-x64.tar.gz |
Linux x64 | 解包即用:tar -xzf … && ./hermes_ui。构建于 Ubuntu 22.04(glibc 2.35+,覆盖 Ubuntu 22.04 / 24.04、Debian 12 及更新发行版)。已自带 mpv 运行库——包体 115 MB 就是因为内附 libmpv + ffmpeg 媒体栈(发行版只提供 libmpv.so.2,不带就是"下载了打不开"),无需另装 mpv。 |
HermesUI-0.1.74-macos-arm64.zip |
macOS(Apple Silicon) | 解压后先 xattr -cr hermes_ui.app(未签名、未公证,Gatekeeper 会拦),再打开。Intel Mac 暂不支持。 |
取证(两者都真跑过,不是"编过就算"):CI 里 Linux 在 Xvfb 下启动后存活满 25s(Impeller OpenGL 正常、无崩溃);并且把系统里 53 个媒体库(libmpv / libav / libass / libplacebo …)全部藏起来再跑一次,依旧存活满 25s* —— 证明确实自带运行库、换机器不会因缺 mpv 起不来。macOS 启动后存活满 20s(Impeller Metal 正常)。
两者均未在真人桌面 / Mac 上做完整功能验证,属尝鲜包;遇到问题请开 issue。
Hermes UI v0.1.73
Hermes UI v0.1.73
从 v0.1.72 到 v0.1.73 的累计更新(App 内「检查更新」会直接跳到本版)。
本轮主线是全应用分割线的一次收口 —— 从「各页各写一套线」到「一条常驻发丝线 + 语义分级令牌」,
外加多图附件宫格的排布重做。
分割线:全应用收敛为「一条常驻发丝线」
问题(主人报告):有内容的会话与刚新建的会话,顶栏下沿那条线深浅不一样,向下一滚动就变深。
根因:Flutter 的 CupertinoNavigationBar 默认带一条 #4D000000(黑 30%)边框,在
CupertinoPageScaffold 内由滚动位置驱动、10 逻辑像素内从透明淡入;而页面自己又画了一条 0.5px
发丝线 ⇒ 只要内容能滚动,两条线就叠一起(像素取证:带内容 #B9B9B9 vs 新建 #E3E3E3,底色同为 #F2F2F2)。
改法:
- 聊天页显式关掉 SDK 那条边框(
border: null),改用常驻发丝线NavBarHairline
(0.5 逻辑像素、取结构线令牌色)—— 线不再随滚动淡入,深浅恒定。 - 盘点全仓 43 处导航栏:此前并存三套线色(SDK 默认黑 30% / 写死
#4D000000/ 部分页已用令牌)
与 0.0 / 0.5 / 1.0 三档宽度 ⇒ 统一走线族令牌,24 处导航栏零异色、宽度统一 0.5。 - 新增分割线语义分级令牌(L1 / L2 / L3,
lib/app/theme/divider_tokens.dart):
分割线从此只有一个出口,不再有零散写死的线色。 - 新增共享件
NavBarHairline/NavBarBottom,25 处导航栏接线(设置系 13 + 看板 2 + 诊断 2- 下载 / 后台保活 / 任务 / 引导 ×2 / 安装指引 / Mermaid 全屏)。宽屏固定条总高 44.5
(与侧栏品牌栏 44 落在同一视觉轴);窄屏大标题头部下沿同样常驻一条线。
- 下载 / 后台保活 / 任务 / 引导 ×2 / 安装指引 / Mermaid 全屏)。宽屏固定条总高 44.5
- 刻意不动(各有独立对比度口径,非漏改):看板深色卡片装饰线、输入栏 chip 深色描边、
Mermaid 图表调色板、全屏媒体查看器的恒黑栏。 - 新增源码级守卫:扫
lib/断言每个CupertinoNavigationBar都「关掉 SDK 边框 + 常驻发丝线」,
例外必须在测试里白名单写明理由 —— 以后新增页面漏接线,会被测试当场抓住。
多图附件:宫格改「单行等高」
- 非方图不再被裁成方块:多图附件改为单行等高排布(justified gallery)—— 行内等高、每张按自身
宽高比分配宽度,不裁切、不留白,整行填满气泡可用宽;张数多或比例极端时按具名常量分行与收高,
任何输入都不溢出。 - 末行孤张规避:贪心封行后若下一行只剩一张(4 张会排成 3+1),那张会被收成一个大方块、
整行还填不满(旧形态块高 279pt)⇒ 封行时主动退一张,4 张变 2+2(两行都填满,块高 196pt)。 - 修一处潜在崩溃:同一条消息里两张同名附件会撞同一个
ValueKey(debug 直接抛
Duplicate keys found)⇒ 重复项按出现顺序加#n后缀,首张锚点不变。 - 未解码时按 1:1 稳定占位(首帧不塌陷);单图的
contain路径与文件行条未动。
其他修复
- 设置页分段控件选中标签对比度:深色下选中段与未选中段共用同一个「次级色」,合成到更亮的
胶囊上只剩 2.94:1(低于 AA 4.5:1)—— 选中项成了整行对比度最弱的元素。选中段改主标签色后
2.94 → 5.99:1(浅色 5.38 → 21.00:1),胶囊本体保持 iOS 原生取值。 - 自动加载图片闸门两处:① 关闭自动加载时,加载按钮/提醒不在占位正中(贴左上角、96 瓦片里
文字折成两行);② 返回再点开同一消息后图片又退回「点击加载」(放行态随瓦片卸载即丢)
⇒ 占位改居中(内容中心偏移 ≤1px)+ 放行态记进进程级集合(只记 URL、不落盘、重启即清)。 - 移除消息行悬停浮出的「⋯」:它浮在行尾会遮挡正文。右键、
Shift+F10/ 菜单键(带焦点环)、
窄屏长按逐字未动。 - 宽屏下「新建会话自动打开上下文」视为未开启:宽屏上下文弹层已只剩读数、没有可设置项
(2026-10-07 已移除「当前模型 / 工作区」两个入口),自动弹出来没意义;窄屏语义不变。
质量
flutter analyze零告警;全量flutter test5641 通过 / 230 skipped / 0 失败(Windows 本机实测)。- 金照基线 Windows / Linux 双平台同步补齐(各 22 张),像素取证:18 张窄屏图整体下移
1 物理像素后与原基准逐点 100% 一致(不移位仅 ~91%)⇒ 纯位移、零结构性变化,
变化行就是那条线本身。 - 每处修复都配源码级守卫(悬停不得新增「⋯」、同名附件不得抛异常、justified 排布不得出现
被收高的孤张行、宽屏不得自动弹上下文、分段标签对胶囊 ≥4.5:1、导航栏必须常驻发丝线),
并逐条做了 RED 校验(回退改动 ⇒ 守卫精确变红)。
产物
HermesUI-0.1.73-arm64-app-release.apk(Android arm64 单 ABI,92,264,317 字节)HermesUI-0.1.73-x64-setup.exe(Windows x64 安装包,45,799,397 字节)
Hermes UI v0.1.72
Hermes UI v0.1.72
本轮是桌面弹层 / 选择器族的一次观感收敛,外加一处会话列表缺陷修复。
上下文窗口弹层:宽屏收为「纯读数卡」
- 宽屏弹层 300×364 → 248×162(占屏面积 −63%),只留:大数字 + 「已用 X · 上限 Y」+ 占用进度条 + 输入/输出/阈值/费用四项。
- 大数字 21pt → 17pt(回到字号梯子,不再比页面标题还大);行距、内距、下拉触发器、压缩钮同步收一档;卡圆角 14 → 12(独立卡令牌)。
- 移除「当前模型 / 工作区」两个分区:宽屏输入行上本来就有那两个 chip,进弹层再选一次是重复入口。
- 窄屏(<900)逐像素不变 —— 两个分区、行高、内距全部照旧。
- 顺手修:四项读数与区块标题曾有两套左缘(父子两层各加一次内距);KV 数值侧与工作区标题行补弹性收缩(英文界面下长文案曾溢出)。
选择器 / 弹层内层下拉:拉齐同一套排版语言
- 输入栏「工作区 / 模型」选择器与上下文弹层的内层下拉,共用同一套菜单内容与行(搜索框、图标列、行档、分组线)。
- 宽屏鼠标档:行高 36(双行项 46)、带搜索框与分组线、选中底色 + 蓝字 + 右勾;窄屏触屏档:行高 44、无搜索框(手机端逐像素不变)。
- 注:宽屏上下文弹层已不渲染模型 / 工作区入口 ⇒ 弹层内层下拉现只在窄屏可达(触屏档);该档位由输入栏选择器的用例继续守住。
其他
- 会话列表下拉刷新「闪一下」:内容换新与几何补偿改为同帧落地。
- 用户气泡附件区改「宫格 + 文件行条」;窄屏侧栏当前会话高亮定稿;弹层族三处视觉缺陷修复(浅深布局分叉根治)。
质量
flutter analyze零告警;全量flutter test5607 通过 / 208 skipped(Windows)。- 窄屏硬约束以真渲染逐像素比对取证(上下文弹层改动前后 diff = 0 像素)。
Hermes UI v0.1.71
设置页深色改版 + 四类体验修复
设置页:深浅两主题统一成同一套卡片语言
深色主题此前是「通栏行、方角、无描边」,浅色是「内缩圆角卡片」—— 同一个设置页两副面孔。
现在两侧统一为内缩圆角卡片(16pt 留白 + 14pt 圆角 + 发丝描边),只有取色随主题走;
浅色模式逐像素不变。
修复
- 侧栏分类顺序乱动 —— 会话分组此前按「最近活动」排序,在某个会话里发一条消息,它所属的工作区
就会整组跳到最上面。现在改为确定性顺序(置顶固定在最前、工作区按名称稳定排序、其他固定最后),
不再随活动漂移。 - 侧栏自动刷新会「自己滚」 —— 刷新后列表被重排,视口里的内容会在你眼皮底下被换掉。现在刷新前后
按锚点精确还原(可见行与其偏移逐像素不动),且手指还在拖动时不会换内容。 - 聊天页右上角三点偶尔消失 —— 切会话/进出页面时,三点有时候不见了、只剩左边的「打开项目文件夹」。
真凶是路由转场时 Cupertino 顶栏的 Hero 穿梭层会在同一帧重建顶栏按钮,挂在 GlobalKey 上的按钮元素
被框架抽走(没挂的兄弟按钮则留下)。已根治:顶栏锚点不再使用 GlobalKey,并把这套判据用到全仓
盘查(同类最后一处一并清除)。 - 文字与图标发虚 —— (1)设置页 6 处分段控件此前会被等比缩小以塞进限宽,文字/图标一起被重采样,
实测被压到 0.63~0.91 倍;现在改为「只限宽、不缩放」。(2)次级说明文字的半透明灰此前只有 3.44:1
对比度,现已提到 5.04:1(浅色高对比档 5.97:1),达标 WCAG AA。
其他
- 补齐 Linux 金照基线(此前本地只能重拍 Windows 基线,导致 CI 里金照长期假红)
- 消息列表的行锚点机制去掉了 GlobalKey(同类隐患的最后一处),滚动锚点/大纲跳转行为不变
- 本次为 Windows 安装包内置服务 与 Android arm64 双平台产物;应用内「检查更新」会直接提示本版