# BanGUI — Task List This document breaks the entire BanGUI project into development stages, ordered so that each stage builds on the previous one. Every task is described in prose with enough detail for a developer to begin work. References point to the relevant documentation. --- ## ✅ FIXED — Blocklist import: `No module named 'fail2ban'` on every IP (2026-03-01) **Root cause:** In `app/main.py`, the `fail2ban-master` path was computed using `Path(__file__).resolve().parents[2] / "fail2ban-master"`. This resolves correctly in local dev (`backend/app/main.py` → repo root) but resolves to `/fail2ban-master` inside the Docker container (where the source is copied to `/app/app/main.py`), so `fail2ban` was never added to `sys.path` and `pickle.loads()` raised `ModuleNotFoundError: No module named 'fail2ban'` for every socket response. **Fix:** Replaced the hardcoded `parents[2]` with a walk-up loop (`_find_fail2ban_master()`) that iterates over all ancestors until it finds a `fail2ban-master/` sibling directory — correct in both local dev and Docker. **Commit:** `19bb94e` — _Fix fail2ban-master path resolution for Docker container_