> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trytrellis.app/llms.txt
> Use this file to discover all available pages before exploring further.

# v0.5.4

> 2026-05-06

修 Trellis sub-agent 递归 dispatch 自己的问题（[`#237`](https://github.com/mindfold-ai/Trellis/issues/237)）；修 `compareVersions` 在 prerelease 含连字符时丢尾的问题（[`#230`](https://github.com/mindfold-ai/Trellis/pull/230)）。无新增 migration。

## Bug Fixes

### Sub-agent 递归保护

`.trellis/workflow.md` 的 `[workflow-state:in_progress]` 段落要求主会话 dispatch `trellis-implement` / `trellis-check` sub-agent。Codex 上这段同样会被注入到 sub-agent 的 turn 里，sub-agent 看到指令照做——又 spawn 了一个 `trellis-implement`，而不是自己直接干活。

两处改动：

* `[workflow-state:in_progress]` 把 dispatch 规则限定给主会话，并加一句："如果你已经是 `trellis-implement` / `trellis-check` sub-agent，直接干活，不要再 spawn 同类 sub-agent。"
* 各平台（claude / cursor / opencode / kiro / codebuddy / droid / codex / pi / gemini / qoder）的 `trellis-implement` / `trellis-check` agent 定义文件顶部加了同一段说明。即便 workflow-state 没被注入，提醒也依然生效。

`.trellis/spec/cli/backend/workflow-state-contract.md` 同步更新：之前写的"workflow-state breadcrumb 仅主会话可见"是错的，Codex hook 也会投递给 sub-agent。

### `compareVersions`：prerelease 含连字符时不再丢尾

感谢 [@voidborne-d](https://github.com/voidborne-d) 的 [`#230`](https://github.com/mindfold-ai/Trellis/pull/230)。

`packages/cli/src/utils/compare-versions.ts` 之前用 `a.split("-", 2)` 切分基础版本和 prerelease。JavaScript 的 `split(sep, limit)` 是截尾，而不是把尾部合并（跟 Python `maxsplit` 不一样）：

```js theme={null}
'1.0.0-alpha-1'.split('-', 2);
// → ["1.0.0", "alpha"]   // "-1" 被静默丢掉
```

结果 `compareVersions("1.0.0-alpha-1", "1.0.0-alpha-2")` 返回 `0`——两个版本排序时被当作相等。已修复。`packages/cli/test/utils/compare-versions.test.ts` 新增 20 个 case，覆盖基础版本、release vs prerelease、连字符 prerelease、版本列表排序。

## Upgrade

```bash theme={null}
npm install -g @mindfoldhq/trellis@latest
trellis update
```
