# Changelog

## [1.0.0-alpha.8] - 2026-08-20

### Added

- `middlewest` feature selecting `middlewest` as an alternative client backend to `reqwest-middleware`; the two backends are mutually exclusive and `reqwest-middleware` remains the default
- `redirect` feature (requires the `middlewest` backend) that runs the cache on each redirect hop, so redirected responses are cached under their own URL instead of the original request URL

### Changed

- `reqwest-middleware` is now an optional feature, still enabled by default; select the client backend with either the `reqwest-middleware` or `middlewest` feature
- `async-trait` is now optional, required only by the `reqwest-middleware` backend

## [1.0.0-alpha.7] - 2026-07-22

### Added

- `manager-redb` feature flag for `RedbManager` support

### Changed

- MSRV bumped from 1.88.0 to 1.89.0
- Updated `http-cache` dependency to 1.0.0-alpha.7
- Default feature changed from `manager-cacache` to `manager-redb`; enable `manager-cacache` explicitly to keep using `CACacheManager`
- `StreamingCache` no longer reads the upstream response body into memory before handing it to the cache; the network stream is passed through and consumed a frame at a time

### Fixed

- `Response::url()` on responses served through `StreamingCache` now returns the request's final URL instead of the `http://no.url.provided.local` placeholder
- Responses larger than the manager's `max_body_size` no longer fail the request; they are served in full without being cached

## [1.0.0-alpha.6] - 2026-04-17

### Changed

- Updated `http-cache` dependency to 1.0.0-alpha.6
- Removed `async-trait` from http-cache core `Middleware` trait (still required by `reqwest-middleware`)
- Removed `httpdate` dependency
- Streaming middleware now delegates to core `HttpStreamingCache::run` orchestrator
- Response extensions preserved through streaming body conversion

### Fixed

- Headers no longer duplicated on revalidation requests when using custom headers
- RFC 7234 s4.4: cache invalidation moved to after successful response, gated on unsafe methods
- Cache status headers now gated on `cache_status_headers` option in non-cacheable path

## [1.0.0-alpha.5] - 2026-02-17

### Changed

- Updated `http-cache` dependency to 1.0.0-alpha.5
- Updated `http-cache-semantics` to 3.0.0
- MSRV bumped from 1.85.0 to 1.88.0
- Exposed `url-standard`, `http-headers-compat`, `manager-cacache-bincode`, and `manager-moka-bincode` feature flags

## [1.0.0-alpha.4] - 2026-01-19

### Added

- `manager-foyer` feature flag for `FoyerManager` support
- `url-ada` feature flag for using WHATWG-compliant ada-url for URL parsing

### Fixed

- `OnlyIfCached` mode now correctly returns 504 Gateway Timeout on cache miss in streaming middleware

## [1.0.0-alpha.3] - 2026-01-18

### Added

- Response metadata integration for storing data with cached responses

### Changed

- Updated `reqwest` to 0.13.1
- Updated `reqwest-middleware` to 0.5.0
- MSRV is now 1.85.0

### Fixed

- Add extensions to `ReqwestMiddleware::parts`
- Serialize all header values instead of just the first value per header name
- Preserve all header values sharing the same name

## [1.0.0-alpha.2] - 2025-08-24

### Added

- Support for cache-aware rate limiting through `rate_limiter` field in `HttpCacheOptions`
- New `rate-limiting` feature flag for optional rate limiting functionality
- Re-export of rate limiting types: `CacheAwareRateLimiter`, `DomainRateLimiter`, `DirectRateLimiter`, `Quota`
- Rate limiting integration for streaming cache operations via `StreamingCache` middleware

### Changed

- Consolidated error handling: removed separate error module and replaced with type alias `pub use http_cache::{BadRequest, HttpCacheError};`
- Simplified error architecture by removing duplicate error implementations
- Standardized error types to follow `{CrateName}Error` naming convention

### Fixed

- Request cloning failures for multipart forms and streaming bodies now fallback gracefully instead of throwing errors
- Cache middleware now bypasses caching for non-cloneable requests while still performing cache maintenance operations

## [1.0.0-alpha.1] - 2025-07-27

### Added

- Support for streaming cache architecture with new `streaming` features
- Integration with `HttpCacheStreamInterface` for composable streaming middleware
- New streaming examples: `reqwest_streaming.rs` and `streaming_memory_profile.rs`
- Enhanced error handling and conditional request support

### Changed

- Updated to use http-cache 1.0.0-alpha.1 with streaming support
- MSRV updated to 1.82.0

## [0.16.0] - 2025-06-25

### Added

- `remove_opts` field to `CACacheManager` struct. This field is an instance of `cacache::RemoveOpts` that allows for customization of the removal options when deleting items from the cache.

### Changed

- MSRV is now 1.82.0

- Updated the minimum versions of the following dependencies:
  - http-cache [0.21.0]

## [0.15.1] - 2025-01-30

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.20.1]
  - anyhow [1.0.95]
  - async-trait [0.1.85]
  - http [1.2.0]
  - reqwest [0.12.12]
  - serde [1.0.217]
  - url [2.5.4]

