# Changelog

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

## 0.1.7
### Patch Changes
* Dependency versions are now pinned to exact versions (`=`) instead of using compatible version ranges (`^`). Affected libraries:
  - [kameleoon-trace-logging][kameleoon-trace-logging]
  - [kameleoon-reqwest-eventsource][kameleoon-reqwest-eventsource]

[kameleoon-trace-logging]: https://crates.io/crates/kameleoon-trace-logging
[kameleoon-reqwest-eventsource]: https://crates.io/crates/kameleoon-reqwest-eventsource

## 0.1.6
### Features
* Replaced `String` return types with `Arc<str>` across several SDK Core APIs and data structures to improve performance and reduce unnecessary allocations.
  - Affected methods:
    - [`get_variation()`][get_variation]
    - [`get_variations()`][get_variations]
    - [`is_feature_active()`][is_feature_active]
    - [`get_datafile()`][get_datafile]
  - Affected types:
    - [`DataFile`][datafile]
    - [`Variation`][variation]
    - [`Variable`][variable]
    - [`Rule`][rule]
  - This change may require updates to consumer code that relies on `String`-specific APIs or type signatures.

[variation]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#variation
[variable]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#variable
[rule]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#rule

## 0.1.5
### Features
* Added support for proxy hosts. You can provide a proxy via [`KameleoonClientConfig`][additional_config] or an external file.
* Updated evaluation and tracking logic to comply with GDPR requirements when consent is not given:
    - If behavior is **partially blocked**, the default variation will be returned.
    - If behavior is **completely blocked**, an exception will be thrown.
* Added the [`evaluate_audiences`][evaluate_audiences] method. This method iterates over all Audiences Explorer segments, evaluates each one, and tracks the segments for which the visitor is targeted using the [`TARGETINGSEGMENT`](https://developers.kameleoon.com/apis/data-api-rest/all-endpoints/post-visit-events/) event.
* Added support for variation simulation when feature flags are **inactive (OFF state)** across the following methods:
  - [`get_variation()`][get_variation]
  - [`get_varitions()`][get_variations]
  - [`is_feature_active()`][is_feature_active]

[evaluate_audiences]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#evaluate_audiences
[get_variation]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#get_variation
[get_variations]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#get_variations
[is_feature_active]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#is_feature_active
[get_datafile]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#get_datafile
[datafile]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#datafile
[additional_config]: https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/rust-sdk/#additional-configuration

## 0.1.4
### Features
* Added a new `date_modified` property to the [`DataFile`][datafile] object returned by the [`get_datafile()`][get_datafile] method.

## 0.1.3
### Features
* Added support for **during the current visit** and **during any of the last visits** settings across the following targeting conditions:
  - Converted Goal
  - Feature Flag
  - Web Experiment
  - Personalization
  - Exclusive Campaign

## 0.1.2
### Patch changes
* Updated dependencies:
  - kameleoon-reqwest-eventsource = "0.6.2"


## 0.1.1
### Bug Fixes
* Updated the `Cargo.toml` file to include the project homepage.


## 0.1.0
### Features
* Initial release of the `kameleoon-core` crate
* Shared core implementation for Kameleoon SDKs across multiple programming languages
* Support for client configuration, initialization, and lifecycle management
* Datafile loading, refresh, and update handling
* Feature flag and experiment evaluation engine
* Visitor data, targeting, tracking, and remote data support
* Shared core types, error handling, and logging infrastructure
