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.