Keep the public facade stable while moving device CRUD and sample/compare
logic into focused modules, and use naive UTC via timeutil plus FastAPI lifespan.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unify live runners in /audit/tasks (including UME sync and connect tests), extend port-traffic compare past now via ahead_hours, and distinguish WebCRT connecting/ready/detached.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fix unreadable collect-log contrast, surface errors on the Logs button, and let operators re-link a monitor to a chosen inventory NE without wiping samples.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist board/panel layouts server-side, open each board outside the network shell so workbench reloads do not refresh walls, and fix mapped-baseline chart overlay plus fullscreen fit.
Co-authored-by: Cursor <cursoragent@cursor.com>
Split the ops wall to its own route with fullscreen charts, persist collect errors as device events, and polish wall legend layout.
Co-authored-by: Cursor <cursoragent@cursor.com>
Compare by interface target_id with optional mapped baseline (same window or time-shifted), keep chart samples on target_row_id, and unify UI wording to interface.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extend port discovery/sampling beyond ZTE, harden IOSv session prep, and avoid send_command_timing so Building configuration does not truncate config sync.
Co-authored-by: Cursor <cursoragent@cursor.com>