feat(status-monitor): add websocket process manager and runtime metadata

extend server status payload with timezone, uptime, and process summary so
the monitor sidebar can show richer at-a-glance host context.

introduce process:list and process:signal websocket flows on active SSH
sessions, enabling on-demand process querying and terminate/kill actions
without adding new HTTP endpoints.

add a dedicated process manager modal in the frontend with search, refresh,
auto-refresh, and per-process actions, and wire localized labels for both
english and chinese.

enhance global connection fuzzy search scoring to include tag names as
secondary-weight fields while preserving primary host/name relevance.
This commit is contained in:
yinjianm
2026-04-15 22:21:26 +08:00
parent 154bb7ee60
commit 9b45ad77e5
21 changed files with 1701 additions and 16 deletions
+35 -1
View File
@@ -658,6 +658,11 @@
"totalTrafficLabel": "Traffic Since Boot",
"downloadLabel": "Download",
"uploadLabel": "Upload",
"timezoneLabel": "Timezone",
"uptimeLabel": "Uptime",
"uptimeDaySuffix": "d",
"uptimeHourSuffix": "h",
"uptimeMinuteSuffix": "m",
"notAvailable": "N/A",
"bytesPerSecond": "B/s",
"kiloBytesPerSecond": "KB/s",
@@ -687,7 +692,36 @@
"networkUploadLabelUnit": "Upload ({unit})",
"latestCpuValue": "{value}%",
"latestMemoryValue": "{value} {unit}",
"latestNetworkValue": "↓ {download} ↑ {upload} {unit}"
"latestNetworkValue": "↓ {download} ↑ {upload} {unit}",
"processManager": {
"title": "Process Manager",
"subtitle": "Summary view / open full manager",
"viewAll": "View All",
"total": "Total",
"running": "Running",
"sleeping": "Sleeping",
"updatedAt": "Updated",
"searchPlaceholder": "Search PID / user / command",
"autoRefresh": "Auto Refresh",
"refresh": "Refresh",
"empty": "No process data",
"loadFailed": "Failed to load process list",
"terminate": "Terminate",
"forceKill": "Force Kill",
"terminateSuccess": "Terminate signal sent to process {pid}",
"forceKillSuccess": "Force kill signal sent to process {pid}",
"signalFailed": "Process {pid} operation failed",
"columns": {
"pid": "PID",
"user": "User",
"state": "State",
"cpu": "CPU",
"mem": "MEM",
"start": "Start",
"command": "Command",
"actions": "Actions"
}
}
},
"tags": {
"title": "Tag Management",
+35 -1
View File
@@ -658,6 +658,11 @@
"totalTrafficLabel": "开机累计流量",
"downloadLabel": "下行",
"uploadLabel": "上行",
"timezoneLabel": "时区",
"uptimeLabel": "运行时间",
"uptimeDaySuffix": "天",
"uptimeHourSuffix": "时",
"uptimeMinuteSuffix": "分",
"notAvailable": "N/A",
"bytesPerSecond": "B/s",
"kiloBytesPerSecond": "KB/s",
@@ -687,7 +692,36 @@
"networkUploadLabelUnit": "上传 ({unit})",
"latestCpuValue": "{value}%",
"latestMemoryValue": "{value} {unit}",
"latestNetworkValue": "↓ {download} ↑ {upload} {unit}"
"latestNetworkValue": "↓ {download} ↑ {upload} {unit}",
"processManager": {
"title": "进程管理",
"subtitle": "默认概览 / 点击查看全部",
"viewAll": "查看全部",
"total": "总数",
"running": "运行中",
"sleeping": "休眠中",
"updatedAt": "更新于",
"searchPlaceholder": "搜索 PID / 用户 / 命令",
"autoRefresh": "自动刷新",
"refresh": "刷新",
"empty": "暂无进程数据",
"loadFailed": "加载进程列表失败",
"terminate": "结束",
"forceKill": "强制结束",
"terminateSuccess": "已向进程 {pid} 发送结束信号",
"forceKillSuccess": "已向进程 {pid} 发送强制结束信号",
"signalFailed": "进程 {pid} 操作失败",
"columns": {
"pid": "PID",
"user": "用户",
"state": "状态",
"cpu": "CPU",
"mem": "MEM",
"start": "启动时间",
"command": "命令",
"actions": "操作"
}
}
},
"tags": {
"title": "标签管理",