Skip to content

fix(web): multi-PR badges open the linked pull requests panel - #13211

Merged
maria-rcks merged 1 commit into
pingdotgg:mainfrom
flamboh:t3code/linked-prs-open-tab
Sep 30, 2026
Merged

maria-rcks merged 1 commit into
pingdotgg:mainfrom
flamboh:t3code/linked-prs-open-tab

Conversation

@flamboh

@flamboh flamboh commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Note

🤖 Claude Opus 5.5 on behalf of Oliver

ELI5

When a thread has several linked pull requests, clicking its PR badge now shows all of them instead of just the newest one.

Problem

A thread with multiple unrelated linked PRs shows a +N badge, but clicking it opened only the most recently linked PR. The badge promises a set and delivers one item; the other links were only reachable through the panel's tab bar.

Fix

Stacked linked PRs already open the thread's Pull requests tab from their badge; this matches that convention, so any badge standing for more than one PR now opens the tab too. A single PR badge is unchanged: it still opens that PR and still supports cmd/ctrl-click to the host. The sidebar and composer footer share this control, so both follow. Mobile's badge is not tappable, so nothing changes there. onOpenStack became onOpenList since it no longer only serves stacks.

UI Changes

Before: clicking +2 opens a single PR.

Before: clicking +2 opens only #12772

After: clicking +2 opens the Pull requests tab with both links.

After: clicking +2 opens the Pull requests tab listing both PRs


Made with Claude Opus 5.5 in Claude Code (via T3 Code). Screenshots by GPT-6 Luna in Codex.

Summary by CodeRabbit

  • Bug Fixes
    • PR badges with multiple linked pull requests now open the thread’s pull-request list. Badges linked to a single PR continue to open that PR.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 23, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at df8fdc3

Macroscope's review found this PR approvable — This small web UI fix changes only aggregate pull-request badge navigation: single PRs remain external links, while multi-PR badges open the existing linked pull-requests panel. The callback renames preserve existing stack behavior, and the remaining documentation update has no runtime impact.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 5113878b-4a90-4878-a613-33746a717491

📥 Commits

Reviewing files that changed from the base of the PR and between aca3c87 and df8fdc3.

📒 Files selected for processing (4)
  • apps/web/src/components/BranchToolbarBranchSelector.tsx
  • apps/web/src/components/Sidebar.tsx
  • apps/web/src/components/ThreadStatusIndicators.tsx
  • docs/user/source-control.md

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Pull-request badges now open the thread’s pull-request list when they represent a stack or have additional linked pull requests. Single pull-request badges retain their existing link behavior.

Changes

Pull-request badge list behavior

Layer / File(s) Summary
Badge list callback and click behavior
apps/web/src/components/ThreadStatusIndicators.tsx, apps/web/src/components/Sidebar.tsx, apps/web/src/components/BranchToolbarBranchSelector.tsx
The badge control uses onOpenList for stacks and badges with additional linked pull requests. Those clicks prevent default navigation and propagation, then open the list. Other badges retain the single-PR click handler. Callers pass the renamed callback.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to df8fd

Multi-PR badges open the linked pull-requests list for the clicked thread. No issue requiring a fix before merge was identified.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 3 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the web fix: multi-PR badges now open the linked pull requests panel.
Description check ✅ Passed The description explains the problem, fix, behavior for single and multiple PR badges, shared controls, mobile behavior, and UI changes with before/after screenshots. It does not use the template's ex…
Full details: Docstring Coverage

Explanation

Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 3 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@maria-rcks
maria-rcks merged commit 0fcd5f9 into pingdotgg:main Sep 30, 2026
25 checks passed
aorwall added a commit to aorwall/t3code that referenced this pull request Sep 30, 2026
Merges upstream `pingdotgg/t3code` `d2c9281b8..0fcd5f9`, 16 commits,
as a merge commit.

