secubox-openwrt/.claude
CyberMind-FR e258d86eea feat: Admin Control Center with State Management (v0.9.0)
Major feature release implementing comprehensive state management, component registry,
and admin control center with full UI integration.

## Backend Features (secubox-core v0.9.0-1)

State Management System:
-  State database (state-db.json) with 15 states across 4 categories
-  State machine with transition matrix validation
-  secubox-state CLI (8 commands: get, set, history, list, validate, sync, freeze, clear-error)
-  state-machine.sh with atomic transitions using flock
-  State history tracking with timestamps and reasons
-  Error state handling with detailed error info
-  Frozen state support for system-critical components

Component Registry System:
-  Component registry database (component-registry.json)
-  secubox-component CLI (7 commands: list, get, register, unregister, tree, affected, set-setting)
-  Component types: app, module, widget, service, composite
-  Dependency tracking (required/optional)
-  Recursive dependency tree resolution
-  Reverse dependency tracking
-  Component settings management
-  Profile tagging and filtering

Auto-Sync System:
-  secubox-sync-registry CLI for catalog synchronization
-  Auto-populate from catalog.json
-  Plugin catalog directory scanning
-  Installed package detection
-  Automatic state initialization

RPC Backend (luci.secubox):
-  6 state management RPC methods
-  5 component registry RPC methods
-  Bulk operations support
-  State validation endpoints

## Frontend Features (luci-app-secubox-admin v1.0.0-16)

UI Components:
-  state-utils.js: 20+ utility functions, state config, transition validation
-  StateIndicator.js: 5 rendering modes (badge, compact, pill, dot, statistics)
-  StateTimeline.js: 4 visualization modes (vertical, horizontal, compact, transition diagram)
-  state-management.css: 600+ lines with animations, responsive design, accessibility

Admin Control Center Dashboard:
-  System overview panel with health metrics
-  Component state summary with statistics
-  Recent state transitions timeline
-  Alerts panel for warnings and errors
-  Quick actions panel
-  Real-time updates (5-second polling)
-  Metric cards with hover effects
-  State distribution by category

API Integration (api.js):
-  11 RPC method declarations
-  Enhanced methods: getComponentWithState(), getAllComponentsWithStates()
-  Bulk operations: bulkSetComponentState()
-  State statistics: getStateStatistics()
-  Retry logic with exponential backoff
-  Promise-based async operations

## Documentation

Comprehensive Documentation:
-  API-REFERENCE.md (1,200+ lines): Complete API docs for RPC, CLI, JS
-  EXAMPLES.md (800+ lines): 30+ usage examples, shell scripts, integration patterns
-  State definitions table (15 states)
-  State transition matrix
-  Component metadata schemas
-  Error codes reference
-  Testing examples

## State Definitions

15 States Across 4 Categories:
- Persistent: available, installed, active, disabled, frozen
- Transient: installing, configuring, activating, starting, stopping, uninstalling
- Runtime: running, stopped
- Error: error (with subtypes)

State Transition Flow:
available → installing → installed → configuring → configured →
activating → active → starting → running → stopping → stopped

## Technical Details

Files Created (10 backend + 8 frontend):
Backend:
- /usr/sbin/secubox-state (12KB, 8 commands)
- /usr/sbin/secubox-component (12KB, 7 commands)
- /usr/sbin/secubox-sync-registry (8.4KB)
- /usr/share/secubox/state-machine.sh (5.2KB)
- /var/lib/secubox/state-db.json (schema)
- /var/lib/secubox/component-registry.json (schema)

Frontend:
- resources/secubox-admin/state-utils.js (~400 lines)
- resources/secubox-admin/components/StateIndicator.js (~350 lines)
- resources/secubox-admin/components/StateTimeline.js (~450 lines)
- resources/secubox-admin/state-management.css (~600 lines)
- resources/view/secubox-admin/control-center.js (~550 lines)
- resources/secubox-admin/api.js (+145 lines)

Documentation:
- docs/admin-control-center/API-REFERENCE.md (1,200+ lines)
- docs/admin-control-center/EXAMPLES.md (800+ lines)

