Skip to content

fix: review panel labels, fetching for Rebase, Push, and Create PR after a closed PR - #575

Merged
iamnbutler merged 3 commits into
mainfrom
fix-review
Oct 22, 2026
Merged

iamnbutler merged 3 commits into
mainfrom
fix-review

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

Fixes the Review panel gaps from the Ace map (^684 ^706 ^688 ^693 ^687 ^708 ^710; Q221 answered "Add Push").

  • ^684 File headers name their group (README.md Committed, README.md Uncommitted) when a file is listed in both. The Diff header names the lane's base ref (origin/main), not the fork commit's SHA (Changes.against).
  • ^706 A new fetch channel op fetches the lane's remote-tracking base; the Diff calls it on open and once a minute while visible and focused. changes still never fetches. The Diff now publishes its polled changes, so Rebase reaches the header and sidebar without a reload.
  • ^688 A group with only binary files or summarized folders totals as N files, not +0 -0.
  • ^693 Changes rows and file tree titles pluralize (1 addition, 0 deletions).
  • ^687 The file tree and split mode live outside the content that remounts when the file list changes, so the tree stays open.
  • ^708 / Q221 Push N asks the agent to push (lane push in a lane, git push otherwise) when the branch has commits its remote lacks (Changes.ahead: past its upstream, or past the fork point of an unpushed lane with a remote). Works for non-GitHub remotes.
  • ^710 Create PR comes back after the branch's PR is closed, or merged when the branch has moved past it or has uncommitted work. Create PR's pending state now waits for an open or draft PR.

Smoke-tested on a loopback host (port 4432, isolated home/config/keychain) with headless Playwright:

  • local project with a bare non-GitHub origin; lane review/wave with a committed and an uncommitted README edit, a binary file and a 150-file untracked folder: grouped headers, wave -> origin/main, Untracked 151 files, Push 1; the tree stayed open after a new file appeared.
  • pushed two commits to origin from another clone: opening the Diff fetched and showed Rebase +2 without a reload.
  • clicked Push: the agent ran lane push to the bare remote and Push went away.
  • clone of githubnext/ace on fix-project-remove (merged fix(host): keep removing projects to the host's owner #571) with an edit: sidebar shows fix(host): keep removing projects to the host's owner #571 and Create PR (not clicked).

The 15 drifted notes lane check still lists are on files this PR doesn't touch.

Built in Ace

No. Built with Claude Code as a fix-train worker against the Ace map, outside Ace (#5).

…ter a closed PR

- File headers name their group when a file is listed both committed and uncommitted.
- The Diff header names the lane's base ref (origin/main), not the fork commit.
- The Diff fetches the lane's remote base on open and every minute through a new `fetch`
  channel op, so Rebase appears; `changes` itself still never fetches.
- Group totals with only binary files or summarized folders show a file count, not +0 -0.
- Additions and deletions pluralize in labels.
- The file tree and split mode stay as chosen when the file list changes.
- Push asks the agent to push a branch its remote is missing commits from, without a PR.
- Create PR returns after the branch's PR is closed, or merged with work since.

Why: packages/channel/src/changes.ts#function fetchBase | fetching stays a separate op the Diff calls once a minute; the changes read polled every 2 s must never fetch
Why: packages/ui/src/components/diff/diff-view.tsx#function DiffView | view choices (tree, mode) live outside the keyed content, which remounts whenever the file list changes
@iamnbutler
iamnbutler merged commit 2c573a3 into main Oct 22, 2026
1 check passed
@iamnbutler
iamnbutler deleted the fix-review branch October 22, 2026 14:48
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