Skip to content

Releases

tdev v0.7.0

Choose a tag to compare

@github-actions github-actions released this 13 Nov 09:53

v0.7.0

增加项目向导目录创建确认,统一由客户端维护终端标题与未读提醒。

项目目录创建

  • create、edit、setup 和 open 缺失项目时,目录不存在会询问是否创建,默认选择否。确认后在项目所在机器递归创建目录,支持 ~/、中文、空格和引号。
  • 创建目录立即生效,随后取消向导仍保留目录;项目配置在最终保存确认后写入。非交互 --directory 要求目录已存在。

终端标题与提醒

  • 本机和 SSH 交互附着显示 tdev: server/project,有待查看提醒时加 [!];切换托管 session 后更新项目或 scratch 名称。同一远端的不同客户端保留各自的连接名称。
  • 客户端过滤程序及远端的 OSC 0/1/2 标题写入,支持 tmux/screen DCS 透传包裹;OSC 8 超链接、OSC 52 剪贴板和独立 BEL 保持透传。
  • 本机附着使用独立 PTY,中继输入和窗口大小,退出时恢复终端。远端继续使用系统 OpenSSH;API 附着提供原始终端流。
  • tmux 原生及失焦提醒按窗口合并,逐个查看后清除,重新附着读取未读状态。振铃遵循用户的 visual-bell 设置与终端配置。

升级与回滚

先升级本机客户端,再升级远端:

tdev upgrade -y
tdev upgrade --remote dev -y

install、upgrade 和相同内容重装自动执行 post-install。其他配置根分别处理;从 v0.5.0 或更早版本首次升级后,用新二进制补跑 tdev post-install,远端使用 tdev post-install --remote dev。按 reattach_required 报告结束旧附着,再用新版客户端重新 open。

tmux runtime schema 从 1 升至 2,迁移保留 pane、进程、generation、用户 hook 和未读标记。机器协议与项目配置 schema 保持为 1,沿用现有签名公钥。新版客户端连接旧服务端时保留本地标题,动态提醒需升级服务端;直接用原生 tmux 附着会显示状态协议标记。

已迁移的 schema 2 会话由支持该 schema 的版本管理。回滚到 v0.6.0 后,post-install 返回部分成功,旧程序重新附着返回兼容错误;原会话和进程保留。需要继续原会话时,重新安装 v0.7.0 或支持 schema 2 的兼容版本,再执行 post-install 和 open。自动逆迁移尚未实现。

验证范围

Linux 的真实隔离 SSH/tmux、PTY 生命周期、标题过滤、目录向导、安装与转发回归通过,Linux/macOS 的 amd64/arm64 完成交叉构建。macOS 原生终端、完整嵌套 tmux 的最终交互及真实历史签名包的完整回滚链仍待验证。详细结果见验收记录。

tdev v0.6.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 13:27

v0.6.0

增加安装后处理、运行中 tmux 配置迁移和服务器临时转发,修复 SSH 扩展通道类型解析。

临时转发与命令迁移

  • tdev forward [server] -L/-R ... 创建服务器临时转发,至少提供一条规则。默认等监听就绪后返回,由当前客户端 daemon 后台维持;--foreground 前台运行,Ctrl-C 释放本次转发。
  • 每次调用生成 forward-… 名称,多条规则作为一组管理。通过 tdev ls --type forward 查看,使用 tdev stop <服务器>/<名称> 停止。后台组支持 daemon restart 恢复,daemon stop 清除恢复登记;启动批次失败清理整组。
  • forward 的位置参数由项目改为服务器。原 tdev forward <项目> 改用 tdev open <服务器>/<项目> --only forward;原 forward add/remove 改用 tdev edit <服务器>/<项目> 或 edit --stdin。删除项目映射时清理当前客户端对应的 override。
  • 临时转发支持本机 TCP 和远端 SSH L/R;已有 daemon 缺少临时转发能力时提示执行 tdev daemon restart。

安装后处理与 tmux 迁移

  • install、upgrade、回滚及签名安装脚本在二进制提交后调用目标版本的 post-install hooks,依次迁移当前配置的托管 tmux 会话、按需刷新运行中的 daemon。相同内容重装也会补跑;已停止的 daemon 保持停止。
  • 增加 tdev post-install、tdev post-install --remote <服务器> 和机器入口 api binary post-install。各项独立报告结果,前一项失败后继续后续处理;失败返回 PARTIAL_SUCCESS,保留已安装二进制并支持重试。
  • tmux 运行配置独立记录 schema,迁移保留 pane、进程、session generation、用户 hooks 和未读提醒。高于当前支持的 schema 返回兼容错误。缺少归属的旧 scratch 通过显式附着或 --adopt-legacy-scratch 认领。

