version history

Notable changes per ACE release, newest first. Canonical source: ace-rs/ace releases.

0.8in progress

Work on main past the v0.7.1 tag. None of it has shipped in a tagged release yet.

landed on main, awaiting release

  • Skill-name admission policy — skill names are admitted by a fail-closed Unicode-whitelist predicate at the discovery boundary, replacing emit-time sanitization. Rejected skills are excluded and warned, never mutated on disk; self-healing on the next setup/pull. Import hard-refuses the offending skill and exits non-zero.
  • Capability-driven backend emit — nested-skill emit gated on a per-backend FEATURE_NESTED_SKILLS capability bit rather than backend name, with hardened flatten link names and a 2-stage skill-discovery cascade.
  • Skill model refactor — SkillId / MatchHandle newtypes and an imports resolver with first-wins semantics and collision warnings.
  • Exit-code contract — a semantic ExitCode enum on CmdError replaces the blanket exit(1): Usage (1), Unavailable (2), Operational (3), Cancelled (130). Scripts can distinguish bad input from a failed operation.

planned / under design

  • ace connect A2A bridge — a local agent-to-agent bridge over unix sockets, to be folded into the ace binary; deferred until after 0.8 ships.
  • School-instructions catalog & tabular-output alignment — captured in design notes as candidate follow-ups.

v0.7.12026-05-20

  • MCP exclusion — bare ace honors exclude_mcp; added per-entry MCP prompts and ace mcp register <name> to register individual servers, with OAuth instructions printed for OAuth-only entries.
  • School resolution hardened — schools resolve exclusively via the ace.toml specifier; ace school init dogfoods its own ace.toml and writes a backend-aware instructions file.
  • Session prompt — excluded-skill names are appended to the session prompt; school-level session_prompt documented as an authoring affordance.
  • Gitignore managed block — project and school gitignore flows unified into one managed block; refresh moved into the Prepare phase so pull is a pure fetch.
  • Symlink correctness — link_skills now canonicalizes the predicate for symlinked school roots.

v0.7.02026-05-10

  • OpenCode backend — added (PROD9-17), including a --opencode shortcut flag and {{ ... }} placeholder rendering in [[backends]] cmd and env.
  • ace school validate — typo-checks backend placeholders, with an ace school check alias and a clean-validation success message.
  • ace link — added to re-link school skill symlinks.
  • ace upgrade — now reads the latest version from ace-rs.dev/latest; ace version subcommand added.
  • ace-school externalized — imported from ace-rs/school instead of being bundled in the binary.
  • Homebrew tap — formula added, with self-update guarded for brew installs.
  • Fixes — import merge switched to last-wins; ace learn always includes the hardcoded ace/ace-* skills.

v0.6.02026-05-08

  • ace learn — added — studies a project and narrows the skills filter.
  • Custom backends — via [[backends]] documented and supported, including an exec_one_shot transport for non-interactive launches, split from the interactive Session intent.
  • Org/domain migration — project migrated to the ace-rs org and the ace-rs.dev domain.
  • School error variants split — Missing became NoSpecifier (run ace setup) and NotInitialized (run ace school init) for clearer guidance.
  • Fix — overlapping import sources are now de-duplicated during pull-imports.