docs: mark low-effort tasks as completed

This commit is contained in:
Username
2025-12-28 17:25:06 +01:00
parent dfb4739b66
commit 966c0d641d

26
TODO.md
View File

@@ -439,7 +439,7 @@ above target the remaining 31.3% of CPU-bound operations.
- No persistent connections (stateless HTTP)
**Future considerations:**
- [ ] Add rate limiting on /api/stats endpoint
- [x] Add rate limiting on /api/stats endpoint (300 req/60s sliding window)
- [ ] Cache expensive DB queries (top countries, protocol breakdown)
- [ ] Lazy-load historical data (only when scrolled into view)
- [ ] WebSocket option for push updates (reduce polling overhead)
@@ -452,24 +452,22 @@ above target the remaining 31.3% of CPU-bound operations.
**Low priority - consider when time permits:**
- [x] Geographic map visualization - /map endpoint with Leaflet.js
- [x] Dark/light/muted theme toggle - t key cycles themes
- [ ] Export stats as CSV/JSON from dashboard
- [x] Export stats as CSV/JSON from dashboard (/api/stats/export?format=json|csv)
- [ ] Historical graphs (24h, 7d) using stats_history table
- [ ] Per-ASN performance analysis
- [ ] Alert thresholds (success rate < X%, MITM detected)
- [ ] Mobile-responsive improvements
- [x] Keyboard shortcuts (r=refresh, 1-9=tabs, t=theme, p=pause)
### [ ] Local JS Library Serving
### [x] Local JS Library Serving
**Goal:** Serve all JavaScript libraries locally instead of CDN for reliability and offline use.
**Completed.** All JavaScript libraries now served locally from /static/lib/ endpoint.
**Current CDN dependencies:**
- Leaflet.js 1.9.4 (map) - https://unpkg.com/leaflet@1.9.4/
**Implementation:**
- [ ] Bundle libraries into container image
- [ ] Serve from /static/lib/ endpoint
- [ ] Update HTML to reference local paths
**Bundled libraries (static/lib/):**
- Leaflet.js 1.9.4 (leaflet.js, leaflet.css)
- Leaflet.markercluster (MarkerCluster.Default.css)
- Chart.js 4.x (chart.umd.min.js)
- uPlot (uPlot.iife.min.js, uPlot.min.css)
**Candidate libraries for future enhancements:**
@@ -522,11 +520,11 @@ Object Distribution:
522,807 list (2 per job - results + targets)
```
**Potential optimizations (not yet implemented):**
**Potential optimizations:**
- [ ] Lock consolidation - reduce per-proxy locks (260k LockType objects)
- [ ] Leaner state objects - reduce dict/list count per job
- [ ] Slot-based classes - use `__slots__` on hot objects
- [ ] Object pooling - reuse ProxyTestState/TargetTestJob objects
- [x] Slot-based classes - use `__slots__` on ProxyTestState (27 attrs), TargetTestJob (4 attrs)
- [ ] Object pooling - reuse ProxyTestState/TargetTestJob objects (not recommended)
**Verdict:** Memory scales linearly with queue (~4.5 KB/job). No leaks detected.
Current usage acceptable for production workloads. Optimize only if memory