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)
|
||||
|
||||
_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
File diff suppressed because it is too large
Load Diff
@ -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('-', ' ')),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user