Commit Graph

97 Commits

Author SHA1 Message Date
668c7d76ca fix(secubox): use Package/luci/install macro for proper htdocs/root handling
- 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>
2025-12-31 14:23:49 +01:00
5c80aa61c0 fix(secubox): replace luci.mk call with explicit install for appstore files
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>
2025-12-31 13:41:00 +01:00
7b8864a036 debug(secubox): add verbose logging for appstore install
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>
2025-12-31 13:33:57 +01:00
43568ef41b fix(secubox): make postinst script non-failing and add auto-recovery
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>
2025-12-31 13:17:07 +01:00
c3cc47bb40 fix(secubox): remove directories from PKG_FILE_MODES to fix build
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>
2025-12-31 13:14:38 +01:00
201b869486 chore: remove old .appstore directory from git tracking
Cleanup after renaming .appstore/ to appstore/ directory.
These files are now tracked in their new location.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 13:07:19 +01:00
0edb6ef69a fix(secubox): improve Makefile install and add postinst verification
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>
2025-12-31 13:05:33 +01:00
edd29ad481 chore(secubox): bump version to 0.7.0-2
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 12:39:07 +01:00
b00d13b84a fix(secubox): rename .appstore to appstore to fix package build
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>
2025-12-31 12:38:47 +01:00
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
298961a537 chore(secubox): bump version to 0.7.0-1
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>
2025-12-31 11:52:07 +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
8e4ebeb2d5 chore: update local build tooling 2025-12-30 19:28:20 +01:00
280dd91798 release: bump secubox hub to 0.6.1-0 2025-12-30 14:42:45 +01:00
d71fef2e4e feat(mqtt-bridge): sync latest UI updates 2025-12-30 10:13:14 +01:00
e4c9ec0237 feat(appstore): add normalized catalog manifests 2025-12-30 08:48:41 +01:00
92eff5aad7 refactor secubox app packaging and theme 2025-12-29 21:57:12 +01:00
2000265646 domoticz: add docker app manifest and docs 2025-12-29 17:34:26 +01:00
3c0003614d profiles: add presets and wizard integration 2025-12-29 17:22:34 +01:00
eab24f9609 secubox: add first-run and app wizards 2025-12-29 17:14:04 +01:00
d566a84dda feat: theme-aligned monitoring and seccubox logs 2025-12-29 15:41:13 +01:00
54e0b5df6c feat: cascade navigation and zigbee presets 2025-12-29 14:40:22 +01:00
4dca3c1917 Update theme selector and deploy tooling 2025-12-29 10:55:51 +01:00
9f23940fe5 Bump luci-app-secubox to 0.5.1 2025-12-29 09:29:14 +01:00
1e45053728 SecuBox v0.5.0-A UI polish 2025-12-29 09:27:52 +01:00
9b9becd0a8 navbar 2025-12-29 09:03:49 +01:00
76955f48d0 versheaders 2025-12-29 07:51:33 +01:00
bd96ab1d31 develstats 2025-12-29 02:02:44 +01:00
9505668da8 feat: Enhanced modules - CDN Cache, Network Modes, and SecuBox monitoring
Comprehensive updates across multiple core modules with improved UI,
menu structure, and monitoring capabilities.

## CDN Cache Updates (4 files)
- Refined dashboard.css styling (408 lines optimized)
- Enhanced cache.js view with better functionality (262 lines)
- Improved overview.js with cleaner structure (312 lines)
- Updated statistics.js for better performance (217 lines)

## Network Modes Updates (1 file)
- Streamlined menu.d JSON configuration (161 lines cleaned)
- Improved menu structure and organization

## SecuBox Updates (4 files)
- Enhanced monitoring.css with improved styles (50 lines)
- Updated dashboard.js with monitoring integration (81 lines)
- Refactored monitoring.js for better performance (452 lines)
- Extended menu.d JSON with monitoring features (36 lines added)

Summary:
- 9 files changed
- +854 lines added, -1125 lines removed
- Net optimization: -271 lines (cleaner, more efficient code)
- Improved UI/UX across all modules
- Better code organization and performance

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 21:52:24 +01:00
6fb738f455 chore: Bump versions - secubox 0.4.6-r3 and cdn-cache 0.4.1
Updated internal version numbers for secubox and cdn-cache modules.

