diff --git a/neode-ui/dev-dist/sw.js b/neode-ui/dev-dist/sw.js index b2437537..b7607f14 100644 --- a/neode-ui/dev-dist/sw.js +++ b/neode-ui/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-21a80088'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "index.html", - "revision": "0.nedd68ljhq8" + "revision": "0.lheu907255" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { diff --git a/neode-ui/mock-backend.js b/neode-ui/mock-backend.js index f3703e60..44173582 100755 --- a/neode-ui/mock-backend.js +++ b/neode-ui/mock-backend.js @@ -611,7 +611,7 @@ const staticDevApps = { 'interface-addresses': { main: { 'tor-address': 'lorabell.onion', - 'lan-address': '/lorabell-info.html' + 'lan-address': 'http://192.168.1.166' } }, status: 'running' diff --git a/neode-ui/public/lorabell-info.html b/neode-ui/public/lorabell-info.html deleted file mode 100644 index acf77fb2..00000000 --- a/neode-ui/public/lorabell-info.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - LoraBell - - - -

LoraBell

-

A LoRa based doorbell

-

This device has no web interface. It operates over LoRa radio and sends doorbell notifications to your node.

- - diff --git a/neode-ui/src/utils/dummyApps.ts b/neode-ui/src/utils/dummyApps.ts index 4cc4a157..47b9e0d7 100644 --- a/neode-ui/src/utils/dummyApps.ts +++ b/neode-ui/src/utils/dummyApps.ts @@ -144,7 +144,7 @@ export const dummyApps: Record = { 'interface-addresses': { main: { 'tor-address': 'lorabell.onion', - 'lan-address': '/lorabell-info.html' + 'lan-address': 'http://192.168.1.166' } }, status: ServiceStatus.Running diff --git a/neode-ui/src/views/AppDetails.vue b/neode-ui/src/views/AppDetails.vue index 46151334..94975ebe 100644 --- a/neode-ui/src/views/AppDetails.vue +++ b/neode-ui/src/views/AppDetails.vue @@ -614,8 +614,8 @@ function launchApp() { // TODO: Replace dummy app URLs with real URLs when apps are packaged const appUrls: Record = { 'lorabell': { - dev: '/lorabell-info.html', - prod: '/lorabell-info.html' + dev: 'http://192.168.1.166', + prod: 'http://192.168.1.166' }, 'atob': { dev: 'http://localhost:8102', diff --git a/neode-ui/src/views/Apps.vue b/neode-ui/src/views/Apps.vue index cdf7f606..32de636b 100644 --- a/neode-ui/src/views/Apps.vue +++ b/neode-ui/src/views/Apps.vue @@ -230,25 +230,11 @@ function launchApp(id: string) { const isDev = import.meta.env.DEV const pkg = packages.value[id] - // Get the LAN address from the package manifest - let lanAddress = pkg?.installed?.['interface-addresses']?.main?.['lan-address'] - - // Replace localhost with the current hostname (for remote access) - if (lanAddress && lanAddress.includes('localhost')) { - const currentHost = window.location.hostname - lanAddress = lanAddress.replace('localhost', currentHost) - } - - if (lanAddress) { - useAppLauncherStore().open({ url: lanAddress, title: pkg?.manifest?.title || id }) - return - } - - // Fallback: Special handling for apps with Docker containers / no-web-interface devices + // Explicit URLs for apps that need them (checked first to avoid package data issues) const appUrls: Record = { 'lorabell': { - dev: '/lorabell-info.html', - prod: '/lorabell-info.html' + dev: 'http://192.168.1.166', + prod: 'http://192.168.1.166' }, 'atob': { dev: 'http://localhost:8102', @@ -266,7 +252,7 @@ function launchApp(id: string) { if (appUrls[id]) { let url = isDev ? appUrls[id].dev : appUrls[id].prod - // Replace localhost with current hostname for remote access + // Replace localhost with current hostname for remote access (not for external IPs like LoraBell) if (url.includes('localhost')) { const currentHost = window.location.hostname url = url.replace('localhost', currentHost) @@ -275,6 +261,20 @@ function launchApp(id: string) { return } + // Get the LAN address from the package + let lanAddress = pkg?.installed?.['interface-addresses']?.main?.['lan-address'] + + // Replace localhost with the current hostname (for remote access) + if (lanAddress && lanAddress.includes('localhost')) { + const currentHost = window.location.hostname + lanAddress = lanAddress.replace('localhost', currentHost) + } + + if (lanAddress) { + useAppLauncherStore().open({ url: lanAddress, title: pkg?.manifest?.title || id }) + return + } + // For other apps, navigate to app details which has launch functionality router.push(`/dashboard/apps/${id}`) }