SSH 通道解析

兼容 session:command、session:shell 和 session:subsystem:<name>,统一保存基础类型 session;丢弃扩展描述及子系统参数,保留通道状态与缓冲字节。

首次升级步骤

从 v0.5.0 或更早的客户端升级后,用新二进制补跑一次:

tdev post-install
# 已升级的远端
tdev post-install --remote dev

其他配置根附加对应的 --config-dir。首次开启 tmux 焦点上报时,已附着的客户端按处理报告重新附着。回滚到缺少 post-install 入口的历史版本会报告部分成功,已恢复的二进制保留。

机器协议与项目配置 schema 保持为 1,新增 post-install-v1 能力,沿用现有安装签名公钥。真实 SSH/PTY、tmux、签名安装与转发覆盖及平台限制见验收记录。

tdev v0.5.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 17:52

v0.5.0

增加本地连接监督、按功能打开工作区和连接快照,完善升级期间的终端与映射恢复。

连接与工作区

  • 本地 daemon 管理系统 OpenSSH 控制 master,API、补全与交互终端复用连接。转发、SSHFS 和文件传输沿用独立传输;远端继续使用系统 OpenSSH 和按次 tdev API。
  • 增加 tdev daemon start|restart|stop|status。并发启动保持单实例,重启恢复后台转发及活跃 open 的使用权;显式 stop 保持停止状态。
  • tdev open --only shell|forward|sshfs 支持逗号组合。只打开 forward/sshfs 时支持非交互与 JSON,资源后台保留;随 shell 打开的临时资源由多个窗口共享,最后一个使用者退出后清理。默认 open 继续打开 shell 和 forward,--mount 额外打开 SSHFS。web 保留为后续功能。
  • tmux 标题显示 session/window,存在窗口提醒时附加 [!]。失焦当前窗口的 bell 保留补充标记,聚焦及逐窗口切换按窗口清除。

进程与通道快照

  • 增加 tdev ps,按机器、daemon、SSH 连接和通道展示当前用户的运行状态,包含 PID、用途、项目与客户端 PID。默认汇总本机和已登记远端,支持 --server 与 --json。
  • 查询保持已停止的 daemon 状态。远端不可达时保留其他机器的结果并返回部分失败,JSON 在 error.details 中保留完整快照。
  • OpenSSH 10.3+ 可提供实际 SSH 通道报告;旧版展示 tdev 的操作分配记录,并明确标记实际统计不可用。原始通道描述与应用命令不进入快照。已有旧 daemon 需用新版 restart 启用明细。

升级与恢复

  • upgrade 及回滚在操作前提示端口映射可能短暂中断,-y 与 JSON 模式保留 stderr 提示。
  • 本地原位更新成功后,用安装后的二进制重启当前配置根下运行中的 daemon。相同内容的重复升级、签名失败、取消和已停止的 daemon 保持原状。其他配置根需分别 restart。
  • 远端升级保留现有 SSH 连接和 tmux 会话;后续 API 与断线重连执行新远端程序,并核对原 session ID/generation。协议不兼容时提示安装兼容版本后重新 open。
  • 修复 R 映射断线后,旧远端监听尚未释放导致恢复永久失败的问题。曾成功建立的 R 映射按原重连预算重试绑定,首次端口冲突仍直接报错。

首次升级步骤

从缺少自动刷新逻辑的旧客户端升级后,用新二进制执行一次:

tdev daemon restart

为其他配置根运行时,附加对应的 --config-dir。重启期间,映射和终端连接可能短暂中断,随后按各自重连策略恢复;自动重连失败时重新运行 tdev open <服务器>/<项目名>。tdev upgrade --remote <服务器> 保留现有远端附着,远端旧 daemon 的明细通过在该机器执行新版 restart 启用。

机器协议与配置 schema 保持为 1,新增 ps-v1 能力,沿用现有安装签名公钥。真实 SSH/PTY、tmux、签名升级及双向转发覆盖与平台限制见验收记录。

tdev v0.4.1

Choose a tag to compare

@github-actions github-actions released this 08 Nov 18:45

v0.4.1

