Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
664a96d
feat(windows): 设置入口从活动栏底部移至标题栏搜索按钮旁
frankxii Oct 1, 2026
55a4455
fix(scripts): verify-windows-boundaries 豁免过滤兼容 Git Bash/Windows
frankxii Oct 1, 2026
d3fcae0
feat(windows): 底部面板默认通栏并保持活动栏通高
frankxii Oct 1, 2026
0e01f10
feat(windows): 面板去描边、侧边栏间距 6px、Git Log 统一底色
frankxii Oct 1, 2026
4b27ede
fix(windows): Commit files 文件名不再因末尾计数/状态撑开而提前截断
frankxii Oct 1, 2026
66c5351
feat(windows): Git Log 单击提交/文件在编辑区预览单文件 diff
frankxii Oct 1, 2026
3f7c1fe
feat(windows): 右上角 Extensions 按钮再次点击可关闭扩展页
frankxii Oct 1, 2026
9611152
fix(windows): 面板分隔条去掉蓝色高亮,左右光标改为 ew-resize
frankxii Oct 1, 2026
0296201
feat(windows): Source Control 无改动时不再显示 Working tree clean 提示
frankxii Oct 1, 2026
339e1f1
feat(windows): Commit files 去掉 A/M 状态字母,文件数量移到文件夹名旁
frankxii Oct 1, 2026
c23974b
feat(windows): Git Log 去掉 Commit/Author/Date 表头行
frankxii Oct 1, 2026
229aaab
feat(windows): Git Log 日期列改为 12 小时制并显示相对时间(参考 IDEA)
frankxii Oct 1, 2026
a8461bf
feat(windows): Git Log 英文日期改为日/月/年,作者和日期列样式与提交说明对齐
frankxii Oct 1, 2026
cd93b17
feat(windows): Git Log 的 Author/Date 列支持在每一行的列边缘拖动调整宽度
frankxii Oct 1, 2026
d82e75e
feat(windows): Git Log 的 Date 列改为左对齐,左内边距与 Author 列一致
frankxii Oct 1, 2026
254d287
fix(windows): Git Log 列拖动手柄向列内侧扩展,贴近文字起点
frankxii Oct 1, 2026
d108e30
feat(git): Git Log 仅对同时区提交显示相对时间,中文 12 小时制显示上午/下午,鼠标移入行时刷新
frankxii Oct 1, 2026
cb75b26
refactor(windows): 移除 Commit files 树上未使用的 git-commit-file-tree 类名
frankxii Oct 1, 2026
805e79e
test(windows): Git Log 列宽拖动测试改用注入的帧调度器,移除真实定时器
frankxii Oct 1, 2026
86d2547
fix(windows): preserve Git Log preview revisions and invalidate stale…
1lck Oct 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
的布局组件,不要在业务页面里重新拼一套拖动逻辑。拖动过程中要保证界面
稳定、面板不会缩成不可用的尺寸,也不能因为鼠标移动就重建整个页面。
macOS 和 Windows 可以用不同的 UI 技术实现,但用户看到的交互行为和基本
约束必须一致。
约束必须一致。Windows 分隔条使用无高亮的间隙和调整光标,macOS 保留原生风格高亮;这项视觉差异不改变尺寸与性能约束。

## 问题

