Hermes
|
2c6f06e392
|
feat: multi-tab terminal (Xshell-style)
User asked: '终端应该支持多标签功能,不能只支持一个'
Changes:
1. New ui/terminal_tab_widget.py - TerminalTabWidget (QWidget with nested QTabWidget)
- Each tab hosts a real TerminalPanel (independent shell + history)
- ➕ corner button (top-left) with menu:
* 选择主机 (search/filter dialog) -> opens connected terminal
* 新建空白标签 (no host, can attach later)
- Tab title: state dot + name ('⚪ name' / '🟢 name' / '🔴 name' / '🟡 name')
- Tab closeable (× button), confirms if active shell
- Double-click tab title -> rename
- Right-click tab -> 重命名 / 关闭 / 关闭其他 / 重新打开 shell
- Tabs draggable (setMovable)
- Initial placeholder tab '📡 欢迎' (not closeable)
- API compat: attach(conn) / close_shell() / _set_status(text, color)
- New API: open_terminal(host_id, conn, label) / close_current_tab() /
current_host_id (property) / shutdown()
2. ui/main_window.py
- TerminalPanel() -> TerminalTabWidget(self.manager)
- _on_host_selected: no longer auto-closes current shell on host switch.
Instead creates a new tab if host already connected.
- _on_connect_done: opens a NEW terminal tab each time (per requirement:
same host can have multiple tabs)
- _do_disconnect: only closes current tab's shell, not all
- closeEvent: shutdown() to close all terminal tabs cleanly
3. test_ui.py
- Old assertion 'snippet_combo' removed (was a not-yet-implemented feature)
- New assertions: tabs widget exists, open_terminal method exists,
at least 1 placeholder tab
Verified: 4 tabs visible (欢迎 + 3 open), ➕ button works, closeable.
Tests: core 6/6 + UI 3/3 pass.
|
2026-07-29 07:05:59 +08:00 |
|
Your Name
|
2b29a5cf48
|
feat: command snippets + UI test coverage for new features
- core/snippets.py: SnippetManager with 20 prebuilt sysadmin commands,
CRUD + reorder, persisted to ~/.sshclient/snippets.json
- ui/snippet_dialog.py: SnippetDialog (add/edit) + SnippetManagerDialog
(table view with add/edit/delete/move up/down)
- ui/terminal_panel.py: snippet combo box in toolbar, send_command()
method to inject commands into interactive shell, snippet manager button
- README.md: updated feature table, usage section, project structure
- test_ui.py: added [2/4] checks for sparkline/snippets/theme,
added [4/4] theme toggle verification
|
2026-07-28 23:03:37 +08:00 |
|
Hermes
|
a57dbc0252
|
feat: SSHClient v1.0.0 - PyQt5 + paramiko 跨平台 SSH 客户端
功能:
- 多主机管理 (增删改查, 密码/私钥双认证, 导入导出)
- 远程终端 (命令执行 + 常用命令快捷栏 + 超时控制)
- SFTP 文件浏览 (上传/下载带进度, 新建/删除/重命名)
- 实时监控 (CPU/内存/磁盘/网络, 1-10秒可调刷新)
- AI Agent (OpenAI 兼容 API, 5 工具自动调用: 命令/指标/列文件/读文件/上传)
技术栈: PyQt5 + paramiko + psutil + requests + PyInstaller
打包: build_windows.bat / build.sh 一键产出 ~57MB 单文件 exe
测试: core 6/6 + UI 3/3 + E2E 6/6 全部通过
|
2026-07-28 21:01:31 +08:00 |
|