v0.5.0-rc.2 新增 trellis uninstall 命令(#221),并修复 Windows 兼容性(#218)和 Copilot 自定义 agent frontmatter(PR #210)。无新增 migration。
Enhancements
trellis uninstall 命令 (#221)
移除所有 trellis 生成的文件和 .trellis/ 目录。删除清单来自 .trellis/.template-hashes.json;未列入 manifest 的文件不予处理。
输出分两栏:
- Will be deleted —— 纯内容文件(
.py/.md/.ts)+ 被 scrubber 处理后变空的结构化文件 +.trellis/目录本身。 - Will be modified —— 结构化配置文件中只剥离 trellis 的字段,保留用户自定义内容。
Command 匹配规则:以
command 字符串最后一个 whitespace token(脚本路径)作为比对依据。子串出现在其他位置(如 echo 内容)不触发匹配。
执行顺序:scrubber → unlink → cleanupEmptyDirs(清理被删空的子目录)→ managed-root 扫描(清理空的 .claude/ / .cursor/ 等顶层目录)→ rm -rf .trellis/。含用户文件的目录保留。
Manifest 中列出的路径无条件删除,不做 hash 校验。被用户修改过的 trellis 文件同样删除。
新增 23 个测试(15 个 scrubber 单元测试 + 8 个集成测试),全测试套件 830 项通过。
Bug Fixes
Windows python3 → python 写入时替换 (#218、PR #220)
Windows 上无 python3 可执行文件。replacePythonCommandLiterals() 在 process.platform === "win32" 下、init/update 写入时执行:
- 写入时替换 —— 模板源文件保持
python3,实际生成时进行替换。 - Shebang 保留 —— 以
#!开头的行不替换。 - 幂等 ——
python不含python3,多次执行结果一致。 - 覆盖范围 ——
configurators/{claude,codex,copilot,opencode,pi}.ts、configurators/shared.ts(writeSkills/writeAgents/writeSharedHooks/resolvePlaceholders/buildPullBasedPrelude)、configurators/workflow.ts、templates/extract.ts、configurators/index.ts(collectPlatformTemplates)、commands/update.ts(collectTemplateFiles)。init 与 update 在 Windows 上输出字节级一致。
test/configurators/shared.test.ts 新增 9 个 platform-mocked 单测,覆盖 win32/linux/darwin、shebang 保留、多行内容、幂等、python3x 子串边界。
Copilot 自定义 agent 工具 frontmatter (PR #210)
injectPullBasedPreludeMarkdown() 改用正则切分 frontmatter(splitMarkdownFrontmatter),支持 CRLF 行尾。mapLegacyToolToCopilot() 将 Claude 风格的工具名(Read / Write / Edit / Glob 等)映射为 Copilot 的小写形式(read / edit 等)。test/regression.test.ts 增加回归用例。
升级
trellis update。从 0.4.x 升级的项目执行 trellis update --migrate,0.5 migration 链从 0.5.0-beta.0 起。rc.2 不增加 migration entry。