Skip to main content

CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.0] - 2026-06-10

### Added
- Pagination helpers `Meili.Document.stream/3` and `Meili.Index.stream/2` to automatically page through documents and indexes.
- Facade delegates for the `Meili` module, fully covering modules like `Search`, `Task`, `Chat`, `Document`, `Index`, and `Health`.
- Support for exponential backoff in `Meili.Task.wait_for_task/3` and `Meili.Task.wait_for_task!/3`.
- Support for waiting on multiple tasks via `Meili.Task.wait_for_tasks/2` and `Meili.Task.wait_for_tasks!/2`.
- Support for custom request and response steps in `Meili.Client`.
- Support for passing search payload maps directly to `Meili.Search.search/4` and `search!/4`.

### Changed
- Enforced string keys for JSON decoding/responses in documentation to align with memory safety best practices.
- Expanded function docstrings with comprehensive code examples.

### Fixed
- Parameter mapping in `search` and `facet_search` when a query is omitted.
- Task deletion endpoint path structure.

## [0.1.3] - 2026-06-08

### Added
- Added `@spec` declarations to all public functions in the `lib/` directory to improve documentation and compilation type coverage.

### Changed
- Relaxed the Elixir version requirement in `mix.exs` to `~> 1.18`.

## [0.1.2] - 2026-06-08

### Added
- Added a `:reason` field to `Meili.Error` exceptions to preserve the underlying raw error term (like `%Req.TransportError{}`) instead of just inspecting it into the error message.
- Added advanced `Req` options documentation and a `meilisearch_ex` migration table to the `README.md`.

## [0.1.1] - 2026-06-08

### Added
- Document addition/update functions now pass generic options downstream to `Req` (`Client.request/4`). This allows leveraging standard HTTP features like `compress_body: true` and `receive_timeout` natively without workarounds.

## [0.1.0] - Initial Release
- Initial release.