Skip to content

v24.0.0

Choose a tag to compare

@dyoshikawa dyoshikawa released this 28 Sep 17:44
· 1459 commits to main since this release
Immutable release. Only release title and notes can be modified.
8283005

What's Changed

Breaking Changes

  • Pi stop hooks now map to the actionable agent_before_settle event (requires Pi >= v0.87.0). Closes #3178. by @dyoshikawa in #3210
    • The canonical stop hook used to map to the notify-only agent_end. It now maps to agent_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_message and 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.
  • Bob global MCP servers are written to ~/.bob/settings/mcp.json. Refs #3074. by @dyoshikawa in #3220
    • generate --targets bob --features mcp --global used 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.json is 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 hooks now writes a hooks block (enabled + events) into .zcode/config.json, next to the mcp key 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. A zcode.permissionMode is dropped with a warning in project mode, because Z Code ignores it for project profiles.
    • Global output (~/.zcode/cli/config.json) is unchanged.
  • Junie commands translate $ARGUMENTS to Junie's $prompt. Closes #3177. by @dyoshikawa in #3208
    • Junie treats every $name as a required named argument, so $ARGUMENTS used to become a required ARGUMENTS argument. On generate, $ARGUMENTS is now rewritten to $prompt and allowPromptArgument: true is added. Import reverses the translation.
  • 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 as python3 "$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 as npx prettier --write ./src are left as written.
    • Import warns when it drops a variable that generate would not put back, or keeps one on purpose. See the hook command key in docs/reference/file-formats.md.
  • The new gitlabduo target is part of the * wildcard and writes project skills to the root skills/ directory. Closes #3081. by @dyoshikawa in #3216
    • Configs that use targets: ["*"] with the skills feature now also write skills/<name>/SKILL.md at the repository root, which is where GitLab Duo reads project skills. The directory is not gitignored, and --delete never sweeps it, because it may hold hand-authored files. List explicit targets to opt out.

New Features

  • New targets:
  • rulesync install --outdated reports 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 --global writes servers into ~/.dsh/cordis.patch.yml. Closes #3084. by @dyoshikawa in #3214

Bug Fixes

  • deepagents MCP: normalize httpUrl, array command values and disabled for 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.

Full Changelog

v23.0.0...v24.0.0