Files
Nexus/docs/changelog/2026-06-10-rdp-client-state-constants-fix.md
T
r 9c9a51263c chore: 本地快照 — 终端 UI、服务器 site_url、后台任务与 Agent 导航
汇总未提交工作区:Servers 列表 site_url 链接、终端页与选机器 UI、SSH 连通性与 Telegram 通知、agent/offline/unset_path 后台调度与 gate_ai_review 门控;更新 AGENTS 与 agent-exploration 规则(仅本机 commit);同步 web/app 构建产物与相关文档。
2026-06-18 06:01:50 +08:00

1.3 KiB
Raw Blame History

2026-06-10 — RDP Guacamole Client.State 常量修复

摘要

修复浏览器 RDP 已收到 sync 但 UI 永远停在「连接中」:guacamole-common-js 1.5 运行时使用 Client.State.CONNECTED,而非错误的 STATE_CONNECTEDundefined)。

动机

Playwright E2E 与 WS 抓包显示 sync 已到达,但 Pinia 状态未变为 connected;根因是 onstatechangeundefined 比较永远不成立。

涉及文件

  • frontend/src/composables/rdp/useRdpSession.ts — 使用 Client.State / Tunnel.Stateconnect 序号防竞态
  • frontend/src/pages/RdpPage.vuemounted 守卫避免重复 connect
  • frontend/src/types/guacamole.d.ts — 类型与运行时对齐
  • frontend/e2e/pages/rdp-connect.spec.mjs — JWT 注入登录、nav 侧栏、canvas .first()
  • frontend/e2e/helpers.mjsloginWithAccessToken/rdp 导航
  • scripts/rdp_ws_probe.pyscripts/guacd_rdp_probe.py — 生产 WS/guacd 探针

迁移 / 重启

  • 仅前端热更新(web/app sync 到容器)

验证

cd frontend && npx vite build
# 生产 Playwright(需 NEXUS_E2E_ACCESS_TOKEN 由容器 mint JWT
NEXUS_E2E_ACCESS_TOKEN=... npx playwright test e2e/pages/rdp-connect.spec.mjs

生产 E2E:约 12s 内出现「已连接」+ 1024×768 画布。