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}`)
}