diff --git a/.claude/HISTORY.md b/.claude/HISTORY.md index ca5d03f3..313a0505 100644 --- a/.claude/HISTORY.md +++ b/.claude/HISTORY.md @@ -904,3 +904,9 @@ _Last updated: 2026-02-07_ - Uses http-request set-path to serve /end-of-internet.html via uhttpd - Deployed page to /srv/haproxy for container access - **Commits**: e25509cb (backend validation), this session (http-request support) + +60. **CrowdSec Dashboard Threat Origins Fix (2026-02-07)** + - Fixed `[object Object]` display bug in Threat Origins widget + - `parseCountries()` now correctly handles countries as array of objects + - Data format: `[{country: "US", count: 67}, ...]` vs plain `{US: 67}` + - Commit: 58b6dc1d diff --git a/.claude/WIP.md b/.claude/WIP.md index bc0fe0a6..80cca688 100644 --- a/.claude/WIP.md +++ b/.claude/WIP.md @@ -1,6 +1,6 @@ # Work In Progress (Claude) -_Last updated: 2026-02-06_ +_Last updated: 2026-02-07_ > **Architecture Reference**: SecuBox Fanzine v3 — Les 4 Couches @@ -53,6 +53,17 @@ _Last updated: 2026-02-06_ ### Just Completed (2026-02-06/07) +- **HAProxy "End of Internet" Default Page** — DONE (2026-02-07) + - Cyberpunk fallback page for unknown/unmatched domains + - Matrix rain animation, glitch text, ASCII art SecuBox logo + - Added `http-request` UCI option support in haproxyctl generator + - Path rewriting via `http-request set-path` for static content + - Backend validation rejects IP:port misconfiguration + +- **CrowdSec Threat Origins Fix** — DONE (2026-02-07) + - Fixed `[object Object]` display bug in Threat Origins widget + - `parseCountries()` now handles array format `[{country, count}]` + - **CrowdSec Dashboard Cache System** — DONE (2026-02-06) - Created `/usr/sbin/secubox-crowdsec-collector` v4 background stats collector - Generates `/tmp/secubox/crowdsec-overview.json` every minute via cron