# CHANGELOG

<!-- changelog -->

## [v2.3.3](https://github.com/agentjido/jido/compare/v2.3.2...v2.3.3) (2026-08-10)




### Bug Fixes:

* deps: update Mint for CVE-2026-59249 by mikehostetler

* instance-manager: fail closed on thaw errors (#316) by mikehostetler

* agent-server: serialize sync call drain races (#312) by mikehostetler

## [v2.3.2](https://github.com/agentjido/jido/compare/v2.3.1...v2.3.2) (2026-06-09)




### Bug Fixes:

* keep ETS storage tables supervised by mikehostetler

* remove ok dependency (#308) by mikehostetler

* harden storage and signal target handling by mikehostetler

### Refactoring:

* replace deep_merge dependency (#309) by mikehostetler

## [v2.3.1](https://github.com/agentjido/jido/compare/v2.3.0...v2.3.1) (2026-06-02)




### Bug Fixes:

* update jido_signal lock for OTP 29 by mikehostetler

* agent: simplify state validation branch by mikehostetler

* pod: resolve strategy module alias in Pod.__using__/1 by Jaden

## [v2.3.0](https://github.com/agentjido/jido/compare/v2.2.0...v2.3.0) (2026-05-22)




### Features:

* sensor: add tagged sensor lifecycle directives by mikehostetler

* observe: centralize telemetry emission by mikehostetler

* error: sanitize public error payloads by mikehostetler

* plugin: add phase callbacks with runtime context by mikehostetler

* agent: move identity modules under agent namespace (#277) by mikehostetler

* replace tzdata with time_zone_info to remove hackney dependency (#242) by dl-alexandre

### Bug Fixes:

* observability: quiet routed action logs (#264) by mikehostetler

* ensure Elixir 1.20 compatibility (#251) by mikehostetler

* expand plugin aliases in Pod macro before escaping (#239) by Jaden

### Refactoring:

* logging: localize lazy logger calls by mikehostetler

* fix ex_slop findings by Danila Poyarkov

## [v2.2.0](https://github.com/agentjido/jido/compare/v2.1.0...v2.2.0) (2026-03-29)




### Features:

* add partitioned multi-tenancy support (#218) by mikehostetler

* rebuild multi-tenancy around partitioned pods by mikehostetler

* reduce default log verbosity (#219) by dl-alexandre

* add first-class orphan lifecycle and adoption (#213) by mikehostetler

* add first-class orphan lifecycle and adoption (#212) by mikehostetler

* add first-class orphan lifecycle and adoption by mikehostetler

### Bug Fixes:

* remove invalid doctest-style doc examples (#227) by mikehostetler

* reject instance manager lifecycle opts in SpawnAgent (#222) by mikehostetler

* reject instance manager lifecycle opts in SpawnAgent by mikehostetler

* reduce default log verbosity (noisy logs) by dl-alexandre

* align action logging with instance config (#217) by mikehostetler

* observability: align action logging with instance config by mikehostetler

* observability: align action telemetry with log args by mikehostetler

* agent_server: always wrap parent-down reason as {:shutdown, _} by mikehostetler

* thread: handle missing thread in filter_by_kind (#211) by Julian Scheid

* thread: handle missing thread in filter_by_kind by Julian Scheid

* thread: tighten filter_by_kind guards by Julian Scheid

* agent_server: always wrap parent-down reason as {:shutdown, _} (#207) by Julian Scheid

* pass details as keyword to execution_error (#206) by Julian Scheid

* pass details as keyword to execution_error by Julian Scheid

* preserve execution error details compatibly by Julian Scheid

* agent: correct plugin_schedules typespec (#204) by CptnKirk

* restore git_ops changelog marker placement by mikehostetler

### Refactoring:

* formalize pod extraction seams (#233) by mikehostetler

* harden SpawnAgent directive validation by mikehostetler

* agent: pass jido instance via strategy context by mikehostetler

* harden runtime store ownership and stress adoption by mikehostetler

## [v2.1.0](https://github.com/agentjido/jido/compare/v2.0.0...v2.1.0) (2026-03-14)

### Features:

* scheduler: durable in-house cron scheduler for Jido 2.1 (#181) by mikehostetler

* scheduler: in-house cron engine with durable instance replay by mikehostetler

* plugin: support static subscriptions and fix documentation (#198) by Iulian Costan

* plugin: support static subscriptions and fix documentation by Iulian Costan

* storage: add Redis storage adapter (#184) by austin macciola

* storage: add Redis storage adapter by austin macciola

### Bug Fixes:

* ci: resolve lint guard and dialyzer issues by mikehostetler

* finalize durable scheduler hardening and dialyzer cleanup by mikehostetler

* scheduler: harden durable cron replay and callbacks by mikehostetler

* scheduler: restore cron replay invariants by mikehostetler

* misplaced end in example (#201) by Jan Pieper

* sensor: resolve via refs for subscription signals (#200) by mikehostetler

* storage: harden redis adapter and instance integration by austin macciola

* Improve typespec precision (#196) by Philip Munksgaard

* preserve plugin spec structs in agents (#188) by mikehostetler

* normalize StopChild shutdown reasons by mikehostetler

* align StopChild with SpawnAgent restart semantics by mikehostetler

* util: use Code.ensure_compiled to resolve action validation ordeâ¦ (#183) by caike

* util: use Code.ensure_compiled to resolve action validation ordering by caike

* error: make Jido.Error splode conversions reliable by Pascal Charbonneau

* observe: harden sync and async tracer span semantics (#178) by mikehostetler

* observe: harden tracer sync and async span semantics by mikehostetler

* observe: prevent cross-process scoped callback re-execution by mikehostetler

### Refactoring:

* scheduler: simplify runtime registration by mikehostetler

## 2.0.0 - 2026-02-22

### Changed
- Promote `2.0.0-rc.5` to stable `2.0.0`
- Require Elixir `~> 1.18`
- Bump ecosystem deps to stable ranges: `jido_action ~> 2.0`, `jido_signal ~> 2.0`

### Fixed
- Restore compile-time `signal_routes` behavior while preserving callback compatibility (#170)
- Prevent loopback `emit` from redispatching to the current agent in AgentServer (#171)

### Tooling
- Align Igniter setup/docs with the instance-scoped API

## 2.0.0-rc.5 - 2026-02-16

### Added
- Observability V2: per-instance debug & telemetry configuration (#129)
- Always-on `emit_event` helper for lifecycle observability (#141)
- Event contracts and lifecycle observability docs (#140)
- Directive struct included in agent_server telemetry metadata (#134, #142)
- `RunInstruction` directive and pure FSM cmd (#139)
- Prevent synchronous signal-call blocking in AgentServer (#150)
- Declarative schedules DSL for cron (#137)

### Changed
- **BREAKING**: Unify persistence on `Jido.Persist` and `Jido.Storage` (#156)
- Centralize defaults and validate observability config
- Harden InstanceManager registry and key semantics (#156)
- Share instruction tracking helpers in strategy layer (#166)
- Use shared templates in Igniter generator tasks (#165)
- Unify entry normalization across storage adapters (#164)
- Extract shared signal collector test helper (#167)

### Fixed
- Normalize timeout diagnostics in `await_all`/`await_any` (#168)
- Cancel timed-out completion waiters in AgentServer (#162)
- Preserve file read errors during append (#163)
- Return normalized errors for corrupt entry logs (#161)
- Avoid atom creation from persisted journal kinds (#160)
- Restore agent metadata export for discovery (#159)
- Return routing error struct for unknown signals (#155)
- Normalize refinement errors for Zoi validation in plugins
- Make ETS `append_thread` atomic and revision-safe (#150)
- Send `jido.agent.stop` when stopping child (#138)
- Normalize id in both constructor paths to guarantee UUID7 (#132)
- Fix silent cron tick failure (#137)
- Normalize util and storage-facing error contracts (#153)
- Offload runtime dispatch from sensor process (#152)

### Dependencies
- Bump `jido_action` and `jido_signal` to 2.0.0-rc.5

---

## 2.0.0-rc.4 - 2026-02-06

### Added
- Memory plugin: implement `Jido.Memory` as default plugin under `__memory__` key (#125)
- Identity plugin: add `Jido.Identity` as default agent plugin (#126)
- Plugin singleton flag in plugin config schema (#120)
- Plugin signal middleware improvements (#123)

### Changed
- Update `signal_routes` to accept context parameter (#121)

### Fixed
- Wire `on_restore/2` into generated `restore/2` callback (#122)

### Tests & Chores
- Add memory plugin and default plugins persistence examples (#127)
- Organize example tests into subdirectories (#124)
- Add `Jido.Plugin` to doctor ignore_modules for macro-generated defs
- Remove AI cruft and build artifacts

### Dependencies
- Bump `jido_action` and `jido_signal` to 2.0.0-rc.4

---

## 2.0.0-rc.3 - 2026-02-04

### Added
- `cmd/3` to support per-action timeout opts (#117)
- Unified persistence layer for agent checkpoints and thread journals (#110)
- Telemetry infrastructure with span tracking and metrics (#109)
- Debug helpers and improved timeout errors (#111)

### Changed
- **BREAKING**: Renamed `Jido.Skill` to `Jido.Plugin` (#115)

### Fixed
- Dialyzer/Credo: add :mix to PLT, remove unnecessary ignores (#118)

### Dependencies
- Bump `jido_action` and `jido_signal` to 2.0.0-rc.3
- Bump `ex_doc` from 0.40.0 to 0.40.1 (#112)

---

## 2.0.0-rc.2 - 2025-01-30

### Changed
- **Zoi Schema Migration**: Convert remaining structs to use Zoi schemas for consistent validation (#106)
- **Macro Decomposition**: Decompose large macros and improve code organization (#101)
- **Sensor Simplification**: Simplify `handle_event/2` to directive-only format (#108)

### Fixed
- Address code quality issues from codebase review (#107)
- Improve process lifecycle handling and test reliability (#100)

### Dependencies
- Bump `jido_action` and `jido_signal` to 2.0.0-rc.2

---

## 2.0.0 (Architecture Preview Notes) - 2025-12-31

### Added
- **Instance-Scoped Supervisors**: Jido now uses user-owned, instance-scoped supervisors instead of auto-started global singletons
- **Jido Supervisor Module**: New `Jido` module acts as a Supervisor managing per-instance Registry, TaskSupervisor, and AgentSupervisor
- **Agent Lifecycle API**: New functions `Jido.start_agent/3`, `Jido.stop_agent/2`, `Jido.whereis/2`, `Jido.list_agents/1`
- **Test Isolation**: New `JidoTest.Case` module for automatic test isolation with unique Jido instances
- **Per-Instance Scheduler**: Scheduler can now be scoped to a Jido instance
- **Multi-Agent Coordination**: New `Jido.await/3` and `Jido.await_child/4` for coordinating agent completion
- **Discovery Delegates**: Discovery functions accessible via main Jido module

### Breaking Changes
- **Explicit Supervision**: Users must now add `{Jido, name: MyApp.Jido}` to their supervision tree
- **Agent Start**: Use `Jido.start_agent(instance, agent, opts)` instead of `AgentServer.start/1`
- **Instance Option**: Pass `jido: MyApp.Jido` option when starting agents directly

### Changed
- Refactored from global singletons to instance-scoped architecture
- Agents now register in instance-specific Registry
- TaskSupervisor and AgentSupervisor are per-instance
- Updated all examples to use new 2.0 patterns

### Migration from 1.x
See the Migration section in README.md for upgrade instructions.

---

## Unreleased - 2025-08-29

### Added
- **Modular API Architecture**: Refactored monolithic `Jido.ex` module into specialized modules:
  - `Jido.Agent.Lifecycle` - Agent lifecycle management (start, stop, restart, clone operations)
  - `Jido.Agent.Interaction` - Agent communication (signals, instructions, requests)
  - `Jido.Agent.Utilities` - Helper functions (via/2, resolve_pid/1, generate_id/0, log_level/2)
- **Comprehensive Test Helpers**: New `JidoTest.Support` module with common test utilities:
  - Registry management helpers (`start_registry!/0`)
  - Agent lifecycle helpers (`start_basic_agent!/1`, automatic cleanup)
  - Signal and state assertion helpers
  - Consistent test patterns across all modules
- **Table-Driven Test Coverage**: Implemented data-driven delegation tests for maintainable 100% API coverage
- **Performance-Optimized Test Suite**: Consolidated and streamlined tests with `@tag :slow` for optional performance tests

### Breaking Changes
- **None**: All public API functions remain fully backward compatible through delegation in main `Jido` module

### Changed
- **Improved Test Performance**: ~40% reduction in test execution time through:
  - Elimination of redundant test cases
  - Reduced UUID generation from thousands to ~110 total
  - Parameterized test scenarios instead of copy-paste patterns
  - Common setup helpers reducing boilerplate
- **Enhanced Test Maintainability**: 
  - Centralized test helpers eliminate code duplication
  - Table-driven tests make adding new API methods trivial
  - Consistent patterns across all test files
- **Better Resource Management**: Automatic test cleanup prevents resource leaks and test isolation issues

### Fixed
- **Test Suite Optimization**: Removed redundant tests while maintaining high coverage (68.4% overall, >80% for key modules)
- **Code Quality**: Addressed Credo warnings in test files (replaced `length/1` with `Enum.empty?/1`)

---

## Previous - 2025-08-25

### Added
- **Automatic Action Registration**: Skills can now declare required actions in their configuration using the `actions` field, which are automatically registered when the skill is mounted
- **Module Path Refactoring**: Moved action modules from `Jido.Actions.*` to `Jido.Tools.*` namespace for better alignment with `jido_action` library
- **Default Skills**: Agent server now uses default skills (`Jido.Skills.Basic` and `Jido.Skills.StateManager`) instead of hardcoded actions

### Breaking Changes
- **Action module paths**: All action modules moved from `Jido.Actions.*` to `Jido.Tools.*` to align with the `jido_action` library
- **Runner system removed**: The separate `Jido.Runner.Simple` and `Jido.Runner.Chain` modules have been deprecated. Agents now use built-in execution logic that processes one instruction at a time (equivalent to the former Simple Runner behavior)

### Changed
- **Skill configuration**: Skills can now declare required actions using the `actions` field for automatic registration
- **Agent options**: Both `actions:` and `skills:` options are supported, with skills providing the preferred declarative approach

### Fixed
- Task update action now only updates provided fields instead of overwriting with nil values
- State manager update action now uses `:update` operation instead of `:set` for proper semantic behavior
- Improved error handling for action registration failures

## 1.1.0-rc.1 - 2025-02-18

- Address open Credo Errors
- Add documentation
- Clean up README in prep for 1.1 release

## 1.1.0-rc - 2025-02-08

- Stateful Agents
