feat(workspace): enhance status cards and terminal groups

add memory and disk monitoring cards with richer server metrics
and localized labels in the workspace status panel

group ssh terminal tabs by server with per-group add actions to
make multi-terminal relationships clearer

sync helloagents archive and module documentation for the
completed workspace updates
This commit is contained in:
yinjianm
2026-03-25 22:58:27 +08:00
parent d730d06c5e
commit 7af8812e26
23 changed files with 1644 additions and 839 deletions
@@ -0,0 +1,79 @@
# 变更提案: server-status-memory-disk-cards
## 元信息
```yaml
类型: 功能增强
方案类型: implementation
优先级: P1
状态: 已完成
状态说明: 已按参考图补齐服务器状态中的内存卡片和磁盘卡片,并接入真实监控数据
创建: 2026-03-25
完成: 2026-03-25
```
---
## 1. 需求
### 背景
当前服务器状态面板原本只有 CPU、内存、Swap、磁盘进度条,以及 CPU / 网络速度折线图,无法承载参考图中的内存细分项、磁盘设备信息和读写速率展示。
### 目标
- 新增参考图风格的内存监控卡片,展示总量、已用、缓存、空闲和环形占比。
- 新增参考图风格的磁盘监控卡片,展示设备名、文件系统类型、读写速率以及挂载点/大小/可用/已用率。
- 保留现有 CPU / 网络曲线和基础状态信息。
### 约束条件
```yaml
范围约束:
- packages/backend/src/services/status-monitor.service.ts
- packages/frontend/src/components/StatusMonitor.vue
- packages/frontend/src/types/server.types.ts
- packages/frontend/src/locales/{zh-CN,en-US,ja-JP}.json
兼容约束:
- 不新增第三方依赖
- 保留现有 StatusCharts.vue 的 CPU / 网络曲线
数据约束:
- 新增 memFree、memCached
- 新增 diskAvailable、diskMountPoint、diskFsType、diskDevice、diskReadRate、diskWriteRate
```
### 验收标准
- [x] 状态面板出现参考图风格的内存卡片并展示总量、已用、缓存、空闲
- [x] 状态面板出现参考图风格的磁盘卡片并展示设备、类型、读写速率、挂载点、大小、可用、已用率
- [x] 新字段来自实时状态采集链路
- [x] 前端构建通过
- [x] 后端 TypeScript 构建通过
---
## 2. 方案
### 技术方案
- 后端重构 `StatusMonitorService`,在现有 SSH 轮询链路中补齐 `free``df``findmnt``/proc/diskstats` 的解析。
- 前端在 `StatusMonitor.vue` 中以卡片替代简单内存/磁盘进度行,内存使用 CSS 环形图,磁盘使用竖向容量条与明细表格。
- 新增多语言键值用于内存/磁盘卡片标题、统计标签和表头。
### 影响范围
```yaml
涉及模块:
- frontend
- backend
变更文件:
- packages/backend/src/services/status-monitor.service.ts
- packages/frontend/src/components/StatusMonitor.vue
- packages/frontend/src/types/server.types.ts
- packages/frontend/src/locales/zh-CN.json
- packages/frontend/src/locales/en-US.json
- packages/frontend/src/locales/ja-JP.json
```
### 风险评估
| 风险 | 等级 | 应对 |
|------|------|------|
| Linux 不同发行版的 `free` / `df` / `findmnt` 输出格式差异 | 中 | 采用多层回退解析,失败字段返回 `undefined` |
| 根挂载点对应设备可能是分区或 mapper 设备 | 中 | 优先规整到块设备名,无法精确匹配时 I/O 速率回退为 0 |
| 卡片信息较多可能挤压原状态布局 | 低 | 采用纵向卡片堆叠并保留现有图表区域 |
### 技术决策
- `server-status-memory-disk-cards#D001`: 采用卡片化监控视图,而不是继续在折线图区域追加内存/磁盘折线图。
- `server-status-memory-disk-cards#D002`: 磁盘读写速率基于 `/proc/diskstats` 计算,不引入 `iostat` 等额外依赖。
@@ -0,0 +1,50 @@
# 任务清单: server-status-memory-disk-cards
```yaml
@feature: server-status-memory-disk-cards
@created: 2026-03-25
@status: completed
@mode: R3
```
## 进度概览
| 完成 | 失败 | 跳过 | 总数 |
|------|------|------|------|
| 6 | 0 | 0 | 6 |
---
## 任务列表
### 1. 方案与范围确认
- [√] 1.1 创建服务器状态卡片增强方案包,并锁定为内存卡片、磁盘卡片与实时字段扩展 | depends_on: []
### 2. 后端状态采集扩展
- [√] 2.1 在 `status-monitor.service.ts` 中补齐内存细分字段 `memFree` / `memCached` | depends_on: [1.1]
- [√] 2.2 在 `status-monitor.service.ts` 中补齐磁盘字段 `diskAvailable` / `diskMountPoint` / `diskFsType` / `diskDevice` / `diskReadRate` / `diskWriteRate` | depends_on: [2.1]
### 3. 前端状态模型与界面实现
- [√] 3.1 扩展前端 `ServerStatus` 类型与状态监控数据接收链路 | depends_on: [2.2]
- [√] 3.2 在 `StatusMonitor.vue` 中实现参考图风格的内存卡片与磁盘卡片,并保留现有 CPU / 网络图表 | depends_on: [3.1]
- [√] 3.3 补齐多语言文案并处理缺省值显示 | depends_on: [3.2]
### 4. 验证与知识库同步
- [√] 4.1 运行前后端构建验证,并同步 `.helloagents` 变更记录 | depends_on: [3.3]
---
## 执行日志
| 时间 | 任务 | 状态 | 备注 |
|------|------|------|------|
| 2026-03-25 22:00 | 1.1 | 完成 | 创建 implementation 方案包,确定采用参考图卡片化改造 |
| 2026-03-25 22:18 | 2.1 | 完成 | 后端补齐内存缓存/空闲字段并统一状态采集结构 |
| 2026-03-25 22:24 | 2.2 | 完成 | 后端补齐磁盘可用量、挂载点、类型、设备名与 I/O 速率 |
| 2026-03-25 22:29 | 3.1 | 完成 | 前端 `ServerStatus` 类型补齐新增字段 |
| 2026-03-25 22:33 | 3.2 | 完成 | `StatusMonitor.vue` 改为内存/磁盘卡片布局并保留现有 CPU/网络图表 |
| 2026-03-25 22:37 | 3.3 / 4.1 | 完成 | 补齐中英日文案,前端 `npm run build` 与后端 `npm run build` 通过 |
## 执行备注
- 参考图中的内存/磁盘样式已落到状态监控面板主区域。
- 磁盘元数据存在远端系统差异时,前端会以 `N/A` 或 0 速率优雅降级显示。
@@ -0,0 +1 @@
{"status":"completed","completed":7,"failed":0,"pending":0,"total":7,"done":7,"percent":100,"current":"已完成 ssh-connection-multi-terminal 并通过前端构建验证","updated_at":"2026-03-25 22:19:31"}
@@ -0,0 +1,72 @@
# 变更提案: ssh-connection-multi-terminal
## 元信息
```yaml
类型: 功能增强
方案类型: implementation
优先级: P1
状态: 已完成
状态说明: 已完成实现,前端构建验证通过
创建: 2026-03-25
```
---
## 1. 需求
### 背景
当前工作区顶部标签栏以“全局会话”为主视角。虽然前端和后端都允许对同一 SSH 连接重复创建多个会话,但交互上仍然表现为“打开一个服务器就是一个标签”,缺少“某个服务器连接内部继续新增多个终端”的直观模型,和参考界面中的单连接多终端体验不一致。
### 目标
- 仅针对 `SSH` 连接实现“单个服务器连接下支持多个终端”。
- 用户首次打开某个服务器时,默认只创建 1 个终端。
- 在该服务器已打开后,允许继续新增该服务器下的第 2、第 3 ... 个终端。
- 顶部标签栏交互向“连接内多终端”靠拢,但保持当前项目的整体视觉和工作区结构。
### 约束条件
```yaml
范围约束: 仅改 SSH 会话组织和标签栏交互,不改 RDP/VNC 行为
架构约束: 复用现有 Vue 3 + Pinia + WebSocket + xterm 链路,不引入新状态库
协议约束: 不新增后端 SSH 协议消息,优先复用现有“一次会话对应一个 WebSocket/SSH session”模型
兼容约束: 不破坏现有工作区布局、文件管理、编辑器、SSH 挂起和状态监控能力
```
### 验收标准
- [ ] 首次点击某个 SSH 连接时,只打开 1 个终端实例
- [ ] 已打开的 SSH 连接可继续新增同连接下的多个终端实例
- [ ] 标签栏能清晰区分“连接”与“该连接下的终端序号/实例”
- [ ] 关闭某个终端时,不影响同连接下其他终端继续使用
- [ ] `packages/frontend` 构建通过,核心类型链闭合
---
## 2. 方案
### 技术方案
延续现有“一个终端实例对应一个独立 `SessionState` / WebSocket / SSH session”的实现,不修改后端协议和 SSH handler。前端新增“连接分组视角”作为展示层:为每个 SSH 会话补充分组元数据和终端序号,通过新的 getter 将全局会话整理为“按连接聚合的终端组”,再由 `TerminalTabBar` 基于该聚合结果渲染标签。默认点击连接仍只创建一个终端;当当前激活的是 SSH 连接组时,可在标签栏直接为该连接追加新终端。这样既满足单连接多终端体验,又避免重写后端会话模型。
### 影响范围
```yaml
涉及模块:
- frontend: session store、WorkspaceView、TerminalTabBar、i18n、类型定义
- backend: 原则上无协议改动,仅做兼容性核查
预计变更文件: 6-10
```
### 风险评估
| 风险 | 等级 | 应对 |
|------|------|------|
| 全局标签排序逻辑与连接分组排序冲突 | 中 | 将排序收口到 session getter,保留现有 localStorage 顺序语义 |
| 旧代码仍按 `sessionId -> 标签` 直读,导致 UI 状态不一致 | 中 | 统一从 store getter 导出分组标签模型,避免组件各自拼装 |
| 新增同连接终端后命令、文件管理、挂起状态误串组 | 低 | 保持底层仍按独立 `sessionId` 路由,分组只存在于展示层 |
---
## 3. 技术决策
### ssh-connection-multi-terminal#D001: 复用现有独立 session 模型,只在前端增加连接分组层
**日期**: 2026-03-25
**状态**: ✅采纳
**决策**: 不改后端 SSH 协议和会话状态结构,继续保持“一个终端实例 = 一个独立 SSH session”,仅在前端用连接分组和终端序号实现“单连接多终端”体验。
**理由**: 当前后端已经支持同一连接重复建立多个 SSH session,瓶颈在交互组织而非协议能力。前端分组方案改动更小、回滚边界更清晰,也不会引入 RDP/VNC 连带回归。
**影响**: 主要影响 `session.store``TerminalTabBar.vue``WorkspaceView.vue` 和相关类型/i18n;后端仅需保持现有多 session 行为不退化。
@@ -0,0 +1,52 @@
# 任务清单: ssh-connection-multi-terminal
```yaml
@feature: ssh-connection-multi-terminal
@created: 2026-03-25
@status: completed
@mode: R3
```
## 进度概览
| 完成 | 失败 | 跳过 | 总数 |
|------|------|------|------|
| 7 | 0 | 0 | 7 |
---
## 任务列表
### 1. 方案包与会话模型梳理
- [√] 1.1 创建单连接多终端方案包并固化前端分组决策 | depends_on: []
- [√] 1.2 梳理现有 `session` 状态、标签排序和 SSH 连接入口的复用边界 | depends_on: [1.1]
### 2. 前端会话分组与标签栏改造
- [√] 2.1 扩展 `SessionState` / getter,补充连接分组与终端序号信息 | depends_on: [1.2]
- [√] 2.2 改造 `TerminalTabBar.vue`,支持按连接展示并为当前 SSH 连接新增终端 | depends_on: [2.1]
- [√] 2.3 调整 `WorkspaceView.vue` 与会话入口逻辑,保证默认仅创建一个终端、追加时显式新增 | depends_on: [2.2]
### 3. 文案与验证
- [√] 3.1 补充前端 i18n / 提示文案,并核查 RDP/VNC 不受影响 | depends_on: [2.3]
- [√] 3.2 运行前端构建验证并同步 `.helloagents` 文档与变更记录 | depends_on: [3.1]
---
## 执行日志
| 时间 | 任务 | 状态 | 备注 |
|------|------|------|------|
| 2026-03-25 22:07 | 1.1 / 1.2 | 完成 | 创建 implementation 方案包,并确认复用现有独立 SSH session 模型 |
| 2026-03-25 22:14 | 2.1 / 2.2 / 2.3 | 完成 | 为 session 增加终端序号,顶部标签栏拆分“新增终端”和“选择服务器”入口 |
| 2026-03-25 22:19 | 3.1 / 3.2 | 完成 | 补充中英日文案,执行 `npm --prefix packages/frontend run build` 通过,并同步知识库文档 |
---
## 执行备注
- 本次只做 SSH,不扩展到 RDP/VNC。
- 组内每个终端仍对应独立 `sessionId`,避免影响现有 WebSocket / SFTP / 编辑器链路。
- 若现有标签顺序持久化与连接分组发生冲突,优先保证同连接终端的可识别性和可关闭性。
@@ -0,0 +1 @@
{"status":"completed","completed":4,"failed":0,"pending":0,"total":4,"done":4,"percent":100,"current":"已完成连接管理页树工具栏与更多菜单整理,并完成构建和启动验证","updated_at":"2026-03-25 22:29:00"}
@@ -0,0 +1,65 @@
# 变更提案: connections-tree-toolbar-menu-polish
## 元信息
```yaml
类型: 功能增强
方案类型: implementation
优先级: P1
状态: 已完成
状态说明: 已完成连接管理页树工具栏与行内更多菜单整理,并完成构建及启动验证
创建: 2026-03-25
```
---
## 1. 需求
### 背景
连接管理页上一轮已经补上多级标签树、列头排序和基础版“更多”菜单,但和参考图相比,左侧树仍缺少操作性工具栏,展开/折叠控制也不够直接;右侧列表的行内操作区仍显得偏拥挤,没有真正形成“连接主按钮 + 次级动作入菜单”的层次。
### 目标
- 为左侧标签树补充更接近管理面板的树工具栏。
- 提供明确的展开全部 / 收起全部控制。
- 保留“连接”为主按钮,将编辑、测试、克隆、删除等操作整合进更完整的“更多”菜单。
### 约束条件
```yaml
范围约束: 优先限制在 ConnectionsView.vue,不改后端接口和 store 结构
兼容约束: 保留现有连接、编辑、测试、批量编辑和批量删除能力
交互约束: 行内主操作只保留“连接”,其余动作进入更多菜单
视觉约束: 延续当前黑绿主题和现有双栏管理台风格
```
### 验收标准
- [ ] 左侧树区域出现工具栏,并提供至少展开全部、收起全部两个控制
- [ ] 行内主按钮只保留“连接”,编辑、测试、克隆、删除统一纳入更多菜单
- [ ] 更多菜单在 SSH / 非 SSH 连接上都保持合理动作集合与禁用状态
- [ ] 前端构建通过
---
## 2. 方案
### 技术方案
`ConnectionsView.vue` 中补充树工具栏状态与辅助函数,基于现有 `tagTreeNodes` 统一派生全部可展开节点,实现展开全部/收起全部和范围清理;右侧结果区压缩主操作区,仅保留连接按钮,将测试、编辑、克隆、删除以受控下拉菜单方式集中呈现,并根据连接类型和批量模式控制可用性。
### 影响范围
```yaml
涉及模块:
- frontend: ConnectionsView.vue
预计变更文件: 1
```
### 风险评估
| 风险 | 等级 | 应对 |
|------|------|------|
| 树工具栏和现有折叠按钮语义重叠 | 低 | 保留面板级收起,新增树级展开/收起,职责区分为“区域显隐”与“树层级控制” |
| 菜单动作收拢后可发现性下降 | 中 | 保留醒目的“更多”按钮文案和图标,并把最常用动作排在菜单前部 |
| 批量模式下菜单误触发行选择 | 低 | 菜单按钮和菜单项统一 stopPropagation,并在批量模式下明确禁用 |
### 实施结果
- `ConnectionsView.vue` 已新增树工具栏,提供展开全部、收起全部和重置范围控制,并在工具栏中回显当前范围标题。
- 左侧树继续复用现有多级标签路径推导,同时把“区域显隐”和“层级展开控制”分开处理。
- 右侧行内操作区已压缩为“连接”主按钮加“更多”菜单;编辑、测试、克隆、删除均移入菜单,SSH 测试项按连接类型显示。
- `npm run build --workspace @nexus-terminal/frontend` 通过。
- 运行态验证已完成前端预览启动,应用可进入登录页;但当前本地环境的 `/api/v1/*` 接口均返回 500,无法进入已登录的连接管理页做带数据目视验收。
@@ -0,0 +1,48 @@
# 任务清单: connections-tree-toolbar-menu-polish
```yaml
@feature: connections-tree-toolbar-menu-polish
@created: 2026-03-25
@status: completed
@mode: R2
```
## 进度概览
| 完成 | 失败 | 跳过 | 总数 |
|------|------|------|------|
| 4 | 0 | 0 | 4 |
---
## 任务列表
### 1. 方案与范围确认
- [√] 1.1 创建连接管理页树工具栏与菜单整理方案包 | depends_on: []
### 2. 交互增强实现
- [√] 2.1 在 `ConnectionsView.vue` 中补树工具栏与展开/收起控制 | depends_on: [1.1]
- [√] 2.2 调整行内操作布局,仅保留连接主按钮并扩充更多菜单 | depends_on: [2.1]
### 3. 验证与同步
- [√] 3.1 执行前端验证并同步 `.helloagents` 文档与归档记录 | depends_on: [2.2]
---
## 执行日志
| 时间 | 任务 | 状态 | 备注 |
|------|------|------|------|
| 2026-03-25 22:20 | 1.1 | 完成 | 创建 implementation 方案包,范围锁定为 ConnectionsView.vue 的树工具栏和行内菜单整理 |
| 2026-03-25 22:25 | 2.1 / 2.2 | 完成 | 增加树工具栏与展开/收起控制,并将编辑、测试、克隆、删除整理进更多菜单 |
| 2026-03-25 22:29 | 3.1 | 完成 | 前端构建通过,且预览服务可启动到登录页;因本地后端接口 500,未完成已登录连接页目视验收 |
---
## 执行备注
- 本轮是 `connections-tree-sort-more-menu` 的后续整理,重点是把“树可操作性”和“行内操作层级”继续往参考图靠拢。
- 运行态已验证前端可启动,但当前环境不具备可用登录态与连接数据,真实连接管理页视觉验收仍需在你的本地业务环境补做。
@@ -0,0 +1 @@
{"status":"completed","completed":4,"failed":0,"pending":0,"total":4,"done":4,"percent":100,"current":"已完成 terminal-tab-group-visual 并通过前端构建验证","updated_at":"2026-03-25 22:36:00"}
@@ -0,0 +1,70 @@
# 变更提案: terminal-tab-group-visual
## 元信息
```yaml
类型: 功能增强
方案类型: implementation
优先级: P1
状态: 已完成
状态说明: 已完成实现,前端构建验证通过
创建: 2026-03-25
```
---
## 1. 需求
### 背景
上一轮已经让同一 SSH 服务器支持多个终端,并补上了终端序号,但顶部标签栏仍然更像“连接名 + 终端编号”的单层标签,不够接近参考图里“同服务器终端属于一组”的视觉关系。
### 目标
- 将顶部终端标签栏改成更明显的“同服务器终端组”视觉。
- 采用“分组头 + 子标签”的表现方式。
- 保留现有单连接多终端能力,不回退为单终端模型。
- 继续保持当前黑绿主题和工作区整体风格。
### 约束条件
```yaml
范围约束: 优先限制在 TerminalTabBar.vue 和相关前端文案,不改后端协议
结构约束: 复用现有 session 排序与 terminalIndex 数据,不重写 session store 主模型
交互约束: 同服务器组内仍能快速新增终端,其他服务器入口继续保留
兼容约束: 不影响 RDP/VNC 既有入口和会话关闭逻辑
```
### 验收标准
- [ ] 连续同连接终端在标签栏中具备明确的“分组头 + 子标签”视觉关系
- [ ] 组头能清晰展示服务器身份,子标签主要表达终端实例
- [ ] 同组内仍能继续新增终端,且不影响现有关闭/切换逻辑
- [ ] 前端构建通过
---
## 2. 方案
### 技术方案
保留当前按 `sessionId` 排序的平铺会话数组,不引入新的嵌套 store 结构;在 `TerminalTabBar.vue` 内根据相邻会话的 `connectionId` 判定组起点与组终点,在连续同连接会话的首项前渲染组头,在末项后渲染组内新增终端按钮,子标签本身则弱化连接名、强化终端编号与激活态。这样能在不打破现有拖拽键和会话事件路由的前提下,得到更接近参考图的组视觉。
### 影响范围
```yaml
涉及模块:
- frontend: TerminalTabBar.vue, locales
预计变更文件: 2-4
```
### 风险评估
| 风险 | 等级 | 应对 |
|------|------|------|
| 分组头和子标签都在 draggable item 中渲染,样式边界容易错位 | 中 | 让分组逻辑完全依赖前后相邻项判定,避免额外 DOM 状态 |
| 子标签弱化连接名后识别度下降 | 低 | 组头保留服务器名,子标签保留终端编号与 tooltip |
| 组内新增终端按钮和现有全局按钮职责重叠 | 中 | 将全局按钮收口为“选择其他服务器”,组内新增由组尾按钮承担 |
---
## 3. 技术决策
### terminal-tab-group-visual#D001: 用相邻项判定的轻量分组视觉替代嵌套数据重构
**日期**: 2026-03-25
**状态**: ✅采纳
**决策**: 不新增“连接组” store 层,而是在 `TerminalTabBar.vue` 里通过相邻 `connectionId` 判断组首/组尾,渲染组头、子标签和组尾新增按钮。
**理由**: 当前 session 数据和事件路由已经稳定,视觉分组是展示层问题,没必要为此重写状态结构。轻量分组实现可以最大限度复用现有逻辑,同时更容易回滚。
**影响**: 主要影响 `TerminalTabBar.vue` 的结构和样式,以及少量终端标签栏文案。
@@ -0,0 +1,49 @@
# 任务清单: terminal-tab-group-visual
```yaml
@feature: terminal-tab-group-visual
@created: 2026-03-25
@status: completed
@mode: R2
```
## 进度概览
| 完成 | 失败 | 跳过 | 总数 |
|------|------|------|------|
| 4 | 0 | 0 | 4 |
---
## 任务列表
### 1. 方案与视觉方向确认
- [√] 1.1 创建顶部终端组视觉方案包并锁定“分组头 + 子标签”方向 | depends_on: []
### 2. 终端标签栏改造
- [√] 2.1 在 `TerminalTabBar.vue` 中实现组首/组尾判定与分组头渲染 | depends_on: [1.1]
- [√] 2.2 调整子标签与组尾新增终端按钮样式,并保留全局服务器入口 | depends_on: [2.1]
### 3. 验证与同步
- [√] 3.1 运行前端构建验证并同步 `.helloagents` 文档与归档记录 | depends_on: [2.2]
---
## 执行日志
| 时间 | 任务 | 状态 | 备注 |
|------|------|------|------|
| 2026-03-25 22:29 | 1.1 | 完成 | 创建 implementation 方案包,并锁定“分组头 + 子标签”方向 |
| 2026-03-25 22:33 | 2.1 / 2.2 | 完成 | 在 TerminalTabBar.vue 中加入组首组尾判定、服务器组头、子标签和组尾新增终端按钮 |
| 2026-03-25 22:36 | 3.1 | 完成 | `npm --prefix packages/frontend run build` 通过,并同步知识库文档 |
---
## 执行备注
- 本轮是标签栏视觉升级,不改底层 session / WebSocket 协议。
- 分组关系只存在于顶部标签栏展示层,底层仍按独立 `sessionId` 工作。
- 若实现中发现拖拽和分组样式冲突,优先保证组视觉和终端可操作性。
+7
View File
@@ -14,11 +14,15 @@
| 202603250614 | terminal-ansi-color-effects | implementation | frontend, backend | - | ✅完成 |
| 202603250636 | connections-view-tree-search-redesign | implementation | frontend | - | ✅完成 |
| 202603252152 | connections-tree-sort-more-menu | implementation | frontend | - | ✅完成 |
| 202603252220 | connections-tree-toolbar-menu-polish | implementation | frontend | - | ✅完成 |
| 202603252207 | ssh-connection-multi-terminal | implementation | frontend | ssh-connection-multi-terminal#D001 | ✅完成 |
| 202603252229 | terminal-tab-group-visual | implementation | frontend | terminal-tab-group-visual#D001 | ✅完成 |
| 202603251200 | workspace-workbench-monitor | implementation | frontend, backend | workspace-workbench-monitor#D001 | ✅完成 |
## 按月归档
| 202603252200 | server-status-memory-disk-cards | implementation | frontend, backend | server-status-memory-disk-cards#D001, server-status-memory-disk-cards#D002 | 鉁呭畬鎴?|
### 2026-03
- [202603250317_ghcr-docker-publish](./2026-03/202603250317_ghcr-docker-publish/) - 新增 GHCR 镜像发布 workflow 并切换 compose 镜像来源
- [202603250532_quickcommands-theme-alignment](./2026-03/202603250532_quickcommands-theme-alignment/) - 统一快捷指令视图按钮主题适配,移除残留硬编码 hover 色值
@@ -27,9 +31,12 @@
- [202603250614_terminal-ansi-color-effects](./2026-03/202603250614_terminal-ansi-color-effects/) - 修复终端文字效果覆盖 ANSI 彩色输出的问题,并将文字效果默认开关改为开启
- [202603250636_connections-view-tree-search-redesign](./2026-03/202603250636_connections-view-tree-search-redesign/) - 将连接管理页升级为左侧标签树、顶部搜索工具条和右侧结果列表的双栏管理台
- [202603252152_connections-tree-sort-more-menu](./2026-03/202603252152_connections-tree-sort-more-menu/) - 为连接管理页补充多级标签树、列头排序和行级更多菜单
- [202603252220_connections-tree-toolbar-menu-polish](./2026-03/202603252220_connections-tree-toolbar-menu-polish/) - 为连接管理页补树工具栏与展开/收起控制,并整理行内更多菜单
- [202603252207_ssh-connection-multi-terminal](./2026-03/202603252207_ssh-connection-multi-terminal/) - 为同一 SSH 服务器连接补充多终端入口与终端序号标识
- [202603252229_terminal-tab-group-visual](./2026-03/202603252229_terminal-tab-group-visual/) - 将顶部终端标签栏改成更明显的服务器组头与终端子标签
- [202603251200_workspace-workbench-monitor](./2026-03/202603251200_workspace-workbench-monitor/) - `/workspace` 改为三栏 Workbench 布局,并新增开机累计流量监控
- [202603252200_server-status-memory-disk-cards](./2026-03/202603252200_server-status-memory-disk-cards/) - 为服务器状态补齐参考图风格的内存/磁盘卡片,并扩展后端监控字段与磁盘 I/O 速率
## 结果状态说明
- ✅ 完成
- ⚠️ 部分完成