Skip to content

fix(web): composer pull request row loads whole, closes, and follows the merge queue - #252

Merged
badcuban merged 3 commits into
mainfrom
threadlines/pr-dock-follow-ups
Sep 6, 2026
Merged

fix(web): composer pull request row loads whole, closes, and follows the merge queue#252
badcuban merged 3 commits into
mainfrom
threadlines/pr-dock-follow-ups

Conversation

@badcuban

@badcuban badcuban commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

Four things the docked pull request row got wrong once it was in daily use.

It drew in two beats. The number and chip appeared first, then the project, branch and diff stat when the detail read landed seconds later. The listing behind the thread's own pull request already knows the branch and the size, and the project is the thread's own, so the row now draws whole from those and lets the detail sharpen them when it lands. ThreadPullRequest gains headBranch and diffStat for this.

It could not be closed. A close control on the right hides the row for that pull request in that thread for the session. A thread moving on to another pull request gets the row back, and so does a restart.

"Merge when checks pass" took seconds to take a click, because the switch waited for the host to arm the merge and then be re-read. It now flips on the click (optimistic update on the shared detail query) and rolls back only if the host refuses.

Queued read as off. Once GitHub takes a pull request into its merge queue it drops the auto-merge instruction, so the switch read as unchecked while the chip said Queued, and flipping it re-armed and disarmed the queue entry. The popover now shows "In the merge queue" in place of the switch.

Polling. shouldPollPullRequestDetail now keeps the 20 s poll going while a pull request is armed and the host reports nothing in its way (mergeGate not blocked), so the chip sees the queue take it and the merge land instead of waiting on the five-minute listing. This changes one existing expectation, which said an armed pull request under a queue was a settled state. Armed but blocked still does not poll.

Verified: fmt, lint, typecheck; unit tests for composerPullRequest.logic, pullRequests.logic and pullRequestReference; the ChatView browser test for the docked row, extended to cover closing it.

…the merge queue

Four things the docked row got wrong once it was in daily use.

It drew in two beats: the number and chip first, then the project, branch and diff stat when the detail read landed seconds later. The listing behind the thread's own pull request already knows the branch and the size, and the project is the thread's own, so the row now draws whole from those and lets the detail sharpen them.

It could not be closed. A close control hides the row for that pull request in that thread for the session; a thread moving on to another pull request gets the row back.

"Merge when checks pass" took seconds to take a click, because the switch waited for the host to arm the merge and be re-read. It now flips on the click and rolls back only if the host refuses.

Once GitHub takes a pull request into its merge queue it drops the auto-merge instruction, so the switch read as off while the chip said Queued, and flipping it re-armed and disarmed the queue entry. The popover now shows "In the merge queue" instead of the switch. The detail read also keeps polling while a pull request is armed with nothing in its way, so the chip sees the queue take it and the merge land instead of waiting on the slow listing.
@vercel

vercel Bot commented Sep 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
threadlines Skipped Skipped Sep 6, 2026 4:28pm UTC

Request Review

@github-actions github-actions Bot added size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Sep 6, 2026
…n the line

The chip in a transcript never showed the card the composer row shows, because the link component it renders through dropped every prop it did not know about, and the hover trigger's ref and pointer handlers were among them. The anchor's own props now ride through, so a trigger or tooltip wrapping a link reaches the element.

The chip also drew the transcript link underline through itself and sat a pixel high, aligned to the baseline of its smaller text. It now aligns to the middle of the line and carries no underline.
@badcuban
badcuban enabled auto-merge September 6, 2026 16:28
@badcuban
badcuban added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit fc76db6 Sep 6, 2026
16 checks passed
@badcuban
badcuban deleted the threadlines/pr-dock-follow-ups branch September 6, 2026 16:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant