From 17065bf776905430cfec2aedf7ace5a142f1e09c Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Sun, 4 Jan 2026 15:06:45 +0100 Subject: [PATCH] fix(luci-app-secubox-admin): add graceful RPC fallback to all views MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed "No related RPC reply" errors across all admin views by wrapping ALL RPC calls in L.resolveDefault() with appropriate fallback values. This allows the frontend to load gracefully even when the backend RPCD methods are not yet deployed, showing empty data instead of crashing. Changes: - health.js: Wrapped getHealth() → L.resolveDefault(getHealth(), {}) - logs.js: Wrapped getLogs() → L.resolveDefault(getLogs(), { logs: '' }) - settings.js: Wrapped getApps() and getModules() with fallbacks - apps.js: Wrapped getApps() and getModules() (checkUpdates already wrapped) - dashboard.js: Wrapped all 4 RPC calls (getApps, getModules, getHealth, getAlerts) - Incremented PKG_RELEASE: 6 → 7 - Updated DEPLOY_UPDATES.md with v1.0.0-7 details All admin pages now load successfully regardless of backend deployment status. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- DEPLOY_UPDATES.md | 10 ++++++++-- package/secubox/luci-app-secubox-admin/Makefile | 2 +- .../luci-static/resources/view/secubox-admin/apps.js | 4 ++-- .../resources/view/secubox-admin/dashboard.js | 8 ++++---- .../luci-static/resources/view/secubox-admin/health.js | 2 +- .../luci-static/resources/view/secubox-admin/logs.js | 2 +- .../resources/view/secubox-admin/settings.js | 4 ++-- 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/DEPLOY_UPDATES.md b/DEPLOY_UPDATES.md index 1b18455b..a6eb7740 100644 --- a/DEPLOY_UPDATES.md +++ b/DEPLOY_UPDATES.md @@ -69,11 +69,17 @@ ubus -S call luci.secubox check_updates ### Package Versions - `secubox-core`: 0.8.0-6 -- `luci-app-secubox-admin`: 1.0.0-6 +- `luci-app-secubox-admin`: 1.0.0-7 ### Recent Fixes -**v1.0.0-6** (Latest): +**v1.0.0-7** (Latest): +- Added graceful RPC fallback to ALL views +- Wrapped all RPC calls in L.resolveDefault() with appropriate fallback values +- Fixed "No related RPC reply" errors in health.js, logs.js, settings.js, apps.js, dashboard.js +- All pages now load gracefully even when backend not deployed + +**v1.0.0-6**: - Fixed WidgetRenderer constructor error - Changed from `new WidgetRenderer({...})` to `WidgetRenderer({...})` - Added comprehensive error handling with try-catch and fallback error display diff --git a/package/secubox/luci-app-secubox-admin/Makefile b/package/secubox/luci-app-secubox-admin/Makefile index f199a7c3..7e3a47ca 100644 --- a/package/secubox/luci-app-secubox-admin/Makefile +++ b/package/secubox/luci-app-secubox-admin/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-secubox-admin PKG_VERSION:=1.0.0 -PKG_RELEASE:=6 +PKG_RELEASE:=7 PKG_LICENSE:=MIT PKG_MAINTAINER:=CyberMind diff --git a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/apps.js b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/apps.js index 0f65f914..7f9f582e 100644 --- a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/apps.js +++ b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/apps.js @@ -8,8 +8,8 @@ return view.extend({ load: function() { return Promise.all([ - API.getApps(), - API.getModules(), + L.resolveDefault(API.getApps(), { apps: [] }), + L.resolveDefault(API.getModules(), { modules: {} }), L.resolveDefault(API.checkUpdates(), {}) ]); }, diff --git a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/dashboard.js b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/dashboard.js index 13c7534d..aaf2dec5 100644 --- a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/dashboard.js +++ b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/dashboard.js @@ -11,10 +11,10 @@ return view.extend({ load: function() { return Promise.all([ - API.getApps(), - API.getModules(), - API.getHealth(), - API.getAlerts() + L.resolveDefault(API.getApps(), { apps: [] }), + L.resolveDefault(API.getModules(), { modules: {} }), + L.resolveDefault(API.getHealth(), {}), + L.resolveDefault(API.getAlerts(), { alerts: [] }) ]); }, diff --git a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/health.js b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/health.js index 432acc20..9bdf21cc 100644 --- a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/health.js +++ b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/health.js @@ -5,7 +5,7 @@ return view.extend({ load: function() { - return API.getHealth(); + return L.resolveDefault(API.getHealth(), {}); }, render: function(health) { diff --git a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/logs.js b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/logs.js index 7418947e..809025a8 100644 --- a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/logs.js +++ b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/logs.js @@ -7,7 +7,7 @@ return view.extend({ selectedService: 'system', load: function() { - return API.getLogs(this.selectedService, 100); + return L.resolveDefault(API.getLogs(this.selectedService, 100), { logs: '' }); }, render: function(logsData) { diff --git a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/settings.js b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/settings.js index 3c2318fa..78e18116 100644 --- a/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/settings.js +++ b/package/secubox/luci-app-secubox-admin/htdocs/luci-static/resources/view/secubox-admin/settings.js @@ -7,8 +7,8 @@ return view.extend({ load: function() { return Promise.all([ - API.getApps(), - API.getModules() + L.resolveDefault(API.getApps(), { apps: [] }), + L.resolveDefault(API.getModules(), { modules: {} }) ]); },