Version updates:
- luci-app-secubox: 0.4.6-r2 → 0.4.6-r3
- luci-app-cdn-cache: 0.2.2-r1 → 0.4.1-r1

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 21:42:05 +01:00
dd0420ed82 chore(secubox): Bump release to 0.4.6-r2
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>
2025-12-28 20:19:21 +01:00
9c38a7eca7 chore: Bump version to 0.4.6 for all core modules
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>
2025-12-28 20:12:37 +01:00
6e20f9d959 chore: Bump version to 0.4.5 for all core modules
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>
2025-12-28 20:03:46 +01:00
27a490e3a8 Update SecuBox overview modules and menu 2025-12-28 19:53:07 +01:00
a9fca35644 fix: Release v0.4.4 - Improved version handling and helpers refactoring
This release focuses on consistent version display across all modules
and proper OOP structure for network-modes helpers.

## Version Display Improvements (3 files)

Added robust version resolution functions to handle various version field names:

**SecuBox Dashboard** (dashboard.js):
- Added getModuleVersion() function with fallback chain
- Checks: version, pkg_version, package_version, packageVersion, Version
- Handles both string and number types
- Returns '—' if no version found
- Loads modules list from API for accurate version data

**SecuBox Modules** (modules.js):
- Added resolveModuleVersion() function with same fallback logic
- Ensures consistent version display in module cards
- Handles missing or undefined versions gracefully

**System Hub Components** (components.js):
- Added getComponentVersion() function with version fallback chain
- Consistent version display across all components
- Proper handling of edge cases (null, undefined, empty strings)

## Network Modes Refactoring (1 file)

**helpers.js**:
- Refactored from plain object export to baseclass.extend()
- Proper OOP structure following LuCI conventions
- Added 'require baseclass' import
- All helper functions now properly encapsulated
- Better integration with LuCI module system

## Benefits

- Consistent version display across SecuBox, System Hub, and Components
- Handles version field name variations (legacy, OpenWrt, custom)
- Type-safe version handling (numbers → strings)
- Improved code maintainability with proper OOP structure
- Better error handling for missing version information

Summary:
- 4 files changed (+85, -8)
- 3 new version resolution functions
- 1 OOP refactoring for helpers
- Improved consistency and reliability

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 19:35:54 +01:00
de40c8e533 feat: Release v0.4.3 - Dual menu access and enhanced permissions
This release adds dual menu access for Network Modes (both SecuBox and
LuCI Network menus) and significantly expands RPCD permissions for all
mode configuration operations.

## Network Modes - Dual Menu Access (2 files)
- Added Network Modes to standard LuCI Network menu (admin/network/modes)
- Maintains existing SecuBox menu location (admin/secubox/network/modes)
- Users can now access Network Modes from both locations
- Menu order: 60 in Network menu, 10 in SecuBox Network category

## Network Modes - Enhanced Permissions (1 file)
Added 13+ new RPCD methods to ACL for complete mode management:

Read permissions:
- preview_changes
- sniffer_config, ap_config, relay_config, router_config
- travel_config, doublenat_config, multiwan_config, vpnrelay_config
- travel_scan_networks

Write permissions:
- apply_mode, confirm_mode, rollback
- update_settings
- generate_wireguard_keys, apply_wireguard_config
- apply_mtu_clamping, enable_tcp_bbr
- add_vhost, generate_config

## Network Modes - View Updates (11 files)
Updated all mode views for consistency:
- helpers.js: 28 lines refactored
- overview.js: Enhanced view structure
- All mode views: wizard, router, multiwan, doublenat, accesspoint,
  relay, vpnrelay, travel, sniffer

## Theme Enhancements (1 file)
- theme.js: 89 lines added
- Enhanced theme initialization and configuration
- Improved component styling support

## SecuBox Dashboard (2 files)
- Updated dashboard.js and modules.js
- Improved view rendering and integration

## System Hub (3 files)
- Enhanced logs.js, overview.js, services.js
- Better view consistency and functionality

Summary:
- 19 files changed (+282, -36)
- Dual menu access for Network Modes
- 13+ new RPCD permission methods
- All network mode views updated
- Theme significantly enhanced

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 19:24:40 +01:00
aad081e841 chore: Release v0.4.2 - Menu reorganization and CSS enhancements
This release focuses on improved menu structure, enhanced CSS styling
across all modules, and documentation cleanup.

