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
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:
@@ -41,6 +41,10 @@ dist/
|
|||||||
.sisyphus/boulder.json
|
.sisyphus/boulder.json
|
||||||
connect_remote.txt
|
connect_remote.txt
|
||||||
.sisyphus/drafts/
|
.sisyphus/drafts/
|
||||||
|
.omo/notepads/
|
||||||
|
.omo/boulder.json
|
||||||
|
connect_remote.txt
|
||||||
|
.omo/drafts/
|
||||||
.update-state
|
.update-state
|
||||||
|
|
||||||
# Node
|
# Node
|
||||||
|
|||||||
@@ -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
|
||||||
+1
-1
Submodule apps/dashboard-ui updated: b5afa78249...a32758c7d7
+1
-1
Submodule apps/server-core updated: 6302c7e269...d1c2534e47
Reference in New Issue
Block a user