summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTurcu Laurentiu <[email protected]>2026-01-15 09:12:27 +0100
committerGitHub <[email protected]>2026-01-15 02:12:27 -0600
commit779610d668e239c07014c9d350d47e2213c07b26 (patch)
tree29a98c0094e19288a91a14cdf2f4fcb427a89718
parent1fb611ef0ad33f0bb9bc6865ec3c67521a95d8ad (diff)
downloadopencode-779610d668e239c07014c9d350d47e2213c07b26.tar.gz
opencode-779610d668e239c07014c9d350d47e2213c07b26.zip
fix(desktop): open external links in system browser instead of webview (#7360)
-rw-r--r--packages/desktop/src/index.tsx9
-rw-r--r--packages/ui/src/context/marked.tsx2
2 files changed, 10 insertions, 1 deletions
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx
index 5d699bb90..f05a28e14 100644
--- a/packages/desktop/src/index.tsx
+++ b/packages/desktop/src/index.tsx
@@ -292,6 +292,15 @@ root?.addEventListener("mousewheel", (e) => {
e.stopPropagation()
})
+// Handle external links - open in system browser instead of webview
+document.addEventListener("click", (e) => {
+ const link = (e.target as HTMLElement).closest("a.external-link") as HTMLAnchorElement | null
+ if (link?.href) {
+ e.preventDefault()
+ platform.openLink(link.href)
+ }
+})
+
render(() => {
const [serverPassword, setServerPassword] = createSignal<string | null>(null)
const platform = createPlatform(() => serverPassword())
diff --git a/packages/ui/src/context/marked.tsx b/packages/ui/src/context/marked.tsx
index 9bd48c9a9..6cf1dd54e 100644
--- a/packages/ui/src/context/marked.tsx
+++ b/packages/ui/src/context/marked.tsx
@@ -383,7 +383,7 @@ export const { use: useMarked, provider: MarkedProvider } = createSimpleContext(
renderer: {
link({ href, title, text }) {
const titleAttr = title ? ` title="${title}"` : ""
- return `<a href="${href}"${titleAttr} target="_blank" rel="noopener noreferrer">${text}</a>`
+ return `<a href="${href}"${titleAttr} class="external-link" target="_blank" rel="noopener noreferrer">${text}</a>`
},
},
},