feat(dev-status): Redesign widget v2.1 with dynamic architecture dashboard

- 4-layer architecture visualization (Core, AI, MirrorNet, Certification)
- 22+ features with dependency tracking (dependsOn/usedBy)
- 80+ components with status indicators
- Interactive filters: layer, status, category with localStorage persistence
- Feature cards: click to expand and see full dependencies
- Live RPCD data refresh (60s auto-refresh)
- Standalone HTML page for public access (/dev-status.html)
- ES5 compatible for older browsers
- Milestone timeline to v1.0

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-03-09 13:02:28 +01:00
parent be8eadea0f
commit 0cdbffda4c
4 changed files with 1751 additions and 1281 deletions

View File

@ -1,6 +1,6 @@
# Work In Progress (Claude)
_Last updated: 2026-03-08 (RTTY Remote Module)_
_Last updated: 2026-03-09 (Dev Status Widget v2.1)_
> **Architecture Reference**: SecuBox Fanzine v3 — Les 4 Couches
@ -8,6 +8,39 @@ _Last updated: 2026-03-08 (RTTY Remote Module)_
## Recently Completed
### 2026-03-09
- **Dev Status Widget v2.1 (Dynamic Dashboard)**
- Complete redesign with 4-layer architecture visualization
- 22+ features with dependency tracking (dependsOn/usedBy)
- 80+ components with status indicators
- Interactive filters: layer, status, category with localStorage persistence
- Feature cards: click to expand, show full dependencies/components
- Layer cards: click to filter features by layer
- Interconnection graph showing feature dependencies
- Milestone timeline to v1.0 with progress tracking
- Production stats display (185 packages, 226 vhosts, etc.)
- Auto-refresh with live RPCD data (60s interval)
- ES5 compatible for older browsers
- Standalone HTML page: `/dev-status.html` (no auth required)
- Files: `dev-status-widget.js`, `dev-status.js`, `dev-status-standalone.html`
- **DNS Zone Configuration Sync**
- Fixed BIND zone path mismatch: `/srv/dns/zones/``/etc/bind/zones/`
- Added ganimed.fr zone declaration to `named.conf.zones`
- Synced zone files between LuCI-managed and BIND-loaded paths
- **Mitmproxy WAF Memory Optimization**
- Diagnosed memory leak (687MB RSS)
- Added flow limits: `--set flow_detail=0 --set hardlimit=500`
- Reduced memory to 77MB
- Fixed `/srv/mitmproxy-in/haproxy-routes.json` for git.maegia.tv
- **Config Backups Repository**
- Created `config-backups/` directory with BIND zones
- Created private `secubox-configs` repo on local Gitea
- Git remote: `git@git.maegia.tv:reepost/secubox-configs.git`
### 2026-03-08
- **RTTY Remote Control Module (Phase 3 - Web Terminal)**
@ -37,6 +70,14 @@ _Last updated: 2026-03-08 (RTTY Remote Module)_
- Master-link integration for authentication
- Tested: `rttyctl rpc 127.0.0.1 system board` works
- **lldh360.maegia.tv BIND Zone Fix**
- DNS was returning NXDOMAIN despite zone file existing
- Root cause: BIND (named) is the authoritative DNS, not dnsmasq
- Zone file `/srv/dns/zones/maegia.tv.zone` existed but wasn't registered in BIND
- Added zone entry to `/etc/bind/named.conf.zones`
- Restarted BIND (named), domain now resolves correctly
- Site accessible via HTTPS (HTTP 200)
- **HAProxy mitmproxy Port Fix**
- Changed mitmproxy-in WAF port from 8890 to 22222
- Fixed UCI config regeneration issue (was overwriting manual edits)

File diff suppressed because one or more lines are too long

View File

@ -40,13 +40,9 @@ return view.extend({
E('style', {
'type': 'text/css'
}, `
.sh-dev-status-widget-shell .dsw-milestones,
.sh-dev-status-widget-shell .dsw-timeline,
.sh-dev-status-widget-shell .dsw-stats {
display: none !important;
}
.sh-dev-status-widget-shell .dsw-modules {
margin-top: -10px;
/* Widget v2.1 - full display */
.sh-dev-status-widget-shell {
margin-top: 16px;
}
`)
];
@ -84,7 +80,7 @@ return view.extend({
var widget = this.getWidget();
var overallProgress = widget.getOverallProgress();
var phase = widget.getCurrentPhase();
var milestonesCount = Object.keys(widget.milestones || {}).length;
var milestonesCount = (widget.milestones || []).length;
return E('div', { 'class': 'sh-stats-grid sh-dev-status-grid' }, [
E('div', { 'class': 'sh-stat-badge' }, [
@ -96,8 +92,8 @@ return view.extend({
E('div', { 'class': 'sh-stat-label' }, 'Milestone groups')
]),
E('div', { 'class': 'sh-stat-badge' }, [
E('div', { 'class': 'sh-stat-value' }, widget.stats.modulesCount),
E('div', { 'class': 'sh-stat-label' }, 'Modules livrés')
E('div', { 'class': 'sh-stat-value' }, Object.keys(widget.features || {}).length),
E('div', { 'class': 'sh-stat-label' }, 'Features')
]),
E('div', { 'class': 'sh-stat-badge' }, [
E('div', { 'class': 'sh-stat-value' }, (phase.status || '').replace('-', ' ')),