# Changelog

All notable changes to this project will be documented in this file. The
format is based on [Keep a Changelog], and this project aims to follow
[Semantic Versioning].

## [0.22.0] - 2025-11-26

### Changed

- `StatusCode` implements `uDebug`

## [0.21.0] - 2025-11-11

### Changed

- `EntityStore::signal_map` changed to not to return `Option`

## [0.20.0] - 2025-08-30

### Added

- `MediaType::Mp4`

## [0.18.1, 0.19.0] - 2025-07-20

### Fixed

- `Request::with_headers` does not clear existing headers

- failure when `json` without `postcard` cargo feature is selected

## [0.16.0, 0.17.0, 0.18.0] - 2025-07-18

### Added

- return error if serialization fails

### Changed

- `Request.encoding*` methods modified to accept `impl Into<MediaType>`
- `Messages` de/serialization

## [0.15.2] - 2025-07-17

### Changed

- dependencies versions updated

## [0.15.1] - 2025-06-20

### Added

- `PostcardSerialize::to_postcard_base64`, `PostcardDeserialize::try_from_postcard_base64` added

## [0.14.0] - 2025-05-05

### Add

- `MediaType::Any`

### Change

- `decode_content` can return empty response (`None`)

## [0.13.1] - 2025-05-05

### Add

- `deserialize_content`

### Change

- `decode_content` changed to only decode JsValue/Base64

## [0.12.1] - 2025-05-05

### Change

- removed unnecessary `async` for `decode_content`

## [0.11.0] - 2025-04-15

### Added

- HTTP status 409 Conflict

## [0.10.2] - 2025-02-24

### Changed

- signature of `CollectionStore::replace` changed to not to return existing collection

- `futures-signals-ext::replace_keyed` and `futures-signals-ext::synchronize` methods configured to use `ahash`

## [0.9.1] - 2025-02-11

### Added

- `CollectionStore::set_externally_loaded` and `CollectionStore::set_externally_loaded_cloned` added

## [0.9.0] - 2025-02-10

### Changed

- bump up `futures_signals_ext` version

## [0.8.1] - 2024-12-16

- ZIP mime types added

### New

- Rust 2024 experimentally selected

## [0.7.0] - 2024-10-31

### New

- clean up major version after previous attempts

## [0.5.1], [0.5.2], [0.5.3], [0.5.4], [0.5.5], [0.5.6] - 2024-10-30

### Fixed

- change type of `ufmt` and `Builder` (internal to crate) dependency

## [0.5.0] - 2024-10-30

### Changed

- `String` usage replaced with `SmolStr`

- `uformat` replaced with `uformat_smolstr`

- `Request` interface extended with `encoding` and `encoding_with_response`

- bump up dependencies versions

## [0.4.2] - 2024-10-07

### Changed

- bump up dependencies versions

## [0.4.1] - 2024-08-31

### Fixed

- versions 0.3.x were wrong, they changed interface

## [0.3.1] - 2024-08-31

### Changed

- `web_sys::RequestInit` deprecations fixed

## [0.3.0] - 2024-07-20

### Changed

- `Bytes` removed, serialization API changed to use plain `Vec<u8>`

## [0.2.9] - 2024-07-14

### Changed

- bump up versions

## [0.2.7] - 2024-05-08

### Changed

- bump up versions

## [0.2.6] - 2024-04-15

### Changed

- final `CollectionStore::load_merge` `merge_fn` callback behavior: the callback is called only if response
succeeds and the collection is present in the response (if the collection is not present, then the response
is/may be considered incorrect.)

## [0.2.5] - 2024-04-15

### Changed

- addition, `CollectionStore::load_merge` merge function takes `StatusCode` parameter with the result of the call

### Fixed

- storing received collection does not clear existing collection if the collection is missing in the response

## [0.2.4] - 2024-04-13

### Changed

- `CollectionStore::load_merge` merge function takes `Option<Vec>`, `None` is used when succeeded response does not contain collection

## [0.2.3] - 2024-04-03

### Changed

- bump up versions

## [0.2.2] - 2024-03-23

### Changed

- revert of removal of `set_transfer_state`

## [0.2.1] - 2024-03-23

### Changed

- bump up versions

### Changed

## [0.2.0] - 2024-03-10

### Changed

- refactoring of reset functions in both entity and collection stores

## [0.1.10] - 2024-02-29

### Changed

- bump up versions

## [0.1.9] - 2024-02-29

### Changed

- some asynchronous code extracted to artwrap crate

## [0.1.8] - 2024-02-27

### Changed

- bump up dependencies versions

## [0.1.7] - 2024-02-14

### New

- `CollectionStore::load_merge` added

- `Messages` switched to `SmolStr`
- messages in `Messages` extended with parameters
- message type `Section` introduced
- `Messages::localize` and `Message::localize` added
- `Messages::extend` added

### Changed

- `New` and `Dirty` traits have `Sized` bound moved to places where it has sense
- `StatusCode::Undefined` made private, interface of `TransferState` changed to use `Option`

### Fixes

- flattening of messages in `EntityResponse` made manual in order to allow postcard serializer to determine collection size

## [0.1.6] - 2023-11-15

### New

- `MediaType::Xlsx` added

### Changed

- bounds on loading methods simplified, `Clone` is not mandatory for `E`

## [0.1.5] - 2023-10-23

### New

- `Messages::anything_for_key_signal` added
- `collection_state_from_vec` added

### Changed

- API to insert to sorted collections changed, `cmp` function used instead of key
- some `CollectionStore` associated functions moved to underlying crate

### Fixes

- `Messages::error` is recalculated when key is removed

## [0.1.4] - 2023-08-20

### Added

- Signals to `Messages`.
- Iterating for `FileList`.
- `Display` for `MediaType`.

### Changed

- `tracing` feature removed, `log` left. `log` can easily be chained with `tracing`.
- `futures-timeout` removed as it depends on `async_io` which does not suppport `wasm`, own `timeout` and `TimeoutFuture` added as a replacement.
