Repository navigation
Releases
tdev v0.7.0
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 -yinstall、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
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
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
v0.4.1
修复升级回滚与交互 shell 启动命令,优化未运行项目的状态文案。
- 修复旧安装器在二进制被外部替换后留下过期备份收据,导致后续安装、升级或回滚失败的问题。迁移时校验备份内容与安装目标,在过期收据处截断回滚链,保留原始备份和历史文件。新安装仅关联与实际备份内容一致的收据。
- pane 使用 tmux 的默认交互 shell 和启动配置,初始化后执行声明命令,支持初始化脚本中定义的工具。命令结束后可继续使用 shell;显式
exit结束 shell 时保留 pane 输出与退出状态。适用于单窗口与分屏布局。 ls文本输出将尚未启动或已停止的项目显示为inactive;JSON、服务端状态与缓存继续使用missing。
机器协议、配置 schema 均保持为 1,沿用现有安装签名公钥。环境覆盖与人工验收限制见验收记录。
tdev v0.4.0
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
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
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
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
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 会话。
当前提供源码归档,签名二进制安装包待配置发布密钥后提供。