Expand All @@ -32,8 +32,13 @@ macOS 和 Windows 可以用不同的 UI 技术实现,但用户看到的交互
中,避免每次拖动都重新计算整个功能页面。
- 为面板设置最小尺寸、最大尺寸和可用空间约束。窗口缩放、面板隐藏和
面板恢复后,都不能产生负尺寸或布局溢出。
- 交互应与现有 Git、编辑器和工具窗口保持一致,包括悬停/拖动高亮、
平台习惯的调整光标、帮助文本和无障碍标签。
- 同一平台的分隔条交互应保持一致。Windows 工作台、文件导航和 Git Log 列边缘使用
无高亮间隙以及 `ew-resize` / `ns-resize` 光标,避免连续面板边界出现额外蓝色线条;
macOS 的 `SplitHandleView` 保留悬停/拖动高亮。两端仍须保留帮助文本、无障碍标签、
尺寸限制和拖动结束后持久化。不要为了视觉统一删除这些交互约束。
- Windows Git Log 列宽复用 `utils/document-resize-session.ts`,每帧只写局部 CSS 变量,
结束或卸载时提交一次宽度并释放监听。列的最小和最大宽度限制后,空间不足通过
表格横向滚动处理,不挤掉提交说明。
- 如果尺寸需要在重启后保留,只在拖动结束时通过现有布局持久化机制保存
最终尺寸,不要在拖动过程中持续写入持久化存储。
- Windows 编辑器标签栏的滚轮处理和活动标签可见性判断必须使用内层可滚动
Expand Down Expand Up @@ -78,6 +83,11 @@ macOS 和 Windows 可以用不同的 UI 技术实现,但用户看到的交互
外框还包含固定操作按钮,其宽度不等于标签列表可视宽度。读取外框的滚动
范围会漏掉内层溢出;因此保留外框用于拖动命中判断,滚动使用独立的内层引用。

### 强制两端使用同一种分隔条高亮

不采用。两端的窗口呈现方式不同,Windows 无描边面板依靠间隙和调整光标识别边界,
macOS 继续使用既有原生风格。视觉差异仅限这些分隔条,不放宽生命周期、性能或可访问性约束。

## 后果

- 收益:拖动行为更稳定,面板不会轻易出现负尺寸或溢出,页面重建范围更小。
Expand All @@ -94,7 +104,9 @@ macOS 和 Windows 可以用不同的 UI 技术实现,但用户看到的交互
- Windows 标签滚轮行为测试:
`cd windows/tauri && bun test src/features/tabs/hooks/use-tab-wheel-scroll.test.tsx`
Windows CI 显式运行整个 `src/features/tabs` 测试目录,并生成逐项计时报告。
- 代码审查时确认拖动不会导致高频整页重绘
- Git Log 列宽、日期和布局测试由 Windows CI 的 Git Log 验证步骤运行并输出逐项计时报告。
- 代码审查时确认拖动不会导致高频整页重绘;Windows 人工验证间隙无高亮、光标正确,
macOS 人工确认 `SplitHandleView` 高亮保持不变。

## 适用范围

Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/ci-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,15 @@ jobs:
node $runner --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-git-execution-journal.json -- src/features/git/services/git-execution-journal.test.ts
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Test Git Log previews, dates, columns, and workbench layout
shell: pwsh
run: |
$runner = ".agents/skills/write-stable-tests/scripts/run-bun-tests-with-timing.mjs"
node $runner --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-git-log-preview.json -- src/features/git/hooks/use-commit-file-preview.test.tsx
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
node $runner --suite-timeout-ms 60000 --report .artifacts/test-stability/windows-git-log-layout.json -- src/features/git/hooks/use-git-log-column-resize.test.tsx src/features/git/components/log/git-log-date-cell.test.tsx src/features/git/components/log/git-commit-file-tree.test.ts src/features/git/utils/git-log-columns.test.ts src/features/git/utils/git-log-date.test.ts src/features/git/utils/multi-file-diff.test.ts src/utils/document-resize-session.test.ts src/features/layout/components/plugin-activity-rail.test.ts src/features/layout/components/workbench-panel-frame.test.ts src/features/layout/config/item-order.test.ts src/features/keymaps/defaults/default-keymaps.git-log.test.ts src/features/terminal/stores/terminal.store.test.ts
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

- name: Test workspace Git commit adapters and staging
shell: pwsh
run: |
Expand Down
5 changes: 3 additions & 2 deletions docs/development/platform-parity-matrix.csv

Large diffs are not rendered by default.

Loading
Loading