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>
This commit is contained in:
oliver 2026-07-29 19:53:41 +08:00
parent 30f2db9708
commit 89ff0a7212
11 changed files with 593 additions and 183 deletions

View file

@ -541,10 +541,11 @@ const en = {
},
webcrt: {
title: "WebCRT",
sessionManager: "Sessions",
deviceList: "Device list",
sessionManager: "Device list",
connect: "Connect",
hint: "Pick a connected NE and open an interactive terminal in the browser. Credentials stay on the server.",
hintCrt: "Select an NE on the left, then double-click or press ⚡. Includes managed and UME inventory; search + paging for large fleets.",
hint: "Pick an NE and open an interactive terminal in the browser. Credentials stay on the server.",
hintCrt: "Click an NE on the left to open a terminal. Includes managed and UME inventory; search + paging for large fleets.",
filterKeyword: "Filter",
filterKeywordPh: "Filter by name / IP / tag",
empty: "No matching NEs. Switch source or refine the search.",
@ -567,6 +568,18 @@ const en = {
error: "Error",
closed: "Closed",
},
actions: {
reconnect: "Reconnect",
recordLog: "Record log",
clear: "Clear",
copy: "Copy",
recording: "Recording",
recordingOn: "Log recording started",
recordingSaved: "Log saved",
copied: "Copied to clipboard",
copyEmpty: "Terminal is empty",
copyFailed: "Copy failed",
},
err: {
sessionLimit: "Session limit reached; close other terminals first",
neNotFound: "Network element not found",

View file

@ -539,10 +539,11 @@ const zh = {
},
webcrt: {
title: "WebCRT",
sessionManager: "会话管理",
deviceList: "设备列表",
sessionManager: "设备列表",
connect: "连接",
hint: "选择已连通网元,在浏览器中打开交互式终端。凭据由服务端解密,不会下发到前端。",
hintCrt: "在左侧选择网元后双击或点 ⚡ 连接;支持托管网元与 UME 网元,可用搜索与分页浏览上万台设备。",
hint: "选择网元,在浏览器中打开交互式终端。凭据由服务端解密,不会下发到前端。",
hintCrt: "在左侧点击网元即可打开终端;支持托管与 UME 网元,可用搜索与分页浏览。",
filterKeyword: "筛选",
filterKeywordPh: "按名称 / IP / 标签筛选",
empty: "没有匹配的网元。可切换来源或调整搜索关键字。",
@ -565,6 +566,18 @@ const zh = {
error: "错误",
closed: "已关闭",
},
actions: {
reconnect: "重新连接",
recordLog: "记录日志",
clear: "清空",
copy: "拷贝",
recording: "记录中",
recordingOn: "已开始记录日志",
recordingSaved: "日志已保存",
copied: "已复制到剪贴板",
copyEmpty: "终端内容为空",
copyFailed: "复制失败",
},
err: {
sessionLimit: "并发会话已达上限,请先关闭其他终端",
neNotFound: "网元不存在",