Resolves package conflict where both luci-app-secubox and secubox-core
were providing /usr/libexec/rpcd/luci.secubox.
Changes:
- Remove RPCD backend (luci.secubox) from luci-app-secubox
- Add secubox-core as a dependency
- Update Makefile to reflect new architecture
- Remove RPCD file references from helper scripts
- Update documentation
Architecture:
- secubox-core (v0.8.0): Provides framework + RPCD backend
- luci-app-secubox (v0.7.0): Provides LuCI web UI only
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Replace manual CP commands with
- This ensures proper integration with luci.mk build system
- Fixes appstore files not being included in built packages
- Bump version to 0.7.0-6
The issue was that manually copying htdocs and root bypassed luci.mk's
install logic. Now we call the parent installer first, then add our
custom /usr/share/secubox directories.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The root cause of empty appstore was that Package/luci/install macro
was not installing files from usr/share/secubox/* directories.
Changes:
- Removed $(call Package/luci/install,$(1)) macro
- Manually implemented all install steps explicitly:
- Copy htdocs to /www
- Copy root/* to package root
- Explicitly create /usr/share/secubox directories
- Explicitly install appstore/apps.json
- Explicitly install profiles/*.json
This ensures data files are packaged correctly in the IPK.
Version: 0.7.0-5
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added debugging output to understand why appstore catalog isn't being
included in package builds. The install section now:
- Checks if source file exists before attempting install
- Shows full paths being used
- Displays directory contents if file is missing
- Exits with error if file not found (fail-fast)
This will help diagnose whether the issue is:
- Wrong CURDIR path during build
- Files not present in build directory
- Permissions issue preventing access
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The postinst script was failing installation (exit 1) when the appstore
catalog wasn't found, which prevented package upgrades from completing.
Changes:
1. Removed exit 1 - installation now continues even if file is missing
2. Added auto-recovery: tries to restore from /rom overlay if available
3. Provides clear status feedback (✓ or ✗) for appstore catalog
4. Gives helpful error message with recovery instructions
5. Always exits with 0 to allow installation to complete
This fixes upgrades from 0.7.0-r2 to 0.7.0-r4 where the directory
structure changed from .appstore to appstore.
Version: 0.7.0-4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The build was failing with:
chown: cannot access '/usr/share/secubox': No such file or directory
This happened because PKG_FILE_MODES was trying to set permissions on
directories that don't exist at the time file modes are applied during
package creation.
Solution:
- Removed all directory entries from PKG_FILE_MODES
- Removed apps.json file entry (INSTALL_DATA sets 644 automatically)
- Kept only executable files that need explicit 755 permissions
How it works now:
- $(INSTALL_DIR) automatically creates directories with 755 permissions
- $(INSTALL_DATA) automatically installs files with 644 permissions
- PKG_FILE_MODES only specifies exceptions (executable scripts = 755)
- postinst script sets permissions again as safety measure
This follows OpenWrt package best practices where PKG_FILE_MODES
should only specify permissions that differ from the defaults set
by the installation macros.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Enhanced package installation to ensure appstore files are properly
installed with correct permissions during both fresh installs and upgrades.
Changes to Makefile:
1. Added explicit PKG_FILE_MODES for all data directories and files:
- /usr/share/secubox: 755
- /usr/share/secubox/appstore: 755
- /usr/share/secubox/appstore/apps.json: 644
- /usr/share/secubox/profiles: 755
2. Improved install section:
- Added file existence check before installing profiles
- Added install verification message for appstore catalog
- Better comments for clarity
3. Added postinst script:
- Verifies appstore catalog exists after installation
- Sets proper permissions on all data directories/files
- Reloads RPCD service to pick up new methods
- Provides installation feedback to user
- Fails with warning if appstore catalog missing
This ensures the appstore will be populated on fresh firmware installs
and properly updated during package upgrades.
Version: 0.7.0-3
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Renamed .appstore directory to appstore (without dot prefix) to ensure
proper inclusion in OpenWrt package builds. Hidden directories (starting
with .) can be problematic during tarball creation and package installation.
Changes:
- Renamed .appstore/ to appstore/
- Updated Makefile install path references
- Updated RPCD script APPSTORE_JSON path
- Fixed file permissions to 644 for apps.json
This fixes the issue where appstore appears empty on fresh firmware
installations.
New path: /usr/share/secubox/appstore/apps.json
Old path: /usr/share/secubox/.appstore/apps.json
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated package version from 0.6.1-0 to 0.7.0-1 to reflect:
- Fixed appstore race condition causing empty initial load
- Fixed RPC expect parameter for getAppstoreApps
- Improved error handling in apps and modules views
- Added debug logging for troubleshooting
- Fixed modules render data flow
Updated API version from 0.3.1 to 0.7.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated luci-app-secubox internal version to 0.4.6-r2.
Version update:
- luci-app-secubox: 0.4.6-r1 → 0.4.6-r2
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated internal version numbers to 0.4.6 across all core modules
for consistency and alignment with the latest development cycle.
Version updates:
- luci-app-network-modes: 0.4.5-r1 → 0.4.6-r1
- luci-theme-secubox: 0.4.5-r1 → 0.4.6-r1
- luci-app-secubox: 0.4.5-r1 → 0.4.6-r1
- luci-app-system-hub: 0.4.5-r1 → 0.4.6-r1
All modules now synchronized at version 0.4.6.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated internal version numbers to align with v0.4.5 release tag.
Version updates:
- luci-app-network-modes: 0.3.6-r2 → 0.4.5-r1
- luci-theme-secubox: 0.4.0-r1 → 0.4.5-r1
- luci-app-secubox: 0.3.1-r1 → 0.4.5-r1
- luci-app-system-hub: 0.4.0-r1 → 0.4.5-r1
All modules now synchronized at version 0.4.5, reflecting the latest
improvements including:
- Menu reorganization (Network & Connectivity category)
- Dual menu access for Network Modes
- Enhanced RPCD permissions
- Robust version handling across all modules
- Improved OOP structure for helpers
- SecuBox overview modules updates
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated three core modules with significant UI/UX improvements:
SecuBox Central Hub (luci-app-secubox):
- Changed header icon from 🛡️ to 🚀 ("SecuBox Control Center")
- Added module filter tabs (All/Security/Network/System/Monitoring)
- Implemented alert dismiss and clear functionality
- Enhanced backend RPCD methods for alert management
- Updated ACL permissions for new alert methods
System Hub (luci-app-system-hub):
- Changed header icon from 🖥️ to ⚙️ ("System Control Center")
- Added 4-column System Info Grid with interactive cards
- Implemented Quick Status Indicators (Internet/DNS/NTP/Firewall)
- Added hostname edit and kernel version copy features
- Enhanced CSS with monospace fonts and responsive design
Network Modes (luci-app-network-modes):
- Changed header icon from ⚙️ to 🌐 ("Network Configuration")
- Added Current Mode Display Card with config summary
- Implemented Mode Comparison Table (5 modes, 6 features)
- Active mode highlighting with gradient effects
- Added "Change Mode" button with gradient styling
All modules validated with comprehensive checks (RPCD, ACL, permissions).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Major Features:
• SecuBox v0.1.2: Real-time module auto-detection via opkg
• System Hub: Dynamic component detection leveraging SecuBox
• Responsive card grid layout for modules and components
• Category filtering tabs (All/Security/Monitoring/Network/System)
• Auto-refresh every 30 seconds with real-time status
SecuBox Changes:
• Added detect_real_modules() function to scan opkg for installed packages
• Enhanced get_modules() with dual-source detection (UCI + auto-detected)
• Enhanced get_modules_by_category() with same dual-source logic
• Auto-categorization based on package name patterns
• Real version detection from opkg for installed packages
• Added in_uci flag to distinguish module sources
• Responsive modules.js with card-based layout
• New modules.css with theme support and animations
System Hub Changes:
• Added get_components() and get_components_by_category() to RPCD
• Components leverage SecuBox module detection via ubus
• Completely rewritten components.js with responsive cards
• New components.css matching SecuBox design language
• Extended API with getComponents() methods
• Unified component management with quick actions
Deployment:
• Added deploy-secubox-v0.1.2.sh for SecuBox deployment
• Added deploy-system-hub-dynamic.sh for System Hub deployment
• Added deploy-dynamic-modules.sh for combined deployment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Major Features:
• Centralized theme system across SecuBox and System Hub
• Three theme modes: dark (default), light, and system (auto-detect)
• Single theme setting in SecuBox controls both plugins
• Real-time theme switching with OS preference detection
SecuBox Changes:
• Added theme.js manager for centralized theme control
• Implemented CSS variables for dark/light mode (secubox.css)
• Fixed hardcoded colors in dashboard.css, alerts.css, monitoring.css
• Integrated theme.js in all 7 views (dashboard, modules, alerts, monitoring, settings, etc.)
• Added get_theme RPC method to luci.secubox backend
• Updated ACL permissions to include get_theme (read access)
• Version updated to 0.1.1
System Hub Changes:
• Added theme.js manager using SecuBox theme API
• Implemented CSS variables for dark/light mode (dashboard.css)
• Integrated theme.js in all 9 views (overview, health, services, logs, backup, components, remote, settings, diagnostics)
• Version updated to 0.1.1
• README updated with maintainer info
Theme System Architecture:
• Configuration: /etc/config/secubox (option theme: dark|light|system)
• RPCD Backend: luci.secubox/get_theme method
• Frontend: theme.js modules (secubox/theme.js, system-hub/theme.js)
• CSS Variables: --sb-bg, --sb-bg-card, --sb-border, --sb-text, --sb-text-muted, --sb-shadow
• Auto-detection: prefers-color-scheme media query for system mode
Documentation:
• Added LUCI_DEVELOPMENT_REFERENCE.md with comprehensive LuCI development patterns
• Documented ubus/RPC types, baseclass.extend() patterns, ACL structure
• Common errors and solutions from implementation experience
Bug Fixes:
• Fixed SecuBox theme not applying visually (CSS variables now used)
• Fixed missing secubox.css in view imports
• Fixed ACL access denied for get_theme method
• Fixed hardcoded colors preventing theme switching
Testing:
• Verified theme switching works in all SecuBox tabs
• Verified theme switching works in all System Hub tabs
• Verified dark/light/system modes function correctly
• Verified single setting controls both plugins
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This marks the first stable and functional release of SecuBox.
Version Updates:
- Package version: 0.0.5-beta → 0.1.0
- Backend RPCD version: 0.0.1-beta → 0.1.0
- Internal version display: 0.0.1-beta → 0.1.0
Features Complete:
✅ Modern dashboard with dynamic circular gauges
✅ Real-time auto-refresh (30s interval)
✅ System health monitoring (CPU, Memory, Disk, Network)
✅ Module management with status tracking
✅ Settings page with 40+ configuration options
✅ Alerts page with filtering and sorting
✅ Monitoring page with historical graphs
✅ Quick actions panel
✅ Responsive design with animations
✅ All file permissions corrected
This is a fully functional reference version ready for production use.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Final version with modern light theme dashboard:
- Beautiful clean design with gradient header
- Dynamic circular gauges with real-time updates
- Auto-refresh functionality
- Responsive layout
- All permissions fixed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixed version after restoring original dark theme design:
- Beautiful dark UI from v0.0.1-beta restored
- Stats overview cards added
- Auto-refresh maintained
- Module links working correctly
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated version to reflect circular gauges restoration:
- Beautiful circular SVG gauges for System Health
- Improved visual design with smooth animations
- Enhanced user experience on dashboard
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated version to reflect new features:
- Enhanced Settings page with 40+ options
- New Alerts page with filtering and sorting
- New Monitoring page with real-time graphs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Updated version across all components:
- Package version in Makefile: 0.0.1-beta
- UCI config version: 0.0.1-beta
- RPCD status endpoints: 0.0.1-beta
This is the first beta release of SecuBox with:
- ✅ Working dashboard with system health monitoring
- ✅ Working modules page showing all 14 modules
- ✅ Module status detection (installed/running)
- ✅ Settings page with UCI configuration
- ✅ Fixed XHR timeout issues
- ✅ Fixed module listing from UCI config
Ready for beta testing and feedback.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>