修复升级回滚与交互 shell 启动命令,优化未运行项目的状态文案。

  • 修复旧安装器在二进制被外部替换后留下过期备份收据,导致后续安装、升级或回滚失败的问题。迁移时校验备份内容与安装目标,在过期收据处截断回滚链,保留原始备份和历史文件。新安装仅关联与实际备份内容一致的收据。
  • pane 使用 tmux 的默认交互 shell 和启动配置,初始化后执行声明命令,支持初始化脚本中定义的工具。命令结束后可继续使用 shell;显式 exit 结束 shell 时保留 pane 输出与退出状态。适用于单窗口与分屏布局。
  • ls 文本输出将尚未启动或已停止的项目显示为 inactive;JSON、服务端状态与缓存继续使用 missing。

机器协议、配置 schema 均保持为 1,沿用现有安装签名公钥。环境覆盖与人工验收限制见验收记录。

tdev v0.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 17:16

v0.4.0

统一安装状态与回滚管理,调整 tmux 会话命名,简化本机项目转发和临时会话列表。

  • 安装收据与备份统一存放在 ${XDG_STATE_HOME:-~/.local/state}/tdev/installations/<安装目标路径的 SHA256>/。旧收据及其引用的备份链在安装或回滚时自动校验迁移;安装目标各自独立,安装锁按目标共享。
  • 重复安装相同二进制时保留原文件、修改时间和已有回滚链,按需恢复执行权限、更新可信公钥和下载源;内容变化时才创建新备份。
  • 每个安装目标保留当前版本之前的两个版本,可连续回滚两次。成功安装或回滚后清理超出范围的安装器备份。
  • 新建项目 tmux 会话使用 tdev-project-<name>。名称被其他会话占用时使用 tdev-project-<UUID>,UUID 去掉连字符;已有托管会话继续按项目 UUID 复用,保留原会话和连接。
  • scratch 会话使用 tdev-scratch-<name>,省略名称时自动生成 UUID。ls 每个 scratch 会话显示一行。
  • open local/<project> 自动跳过目标为 localhost、127.0.0.1 和 ::1 的转发,适用于 L/R 方向。显式 forward 命令及远端项目沿用已有行为。
  • 增加安装幂等、状态迁移、历史备份裁剪、本机自动转发及新旧会话命名回归。GitHub Actions 执行真实 SSH/tmux 竞态测试、四平台签名发布及公开附件下载验证。

机器协议、配置 schema 均保持为 1,沿用现有安装签名公钥。回退到仅支持旧收据路径的历史版本后,使用新版安装脚本再次升级。macOS 原生交互、真实跨文件系统状态迁移及中断恢复等覆盖限制见验收记录。

tdev v0.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 09:12

v0.3.0

新增 tmux 分屏布局保存与恢复,改进项目列表和诊断输出。

  • save 保存横向、纵向及嵌套分屏、比例和各 pane 的目录,新建会话恢复布局。按稳定 pane ID 保留声明的启动命令,手动新增 pane 保存为空 shell。
  • 窗口配置支持 layout,可通过 edit --stdin 设置;交互编辑保留已有分屏。单 pane 窗口继续使用原配置格式。
  • 增加 pane-layout-v1 能力检查,携带分屏配置的远端写入会在服务端读取输入前验证兼容性。使用分屏配置的客户端和服务端均需支持该能力;布局比例按可用终端空间近似恢复。
  • ls 使用 SERVER、NAME、TYPE、STATUS、DIR、FORWARDS 六列表格,支持中文对齐。端口映射以箭头展示,多条映射分行排列;映射 ID 可从 show 或 override 查看。
  • 列表刷新完成后移除 syncing 提示,服务器错误及缓存时间集中展示。
  • doctor 默认用中文概括检查结果,解释依赖缺失、会话警告、覆盖配置错误和连接失败的影响及处理建议;离线缓存单独说明,--json 保留结构化数据。
  • 补充真实 SSH/tmux 分屏及诊断集成测试,并更新终端列表回归。

机器协议、配置 schema 均保持为 1,沿用现有安装签名公钥。已有运行中的会话继续使用当前布局,新建会话使用保存的分屏配置。

tdev v0.0.3

Choose a tag to compare

@JourneyBean JourneyBean released this 03 Nov 15:04

v0.0.3

tdev setup 改为连接向导,配合实时远端发现和本机端口偏好,减少首次连接与重复配置。

  • 自动列出已有 tdev 服务器和 SSH Host,支持 Include 文件、搜索和直接添加 user@host:port。
  • 连接后读取目标设备已有项目;保留现有连接、远端配置目录与本机偏好。远端缺少 tdev 时可确认安装官方签名版本。
  • 零项目时直接引导创建;通过 tdev create 创建项目,project list/show/update、project window 与 project forward 经 SSH 管理远端项目定义。
  • 直接 tdev open 打开尚未配置的项目时,可跟随向导填写远端目录,创建后继续进入工作区。
  • 向导输入支持方向键编辑;远端目录支持 Tab 补全及多候选选择,兼容中文、空格和引号。
  • 创建时未指定服务器会先提示选择;输入界面使用 Bubble Tea,候选菜单随终端尺寸调整,长目录名截断展示。
  • 新增 tdev completion bash/zsh,支持命令、选项、服务器名及实时远端项目补全。
  • 安装时可确认并自动配置补全,提供 --completion all 和独立 completion install 命令;保留原 shell 配置与备份,重复运行保持单一区块。
  • 每次 ls、open 都读取远端最新定义,再合并本机 overrides.yaml;没有项目配置缓存。
  • 向导可调整本机监听端口,也可使用 tdev override 查看、修改或重置。覆盖绑定项目 UUID 和稳定 forward ID,避免同名新项目继承旧设置。
  • forward --save 保存本机 -L 偏好,--save-remote 显式保存共享定义。save 保存窗口时保持远端端口定义。
  • ls 默认显示易读列表;--json 保留结构化输出并同时提供 remote_project 和合并后的 project。
tdev upgrade
tdev setup
tdev ls
tdev open my-awsome-project

旧版 client.yaml 保持兼容,本机 override 单独保存。旧客户端忽略该附加文件。

tdev v0.0.2

Choose a tag to compare

@JourneyBean JourneyBean released this 02 Nov 10:51

v0.0.2

提供可直接使用的 macOS/Linux 二进制包和一键安装入口。

curl -fsSL https://github.com/JourneyBean/tdev/releases/latest/download/install.sh | sh
  • Linux/macOS,各提供 amd64 与 arm64 的独立二进制及 .tar.gz 包。
  • 安装脚本自动识别平台,校验内置 SHA-256 和 Ed25519 签名 manifest,再原子安装到 ~/.local/bin/tdev。
  • 正式安装脚本内置发布公钥与四个平台的校验值,普通安装仅需要 curl、系统 shell 和 SHA-256 工具。
  • 默认配置当前 shell 的 PATH,支持 bash、zsh、fish 和 POSIX sh;已有启动文件先备份,重复执行保持幂等。
  • --no-modify-path 跳过 PATH 配置,tdev path --write 可单独设置。
  • 支持带空格、UTF-8 与 shell 特殊字符的安装目录,保留原有 dotfile 的内容、权限及符号链接。

安装完成后打开新终端,或执行安装器输出的 PATH 命令。安装器无法更改父 shell 的当前环境。

下载链接、手动安装与签名信息见安装与下载。

tdev v0.0.1

Choose a tag to compare

@JourneyBean JourneyBean released this 02 Nov 02:02

v0.0.1

tdev 首个版本,通过系统 OpenSSH 和 tmux 组织远端项目工作环境。

  • 项目配置、会话恢复、窗口保存及本地/远端机器接口。
  • 独立 TCP 转发、转发重连和终端重连;重试次数、间隔可配置,重连中 Ctrl-C 可退出。
  • 文件上传/下载,包含暂存、校验、覆盖确认和并发变更检测。
  • SSHFS 挂载、复用、占用检查及卸载;macOS 元数据保护。
  • 四平台二进制、Ed25519 签名发布、安装、升级与回滚。
  • UTF-8、中文、日文、韩文、emoji,以及 macOS 文件名规范化兼容性验证。

目标平台为 Linux/macOS 的 amd64、arm64。原生执行已覆盖 Linux amd64 与
macOS arm64;另外两种架构完成交叉构建。Go 仅为构建依赖。

完整验证结果见验收记录。Linux 真实 FUSE 挂载、GUI 剪贴板、
鼠标和输入法交互尚未实测;HTTP 域名代理留待后续版本。

首次安装必须通过独立可信渠道确认发布公钥,再运行安装器。升级保留备份,
可使用 tdev rollback 回退;不会停止现有 tmux 会话。

当前提供源码归档,签名二进制安装包待配置发布密钥后提供。