Repository navigation
feat(app): offer git and PR actions in the Diff header, and Close for a PR that can't merge yet - #478
Merged
Merged
Conversation
…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
10 of 11 tasks
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
useGitbuilds, and both render it through a new sharedGitActionButton(packages/ui/src/components/git-action.tsx), which is the sidebar's formerActionrow moved out and given avariant: ghost rows in the sidebar, outline buttons in the header.DetailsActionis renamedGitActionsince 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:
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: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.