xterm and keydown can both emit carriage return for one keypress; skip duplicate Enter frames on the client and collapse identical audits within 450ms on the server.
Co-authored-by: Cursor <cursoragent@cursor.com>
Do not reuse the previous command when the operator presses Enter on a blank prompt; validate prompt-only rows on both frontend and backend.
Co-authored-by: Cursor <cursoragent@cursor.com>
PTY stdout/stdin carry backspace and edit noise during typing; record only the final row the operator sees when pressing Enter.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZTE tab redraws the input line via carriage return; parse the last prompt line from PTY stdout on Enter instead of stdin keystrokes. Also remove remaining ?? in AuditPage.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove duplicate serializeTerminal fragment that broke WebTerminal compilation; rewrite ne.exec_batch count without mixing ?? and ||.
Co-authored-by: Cursor <cursoragent@cursor.com>
On Enter, send audit_line from the terminal row so tab completion and edits match what the operator executed; keep the device prompt prefix in audit logs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep one 401 audit per IP+path window, and hide historical unauthorized noise from the default business view.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist only business events and mutating/failed HTTP calls, and default the audit UI to a business view with an explicit HTTP filter.
Co-authored-by: Cursor <cursoragent@cursor.com>
Make session lifecycle and typed CLI lines searchable in audit_log with password redaction, and surface summaries plus device filters in the ops UI.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show connect/alarm/level on the canvas with display toggles, refresh overlay fields even on dirty edits, fix connect-test dots and create-place messaging, and deep-link node alarms into the network alarms page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bring full managed-NE create onto the canvas (keep placeholders), add single/multi connect test and multi discover links, split topology/managedNe dialogs into modules, and shorten redundant connectivity failure details.
Co-authored-by: Cursor <cursoragent@cursor.com>
Some hops only accept stelnet in system-view; make it a saved yes/no setting (default off) instead of auto-retry, and always ALTER the new column on API boot when Alembic skips legacy DDL.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip Huawei special_login_handler under interactive WebCRT, harden stelnet host-key auth, and echo hop/login progress into the terminal during connect.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use the stacked form-grid layout instead of the nowrap policy-field flex row so the long label/hint no longer pushes the textarea aside.
Co-authored-by: Cursor <cursoragent@cursor.com>
Topology MCP adds pull/compact/bundle/suggest-hubs with a no-template skill path; API gains fabric level and NE collection policy; web list pages get paging and denser collect/network workflows.
Co-authored-by: Cursor <cursoragent@cursor.com>
Mirror config-sync retry_failed so operators can re-collect hard failures and empty/stub LLDP results without re-running the full scope.
Co-authored-by: Cursor <cursoragent@cursor.com>
Flatten nested toolbar boxes, add a resizable sidebar and selective off-map NE add, and make fullscreen floats/minimap follow canvas background.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pass view kind into membership so metro maps are not capped at core=80, add region-scoped neighbor projection, and align UI/tests with one physical canvas per region.
Co-authored-by: Cursor <cursoragent@cursor.com>
Defer topology xyflow and WebCRT xterm until needed, calm idle polling, bake login earth brightness, and let AI alert rules scroll as one natural panel.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve ports from EQ+PTP first, enrich from LLDP when compatible, miss only on valid LLDP evidence, and paint UME solid blue / LLDP dashed / missing red. Also localize new root maps as Root map in English.
Co-authored-by: Cursor <cursoragent@cursor.com>
Coerce non-dict filter JSON so /tree no longer 500s, surface API failure details, and let users remove the UME World container for local resets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the hidden system root built-in; speed tree bootstrap, unblock new-root UI, and soften query/Suspense refetch jank.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep visited regions when panning, prefetch detail on search locate with a gold flashing target highlight, and shrink default NE icons so dense UME layouts stay readable.
Co-authored-by: Cursor <cursoragent@cursor.com>
World coords sit far outside the default viewport, so opening the flat map looked blank; also lower minZoom and stride-sample so the overview is visible without a truncate banner.
Co-authored-by: Cursor <cursoragent@cursor.com>
Top-level folders are nav-only with a unique system root map; UI drops custom/extra L2 creates. Batched dock-to-Fabric apply avoids PG lock OOM so World NEs can render, with subtree region counts restored.
Co-authored-by: Cursor <cursoragent@cursor.com>