## Menu & Navigation (2 modules)
- Reorganized SecuBox menu with new "Network & Connectivity" category
- Moved Network Modes from top-level to Network submenu
- New menu path: admin/secubox/network/modes

## Network Modes Enhancements (14 files)
- Enhanced all mode views: Overview, Wizard, Router, Multi-WAN, Double NAT,
  Access Point, Relay, VPN Relay, Travel, Sniffer, Settings
- Improved dashboard.css styling
- Updated API and helpers for better functionality

## System Hub Improvements (11 files)
- Added dedicated CSS files for Backup and Health views
- Enhanced styling: common.css, components.css, logs.css, services.css
- Updated views: backup.js, components.js, health.js, logs.js, services.js
- Removed deprecated settings.js view

## SecuBox Dashboard Updates (4 files)
- Refined dashboard.css and modules.css styling
- Enhanced dashboard.js and modules.js functionality

## Theme Updates (1 file)
- Improved navigation.css component styling

## Documentation Cleanup (15 files deleted)
- Removed obsolete documentation from docs/ directory
- Migrated documentation to DOCS/ (uppercase) structure
- Cleaned up archive files and outdated guides

## Configuration (1 file)
- Updated Claude settings for new permissions

Summary:
- 50 files changed
- 3 modules enhanced (network-modes, system-hub, secubox)
- 15 documentation files cleaned up
- 2 new CSS files added
- Menu structure reorganized

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 19:07:44 +01:00
883fc4be3c refactor(menu): Reorganize network-modes under Network category
Restructured the SecuBox menu hierarchy to improve organization:
- Added new "Network & Connectivity" category (order 40)
- Moved Network Modes from top-level to Network submenu
- Changed paths: admin/secubox/network-modes → admin/secubox/network/modes

Menu structure:
  SecuBox/
  ├── Dashboard
  ├── Modules
  ├── Alerts
  ├── Settings
  ├── Security & Access
  ├── Monitoring & Analytics
  ├── Network & Connectivity        ← NEW CATEGORY
  │   └── Network Modes            ← MOVED HERE
  │       ├── Overview
  │       ├── Mode Wizard
  │       ├── Router Mode
  │       ├── Multi-WAN Mode
  │       ├── Double NAT Mode
  │       ├── Access Point Mode
  │       ├── Relay Mode
  │       ├── VPN Relay Mode
  │       ├── Travel Mode
  │       ├── Sniffer Mode
  │       └── Settings
  ├── System & Performance
  ├── Services & Applications
  └── Help

Files modified:
- luci-app-secubox/root/usr/share/luci/menu.d/luci-app-secubox.json
- luci-app-network-modes/root/usr/share/luci/menu.d/luci-app-network-modes.json

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:38:07 +01:00
a6477b8710 feat: Version 0.4.1 - Enhanced network modes and system improvements
Major Enhancements:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Network Modes Module:
- Added 3 new network modes:
  * Double NAT mode (doublenat.js) - Cascaded router configuration
  * Multi-WAN mode (multiwan.js) - Load balancing and failover
  * VPN Relay mode (vpnrelay.js) - VPN gateway configuration
- Enhanced existing modes:
  * Access Point improvements
  * Travel mode refinements
  * Router mode enhancements
  * Relay mode updates
  * Sniffer mode optimizations
- Updated wizard with new mode options
- Enhanced API with new mode support
- Improved dashboard CSS styling
- Updated helpers for new modes
- Extended RPCD backend functionality
- Updated menu structure for new modes
- Enhanced UCI configuration

System Hub Module:
- Added dedicated logs.css stylesheet
- Enhanced logs.js view with better styling
- Improved overview.css responsive design
- Enhanced services.css for better UX
- Updated overview.js with theme integration
- Improved services.js layout

SecuBox Dashboard:
- Enhanced dashboard.css with theme variables
- Improved dashboard.js responsiveness
- Better integration with global theme

Files Changed:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Network Modes (17 files):
  Modified: api.js, dashboard.css, helpers.js, menu, config, RPCD backend
  Modified Views: accesspoint, overview, relay, router, sniffer, travel, wizard
  New Views: doublenat, multiwan, vpnrelay

