emrg: GUI 完全重设计 P1 — 双主题 token + 布局 + renderer 骨架(rant 08-05) - #417
Conversation
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260806-0710
并行实例的完整 GUI 重设计实现(P1-P4 一次到位),质量审查通过:
- renderer 完整重构为 css/(5) + js/(7),模块化清晰(Chat/Sidebar/Dialogs/Copy IIFE)
- 工具友好行 ✓(spinner/label/chevron/折叠展开/2000 截断)| ✦ 消息标识 ✓ | 空状态欢迎屏 ✓ | 模型切换器 ✓ | 断连横幅 ✓
- 事件契约完整(全部 12 类事件),IPC 边界保持:preload/daemon_client/main.js 零改动 ✓
- 无 TODO/FIXME/console.log;JS 语法全过;npm test 29 全绿 ✓
- 设计色值/圆角/间距精确对齐 docs/design/gui-redesign.md
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260806-071437
本轮独立复核(已 merge 最新 master 144e707,无冲突,22 pass/8 skip 无回归):
- 双主题 token 精确对齐设计色值(浅 #fafafa/#16a06c、深 #17181c/#2fbf83)✓
- 布局:侧边栏 264px + 居中 760px 聊天 + 输入卡片;窄屏自动收起 ✓
- chat.js 流式 delta 只动 textContent、done 走 requestIdleCallback 整体 marked(G127 契约保留)✓
- 工具友好行 running→done/failed + 2000 字符截断展开 ✓
- 去黑话文案映射(copywriting.js)完整 ✓
- 事件契约 12 类全保留;preload/daemon_client/main.js 零改动 ✓
- 冒烟:7 模块按序加载、boot 两路径、流式/工具状态流转通过 ✓
与 #418(main.js 多模型+主题持久化)完全配套:dialogs.js 传 theme,#418 接收落盘。建议 merge 顺序:#417 → #418。
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260806-071437
本轮独立复核(已 merge 最新 master 144e707,无冲突,22 pass/8 skip 无回归):
- 双主题 token 精确对齐设计色值(浅 #fafafa/#16a06c、深 #17181c/#2fbf83)✓
- 布局:侧边栏 264px + 居中 760px 聊天 + 输入卡片;窄屏自动收起 ✓
- chat.js 流式 delta 只动 textContent、done 走 requestIdleCallback 整体 marked(G127 契约保留)✓
- 工具友好行 running→done/failed + 2000 字符截断展开 ✓
- 去黑话文案映射(copywriting.js)完整 ✓
- 事件契约 12 类全保留;preload/daemon_client/main.js 零改动 ✓
- 冒烟:7 模块按序加载、boot 两路径、流式/工具状态流转通过 ✓
与 #418(main.js 多模型+主题持久化)完全配套:dialogs.js 传 theme,#418 接收落盘。建议 merge 顺序:#417 → #418。
|
修复已提交:#420(CI syntax check 兼容 js/ 子目录)。#420 先 merge 后,本 PR 需 rebase origin/master 让 CI 重跑。rebase 命令: |
#417 将 renderer/app.js/markdown.js 移至 renderer/js/,CI test.yml 的 syntax check 仍检查旧路径 renderer/app.js → CI 失败 (Cannot find module .../renderer/app.js)。 修复:改为 glob 兼容两种结构—— - 旧结构:renderer/app.js + renderer/markdown.js(存在才检查) - 新结构:renderer/js/*.js(含 chat/sidebar/dialogs/copywriting/utils) [ -f ] || continue 保证不存在的路径跳过,不因 glob 无匹配而失败。 验证:master 旧结构 + #417 新结构均 syntax check 通过。 Co-authored-by: EMRG Evolution <emrg@argszero.dev>
GUI 重设计(#417 renderer 完整重写 + #418 main.js §7.1 多模型/主题 + #420 CI 修复) 已全部 merge 到 master,bump v0.2.5 发布: - 6 处版本同步:pyproject / __init__ / gui package.json / uv.lock / build-runtime.sh / make-installer.sh(版本一致性测试保障) - 触发 build-release CI 打包验证(rant 验收 6:打包产物 GUI 正常) Co-authored-by: EMRG Evolution <emrg@argszero.dev>
修复 #417 遗留:sidebar.js 注释声明"右键重命名/删除",但 showConvMenu 只实现了删除(注释自认"P3 完善重命名")。main.js 的 renameSession IPC 自 #418 起已存在,但 preload 未透传、renderer 无 UI 消费——重命名功能 从未到达用户。 改动: - index.html:新增 rename-dialog(预填当前标题,Enter 提交)+ ctx-menu 容器 - app.js:showConvMenu 改为真右键菜单(✏️ 重命名 / 🗑 删除对话), 点击别处/ESC 隐藏,视口内定位 - dialogs.js:showRename/submitRename/initRenameDialog(调 renameSession + refreshSessions) - preload.js:透传 renameSession(main.js handler 已存在,补桥接) - components.css:ctx-menu/ctx-item 样式(白底卡片+阴影+大圆角,danger 红色) - renderer.smoke.test.js:新增右键菜单+重命名测试(35 用例全绿) 验证:npm test 35 绿 + pytest 472 绿 + node --check 全通过 Co-authored-by: EMRG Evolution <emrg@argszero.dev>
GUI 完全重设计 P1 — tokens(双主题) + base + layout + renderer 骨架
对应 rant(2026-08-05T21:59:47,GUI 完全重设计:面向非开发者)P1 阶段:
tokens(双主题)+base+layout+骨架(布局正确主题切换)。
改动内容
新增 CSS 体系(renderer/css/)
tokens.css— 设计 token:浅色/深色双主题色板(品牌生机绿 #16a06c/#2fbf83,全部色值按设计稿)、字体栈、圆角(气泡 18px/输入 12px/卡片 14px/对话框 20px)、三档柔和阴影、8px 间距网格、动效时长(150/250/350ms)base.css— reset / 系统字体栈 / 滚动条 / 输入焦点态layout.css— 侧边栏 + 主区布局、居中单栏聊天(最大 760px,左右留白 ≥24px)、输入卡片、断连横幅、窄屏自动收起侧边栏(≤720px)components.css— 组件:对话项(时间分组 今天/昨天/更早)、用户气泡(右对齐 accent-soft 圆角 18px)、EMRG ✦ 消息(全宽无气泡)、Markdown 排版、工具友好状态行(◌ 进行中琥珀 / ✓ 完成绿色 / ⚠ 失败红色,默认折叠点开展示原始输出 2000 字符截断)、空状态欢迎屏(✦ 你好 + 示例问题卡片)、圆形发送/停止按钮、模型切换器、对话框(设置分组/首启向导/确认对话框)、主题三选animations.css— 消息上浮淡入、光标脉动、工具旋转指示、对话框进入、横幅滑入(克制,只动 transform/opacity)新增 JS 模块(renderer/js/)
utils.js— DOM 助手 / requestId 生成(G143)/ 时间分组 / 主题应用markdown.js— 从旧 renderer/markdown.js 迁移(marked + DOMPurify + hljs 封装不变)copywriting.js— 去黑话文案映射(工具名 → 友好动词短语:"正在读取文件…"/"✓ 已读取文件";系统级:"连接中断了,正在重新连接…"、"我还在处理上一条,稍等一下哦"、"删除这段对话?删除后无法恢复")chat.js— 聊天渲染:用户气泡/✦ 消息/流式 delta(textContent 不解析 Markdown)/工具友好行(running→done/failed)sidebar.js— 对话列表:按今天/昨天/更早分组、只显示标题(去 session ID/消息数)、右键删除(友好确认)dialogs.js— 设置(模型服务/工作目录/外观主题三选)、首启向导(口语化文案)、确认对话框(替代 confirm/alert)app.js— 主控:boot/事件处理(main 契约不变)/模型切换器(下拉展示全部模型 + 🖼 vision 标记 + 即时切换)/快捷键(⌘N/⌘B/⌘,/ESC)/连接状态圆点/断连横幅删除
renderer/app.js(647 行单文件 → 拆分为 7 个模块)renderer/app.css(316 行暗色终端风 → 双主题体系)renderer/markdown.js(迁入 js/markdown.js)边界合规(rant 技术约束)
验证
node --check全部 JS 通过EMRG_SKIP_INTEGRATION=1 npm test:22 pass / 8 skip(无回归)后续阶段(本 PR 不含)
P2 chat 精修 → P3 sidebar 右键菜单/折叠 → P4 dialogs 多模型管理 + main.js 扩展 + 文案全映射 → P5 动效打磨/深色校准 → P6 测试更新 + 三平台验证