Skip to content

Git: read-only commit graph (DAG) viewer with worktree-aware HEADs #9732

@NorfeldtKnowit

Description

@NorfeldtKnowit

Pre-submit Checks

Describe the solution you'd like?

A read-only commit graph (DAG) viewer for the current repo, equivalent to the VSCode mhutchie.git-graph extension or JetBrains' Git Log tab. Opened as a new pane or tab alongside Warp's Code Review surface.

v1 scope:

  • Render a lane-based commit DAG, the visual equivalent of git log --graph --oneline --all.
  • Show ref labels on each commit: local branches, remote-tracking branches, tags, HEAD.
  • For each linked worktree, render an extra badge on that worktree's HEAD commit, labeled with the worktree folder name. Default scope shows refs from all worktrees of the same repo, since cross-worktree visibility is a primary reason users adopt worktrees.
  • Scope picker: All worktrees (default) vs. This worktree only.
  • Click a commit, get a side panel: subject, full message, author, date, files-changed list (read-only). "Open diff" hands off to Warp's existing diff / code-review surface; the graph does not own diff rendering itself.
  • Click a ref label, focus the graph on that branch (view operation only, not a checkout).
  • Search by SHA prefix, commit subject, or author.
  • Lazy-load older commits (default page size 500).
  • Use the repo's common gitdir as the data source, so the graph is identical regardless of which worktree it was opened from.

Is your feature request related to a problem? Please describe.

To read a project's history visually I currently have to leave Warp for VSCode (Git Graph extension), JetBrains, gitk, or tig. Warp's existing git surfaces (universal prompt branch indicator, the Changes panel in #8542, the file-status tree in #9587) all answer "what changed now?", not "how did we get here, across branches and worktrees?".

Worktrees compound the gap. If I am in feature-x/ worktree and a teammate (or a parallel agent, see #7929) is iterating in feature-y/ worktree of the same repo, I have no in-Warp way to see both branch tips in one graph and tell at a glance which commits are unique to which worktree.

Additional context

Relationship to existing issues (please cross-link, not dedupe):

Recommended placement: new tab / pane type, accessible from Project Explorer ("Show graph") and via a keyboard shortcut (suggest Cmd+Shift+G, matching the VSCode Git Graph default). Sits next to the Code Review panel.

Worktree enumeration: git worktree list --porcelain. Read-only, well-supported, fast.

Recommendation on the obvious design fork: when multiple worktrees exist, show every worktree's HEAD as a distinct labeled badge by default, rather than a single "primary" HEAD. Users with worktrees almost always want to see all of them; that is why they have worktrees in the first place.

Explicit non-goals for v1 (please do not broaden during spec):

  • No git mutations of any kind: no commit, rebase, merge, cherry-pick, push, pull, branch create / delete, stash apply.
  • No conflict resolution UI.
  • No PR / GitHub / GitLab integration.
  • No reflog or stash visualization.
  • No interactive rebase, commit reordering, or squash UI.
  • No third-party plugin or extension API.
  • No jj (Jujutsu) support in v1, but the data layer should be abstracted enough that adding it later is not a rewrite.
  • No new theming surface; graph uses Warp's existing theme accents.

Prior art (in order of relevance):

  1. VSCode mhutchie.git-graph, ~6M installs. Gold standard read-only graph viewer.
  2. JetBrains IDEs' "Git" tool window, "Log" tab. Strong worktree handling.
  3. gitk. Canonical layout reference.
  4. tig. TUI version, useful for thinking about keyboard navigation.

Operating system (OS)

macOS

How important is this feature to you?

4

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3area:code-reviewGit diff views, review UI, review comments, and PR-focused agent flows.area:workspaceFile tree, workspace navigation, project switching, and working-directory management.enhancementNew feature or request.needs-mocksrepro:highThe report includes enough evidence that the issue appears highly reproducible.triagedIssue has received an initial automated triage pass.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions