diff options
| author | Turcu Laurentiu <[email protected]> | 2026-01-15 09:12:27 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-15 02:12:27 -0600 |
| commit | 779610d668e239c07014c9d350d47e2213c07b26 (patch) | |
| tree | 29a98c0094e19288a91a14cdf2f4fcb427a89718 | |
| parent | 1fb611ef0ad33f0bb9bc6865ec3c67521a95d8ad (diff) | |
| download | opencode-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.tsx | 9 | ||||
| -rw-r--r-- | packages/ui/src/context/marked.tsx | 2 |
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>` }, }, }, |
