Skip to content

feat(ui): 设置页拆分 LAN/Named/Quick 三区块,二维码与启停按实际运行通道显示(重做 #97 纯 UI 版) - #138

Open
alone-tree wants to merge 2 commits into
shaobeichen:mainfrom
alone-tree:feat/ui-three-channel-pure
Open

alone-tree wants to merge 2 commits into
shaobeichen:mainfrom
alone-tree:feat/ui-three-channel-pure

Conversation

@alone-tree

Copy link
Copy Markdown
Contributor

背景

重做 #97(已关闭):按 review 意见重做成「真正纯 UI」的最小版本,设置页按 LAN / Named / Quick 三通道区块重组。设计依据见 #98 文档(决策 16 已随本 PR 修订)。

对照 review 意见逐条处理

  1. 后端改动已全部去掉:不碰 lib/service.mjs。原 PR 的 tunnelActiveMode 字段删除,改为客户端纯 UI 推导——tunnelUrl 为 *.trycloudflare.com 即 Quick、否则 Named、未运行则为 null(与既有 namedTakeEffect 提示的判定方式一致)。语义与后端字段等价,tunnelActiveMode 留待后续设备认证 PR 再落地。
  2. 死代码已删:不引入 adminRpcCall / POCKET_ADMIN_RPC_CHANNEL(那是设备认证 PR 才需要的)。
  3. 重复已抽共享:Named / Quick 区块复用三段共享片段——tunnelStatusLine()(启动中/失败状态行)、publicPinRow()(公网访问密码行)、既有 qrArea / Switch / row。

三区块行为

  • LAN:不动,保持上游现状。
  • Named:独立启停开关 + 固定域名配置摘要/编辑表单(Token 留空不覆盖)+「保存后需重启生效」提示 + 过渡期说明(本通道暂仍使用公网访问密码,设备认证落地后移除)。
  • Quick:独立启停开关 + 运行时二维码与防钓鱼提示。
  • 互斥编排:开启一个通道时,前端按序调用既有 RPC(tunnelStop → tunnelSetConfig → tunnelStart)完成「先停另一条、切配置、再开启」,无需后端配合。
  • 二维码与启停态只显示在实际运行中的通道区块,避免「配置改了但隧道还在跑旧通道」时误导。
  • 删除了重构后不再使用的 switchToQuick、modeBtnStyle、单区块公网 UI。

测试与验收

  • node client/build.mjs 重建 bundle;全量测试 178 例中 174 通过,3 个失败(download 超时、tunnel-args 假 cloudflared ENOENT、proxy 端口)经与未改动的 upstream/main 基线复跑比对,为本机环境问题、与本次改动无关;守护本改动的 test/smoke.test.js(bundle 可选链)与 test/locales.test.js(zh/en key 对齐)均通过。
  • 已在 DSH Desktop 2.0.5 + Win11 真机页面验收:三区块渲染、Named 运行态二维码归属、编辑表单开关均正常;未实测运行中的通道互斥切换(避免打断正在使用的隧道),逻辑仅复用既有 RPC 端点。
  • 文档(docs/三通道独立管理改造方案.md 决策 16)按仓库约定放在链尾提交。

关联 #97、#90。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant