[Bug]: "Merge stack" appears late and pushes the stack picker out from under the cursor
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 76/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- react, typescript
- Domain
- frontend
Research direction
Read apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx around line 1304 and apps/web/src/components/pullRequest/PullRequestStackMenu.tsx around line 202. Trace how the header renders while the stack query refreshes, then compare the stacked and single PR control order. Done when the picker stays in place during loading and the stacked PR controls follow one consistent order.
Written by the indexing model from the issue text.
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/web
Steps to reproduce
- Open a stacked PR you can merge. Public demo: GisTypical/t3-stack-demo (PRs 1–5 are a stack, PR 7 is a single PR).
- Pick another layer from the stack picker (
3/5). - Click the stack picker again as soon as it shows.
- Merge stack pops in, pushes the picker left, and the click opens the merge confirmation instead. This repeats on every layer switch.
Expected behavior
Header controls don't move while data loads, and stacked PRs use the same order as single PRs.
Actual behavior
| View | Header order |
|---|---|
| Single PR | [linked threads] [Merge] [Check out] [⋯] |
| Stacked PR, loading | [2/5] [linked threads] [Check out] [⋯] |
| Stacked PR, loaded | [2/5] [Merge stack] [linked threads] [Check out] [⋯] |
The picker jumps 105 px left about 0.7 s after a layer switch (1280×800). The linked-threads button also swaps sides of the merge action between single and stacked PRs.
Cause, at e923627:
- Merge stack only renders once the stack query is fresh (
PullRequestDetailPanel.tsx:1304), but the picker renders from cached data. The row is right-aligned, so the late button pushes the picker. PullRequestStackMenurenders Merge stack next to the picker (PullRequestStackMenu.tsx:202) instead of in the Merge slot, which is why the order differs.
Impact
Minor bug or occasional failure
Version or commit
30f4d63 (dev build); the affected files are unchanged on e923627.
Environment
Linux, Chromium, GitHub stacked PRs made with gh stack.
Screenshots, recordings, or supporting files
https://github.com/user-attachments/assets/8aef5f95-79bd-4e75-b04f-45ad603cd77b
| Single PR | Stacked, loading | Stacked, loaded |
|---|---|---|
Proposed fix
Which would you accept?
- GitHub's layout: move the stack picker to the left, next to the PR status, and render Merge stack in the Merge slot.
- Smaller: render Merge stack in the Merge slot, and keep it mounted but disabled while the stack refreshes.
Both give stacked and single PRs one header order and keep Merge stack disabled until the stack is fresh.
- Dominant language
- TypeScript
- Stars
- 24.8k
- Forks
- 6.4k
- Avg merge
- 2h 54m
- Merged PRs (30d)
- 350
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pingdotgg/t3code
-
[Bug]: Pen taps on sidebar rows start a drag and lose their clickPossibly taken @makhnatkin claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
[Bug]: Guest messages near the 4,000-char limit fail with 400 "The request was not valid." because multipart turns \n into \r\nPossibly taken @juliusmarminge claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
pingdotgg/t3code#26523 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: preview_evaluate forbids WebMCP write tools even when the user explicitly asks for the changePossibly taken A pull request linked to this issue is open or already merged. Openbug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
All issues in pingdotgg/t3code
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
liberation-data/drivine#428 · 1 comment ·
Maintainers usually reply within 1 day
-
GitLab: a merge request closed without merging keeps the Git toolbar on View MR instead of Create MROpen
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
code-yeongyu/oh-my-openagent#11731 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100