Files Modified (3):
- package/secubox/secubox-core/Makefile (v0.8.0 → v0.9.0-1)
- package/secubox/luci-app-secubox-admin/Makefile (release 15 → 16)
- package/secubox/secubox-core/root/usr/libexec/rpcd/luci.secubox (+157 lines)

## Installation & Migration

Makefile Updates:
- Added 3 new CLI tools to install section
- Added state-machine.sh to scripts
- Updated package description
- Enhanced postinst to initialize databases
- Auto-sync registry on first install

Postinst Features:
- Automatic state-db.json initialization
- Automatic component-registry.json initialization
- Catalog sync on install
- Version announcement with new features

## Performance & Security

Performance:
- File locking (flock) for atomic state transitions
- State history limited to 100 entries per component
- RPC retry logic with exponential backoff
- Bulk operations use Promise.all for parallel execution
- Component list caching (30 seconds)

Security:
- Frozen state prevents unauthorized modifications
- All state changes logged with timestamp and reason
- System-critical components have additional safeguards
- Proper authentication required for state transitions

## Testing & Validation

Features:
- State transition validation
- Component dependency resolution
- Circular dependency detection
- State consistency checker
- Integration test scripts included in docs

## Breaking Changes

None - Backward Compatible:
- Existing RPC methods remain functional
- State-aware methods are additive
- Components without state default to 'available'
- Migration is automatic on install

## Statistics

Total Implementation:
- Lines of Code: ~4,000
  - Backend: ~1,800 (Bash + JSON)
  - Frontend: ~2,200 (JavaScript + CSS)
  - Documentation: ~2,000 (Markdown)
- Functions/Commands: 40+
- RPC Methods: 11
- CLI Commands: 22
- UI Components: 5
- Documentation Pages: 2

## Next Phase

Remaining from Plan:
- Phase 4: System Hub integration
- Phase 5: Migration script (secubox-migrate-state)
- Phase 6: Additional documentation (ARCHITECTURE.md, STATE-MANAGEMENT.md, etc.)
- Phase 7: Additional UI views (components.js, state-manager.js, debug-panel.js)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 10:05:32 +01:00
..
context.md feat: Add help system integration and fix menu structure 2025-12-28 16:29:04 +01:00
HISTORY.md SecuBox v0.5.0-A UI polish 2025-12-29 09:27:52 +01:00
module-implementation-guide.md docs: add comprehensive module implementation guides 2025-12-25 08:40:20 +01:00
module-prompts.md add claude instructions 2025-12-23 09:31:00 +01:00
README.md release: v0.2.2 - Design System v0.3.0 & Comprehensive Documentation 2025-12-26 18:55:19 +01:00
settings.local.json feat: Admin Control Center with State Management (v0.9.0) 2026-01-05 10:05:32 +01:00
THEME_CONTEXT.md docs: Add comprehensive CyberMood global theme system documentation 2025-12-28 16:58:11 +01:00
TODO.md navbar 2025-12-29 09:03:49 +01:00
WIP.md SecuBox v0.5.0-A UI polish 2025-12-29 09:27:52 +01:00

📚 Configuration Claude Code pour SecuBox

Version: 2.0.0 Date: 2025-12-26 Projet: SecuBox OpenWrt Design System: v0.3.0 (Demo-inspired)

Ce répertoire contient la configuration et les guides pour travailler avec Claude Code sur le projet SecuBox.


🚨 IMPORTANT: Nouvelle Documentation (v2.0)

La documentation a été entièrement restructurée et améliorée!

📖 Guides Principaux (À la racine du projet)

Guide Description Quand l'utiliser
DEVELOPMENT-GUIDELINES.md GUIDE COMPLET (33KB, 900+ lignes)
Design System, RPCD/ubus, ACL, JS, CSS, Debug, Validation, Deployment
AVANT toute modification de code
QUICK-START.md AIDE-MÉMOIRE (6.4KB)
Règles critiques, commandes rapides, templates de code
Référence quotidienne
CLAUDE.md 🏗️ ARCHITECTURE (17KB)
Build OpenWrt, structure fichiers, CI/CD
Build et architecture
README.md 📘 VUE D'ENSEMBLE (18KB)
Présentation projet, modules, quick start
Introduction au projet

