## v0.8.0 - 2026-09-02

### Added

- Added support for tenant-scoped shared concurrency strategies: declare a `ConcurrencyExpression` with `is_tenant_scoped: true` and a `name`, and every task declaring the same name (across workflows) consumes the same concurrency limit. Re-declaring a name updates the strategy in place, and tenant-scoped entries mix freely with workflow-scoped entries in one chain.
- `max_runs` on `ConcurrencyExpression` now accepts an `Integer` or a `String`: a string is a CEL expression over task input computing the max runs for each concurrency group, so different groups (e.g. pricing tiers) can have different limits.

## v0.7.0 - 2026-08-26

### Changed

- Adds support for `CANCEL_QUEUED_EXCEPT_NEWEST` and `CANCEL_QUEUED_EXCEPT_OLDEST` concurrency strategies.

## v0.6.0 - 2026-07-23

### Changed

- Adds beta `batch_task` methods to both tasks and workflows, allowing for dynamic batching based on either time or batch size.

## v0.5.0 - 2026-07-22

### Added

- Adds support for terminal status-based idempotency keys, which are released when the task holding the key reaches a terminal state (either completed, cancelled, or having failed and exhausted all retries).

## v0.4.0 - 2026-06-03

### Added

- Adds support for defining **idempotency keys** on workflows and standalone tasks via an `idempotency` option, which ensures that they're only run once in a provided time window, based on a CEL expression. Triggers that collide with an existing run raise an `IdempotencyCollisionError` containing the existing run's ID.

## v0.3.1 - 2026-06-12

### Fixed

- Fixed an issue where errors raised by child tasks spawned inside a durable parent task were not propagated back to the parent. The parent can now catch the child's error and handle it gracefully.

## v0.3.0 - 2026-04-28

### Added

- Durable execution primitives for Ruby workers, including `Hatchet::DurableContext`.
- Durable eviction support via `Hatchet::EvictionPolicy` and worker-side eviction management/cache.
- Engine-version gating helpers (`Hatchet::MinEngineVersion`, semver parsing/comparison utilities).
- Durable eviction examples for Ruby (`worker` and `push_event`) in both SDK and top-level examples.
- New exception and type-surface additions for durable features.

### Changed

- Worker runtime and runner internals to support durable replay, event waits, and eviction lifecycle behavior.
- gRPC dispatcher/admin clients and generated contracts to align with durable execution and eviction flows.
- Task/workflow definitions and worker object wiring to expose durable/eviction configuration in the public API.
- RBS signatures expanded across durable context, eviction policy/manager/cache, worker runner, task/workflow, and gRPC clients.
- Test coverage expanded with focused specs for durable context, eviction manager/cache, listener behavior, runner integration, and engine version helpers.

## v0.2.0 - 2026-03-03

### Added

- Adds `desired_worker_labels` support to `trigger_workflow` and `bulk_trigger_workflow` to allow dynamically routing task runs to a specific worker at trigger time
- Cron expressions now support an optional leading seconds field (6-part expressions), e.g. `30 * * * * *` to trigger at 30 seconds past every minute.

## v0.1.1 - 2026-02-27

### Changed

- Updated internal dependencies to address security advisories.

## v0.1.0 - 2025-02-15

- Initial release of the Ruby SDK for Hatchet
- Task orchestration with simple tasks, DAGs, and child/fanout workflows
- Durable execution with durable tasks, durable events, and durable sleep
- Concurrency control (limit, round-robin, cancel in progress, cancel newest, multiple keys, workflow-level)
- Rate limiting
- Event-driven workflows
- Cron and scheduled workflows
- Retries with configurable backoff strategies
- Timeout management with refresh support
- On-failure and on-success callbacks
- Streaming support
- Webhook integration
- Bulk operations (fanout, replay)
- Priority scheduling
- Sticky and affinity worker assignment
- Deduplication
- Manual slot release
- Dependency injection
- Unit testing helpers
- Logging integration
- Run detail inspection
- RBS type signatures for IDE support
- REST and gRPC client support
