diff --git a/CHANGELOG.md b/CHANGELOG.md index 25f92f07..1de49b8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,45 @@ All notable changes to this project will be documented in this file. This changelog is inferred from release bump commits in git history (for example `chore: bump version to vX.Y.Z`) and grouped by Conventional Commit type. +## [Unreleased] + +### Added + +- **gpu:** Add a GPU monitoring panel for SSH hosts, showing driver/CUDA versions, per-GPU utilization, memory, temperature, power, fan, and a searchable per-process GPU usage list, with a `Show GPU Monitor` toggle and configurable poll interval. +- **docker:** Add a Docker management panel for SSH hosts covering containers, images, volumes, networks, and Compose projects, with container details, logs, exec/enter, lifecycle actions, and confirmed destructive operations such as remove, kill, compose down, and `system prune`. +- **process:** Add a process management panel for SSH hosts with a live, sortable, searchable process list, per-process detail, `renice`, and signal sending (TERM/HUP/STOP/CONT and confirmed KILL). +- **app:** Track live session state so monitor panels bind only to a genuinely active SSH session, and gate activity-panel visibility so toggled-off panels are not auto-opened. +- **ssh:** Add per-connection SSH algorithm preferences with Compatible / Secure / Custom modes, reorderable key-exchange, cipher, MAC, and host-key lists, and Modern/Legacy/Insecure risk labels. +- **connections:** Add a temporary SSH link dialog that opens a one-off session from a pasted `ssh://` URL or `ssh` command string without saving a connection. +- **terminal:** Add session input synchronization via named sync groups, mirroring keystrokes to grouped peers, plus a Send Command target selector for current session, all sessions, or a specific group. +- **file-transfer:** Surface Zmodem (rz/sz) transfers in the transfer list with progress and Zmodem-appropriate controls. +- **terminal:** Add Unicode grapheme support for correct rendering and cursor width of emoji, combining marks, and ZWJ sequences. +- **terminal:** Add a Clear Input action (Ctrl/Cmd+L) available from the context menu and keyboard shortcut. +- **terminal:** Add a Close All Sessions confirmation dialog before closing all tabs. +- **ai:** Add a background execution setting for the AI Assistant. +- **app-lock:** Add window close confirmation and control to the lock screen. +- **window:** Enhance main window state management and positioning. +- **importer:** Extract user and host from WindTerm session imports. + +### Changed + +- **terminal:** Expand built-in keyword highlight presets with more error and success phrases. +- **ai:** Improve model name handling for the Deepseek provider. +- **serial:** Refine the serial session form layout for better responsiveness. + +### Fixed + +- **russh:** Improve name-list parsing to handle trailing commas and reject invalid entries. +- **ssh:** Improve X11 channel handling in the SSH handler. +- **ssh:** Suppress the flashing console window when running local system shell commands on Windows. +- **hooks:** Add reload handling for forced credential loading. + +### Performance + +- **sftp:** Add channel-concurrency limiting and automatic retry with backoff for transient SFTP channel-open failures. +- **watcher:** Use content fingerprinting so auto-upload triggers only on real content changes, not editor metadata-only saves. +- **hooks:** Add a forced-reload option to credential loading. + ## [1.1.12] - 2026-06-30 ### Added diff --git a/README.md b/README.md index ac7c554f..c8b98636 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,10 @@ NyaTerm is built for people who move between servers, local commands, devices, a - Saved connections with folders, icons, metadata, duplication, keyboard copy, reconnect, and import flows - Command Palette and session quick switcher for finding actions, open sessions, saved connections, and new-session entry points - Main-window `Background Image` customization with `cover` / `contain` / `stretch` / `tile` sizing and adjustable `Background Content Opacity` -- Left and right activity bars for file explorer, network, Security/Auth, Sync & Backup, AI Assistant, saved connections, active sessions, command history, and resource monitoring +- Left and right activity bars for file explorer, network, Security/Auth, Sync & Backup, AI Assistant, saved connections, active sessions, command history, resource monitoring, GPU monitor, process manager, and Docker manager +- Remote host monitoring panels for SSH sessions: resource monitor, NVIDIA GPU monitor, process manager (signal/renice), and Docker manager (containers, images, volumes, networks, Compose) +- Session input sync groups to broadcast typed input and sent commands to multiple sessions at once +- Temporary SSH links for one-off connections from a pasted `ssh://` URL or `ssh` command without saving a connection - Child windows for settings, new-session creation, quick-command editing, remote-file editing, and auto-upload prompts - Tray support with optional minimize-to-tray and hide-main-window behavior @@ -107,14 +110,16 @@ NyaTerm is built for people who move between servers, local commands, devices, a - Terminal search with result navigation, search history, copy/paste, context menus, and selected-text actions - Command history with fuzzy suggestions, configurable length filters, and suppression in interactive programs +- Unicode grapheme rendering for emoji, combining marks, and ZWJ sequences - Optional line-number and timestamp gutter - Optional action links for IPv4 addresses, `host:port`, and archive filenames -- Optional keyword highlighting with built-in presets, custom rules, and JSON import -- Terminal zoom, workspace padding, font weight controls, macOS IME compatibility, and image path paste handling +- Optional keyword highlighting with expanded built-in presets, custom rules, and JSON import +- Terminal zoom, workspace padding, font weight controls, macOS IME compatibility, image path paste handling, and a clear-terminal action - AI shortcuts for explaining recent output, plus inline Agent command output with configurable `Terminal Output Lines` - Large-output protection, configurable scrollback, SSH keep-alive, and session recording - Online search and translation from selected terminal text -- Zmodem file transfer support directly from the terminal +- Zmodem file transfer support directly from the terminal, surfaced in the transfer queue +- Confirmation dialog before closing all sessions - Customizable keyboard shortcuts for terminal and UI actions, including `Backspace Mode` selection for Telnet and Serial sessions ## SFTP and File Workflows @@ -123,7 +128,8 @@ NyaTerm is built for people who move between servers, local commands, devices, a - Upload, download, rename, move, delete, properties, new file/folder, and OpenSSH-compatible symlink actions - Folder upload, multi-select, editable path bar, and manual/automatic sync with terminal cwd - Transfer queue with speed display, pause, resume, cancel, retry, duplicate-target handling, timestamp preservation, and configurable concurrency -- Open remote files in a local editor and upload saved changes back through the watcher-driven auto-upload flow +- Open remote files in a local editor and upload saved changes back through the watcher-driven auto-upload flow, with content fingerprinting so only real content changes trigger re-upload +- SFTP channel concurrency limiting and automatic retry on transient channel-open failures - External drag-and-drop upload support on Windows ## Security, Authentication, and Networking @@ -131,6 +137,7 @@ NyaTerm is built for people who move between servers, local commands, devices, a - Password authentication, private keys, host-key verification, and encrypted local persistence - Credential management with regex-based terminal auto-fill - OTP management with TOTP/HOTP, QR import, and SSH auto-fill support +- Per-connection SSH algorithm preferences with Compatible / Secure / Custom modes and security-risk labels for key exchange, ciphers, MACs, and host keys - Proxy configurations including SOCKS5, HTTP, and ProxyCommand; SSH jump hosts with cycle prevention; local / remote / dynamic tunnels - SSH X11 forwarding for environments with a local X server - Screen lock, idle app lock, master password, diagnostics settings, local log management, and diagnostics bundle export @@ -241,7 +248,7 @@ Download installers from [nyaterm.app](https://nyaterm.app) or the [Releases](ht | Type | Typical use | Notes | |------|-------------|-------| -| SSH | Linux / Unix remote servers | Supports SFTP, OTP, resource monitor, proxy, jump host, and tunnels | +| SSH | Linux / Unix remote servers | Supports SFTP, OTP, resource / GPU / process / Docker monitoring, proxy, jump host, tunnels, and per-connection algorithm preferences | | Local Terminal | Local shell workflows | Uses your local shell path and working directory | | Telnet | Legacy network devices or lab systems | Lightweight terminal session without SSH-only features, with `Backspace Mode` for `Ctrl+H (BS)` or `DEL (0x7F)` | | Serial | Routers, boards, embedded devices | Configurable port, baud rate, data bits, parity, stop bits, and `Backspace Mode` | diff --git a/docs-site/docs/guide/file-transfer.md b/docs-site/docs/guide/file-transfer.md index 2536cc58..33f50c32 100644 --- a/docs-site/docs/guide/file-transfer.md +++ b/docs-site/docs/guide/file-transfer.md @@ -139,6 +139,24 @@ NyaTerm 会把上传 / 下载任务统一放进传输队列中,便于你查看 新的 SFTP 后端改进了目录、符号链接、已知大小文件下载和大文件上传的处理。你通常不需要关心内部实现;用户可见的变化是传输速度反馈更清楚,失败时错误信息更具体,目录和符号链接操作更接近 OpenSSH 行为。 +此外,NyaTerm 会对单条 SSH 连接上的并发 SFTP 通道数量做限制,并在通道打开遇到临时失败时自动带退避重试。这样在同一主机上同时进行多项文件操作时更稳定,不容易因为瞬时的通道资源不足而报错。这些都是后端行为,没有需要手动配置的设置项。 + +## Zmodem 传输(rz / sz) + +除了 SFTP,NyaTerm 还支持终端里常见的 Zmodem 传输,也就是在远端执行 `rz`(上传到远端)或 `sz`(从远端下载)时触发的传输方式。 + +- 检测到 `rz` 时,NyaTerm 会让你选择要上传的本地文件;上传前会先探测远端目录中的同名文件并处理冲突 +- 检测到 `sz` 时,NyaTerm 会让你选择本地保存目录 +- Zmodem 传输会作为条目出现在传输队列中,带实时进度 + +需要注意的是,Zmodem 传输的可用控制和普通 SFTP 传输不同: + +- Zmodem 项**不支持**暂停、继续、重试、取消 +- 传输结束后,你只能把它从列表中移除 +- 面板顶部的**全部暂停 / 全部继续 / 全部重试**会自动跳过 Zmodem 项 + +这是因为 Zmodem 协议的传输由终端两端直接驱动,NyaTerm 只做进度展示和文件选择,不介入协议本身的暂停与续传。 + ## 与终端路径同步 文件浏览器可以和当前 SSH 终端的工作目录配合使用: @@ -172,6 +190,16 @@ NyaTerm 会把上传 / 下载任务统一放进传输队列中,便于你查看 如果你对某个文件选择了“始终上传”,那么在**当前会话内**后续再次保存时会直接回传,不再重复询问。 +### 只在内容真正变化时回传 + +文件监听基于内容指纹判断是否需要回传,而不是单纯依赖保存事件或修改时间: + +- 内容没有变化(例如编辑器只更新了修改时间)时,不会触发回传 +- 只有文件内容确实改变才会弹出上传提示或执行自动回传 +- 对“写临时文件再重命名”的原子保存方式也能正确识别 + +这样可以避免部分编辑器的保存行为造成的重复上传。 + ### 适合的使用场景 - 修改远程配置文件 diff --git a/docs-site/docs/guide/layout-and-workspace.md b/docs-site/docs/guide/layout-and-workspace.md index 3a58650f..2be82b4f 100644 --- a/docs-site/docs/guide/layout-and-workspace.md +++ b/docs-site/docs/guide/layout-and-workspace.md @@ -118,6 +118,11 @@ NyaTerm 会保存终端窗口布局,重启或重新打开工作区时尽量恢 - 活动会话 - 命令历史 - 资源监控 +- GPU 监控 +- 进程管理 +- Docker 管理 + +其中 GPU 监控、进程管理、Docker 管理只对 SSH 会话有意义,并且默认关闭,需要在 **设置 → 终端** 中分别开启后才会出现对应图标。 如果你的工作流是“先选连接,再看运行状态,必要时再调用 AI 分析”,这种左右分工会很自然。 diff --git a/docs-site/docs/guide/session-types.md b/docs-site/docs/guide/session-types.md index b408fed3..2ebd6f76 100644 --- a/docs-site/docs/guide/session-types.md +++ b/docs-site/docs/guide/session-types.md @@ -17,7 +17,7 @@ NyaTerm 不只是 SSH 客户端,而是一个把多类终端工作流放到同 | 会话类型 | 典型场景 | 支持的增强能力 | |----------|----------|----------------| -| SSH | Linux / Unix 服务器远程运维 | SFTP、OTP、资源监控、代理、跳板机、隧道 | +| SSH | Linux / Unix 服务器远程运维 | SFTP、OTP、资源 / GPU / 进程 / Docker 监控、代理、跳板机、隧道、算法偏好 | | 本地终端 | 本地 shell、脚本调试、构建命令 | 共享同一套终端 UI、命令历史、分屏 | | Telnet | 旧设备、实验环境、兼容性排障 | 终端工作区能力,支持 `Backspace Mode`,但不包含 SSH 专属特性 | | 串口 | 路由器、交换机、板卡、嵌入式调试口 | 串口参数配置、`Backspace Mode` 与终端工作区能力 | @@ -29,8 +29,9 @@ SSH 是当前能力最完整的会话类型,适合: - 登录远程 Linux / Unix 主机 - 浏览和传输远程文件 - 使用 OTP、跳板机、代理 -- 查看远程资源监控 +- 查看远程资源、GPU、进程与 Docker 监控 - 配置端口隧道 +- 精细控制 SSH 协商算法 如果你需要: diff --git a/docs-site/docs/guide/ssh-connection.md b/docs-site/docs/guide/ssh-connection.md index 16e2d923..6aa9c8aa 100644 --- a/docs-site/docs/guide/ssh-connection.md +++ b/docs-site/docs/guide/ssh-connection.md @@ -7,11 +7,12 @@ sidebar_position: 1 SSH 仍然是 NyaTerm 最完整的一类会话。除了基础登录外,SSH 连接还可以进一步挂接: - SFTP 文件浏览器 -- 远程资源监控 +- 远程资源监控、GPU 监控、进程管理、Docker 管理 - 代理 - 跳板机 - OTP 绑定与自动填充 - 端口隧道 +- SSH 算法偏好 如果你第一次接触 NyaTerm,通常建议先把 SSH 连接配置好,再去扩展文件、终端增强和网络能力。 @@ -135,6 +136,22 @@ NyaTerm 不内置 X server,用户需要自行安装并启动: 如果需要覆盖本机 DISPLAY,可以在 **设置 → 终端 → 本地 X11 DISPLAY** 中填写,例如 Windows 常用 `localhost:0`,Linux/macOS 常用 `:0`。 +### SSH 算法偏好 + +可以为每个连接单独控制 SSH 握手时协商的加密算法,位于高级配置的 **SSH 算法** 卡片中,提供三种模式: + +- **兼容(默认)**:使用较宽的算法列表,包含部分旧算法,便于连接老旧服务器或网络设备 +- **安全**:只使用现代算法,排除旧的兼容项 +- **自定义**:分别在 **密钥交换 / 加密 / MAC / 主机密钥** 四类中勾选并调整顺序 + +每个算法都会带有风险标记: + +- **现代**(绿色) +- **旧版**(黄色,例如 `ssh-rsa`、`*-cbc`) +- **不安全**(红色,例如 `3des-cbc`、`hmac-sha1`、`ssh-dss`) + +保存自定义配置时,NyaTerm 会校验每一类都不能为空,并拒绝无法识别的算法名。如果不确定该选什么,保留 **兼容** 模式即可;对安全性要求较高的环境建议使用 **安全** 或自定义收紧算法列表。 + ### 多路复用 SSH 会话 NyaTerm 可以在同一条 SSH 连接上多路复用多个终端会话。向同一主机打开新的终端时,会复用已有的已认证连接,而不必每次重新认证。 @@ -168,6 +185,34 @@ NyaTerm 可以在同一条 SSH 连接上多路复用多个终端会话。向同 如果你维护大量主机,建议用分组、图标和描述把“环境 / 项目 / 角色”区分开。 +## 临时 SSH 链接 + +如果只是想临时连一次,不想保存连接,可以使用 **临时 SSH 链接**。在已保存连接面板中打开该对话框(也可通过全局快捷键唤起),粘贴一段地址即可直接建立一次性会话。 + +支持两种输入形式: + +- `ssh://user@host:port` 形式的 URL +- `ssh [-p port] [-l user] user@host` 形式的命令字符串 + +约定与限制: + +- 默认用户名为 `root`,默认端口为 `22` +- 使用密码认证,不带代理、跳板机、登录后命令或 X11 +- 出于安全考虑,会拒绝内联密码(`user:pass@`)以及 `-J`、`-L/-R/-D`、`-i`、`-o ProxyJump/ProxyCommand` 等不支持的选项,并给出对应错误提示 + +临时会话不会写入已保存连接:NyaTerm 会剥离连接 ID、代理、跳板机、登录后命令、X11 与算法偏好,因此它始终只是一次性会话。 + +## 会话输入同步 + +需要同时对多台主机执行相同操作时,可以使用 **会话输入同步组**,把在一个终端里输入的内容广播到多个会话。 + +- 在同步组管理对话框中创建命名的、带颜色的同步组,并把当前存活的会话加入组中 +- 组可以整体启用 / 停用,也可以对单个会话单独暂停 +- 组内某个会话处于启用状态时,你在其中一个终端的按键会镜像到组内其他未暂停的会话;命令预览与历史记录只在你实际输入的原始会话上生成 +- 底部 **发送命令** 面板提供目标选择:当前会话、全部会话,或某个具体的 `分组: <名称>`;分组目标会自动按会话类型(串口与 shell)过滤,并排除已暂停或重复的会话 + +同步组是运行时状态,不会被持久化,应用重启后需要重新建立。 + ## 导入其他客户端的会话 NyaTerm 支持导入其他客户端的会话配置,目前可导入: diff --git a/docs-site/docs/guide/terminal.md b/docs-site/docs/guide/terminal.md index 74cf99cd..22c574ff 100644 --- a/docs-site/docs/guide/terminal.md +++ b/docs-site/docs/guide/terminal.md @@ -222,14 +222,23 @@ NyaTerm 可以在你手动输入命令时进行实时风险评估。当检测到 - 设为 `0` 表示关闭 - 适合降低长时间空闲连接被远端回收的概率 -### 远程资源监控 +### 远程主机监控面板 + +NyaTerm 为 SSH 会话提供了四类右侧监控面板:**资源监控**、**GPU 监控**、**进程管理**、**Docker 管理**。它们有一些共同点: + +- 只在当前是 **SSH 会话** 时才有意义,并且只绑定到真正处于活动状态的 SSH 会话 +- 各自由 **设置 → 终端** 中的开关控制是否显示;关闭对应开关会同时隐藏它的活动栏图标 +- 轮询间隔可调,范围为 **3 秒到 120 秒** +- 面板会在连续轮询失败若干次后停止刷新,避免对不支持的主机反复请求 + +#### 资源监控 远程资源监控默认开启。要看到数据,需要同时满足: 1. 当前是一个 **SSH 会话** 2. 在 **设置 → 终端** 中开启 **显示远程资源信息** -启用后,右侧 **资源监控** 图标会显示,面板会按设定间隔轮询主机信息;默认轮询间隔为 **3 秒**,可手动调整。关闭该设置会同时隐藏图标。 +启用后,右侧 **资源监控** 图标会显示,面板会按设定间隔轮询主机信息;默认轮询间隔为 **3 秒**,可手动调整。 面板会显示的内容包括: @@ -239,6 +248,47 @@ NyaTerm 可以在你手动输入命令时进行实时风险评估。当检测到 - 内存使用情况 - 网络吞吐速率 +#### GPU 监控 + +**GPU 监控** 面板用于查看远端主机上的 NVIDIA GPU 状态,默认关闭,可在 **设置 → 终端** 中开启 **显示 GPU 监控**(默认轮询间隔 3 秒)。 + +面板会显示: + +- 驱动版本与 CUDA 版本 +- 汇总信息:GPU 数量、最高使用率、显存占用、最高温度 +- 每张 GPU 卡:编号、型号、性能状态(pstate)、使用率与显存占用条,展开后可看 UUID、温度、功耗、风扇转速、空闲显存;使用率超过 **70% / 90%** 时会有不同的颜色提示 +- 可搜索的 GPU 进程列表(按 PID、GPU 编号、用户或进程名过滤),按显存占用排序 + +如果远端没有 NVIDIA GPU 或缺少 `nvidia-smi`,面板会给出对应的空状态提示。 + +#### 进程管理 + +**进程管理** 面板显示远端主机的实时进程列表,默认关闭,可在 **设置 → 终端** 中开启 **显示进程管理**(默认轮询间隔 5 秒)。 + +主要能力: + +- 进程总数与搜索框(可按 PID、用户、状态、命令、完整命令行过滤) +- 自适应布局,根据面板宽度增减列;可按进程名、PID、CPU%、内存%、用户排序 +- 展开某个进程可查看 PID/PPID、用户、状态、CPU%、内存%、RSS、运行时长与完整命令行,并支持调整 nice 值(`-20` 到 `19`)后 **应用**(renice) +- 行操作菜单可复制 PID / 命令,或发送 `TERM` / `HUP` / `STOP` / `CONT` 信号;`KILL` 会先弹出确认对话框并展示对应的 `kill` 命令 + +若远端主机不支持进程查询,面板会给出单独的提示。 + +#### Docker 管理 + +**Docker 管理** 面板用于管理远端主机上的 Docker,默认关闭,可在 **设置 → 终端** 中开启 **显示 Docker 管理**(默认轮询间隔 10 秒)。 + +主要能力: + +- 概览:运行中 / 已停止容器数、镜像数,标题栏显示 Docker 引擎版本 +- 全局搜索,以及容器、镜像、数据卷、网络、Compose(可用时)等标签页,标签过多时收进 **更多** 下拉 +- **容器**:按状态排序的虚拟化列表,行菜单可查看日志(在终端里运行 `docker logs -f`)、进入容器(打开 shell)、启动 / 停止 / 重启 / 杀死(确认)/ 删除(确认);点击行可打开实时刷新的详情对话框 +- **镜像 / 数据卷 / 网络**:按需加载,每行支持删除(确认) +- **Compose**:列出项目,展开后按需加载服务,支持项目级 up / restart / down 与服务级 logs / enter / up / stop / restart +- **更多** 菜单提供 `docker system prune`(危险操作,需确认) + +日志与进入容器会发送到真实的终端会话中执行;删除、杀死、Compose down、prune 等破坏性操作都会通过确认对话框展示将要执行的具体命令。 + ## 翻译与在线搜索 在终端中选中文本后,你可以直接通过右键菜单: diff --git a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/file-transfer.md b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/file-transfer.md index fb3126b8..0ecb9d46 100644 --- a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/file-transfer.md +++ b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/file-transfer.md @@ -123,6 +123,24 @@ If you often sync the same directories in batches, tune the default conflict str The newer SFTP backend improves directory handling, symlinks, known-size downloads, and large uploads. You usually do not need to think about the implementation details; the visible result is clearer speed feedback, more specific errors, and directory/symlink behavior that is closer to OpenSSH. +NyaTerm also limits how many SFTP channels run concurrently on a single SSH connection, and automatically retries with backoff when a channel open hits a transient failure. This keeps multiple file operations on the same host more stable, so a momentary shortage of channel resources is less likely to surface as an error. These are backend behaviors with no settings to configure. + +## Zmodem transfers (rz / sz) + +Besides SFTP, NyaTerm supports the Zmodem transfers common in the terminal — the ones triggered when you run `rz` (upload to the remote) or `sz` (download from the remote) on the host. + +- When `rz` is detected, NyaTerm prompts you to pick the local files to upload; before uploading it probes the remote directory for name conflicts and resolves them +- When `sz` is detected, NyaTerm prompts you for a local save directory +- Zmodem transfers appear as items in the transfer queue with live progress + +Note that the controls available for Zmodem transfers differ from regular SFTP transfers: + +- Zmodem items **do not** support pause, resume, retry, or cancel +- Once a transfer finishes, you can only remove it from the list +- The panel's **Pause all / Resume all / Retry all** actions skip Zmodem items automatically + +This is because the Zmodem protocol is driven directly by both ends of the terminal; NyaTerm only handles progress display and file selection, and does not intervene in the protocol's own pause/resume behavior. + ## Sync with terminal paths The file explorer can work together with the current SSH terminal path: @@ -143,6 +161,8 @@ This is one of NyaTerm's most practical workflows for real operations work. 3. A file watcher is started 4. After you save in your local editor, NyaTerm opens an upload prompt +NyaTerm fingerprints the watched file by content (it hashes the content for smaller files and falls back to size and modification time for larger ones). The upload prompt only fires when the file's **content** actually changes; saves that only touch the timestamp or that write identical content will not trigger a spurious upload. This also handles atomic saves (write a temp file, then rename) correctly. + ### Upload prompt window After the file changes, you can choose: diff --git a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/layout-and-workspace.md b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/layout-and-workspace.md index 22b05096..55ffcde3 100644 --- a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/layout-and-workspace.md +++ b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/layout-and-workspace.md @@ -111,10 +111,12 @@ The right side is mainly for live state and navigation: - Saved connections - Active sessions - Command history -- Resource monitor +- Resource monitor, GPU monitor, process manager, and Docker manager (SSH sessions) If your workflow is "pick a connection, then inspect live state," this split feels natural. +The GPU monitor, process manager, and Docker manager panels are off by default; enable them per panel in **Settings → Terminal**. When a panel is disabled its activity-bar icon is hidden, and monitor panels only bind to a genuinely active SSH session. + ## Bottom helper area The bottom area is used for features that do not need to permanently occupy a sidebar, such as: diff --git a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/session-types.md b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/session-types.md index 1133f958..25ccc593 100644 --- a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/session-types.md +++ b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/session-types.md @@ -17,7 +17,7 @@ Understanding the differences helps explain why some panels or enhancements only | Session Type | Typical scenario | Key capabilities | |--------------|------------------|------------------| -| SSH | Remote Linux / Unix administration | SFTP, OTP, resource monitoring, proxy, jump host, tunnels | +| SSH | Remote Linux / Unix administration | SFTP, OTP, resource / GPU / process / Docker monitoring, proxy, jump host, tunnels, algorithm preferences | | Local Terminal | Local shell work, scripts, builds | Shared terminal UI, command history, split panes | | Telnet | Legacy devices, lab environments, compatibility troubleshooting | Terminal workspace features with `Backspace Mode`, but not SSH-only features | | Serial | Routers, switches, boards, embedded debug ports | Serial port settings, `Backspace Mode`, and terminal workspace features | @@ -29,8 +29,9 @@ SSH is the most capable session type in NyaTerm. It is the best fit when you nee - Log in to remote Linux / Unix hosts - Browse and transfer remote files - Use OTP, jump hosts, or proxies -- Watch remote resource statistics +- Watch remote resource, GPU, process, and Docker monitoring - Configure port tunnels +- Fine-tune negotiated SSH algorithms If you need any of these, use **SSH** first: diff --git a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/ssh-connection.md b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/ssh-connection.md index a00f37bf..e7ed7d22 100644 --- a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/ssh-connection.md +++ b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/ssh-connection.md @@ -7,11 +7,12 @@ sidebar_position: 1 SSH is still NyaTerm's most complete session type. Beyond a basic login, an SSH connection can also be tied to: - SFTP file explorer -- Remote resource monitoring +- Remote resource, GPU, process, and Docker monitoring - Proxy - Jump host - OTP binding and auto-fill - Port tunnels +- SSH algorithm preferences If you are new to NyaTerm, it usually makes sense to configure SSH first, then expand into file workflows, terminal enhancements, and network features. @@ -135,6 +136,22 @@ Remote server requirements: If you need to override the local DISPLAY value, set **Settings → Terminal → Local X11 DISPLAY**. Common values are `localhost:0` on Windows and `:0` on Linux/macOS. +### SSH algorithm preferences + +You can control, per connection, which encryption algorithms are negotiated during the SSH handshake. This lives in the **SSH Algorithms** card under Advanced Configuration and offers three modes: + +- **Compatible (default)**: uses a broad algorithm list including some legacy entries, so connections to older servers or network gear still succeed +- **Secure**: uses only modern algorithms and excludes legacy fallbacks +- **Custom**: pick and reorder algorithms across four categories — **key exchange / ciphers / MACs / host keys** + +Each algorithm carries a risk label: + +- **Modern** (green) +- **Legacy** (amber, e.g. `ssh-rsa`, `*-cbc`) +- **Insecure** (red, e.g. `3des-cbc`, `hmac-sha1`, `ssh-dss`) + +When you save a custom configuration, NyaTerm validates that each category is non-empty and rejects unknown algorithm names. If you are unsure what to pick, keep **Compatible** mode; for security-sensitive environments, use **Secure** or a custom, tightened list. + ### Multiplexed SSH sessions NyaTerm can multiplex multiple terminal sessions over a single SSH connection. Opening additional terminals to the same host reuses the existing authenticated connection instead of re-authenticating each time. @@ -170,6 +187,34 @@ Common operations include: If you manage many hosts, using groups, icons, and descriptions helps separate environments, projects, and roles. +## Temporary SSH links + +If you just want a one-off connection without saving it, use a **temporary SSH link**. Open the dialog from the Saved Connections panel (also reachable via a global keyboard shortcut) and paste an address to start a throwaway session. + +Two input forms are supported: + +- `ssh://user@host:port` URLs +- `ssh [-p port] [-l user] user@host` command strings + +Conventions and limits: + +- Default username is `root` and default port is `22` +- Uses password authentication, with no proxy, jump host, post-login command, or X11 +- For safety, inline passwords (`user:pass@`) and unsupported options such as `-J`, `-L/-R/-D`, `-i`, and `-o ProxyJump/ProxyCommand` are rejected with a specific error message + +A temporary session never becomes a saved connection: NyaTerm strips the connection ID, proxy, jump host, post-login command, X11, and algorithm preferences, so it stays a one-off session. + +## Session input synchronization + +When you need to run the same operation on several hosts at once, use **session input sync groups** to broadcast what you type in one terminal to multiple sessions. + +- Create named, colored sync groups in the sync group manager dialog and add currently live sessions to a group +- A group can be enabled or disabled as a whole, and individual sessions can be paused +- While a session belongs to an enabled group, keystrokes in one terminal are mirrored to the other non-paused sessions in the group; command preview and history are recorded only on the origin session where you actually type +- The bottom **Send Command** panel adds a target selector: current session, all sessions, or a specific `Group: `. Group targets are filtered by session type (Serial vs shell) and exclude paused or duplicate sessions + +Sync groups are runtime state and are not persisted, so you need to recreate them after restarting the app. + ## Import sessions from other clients NyaTerm can import session definitions from other terminal clients. Current supported imports are: diff --git a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/terminal.md b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/terminal.md index e615017f..201c3a72 100644 --- a/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/terminal.md +++ b/docs-site/i18n/en/docusaurus-plugin-content-docs/current/guide/terminal.md @@ -174,14 +174,23 @@ For SSH sessions, you can configure a Keep-Alive interval in **Settings → Term - Set it to `0` to disable it - Useful for reducing idle disconnects on long-lived sessions -### Remote resource monitoring +### Remote host monitoring panels + +NyaTerm provides four right-side monitoring panels for SSH sessions: **Resource Monitor**, **GPU Monitor**, **Process Manager**, and **Docker Manager**. They share some behavior: + +- They only make sense for an **SSH session**, and bind only to a genuinely active SSH session +- Each is shown or hidden by its own toggle in **Settings → Terminal**; turning a toggle off also hides its activity-bar icon +- Poll intervals are adjustable, ranging from **3 to 120 seconds** +- A panel stops refreshing after several consecutive polling failures, to avoid repeatedly hitting an unsupported host + +#### Resource Monitor Remote resource monitoring is on by default. To see data, both of these must be true: 1. The current tab is an **SSH session** 2. **Show Remote Resource Stats** is enabled in **Settings → Terminal** -When enabled, the **Resource Monitor** icon appears in the right activity bar and the panel polls the host on the configured interval. The default interval is **3 seconds**, and you can change it manually. Turning the setting off also hides the icon. +When enabled, the **Resource Monitor** icon appears in the right activity bar and the panel polls the host on the configured interval. The default interval is **3 seconds**, and you can change it manually. The panel displays: @@ -191,6 +200,47 @@ The panel displays: - Memory usage - Network throughput +#### GPU Monitor + +The **GPU Monitor** panel shows NVIDIA GPU status on the remote host. It is off by default; enable **Show GPU Monitor** in **Settings → Terminal** (default poll interval 3 seconds). + +The panel displays: + +- Driver version and CUDA version +- Summary: GPU count, highest utilization, memory usage, highest temperature +- Per-GPU card: index, model, performance state (pstate), utilization and memory bars; expand for UUID, temperature, power draw, fan speed, and free memory. Utilization above **70% / 90%** is color-coded differently +- A searchable GPU process list (filter by PID, GPU index, user, or process name), sorted by GPU memory used + +If the remote host has no NVIDIA GPU or is missing `nvidia-smi`, the panel shows a matching empty state. + +#### Process Manager + +The **Process Manager** panel shows a live process list from the remote host. It is off by default; enable **Show Process Manager** in **Settings → Terminal** (default poll interval 5 seconds). + +Key capabilities: + +- Total process count and a search box (filter by PID, user, state, command, or full command line) +- Adaptive layout that adds or drops columns based on panel width; sort by process name, PID, CPU%, MEM%, or user +- Expand a process for PID/PPID, user, state, CPU%, memory%, RSS, elapsed time, and the full command line, plus adjusting the nice value (`-20` to `19`) and clicking **Apply** (renice) +- A row action menu to copy the PID or command, or send `TERM` / `HUP` / `STOP` / `CONT` signals; `KILL` first opens a confirmation dialog showing the `kill` command + +If the remote host does not support process queries, the panel shows a distinct message. + +#### Docker Manager + +The **Docker Manager** panel manages Docker on the remote host. It is off by default; enable **Show Docker Manager** in **Settings → Terminal** (default poll interval 10 seconds). + +Key capabilities: + +- Overview: running / stopped container counts and image count, with the Docker engine version in the header +- Global search plus tabs for containers, images, volumes, networks, and Compose (when available); extra tabs collapse into a **More** dropdown +- **Containers**: a state-sorted virtualized list; a row menu views logs (runs `docker logs -f` in the terminal), enters the container (opens a shell), starts / stops / restarts / kills (confirm) / removes (confirm); clicking a row opens a live-refreshing details dialog +- **Images / Volumes / Networks**: fetched on demand, each row supports removal (confirm) +- **Compose**: lists projects; expand to lazily load services; supports project-level up / restart / down and service-level logs / enter / up / stop / restart +- The **More** menu offers `docker system prune` (destructive, confirmed) + +Logs and enter-container actions run in the real terminal session; remove, kill, Compose down, prune, and other destructive operations route through a confirmation dialog showing the exact command. + ## Translation and online search After selecting text in the terminal, you can use the context menu to: