From 984518b1c0cb74db0b8eb9f77bb15fb97224a4e2 Mon Sep 17 00:00:00 2001 From: Alex Yaroshuk <34632190+alexyaroshuk@users.noreply.github.com> Date: Tue, 27 Jan 2026 00:57:49 +0800 Subject: [PATCH] fix(app): restore external link opening in system browser (#10697) --- packages/desktop/src/index.tsx | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx index fe9e3f92e..b0ac83307 100644 --- a/packages/desktop/src/index.tsx +++ b/packages/desktop/src/index.tsx @@ -328,18 +328,23 @@ render(() => { const [serverPassword, setServerPassword] = createSignal(null) const platform = createPlatform(() => serverPassword()) - function handleClick(e: MouseEvent) { - const link = (e.target as HTMLElement).closest("a.external-link") as HTMLAnchorElement | null - if (link?.href) { - e.preventDefault() - platform.openLink(link.href) - } - } - onMount(() => { - document.addEventListener("click", handleClick) + // Handle external links - open in system browser instead of webview + const handleClick = (e: MouseEvent) => { + const target = e.target as HTMLElement + const link = target.closest("a") as HTMLAnchorElement | null + + if (link?.href && !link.href.startsWith("javascript:") && !link.href.startsWith("#")) { + e.preventDefault() + e.stopPropagation() + e.stopImmediatePropagation() + void shellOpen(link.href).catch(() => undefined) + } + } + + document.addEventListener("click", handleClick, true) onCleanup(() => { - document.removeEventListener("click", handleClick) + document.removeEventListener("click", handleClick, true) }) })