## [0.15.0] - 2024-11-12

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.20.0]
  - reqwest-middleware [0.4.0]

## [0.14.0] - 2024-04-10

### Changed

- Replaced `task-local-extensions::Extensions` with `http::Extensions`.

- Updated the minimum versions of the following dependencies:
  - http-cache [0.19.0]
  - http-cache-semantics [2.1.0]
  - http [1.1.0]
  - reqwest [0.12.3]
  - reqwest-middleware [0.3.0]

## [0.13.0] - 2024-01-15

### Added

- Implemented `overridden_cache_mode` method from `Middleware` trait. This method allows for overriding any cache mode set in the configuration, including `cache_mode_fn`.

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.18.0]

## [0.12.0] - 2023-11-01

### Added

- The following fields to `HttpCacheOptions` struct:
  - `cache_mode_fn` field. This is a closure that takes a `&http::request::Parts` and returns a `CacheMode` enum variant. This allows for the overriding of cache mode on a per-request basis.
  - `cache_bust` field. This is a closure that takes `http::request::Parts`, `Option<CacheKey>`, the default cache key (`&str`) and returns `Vec<String>` of keys to bust the cache for.

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.17.0]

## [0.11.3] - 2023-09-28

### Changed

- MSRV is now 1.67.1

- Implemented check to determine if a request is cacheable before running, avoiding the core logic if not.

- Updated the minimum versions of the following dependencies:
  - http-cache [0.16.0]

## [0.11.2] - 2023-09-26

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.15.0]

## [0.11.1] - 2023-07-28

### Changed

- Using new `cacache-tokio` feature in `http-cache` dependency

- Exporting `CacheManager` trait

- Updated the minimum versions of the following dependencies:
  - http-cache [0.14.0]
  - async-trait [0.1.72]
  - serde [1.0.178]

## [0.11.0] - 2023-07-19

### Changed

- Implemented new `HttpCacheOptions` struct

- Updated the minimum versions of the following dependencies:
  - http-cache [0.13.0]
  - anyhow [1.0.72]
  - async-trait [0.1.71]
  - serde [1.0.171]
  - tokio [1.29.1]

## [0.10.0] - 2022-06-05

### Changed

- MSRV is now 1.66.1
- Updated the minimum versions of the following dependencies:
  - http-cache [0.12.0]
  - anyhow [1.0.71]
  - reqwest [0.11.18]
  - reqwest-middleware [0.2.2]
  - serde [1.0.163]
  - tokio [1.28.2]
  - url [2.4.0]

## [0.9.0] - 2022-03-29

### Added

- `BadRequest` error type for request parsing failure.

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.11.0]
  - anyhow [1.0.70]
  - async-trait [0.1.68]
  - reqwest [0.11.16]
  - reqwest-middleware [0.2.1]
  - serde [1.0.159]
  - task-local-extensions [0.1.4]
  - tokio [1.27.0]

## [0.8.0] - 2023-03-08

### Changed

- MSRV is now 1.63.0
- Set `default-features = false` for `http-cache` dependency

- Updated the minimum versions of the following dependencies:
  - http-cache [0.10.1]
  - async-trait [0.1.66]
  - serde [1.0.154]
  - tokio [1.26.0]

## [0.7.2] - 2023-02-23

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.9.2]

## [0.7.1] - 2023-02-17

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.9.1]
  - http [0.2.9]

## [0.7.0] - 2023-02-16

### Changed

- MSRV is now 1.62.1

- Updated the minimum versions of the following dependencies:
  - http-cache [0.9.0]

## [0.6.0] - 2023-02-07

- MSRV is now 1.60.0

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.8.0]
  - anyhow [1.0.69]
  - async-trait [0.1.64]
  - reqwest [0.11.14]
  - serde [1.0.152]
  - tokio [1.25.0]

## [0.5.2] - 2022-11-16

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.7.2]
  - reqwest [0.11.13]
  - reqwest-middleware [0.2.0]

## [0.5.1] - 2022-11-06

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.7.1]
  - anyhow [1.0.66]
  - async-trait [0.1.58]
  - reqwest [0.11.12]
  - serde [1.0.147]
  - url [2.3.1]
  - task-local-extensions [0.1.3]
  - tokio [1.21.2]

## [0.5.0] - 2022-06-17

### Changed

- The `CacheManager` trait is now implemented directly against the `MokaManager` struct rather than `Arc<MokaManager>`. The Arc is now internal to the `MokaManager` struct as part of the `cache` field.

- Updated the minimum versions of the following dependencies:
  - http-cache [0.7.0]
  - async-trait [0.1.56]
  - http [0.2.8]
  - reqwest [0.11.11]
  - serde [1.0.137]
  - tokio [1.19.2]

## [0.4.5] - 2022-04-30

### Changed

- Updated the minimum versions of the following dependencies:
  - http-cache [0.6.5]
  - http [0.2.7]
  - tokio [1.18.0]

## [0.4.4] - 2022-04-26

### Added

- This changelog to keep a record of notable changes to the project.