- Landed 158 files, against 156 in the upstream range. The two extra
files are `ThreadStatusIndicators.test.tsx` (reset to upstream's copy)
and `docs/fork/inventory.json`. Fork delta: 756 files, unchanged.
- `verify.mjs`, full pass: all 10 checks passed (duplicate-adds,
tripwires, resolution-check, unsupported-methods, lockfile, fmt, lint,
typecheck, build, test).

## Conflicts
- **`ThreadStatusIndicators.tsx`** (converged): the fork delta is
retired. Upstream pingdotgg#13211 makes the multi-PR `+N` badge open the
`pull-requests` panel, which is exactly what the
`task-bound-pull-request` convergence entry watches for. I took upstream
whole and removed the fork's composer-footer popover
(`PullRequestLinksBadge`, the mini-list `onSelect` and its tests).
**Behavior change for reviewers:** in the composer footer, a thread with
several unstacked PRs now opens the right-hand PR panel instead of a
popover. The inventory row is now `theirs`, and the convergence entry is
updated.
- **`BranchToolbarBranchSelector.tsx`**: now uses upstream's
`onOpenList`. The popover props are dropped, and the worktree gate is
kept.
- **`FilePreviewPanel.tsx`** (decide): takes upstream's `relativePath
!== null` read guard and keeps the fork's `onRetargetFile` effect.
- **`ProviderInstanceCard.tsx`**: upstream's new folded Runtime section
for Codex-managed instances stays inside the
`FEATURES.providerConfiguration` gate.
- **`pnpm-lock.yaml`**: re-derived with `install.mjs`.

## Usable as-is
- The multi-PR badge opens the pull requests panel (pingdotgg#13211).
- Command menu descriptions use the full row width (pingdotgg#8865).
- Workspace-root links open in the file explorer (pingdotgg#12449).
- User-input timeline rows show the agent's question (pingdotgg#12900).
- Model ids in inline code no longer turn into file chips (pingdotgg#13909).
- Unresolved PR links use the compact link tooltip (pingdotgg#14243).
- Client parts of the OpenCode Go per-credential limit merge in
`packages/shared` (pingdotgg#14209).

## Unsupported in Moatless / needs implementation
- **Managed ChatGPT sign-in for Codex** (pingdotgg#14290): four new RPC methods,
`provider.chatgpt.reconnect-profile`, `provider.chatgpt.import-profile`,
`provider.chatgpt.handoff.subscribe` and
`provider.codex.auth-callback.subscribe`, plus a desktop auth callback
and mobile ChatGPT usage notices.
- All four share `ProviderSetupRpcError`, which already carries
`UnsupportedMethodError`, so `unsupported-methods` reports no ADD or
DROP.
- The web flow shows only when a Codex instance's config has `setupMode:
"managed"`, which Moatless never reports, so it stays dormant.
  - Recorded under _Provider setup_ in `docs/fork/gaps.md`.

## Backend behavior to consider reproducing in Moatless
Added to _Runtime fixes upstream made to its own server_ in
`docs/fork/gaps.md`:
- **Crashed provider sessions (pingdotgg#10607):** when the provider process dies
mid-turn, settle the in-flight turn as an error and drop the session, so
the next send starts fresh instead of hanging. Upstream did this for
Grok; the same crash can happen to any provider CLI Moatless drives.
- **Codex Pro Max accounts (pingdotgg#14304):** recognise the `promax` plan type,
so the account loads and Ultrafast shows up. Also Codex 0.159 protocol
bindings and a model-manifest bump (pingdotgg#14311).
- **OpenCode Go usage limits (pingdotgg#14209):** merge them per credential.

## Sweep
18 new files match the owned-concern pattern. All of them belong to
pingdotgg#14290's ChatGPT auth, and none touches a fork-owned surface. No new
upstream workflows.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---
Moatless task:
https://moatless.soaplabstest.com/tasks/d0b92fdf-ddd8-46ee-82b8-838c3b6f543e
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 30, 2026
## What's Changed
* fix(shared): merge OpenCode Go limits by credential by @Yash-Singh1 in pingdotgg/t3code#14209
* feat(codex): regenerate protocol bindings for Codex 0.159 by @juliusmarminge in pingdotgg/t3code#14311
* test(server): stop pinning codex install advisory to a release range by @maria-rcks in pingdotgg/t3code#14323
* chore: stop CodeRabbit from editing PR descriptions by @t3dotgg in pingdotgg/t3code#14307
* fix(web): unresolved pull request links use the compact link tooltip by @flamboh in pingdotgg/t3code#14243
* fix(client-runtime): keep model ids in inline code from becoming file chips by @otavio in pingdotgg/t3code#13909
* fix(web): show the agent's question on user-input timeline rows by @saphid in pingdotgg/t3code#12900
* fix(web): open workspace root links in the file explorer by @saphid in pingdotgg/t3code#12449
* fix(grok): recover from crashed provider sessions by @saphid in pingdotgg/t3code#10607
* fix(web): let command menu descriptions use the full row width by @jakaskerjanc in pingdotgg/t3code#8865
* fix(web): multi-PR badges open the linked pull requests panel by @flamboh in pingdotgg/t3code#13211

## New Contributors
* @jakaskerjanc made their first contribution in pingdotgg/t3code#8865

**Full Changelog**: pingdotgg/t3code@v0.0.44-nightly.20260929.2456...v0.0.45-nightly.20260930.2468

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.45-nightly.20260930.2468
adampeterhiggins added a commit to adampeterhiggins/t3code that referenced this pull request Sep 30, 2026
* Update currentModels in model-manifest.json

* chore(release): prepare v0.0.43

* fix(codex): Pro Max accounts load, so Ultrafast shows up (pingdotgg#14304)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(shared): merge OpenCode Go limits by credential (pingdotgg#14209)

* feat(codex): regenerate protocol bindings for Codex 0.159 (pingdotgg#14311)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* chore(release): prepare v0.0.44

* test(server): stop pinning codex install advisory to a release range (pingdotgg#14323)

* chore: stop CodeRabbit from editing PR descriptions (pingdotgg#14307)

* fix(web): unresolved pull request links use the compact link tooltip (pingdotgg#14243)

* fix(client-runtime): keep model ids in inline code from becoming file chips (pingdotgg#13909)

* fix(web): show the agent's question on user-input timeline rows (pingdotgg#12900)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(web): open workspace root links in the file explorer (pingdotgg#12449)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(grok): recover from crashed provider sessions (pingdotgg#10607)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>

* fix(web): let command menu descriptions use the full row width (pingdotgg#8865)

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(web): multi-PR badges open the linked pull requests panel (pingdotgg#13211)

* fix(web): stop clipping the bottoms of diff file names (pingdotgg#14375)

---------

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: Otavio Salvador <otavio@ossystems.com.br>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: Jaka <100130505+jakaskerjanc@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 2, 2026
## What's Changed
* fix(shared): merge OpenCode Go limits by credential by @Yash-Singh1 in pingdotgg/t3code#14209
* feat(codex): regenerate protocol bindings for Codex 0.159 by @juliusmarminge in pingdotgg/t3code#14311
* test(server): stop pinning codex install advisory to a release range by @maria-rcks in pingdotgg/t3code#14323
* chore: stop CodeRabbit from editing PR descriptions by @t3dotgg in pingdotgg/t3code#14307
* fix(web): unresolved pull request links use the compact link tooltip by @flamboh in pingdotgg/t3code#14243
* fix(client-runtime): keep model ids in inline code from becoming file chips by @otavio in pingdotgg/t3code#13909
* fix(web): show the agent's question on user-input timeline rows by @saphid in pingdotgg/t3code#12900
* fix(web): open workspace root links in the file explorer by @saphid in pingdotgg/t3code#12449
* fix(grok): recover from crashed provider sessions by @saphid in pingdotgg/t3code#10607
* fix(web): let command menu descriptions use the full row width by @jakaskerjanc in pingdotgg/t3code#8865
* fix(web): multi-PR badges open the linked pull requests panel by @flamboh in pingdotgg/t3code#13211
* fix(web): stop clipping the bottoms of diff file names by @shivamhwp in pingdotgg/t3code#14375
* fix(web): name the step that registers a mobile client by @Sethmr in pingdotgg/t3code#10963
* test(desktop): Keep WSL busy-runtime fixtures visible when sh is bash by @mwolson in pingdotgg/t3code#14351
* chore: bump vite-plus to 1.0 by @juliusmarminge in pingdotgg/t3code#14462
* fix(web): show double bolts for Codex Ultrafast by @t3dotgg in pingdotgg/t3code#14479
* docs: define contribution triage policy by @juliusmarminge in pingdotgg/t3code#14480
* docs: use explicit contribution triage exemptions by @juliusmarminge in pingdotgg/t3code#14485
* fix(server): Grok CLIs older than 1.0.13 are marked broken by @juliusmarminge in pingdotgg/t3code#14486
* fix(clients): hide disconnected environments when adding projects by @juliusmarminge in pingdotgg/t3code#14490
* feat: start threads without a project by @t3dotgg in pingdotgg/t3code#13612
* fix(server): Claude /compact no longer ends early and leaves the thread busy by @t3dotgg in pingdotgg/t3code#14497
* fix(web): Dark+ and Light+ themes import instead of colliding with built-in ids by @flamboh in pingdotgg/t3code#14499
* fix(web): make composer suggestions usable with screen readers by @akj in pingdotgg/t3code#10154
* perf(release): build and publish npm platform packages concurrently by @t3dotgg in pingdotgg/t3code#14028
* perf(ci): run PR checks side by side and balance server shards by @t3dotgg in pingdotgg/t3code#14025
* perf(release): trim Windows packaging setup by @t3dotgg in pingdotgg/t3code#14037
* perf(release): start Windows builds without waiting for the Linux job by @t3dotgg in pingdotgg/t3code#14027
* perf(release): build Vercel deployments early and go live after publish by @t3dotgg in pingdotgg/t3code#14029
* fix(server): Claude subagents with their own model no longer show the parent's model by @t3dotgg in pingdotgg/t3code#14540
* feat(web): restart the agent session from cmd+k to load new skills and plugins by @t3dotgg in pingdotgg/t3code#14542
* fix(web): hotkey settings record plain keys and Tab by @t3dotgg in pingdotgg/t3code#14548
* fix(release): Windows CLI smoke test no longer fails on temp dir cleanup by @t3dotgg in pingdotgg/t3code#14553
* feat: start a new project from just a name by @t3dotgg in pingdotgg/t3code#14527
* fix(desktop): agent clicks in the browser no longer pop Save dialogs by @t3dotgg in pingdotgg/t3code#14573
* chore(mobile): upgrade to Expo SDK 58 and React Native 0.88 RC by @juliusmarminge in pingdotgg/t3code#12045
* feat(mobile): render the Android subscription widget with expo-widgets by @juliusmarminge in pingdotgg/t3code#12046
* feat(mobile): degrade the agent Live Activity once its content goes stale by @juliusmarminge in pingdotgg/t3code#12047
* feat(notifications): stack agent alerts by thread on both platforms by @juliusmarminge in pingdotgg/t3code#12048
* chore(mobile): drive dev-menu suppression from the dev-client launch URL by @juliusmarminge in pingdotgg/t3code#12049
* fix(mobile): read display scale and width from the view's scene, not UIScreen.main by @juliusmarminge in pingdotgg/t3code#12050
* refactor(mobile): adopt Expo Modules 2.0 for function-only native members by @juliusmarminge in pingdotgg/t3code#12051
* feat(mobile): suppress only the on-screen thread's alert on Android by @juliusmarminge in pingdotgg/t3code#12052
* feat(marketing): replace the screenshot crop with a designed social card by @flamboh in pingdotgg/t3code#13487
* docs: update user count in AGENTS.md by @Kamkmgamer in pingdotgg/t3code#11413
* test(web): remove duplicate sidebar ordering tests by @t3-code[bot] in pingdotgg/t3code#14558
* fix: cloned projects show their favicon instead of a monogram by @t3dotgg in pingdotgg/t3code#14635
* docs: server features are services, and handlers stay thin by @juliusmarminge in pingdotgg/t3code#14613
* fix(ci): pin eas-cli so mobile PR previews deploy again by @juliusmarminge in pingdotgg/t3code#14659
* fix(server): background GitHub polling uses ~74% fewer calls with batched GraphQL by @t3dotgg in pingdotgg/t3code#14673
* fix(web): show the Docker icon on dockerfile code blocks by @chrisdeeming in pingdotgg/t3code#14675
* feat(web): update providers on every machine with one click by @t3dotgg in pingdotgg/t3code#14678
* feat(web): beta Working section hides busy threads until they need you by @t3dotgg in pingdotgg/t3code#13926
* fix(web): PR checks status collapses to its icon instead of wrapping by @flamboh in pingdotgg/t3code#14700
* fix: remove outdated restart setting update advice by @t3-code[bot] in pingdotgg/t3code#14710
* fix(web): keep the terminal toggle clear of the last header action by @Mnigos in pingdotgg/t3code#13426
* fix(web): group composer undo the way the Lexical composer did by @chrisdeeming in pingdotgg/t3code#14674
* fix(desktop): markdown pages no longer render invisible in the dark-mode browser by @shivamhwp in pingdotgg/t3code#14601
* fix(mobile): one No project row at the top of the project picker by @juliusmarminge in pingdotgg/t3code#14532
* Remove unused isCloudDebugEnabled and isTerminalDebugEnabled by @kridaydave in pingdotgg/t3code#14367
* fix(mobile): update Expo 58 to restore widgets and Live Activities by @juliusmarminge in pingdotgg/t3code#14734
* fix(mobile): project picker cards match the settings card color by @juliusmarminge in pingdotgg/t3code#14756
* fix(markdown): keep Windows paths intact in link and image destinations by @SunkenInTime in pingdotgg/t3code#12615

## New Contributors
* @jakaskerjanc made their first contribution in pingdotgg/t3code#8865
* @Sethmr made their first contribution in pingdotgg/t3code#10963
* @Kamkmgamer made their first contribution in pingdotgg/t3code#11413

**Full Changelog**: pingdotgg/t3code@v0.0.44...v0.0.45

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). 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.

2 participants