Commit graph

581 commits

Author SHA1 Message Date
00d3e95e2d Add named multi-panel traffic boards with dedicated wall tabs.
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>
2026-08-01 17:03:11 +08:00
214bc56774 Move port traffic to device-centric monitoring with a dedicated wall and collect logs.
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>
2026-08-01 15:45:20 +08:00
5079343b2a Keep node positions after discover and close display menu on outside click.
Default auto-layout-after-discover to off (persisted), skip fitView unless layout ran, and dismiss the display details panel on outside click or Esc.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 14:11:04 +08:00
6ea0a09274 Polish topology editor for denser industrial NMS look.
Use SVG sidebar icons and ASCII separators, tighten chrome, add connect-mode hint, and drop the redundant status bar.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 14:04:18 +08:00
728ec815a3 Polish topology toolbar search and restore sidebar icons.
Group tools with display, drop the redundant locate button, clear find query after Enter, and restore corrupted edit/delete/collapse glyphs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 13:49:58 +08:00
8cf1696d8c Improve topology discovery UX with review modals and live search.
Report unmatched/stub neighbors and matched links, move result lists into detail dialogs, deep-link edges to port traffic, and add fuzzy type-ahead canvas/palette NE search.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 13:35:52 +08:00
2382cb8269 Harden topology editor save/discover flow and edge editing.
Guard unsaved changes, cancel discovery, block invalid links, preserve discovered_at on PUT, and normalize interface names for discovery keys.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 12:50:33 +08:00
99fce837f0 Industrialize topology editor and add customizable edge styles.
Add tool modes, layouts, and per-edge/default style overrides with a cleaner toolbar and context menus.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 12:31:06 +08:00
e4a365fa16 Show baseline device and interface under the port traffic wall chart.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 09:38:20 +08:00
5e940252e6 Fix port traffic wall blank chart when enabling baseline compare.
Set uPlot data before toggling baseline series, keep previous compare data while refetching, and resize after legend layout changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 07:34:14 +08:00
653baa1b9f Add period and cross-task interface compare for port traffic wall.
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>
2026-07-31 22:53:26 +08:00
0d85b87be7 Add Huawei/Cisco port traffic monitoring and keep Cisco CLI on send_command.
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>
2026-07-31 21:30:46 +08:00
1c8d512701 Add config sync cycle stop and surface pause/stop controls in the UI.
Cancel remaining tasks on stop and keep finalize from overwriting a cancelled cycle.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 17:04:56 +08:00
559cc14d2c Classify CLI auth rejects instead of reporting them as prompt timeouts.
Detect Permission denied in hop login and session logs for config sync and WebCRT.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 16:58:47 +08:00
0d1d3200f1 Reject hostname prompts when parsing ZTE interface brief output.
Require up/down admin columns and known iface name prefixes so device prompts are not treated as ports.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 15:36:54 +08:00
235e1a59ec Simplify port traffic wall: latest KPIs only, hover tip for point values.
Move device/port to the footer and drop live legend numbers to cut duplication.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 15:28:27 +08:00
c105cd8fd6 Show latest KPIs and hover tooltips on the port traffic wall chart.
Cursor tracking syncs In/Out/Util values and displays a live bit/s tooltip.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 15:22:06 +08:00
eea4043848 Fix port traffic wall chart refresh and first-sample visibility.
Trigger collect on start, normalize sample time bounds, and keep the uPlot series updating live.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 15:10:33 +08:00
efe8f58cd2 Add ZTE-first port traffic monitoring with task wizard and ops wall.
Collect interface bit/s via CLI on a schedule, store samples in Postgres, and chart trends with uPlot.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 14:56:50 +08:00
a95c6598bb Restore NE management to the workbench and simplify network device list.
Network Management devices page is a read-only managed+UME inventory; full CRUD stays on /ne.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 14:13:14 +08:00
87018721a3 Preserve existing module tabs when focusing from the workbench.
Avoid window.open(url, namedWindow) reloads that wiped WebCRT sessions; reclaim named windows without navigating when already open.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 11:23:28 +08:00
7effa7b2b3 Open a fresh WebCRT tab from configuration export page.
Avoid focusing the existing webcrt module window so config browsing is not disrupted.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 11:18:02 +08:00
68883d1a84 Open WebCRT in its own module tab and fix UTC naive time display.
Config/NE/topology links now focus the webcrt window instead of replacing network routes; formatSystemTime treats naive API timestamps as UTC.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 11:13:22 +08:00
3fc80f55bc Add config snapshot export and treat finished cycles as success.
Per-NE failures stay in fail_count for retry; completed cycles no longer fail the whole run. Configurations page can download txt/zip snapshots.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 11:02:07 +08:00
abb5172a8f Restore topology and WebCRT as workbench modules.
Also tighten config-sync policy form alignment and make the network nav collapse control icon-only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 10:55:51 +08:00
f5b4a14c0f Harden config sync defaults, crash resume, and network nav collapse.
Disable auto-sync by default, enforce single-flight cycles with crash requeue, delay new scheduled runs after restart, and make the network sidebar collapsible.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 10:43:01 +08:00
0eead0e662 Add industrial config sync separate from collection tasks.
Periodic vendor-aware CLI sync stores zlib snapshots in Postgres with dashboard, retry, and config viewer under Network Management.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 10:25:36 +08:00
2fc47e5135 Add Network Management module with collapsible left nav.
Consolidate devices, topology, alarms, WebCRT, and collection tasks under /network; keep legacy path redirects and workbench entry.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 09:48:31 +08:00
hansjone
3bd5d5b7da Simplify WebCRT device list chrome.
Drop the sidebar refresh control and bordered pager buttons; keep page meta with plain chevrons.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
b8fa2c6725 fix(webcrt): skip Netmiko terminal-length on interactive login.
Keep disable_paging for collection/MCP; WebCRT opens sessions with interactive=True so the device CLI is not pre-seeded.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
9a72a9a099 fix(topology): keep context menu text readable on hover.
Override .app-main button color so dark menu items stay light on hover/focus.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
2f1c33924e Improve topology canvas UX and vendor NE icons.
Replace the top selection bar with a context menu, tighten map/palette cards and fullscreen controls, and tint the router asset by vendor (ZTE keeps default blue).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
658c19e457 fix(auth): attach bearer token to managed-NE import and template download
These raw fetch/navigation paths skipped Authorization after login was required, same class of bug as topology discover stream.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
325bce0413 fix(topology): send auth token on discover stream requests
The SSE discover endpoint used raw fetch without Authorization, so login sessions got unauthorized after auth was enabled.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
a3bdad5be1 fix(auth): sync logout across browser tabs
Listen for localStorage token changes so other open pages clear session state when one tab signs out.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
b540ea21c1 fix(webcrt): resize hop PTY before nested CLI jump
Nested stelnet/telnet captures hop TTY width at start; Netmiko's default 511 cols made mid-line edit redraws wrap and garble in ~80-col WebCRT.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
b690914f18 fix(webcrt): restore arrow keys under application cursor mode
Normalize SS3 arrows to CSI and stop remapping to Ctrl-B so left/right actually move the device cursor after login.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
6d4cd741ef feat(auth): add local login, audit, API keys, and system admin UI
Gate netx Web/API/WebCRT with JWT and per-user API tokens, bootstrap an admin with forced password change, and expose users/audit/API-key management under a System section. MCP can reuse data/auth/mcp_token without extra env for local labs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
14f14d34bd fix(webcrt): remove tab close border by dropping button chrome
Global app button styles forced a boxed ×; use an inline span so it reads as part of the device name.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 02:34:25 +00:00
hansjone
2ac8d96409 fix(webcrt): blend session tab close mark into device name
Remove the boxed close control so the x sits inline with the tab label.
2026-07-30 10:34:25 +08:00
5fa73c9a4f fix(webcrt): close CLI hop sessions when target exit returns to proxy
Nested Huawei/ZTE/Cisco jumps keep the hop channel open after quit/exit; detect nested close or hop prompt return and tear down WebCRT so users cannot operate the proxy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 09:49:31 +08:00
ec736b6dc8 Allow topology discovery to scan UME nodes on the map.
Previously only managed NEs were scanned, so UME-only maps reported Scanned 0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 00:42:34 +08:00
bf82a01a03 Stream topology discovery progress and mark missing links stale.
SSE updates the UI per NE; edges not seen in a successful scan turn red and can be cleared.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 00:35:16 +08:00
bfc10ee8cf Add ZTE LLDP brief parsing and UME NEs to topology palette.
ZXROS uses show lldp neighbor brief; topology library can switch between managed and UME inventory.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 00:18:07 +08:00
d3fd840637 fix(webcrt): allow bastion-managed sessions without NE password.
Align session credential checks with connectivity test so target password can live only on the bastion.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 00:08:22 +08:00
dc805c2086 Add topology maps with LLDP discovery and React Flow canvas.
Includes map CRUD, graph save, neighbor discover, and UI controls for labels, sidebar, and edge flow.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 23:53:06 +08:00
3b8342acfb fix(webcrt): keep device echo intact and stop dual-WS steal.
Use raw Telnet reads for ANSI backspace, drop local erase so Tab/completion stays in sync, and make WebSocket attach exclusive so StrictMode remounts cannot drop the first echo.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 22:27:15 +08:00
fae26cf9bb fix(webcrt): restore full login transcript on attach
Keep the complete session_log replay including the final prompt, and stop clearing bootstrap on attach so StrictMode remounts do not blank the CRT.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 19:57:02 +08:00
89ff0a7212 Improve WebCRT UX: real login transcript, session tools, and first-input sync.
Capture Netmiko session_log for login replay, open NE terminals in a fresh tab, tidy the device list UI with reconnect/log/clear/copy, and paint a live prompt after attach so the first keystrokes behave normally.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 19:53:41 +08:00
30f2db9708 fix(webcrt): replay login banner/prompt on attach
Drain and nudge the device prompt after Netmiko login, replay bootstrap stdout when the WebSocket attaches, and surface connect errors in the terminal pane.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-29 18:54:59 +08:00