Skip to content

feat(tui): add interactive TUI dashboard with gum#229

Open
Babylonehy wants to merge 3 commits intownlen:masterfrom
Babylonehy:master
Open

feat(tui): add interactive TUI dashboard with gum#229
Babylonehy wants to merge 3 commits intownlen:masterfrom
Babylonehy:master

Conversation

@Babylonehy
Copy link
Copy Markdown

@Babylonehy Babylonehy commented Apr 24, 2026

Summary

0b1d7267c4b78a4a11d25be3b58bdcb3 c7a989fa93194cd9baa3c872b46781c4
  • 新增 TUI 控制台 (clashctl tui):基于 gum 的交互式终端界面

    • 节点切换:延迟显示、并发测速、测速后即时刷新延迟数据
    • 策略组浏览、订阅管理、代理模式切换
    • 活跃连接查看、日志查看、配置管理
    • Tun 模式管理、开机接管、密钥管理
  • 修复 proxy.sh 多项问题

    • emoji 策略组名导致 yq lexer 报错 → 改用 env(GROUP) + to_entries
    • 节点切换 API 未对 group/node URL 编码 → 添加 proxy_node_url_encode
    • 节点名含 | 导致延迟解析错误 → 分隔符改为 \t
    • proxy_group_display_list N+1 API 调用 → 单次调用 + yq 内过滤
    • proxy_group_selectdie 会杀掉 TUI → TUI 中用子 shell 调用
    • 并发测速后 set -e + read 无换行 EOF 导致脚本退出 → 修复 printf 格式
  • 安装体验:安装时提示是否安装 gum 依赖,自动检测包管理器(apt/yum/dnf/pacman/apk)

Test plan

  • bash install.sh — 验证 TUI 安装提示(已装 gum 显示就绪,未装提示安装)
  • clashctl tui — 进入 TUI 主界面
  • 切换节点 → 选择策略组 → 测速所有节点 → 验证延迟数据刷新一致
  • 切换节点 → 选择节点 → 验证节点切换成功且不退出 TUI

Xiang Li and others added 3 commits April 24, 2026 21:25
Add a full-featured TUI control panel (clashctl tui) powered by gum:
- Node switching with latency display and concurrent speed testing
- Strategy group browsing, subscription management, proxy mode switching
- Active connections viewer, log viewer, config management
- Tun mode management, boot auto-proxy control, secret management

Key fixes in proxy.sh:
- Use env(GROUP) + to_entries to avoid yq lexer errors with emoji keys
- URL-encode group/node names in controller API calls
- Use tab delimiter instead of pipe to handle node names containing "|"
- Fix proxy_group_display_list to use single API call (avoid N+1 requests)

Install experience:
- Prompt user during install to optionally install gum dependency
- Auto-detect package manager (apt/yum/dnf/pacman/apk) for gum install

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat(tui): add interactive TUI dashboard with gum
@wnlen
Copy link
Copy Markdown
Owner

wnlen commented Apr 29, 2026

@Babylonehy 感谢这个 PR,里面几个 proxy.sh 的修复点很有价值,尤其是 group/node URL 编码、特殊字符策略组名、节点名分隔符、并发测速后的刷新问题。

不过这个 PR 同时引入了 clashctl tuigum 依赖安装、代理切换逻辑修复、配置/订阅/Tun/日志等入口整合,范围比较大,直接合并风险偏高。

建议拆成两个 PR:

  1. 先提交一个只包含 proxy.sh 修复的 PR
    范围控制在节点切换、策略组解析、延迟解析、并发测速刷新这些 bugfix,不引入 TUI 和 gum。

  2. 再单独提交 clashctl tui PR
    TUI 作为可选能力实现,gum 不能成为主安装硬依赖;未安装时应优雅提示,不影响 clashon / clashoff / clashctl select / status / doctor 主路径。

这样更容易 review,也能先把确定的 bugfix 合进去。

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.

2 participants