From d1fbcd9b0a6271ad1e0c05de9d0b0ebe450ac387 Mon Sep 17 00:00:00 2001 From: Dorian Date: Fri, 19 Jun 2026 11:28:48 +0100 Subject: [PATCH] feat(neode-ui): route "open in browser" through native bridge in companion app When ArchipelagoNative is present (the Android companion app), openInNewTab() now calls openInApp(url) so non-iframeable apps open in the in-app WebView instead of a suppressed window.open popup. Falls back to window.open in a plain mobile browser. Logic only; no visual change. Co-Authored-By: Claude Opus 4.8 (1M context) --- neode-ui/src/components/AppLauncherOverlay.vue | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/neode-ui/src/components/AppLauncherOverlay.vue b/neode-ui/src/components/AppLauncherOverlay.vue index ee23ac24..26e5d94d 100644 --- a/neode-ui/src/components/AppLauncherOverlay.vue +++ b/neode-ui/src/components/AppLauncherOverlay.vue @@ -304,9 +304,17 @@ function refreshIframe() { } function openInNewTab() { - if (store.url) { - window.open(store.url, '_blank', 'noopener,noreferrer') + if (!store.url) return + // Inside the Archipelago companion app, open the app in the in-app WebView + // instead of window.open — which the WebView suppresses for noopener popups + // (so the tap silently no-ops). The native bridge is reliable; fall back to + // window.open in a plain mobile browser. + const native = (window as any).ArchipelagoNative + if (native && typeof native.openInApp === 'function') { + native.openInApp(store.url) + return } + window.open(store.url, '_blank', 'noopener,noreferrer') } function openInNewTabAndClose() {