Skip to content

Issue 171

clean edited this page Oct 2, 2026 · 2 revisions

Issue #171:重新设计 Worktree 弹窗列表的信息层级与操作布局

背景与目标

原有弹窗中的长分支名、完整路径多次换行,每项常驻的红色删除按钮又增加视觉噪声。当前工作区混在其他条目之间,打开、创建和删除的层级不清晰。

本次按现有 Alune-UI 规范重排该业务弹窗,目标是让当前工作区易于辨认、列表便于扫描、常用操作集中。范围仅限 Worktree 弹窗;整体 UI 改版由 Issue #170 跟踪。

方案与取舍

  • 顶部展示仓库上下文,并集中刷新和本地新建操作。
  • 当前工作区放在单独的浅色强调区域,其他工作区显示数量并独立滚动。
  • 常规条目采用分支名、路径两行;文本超宽时省略,通过 Tooltip 查看完整分支和路径。禁用的当前条目也可触发提示。
  • 打开箭头放在小圆形容器内;删除收进每行更多菜单。继续使用原有 L2 弹窗及勾选确认,取消不调用删除接口。
  • 保留裸仓库、锁定、目录失效和游离 HEAD 的说明及原有操作限制;SSH 仓库没有本地创建、删除入口。
  • 更多菜单和整个弹窗分别处理 Escape,关闭后恢复到各自触发按钮;创建和删除弹窗打开时不误关闭父级列表。

参考用户指定的 high-end-visual-design 技能,采用柔和结构、嵌套表面、细线图标和克制动效。遵循 UI 规范 和 弹窗系统 的紧凑桌面工具节奏,不将展示页的大标题、巨量留白或滚动入场动画直接搬入业务列表。

具体采用参数:最大宽度 440 CSS px,常规条目最小高 68px,桌面内容边距 16px,窄窗口 12px;分支 13px、路径 Geist Mono 10px、标题 15px。颜色、圆角、浮层阴影及过渡复用共享 token,没有引入全局主题或字体变更。删除旧 index.css 中与列表布局重复的分隔线样式。

验收标准

  • 当前工作区独立置顶,其他条目滚动时保持可见。
  • 常规条目维持两行,完整分支和路径可通过提示读取。
  • 新建、刷新、打开、错误重试和删除确认流程保持可用。
  • SSH 与特殊状态的原有能力和限制保持一致。
  • 更多菜单 Escape、父面板 Escape 和焦点恢复通过检查。
  • 浅色/深色、320px/390px 窄窗口无横向溢出,减少动态效果设置生效。
  • PR 审阅并合入 development。

前后截图

下列图片中的本机用户目录前缀已使用不透明色块遮盖。原始反馈截图由用户提供,版本与缩放比例未提供;新版为 2026-10-02 在 macOS arm64 / Chromium 中渲染真实组件的截图,API 返回值使用临时模拟数据。两者缩放和裁剪范围不同,不据此推算像素级高度变化。

原始反馈

Alune 原 Worktree 弹窗:路径换行、删除按钮常驻

浅色与深色

Alune 新 Worktree 弹窗浅色:当前工作区置顶、列表两行、操作集中

Alune 新 Worktree 弹窗深色

窄窗口长列表

Alune 390px 窄窗口:当前工作区固定,其他工作区独立滚动

验证记录

环境:2026-10-02,macOS arm64,Node.js v25.5.0。以下运行结果对应本次实现;代码基线与原工作分支的文件树一致,转入 development 的新分支没有引入额外源文件差异。

命令或场景 结果与边界
npm run build -w web TypeScript 与 Vite 构建通过;保留既有大包体积警告
cd apps/web && node --import ./tests/resolve-ts.mjs --test tests/worktrees.test.mjs 3 项通过:登记/标签去重、过期登记响应、跨工作区状态与 Diff 隔离
npx prettier --check apps/web/src/components/WorktreesPanel.tsx apps/web/src/workspace-layout.css apps/web/src/index.css 通过
git diff --check 通过
真实组件与 store,模拟 API:新建及打开 分别进入对应新建/打开的仓库路由;未访问真实 Git 目录
更多菜单、删除确认 Escape 恢复更多按钮焦点;未勾选时确认按钮禁用;取消不调用删除接口
父弹窗与完整文本提示 Escape 关闭后恢复工具栏焦点;禁用当前条目可查看完整分支与路径
特殊状态、SSH、空列表与错误重试 锁定/失效条目没有删除入口;裸仓库不可打开;游离 HEAD 显示提交;SSH 无本地操作;空列表与错误重试正常
390px/320px、长列表、减少动态效果 无横向溢出;列表可滚动、当前工作区位置稳定;减少动态效果下过渡为 0s
Windows/Linux 原生桌面、安装包、真实 SSH/Git 创建删除、200% 缩放、专门对比度测量 本次未重新运行;不计为通过

浏览器验收使用临时预览夹具,检查完成后已移除;不作为新增自动化测试交付。

兼容性与回退

无 API、Git 命令、持久化格式或共享组件实现变更。删除入口增加一级菜单,超长内容通过提示读取。应用层修改集中在 WorktreesPanel.tsx、workspace-layout.css 和旧规则清理,回退代码提交即可恢复原列表;Wiki 记录需单独回退。

代码与关联资料

Clone this wiki locally