Skip to content

feat(app): offer git and PR actions in the Diff header, and Close for a PR that can't merge yet - #478

Merged
iamnbutler merged 3 commits into
mainfrom
git-actions-3
Oct 16, 2026
Merged

iamnbutler merged 3 commits into
mainfrom
git-actions-3

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

Part of #20.

The Diff header now offers the same git and PR actions as the details sidebar (Commit, Update PR, Rebase, Address review, Ready for review, Merge, Close), next to its existing Create PR and PR number. Both read the one list useGit builds, and both render it through a new shared GitActionButton (packages/ui/src/components/git-action.tsx), which is the sidebar's former Action row moved out and given a variant: ghost rows in the sidebar, outline buttons in the header. DetailsAction is renamed GitAction since it's no longer sidebar-only. Pending state is shared, so clicking in one place shows the spinner in both.

An open PR that Merge isn't offered for (checks failing or pending, review required or changes requested, or unpushed commits) now gets a standalone Close PR. When Merge or Ready for review is offered, Close stays in their menu as before.

Product calls:

  • Header order follows the list: Rebase, Commit, Update PR, Address review, Ready / Merge / Close, then Create PR and the PR number.
  • Close for an unmergeable PR is a standalone action rather than tucked into the Update PR or Address review menus, so it's always one obvious place.

Smoke test: I ran a host from this branch with isolated ACE_HOME/ACE_CONFIG_HOME (ace serve --loopback), a channel on a new private throwaway repo, and a real model (claude-sonnet-4-5). I drove the built app in headless Chrome. All clicks were in the Diff header:

  • Commit on uncommitted work, then Create PR, which opened PR chore: track features not yet ported from old Ace #1
  • Merge PR offered once pushed, with Close PR in its menu
  • After an unpushed commit, Update PR and the standalone Close PR were offered. Close PR closed the PR.
  • I reopened it with gh. Update PR pushed, so GitHub's head matched the lane's. Merge PR merged it.

The sidebar showed the same actions and pending state throughout. I didn't exercise Address review, which needs a second reviewer to request changes, or Rebase.

Built in Ace

Built with Claude Code outside Ace, in a session already running there; no Ace gap involved.

…d Close for a PR that can't merge yet

The Diff header now shows the same actions as the details sidebar, from the
same useGit list, rendered by one shared GitActionButton. An open PR that
Merge isn't offered for gets a standalone Close PR.

Why: apps/app/src/git.ts#function useGit | the sidebar and Diff header take their git actions from this one list, so neither offers an action the other wouldn't
@iamnbutler iamnbutler mentioned this pull request Oct 16, 2026
10 of 11 tasks
@iamnbutler
iamnbutler merged commit a144dce into main Oct 16, 2026
1 check passed
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.

1 participant