All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: These changes are not considered notable:
- build
- documentation
- dependencies
- Fixed an edge case issue where the client was failing to send metrics after 10 minutes of not having metrics (#219)
- Fixed an issue where the server not sending the encoding would break file saving (#215)
- Fixed an issue where the SDK running on aarch64 wouldn't load the binary correctly
- Context object correctly dumps to JSON
- Upgrade core engine library to allow ffi version 1.16.3
- Upgrade core engine library to support ARM on legacy Mac
- Upgrade core engine library to support ARM on Linux
- No longer possible to override built in strategies with custom strategies (#152)
- No longer possible to access built in strategy's objects, these are now native code (#152)
- Core of the SDK swapped for Yggdrasil engine (#152)
- increased accuracy of rollout distribution (#200)
- feature_enabled in variants (#197)
- fix issue with strategy variant stickiness (#198)
- segments now work with variants (#194)
- do not fail when case insentive enabled while having a complex context object (#191)
- emit warning when overriding a built in strategy (#187)
- Reverted "feat: automatically generated instance_id (#179)" (#185)
- Client spec version should be loaded without touching the gemspec
- metrics data now includes information about the core engine (#178)
- to_s method on the context object now includes current time (#175)
- drop support for MRI 2.5 and JRuby 9.2 (#174)
- current_time property on the context now handles DateTimes as well as strings (#173)
5.0.1 - 2024-03-27
- make user-agent headers more descriptive (#168)
- make client more resilient to non-conforming responses from
unleash-edge
(#162)- while the unleash server provides always valid responses, (at least some versions of) unleash-edge can provide an unexpected JSON response (null instead of empty array).
- fixed the handling of the response, so we do not throw exceptions in this situation.
5.0.0 - 2023-10-30
- change seed for variantutils to ensure fair distribution (#160)
- client specification is here
- A new seed is introduced to ensure a fair distribution for variants, addressing the issue of skewed variant distribution due to using the same hash string for both gradual rollout and variant allocation.
4.6.0 - 2023-10-16
- dependant toggles (#155)
- client specification is here
4.5.0 - 2023-07-05
- variants in strategies (#148)
- issue described here (#147)
- groupId override for variants
4.4.4 - 2023-07-05
- flexible rollout strategy without context (#146)
- The flexible rollout strategy should evaluate default and random stickiness even if context is not provided.
4.4.3 - 2023-06-14
- Add Context#to_h method (#136)
- Bootstrapped variants now work when client is disabled (#138)
- Variant metrics are now sent correctly to Unleash. Fixed a typo in the payload name. (#145)
- Automatically disable metrics/MetricsReporter when client is disabled (#139) (#140)
4.4.2 - 2023-01-05
- Add Client#disabled? method (#130)
4.4.1 - 2022-12-07
- exception no longer bubbles up in constraints when context is nil (#127)
- variants metrics did count toggles correctly (#126)
- prevent race condition when manipulating metrics data (#122)
- allow passing user_id as integer (#119)
4.4.0 - 2022-09-19
- Allow custom strategies (#96)
- Global segments (#114)
- Initializing client configuration from constructor (#117)
- Support int context in set comparison (#115)
4.3.0 - 2023-07-14
- dynamic http headers via Proc or Lambda (#107)
- Fixed ToggleFetcher#save! to close opened files on failure. (#97)
- Refactored ToggleFetcher#read! (#106)
4.2.1 - 2022-03-29
- correct logic for default values on feature toggles so toggle value respected when toggle exists and default is true (#93)
4.2.0 - 2022-03-18
- Advanced constraints operators (#92)
- Default to the client never giving up trying to reach the server even after repeated failures (#91)
4.1.0 - 2022-02-11
- feat: Implement custom bootstrapping on startup (#88)
- feat: add support for cidr in
RemoteAddress
strategy (#77)
- default values for
metrics_interval
to60s
andretry_limit
to5
(#78)
4.0.0 - 2021-12-16
- Support for projects query (requires unleash 4.x) (#38)
- Allow passing blocks to is_enabled? to determine default_result (#33)
- Implement custom stickiness (#69)
- Allow using custom_http_headers from the CLI utility (#75)
- Allow context to correctly resolve camelCase property values (#74)
- Avoid unlikely situation of config changing under the read operation due to backup path file being incorrectly set (#63)
- change how we handle the server api url (avoid double slashes in urls used for API calls.)
- default values: refresh_interval => 10, metrics_interval=> 30 (#59)
- changed metrics reporting behavior (#66)
- only send metrics if there is data to send. (#58)
- in Client#get_variant() allow context and fallback_variant as nil (#51)