Repository navigation
Releases: FxRayHughes/worktreecli
Releases · FxRayHughes/worktreecli
Release list
v0.1.7 — create 页进度可见 + 中止真正生效
修复
- 创建页看不出脚本在不在跑:
onCreate的输出之前被整个丢掉,界面只有一行"执行环境 onCreate 脚本..."加个转圈 —— 一个要下载一小时的pnpm install和真死锁长得一模一样。现在保留脚本最新一行输出(剥 ANSI、按\r/\n断行),并显示已运行时长。 - 退出后脚本变孤儿继续跑:之前
Esc/q只是关掉 TUI,onCreate里的 pnpm / node 还在后台跑(连ctrl+c也一样)。重试几次就攒出多个并发任务互相抢带宽。现在脚本跑在独立进程组里,中止时kill(-pgid)(Windows 走taskkill /T),子孙进程一起收掉。 - spawn 模式会卡住 UI:会话启动是在
Update里同步跑的,开新终端窗口那一步(osascript / open)会把整个界面冻住。现在走异步tea.Cmd。 - macOS spawn 改为 open 优先:AppleScript 会弹「自动化」授权框,而那个框常常藏在终端窗口后面,一直挡着启动流程。现在默认走
open+.command包装脚本(不需要任何授权),AppleScript 退为兜底。
改进
- 执行中页面新增
已运行 mm:ss和› <脚本最新输出>两行,能区分"慢"和"卡死" - 提示文案改为"按 Esc/q 中止脚本并退出",与真实行为一致
- 脚本输出不进事件循环(
pnpm install一秒几百行会把 UI 冲垮),只做单行快照
下载
go install github.com/FxRayHughes/worktreecli@latestv0.1.6 — macOS spawn 修复
修复
- macOS 下 spawn 打不开新终端:
osascript之前用cmd.Start()且不 Wait,AppleScript 的报错被完全吞掉。最常见的失败是「自动化」权限(TCC)被拒的-1743—— 在 iTerm / Ghostty / Warp / VS Code 里跑 wtc 去tell application "Terminal",系统弹窗点过一次"不允许"就永久静默失败。表现为界面照样提示"已打开新终端窗口",实际什么都没发生,也看不到任何线索。
改进
- osascript 改为同步执行 + 15s 超时 + 捕获 stderr:失败能看到真正原因,并正常回退到 print 模式
- 新增一条不需要任何授权的兜底路径:写临时
.command包装脚本用open -a打开,不走 Apple Events,权限被拒也能开窗 - 识别 iTerm(
TERM_PROGRAM/__CFBundleIdentifier),优先在你当前用的终端里开窗;其他终端兜底 Terminal.app - 兜底路径走
$SHELL -i保证 rc 被加载,onSpawned里写nvm use/ conda 这类命令仍然有效;临时文件后台延迟 30s 自删 - 提示里显示实际使用的终端:
已打开新终端窗口 (iTerm) - AppleScript 字面量补上反斜杠转义(原来只转
",路径带\会坏);Linux 分支的Start()错误不再丢
下载
go install github.com/FxRayHughes/worktreecli@latestv0.1.5 — 并发删除竞态修复
修复
- 连续删除 worktree 时刷新导致'复活':之前每个 removeDoneMsg 都触发全量列表刷新;刷新是从 git 实时读磁盘的,而后台其它删除还在跑,导致某些已从 UI 消失的项被'刷回来'。现在管理面板维护 pendingRemoves 集合追踪未完成的删除任务,刷新时过滤,全部完成才刷一次。
下载
go install github.com/FxRayHughes/worktreecli@latestv0.1.4 — 分支页新增切换并拉取
变化
- f 键行为修正:光标下的分支被某个 worktree 占用时,之前会报
refusing to fetch into branch 'refs/heads/develop' checked out at ...。现在自动跑到那个 worktree 目录里git pull --ff-only,用户看不到错误。 - 新增 c 键:切换并拉取:显式切换 wtc 所在目录到目标分支并 pull 最新。远程分支「origin/xxx」会自动建立本地跟踪分支。这是一个会改变当前工作目录状态的操作,请确保没有未提交更改。
- 移除 Enter 时的隐式 fetch:v0.1.2 引入的进下一步时自动拉取改回显式:用户按 f 才拉。避免网络问题阻塞创建流程。
下载
go install github.com/FxRayHughes/worktreecli@latest或选平台二进制。
v0.1.3 — 删除即时反馈
优化
- 删除 worktree 立即从 UI 移除:按 d 后目标项立刻从列表消失,log 区显示正在后台删除提示;真正的
git worktree remove+ 目录清理 +git branch -D在后台 goroutine 里跑完再刷新列表。之前遇到文件锁需要 3-5 秒重试才能看到反馈,现在瞬间响应。
下载
go install github.com/FxRayHughes/worktreecli@latest或从下方选平台二进制。
v0.1.2 — fetch 强制拉最新 + 删 worktree 顺带删分支
修复
- 选中基线分支时强制拉最新:之前 f 拉取远程只更新 refs/remotes/origin/*,本地分支不动;现在选中一个本地分支准备下一步时,若远程有对应分支,用
git fetch origin <b>:<b>强推本地引用到远程最新,避免从过期基线创建 worktree。 - 删 worktree 顺带删本地分支:管理面板删除 worktree 后自动调
git branch -D <branch>,不再残留一堆wt/*分支。
下载
选对应平台二进制放进 PATH 即可。或者:
go install github.com/FxRayHughes/worktreecli@latest从 v0.1.1 升级
直接覆盖二进制。配置结构不变。
v0.1.1 — 交互修复
修复
- 管理面板删除按钮失效:
manageModel/envListModel/configModel里的strings.Builder触发 Bubble Tea Model 值拷贝导致的illegal use of non-zero Builder copied by value。全部换成string字段。 - 环境管理点击无反应:现在真正调用系统关联程序打开 yml 文件。Windows 用
rundll32 url.dll,FileProtocolHandler,macOS 用open,Linux 用xdg-open。 - 非 git 目录无法打开 wtc:现在允许进入 TUI 主菜单,可管理环境与设置;创建/管理工作树在此模式下自动隐藏。
下载
选对应平台二进制放进 PATH 即可。或者:
go install github.com/FxRayHughes/worktreecli@latest从 v0.1.0 升级
Windows 用户直接覆盖 wtc.exe,其他平台 chmod +x 后覆盖即可。配置文件 ~/.wtc/config.yml 结构不变,无需迁移。
v0.1.0 — first release
首个公开版本。
主要功能
- TUI 主循环(Bubble Tea + Lipgloss,蓝色主题)
- 创建流程: 基线分支 → 环境 → 命名 → 会话模式 → 确认
- 管理面板: 列出、进入、删除已有 worktree
- 三种会话模式:
print/spawn/eval - 环境 yml:
onCreate/onSpawned/onCleanup每个都支持 default / macos / linux / windows 四平台脚本块 wtc over: 在 worktree 内一键删除当前工作树(含 kill 占用进程兜底 + 孤立残留强删)- 键盘 + 鼠标双操作:滚轮滚列表、双击选中、顶部按钮条可点击
- 跨平台: Windows / macOS / Linux
安装
从下方下载对应平台二进制文件,加进 PATH 即可。或者:
go install github.com/FxRayHughes/worktreecli@latest快速上手
cd /your/git/repo
wtc详见 README。