chore: update submodule refs, clean up plans/evidence, update .gitignore
NexusGuard CI / server-core-test (push) Failing after 3m6s
NexusGuard CI / server-core-build (push) Has been skipped
NexusGuard CI / device-agent-test (push) Failing after 4s
NexusGuard CI / device-agent-cross-build (amd64, linux) (push) Has been skipped
NexusGuard CI / device-agent-cross-build (amd64, windows) (push) Has been skipped
NexusGuard CI / device-agent-cross-build (arm64, linux) (push) Has been skipped
NexusGuard CI / dashboard-test (push) Failing after 4s
NexusGuard CI / dashboard-dist (push) Has been skipped

This commit is contained in:
datadunia
2026-06-07 23:53:15 +07:00
parent 281ac48d28
commit cbacfea7f2
43 changed files with 139 additions and 2 deletions
+4
View File
@@ -41,6 +41,10 @@ dist/
.sisyphus/boulder.json
connect_remote.txt
.sisyphus/drafts/
.omo/notepads/
.omo/boulder.json
connect_remote.txt
.omo/drafts/
.update-state
# Node
+133
View File
@@ -0,0 +1,133 @@
# Bug Fixes and Features Plan
## Bug Fixes
### 1. Nodes Edit Button - Hard to Click / Wrong HTML Tag Location
**Location**: apps/dashboard-ui/src/views/Servers.vue - Node cards edit button
**Issue**: Edit button on node cards is difficult to click or has incorrect HTML structure
**Root Cause**: Button z-index, positioning, or overlapping elements
**Files**: Servers.vue (lines 155-157)
**Status**: ✅ DONE - Changed button size from "sm" to "md" for better clickability
### 2. Dashboard - Missing Turn On WireGuard Button for 2nd+ Nodes
**Location**: apps/dashboard-ui/src/views/Servers.vue and apps/server-core/api/wg.go
**Issue**: Only first node (Local Primary Node) has WG Up/Down buttons; additional nodes lack toggle
**Root Cause**: wg.go Status/Up/Down handlers only work with hardcoded wg0 interface; multi-interface support needed
**Files**:
- apps/dashboard-ui/src/views/Servers.vue - Add WG toggle button per node
- apps/server-core/api/wg.go - Fix to accept interface name parameter
- apps/server-core/internal/wgmanager/wgmanager_linux.go - Ensure multi-interface support
**Status**: ✅ BACKEND DONE - wg.go accepts interface param, queries by interface_name, supports multi-interface
**Status**: ✅ FRONTEND DONE - WG Up/Down buttons added to node cards, calls API with interface param
### 3. Advanced Node Settings - Missing Notes/Descriptions for PreUp, PostUp, PreDown, PostDown
**Location**: apps/dashboard-ui/src/views/Servers.vue (lines 83-98)
**Issue**: Advanced scripts fields (PreUp, PostUp, PreDown, PostDown) lack helper text/descriptions like Firewall section has
**Files**: Servers.vue - Add hints/descriptions similar to FirewallEditor
**Status**: ✅ DONE - Added descriptive hints for Table, PreUp, PostUp, PreDown, PostDown
### 4. Popup/Modal Inconsistency - Backdrop Styling
**Location**: Multiple modals in Servers.vue, Devices.vue, DeviceDetail.vue, FirewallEditor.vue
**Issue**: Nodes modal backdrop styling is better than Devices modal; inconsistent across views
**Files**: Standardize modal wrapper component or CSS classes
**Status**: ✅ DONE - Servers.vue modals converted to NgModal, consistent backdrop (bg-bg-overlay)
### 5. Firewall Popup - Not User/Mobile Friendly
**Location**: apps/dashboard-ui/src/components/FirewallEditor.vue
**Issue**: Form layout not responsive; input fields too small on mobile; buttons not touch-friendly
**Files**: FirewallEditor.vue - Responsive grid, larger touch targets, better spacing
**Status**: ✅ DONE - Responsive grid (1/2/5 cols), button full width on mobile, table scroll-x-auto
### 6. Firewall wg_isolation - Verify Implementation Matches Plan
**Location**: apps/server-core/internal/firewall/nftables_linux.go - InitNetworkForServer()
**Issue**: Verify wg_isolation rules are correctly implemented per-server with smart isolation (allow server IP, drop peer-to-peer)
**Files**: nftables_linux.go - InitNetworkForServer() and TeardownNetworkForServer()
**Status**: ✅ DONE - Implementation verified: smart isolation (server IP allow, peer-to-peer drop), per-interface chains with jump rules, proper cleanup
---
## Features
### 1. Traffic Record Table - Only Show Records with RX or TX Data
**Location**: apps/dashboard-ui/src/views/TrafficHistory.vue, apps/server-core/api/traffic.go, apps/server-core/internal/traffic/recorder.go
**Issue**: Table shows all records including zero-byte entries; should filter to only show records with rx > 0 or tx > 0
**Files**:
- TrafficHistory.vue - Filter trafficData before display
- traffic.go - Add filter option to API
**Status**: ✅ DONE - Added has_traffic query param, toggle in UI, backend filtering (rx>0 OR tx>0)
### 2. Traffic Record Table - Sum Per Hour Aggregation
**Location**: apps/server-core/api/traffic.go, apps/server-core/internal/traffic/recorder.go
**Issue**: Add hourly aggregation option for traffic table when query supports it
**Files**:
- traffic.go - Add aggregation parameter to GetSummary/GetDeviceTraffic
- recorder.go - Add GetHourlyTraffic method with SQL GROUP BY hour
**Status**: ✅ DONE - Added GetHourlyTraffic endpoint with SQL GROUP BY hour, returns HourlyTraffic[]
---
## Implementation Priority
| Priority | Task | Category |
|----------|------|----------|
| P1 | Nodes edit button fix | Bug |
| P1 | Dashboard WG toggle for all nodes | Bug |
| P1 | Verify wg_isolation implementation | Bug |
| P2 | Advanced settings descriptions | Bug |
| P2 | Modal consistency (backdrop) | Bug |
| P2 | Firewall mobile-friendly | Bug |
| P2 | Traffic table filter (RX/TX > 0) | Feature |
| P3 | Traffic hourly aggregation | Feature |
| P3 | Firewall mobile-friendly | Bug |
---
## Code Structure Reference
### Frontend (Vue 3 + TypeScript)
apps/dashboard-ui/src/
|-- views/
| |-- Servers.vue # Node management (edit, WG toggle, advanced)
| |-- Devices.vue # Device list, firewall
| |-- DeviceDetail.vue # Device detail, firewall editor
| |-- TrafficHistory.vue # Traffic table, filters
| |-- ...
|-- components/
| |-- FirewallEditor.vue # Firewall rules UI
| |-- ui/ # Ng* design system components
| |-- ...
|-- ...
### Backend (Go)
apps/server-core/
|-- api/
| |-- servers.go # Node CRUD, WG Up/Down
| |-- wg.go # WG interface control
| |-- traffic.go # Traffic API
| |-- ...
|-- internal/
| |-- firewall/
| | |-- nftables_linux.go # InitNetworkForServer, Teardown
| | |-- ...
| |-- wgmanager/
| | |-- wgmanager_linux.go # Multi-interface WgManager
| |-- traffic/
| |-- recorder.go # Traffic queries
---
## Next Steps
1. Create detailed task breakdown for each bug/feature
2. Start with P1 bugs (edit button, WG toggle, wg_isolation)
3. Implement fixes following existing code patterns
5. Archive completed plan when done
---
## Notes
- All plans from .sisyphus have been migrated to .omo/plans/archive/
- New plan saved at .omo/plans/bugfixes-and-features.md
- Evidence, notepads, references migrated to .omo/
- Boulder state copied to .omo/boulder.json