Ruler 0.3.0
Ruler 0.3.0 is primarily a code quality and refactoring release, streamlining the internal architecture and improving maintainability, with a handful of new features and enhancements.
Functional Changes & Additions
- Unified configuration: MCP servers are now configured in
ruler.toml
plus optional legacy.ruler/mcp.json
migration path; single loader normalizes agents + MCP servers. - New agents added: Zed, Warp, Kiro, Qwen Code (plus MCP capability coverage broadened across existing agents).
- AGENTS.md becomes the default rules file (automatic scaffold on init) with graceful fallback to legacy
instructions.md
and root precedence detection. - Source marker improvements: consistent HTML comment markers with normalized path separators across platforms.
Technical / Refactors
- Introduced
AbstractAgent
base class; many agents now inherit common behavior (including newAgentsMdAgent
specialization). - Centralized agent selection, action prefix formatting, config key mapping, and output path resolution.
- Split large monolithic apply/revert functions into
apply-engine
andrevert-engine
modules with focused utilities. - Added unified config loader/types, hashing utilities, and capability filtering module for MCP.
- Expanded and reorganized test harness: new integration & e2e suites for unified config, MCP flows, agent detection, and revert logic; substantial unit test coverage for each agent.
- Strengthened TypeScript typing (eliminated
any
usages) and formatting consistency; numerous lint/format cleanups. - Simplified legacy migration path (removed obsolete instructions warning code and deprecated generation of
mcp.json
on init).
Notes
This release lays the groundwork for future extensibility: unified config + abstracted engines reduce duplication and make adding new agents or MCP transport types straightforward.
Thanks to all contributors and testers for the rapid iteration leading to 0.3.0.
What's Changed
- Consolidate duplicated getAgentOutputPaths function into shared utility by @Copilot in #94
- Refactor monolithic
applyAllAgentConfigs
andrevertAllAgentConfigs
functions by @intellectronica in #97 - Refactor: centralize agent registry by @intellectronica in #99
- Fix CI test failures by preventing build race conditions by @Copilot in #100
- Add Claude Code GitHub Workflow by @intellectronica in #110
- Refactor: Augment Test Coverage for New Agents by @intellectronica in #111
- refactor: Eliminate 'any' Types and Strengthen TypeScript Typing by @intellectronica in #112
- AmpAgent: back up target file before writing by @intellectronica in #114
- Refactor: Decouple CLI Command Logic from Command Definitions by @opencode-agent[bot] in #115
- Refactor: Streamline Test Suite with Shared Harness and Utilities by @Copilot in #117
- Refactor: Abstract Common Agent Logic to Reduce Code Duplication by @Copilot in #118
- feat: introduce DEFAULT_RULES_FILENAME constant (Task 1 of AGENTS.md migration) by @intellectronica in #120
- feat: default rules file switched to AGENTS.md with legacy fallback by @intellectronica in #121
- feat(init): scaffold .ruler/AGENTS.md with header and legacy detection (task 3 of #119) by @intellectronica in #122
- feat: auto-detect root AGENTS.md (Task 4) by @intellectronica in #123
- Migrate non-legacy tests to AGENTS.md (Task 7) by @intellectronica in #124
- feat(agent): add agentsmd pseudo-agent writing root AGENTS.md (task 5) by @intellectronica in #125
- feat: emit legacy instructions.md warning once per process (Task 9) by @intellectronica in #126
- Refactor: Inherit AgentsMdAgent in CodexCli, OpenCode, Jules by @intellectronica in #127
- docs: sync README with AGENTS.md precedence and legacy fallback by @intellectronica in #128
- Update Amp agent to inherit from AgentsMdAgent and use AGENTS.md by @Copilot in #138
- Update Aider agent to use AGENTS.md instead of ruler_aider_instructions.md by @Copilot in #139
- feat(gemini): inherit AgentsMdAgent and set .gemini/settings.json contextFileName to AGENTS.md; update tests and docs (#132) by @intellectronica in #140
- Fix Zed Editor MCP Configuration Format to Match Official Documentation by @Copilot in #141
- Add Qwen Code agent support by @intellectronica in #143
- feat: unified configuration loader (ruler.toml + rules + MCP + agents) by @intellectronica in #144
- Add MCP server configuration support in TOML format by @Copilot in #146
- Remove mcp.json generation from ruler init and add sample MCP servers to ruler.toml by @Copilot in #147
- feat: warn on legacy .ruler/mcp.json usage by @intellectronica in #148
- feat: remove legacy instructions.md warning by @intellectronica in #149
- Fix: always generate Codex .codex/config.toml when requested by @intellectronica in #150
- Fix OpenCode agent to always create opencode.json configuration file by @Copilot in #151
- Add comprehensive integration testing for all CLI agent types and generated files by @Copilot in #152
- Fix MCP server propagation to use merged configuration data instead of legacy file by @Copilot in #154
- Add MCP capability-based filtering system and fix failing tests by @Copilot in #155
- Fix Windows/Unix path separator inconsistency in generated rule files by @Copilot in #157
- Fix OpenHands MCP remote server propagation - ensure remote servers appear in config.toml by @Copilot in #158
- Fix OpenHands config path: Move from .openhands/config.toml to config.toml by @Copilot in #159
- Fix duplicate legacy MCP warning displayed multiple times by @Copilot in #161
- feat: #92 add Kiro agent support by @ayushtankha in #156
- Fix Claude Code MCP configuration generating empty string keys by @Copilot in #163
- feat: HTML comment source markers (2 blank lines before, 1 after) by @intellectronica in #164
- Add WARP.md agent support by @Copilot in #165
- feat: restrict MCP writes to project root by @intellectronica in #166
- Refactor config key mapping to centralized utility function by @Copilot in #171
- Refactor: Extract Repeated Dry-Run Logging Pattern to a Central Function by @Copilot in #170
- Consolidate duplicate agent selection logic into reusable helper function by @Copilot in #172
New Contributors
- @opencode-agent[bot] made their first contribution in #115
- @ayushtankha made their first contribution in #156
Full Changelog: v0.2.19...v0.3.0