diff --git a/REVIEW_TODO.md b/REVIEW_TODO.md index d325e12..dc6664e 100644 --- a/REVIEW_TODO.md +++ b/REVIEW_TODO.md @@ -18,6 +18,40 @@ redirects, single source of truth for IP classification in `utils/net_classify.py`, allowlist + parity test for inbound WS events, typed `Window` globals, and more). +## Items completed in the follow-up autonomous pass (2026-05-23) + +- [x] **devices.py PATCH-without-url processor desync** — `update_device` + now falls back to `existing.url` so a rename / icon-only edit + always tells the processor the current address. +- [x] **WLED scheme integration test** on `/api/v1/devices` — covers + bare IPv4 (`http://`), public hostname (`https://`), and trailing-slash + normalisation; lives in `tests/api/routes/test_devices_routes.py`. +- [x] **IPv6 regression test** — `tests/test_url_scheme.py` now pins + public IPv6 → `https://`, ULA → `http://`, and documents the + Python-`ipaddress` documentation-prefix classification quirk. +- [x] **IconSelect XSS audit + defence-in-depth** — every caller + audited (all feed `icon` from constants or lookup tables); added + `sanitiseIcon` that rejects `