From 8601797233f2723d83faac7fd5677b137a0b8781 Mon Sep 17 00:00:00 2001 From: "t3-code[bot]" <269035359+t3-code[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 14:32:10 -0400 Subject: [PATCH 1/3] fix(web): align update toast release notes link (#6322) Co-authored-by: t3-code[bot] <219304759+t3-code[bot]@users.noreply.github.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com> --- apps/web/src/components/desktopUpdate.toast.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/desktopUpdate.toast.tsx b/apps/web/src/components/desktopUpdate.toast.tsx index 004a76a81cd7..4e55f3a28d12 100644 --- a/apps/web/src/components/desktopUpdate.toast.tsx +++ b/apps/web/src/components/desktopUpdate.toast.tsx @@ -18,7 +18,7 @@ function ReleaseNotesLink({ }) { return ( ); } From 770946d026208359450bf94083ad807d469d9f07 Mon Sep 17 00:00:00 2001 From: Exotic <118054752+extoci@users.noreply.github.com> Date: Wed, 12 Aug 2026 21:32:20 +0300 Subject: [PATCH 2/3] fix(web): render tooltips above dropdowns (#6241) --- apps/web/src/components/ui/tooltip.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/components/ui/tooltip.tsx b/apps/web/src/components/ui/tooltip.tsx index 5a891990cb1a..77b15a01e16b 100644 --- a/apps/web/src/components/ui/tooltip.tsx +++ b/apps/web/src/components/ui/tooltip.tsx @@ -33,7 +33,7 @@ function TooltipPopup({ Date: Wed, 12 Aug 2026 14:32:44 -0400 Subject: [PATCH 3/3] fix(web): open modified PR clicks in browser (#6278) Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com> --- apps/web/src/lib/openPullRequestLink.test.ts | 12 ++++++++++++ apps/web/src/lib/openPullRequestLink.ts | 12 +++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/web/src/lib/openPullRequestLink.test.ts b/apps/web/src/lib/openPullRequestLink.test.ts index a08b992bb009..9d26fa292124 100644 --- a/apps/web/src/lib/openPullRequestLink.test.ts +++ b/apps/web/src/lib/openPullRequestLink.test.ts @@ -5,6 +5,7 @@ import { openPullRequestLink, parseChangeRequestUrl, PullRequestLinkOpenError, + shouldOpenPullRequestExternally, } from "./openPullRequestLink"; describe("openPullRequestLink", () => { @@ -34,6 +35,17 @@ describe("openPullRequestLink", () => { }); }); +describe("shouldOpenPullRequestExternally", () => { + it("uses the browser for command-click and control-click", () => { + expect(shouldOpenPullRequestExternally({ metaKey: true, ctrlKey: false })).toBe(true); + expect(shouldOpenPullRequestExternally({ metaKey: false, ctrlKey: true })).toBe(true); + }); + + it("keeps an unmodified click in the pull request view", () => { + expect(shouldOpenPullRequestExternally({ metaKey: false, ctrlKey: false })).toBe(false); + }); +}); + describe("parseChangeRequestUrl", () => { it("reads a GitHub pull request", () => { expect(parseChangeRequestUrl("https://github.com/T3Tools/T3Code/pull/123")).toEqual({ diff --git a/apps/web/src/lib/openPullRequestLink.ts b/apps/web/src/lib/openPullRequestLink.ts index 951c02e4b4df..8943f907b3fd 100644 --- a/apps/web/src/lib/openPullRequestLink.ts +++ b/apps/web/src/lib/openPullRequestLink.ts @@ -173,10 +173,19 @@ export function findProjectForChangeRequest( * should still be reading it afterwards. Any change request opens there, not only the thread's * own, since the panel is told which one to show. */ +export function shouldOpenPullRequestExternally( + event: Pick, "metaKey" | "ctrlKey">, +): boolean { + return event.metaKey || event.ctrlKey; +} + export function useOpenChangeRequestLink( threadRef?: ScopedThreadRef, ): ( - event: Pick, "preventDefault" | "stopPropagation">, + event: Pick< + MouseEvent, + "preventDefault" | "stopPropagation" | "metaKey" | "ctrlKey" + >, targetUrl: string, targetThreadRef?: ScopedThreadRef, ) => boolean { @@ -186,6 +195,7 @@ export function useOpenChangeRequestLink( const primaryEnvironmentId = usePrimaryEnvironmentId(); return useCallback( (event, targetUrl, targetThreadRef) => { + if (shouldOpenPullRequestExternally(event)) return false; const resolvedThreadRef = targetThreadRef ?? threadRef; const environmentId = resolvedThreadRef?.environmentId ?? primaryEnvironmentId; if (