diff --git a/DEPLOY_UPDATES.md b/DEPLOY_UPDATES.md index a12e4a15..1b18455b 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-5 +- `luci-app-secubox-admin`: 1.0.0-6 ### Recent Fixes -**v1.0.0-5** (Latest): +**v1.0.0-6** (Latest): +- Fixed WidgetRenderer constructor error +- Changed from `new WidgetRenderer({...})` to `WidgetRenderer({...})` +- Added comprehensive error handling with try-catch and fallback error display +- baseclass-extended classes should not be called with `new` keyword + +**v1.0.0-5**: - Added graceful RPC fallback with L.resolveDefault() - Pages now load with empty data instead of crashing when backend not deployed - Fixes "No related RPC reply" errors diff --git a/package/secubox/luci-app-secubox-admin/Makefile b/package/secubox/luci-app-secubox-admin/Makefile index 07dfc2b6..f199a7c3 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:=5 +PKG_RELEASE:=6 PKG_LICENSE:=MIT PKG_MAINTAINER:=CyberMind 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 db958186..13c7534d 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 @@ -198,19 +198,35 @@ return view.extend({ initializeWidgets: function(apps) { // Cleanup existing widget renderer if (this.widgetRenderer) { - this.widgetRenderer.destroy(); + try { + this.widgetRenderer.destroy(); + } catch (e) { + console.error('Error destroying widget renderer:', e); + } } - // Create new widget renderer - this.widgetRenderer = new WidgetRenderer({ - containerId: 'dashboard-widgets-container', - apps: apps, - defaultRefreshInterval: 30, - gridMode: 'auto' - }); + try { + // Create new widget renderer instance + // WidgetRenderer is a baseclass-extended class, call it directly + this.widgetRenderer = WidgetRenderer({ + containerId: 'dashboard-widgets-container', + apps: apps, + defaultRefreshInterval: 30, + gridMode: 'auto' + }); - // Render widgets - this.widgetRenderer.render(); + // Render widgets + if (this.widgetRenderer && this.widgetRenderer.render) { + this.widgetRenderer.render(); + } + } catch (e) { + console.error('Error initializing widgets:', e); + // Render error message in widget container + var container = document.getElementById('dashboard-widgets-container'); + if (container) { + container.innerHTML = '
Widget system initialization failed. Please refresh the page.
'; + } + } }, pollData: function() {