Repository navigation
JShell v0.1.0-beta.4
Pre-release
Pre-release
·
21 commits
to main
since this release
JShell v0.1.0-beta.4
本次更新
- SFTP 工具栏的“重新连接”和“刷新目录”现在使用不同图标,便于快速区分连接操作与目录读取操作。
- SFTP 握手可忽略远程非交互 shell 在协议帧前意外输出的少量文本,并在最多 4096 字节内严格查找 SFTP v3
VERSION帧。 - SFTP 首次连接改为等待对应 SSH 终端进入
Connected状态后再启动;手动重试 SSH 时,共享 SFTP 连接也会等待准确的终端重新连通后再重连。 - 新增 SFTP 目录跟随设置,提供“关闭”“切换终端时跟随”和“即时跟随”三种模式。默认使用“切换终端时跟随”。
- 切换 SSH 终端时,SFTP 面板会使用该终端最近一次有效工作目录;即时跟随模式会在终端工作目录变化时同步更新。
- 目录跟随选项位于“设置 > 常规 > SSH / SFTP”。选择“关闭”只会停止自动跟随,手动同步、路径输入、目录导航和刷新仍可正常使用。
连接与协议处理
- 握手前缀兼容不依赖某一台服务器的固定提示文本,只接受结构完整、版本为 3 且扩展字段合法的 SFTP
VERSION帧,避免将任意输出误判为协议数据。 - 如果在限制范围内无法对齐有效协议帧,SFTP 会停止自动重连并显示需要手动处理的连接状态。修正远程 shell 的非交互输出后,可使用“重新连接”再次尝试。
- SSH 终端与 SFTP 使用独立连接;目录跟随只调度 SFTP 目录读取,不向 SSH 终端连接发送额外请求。
目录跟随规则
- 自动目录读取采用单飞机制:同一连接组同时只保留一个执行中的请求,等待期间只保留最新目录,避免高延迟环境中堆积过时请求。
- 自动结果同时校验请求 ID 和 SFTP 连接代次;旧请求或旧连接返回的结果不会覆盖当前目录、选择项或预览。
- 用户手动输入路径、进入目录或刷新时会取消待处理的自动跟随意图;已发出的旧自动请求即使稍后返回,也不会覆盖用户选择。
- 工作目录来自终端标题中的有效路径,支持
ASHELL_CWD:/path、绝对路径、user@host:/path(包括 IPv6 主机)以及~/~/...。相对路径、URI 或无法可靠识别的标题会被忽略,SFTP 保持当前目录不变。 - 目录跟随不会轮询 SSH,也不会在终端中执行
pwd。SFTP 暂时不可用时只保留最新目标,连接恢复后再同步,避免额外请求影响 SSH 终端连接。 - 自动跟随的目标不存在或无权访问时,SFTP 会保留当前目录并显示错误,不会用失败结果覆盖当前文件列表。
- 即时跟随请求达到 3 秒仍未完成时,当前会话会降级为“切换终端时跟随”,优先限制后台 SFTP 工作量。该会话不会自动恢复即时跟随,必须由用户重新选择“即时跟随”。
- 旧配置缺少该字段或包含未知值时,会回退到“切换终端时跟随”;该偏好仅保存在当前设备,不加入便携同步数据。
升级与故障处理
从旧版本升级不需要迁移配置。若服务器仍提示 SFTP 握手输出错误,请检查远程 shell 启动脚本,确保非交互会话不输出欢迎语、状态信息或调试文本;处理完成后在 SFTP 工具栏手动重新连接。