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 (