Skip to content

feat(web): open right panel tab menu with Mod+T - #15686

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
Bil0000:t3code/right-panel-new-tab-menu
Oct 7, 2026
Merged

juliusmarminge merged 4 commits into
pingdotgg:mainfrom
Bil0000:t3code/right-panel-new-tab-menu

Conversation

@Bil0000

@Bil0000 Bil0000 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Problem

Choosing a new right-panel tab requires clicking +.

Change

In the desktop app and installed PWAs, Cmd+T on macOS or Ctrl+T on Windows/Linux opens that menu while the panel is open and the terminal does not have focus. The shortcut is configurable as rightPanel.new and works in chat, the narrow-screen sheet, and the PR page. It uses the existing menu and keyboard selection.

Regular Chrome and Firefox tabs reserve Cmd/Ctrl+T for opening a browser tab, so this default does not open the panel menu there.

Scope and approval

One default shortcut change. Maintainer approval of direction and scope is still pending.

Verification

162 focused tests, web and shared typechecks, targeted lint, and formatting checks pass. The new Windows/Linux terminal-focus cases failed before the guard and pass with it.

Earlier real-app checks on macOS confirmed menu opening, Terminal selection, and Escape. Browser-native keys and focused embedded browser pages remain unverified.

Visual proof

Full app with an isolated backend and test project. Before uses the previous tab component; after uses the PR code. The 12-second clip uses automated Cmd+T → T events to open a Terminal tab.

Before: Cmd+T leaves the menu closed

After: Cmd+T opens the menu

t3-mod-t-real-keyboard-flow.mp4

Model: GPT-6.1 Sol, high reasoning effort. Harness: Codex in T3 Code.

@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 Oct 4, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a new default Mod+T behavior that opens the right-panel surface menu across chat, sheet, and pull-request views, backed by global keyboard handling. Because it changes product defaults and affects existing keyboard behavior, maintainer review is required.

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

@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Important

Review skipped

We couldn't safely recover the incremental review. No full review was started, and the last reviewed checkpoint was preserved. Retry later, or explicitly request a full review by commenting @coderabbitai full review.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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: 4b1a8597-db1e-456f-aab4-e66f4ed297f9
📥 Commits

Reviewing files that changed from the base of the PR and between 4ee6bfd and e3fbfb4.

📒 Files selected for processing (7)
  • apps/web/src/components/ChatView.tsx
  • apps/web/src/components/RightPanelTabs.keyboard.test.tsx
  • apps/web/src/components/RightPanelTabs.test.tsx
  • apps/web/src/components/RightPanelTabs.tsx
  • apps/web/src/routes/_chat.pull-requests.tsx
  • packages/contracts/src/keybindings.ts
  • packages/shared/src/keybindings.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review.


📝 Walkthrough

Walkthrough

RightPanelTabs now supports a configured shortcut to open its add-surface menu. The default binding is mod+t while the right panel is open. Panel instances receive keybindings and a shortcut-context getter.

Changes

Right panel shortcut

Layer / File(s) Summary
Register the shortcut
packages/contracts/src/keybindings.ts, packages/shared/src/keybindings.ts
The static command list includes rightPanel.new. The default keybindings map mod+t to that command when the right panel is open.
Handle the shortcut and menu state
apps/web/src/components/RightPanelTabs.tsx, apps/web/src/components/RightPanelTabs.keyboard.test.tsx, apps/web/src/components/RightPanelTabs.test.tsx
RightPanelTabs matches the configured shortcut while the panel is open. It ignores prevented or composing events and blocking overlays unless the menu is already open. On a matching non-repeat keydown, it focuses the menu trigger and opens the menu. The menu closes when the panel closes and renders even when no surfaces exist. Tests cover platform bindings, custom bindings, event handling, focus, and sheet-mode menu behavior.
Pass shortcut settings to panel instances
apps/web/src/components/ChatView.tsx, apps/web/src/routes/_chat.pull-requests.tsx
The inline, sheet-mode, and pull-request route instances pass keybindings and the shortcut-context getter to RightPanelTabs.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant RightPanelTabs
  participant ShortcutContext
  participant AddSurfaceMenu
  User->>RightPanelTabs: Press configured rightPanel.new shortcut
  RightPanelTabs->>ShortcutContext: Get shortcut match context
  RightPanelTabs->>AddSurfaceMenu: Focus trigger and open menu