System Hub (6 files):
  New: logs.css
  Modified: overview.css, services.css, logs.js, overview.js, services.js

SecuBox (2 files):
  Modified: dashboard.css, dashboard.js

Total: 25 files changed (21 modified, 4 new)

Technical Improvements:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- Global theme CSS variable usage
- Responsive design enhancements
- Improved error handling
- Better mode validation
- Enhanced user feedback
- Optimized CSS performance
- Improved accessibility

Network Mode Capabilities:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Router Mode - Standard routing
2. Access Point Mode - WiFi AP with bridge
3. Relay Mode - WiFi repeater/extender
4. Travel Mode - Portable router configuration
5. Sniffer Mode - Network monitoring
6. Double NAT Mode - Cascaded NAT for network isolation (NEW)
7. Multi-WAN Mode - Multiple uplinks with load balancing (NEW)
8. VPN Relay Mode - VPN gateway and tunnel endpoint (NEW)

Breaking Changes:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
None - All changes are backward compatible

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 18:12:28 +01:00
b884b12970 feat: Integrate global CyberMood theme into core modules
Migrated three core modules to use the global secubox-theme package:

Modules Updated:
- luci-app-secubox (dashboard, modules views)
- luci-app-network-modes (overview view)
- luci-app-system-hub (overview, services views)

Changes Per Module:
- Replaced module-specific theme imports with 'require secubox-theme/theme as Theme'
- Updated CSS imports to use global secubox-theme.css bundle
- Initialized global theme with Theme.init({ theme: 'dark', language: 'en' })
- Removed redundant theme.getTheme() calls from load() functions
- Added global theme CSS link tags to view renders

Benefits:
- Unified CyberMood design system across all modules
- Access to 100+ CSS variables (colors, spacing, effects)
- Theme switching support (dark, light, cyberpunk)
- Multi-language support (en, fr, de, es) via Theme.t()
- Reduced CSS duplication
- Consistent UI components (cards, buttons, badges)

Deployment:
- Created deploy-modules-with-theme.sh for batch deployment
- All modules successfully deployed to router 192.168.8.191
- Verified HTTP access to updated JavaScript files

Testing:
-  SecuBox dashboard loads with global theme
-  Network-modes overview uses theme CSS
-  System-hub views integrate theme properly
-  All 27 view files deployed successfully

Next Steps:
- Modules can now use Theme.createCard(), createButton(), createBadge()
- Translation keys available for internationalization
- Theme variants switchable via Theme.apply('dark'|'light'|'cyberpunk')

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 17:16:37 +01:00
6314884f00 feat: Add help system integration and fix menu structure
- Created help system (help.js, help.css) for all modules
- Integrated help button in network-modes module
- Fixed menu structure: removed empty Network Management category
- Fixed all dashboard and modules page links
- Added website deployment script
- Created comprehensive documentation

New Files:
- DOCS/HELP_INTEGRATION_PLAN.md
- DOCS/WEBSITE_DEPLOYMENT_GUIDE.md
- EXAMPLES/help-button-integration.js
- luci-app-secubox/htdocs/luci-static/resources/secubox/help.js
- luci-app-secubox/htdocs/luci-static/resources/secubox/help.css
- secubox-tools/deploy-website.sh

Modified:
- luci-app-network-modes: Added help button integration
- luci-app-secubox: Fixed menu paths and module links

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 16:29:04 +01:00
15b7f45ab2 refactor(makefiles): Standardize PKG_FILE_MODES comments across all modules
- Add comprehensive file permissions documentation to all 15 Makefiles
- Standardized comment block explains:
  - RPCD scripts: 755 (CRITICAL - required for ubus calls)
  - Helper scripts: 755 (if executable)
  - Config files: 644 (readable by all)
  - CSS/JS files: 644 (set automatically by luci.mk)

- Ensures consistency and clarity for developers
- Critical for proper module functionality (RPCD must be executable)
- Follows OpenWrt package best practices

Affected modules:
- luci-app-auth-guardian
- luci-app-bandwidth-manager
- luci-app-cdn-cache
- luci-app-client-guardian
- luci-app-crowdsec-dashboard
- luci-app-ksm-manager
- luci-app-media-flow
- luci-app-netdata-dashboard
- luci-app-netifyd-dashboard
- luci-app-network-modes
- luci-app-secubox (includes fix-permissions.sh helper)
- luci-app-system-hub
- luci-app-traffic-shaper
- luci-app-vhost-manager
- luci-app-wireguard-dashboard
2025-12-28 14:34:31 +01:00
403283419c docs: Reorganize documentation structure and add architecture diagrams
Major documentation improvements and restructuring for better maintainability
and navigation.

