# Changelog for Oban Met v1.0

## v1.1.0 — 2026-03-25

### Enhancements

- [Met] Require a minimum of Oban v2.21

  Oban v2.21 introduces the `suspended` state, which is now counted by the reporter along with the
  other states.

## v1.0.6 — 2026-02-19

### Enhancements

- [Met] Add configurable time unit for timing metrics

  Metrics stored in sketches now support configurable time units via the `:sketch_time_unit`
  compile-time option. By default, timing values remain in `:native` units for backward
  compatibility.

  Setting `config :oban_met, sketch_time_unit: :millisecond` reduces sketch storage size by ~20%
  and consolidates timing values into fewer bins by eliminating nanosecond-level measurement
  noise.

- [Cronitor] Share crontab options as a map rather than nested lists

  For compatibility with entries shared by python, we convert options to a
  map structure rather than a list of lists.

## v1.0.5 — 2025-12-10

### Bug Fixes

- [Examiner] Normalize `limit` to `local_limit` for web consistency

  Oban checks return `limit`, while Pro stores them as `local_limit`. That causes inconsistent
  data when displaying OSS queue details in `oban_web`. This stores `limit` as `local_limit`
  consistently, rather than checking for both keys.

## v1.0.4 — 2025-11-26

### Bug Fixes

- [Met] Match on config to auto-start named instances

  The registry pattern only matched `Oban` instances, not modules created with `use Oban`. This
  modifies the pattern to extract `Oban.Config` structs directly.

- [Met] Remove use of struct update syntax deprecated in Elixir v1.19


## v1.0.3 — 2025-05-06

### Enhancements

- [Examiner] Use parallel execution for health checks.

  Minimize total time taken to scrape checks from producers by parallelizing calls. The worst case
  time is now O(1) rather than O(n) when producers are busy.

## v1.0.2 — 2025-03-14

This release requires Oban v2.19 because of a dependency on the new JSON module.

### Bug Fixes

- [Met] Log unexpected messages from trapping servers

  The `reporter` and `cronitor` have a small set of messages they expect. Rather than crashing on
  unexpected messages, the processes now log a warning instead.

- [Meta] Override application options with passed options

  Passed options weren't relayed to the underlying module and only application level options had
  any effect. This ensures options from both locations are merged.

- [Met] Use conditional JSON derive and Oban.JSON wrapper

## v1.0.1 — 2025-01-16

### Bug Fixes

- [Value] Implement `JSON.Encoder` for value types

  The encoder is necessary to work with official JSON encoded values as well as legacy Jason.

## v1.0.0 — 2025-01-16

This is the official v1.0 release _and_ the package is now open source!

### Enhancements

- [Reporter] Count queries work with all official Oban engines and databases (Postgres, SQLite,
  and MySQL).

- [Migration] Add ability to explicitly create estimate function through a dedicated migration.

  For databases that don't allow the application connect to create new functions, this adds an
  `Oban.Met.Migration` module and an option to disable auto-migrating in the reporter.

### Bug Fixes

- [Reporter] Skip queries with empty states or queues to prevent query errors.

  Querying with an empty list may cause the following error:

  ```
  (Postgrex.Error) ERROR 42809 (wrong_object_type) op ANY/ALL (array)
  ```

  This fixes the error by skipping queries for empty lists. This could happen if all of the states
  were above the estimate threshold, or no active queues were found.
