From 48dbdb90e9287ceb0e3f798e26713d950f652740 Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Sat, 23 May 2026 01:22:41 +0300 Subject: [PATCH] docs(review-todo): check off items addressed in 2026-05-23 autonomous pass Mark devices.py PATCH fix, WLED route-level test, IPv6 regression test, IconSelect XSS audit, PEP-604 sweep, magic-number constants, api/auth except specificity, and the (window as any) static-access cleanup as done. Defer items are unchanged: performance items keep their "profile first" caveat, Hue cert pinning + CSP keep the design- sensitive note, architecture refactors keep the multi-day banner, and i18n parity is now annotated with the exact missing-key counts (328 ru / 325 zh) so the next translator pass has a clear scope. --- REVIEW_TODO.md | 114 ++++++++++++++++++++++++++++--------------------- 1 file changed, 66 insertions(+), 48 deletions(-) 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 `