Skip to content

feat(windows): add Git Log tool window - #109

Merged
1lck merged 15 commits into
1lck:preview/0.3.0from
yangboxuan726:codex/windows-git-log-tool-window
Aug 16, 2026
Merged

feat(windows): add Git Log tool window#109
1lck merged 15 commits into
1lck:preview/0.3.0from
yangboxuan726:codex/windows-git-log-tool-window

Conversation

@yangboxuan726

@yangboxuan726 yangboxuan726 commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

功能

为 Windows 端增加独立的只读 Git Log 工具窗口,对齐 macOS 参考实现与 IntelliJ IDEA 的底部 Git 工具窗口交互。

  • 底部三栏布局:References、commit graph/list、commit files/detail
  • 展示 HEAD、本地分支、远程分支、Tag 和 refs decorations
  • 支持多 parent 彩色 graph、分页边界和缺失 parent 标记
  • 支持 Text、Author、Branch 筛选,以及 decorations 显隐
  • 支持 commit 文件树、详情、Split Diff、Compare with HEAD、复制 hash/提交信息和右键菜单
  • 支持键盘选择、分栏拖拽和视图偏好持久化
  • 增加底部固定 Git 按钮和 IntelliJ 风格 Alt+9 打开/收起快捷键
  • 复用 fix(windows): improve Git diff viewing and history pagination #103 已合入的累计 History 分页、repository discovery 和 editor routing

截图

Windows Git Log tool window

边界

  • Git Log 保持只读,不新增 Rust Core 契约或依赖
  • 不实现 Merge、Rebase、Cherry-pick、Revert、Reset、Continue、Abort、Skip 或冲突 mutation
  • mutation 入口后续统一调用 Git action API,不与 feat(windows): add merge, rebase, and conflict resolution UI #107 的 Merge/Rebase/冲突处理职责重叠
  • 暂不提供 Path filter;现有 Core history 没有可靠的 path history 契约

验证

  • bun test: 52/52
  • bun run typecheck: 通过
  • scripts/verify-windows-boundaries.ps1: 通过
  • scripts/build-windows.ps1 -Configuration Release: 通过
  • cargo test --manifest-path windows/tauri/src-tauri/Cargo.toml: 27/27
  • Windows 真机手工验收:底部入口、Alt+9、refs、graph、筛选、commit files/detail 和 Split Diff
  • Git graph TypeScript 测试通过;完整 Swift graph verifier 需由 macOS/CI 执行(Windows 环境未安装 Swift)

…ispatcher

- translate git_merge and git_rebase into git.write with qualified
  refs/heads references, mirroring the checkout translations
- add git_integration_preflight, git_operation_state,
  git_operation_continue/abort/skip, and git_conflict_markers
  translations so the frontend can drive the shared core's conflict
  machinery
- map git.operationState responses into a UI-ready shape and collapse
  the no-operation case to null, matching the macOS model
- pass through integration preflight blocking paths and conflict
  marker paths for the upcoming banner and commit guard
- add git-integration-api with preflight-first merge/rebase that
  distinguishes conflict stops from real failures via operation state
- store operationState in the workspace git store and refresh it on
  every status pass so banner state stays true to the repository
- mirror the macOS banner: in-progress title, rebase step counters,
  conflict count, and Continue/Skip/Abort actions
- keep Continue disabled while conflicts remain and re-run resolution
  through the shared core, refreshing state after every attempt
- add a per-branch action menu with Merge into Current Branch and
  Rebase Current Branch onto This behind one confirmation each
- surface clean, conflict-stop, blocked-by-dirty, and failure outcomes
  with the shared core's preflight and operation state
- refuse to commit while the operation state still lists conflicted
  paths or staged files contain conflict markers, with the file names
  surfaced instead of Git's raw refusal
The action wrapper only stopped pointer-down propagation, so the click
that opened the menu also bubbled to the row's checkout handler, which
disabled the trigger and closed the menu instantly. Stop click
propagation like the retired delete button did.
…menu

Button wraps itself in a Tooltip component when given a tooltip prop,
so Base UI's render prop attached the menu trigger handlers to the
tooltip wrapper instead of the real button and clicks never opened the
menu. Pass only aria-label, like the working diff header trigger.
@yangboxuan726
yangboxuan726 force-pushed the codex/windows-git-log-tool-window branch from 99855b6 to 5e02ad7 Compare August 16, 2026 09:26
@1lck
1lck marked this pull request as ready for review August 16, 2026 12:56
@1lck
1lck self-requested a review as a code owner August 16, 2026 12:56
@1lck
1lck merged commit 9550655 into 1lck:preview/0.3.0 Aug 16, 2026
6 checks passed
@yangboxuan726
yangboxuan726 deleted the codex/windows-git-log-tool-window branch August 16, 2026 13:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants