UI 打磨批次 + renderer 简化重构(7 项) - #38
Merged
Merged
Conversation
- docs: 更新 README/README.zh(Homebrew 安装、macOS 更新行为修正、0.4.3-0.5.3 新功能清单:子代理/上下文蒸发/视觉代理/报错系统/LAN 观察/订阅 OAuth 等) - assets: CDP 确定性截图重拍 README 演示图 3 张(欢迎页+桌宠 / UI 插件设置 / 深色背景聊天) - fix(MessageList): 被打断轮(纯工具轮无正文)diff chip 与折叠组圆点行重叠 8px —— chip 上提 -mt-4 与 MetaGroup -mb-4 叠加所致,chip 前邻折叠组时不再上提 - fix(errors/reducer/mapping): 用户主动中断不再落「模型请求失败」错误卡 —— SDK 把 in-flight 请求取消标成 stopReason=error(This operation was aborted / Request aborted),live 与历史回放统一用 isUserAbortError 排除;含 abort 字样但主动语态的真实错误仍产卡(回归保护) - style: 键盘焦点环 :focus-visible 统一接管(accent 低饱和描边,替代 Chromium UA 默认环) - scripts: 新增 CDP 断言截图工具 cdp-shot.mjs 与 GIF 帧场景编排 shoot-demo-gif.mjs
- 触发从「仅文本开头」改为光标探测:/ 在行首或空白后即弹菜单 (extractSlashToken,与 @ token 同构;onSelect 光标移动重探; 胶囊已存在时不触发) - 选中/Tab 补全:命令转胶囊、触发 token 原地移除、其余文字保留 为参数(发送拼 /cmd args,SDK 仅展开开头命令,故需提升为胶囊 而非原地留文本);无参内置 compact/settings 仅整条文本恰为该 命令时保持选完即跑 - Esc 从清空全部改为收起菜单保留文字;胶囊撤销(Esc)支持非空 文本,命令拼回开头
- MetaGroup 圆点 error 态从 ink-faint 改 warn token(琥珀,深浅色自适应) - 代码块:语言标签胶囊 display:none;折叠按钮 showCollapseButton:false 关闭(不再支持折叠),清除 :has(aria-pressed) 折叠态残留规则 - 首行灰底根因:markstream 的 monaco 默认值(renderLineHighlight:"none" 等)只对 diff 块生效,普通块光标恒停第一行 → 当前行高亮让首行多一层 灰底;经 codeBlockProps.monacoOptions 显式关闭 - 输入框顶部图片缩略图的 × 删除键 -top-1.5 伸出容器顶落入消息区, 被 MessageList(z-10)盖住:ApprovalDock 两个分支根节点提为 z-20
stream-monaco 用 new URL(裸说明符, import.meta.url) 拼 worker 地址, dev 下被 Vite 预打包进 .vite/deps/chunk-*.js 后指向不存在的 .vite/deps/monaco-editor/esm/... → worker 404:终端 "The file does not exist" 警告 + renderer "Uncaught [object Event]"(每次代码块 编辑器实例化触发)。 用 Vite 官方 monaco 模式修复:monaco-contribs.ts(main.tsx 早期引 入)经 ?worker 导入抢先注册 self.MonacoEnvironment.getWorker, stream-monaco 的 ensureMonacoWorkers 检测到已有 getWorker 自动让位。 只注册 editor + typescript 两个 worker:只读代码块语法高亮由 shiki 主线程承担,language service 用不上,其余语言 label 落 editor worker 兜底,避免打包 5 个 worker 膨胀产物。
- 容器去边框(border:none 压掉库的 border 工具类 + inline borderColor),--ms-radius 抬到 12px,shadow-soft——设计语言 rounded-xl bg-surface shadow-soft 同 QueueBar/TodoPanel - 语言标签隐藏后 header 只剩按钮组落到左侧:justify-content: flex-end 靠右,复制钮回到右上角
- 阴影:shadow-soft 的 0 0 14px -2px 微光在 700px 宽卡片上左右不可 见,改双层环境光(近场 0 2px 24px -2px + 远场伞 0 0 64px -12px), 颜色从 ink 派生(color-mix)——深色 ink 为浅色自动变白色发光, 符合既有深色阴影约定 - 黑杠根因:Monaco 概览标尺(overview ruler)的光标行标记,又是 库默认值只对 diff 块生效的漏网之鱼;monacoOptions 补 overview RulerLanes:0 / renderOverviewRuler:false / overviewRulerBorder: false / hideCursorInOverviewRuler:true
双层大伞环境光叠太重,700px 宽卡片糊出一圈灰框(观感像被正文 边界截断)。改回 shadow-soft 柔和微光,卡片左右各收 8px 给阴影 外扩(约 12px)留出空间,四周完整悬浮。
- 显示当前会话 cwd 的分支,只读:点击展开本地分支列表(当前分支 圆点高亮),不做切换(空态 ProjectBranchPicker 才是切换入口), 列表无 hover/click 态避免假交互 - 显示条件与 showEmpty 同判定:有消息或流式中才显示,新会话隐藏 (输入框下方已有分支选择器);非 git 目录不渲染 - 卡片形态照 TodoPanel:rounded-xl bg-surface shadow-pop,胶囊 w-40 ↔ 面板 w-56 + grid-rows 0fr→1fr 抽拉 300ms,点击外部关闭 - 数据走已有 IPC listGitBranches,零新增通道与文案
- 折叠态分支名原挂 shrink-0 + truncate:shrink-0 阻止收缩使 truncate 失效,长名被容器 overflow-hidden 硬裁无省略号;改为 min-w-0 + truncate - 折叠/列表行补 title 悬停看全名 - 临时长名分支实测两处截断后已删
- 左上角悬浮胶囊被用户判为突兀;分支与变更同域(仓库状态), 收进 DiffSidebar:header 下方一条幽灵文字行(⎇ 分支名,11.5px ink-faint,hover 现 bg-hover 底),点击下弹只读分支列表(无边框 浮卡 shadow-pop,当前分支圆点 + 加重),点击外部关闭 - 列表行无 hover/click 态避免假交互(切换仍走空态 ProjectBranch- Picker);显示条件不变:有消息内容才显示、非 git 目录不渲染 - 分隔线从 .diff-side-head 移到 .diff-side-branch(head+branch 同为一组头部);数据仍走已有 IPC listGitBranches - 删除消息区左上角悬浮胶囊 BranchBadge(App.tsx 挂载一并移除)
…Message,readOnly/busy selector 收敛为 hooks
…bel 挪 meta-summary-label
…roviderForm 拆出 ModelRowsEditor/BuiltinProviderEditForm
…ab),依赖单向 catalog→settings
…tOpen 挪到 LoginDialog 卸载 cleanup
…可选),MessageList 删本地计算,lan-web 加未知行型 guard
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UI 打磨批次
renderer 简化重构(纯重构,零行为变化)
7 项结构收敛,8+1 commits 各自独立可回退:
loadSessionBundle(取数并行化,应用顺序不变)message-actions/UserMessage/SystemMessage;readOnly×3、agentActive||compacting×2 重复 selector 收敛为hooks/use-session-state.tsuse-sweep-highlight.ts,展示与动画分离catalog.ts(目录搜索/装卸)与provider-login.ts(OAuth 状态机),依赖单向;登录取消时机从 setOpen 挪 LoginDialog 卸载 cleanupuse-session-event-bridge.tssettings/extensions/目录 +ModelRowsEditor/BuiltinProviderEditForm独立文件质量门:typecheck / lint(373 files 0 err 0 warn)/ test(458+289,净增 7 例)全绿;设计→实施→review 全程经跨会话频道协作(spec/plan/REVIEW 存档于 .local,不入库)。