Loading

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to e3fbf

The right-panel shortcut is ready for normal merge checks; browser-native and embedded-page behavior has not been verified in the running app.

Security Architecture Review

Security architecture risk: 🔵 Low · up to e3fbf

The shortcut opens an existing menu and preserves its action availability checks rather than directly launching privileged actions. No material security regression was established, but browser-native and embedded-page keyboard behavior remains unverified.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The demonstrated new reachability is to menu presentation in an open host panel. Selection uses the same caller-bound actions and environment context; the inspected route does not demonstrate expanded tenant, credential, service, or data-store authority.

Trust Boundaries and Controls

  • inferred — The inspected shortcut path operates on host-document keyboard events and does not directly invoke a privileged operation. Its menu-opening controls and retained selection checks do not establish whether embedded content can relay events into that document; browser-native and embedded-page interception is explicitly unverified in the PR description.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 7 files. 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 and concisely identifies the main change: opening the right-panel tab menu with Mod+T.
Description check ✅ Passed The description covers the problem, change, verification, and visual evidence. The scope section says maintainer approval is pending but does not provide an issue or approval discussion, or explain wh…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@Bil0000

Bil0000 commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

Reviewed both bot comments against e3fbfb4 and the contribution policy on current main.

  • Macroscope: confirmed that the new shipped default shortcut needs maintainer approval. Added the missing Scope and approval section, explicitly stating that prior approval is not linked and is still required. This is not a claim of an approval exception.
  • CodeRabbit: no actionable code findings or inline review comments. The description now includes scope and approval status. The docstring coverage warning does not establish a documentation need for this focused UI change, so no source comments were added for that metric.

All 8 required checks passed on e3fbfb4. The existing visual proof and full-app verification limits remain in the description. The remaining requirement is maintainer approval of direction and scope.

@juliusmarminge juliusmarminge left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

This review was posted by Julius' agent.

Reviewed at 8d399eb. Small, focused, and it reuses the existing menu. One change before this can land:

mod+t takes Ctrl+T away from the terminal on Linux and Windows. The default binding (packages/shared/src/keybindings.ts#L28) has no !terminalFocus guard. The listener runs in the document's capture phase and calls preventDefault/stopPropagation (RightPanelTabs.tsx#L812-L832), and it overrides the context with rightPanelOpen: true. As a result, whenever the right panel is open, Ctrl+T in a focused terminal opens the tab menu instead of reaching the shell. That breaks readline's transpose-characters. macOS is unaffected because Cmd+T never reaches the shell. Changing when to rightPanelOpen && !terminalFocus fixes it, matching mod+w and mod+d. Please add a test case with the terminal focused.

Not blocking:

  • In a regular browser, Chrome and Firefox keep Cmd/Ctrl+T for opening a new tab, so this default only works in the desktop app and installed PWAs. That's fine, but say so in the PR, since the description presents it as cross-platform.
  • The scope approval mentioned in the description is still pending. Collect it alongside this fix.

The focused tests pass locally (160 across three files).

@Bil0000

Bil0000 commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Fixed in eaca7aff512612ec312c97754ce9fa4fc8b1c9d8. Updated the default binding to rightPanelOpen && !terminalFocus and added a regression test with the terminal focused. Ctrl+T now reaches the terminal on Linux and Windows.

Both Windows/Linux regression cases failed before the guard. All 162 focused tests, web/shared typechecks, targeted lint, and formatting pass.

The description now states that this default works in the desktop app and installed PWAs. Regular Chrome and Firefox tabs reserve Cmd/Ctrl+T for opening a browser tab.

@juliusmarminge Please review the fix and confirm approval of the direction and scope: add the configurable rightPanel.new shortcut, defaulting to Mod+T, to open the existing right-panel tab menu when the panel is open and the terminal does not have focus.

@juliusmarminge juliusmarminge left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

This review was posted by Julius' agent.

Approving at eaca7af. Julius approved the scope: a configurable rightPanel.new shortcut, default Mod+T, that opens the existing tab menu while the panel is open and the terminal is not focused.

The terminal blocker is fixed. The default is now rightPanelOpen && !terminalFocus, and the Windows/Linux regression tests confirm that Ctrl+T reaches a focused terminal. The description now notes that regular browser tabs keep Cmd/Ctrl+T for themselves.

CI is green, and the focused tests pass locally (162).

@juliusmarminge
juliusmarminge enabled auto-merge (squash) October 7, 2026 00:03
@juliusmarminge
juliusmarminge merged commit 7202ba6 into pingdotgg:main Oct 7, 2026
28 checks passed
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 7, 2026
## What's Changed
* fix(web): show attempted paths in file preview errors by @maria-rcks in pingdotgg/t3code#15628
* fix(vcs): passive sidebar rows stop retaining remote pollers by @maria-rcks in pingdotgg/t3code#15666
* feat(web): group keybindings settings by area with a page toolbar by @maria-rcks in pingdotgg/t3code#12822
* feat(web): stop T3-owned subagents from Lineage by @Bil0000 in pingdotgg/t3code#15211
* feat(web): add fast actions to linked pull requests by @maria-rcks in pingdotgg/t3code#16627
* feat(web): open right panel tab menu with Mod+T by @Bil0000 in pingdotgg/t3code#15686
* fix(server): provider sessions clean up when their start is interrupted by @juliusmarminge in pingdotgg/t3code#15571
* fix(web): show "No project" near the top of the new thread picker by @juliusmarminge in pingdotgg/t3code#16628
* refactor(server): instrument WS RPCs in group middleware by @juliusmarminge in pingdotgg/t3code#15548
* chore(deps): upgrade @pierre/diffs to 1.5.2 and @pierre/trees to beta.6 by @juliusmarminge in pingdotgg/t3code#16644
* fix(relay): a host restarting onto a deleted tunnel gets a new one by @juliusmarminge in pingdotgg/t3code#16649
* fix(server): recover a deleted tunnel when Cloudflare says "Tunnel not found" by @juliusmarminge in pingdotgg/t3code#16648
* fix(web): iPhone Duo fold controls follow the phone's orientation by @gabrielelpidio in pingdotgg/t3code#16630
* fix(web): keep workspace options when expanding lineage by @maria-rcks in pingdotgg/t3code#16635
* fix(web): preserve bare anchor placeholders in markdown by @maria-rcks in pingdotgg/t3code#16637
* fix(pi): preserve provider identity in discovered models by @maria-rcks in pingdotgg/t3code#16661
* fix(auth): preserve explicitly granted pairing scopes by @juliusmarminge in pingdotgg/t3code#9785
* feat(auth): separate environment administration permissions by @juliusmarminge in pingdotgg/t3code#9786
* feat(auth): separate source control write permissions by @juliusmarminge in pingdotgg/t3code#9787
* feat(auth): separate filesystem read and write permissions by @juliusmarminge in pingdotgg/t3code#9788
* feat(auth): separate browser preview control permissions by @juliusmarminge in pingdotgg/t3code#9789
* feat(auth): separate diagnostics and usage permissions by @juliusmarminge in pingdotgg/t3code#9790
* feat(auth): allow passive terminal observation by @juliusmarminge in pingdotgg/t3code#9791
* fix(auth): keep old clients connected across scope changes by @juliusmarminge in pingdotgg/t3code#10298
* feat(server): hosted agents like ChatGPT can sign in to the T3 MCP server by @juliusmarminge in pingdotgg/t3code#16718


**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261006.2752...v0.0.46-nightly.20261007.2761

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261007.2761
@Bil0000
Bil0000 deleted the t3code/right-panel-new-tab-menu branch October 7, 2026 10:42
Andrey170170 added a commit to Andrey170170/t3code that referenced this pull request Oct 9, 2026
…raming (#28)

* fix(server): forks no longer merge into their upstream repo's project group (pingdotgg#16353)

Fixes pingdotgg#4880. Originally pingdotgg#14639 by @Project516.

Co-authored-by: Project516 <138796702+Project516@users.noreply.github.com>

* fix(server): stop the startup project sync from delaying the app window (pingdotgg#14912)

* fix(web): avoid blocking image preparation conversions (pingdotgg#13342)

* fix(server): return partial workspace index on timeout (pingdotgg#11500)

* fix(server): probe project favicon candidates concurrently (pingdotgg#12543)

* fix(observability): a failing trace disk no longer stalls the server (pingdotgg#13758)

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

* fix(server): status polling no longer locks the git index (pingdotgg#14718)

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

* perf(shared): scan PATH once per command before spawning, not on every spawn (pingdotgg#12600)

* fix(server): main's startup auto-pull test compiles again (pingdotgg#16357)

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

* fix(server): project favicons stop being rescanned every minute (pingdotgg#16206)

Favicons in ProjectEnrichmentService now keep for 15 minutes. Repository identity keeps its 1-minute TTL, so remote changes still show within a minute.

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

* fix(server): Claude limits load again for users with large transcript histories (pingdotgg#16358)

The Claude capabilities probe now asks for usage with skipBehaviors, so it no longer scans every local transcript and misses its 4 s deadline. Takes over pingdotgg#14456.

Co-authored-by: Ashkaan <a@ashkaan.me>

* Add esthor to the list of GitHub users

* fix(server): caches and ids are written atomically (pingdotgg#16242)

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

* fix(server): one-shot initializers no longer race (pingdotgg#16260)

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

* fix(server): the PR cache sweep only removes real entry files (pingdotgg#16285)

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

* chore: keep one copy each of undici 8 and ws 8 (pingdotgg#16211)

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

* fix(shared): DrainableWorker keeps running after a failed item (pingdotgg#16223)

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

* fix(server): metrics count interrupted work on the monotonic clock (pingdotgg#16207)

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

* refactor(web): import connection storage as a namespace in its test (pingdotgg#16315)

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

* fix(contracts): trimmed IDs round-trip (pingdotgg#16300)

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

* fix(server): main's settings, keybindings and session tests compile again (pingdotgg#16363)

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

* chore(lint): catch known tags with Effect.catchTags (pingdotgg#16361)

* fix(observability): T3 Connect tracing stops at the relay boundary (pingdotgg#16314)

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

* fix(relay): error and deadline responses carry CORS headers (pingdotgg#16253)

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

* fix(web): bring back the live shimmer on work log rows (pingdotgg#16372)

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

* refactor: Effect code gets UUIDs and SHA-256 from Effect's Crypto (pingdotgg#16377)

* fix(relay): export traces through one tracer, one request span each (pingdotgg#16382)

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

* fix(server): Pi thread titles use linked PR context (pingdotgg#16210)

* fix(desktop): retry transient bearer bootstrap and degrade on session fetch failure (pingdotgg#12919)

* fix(server): avoid scanning completed history for pending secrets (pingdotgg#16409)

* fix(orchestration-v2): let Stop recover stalled runs (pingdotgg#15442)

* fix(release): resolve version-qualified catalog overrides (pingdotgg#16411)

* fix(web): type in front of bold that starts a composer line (pingdotgg#13217)

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

* fix(desktop): prevent browser screenshot filename collisions (pingdotgg#14784)

* fix(server): end clone options before the repository URL (pingdotgg#14781)

* fix(web): queued messages no longer split the composer notice stack (pingdotgg#16400)

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

* fix(server): reject invalid explicit Bitbucket repositories (pingdotgg#15876)

* fix(desktop): use the crypto service for screenshot IDs (pingdotgg#16415)

* fix(shared): find versioned JetBrains macOS app bundles (pingdotgg#16246)

* fix(server): OpenCode 2 threads get T3 Code's MCP tools (pingdotgg#16142)

* feat(preview): run the browser on the environment server (pingdotgg#15328)

* fix: restore service references breaking ci (pingdotgg#16495)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(mcp): mark declared tool failures as errors (pingdotgg#15617)

* fix(release): unblock nightly browser tests and cli builds (pingdotgg#16515)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(mcp): preserve thread command rejection reasons (pingdotgg#15627)

* chore(deps): upgrade @effect/tsgo to 0.46.1 (pingdotgg#16360)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(orchestration-v2): show reported subagent models (pingdotgg#14108)

Co-authored-by: Yash Singh <saiansh2525@gmail.com>

* fix(web): Apple logo no longer dips below the device host label (pingdotgg#14825)

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

* fix(web): show subagent effort and speed in hover cards (pingdotgg#13056)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* feat(web): reopen closed tabs across the app (pingdotgg#15207)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): stop wide ordered list markers from clipping (pingdotgg#16523)

* fix(desktop): build AppImage with the static runtime toolset (fixes libfuse2 launch failure) (pingdotgg#7765)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): keep usage-limit notice opaque (pingdotgg#15602)

* feat(server): GitHub API transport that uses gh only for the token (pingdotgg#16319)

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

* feat(server): pull requests talk to GitHub's API instead of the gh CLI (pingdotgg#16320)

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

* feat(server): source control, media and discovery use GitHub's API instead of gh (pingdotgg#16321)

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

* feat: choose the GitHub account per host, save a GitHub token, and fewer reads per PR action (pingdotgg#16322)

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

* fix(server): Rebase stack moves each layer onto the rebased layer below it (pingdotgg#16551)

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

* fix(web): diff panel keeps the chosen scope while a turn runs (pingdotgg#16571)

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

* fix(desktop): honor the telemetry opt-out from the shell profile (pingdotgg#16563)

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

* docs(marketing): disclose product usage data in the privacy policy (pingdotgg#16562)

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

* feat(web): note anonymous usage data in onboarding and link the privacy policy (pingdotgg#16564)

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

* perf(web): diff panel no longer re-renders every file header each time a patch arrives (pingdotgg#16033)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat(server): every T3 MCP tool declares who may call it (pingdotgg#16335)

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

* feat(server): outside agents sign in to the T3 MCP server with OAuth (pingdotgg#16336)

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

* feat(web): copy an environment's MCP URL for outside agents (pingdotgg#16337)

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

* chore(tsconfig): turn off the Schema-over-JSON diagnostic in test files (pingdotgg#16375)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* chore(review): CodeRabbit gates outside contributors' pull requests (pingdotgg#16332)

* fix(desktop): include Linux package license and app metadata (pingdotgg#16597)

* fix(server): one failing RPC handler no longer ends the client's other requests (pingdotgg#15515)

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

* fix(contracts): a context record that cannot be encoded no longer fails the send (pingdotgg#16398)

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

* fix(web): open pull request row actions on right-click (pingdotgg#16612)

* fix(web): show attempted paths in file preview errors (pingdotgg#15628)

* fix(vcs): passive sidebar rows stop retaining remote pollers (pingdotgg#15666)

* feat(web): group keybindings settings by area with a page toolbar (pingdotgg#12822)

* feat(web): stop T3-owned subagents from Lineage (pingdotgg#15211)

* feat(web): add fast actions to linked pull requests (pingdotgg#16627)

* feat(web): open right panel tab menu with Mod+T (pingdotgg#15686)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): provider sessions clean up when their start is interrupted (pingdotgg#15571)

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

* fix(web): show "No project" near the top of the new thread picker (pingdotgg#16628)

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

* refactor(server): instrument WS RPCs in group middleware (pingdotgg#15548)

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

* chore(deps): upgrade @pierre/diffs to 1.5.2 and @pierre/trees to beta.6 (pingdotgg#16644)

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

* fix(relay): a host restarting onto a deleted tunnel gets a new one (pingdotgg#16649)

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

* fix(server): recover a deleted tunnel when Cloudflare says "Tunnel not found" (pingdotgg#16648)

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

* fix(web): iPhone Duo fold controls follow the phone's orientation (pingdotgg#16630)

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

* fix(web): keep workspace options when expanding lineage (pingdotgg#16635)

* fix(web): preserve bare anchor placeholders in markdown (pingdotgg#16637)

* fix(pi): preserve provider identity in discovered models (pingdotgg#16661)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(auth): preserve explicitly granted pairing scopes (pingdotgg#9785)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(auth): separate environment administration permissions (pingdotgg#9786)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(auth): separate source control write permissions (pingdotgg#9787)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(auth): separate filesystem read and write permissions (pingdotgg#9788)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(auth): separate browser preview control permissions (pingdotgg#9789)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(auth): separate diagnostics and usage permissions (pingdotgg#9790)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(auth): allow passive terminal observation (pingdotgg#9791)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* fix(auth): keep old clients connected across scope changes (pingdotgg#10298)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* feat(server): hosted agents like ChatGPT can sign in to the T3 MCP server (pingdotgg#16718)

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

* docs: connect Claude Code, Codex, ChatGPT and bots over MCP (pingdotgg#16741)

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

* fix(web): thread details card gives titles room to read (pingdotgg#16746)

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

* fix(mcp): agent HTML pages stop painting slab backgrounds (pingdotgg#16752)

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

* fix: composer picks up new project skills without a server restart (pingdotgg#16750)

* feat(server): run a project action when a worktree thread settles (pingdotgg#16290)

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

* feat(web): old Claude threads compact on send instead of stacking notices (pingdotgg#16631)

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

* fix(server): settled threads stop polling their pull requests (pingdotgg#16762)

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

* fix(server): stop storing tool image bytes no client reads (pingdotgg#16652)

* fix(server): status refresh no longer pegs CPU in repos with thousands of untracked files (pingdotgg#16771)

Co-authored-by: Braulio Oliveira <brauliobo@gmail.com>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>

* perf(server): background branch lookups share one GitHub query per sweep (pingdotgg#16760)

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

* fix(server): threads settle as soon as a client sees their PR merge (pingdotgg#16761)

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

* feat(server,web,mobile): agents see snooze state and link to threads (pingdotgg#16782)

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

* fix(release): Forgejo build resolves version-qualified catalog overrides

Upstream now pins overrides such as undici@^8 to the catalog; the packaging
script looked up the whole selector and failed. Mirrors upstream pingdotgg#16411.

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

* fix(server): HTML renders and PDFs load behind a proxy that forbids framing

Clients frame asset documents from the environment's origin, which is
often not their own. A reverse proxy that adds X-Frame-Options: SAMEORIGIN
blanked every HTML render and PDF preview in that setup. Inline HTML and
PDF asset responses now carry `frame-ancestors *`, which browsers honour
in place of X-Frame-Options.

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

* fix(server): desktop renderer may frame asset documents

CSP's `*` matches only http(s) ancestors, so the desktop app's custom
scheme origins are listed explicitly.

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

---------

Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Project516 <138796702+Project516@users.noreply.github.com>
Co-authored-by: Igor Makowski <56691628+Mnigos@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: Michel Liao <107891771+Michel-Liao@users.noreply.github.com>
Co-authored-by: Ishaan Kothari <ishaanko.mail@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: ahalekelly <7078138+ahalekelly@users.noreply.github.com>
Co-authored-by: SkiTee3000 <39069192+SkiTee3000@users.noreply.github.com>
Co-authored-by: Ashkaan <a@ashkaan.me>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Erik Thorelli <ethorelli@gmail.com>
Co-authored-by: James Villarrubia <8172873+jamesvillarrubia@users.noreply.github.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
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: Tristan Manchester <108270628+tristanmanchester@users.noreply.github.com>
Co-authored-by: Arav Jain <aravhawk@gmail.com>
Co-authored-by: Sypher760-gif <sayffadil@gmail.com>
Co-authored-by: Nikita Koynov <43469098+nkoynov@users.noreply.github.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Lorenzo <150276837+Bombatomica64@users.noreply.github.com>
Co-authored-by: Benedikt Rump <bjrump@gmail.com>
Co-authored-by: Stevan Borus <steva.borus@gmail.com>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: spoukyii <61633921+spoukyii@users.noreply.github.com>
Co-authored-by: Derek Trimm <275381468+derektrimm@users.noreply.github.com>
Co-authored-by: Braulio Oliveira <brauliobo@gmail.com>
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