## Structural Changes

### New Documentation Organization
- Move all documentation to DOCS/ directory for better organization
- Create DOCS/archive/ for historical documents
- Move deployment scripts to secubox-tools/ directory

### Archived Documents
- COMPLETION_REPORT.md → archive/ (project milestone)
- MODULE-ENABLE-DISABLE-DESIGN.md → archive/ (feature implemented)
- BUILD_ISSUES.md → archive/ (issues resolved)
- Add archive/README.md with archiving policy and document index

## Documentation Enhancements

### Version Standardization
- Add version headers to CLAUDE.md (v1.0.0)
- Add version headers to BUILD_ISSUES.md (v1.0.0)
- Standardize date format to YYYY-MM-DD across all docs

### Cross-References & Navigation
- Add "See Also" sections to PERMISSIONS-GUIDE.md
- Add "See Also" sections to VALIDATION-GUIDE.md
- Link quick references to detailed guides
- Improve documentation discoverability

### Architecture Diagrams (Mermaid)
Add 3 professional diagrams to DEVELOPMENT-GUIDELINES.md:

1. **System Architecture Diagram** (§2)
   - Complete data flow: Browser → LuCI → RPCD → ubus → System
   - Color-coded components by layer
   - Shows JavaScript, RPC, RPCD daemon, UCI, system services

2. **Deployment Workflow Diagram** (§9)
   - Step-by-step deployment process with validation checkpoints
   - Error recovery paths for common issues (403, 404, -32000)
   - Local validation, file transfer, permission fixes, service restarts

3. **Component Hierarchy Diagram** (§1)
   - Standard page structure and CSS class relationships
   - Page → Header → Stats → Content → Cards → Buttons
   - Shows design system component organization

## New Files

### TODO-ANALYSE.md
- Comprehensive documentation improvement roadmap
- Tasks categorized: Immediate, Short-term, Long-term, Optional
- Progress tracking with acceptance criteria
- Covers testing, security, performance guides
- Documentation automation plans

## Benefits

 Cleaner project structure (docs in DOCS/, tools in secubox-tools/)
 Better documentation navigation with cross-references
 Visual understanding through architecture diagrams
 Historical documents archived but accessible
 Standardized versioning across all documentation
 Clear roadmap for future documentation improvements

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 09:52:15 +01:00
81a0448fde makefile 2025-12-28 08:05:06 +01:00
f552cf7b99 Add LuCI development status view for SecuBox Hub
New Feature:
- Development status page in LuCI interface
- Real-time progress tracking for administrators
- Integrated with SecuBox Hub menu

File Added:
- luci-app-secubox/htdocs/luci-static/resources/view/secubox/dev-status.js
  * LuCI view module with native integration
  * Same milestone data as website widget
  * Adapted styling for LuCI theme
  * Translated labels using LuCI i18n system

Features:
 Overall progress indicator (87%)
 4 milestone categories with progress bars
 Project timeline (6 phases)
 Statistics grid (8 metrics)
 Status icons and colors
 Responsive grid layouts
 LuCI theme integration

Display Sections:
1. Overall Progress Badge
   - Large percentage display
   - Gradient background
   - Center aligned

2. Development Milestones
   - Core Modules (100%)
   - Hardware Support (95%)
   - Integration & Testing (85%)
   - Campaign Preparation (70%)
   - Detailed item lists with statuses

3. Project Timeline
   - 6 phases with visual markers
   - Progress bars per phase
   - Completed/in-progress/planned indicators
   - Timeline line connecting phases

4. Project Statistics
   - Modules, Languages, Architectures
   - Lines of Code, Contributors, Commits
   - Open/Closed Issues

Technical Implementation:
- LuCI view.extend() architecture
- Native E() element creation
- Inline CSS for self-contained styling
- No external dependencies
- Translated strings using _() function
- Compatible with LuCI responsive layout

Access Path:
Services → SecuBox → Development Status
URL: /admin/services/secubox/dev-status

