Commit Graph

5 Commits

Author SHA1 Message Date
e2c2f64167 feat(secubox): implement conditional debug logging
Added debugMode flag that checks URL hash or localStorage setting.
Debug logging only outputs when enabled via:
- URL: /#/admin/secubox/apps#debug
- Console: localStorage.setItem('secubox_debug', 'true')

All debug logs prefixed with [AppStore] or [Modules] for clarity.
Warnings and errors remain in production for critical issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 11:59:35 +01:00
60ff5ad3f1 feat(secubox): add close button to app details modal
Added a modal footer with a Close button in the app details view.
The footer includes:
- Styled separator line with border-top
- Right-aligned Close button
- Calls ui.hideModal() on click

This provides a clear way to dismiss the modal without needing to
click outside or use the escape key.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 11:55:54 +01:00
f08d28d70b fix(secubox): correct RPC expect parameter for getAppstoreApps
Fixed appstore showing "No applications match the selected filter" by correcting
the RPC declaration expect parameter.

Issue: The RPC declaration had:
  expect: { apps: [], categories: {} }

This caused the RPC framework to return only the apps array instead of the full
response object, resulting in:
  - data = Array(5) instead of { apps: [...], categories: {...} }
  - data.apps = undefined
  - data.categories = undefined

Fix: Changed to:
  expect: { }

This returns the full response object as-is from the backend, allowing proper
access to both data.apps and data.categories properties.

Also added extensive debug logging to troubleshoot the data flow.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 11:51:13 +01:00
bd032be85f fix(secubox): resolve race condition in appstore and modules data loading
Fixed issue where first page load would show empty apps/modules list, requiring
a refresh to display data.

Changes:
- Added error handling in refreshData() for both apps.js and modules.js
- Added null/empty data checks before storing results
- Fixed render() to use data parameter first, then fallback to cached instance data
- Added console logging for debugging empty responses
- Added user-friendly error notifications when API calls fail

The render function now properly uses:
  var apps = (data && data.apps) || this.appsData || [];
  var modules = (data && data.modules) || this.modulesData || [];

This ensures the data passed from load() is used on first render, preventing
the empty state on initial page load.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 11:48:18 +01:00
280dd91798 release: bump secubox hub to 0.6.1-0 2025-12-30 14:42:45 +01:00