🔧 Scripts & Tools

Script Description Usage
deploy-module-template.sh Script de déploiement standardisé avec backup ./deploy-module-template.sh <module-name>
validate-modules.sh Validation complète des modules ./secubox-tools/validate-modules.sh
local-build.sh Build local avec SDK OpenWrt ./secubox-tools/local-build.sh build

⚠️ Règles Critiques (À TOUJOURS Respecter)

1. RPCD Script Naming

RÈGLE: Nom fichier RPCD = objet ubus (EXACT!)

✅ CORRECT:
JavaScript: object: 'luci.system-hub'
Fichier:   root/usr/libexec/rpcd/luci.system-hub

❌ INCORRECT (cause -32000 error):
Fichier:   root/usr/libexec/rpcd/system-hub

2. Menu Path Matching

RÈGLE: Path menu = fichier vue (EXACT!)

✅ CORRECT:
Menu JSON: "path": "system-hub/overview"
Fichier:   view/system-hub/overview.js

❌ INCORRECT (cause 404 error):
Menu: "system-hub/overview"
File: view/systemhub/overview.js

3. Permissions

# RPCD scripts = exécutable
chmod 755 root/usr/libexec/rpcd/luci.*

# CSS/JS = lecture seule
chmod 644 htdocs/**/*.{css,js}

4. Validation OBLIGATOIRE

# TOUJOURS exécuter avant commit
./secubox-tools/validate-modules.sh

5. CSS Variables (PAS de hardcode!)

/* ✅ CORRECT */
color: var(--sh-text-primary);

/* ❌ INCORRECT */
color: #fafafa;

6. Dark Mode (Support OBLIGATOIRE)

/* TOUJOURS fournir styles dark mode */
[data-theme="dark"] .my-component {
    background: var(--sh-bg-card);
}

7. Typographie

/* Texte général */
font-family: 'Inter', sans-serif;

/* Valeurs numériques, IDs, code */
font-family: 'JetBrains Mono', monospace;

8. Gradients

/* Utiliser les variables pour dégradés */
background: linear-gradient(135deg, var(--sh-primary), var(--sh-primary-end));

🎨 Design System v0.3.0

Inspiré de: https://cybermind.fr/apps/system-hub/demo.html

Palette Dark Mode (Recommandé)

--sh-bg-primary: #0a0a0f;      /* Fond principal (noir profond) */
--sh-bg-secondary: #12121a;     /* Fond cartes/sections */
--sh-bg-tertiary: #1a1a24;      /* Fond hover/actif */
--sh-border: #2a2a35;           /* Bordures */
--sh-primary: #6366f1;          /* Indigo */
--sh-primary-end: #8b5cf6;      /* Violet (dégradés) */
--sh-success: #22c55e;          /* Vert */
--sh-danger: #ef4444;           /* Rouge */
--sh-warning: #f59e0b;          /* Orange */

Components CSS (Classes principales)

.sh-page-header         /* En-tête page avec gradient title */
.sh-page-title          /* Titre avec effet gradient text */
.sh-stat-badge          /* Badge stat (130px min) */
.sh-card                /* Carte avec bordure gradient hover */
.sh-btn-primary         /* Bouton gradient indigo-violet */
.sh-filter-tab          /* Onglet de filtre */
.sh-nav-tab             /* Onglet navigation sticky */

Grid Sizes

/* Stats compacts */
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));

/* Metrics moyens */
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));

/* Info cards larges */
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));

🚀 Workflow de Développement

1. Avant de Commencer

# Lire les guides
cat ../QUICK-START.md           # Règles critiques
cat ../DEVELOPMENT-GUIDELINES.md # Guide complet (section pertinente)

2. Développement

# Modifier le code
vim luci-app-system-hub/htdocs/luci-static/resources/view/system-hub/overview.js

