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:
parent
be8eadea0f
commit
0cdbffda4c
@ -1,6 +1,6 @@
|
|||||||
# Work In Progress (Claude)
|
# 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
|
> **Architecture Reference**: SecuBox Fanzine v3 — Les 4 Couches
|
||||||
|
|
||||||
@ -8,6 +8,39 @@ _Last updated: 2026-03-08 (RTTY Remote Module)_
|
|||||||
|
|
||||||
## Recently Completed
|
## 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
|
### 2026-03-08
|
||||||
|
|
||||||
- **RTTY Remote Control Module (Phase 3 - Web Terminal)**
|
- **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
|
- Master-link integration for authentication
|
||||||
- Tested: `rttyctl rpc 127.0.0.1 system board` works
|
- 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**
|
- **HAProxy mitmproxy Port Fix**
|
||||||
- Changed mitmproxy-in WAF port from 8890 to 22222
|
- Changed mitmproxy-in WAF port from 8890 to 22222
|
||||||
- Fixed UCI config regeneration issue (was overwriting manual edits)
|
- Fixed UCI config regeneration issue (was overwriting manual edits)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -40,13 +40,9 @@ return view.extend({
|
|||||||
E('style', {
|
E('style', {
|
||||||
'type': 'text/css'
|
'type': 'text/css'
|
||||||
}, `
|
}, `
|
||||||
.sh-dev-status-widget-shell .dsw-milestones,
|
/* Widget v2.1 - full display */
|
||||||
.sh-dev-status-widget-shell .dsw-timeline,
|
.sh-dev-status-widget-shell {
|
||||||
.sh-dev-status-widget-shell .dsw-stats {
|
margin-top: 16px;
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
.sh-dev-status-widget-shell .dsw-modules {
|
|
||||||
margin-top: -10px;
|
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
];
|
];
|
||||||
@ -84,7 +80,7 @@ return view.extend({
|
|||||||
var widget = this.getWidget();
|
var widget = this.getWidget();
|
||||||
var overallProgress = widget.getOverallProgress();
|
var overallProgress = widget.getOverallProgress();
|
||||||
var phase = widget.getCurrentPhase();
|
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' }, [
|
return E('div', { 'class': 'sh-stats-grid sh-dev-status-grid' }, [
|
||||||
E('div', { 'class': 'sh-stat-badge' }, [
|
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-label' }, 'Milestone groups')
|
||||||
]),
|
]),
|
||||||
E('div', { 'class': 'sh-stat-badge' }, [
|
E('div', { 'class': 'sh-stat-badge' }, [
|
||||||
E('div', { 'class': 'sh-stat-value' }, widget.stats.modulesCount),
|
E('div', { 'class': 'sh-stat-value' }, Object.keys(widget.features || {}).length),
|
||||||
E('div', { 'class': 'sh-stat-label' }, 'Modules livrés')
|
E('div', { 'class': 'sh-stat-label' }, 'Features')
|
||||||
]),
|
]),
|
||||||
E('div', { 'class': 'sh-stat-badge' }, [
|
E('div', { 'class': 'sh-stat-badge' }, [
|
||||||
E('div', { 'class': 'sh-stat-value' }, (phase.status || '').replace('-', ' ')),
|
E('div', { 'class': 'sh-stat-value' }, (phase.status || '').replace('-', ' ')),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user