Issue 140 - ShaoClean/Alune GitHub Wiki
Issue #140:文件树按 Git 状态显示颜色
- 类型:优化
- 状态:已实现,待审阅
- Issue:https://github.com/ShaoClean/Alune/issues/140
- PR:https://github.com/ShaoClean/Alune/pull/142
- 最近更新:2026-10-07
- 代码提交:
fe6099f(codex/issue-140-file-status-colors)
背景、目标与范围
文件视图此前所有条目颜色相同,用户需要切换到改动视图确认 Git 状态。本次在现有目录树上增加状态颜色、字母标记和中文可访问名称;本机及 SSH 共用仓库状态数据,不增加 Git 查询接口或更改数据格式。
方案与取舍
| 状态 | 标记 | 颜色 |
|---|---|---|
| 新增 | A | 绿色文字和背景 |
| 未跟踪 | U | 绿色文字和背景 |
| 修改 | M | 琥珀色文字 |
| 重命名/复制 | R/C | 绿色文字 |
| 删除/冲突 | D/! | 红色文字 |
颜色语义参考 VS Code,具体色值复用 Alune 的 --green、--green-soft、--orange、--red,由现有浅色/深色主题解析。悬停使用绿色混色,选中保留蓝色侧边标识、加粗文件名,键盘聚焦保留轮廓。
同一路径多状态优先级:冲突 > 删除 > 新增 > 重命名 > 复制 > 修改 > 未跟踪。已暂存新增后继续修改仍显示绿色。目录用圆点汇总优先级最高的子项状态;普通干净文件及忽略文件不着色(2026-10-01 基线;忽略状态补齐见下方 2026-10-07 记录)。Git 路径按字面值处理,不转换合法的反斜杠、空格或换行。
文件树仍以磁盘条目为准,不插入已删除的虚拟文件;刷新前保留的旧条目若仍存在可显示 D。状态签名变化时刷新可见目录和预览并保留展开/选择;相同状态的重复响应不额外读取目录。未更改原有仓库状态刷新周期。
验收标准
- 未跟踪及已暂存新增文件显示绿色背景。
- 修改、重命名、冲突等状态有相应配色与文字标记。
- 干净文件正常显示;显式刷新后状态与 Git 一致。
- 深浅主题、悬停、选中和键盘聚焦可辨认。
- 本机和 SSH 共用规则,目录展开、选择和预览正常。
验证记录
2026-10-01,macOS;真实临时 Git 仓库、本机 Chromium、隔离的本机 SSH/SFTP 服务。创建了真实合并冲突,同时覆盖新增已暂存后再修改、未跟踪、修改、重命名、删除及干净文件。
| 检查 | 结果 |
|---|---|
npm test -w web(发起 PR 前复跑) |
203 项通过 |
npm run build -w web(发起 PR 前复跑) |
通过;已有 bundle 大小提示 |
git diff --check |
通过 |
| 新增状态规则及特殊路径测试 | 通过,包括真实 Git 暂存、重命名、删除及提交恢复干净 |
| 深浅主题正常/选中/悬停文字对比度 | ≥ 4.5:1 |
| 本机/SSH 目录展开、选中及预览 | 通过 |
| 取消暂存 A → U、放弃后清除 M | 显式刷新后通过 |
| 新文件出现在已打开的树中 | 显式刷新后通过 |
| 提交后清除所有状态标记 | 本机/SSH 通过,选中和预览保留 |
复验 fixture:先构建 shared、ssh-client、server 和 web,再运行 node apps/web/tests/files-status-fixture.cjs,打开输出的本机及 SSH URL。测试数据位于临时目录,退出时清理。
前后截图
以下为实际验收截图的文件树区域裁剪,未修改界面内容;截图采集于本功能工作区,裁剪排除了当时并行进行的 #135 文件操作工具栏。修改后出现的 appeared-after-open.txt 用于验证刷新新增条目。代码提交已与 #135 分离,PR 前测试和构建再次通过。
| 主题 | 修改前 | 修改后(新增条目选中、悬停且键盘聚焦) |
|---|---|---|
| 浅色 | ![]() |
![]() |
| 深色 | ![]() |
![]() |

未验证项、风险与回退
- 后台定时刷新在浏览器验收中未触发;未标记为通过。状态同步验收使用显式“刷新仓库”,本 PR 不调整刷新周期。
- 未验证 Windows/Linux 原生桌面应用;SSH 为真实协议连接至本机隔离服务,未使用私人远程服务器。
- 无持久化或数据库迁移。回退代码提交可移除装饰;Wiki 独立维护,代码回退不会自动回退本页。
2026-10-07 补充:忽略文件灰色显示
PR #207 补齐 Git 忽略文件与目录的灰色装饰,采用 VS Code 默认浅色 #8E8E90 和深色 #8C8C8C。通过目录读取时的批量 Git 查询识别忽略状态,本地与 SSH 共用实现;已跟踪路径及 ! 例外保持相应状态,选择、展开及预览可正常使用。
实现和验收已完成,PR 待审阅;代码提交 67956bf。补充验收记录 包含 31 项前端测试、8 项真实 Git/SSH 测试、构建、Electron 深浅主题及显式刷新结果和前后截图。后台自动刷新及 Windows/Linux 原生界面继续标记为未验证。



