Skip to content

Issue 34

clean edited this page Sep 17, 2026 · 2 revisions

Issue #34:工作区独立分栏与顶部对齐

背景与复现

UI 重构 #33 后,打开多个仓库并展开工作区,顶部标签栏横跨左侧工作区上方,使工作区标题从第二行开始;加号、面板显隐按钮和 tab 内的名称、关闭图标存在错位。用户要求工作区独占完整左列,并统一顶部对齐。

在隔离的 workspace fixture 中打开 remote-git、design-system、empty-repo,切回 remote-git。1440 × 900 下实测:工作区顶部为 y=48;加号中心比面板按钮高 4px;关闭按钮比同 tab 名称低 5px;激活标签整体比其余标签低 1px。

方案与根因

  • 外层网格原本让标签栏和状态栏跨两列,工作区只占第二行。改为工作区贯穿完整左列,右列依次放置标签栏、内容区和状态栏;调整宽度的分隔线也覆盖整列。
  • 工作区展开时,折叠按钮移入左列标题,和管理连接按钮组成居中操作组;收起时,展开按钮和设置入口留在顶部。展开后将键盘焦点交接到新的按钮位置。窄屏继续使用抽屉与 Escape 关闭。
  • 32px 标签继承了旧 40px 标签的关闭按钮外边距,以及激活标签的负底边距;加号继承了 5px 底边距和底对齐。为当前标签栏统一居中布局、显式尺寸、名称行高和横向间距,取消这些垂直偏移。
  • 窄屏旧规则会隐藏加号的图标 span,当前标签栏显式保留图标,只隐藏按钮文字。长名称保持省略显示,关闭按钮不收缩,标签过多时横向滚动。

保留原蓝色主题。变更仅涉及 Layout.tsx 与 workspace-layout.css;布局偏好数据结构、Git/SSH 操作和桌面更新流程不变。

验收标准

  • 工作区从顶部到底部独占左列,标签栏、内容和状态栏的左边界相同。
  • 加号、左右面板按钮、仓库名称、文件夹图标、状态点和关闭图标垂直居中;选中标签不位移。
  • 长名称不挤压关闭按钮,窄屏加号仍可见,标签横向溢出不造成整页横向溢出。
  • 面板显隐、快捷键、鼠标/键盘调整宽度、宽度持久化、标签切换/关闭和抽屉焦点无回归。

验证记录

环境:2026-09-16,macOS arm64,Node.js 25.5.0,Ego Lite Chromium,仓库内 workspace fixture 提供内存 API,未访问真实 SSH 或写入真实仓库。

检查 实际结果
npm ci 通过
首次 npm run test -w web 未通过:全新 worktree 尚未构建 shared,5 个测试文件无法加载依赖
npm run build -w @remote-git/shared 后重跑 npm run test -w web 46/46 通过,解决上述环境准备问题
npm run build -w web 通过;存在与基线相同的 bundle 大于 500kB 提示
git diff --check、Prettier 检查两个修改文件 通过
2048、1440、1024、900、820、390px 宽度 标签栏/内容左边界一致;无整页横向溢出;加号可见;名称、文件夹及关闭 SVG 与面板按钮中心误差不超过 0.5px
1440 × 900 对齐测量 工作区 y=0、高度 900;标签栏/内容/状态栏 x=236;加号、面板按钮、所有标签名称与关闭按钮中心均为 y=23.5
长名称 CSS 压力检查 临时替换页面中一个名称为长文本:tab 宽度上限 220px,名称省略、关闭按钮未越界且保持居中;检查后恢复原名称
调整宽度 键盘 End/Home/方向键有效;从标题处拖动分隔线到 236px 后,重新加载仍为 236px
左右面板与快捷键 单独和同时隐藏/显示正常,隐藏后释放空间;展开工作区后焦点回到折叠按钮
390px 抽屉 打开后焦点进入抽屉,Escape 关闭并回到展开按钮
标签操作 切换正常;关闭当前 remote-git 后选中相邻 design-system;加号进入仓库列表,可以重新打开仓库

修复前

修复前,工作区被顶部标签栏截断且按钮错位

修复后

修复后,工作区完整左列且顶部内容对齐

双侧面板隐藏与窄屏

双侧面板隐藏

390px 窄屏,加号保持可见

风险与回退

未运行原生 Electron 安装包,也未在 Windows/Linux 实机验证;实际 Git/SSH 操作不属于本次布局验证范围。回退代码提交可恢复旧布局,已有布局偏好可继续读取。Wiki 独立维护,回退代码时需单独核对本页。

关联资料

Clone this wiki locally