c3a719ab5d
Wire normalize_session_keys import and call into _run_poll_cycle step 13b, running before the prune step. Use local device id from muxplex.identity.load_device_id(). Best-effort: errors are logged, poll cycle continues. Fix 10 previously-failing JS tests: - 8 were stale: regex search windows too narrow, refactored implementations, removed UI elements (settings dialog: 4→5 tabs; sessions panel: moved hidden_sessions to Views) - 2 were DOM drift from feature additions Each fix has a code comment explaining the change. Add 3 new end-to-end tests in test_views.py verifying normalize→prune pipeline. Final test counts: pytest 1266 passing (1263 + 3 new), node --test 396 passing.