# Valider IMMÉDIATEMENT
./secubox-tools/validate-modules.sh

3. Test Local (Optionnel)

# Build local
./secubox-tools/local-build.sh build luci-app-system-hub

# Vérifier .ipk
ls -la build/x86-64/luci-app-system-hub*.ipk

4. Déploiement

# Déployer sur routeur de test
./deploy-module-template.sh system-hub

# Le script fait automatiquement:
# - Backup avec timestamp
# - Deploy JS, CSS, RPCD, menu, ACL
# - Fix permissions
# - Clear cache
# - Restart services
# - Vérification

5. Test Navigateur

1. Ouvrir en MODE PRIVÉ (Ctrl+Shift+N)
2. URL: https://192.168.8.191/cgi-bin/luci/admin/secubox/system/system-hub
3. F12 Console: vérifier pas d'erreurs
4. F12 Network: tous fichiers 200 OK
5. Tester dark/light mode
6. Tester responsive (mobile view)

6. Commit

git add .
git commit -m "feat: improve system-hub overview with demo styling"
git push

🔍 Checklist Pre-Commit

OBLIGATOIRE avant chaque commit:

  • ./secubox-tools/validate-modules.sh PASSED
  • RPCD name = ubus object name
  • Menu path = view file path
  • Permissions: 755 (RPCD), 644 (CSS/JS)
  • JSON files valides (jsonlint)
  • CSS: variables utilisées (pas hardcode)
  • CSS: dark mode supporté [data-theme="dark"]
  • JS: gestion d'erreur sur API calls
  • Version incrémentée dans Makefile (PKG_VERSION)

🐛 Erreurs Communes & Solutions Rapides

