- Full-width CSS grid layout with Ping/Line/Connection cards at equal height
- Show public IP (via api.ipify.org) alongside WAN IP, with a "Get new public IP"
button that drops and re-establishes the PPPoE session
- Replace the wrong oid=zlog log endpoint with the real one the stock UI uses,
and add a logging on/off toggle (router logging was off by default)
- Poll the router in background threads with cached responses, since a live
/api/overview request took ~16s and made the page hang on "Connecting..."
- Fix: writes (DNS, logging toggle, reboot, WAN disconnect/connect) started
returning 403 after the ABSB.5 firmware upgrade; it now requires the session
key repeated in a CSRFToken header on every POST/PUT/DELETE, not just the
?sessionkey= query param GETs still accept
- Fix: Router is now a context manager that always logs out in __exit__, and
SIGTERM (what pkill sends) now triggers that cleanup too -- previously every
restart during dev leaked a session until the router hit its concurrent
login limit and locked out all further logins
- Fix: WAN Disconnect/Connect often don't return an HTTP response before the
link they're answering over drops; treat that timeout as "sent, unknown
outcome" and verify by polling instead of crashing, and retry Connect if
the router's own auto-reconnect doesn't kick in (it can get stuck at N/A)