Bug 修复
1. trellis update 现在真的能把 opencode 的变更推送到已安装的项目(beta.7 的 follow-up)
beta.7 修了 OpenCode 1.2.x 要求的 plugin factory-function shape(在 CLI 模板里)。但已经装了项目的用户跑 trellis update 后反馈 .opencode/plugins/*.js 还是坏的——修复根本没推过去。
根因:packages/cli/src/configurators/index.ts 里 opencode 是这么写的:
collectTemplates——那个函数返回该平台的文件集合,update 拿来做 hash 追踪。opencode 是唯一例外,属于历史遗漏不是设计选择。后果:collectPlatformTemplates("opencode") 返回 undefined,trellis update 静默跳过整个 .opencode/ 子树。任何 CLI 侧的 opencode 改动(plugin 逻辑、agent prompt、lib 工具、package.json deps)init 时能铺下去,update 时推不动。
修复:加 collectOpenCodeTemplates(),遍历 opencode 模板目录返回 { .opencode/agents/*, .opencode/plugins/*, .opencode/lib/*, .opencode/package.json, .opencode/commands/trellis/*, .opencode/skills/*/SKILL.md }。configureOpenCode(init)重构为复用同一套枚举,保证 init 和 update 写入的文件字节级一致。
2. Windows 下 Bash tool cd 之后 hook 路径 ENOENT
一个在 Windows monorepo 下用 Claude Code 的用户反馈:
E:\IdeaProjects\ai-codeview\.claude\...(项目根),不在 frontend/ 下。Claude Code 的 Bash tool 之前执行过 cd frontend/,默认行为是这个 cwd 粘连到后续所有 tool 调用,包括 hook。UserPromptSubmit hook 的命令 python .claude/hooks/inject-workflow-state.py 按粘住的 cwd 解析相对路径 → 找不到文件。
修复:在 .claude/settings.json 的 env block 里 pin CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1:
$CLAUDE_PROJECT_DIR,但放弃了——CC issue #6023 已经证实 $VAR 语法在 Windows cmd/PowerShell 里不展开,那样做反而让 Windows 更惨。
升级
- opencode:< 0.5.0-beta.7 的任何 beta 且配了 opencode,这个版本自动把 3 个 plugin 文件 +
trellis-*agents +lib/trellis-context.js+.opencode/package.json刷到最新模板。未改过的 hash 匹配自动更新;改过的弹标准Modified by youconfirm prompt + diff。 - claude settings:未修改过
.claude/settings.json会自动更新。改过的(比如自己加了 hook)会弹Modified by youprompt——选[1] Overwrite接受新 env block,或[3] Skip然后手动在你自己的 settings 里加"env": { "CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR": "1" }拿到 Windows 修复。
npm install -g @mindfoldhq/trellis@beta