Erreur Cause Solution Rapide
-32000 Object not found RPCD name ≠ ubus object Renommer: mv rpcd/wrong-name rpcd/luci.correct-name
404 View not found Menu path ≠ file location Corriger path dans menu.d/*.json
403 Forbidden CSS Permissions incorrectes chmod 644 *.css
[object HTMLButtonElement] Array imbriqué dans E() Enlever wrapper: E('div', {}, renderButtons())
Styles pas à jour Cache navigateur Mode privé + Ctrl+Shift+R

Pour diagnostics détaillés: Voir DEVELOPMENT-GUIDELINES.md - Common Errors


🧪 Debug Commands

# Vérifier ubus objects
ssh root@192.168.8.191 "ubus list | grep luci.system-hub"

# Tester RPCD directement
ssh root@192.168.8.191 "/usr/libexec/rpcd/luci.system-hub call getHealth"

# Vérifier fichiers déployés
ssh root@192.168.8.191 "ls -la /www/luci-static/resources/view/system-hub/"

# Vérifier permissions
ssh root@192.168.8.191 "ls -la /usr/libexec/rpcd/luci.system-hub"

# Logs système
ssh root@192.168.8.191 "logread | grep -i error | tail -20"

# Clear cache + restart
ssh root@192.168.8.191 "rm -f /tmp/luci-indexcache /tmp/luci-modulecache/* && /etc/init.d/rpcd restart && /etc/init.d/uhttpd restart"

📁 Fichiers de ce Répertoire (.claude/)

Fichiers Actifs (v2.0)

Fichier Description Status
README.md Ce fichier - Guide configuration Claude ACTIF v2.0
settings.local.json Configuration locale Claude Code ACTIF v2.0

Fichiers Legacy (Deprecated)

Fichier Description Migration
module-prompts.md Anciens prompts modules (18KB) → DEVELOPMENT-GUIDELINES.md
module-implementation-guide.md Ancien template modules (23KB) → DEVELOPMENT-GUIDELINES.md
context.md Ancien contexte (13KB) → README.md + CLAUDE.md

⚠️ Les fichiers legacy sont conservés pour référence historique mais ne doivent plus être utilisés.

Utilisez maintenant:

  • DEVELOPMENT-GUIDELINES.md (guide complet)
  • QUICK-START.md (aide-mémoire)
  • CLAUDE.md (architecture)

🎯 Templates de Code Rapides

Page Header

E('div', { 'class': 'sh-page-header' }, [
    E('div', {}, [
        E('h2', { 'class': 'sh-page-title' }, [
            E('span', { 'class': 'sh-page-title-icon' }, '🎯'),
            'Page Title'
        ]),
        E('p', { 'class': 'sh-page-subtitle' }, 'Description')
    ]),
    E('div', { 'class': 'sh-stats-grid' }, [
        E('div', { 'class': 'sh-stat-badge' }, [
            E('div', { 'class': 'sh-stat-value' }, '92'),
            E('div', { 'class': 'sh-stat-label' }, 'Score')
        ])
    ])
])

Card with Gradient Border

E('div', { 'class': 'sh-card sh-card-success' }, [
    E('div', { 'class': 'sh-card-header' }, [
        E('h3', { 'class': 'sh-card-title' }, [
            E('span', { 'class': 'sh-card-title-icon' }, '⚙️'),
            'Card Title'
        ])
    ]),
    E('div', { 'class': 'sh-card-body' }, [
        // Content here
    ])
])

RPCD Script

#!/bin/sh
case "$1" in
    list)
        echo '{"getStatus": {}, "getHealth": {}}'
        ;;
    call)
        case "$2" in
            getStatus)
                printf '{"enabled": true, "version": "1.0.0"}\n'
                ;;
            getHealth)
                cpu=$(top -bn1 | grep "CPU:" | awk '{print $2}' | sed 's/%//')
                printf '{"cpu": {"usage": %s}}\n' "$cpu"
                ;;
        esac
        ;;
esac

Pour plus de templates: Voir QUICK-START.md - Quick Code Templates


📊 Structure d'un Module Type

luci-app-<module-name>/
├── Makefile                              # Package OpenWrt
├── README.md                             # Documentation module
├── htdocs/luci-static/resources/
│   ├── view/<module-name>/
│   │   ├── overview.js                   # Vue principale
│   │   ├── settings.js                   # Configuration (optionnel)
│   │   └── *.js                          # Autres vues
│   └── <module-name>/
│       ├── api.js                        # Client RPC
│       ├── common.css                    # Styles partagés
│       └── overview.css                  # Styles page
└── root/
    ├── usr/libexec/rpcd/
    │   └── luci.<module-name>            ⚠️ MUST match ubus object!
    └── usr/share/
        ├── luci/menu.d/
        │   └── luci-app-<module-name>.json
        └── rpcd/acl.d/
            └── luci-app-<module-name>.json

🌐 URLs de Test

System Hub (Design v0.3.0):

https://192.168.8.191/cgi-bin/luci/admin/secubox/system/system-hub

SecuBox Dashboard:

https://192.168.8.191/cgi-bin/luci/admin/secubox

⚠️ TOUJOURS tester en mode privé/incognito après déploiement!


📚 Liens Utiles


📝 Changelog Configuration

Version 2.0.0 (2025-12-26)

Ajouts majeurs:

  • DEVELOPMENT-GUIDELINES.md (33KB, guide complet)
  • QUICK-START.md (6.4KB, aide-mémoire)
  • deploy-module-template.sh (script standardisé)
  • Design System v0.3.0 (demo-inspired)
  • 8 règles critiques documentées
  • Checklists validation complètes
  • Templates de code prêts à l'emploi

Dépréciations:

  • ⚠️ module-prompts.md → migré vers DEVELOPMENT-GUIDELINES.md
  • ⚠️ module-implementation-guide.md → migré vers DEVELOPMENT-GUIDELINES.md
  • ⚠️ context.md → migré vers README.md + CLAUDE.md

Améliorations:

  • Documentation structurée en 4 guides principaux
  • Workflow de développement clarifié
  • Erreurs communes documentées avec solutions
  • Script de déploiement avec backup automatique

Version 1.0.0 (2023-12-23)

  • Version initiale avec module-prompts.md et module-implementation-guide.md

Dernière mise à jour: 2025-12-26 Maintenu par: CyberMind Studio Version: 2.0.0