Integration:
- Provides transparency for system administrators
- Shows SecuBox project maturity
- Useful for beta testers and contributors
- Complements website campaign page

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 03:34:19 +01:00
e7975ecb7a refactor: Simplify enable/disable to only manage UCI config
The enable_module() and disable_module() functions were incorrectly also
starting/stopping services. They should only manage UCI configuration flags.
Service lifecycle (start/stop/restart) should be handled by dedicated functions.

**Changes:**

**enable_module():**
-  Sets UCI `secubox.{module}.enabled = '1'`
-  Commits UCI changes
-  Removed: Service enable/start commands
-  Returns success with note to use start_module()

**disable_module():**
-  Sets UCI `secubox.{module}.enabled = '0'`
-  Commits UCI changes
-  Removed: Service stop/disable commands
-  Returns success with note to use stop_module()

**Behavior:**

Before:
```bash
ubus call luci.secubox enable_module '{"module":"example"}'
# Would: Set enabled=1 + Enable service + Start service
```

After:
```bash
ubus call luci.secubox enable_module '{"module":"example"}'
# Only: Set enabled=1 in UCI config

ubus call luci.secubox start_module '{"module":"example"}'
# Separately: Start the actual service
```

**Benefits:**
-  Clear separation of concerns
-  Enable/disable = logical flag in UCI
-  Start/stop/restart = actual service control
-  More predictable behavior
-  Aligns with user expectations

**Testing:**
```bash
# Enable in config
ubus call luci.secubox enable_module '{"module":"network_modes"}'
→ UCI: enabled='1' ✓

# Disable in config
ubus call luci.secubox disable_module '{"module":"network_modes"}'
→ UCI: enabled='0' ✓

# Services not affected, use start/stop separately
```

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 02:35:57 +01:00
72a2b29e32 fix: Correct module dashboard button URLs
Dashboard and modules view had incorrect URLs for module links, causing
404 errors when clicking on module cards. Updated all module paths to
match actual menu structure defined in menu.d JSON files.

**Changes:**

**dashboard.js:**
- Fixed modulePaths in renderActiveModules (2 instances)
- Updated all 14 module paths to include correct subpaths

**modules.js:**
- Fixed getModuleDashboardPath function
- Updated all 14 module paths to match menu definitions

**Corrected Paths:**

| Module | Old Path | New Path |
|--------|----------|----------|
| crowdsec | security/crowdsec | security/crowdsec/overview |
| netdata | monitoring/netdata | monitoring/netdata/dashboard |
| netifyd | security/netifyd | security/netifyd/overview |
| wireguard | network/wireguard | network/wireguard/overview |
| network_modes | network/modes | network/network-modes/overview |
| client_guardian | security/guardian | security/client-guardian/overview |
| system_hub | system/hub | system/system-hub/overview |
| bandwidth_manager | network/bandwidth | network/bandwidth-manager/overview |
| auth_guardian | security/auth | security/auth-guardian/overview |
| media_flow | network/media | monitoring/mediaflow/dashboard |
| vhost_manager | system/vhost | services/vhosts/overview |
| traffic_shaper | network/shaper | network/traffic-shaper/overview |
| cdn_cache | network/cdn | network/cdn-cache/overview |
| ksm_manager | security/ksm | security/ksm-manager/overview |

**Result:**
-  Module cards now link to correct dashboards
-  "Dashboard" buttons in modules view work correctly
-  All paths verified against actual menu.d/*.json definitions

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 02:33:34 +01:00
acdc7bc8d2 feat: Add version info to dashboard data endpoint
The get_dashboard_data endpoint was missing version information for modules.
Updated to include version extraction from package manager (apk/opkg).

**Changes:**
- Add package and version config variables in get_dashboard_data
- Extract real version from apk (OpenWrt 25.12+) or opkg (24.10)
- Include version field in JSON output for each module

**Dashboard Data Now Includes:**
- Module version for installed packages (e.g., "0.3.1")
- Default version "0.0.9" for non-installed modules
- Consistent version format across all endpoints

**Benefits:**
- Dashboard can display installed package versions
- Users can see which version of each module is running
- Consistent with modules endpoint behavior

Tested on OpenWrt 25.12.0-rc1 with apk package manager.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-28 02:26:42 +01:00