Repository navigation
v24.0.0
·
1459 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
What's Changed
Breaking Changes
- Pi
stophooks now map to the actionableagent_before_settleevent (requires Pi >= v0.87.0). Closes #3178. by @dyoshikawa in #3210- The canonical
stophook used to map to the notify-onlyagent_end. It now maps toagent_before_settle, which Pi fires after automatic retries and compaction have finished. - Every stop command still runs. When any of them exits with code 2 (Claude Code's blocking exit code), the generated extension appends their feedback as a
custom_messageand continues the agent, at most once per settled run. Other non-zero exits are reported as extension errors and do not continue the agent. - Regenerate the Pi extension after upgrading. Pi versions older than v0.87.0 do not fire
agent_before_settle, so stop hooks will not run there.
- The canonical
- Bob global MCP servers are written to
~/.bob/settings/mcp.json. Refs #3074. by @dyoshikawa in #3220generate --targets bob --features mcp --globalused to write~/.bob/mcp.json, which no Bob product reads. It now writes the documented IDE global file~/.bob/settings/mcp.json. Project scope (.bob/mcp.json) is unchanged.- A stale
~/.bob/mcp.jsonis not removed automatically. Delete it by hand after upgrading.
- Z Code hooks and subagents now support project scope. Refs #2960. by @dyoshikawa in #3224
- Project-scope
generate --targets zcode --features hooksnow writes ahooksblock (enabled+events) into.zcode/config.json, next to themcpkey that was already written there. Z Code asks each user to trust workspace hooks before running them. - Project-scope subagents are written to
.zcode/agents/<name>.md. Azcode.permissionModeis dropped with a warning in project mode, because Z Code ignores it for project profiles. - Global output (
~/.zcode/cli/config.json) is unchanged.
- Project-scope
- Junie commands translate
$ARGUMENTSto Junie's$prompt. Closes #3177. by @dyoshikawa in #3208- Junie treats every
$nameas a required named argument, so$ARGUMENTSused to become a requiredARGUMENTSargument. On generate,$ARGUMENTSis now rewritten to$promptandallowPromptArgument: trueis added. Import reverses the translation.
- Junie treats every
- Hook import normalizes the project directory variable anywhere in a command. Closes #3171 and #3206. by @dyoshikawa in #3186 and #3207
- Import used to strip
$CLAUDE_PROJECT_DIR(and the equivalent variables of other tools) only when it was the first word of a command, so commands such aspython3 "$CLAUDE_PROJECT_DIR/x.py"leaked the variable into targets that never set it. - Import now rewrites the variable to
./wherever a path can start, and generate anchors later./words that name a file the command runs (the command word of later simple commands and the script argument of known script runners). Data arguments such asnpx prettier --write ./srcare left as written. - Import warns when it drops a variable that generate would not put back, or keeps one on purpose. See the hook
commandkey indocs/reference/file-formats.md.
- Import used to strip
- The new
gitlabduotarget is part of the*wildcard and writes project skills to the rootskills/directory. Closes #3081. by @dyoshikawa in #3216- Configs that use
targets: ["*"]with theskillsfeature now also writeskills/<name>/SKILL.mdat the repository root, which is where GitLab Duo reads project skills. The directory is not gitignored, and--deletenever sweeps it, because it may hold hand-authored files. List explicit targets to opt out.
- Configs that use
New Features
- New targets:
- Letta Code (
lettacode): ignore, subagents, skills, hooks and permissions. Closes #3175. by @dyoshikawa in #3211 - Codewhale (
codewhale): rules, skills, subagents, MCP and hooks. Refs #3174. by @dyoshikawa in #3212 - MiMo Code (
mimocode). Closes #3173. by @dyoshikawa in #3213 - Codebuff / Freebuff (
codebuff): ignore and MCP. Closes #3082. by @dyoshikawa in #3215 - GitLab Duo CLI (
gitlabduo): rules, MCP, hooks, commands, skills and checks. Closes #3081. by @dyoshikawa in #3216 - oh-my-pi (
omp). Refs #3080. by @dyoshikawa in #3218 - OpenClaw (
openclaw): rules. Closes #3052. by @dyoshikawa in #3221
- Letta Code (
rulesync install --outdatedreports locked sources that have a newer ref, without changing anything. It exits with 0 when everything is current, 1 when something is outdated, and 2 on errors. Closes #2983. by @dyoshikawa in #3223- dsh global MCP:
generate --targets dsh --features mcp --globalwrites servers into~/.dsh/cordis.patch.yml. Closes #3084. by @dyoshikawa in #3214
Bug Fixes
- deepagents MCP: normalize
httpUrl, arraycommandvalues anddisabledfor FastMCP 4. Closes #3176. by @dyoshikawa in #3209
Other Changes
- Pin the Continue source links to the final upstream commit (Closes #3078) in #3217
- Document the OpenCode config roots of the new Tabnine CLI (Refs #3077) in #3219
- Record JetBrains AI Assistant commands and Self-Review checks as non-targets (Refs #3015) in #3222
- Default the autonomous maintenance skills to act unless harmful in #3205
- Update the Homebrew formula to v23.0.0 in #3204
Contributors
Thanks to @artgas1 for the report behind #3171, to @JawsomeJason for the proposal behind #3052, and to @sugurutakahashi-1234 for the proposal behind #2983.