flipper 1.0.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.github/workflows/ci.yml +7 -3
- data/.github/workflows/examples.yml +27 -5
- data/Changelog.md +326 -272
- data/Gemfile +4 -4
- data/README.md +13 -11
- data/benchmark/typecast_ips.rb +8 -0
- data/docs/images/flipper_cloud.png +0 -0
- data/examples/cloud/backoff_policy.rb +13 -0
- data/examples/cloud/cloud_setup.rb +16 -0
- data/examples/cloud/forked.rb +7 -2
- data/examples/cloud/threaded.rb +15 -18
- data/examples/expressions.rb +213 -0
- data/examples/strict.rb +18 -0
- data/flipper.gemspec +1 -2
- data/lib/flipper/actor.rb +6 -3
- data/lib/flipper/adapter.rb +10 -0
- data/lib/flipper/adapter_builder.rb +44 -0
- data/lib/flipper/adapters/dual_write.rb +1 -3
- data/lib/flipper/adapters/failover.rb +0 -4
- data/lib/flipper/adapters/failsafe.rb +0 -4
- data/lib/flipper/adapters/http/client.rb +26 -7
- data/lib/flipper/adapters/http/error.rb +1 -1
- data/lib/flipper/adapters/http.rb +18 -13
- data/lib/flipper/adapters/instrumented.rb +0 -4
- data/lib/flipper/adapters/memoizable.rb +14 -19
- data/lib/flipper/adapters/memory.rb +4 -6
- data/lib/flipper/adapters/operation_logger.rb +0 -4
- data/lib/flipper/adapters/poll.rb +1 -3
- data/lib/flipper/adapters/pstore.rb +17 -11
- data/lib/flipper/adapters/read_only.rb +4 -4
- data/lib/flipper/adapters/strict.rb +47 -0
- data/lib/flipper/adapters/sync/feature_synchronizer.rb +10 -1
- data/lib/flipper/adapters/sync.rb +0 -4
- data/lib/flipper/cloud/configuration.rb +121 -52
- data/lib/flipper/cloud/telemetry/backoff_policy.rb +93 -0
- data/lib/flipper/cloud/telemetry/instrumenter.rb +26 -0
- data/lib/flipper/cloud/telemetry/metric.rb +39 -0
- data/lib/flipper/cloud/telemetry/metric_storage.rb +30 -0
- data/lib/flipper/cloud/telemetry/submitter.rb +98 -0
- data/lib/flipper/cloud/telemetry.rb +183 -0
- data/lib/flipper/configuration.rb +25 -4
- data/lib/flipper/dsl.rb +51 -0
- data/lib/flipper/engine.rb +27 -3
- data/lib/flipper/exporters/json/export.rb +1 -1
- data/lib/flipper/exporters/json/v1.rb +1 -1
- data/lib/flipper/expression/builder.rb +73 -0
- data/lib/flipper/expression/constant.rb +25 -0
- data/lib/flipper/expression.rb +71 -0
- data/lib/flipper/expressions/all.rb +11 -0
- data/lib/flipper/expressions/any.rb +9 -0
- data/lib/flipper/expressions/boolean.rb +9 -0
- data/lib/flipper/expressions/comparable.rb +13 -0
- data/lib/flipper/expressions/duration.rb +28 -0
- data/lib/flipper/expressions/equal.rb +9 -0
- data/lib/flipper/expressions/greater_than.rb +9 -0
- data/lib/flipper/expressions/greater_than_or_equal_to.rb +9 -0
- data/lib/flipper/expressions/less_than.rb +9 -0
- data/lib/flipper/expressions/less_than_or_equal_to.rb +9 -0
- data/lib/flipper/expressions/not_equal.rb +9 -0
- data/lib/flipper/expressions/now.rb +9 -0
- data/lib/flipper/expressions/number.rb +9 -0
- data/lib/flipper/expressions/percentage.rb +9 -0
- data/lib/flipper/expressions/percentage_of_actors.rb +12 -0
- data/lib/flipper/expressions/property.rb +9 -0
- data/lib/flipper/expressions/random.rb +9 -0
- data/lib/flipper/expressions/string.rb +9 -0
- data/lib/flipper/expressions/time.rb +9 -0
- data/lib/flipper/feature.rb +55 -0
- data/lib/flipper/gate.rb +1 -0
- data/lib/flipper/gate_values.rb +5 -2
- data/lib/flipper/gates/expression.rb +75 -0
- data/lib/flipper/instrumentation/statsd_subscriber.rb +2 -4
- data/lib/flipper/middleware/memoizer.rb +29 -13
- data/lib/flipper/model/active_record.rb +23 -0
- data/lib/flipper/poller.rb +1 -1
- data/lib/flipper/serializers/gzip.rb +24 -0
- data/lib/flipper/serializers/json.rb +19 -0
- data/lib/flipper/spec/shared_adapter_specs.rb +29 -11
- data/lib/flipper/test/shared_adapter_test.rb +24 -5
- data/lib/flipper/typecast.rb +34 -6
- data/lib/flipper/types/percentage.rb +1 -1
- data/lib/flipper/version.rb +1 -1
- data/lib/flipper.rb +38 -1
- data/spec/flipper/adapter_builder_spec.rb +73 -0
- data/spec/flipper/adapter_spec.rb +1 -0
- data/spec/flipper/adapters/http_spec.rb +39 -5
- data/spec/flipper/adapters/memoizable_spec.rb +15 -15
- data/spec/flipper/adapters/read_only_spec.rb +26 -11
- data/spec/flipper/adapters/strict_spec.rb +62 -0
- data/spec/flipper/adapters/sync/feature_synchronizer_spec.rb +27 -0
- data/spec/flipper/cloud/configuration_spec.rb +6 -23
- data/spec/flipper/cloud/telemetry/backoff_policy_spec.rb +108 -0
- data/spec/flipper/cloud/telemetry/metric_spec.rb +87 -0
- data/spec/flipper/cloud/telemetry/metric_storage_spec.rb +58 -0
- data/spec/flipper/cloud/telemetry/submitter_spec.rb +145 -0
- data/spec/flipper/cloud/telemetry_spec.rb +156 -0
- data/spec/flipper/cloud_spec.rb +12 -12
- data/spec/flipper/configuration_spec.rb +17 -0
- data/spec/flipper/dsl_spec.rb +39 -0
- data/spec/flipper/engine_spec.rb +108 -7
- data/spec/flipper/exporters/json/v1_spec.rb +3 -3
- data/spec/flipper/expression/builder_spec.rb +248 -0
- data/spec/flipper/expression_spec.rb +188 -0
- data/spec/flipper/expressions/all_spec.rb +15 -0
- data/spec/flipper/expressions/any_spec.rb +15 -0
- data/spec/flipper/expressions/boolean_spec.rb +15 -0
- data/spec/flipper/expressions/duration_spec.rb +43 -0
- data/spec/flipper/expressions/equal_spec.rb +24 -0
- data/spec/flipper/expressions/greater_than_or_equal_to_spec.rb +28 -0
- data/spec/flipper/expressions/greater_than_spec.rb +28 -0
- data/spec/flipper/expressions/less_than_or_equal_to_spec.rb +28 -0
- data/spec/flipper/expressions/less_than_spec.rb +32 -0
- data/spec/flipper/expressions/not_equal_spec.rb +15 -0
- data/spec/flipper/expressions/now_spec.rb +11 -0
- data/spec/flipper/expressions/number_spec.rb +21 -0
- data/spec/flipper/expressions/percentage_of_actors_spec.rb +20 -0
- data/spec/flipper/expressions/percentage_spec.rb +15 -0
- data/spec/flipper/expressions/property_spec.rb +13 -0
- data/spec/flipper/expressions/random_spec.rb +9 -0
- data/spec/flipper/expressions/string_spec.rb +11 -0
- data/spec/flipper/expressions/time_spec.rb +13 -0
- data/spec/flipper/feature_spec.rb +360 -1
- data/spec/flipper/gate_values_spec.rb +2 -2
- data/spec/flipper/gates/expression_spec.rb +108 -0
- data/spec/flipper/identifier_spec.rb +4 -5
- data/spec/flipper/instrumentation/statsd_subscriber_spec.rb +15 -1
- data/spec/flipper/middleware/memoizer_spec.rb +67 -0
- data/spec/flipper/model/active_record_spec.rb +61 -0
- data/spec/flipper/serializers/gzip_spec.rb +13 -0
- data/spec/flipper/serializers/json_spec.rb +13 -0
- data/spec/flipper/typecast_spec.rb +43 -7
- data/spec/flipper/types/actor_spec.rb +18 -1
- data/spec/flipper_integration_spec.rb +102 -4
- data/spec/flipper_spec.rb +89 -1
- data/spec/spec_helper.rb +5 -0
- data/spec/support/actor_names.yml +1 -0
- data/spec/support/fake_backoff_policy.rb +15 -0
- data/spec/support/spec_helpers.rb +11 -3
- metadata +107 -18
- data/lib/flipper/cloud/instrumenter.rb +0 -48
data/Changelog.md
CHANGED
@@ -2,56 +2,110 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## v1.1.1
|
6
|
+
|
7
|
+
### Bug Fixes
|
8
|
+
|
9
|
+
- Whoops! Anyone not using flipper-active_record would hit a missing require because of our fancy gemspecs (https://github.com/flippercloud/flipper/pull/785).
|
10
|
+
|
11
|
+
## v1.1.0
|
12
|
+
|
13
|
+
### Additions/Changes
|
14
|
+
|
15
|
+
- Better read-only mode for UI (https://github.com/flippercloud/flipper/pull/772).
|
16
|
+
- Allow configuring preload via a block similar to memoize (https://github.com/flippercloud/flipper/pull/771).
|
17
|
+
```ruby
|
18
|
+
Rails.application.configure do
|
19
|
+
# don't preload features for /assets/* but do for everything else
|
20
|
+
config.flipper.preload = ->(request) { !request.path.start_with?('/assets') }
|
21
|
+
end
|
22
|
+
```
|
23
|
+
- Added `strict` configuration to warn when accessing a feature that doesn't exist (https://github.com/flippercloud/flipper/pull/760, https://github.com/flippercloud/flipper/pull/763)
|
24
|
+
```ruby
|
25
|
+
Rails.application.configure do
|
26
|
+
# Setting to `true` or `:raise` will raise error when a feature doesn't exist.
|
27
|
+
# Use `:warn` to log a warning instead.
|
28
|
+
config.flipper.strict = !Rails.env.production?
|
29
|
+
end
|
30
|
+
```
|
31
|
+
- Handle deprecation of Rack::File in Rack 3.1 (https://github.com/flippercloud/flipper/pull/773).
|
32
|
+
- Human readable actor names in flipper-ui (https://github.com/flippercloud/flipper/pull/737).
|
33
|
+
- Expressions are now available and considered "alpha". They are not yet documented, but you can see examples in [examples/expressions.rb](examples/expressions.rb). Those using the `flipper-active_record` adapter will want to migrate the database so it can store JSON expressions (https://github.com/flippercloud/flipper/pull/692)
|
34
|
+
```
|
35
|
+
$ rails generate migration change_flipper_gates_value_to_text
|
36
|
+
```
|
37
|
+
```ruby
|
38
|
+
change_column :flipper_gates, :value, :text
|
39
|
+
```
|
40
|
+
- Allow head requests to api (https://github.com/flippercloud/flipper/pull/759)
|
41
|
+
- Cloud Telemetry alpha (https://github.com/flippercloud/flipper/pull/775).
|
42
|
+
- Easier statsd setup (https://github.com/flippercloud/flipper/pull/779).
|
43
|
+
```ruby
|
44
|
+
# You can now just do this in your configure block and it'll require the files and configure the client.
|
45
|
+
Flipper.configure do |conf|
|
46
|
+
conf.statsd = my_client
|
47
|
+
end
|
48
|
+
```
|
49
|
+
- Load cloud secrets from Rails credentials (https://github.com/flippercloud/flipper/pull/782)
|
50
|
+
```bash
|
51
|
+
$ rails credentials:edit -e development
|
52
|
+
```
|
53
|
+
```yaml
|
54
|
+
flipper:
|
55
|
+
cloud_token: <your-cloud-token>
|
56
|
+
cloud_sync_secret: <your-webhook-secret>
|
57
|
+
```
|
58
|
+
|
5
59
|
## 1.0.0
|
6
60
|
|
7
61
|
### Additions/Changes
|
8
62
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
63
|
+
- ui, api: Allow Rack 3 (https://github.com/flippercloud/flipper/pull/670)
|
64
|
+
- cloud: The `flipper-cloud` gem has been merged into the `flipper` and no longer needs to be added separately. Configure cloud by setting the `FLIPPER_CLOUD_TOKEN` environment variable. (https://github.com/flippercloud/flipper/pull/743)
|
65
|
+
```diff
|
66
|
+
# Gemfile
|
67
|
+
gem 'flipper'
|
68
|
+
- gem 'flipper-cloud'
|
69
|
+
```
|
16
70
|
|
17
71
|
### Breaking Changes
|
18
72
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
73
|
+
- Removed `bool`, `actors`, `time`, `actor`, `percentage_of_actors`, and `percentage_of_time` methods on `Flipper` and `Flipper::DSL`. They are rarely if ever used and conflict with some upcoming features. If you are using them, you can migrate via a search and replace like so:
|
74
|
+
- Change `Flipper.bool` => `Flipper::Types::Boolean.new`
|
75
|
+
- Change `Flipper.boolean` => `Flipper::Types::Boolean.new`
|
76
|
+
- Change `Flipper.actor` => `Flipper::Types::Actor.new`
|
77
|
+
- Change `Flipper.percentage_of_actors` => `Flipper::Types::PercentageOfActors.new`
|
78
|
+
- Change `Flipper.actors` => `Flipper::Types::PercentageOfActors.new`
|
79
|
+
- Change `Flipper.percentage_of_time` => `Flipper::Types::PercentageOfTime.new`
|
80
|
+
- Change `Flipper.time` => `Flipper::Types::PercentageOfTime.new`
|
27
81
|
|
28
82
|
## 0.28.3
|
29
83
|
|
30
|
-
|
84
|
+
- Updated cloud config to ensure that poll adapter ONLY syncs from cloud to local adapter (and never back to cloud). Shouldn't affect anyone other than making things more safe if an incorrect response is received from the cloud poll endpoint. (https://github.com/flippercloud/flipper/pull/740)
|
31
85
|
|
32
86
|
## 0.28.2
|
33
87
|
|
34
88
|
### Additions/Changes
|
35
89
|
|
36
|
-
|
90
|
+
- UI: fix path to bundled assets when mounted in another Rack app (https://github.com/flippercloud/flipper/pull/742)
|
37
91
|
|
38
92
|
## 0.28.1
|
39
93
|
|
40
94
|
### Additions/Changes
|
41
95
|
|
42
|
-
|
43
|
-
|
96
|
+
- Use new method of making logs bold for rails (https://github.com/flippercloud/flipper/pull/726)
|
97
|
+
- Bundle bootstrap, jquery and poppler with the library. (https://github.com/flippercloud/flipper/pull/731)
|
44
98
|
|
45
99
|
## 0.28.0
|
46
100
|
|
47
101
|
### Additions/Changes
|
48
102
|
|
49
|
-
|
103
|
+
- Allow multiple actors for Flipper.enabled?. Improves performance of feature flags for multiple actors and simplifies code for users of flipper. This likely breaks things for anyone using Flipper internal classes related to actors, but that isn't likely you so you should be fine.
|
50
104
|
```diff
|
51
105
|
- [user, user.team, user.org].any? { |actor| Flipper.enabled?(:my_feature, actor) }
|
52
106
|
+ Flipper.enabled?(:my_feature, user, user.team, user.org)
|
53
107
|
```
|
54
|
-
|
108
|
+
- If you currently use `actor.thing` in a group, you'll need to change it to `actor.actor`.
|
55
109
|
```diff
|
56
110
|
- Flipper.register(:our_group) do |actor|
|
57
111
|
- actor.thing.is_a?(OurClassName)
|
@@ -60,7 +114,7 @@ All notable changes to this project will be documented in this file.
|
|
60
114
|
+ actor.actor.is_a?(OurClassName)
|
61
115
|
+ end
|
62
116
|
```
|
63
|
-
|
117
|
+
- If you currently use `context.thing` in a group or elsewhere, you'll need to change it to `context.actors`.
|
64
118
|
```diff
|
65
119
|
- Flipper.register(:our_group) do |actor, context|
|
66
120
|
- context.thing.is_a?(OurClassName)
|
@@ -72,155 +126,155 @@ All notable changes to this project will be documented in this file.
|
|
72
126
|
|
73
127
|
### Deprecations
|
74
128
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
129
|
+
- `:thing` in `enabled?` instrumentation payload. Use `:actors` instead.
|
130
|
+
```diff
|
131
|
+
ActiveSupport::Notifications.subscribe('enabled?.feature_operation.flipper') do |name, start, finish, id, payload|
|
132
|
+
- payload[:thing]
|
133
|
+
+ payload[:actors]
|
134
|
+
end
|
135
|
+
```
|
82
136
|
|
83
137
|
## 0.27.1
|
84
138
|
|
85
|
-
|
139
|
+
- Quick fix for missing require of "flipper/version" that was causing issues with some flipper-ui people.
|
86
140
|
|
87
141
|
## 0.27.0
|
88
142
|
|
89
|
-
|
143
|
+
- Easy Import/Export (https://github.com/flippercloud/flipper/pull/709). This has some breaking changes but only if you are using flipper internals. If you are just using Flipper.\* methods, you'll be fine.
|
90
144
|
|
91
145
|
## 0.26.2
|
92
146
|
|
93
|
-
|
147
|
+
- Improve Active Record Adapter get/get_multi/get_all performance by 5-10x when dealing with thousands of gate values (https://github.com/flippercloud/flipper/pull/707).
|
94
148
|
|
95
149
|
## 0.26.1
|
96
150
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
151
|
+
- Improve `Flipper#enabled?` performance by ~37%-55% (https://github.com/flippercloud/flipper/pull/706)
|
152
|
+
- Make Memory adapter threadsafe (https://github.com/flippercloud/flipper/pull/702 and https://github.com/flippercloud/flipper/pull/703)
|
153
|
+
- ActiveRecord adapter: wrap all reads/writes in `with_connection` (https://github.com/flippercloud/flipper/pull/705)
|
154
|
+
- Improve performance of background polling (https://github.com/flippercloud/flipper/pull/699)
|
155
|
+
- Remove executables directive from gem (https://github.com/flippercloud/flipper/pull/693)
|
102
156
|
|
103
157
|
## 0.26.0
|
104
158
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
159
|
+
- Cloud Background Polling (https://github.com/flippercloud/flipper/pull/682)
|
160
|
+
- Changed default branch from master to main
|
161
|
+
- Allow configuring railtie via ENV vars (https://github.com/flippercloud/flipper/pull/681)
|
162
|
+
- flipper-ui: Fix issue preventing feature flags being enabled when confirm_fully_enable is on and feature_removal_enabled is off (https://github.com/flippercloud/flipper/pull/680)
|
109
163
|
|
110
164
|
## 0.25.4
|
111
165
|
|
112
|
-
|
166
|
+
- Added read_only UI config option (https://github.com/flippercloud/flipper/pull/679)
|
113
167
|
|
114
168
|
## 0.25.3
|
115
169
|
|
116
|
-
|
117
|
-
|
118
|
-
|
170
|
+
- Added configurable confirm warning for fully enabling a feature (https://github.com/flippercloud/flipper/pull/665)
|
171
|
+
- Update rack protection to < 4 (https://github.com/flippercloud/flipper/pull/675)
|
172
|
+
- Check sadd_returns_boolean on the actual client class rather than ::Redis (https://github.com/flippercloud/flipper/pull/677)
|
119
173
|
|
120
174
|
## 0.25.2
|
121
175
|
|
122
|
-
|
176
|
+
- Fix deprecation warnings for Redis >= 4.8.0 (https://github.com/flippercloud/flipper/pull/660)
|
123
177
|
|
124
178
|
## 0.25.1
|
125
179
|
|
126
180
|
### Additions/Changes
|
127
181
|
|
128
|
-
|
129
|
-
|
130
|
-
|
182
|
+
- ActiveRecord: use provided `gate_class` option when calling `#get_all` (https://github.com/flippercloud/flipper/pull/647)
|
183
|
+
- Relaxed the rack-protection version to support latest (https://github.com/flippercloud/flipper/commit/f4a41c541ccf14c535a61c6bc6fe7eeabbfc7e71).
|
184
|
+
- Configure ActiveRecord adapter immediately upon require of flipper-active_record (https://github.com/flippercloud/flipper/pull/652)
|
131
185
|
|
132
186
|
## 0.25.0
|
133
187
|
|
134
188
|
### Additions/Changes
|
135
189
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
190
|
+
- Added a prompt in Flipper UI for the 'Delete' button to prevent accidental delete of features (https://github.com/flippercloud/flipper/pull/625)
|
191
|
+
- Added failsafe adapter (https://github.com/flippercloud/flipper/pull/626)
|
192
|
+
- Removed previously deprecated options and settings. Those upgrading from `<0.21` should upgrade to `~>0.24` first and fix any deprecation warnings when initializing Flipper. (https://github.com/flippercloud/flipper/pull/627)
|
193
|
+
- ActiveRecord: base class for internal models (https://github.com/flippercloud/flipper/pull/629)
|
194
|
+
- Remove use of `Rack::BodyProxy` in the memoizer middleware (https://github.com/flippercloud/flipper/pull/631)
|
141
195
|
|
142
196
|
## 0.24.1
|
143
197
|
|
144
198
|
### Additions/Changes
|
145
199
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
200
|
+
- flipper-api: `exclude_gates` parameter to exclude gate data in GETs (https://github.com/flippercloud/flipper/pull/572).
|
201
|
+
- Make it possible to disable internal memoization (https://github.com/flippercloud/flipper/pull/612).
|
202
|
+
- Add Flipper::Actor#hash so actors can be hash keys (https://github.com/flippercloud/flipper/pull/616).
|
203
|
+
- Pretty Up `rails routes` again and make rack-protection dependency less strict (https://github.com/flippercloud/flipper/pull/619).
|
204
|
+
- Add kwargs for method_missing using ruby 3.0 (https://github.com/flippercloud/flipper/pull/620).
|
205
|
+
- Relax the rack-protection dependency (https://github.com/flippercloud/flipper/commit/c1cb9cd78140c2b09123687642558101e6e5d37d).
|
152
206
|
|
153
207
|
## 0.24.0
|
154
208
|
|
155
209
|
### Additions/Changes
|
156
210
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
211
|
+
- Add Ruby 3.0 and 3.1 to the CI matrix and fix groups block arity check for ruby 3 (https://github.com/flippercloud/flipper/pull/601)
|
212
|
+
- Removed support for Ruby 2.5 (which was end of line 9 months ago)
|
213
|
+
- Add (alpha) client side instrumentation of events to cloud (https://github.com/flippercloud/flipper/pull/602)
|
214
|
+
- Fix deprecated uses of Redis#pipelined (https://github.com/flippercloud/flipper/pull/603). redis-rb >= 3 now required.
|
215
|
+
- Fix Flipper UI Rack application when `Rack::Session::Pool` is used to build it (https://github.com/flippercloud/flipper/pull/606).
|
162
216
|
|
163
217
|
## 0.23.1
|
164
218
|
|
165
219
|
### Additions/Changes
|
166
220
|
|
167
|
-
|
221
|
+
- Relax dalli version constraint (https://github.com/flippercloud/flipper/pull/596)
|
168
222
|
|
169
223
|
### Bug Fixes
|
170
224
|
|
171
|
-
|
225
|
+
- Fix railtie initialization to mount middleware after config/intializers/\* (https://github.com/flippercloud/flipper/pull/586)
|
172
226
|
|
173
227
|
## 0.23.0
|
174
228
|
|
175
229
|
### Additions/Changes
|
176
230
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
231
|
+
- Allow some HTML in banner and descriptions (https://github.com/flippercloud/flipper/pull/570).
|
232
|
+
- Moved some cloud headers to http client (https://github.com/flippercloud/flipper/pull/567).
|
233
|
+
- Update flipper-ui jquery and bootstrap versions (https://github.com/flippercloud/flipper/issues/565 and https://github.com/flippercloud/flipper/pull/566).
|
234
|
+
- Moved docs to www.flippercloud.io/docs (https://github.com/flippercloud/flipper/pull/574).
|
235
|
+
- PStore adapter now defaults to thread safe and no longer supports `.thread_safe` (https://github.com/flippercloud/flipper/commit/4048704fefe41b716015294a19a0b94546637630).
|
236
|
+
- Add failover adapter (https://github.com/flippercloud/flipper/pull/584).
|
237
|
+
- Improve http adapter error message (https://github.com/flippercloud/flipper/pull/587).
|
238
|
+
- Rails 7 support (mostly in https://github.com/flippercloud/flipper/pull/592).
|
185
239
|
|
186
240
|
## 0.22.2
|
187
241
|
|
188
242
|
### Additions/Changes
|
189
243
|
|
190
|
-
|
244
|
+
- Allow adding multiple actors at once in flipper-ui via comma separation (configurable via `Flipper::UI.configuration.actors_separator`) (https://github.com/flippercloud/flipper/pull/556)
|
191
245
|
|
192
246
|
### Bug Fixes
|
193
247
|
|
194
|
-
|
248
|
+
- Fix railtie initialization to avoid altering middleware order (https://github.com/flippercloud/flipper/pull/563)
|
195
249
|
|
196
250
|
## 0.22.1
|
197
251
|
|
198
252
|
### Additions/Changes
|
199
253
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
254
|
+
- Remove Octicons and replace with a pure CSS status circle (https://github.com/flippercloud/flipper/pull/547)
|
255
|
+
- Rescue unique errors in AR and Sequel when setting value (https://github.com/flippercloud/flipper/commit/87f5a98bce7baad7a27b75b5bce3256967769f27)
|
256
|
+
- Add a Content-Security-Policy to flipper-ui (https://github.com/flippercloud/flipper/pull/552)
|
257
|
+
- Fix Synchronizer issue that occurs for ActiveRecord adapter (https://github.com/flippercloud/flipper/pull/554)
|
204
258
|
|
205
259
|
## 0.22.0
|
206
260
|
|
207
261
|
### Additions/Changes
|
208
262
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
263
|
+
- Enable log subscriber by default in Rails (https://github.com/flippercloud/flipper/pull/525)
|
264
|
+
- Remove memoizer from API and UI (https://github.com/flippercloud/flipper/pull/527). If you are using the UI or API without configuring the default instance of Flipper, you'll need to enable memoization if you want it. For examples, see the examples/ui and examples/api directories.
|
265
|
+
- Fix SQL reserved word use in get_all for ActiveRecord and Sequel (https://github.com/flippercloud/flipper/pull/536).
|
266
|
+
- Handle spaces in names gracefully in UI (https://github.com/flippercloud/flipper/pull/541).
|
213
267
|
|
214
268
|
## 0.21.0
|
215
269
|
|
216
270
|
### Additions/Changes
|
217
271
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
272
|
+
- Default to using memory adapter (https://github.com/flippercloud/flipper/pull/501)
|
273
|
+
- Adapters now configured on require when possible (https://github.com/flippercloud/flipper/pull/502)
|
274
|
+
- Added cloud recommendation to flipper-ui. Can be disabled with `Flipper::UI.configure { |config| config.cloud_recommendation = false }`. Just want to raise awareness that more is available if people want it (https://github.com/flippercloud/flipper/pull/504)
|
275
|
+
- Added default `flipper_id` implementation via `Flipper::Identifier` and automatically included it in ActiveRecord and Sequel models (https://github.com/flippercloud/flipper/pull/505)
|
276
|
+
- Deprecate superflous sync_method setting (https://github.com/flippercloud/flipper/pull/511)
|
277
|
+
- Flipper is now pre-configured when used with Rails. By default, it will [memoize and preload all features for each request](https://flippercloud.io/docs/optimization#memoization). (https://github.com/flippercloud/flipper/pull/506)
|
224
278
|
|
225
279
|
### Upgrading
|
226
280
|
|
@@ -228,359 +282,359 @@ You should be able to upgrade to 0.21 without any breaking changes. However, if
|
|
228
282
|
|
229
283
|
1. Adapters are configured when on require, so unless you are using caching or other customizations, you can remove adapter configuration.
|
230
284
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
285
|
+
```diff
|
286
|
+
# config/initializers/flipper.rb
|
287
|
+
- Flipper.configure do |config|
|
288
|
+
- config.default { Flipper.new(Flipper::Adapters::ActiveRecord.new) }
|
289
|
+
- end
|
290
|
+
```
|
237
291
|
|
238
292
|
2. `Flipper::Middleware::Memoizer` will be enabled by default -- including preloading. **Note**: You may want to disable preloading (see below) if you have > 100 features.
|
239
293
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
294
|
+
```diff
|
295
|
+
# config/initializers/flipper.rb
|
296
|
+
- Rails.configuration.middleware.use Flipper::Middleware::Memoizer,
|
297
|
+
- preload: [:stats, :search, :some_feature]
|
298
|
+
+ Rails.application.configure do
|
299
|
+
+ # Uncomment to configure which features to preload on all requests
|
300
|
+
+ # config.flipper.preload = [:stats, :search, :some_feature]
|
301
|
+
+ #
|
302
|
+
+ # Or, you may want to disable preloading entirely:
|
303
|
+
+ # config.flipper.preload = false
|
304
|
+
+ end
|
305
|
+
```
|
252
306
|
|
253
307
|
3. `#flipper_id`, which is used to enable features for specific actors, is now defined by [Flipper::Identifier](lib/flipper/identifier.rb) on all ActiveRecord and Sequel models. You can remove your implementation if it is in the form of `ModelName;id`.
|
254
308
|
|
255
309
|
4. When using `flipper-cloud`, The `Flipper::Cloud.app` webhook receiver is now mounted at `/_flipper` by default.
|
256
310
|
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
311
|
+
```diff
|
312
|
+
# config/routes.rb
|
313
|
+
- mount Flipper::Cloud.app, at: "/_flipper"
|
314
|
+
```
|
261
315
|
|
262
316
|
## 0.20.4
|
263
317
|
|
264
318
|
### Additions/Changes
|
265
319
|
|
266
|
-
|
267
|
-
|
268
|
-
|
320
|
+
- Allow actors and time gates to deal with decimal percentages (https://github.com/flippercloud/flipper/pull/492)
|
321
|
+
- Change Flipper::Cloud::Middleware to receive webhooks at / in addition to /webhooks.
|
322
|
+
- Add `write_through` option to ActiveSupportCacheStore adapter to support write-through caching (https://github.com/flippercloud/flipper/pull/512)
|
269
323
|
|
270
324
|
## 0.20.3
|
271
325
|
|
272
326
|
### Additions/Changes
|
273
327
|
|
274
|
-
|
328
|
+
- Changed the internal structure of how the memory adapter stores things.
|
275
329
|
|
276
330
|
## 0.20.2
|
277
331
|
|
278
332
|
### Additions/Changes
|
279
333
|
|
280
|
-
|
281
|
-
|
334
|
+
- Http adapter now raises error when enable/disable/add/remove/clear fail.
|
335
|
+
- Cloud adapter sends some extra info like hostname, ruby version, etc. for debugging and decision making.
|
282
336
|
|
283
337
|
## 0.20.1
|
284
338
|
|
285
339
|
### Additions/Changes
|
286
340
|
|
287
|
-
|
341
|
+
- Just a minor tweak to cloud webhook middleware to provide more debugging information about why a hook wasn't successful.
|
288
342
|
|
289
343
|
## 0.20.0
|
290
344
|
|
291
345
|
### Additions/Changes
|
292
346
|
|
293
|
-
|
347
|
+
- Add support for webhooks to `Flipper::Cloud` (https://github.com/flippercloud/flipper/pull/489).
|
294
348
|
|
295
349
|
## 0.19.1
|
296
350
|
|
297
351
|
### Additions/Changes
|
298
352
|
|
299
|
-
|
300
|
-
|
353
|
+
- Bump rack-protection version to < 2.2 (https://github.com/flippercloud/flipper/pull/487)
|
354
|
+
- Add memoizer_options to Flipper::Api.app (https://github.com/flippercloud/flipper/commit/174ad4bb94046a25c432d3c53fe1ff9f5a76d838)
|
301
355
|
|
302
356
|
## 0.19.0
|
303
357
|
|
304
358
|
### Additions/Changes
|
305
359
|
|
306
|
-
|
307
|
-
|
360
|
+
- 100% of actors is now considered conditional. Feature#on?, Feature#conditional?, Feature#state would all be affected. See https://github.com/flippercloud/flipper/issues/463 for more.
|
361
|
+
- Several doc updates.
|
308
362
|
|
309
363
|
## 0.18.0
|
310
364
|
|
311
365
|
### Additions/Changes
|
312
366
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
367
|
+
- Add support for feature descriptions to flipper-ui (https://github.com/flippercloud/flipper/pull/461).
|
368
|
+
- Remove rubocop (https://github.com/flippercloud/flipper/pull/469).
|
369
|
+
- flipper-ui redesign (https://github.com/flippercloud/flipper/pull/470).
|
370
|
+
- Removed support for ruby 2.4.
|
371
|
+
- Added support for ruby 2.7.
|
372
|
+
- Removed support for Rails 4.x.x.
|
373
|
+
- Removed support for customizing actors, groups, % of actors and % of time text in flipper-ui in favor of automatic and more descriptive text.
|
320
374
|
|
321
375
|
## 0.17.2
|
322
376
|
|
323
377
|
### Additions/Changes
|
324
378
|
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
379
|
+
- Avoid errors on import when there are no features and shared specs/tests for get all with no features (https://github.com/flippercloud/flipper/pull/441 and https://github.com/flippercloud/flipper/pull/442)
|
380
|
+
- ::ActiveRecord::RecordNotUnique > ActiveRecord::RecordNotUnique (https://github.com/flippercloud/flipper/pull/444)
|
381
|
+
- Clear gate values on enable (https://github.com/flippercloud/flipper/pull/454)
|
382
|
+
- Remove use of multi from redis adapter (https://github.com/flippercloud/flipper/pull/451)
|
329
383
|
|
330
384
|
## 0.17.1
|
331
385
|
|
332
|
-
|
386
|
+
- Fix require in flipper-active_record (https://github.com/flippercloud/flipper/pull/437)
|
333
387
|
|
334
388
|
## 0.17.0
|
335
389
|
|
336
390
|
### Additions/Changes
|
337
391
|
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
392
|
+
- Allow shorthand block notation on group types (https://github.com/flippercloud/flipper/pull/406)
|
393
|
+
- Relax active record/support constraints to support Rails 6 (https://github.com/flippercloud/flipper/pull/409)
|
394
|
+
- Allow disabling fun (https://github.com/flippercloud/flipper/pull/413)
|
395
|
+
- Include thing_value in payload of Instrumented#enable and #disable (https://github.com/flippercloud/flipper/pull/417)
|
396
|
+
- Replace Erubis with Erubi (https://github.com/flippercloud/flipper/pull/407)
|
397
|
+
- Allow customizing Rack::Protection middleware list (https://github.com/flippercloud/flipper/pull/385)
|
398
|
+
- Allow setting write_timeout for ruby 2.6+ (https://github.com/flippercloud/flipper/pull/433)
|
399
|
+
- Drop support for Ruby 2.1, 2.2, and 2.3 (https://github.com/flippercloud/flipper/commit/cf58982e70de5e6963b018ceced4f36a275f5b5d)
|
400
|
+
- Add support for Ruby 2.6 (https://github.com/flippercloud/flipper/commit/57888311449ec81184d3d47ba9ae5cb1ad4a2f45)
|
401
|
+
- Remove support for Rails 3.2 (https://github.com/flippercloud/flipper/commit/177c48c4edf51d4e411e7c673e30e06d1c66fb40)
|
402
|
+
- Add write_timeout for flipper http adapter for ruby 2.6+ (https://github.com/flippercloud/flipper/pull/433)
|
403
|
+
- Relax moneta version to allow for < 1.2 (https://github.com/flippercloud/flipper/pull/434).
|
404
|
+
- Improve active record idempotency (https://github.com/flippercloud/flipper/pull/436).
|
405
|
+
- Allow customizing add actor placeholder text (https://github.com/flippercloud/flipper/commit/5faa1e9cf66b68f8227d2f8408fb448a14676c45)
|
352
406
|
|
353
407
|
## 0.16.2
|
354
408
|
|
355
409
|
### Additions/Changes
|
356
410
|
|
357
|
-
|
358
|
-
|
359
|
-
|
411
|
+
- Bump rollout redis dependency to < 5 (https://github.com/flippercloud/flipper/pull/403)
|
412
|
+
- Bump redis dependency to < 5 (https://github.com/flippercloud/flipper/pull/401)
|
413
|
+
- Bump sequel dependency to < 6 (https://github.com/flippercloud/flipper/pull/399 and https://github.com/flippercloud/flipper/commit/edc767e69b4ce8daead9801f38e0e8bf6b238765)
|
360
414
|
|
361
415
|
## 0.16.1
|
362
416
|
|
363
417
|
### Additions/Changes
|
364
418
|
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
419
|
+
- Add actors API endpoint (https://github.com/flippercloud/flipper/pull/372).
|
420
|
+
- Fix rack body proxy require for those using flipper without rack (https://github.com/flippercloud/flipper/pull/376).
|
421
|
+
- Unescapes feature_name in FeatureNameFromRoute (https://github.com/flippercloud/flipper/pull/377).
|
422
|
+
- Replace delete_all with destroy_all in ActiveRecord adapter (https://github.com/flippercloud/flipper/pull/395)
|
423
|
+
- Target correct bootstrap breakpoints in flipper UI (https://github.com/flippercloud/flipper/pull/396)
|
370
424
|
|
371
425
|
## 0.16.0
|
372
426
|
|
373
427
|
### Bug Fixes
|
374
428
|
|
375
|
-
|
429
|
+
- Support slashes in feature names (https://github.com/flippercloud/flipper/pull/362).
|
376
430
|
|
377
431
|
### Additions/Changes
|
378
432
|
|
379
|
-
|
380
|
-
|
433
|
+
- Re-order gates for improved performance in some cases (https://github.com/flippercloud/flipper/pull/370).
|
434
|
+
- Add Feature#exist?, DSL#exist? and Flipper#exist? (https://github.com/flippercloud/flipper/pull/371).
|
381
435
|
|
382
436
|
## 0.15.0
|
383
437
|
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
438
|
+
- Move Flipper::UI configuration options to Flipper::UI::Configuration (https://github.com/flippercloud/flipper/pull/345).
|
439
|
+
- Bug fix in adapter synchronizing and switched DSL#import to use Synchronizer (https://github.com/flippercloud/flipper/pull/347).
|
440
|
+
- Fix AR adapter table name prefix/suffix bug (https://github.com/flippercloud/flipper/pull/350).
|
441
|
+
- Allow feature names to end with "features" in UI (https://github.com/flippercloud/flipper/pull/353).
|
388
442
|
|
389
443
|
## 0.14.0
|
390
444
|
|
391
|
-
|
445
|
+
- Changed sync_interval to be seconds instead of milliseconds.
|
392
446
|
|
393
447
|
## 0.13.0
|
394
448
|
|
395
449
|
### Additions/Changes
|
396
450
|
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
451
|
+
- Update PStore adapter to allow setting thread_safe option (https://github.com/flippercloud/flipper/pull/334).
|
452
|
+
- Update Flipper::UI to Bootstrap 4 (https://github.com/flippercloud/flipper/pull/336).
|
453
|
+
- Add Flipper::UI configuration to add a banner with customizeable text and background color (https://github.com/flippercloud/flipper/pull/337).
|
454
|
+
- Add sync adapter (https://github.com/flippercloud/flipper/pull/341).
|
455
|
+
- Make cloud use sync adapter (https://github.com/flippercloud/flipper/pull/342). This makes local flipper operations resilient to cloud failures.
|
402
456
|
|
403
457
|
## 0.12.2
|
404
458
|
|
405
459
|
### Additions/Changes
|
406
460
|
|
407
|
-
|
461
|
+
- Improvements/fixes/examples for rollout adapter (https://github.com/flippercloud/flipper/pull/332).
|
408
462
|
|
409
463
|
## 0.12.1
|
410
464
|
|
411
465
|
### Additions/Changes
|
412
466
|
|
413
|
-
|
467
|
+
- Added rollout adapter documentation (https://github.com/flippercloud/flipper/pull/328).
|
414
468
|
|
415
469
|
### Bug Fixes
|
416
470
|
|
417
|
-
|
471
|
+
- Fixed ActiveRecord and Sequel adapters to include disabled features for `get_all` (https://github.com/flippercloud/flipper/pull/327).
|
418
472
|
|
419
473
|
## 0.12
|
420
474
|
|
421
475
|
### Additions/Changes
|
422
476
|
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
477
|
+
- Added Flipper.instance= writer method for explicitly setting the default instance (https://github.com/flippercloud/flipper/pull/309).
|
478
|
+
- Added Flipper::UI configuration instance for changing text and things (https://github.com/flippercloud/flipper/pull/306).
|
479
|
+
- Delegate memoize= and memoizing? for Flipper and Flipper::DSL (https://github.com/flippercloud/flipper/pull/310).
|
480
|
+
- Fixed error when enabling the same group or actor more than once (https://github.com/flippercloud/flipper/pull/313).
|
481
|
+
- Fixed redis cache adapter key (and thus cache misses) (https://github.com/flippercloud/flipper/pull/325).
|
482
|
+
- Added Rollout adapter to make it easy to import rollout data into Flipper (https://github.com/flippercloud/flipper/pull/319).
|
483
|
+
- Relaxed redis gem dependency constraint to allow redis-rb 4 (https://github.com/flippercloud/flipper/pull/317).
|
484
|
+
- Added configuration option for Flipper::UI to disable feature removal (https://github.com/flippercloud/flipper/pull/322).
|
431
485
|
|
432
486
|
## 0.11
|
433
487
|
|
434
488
|
### Backwards Compatibility Breaks
|
435
489
|
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
### Additions/Changes
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
490
|
+
- Set flipper from env for API and UI (https://github.com/flippercloud/flipper/pull/223 and https://github.com/flippercloud/flipper/pull/229). It is documented, but now the memoizing middleware requires that the SetupEnv middleware is used first, unless you are configuring a Flipper default instance.
|
491
|
+
- Drop support for Ruby 2.0 as it is end of lined (https://github.com/flippercloud/flipper/commit/c2c81ed89938155ce91acb5173ac38580f630e3d).
|
492
|
+
- Allow unregistered groups (https://github.com/flippercloud/flipper/pull/244). Only break in compatibility is that previously unregistered groups could not be enabled and now they can be.
|
493
|
+
- Removed support for metriks (https://github.com/flippercloud/flipper/pull/291).
|
494
|
+
|
495
|
+
### Additions/Changes
|
496
|
+
|
497
|
+
- Use primary keys with sequel adapter (https://github.com/flippercloud/flipper/pull/210). Should be backwards compatible, but if you want it to work this way you will need to migrate your database to the new schema.
|
498
|
+
- Add redis cache adapter (https://github.com/flippercloud/flipper/pull/211).
|
499
|
+
- Finish API and HTTP adapter that speaks to API.
|
500
|
+
- Add flipper cloud adapter (https://github.com/flippercloud/flipper/pull/249). Nothing to see here yet, but good stuff soon. ;)
|
501
|
+
- Add importing (https://github.com/flippercloud/flipper/pull/251).
|
502
|
+
- Added Adapter#get_all to allow for more efficient preload_all (https://github.com/flippercloud/flipper/pull/255).
|
503
|
+
- Added :unless option to Flipper::Middleware::Memoizer to allow skipping memoization and preloading for certain requests.
|
504
|
+
- Made it possible to instrument Flipper::Cloud (https://github.com/flippercloud/flipper/commit/4b10e4d807772202f63881f5e2c00d11ac58481f).
|
505
|
+
- Made it possible to wrap Http adapter when using Flipper::Cloud (https://github.com/flippercloud/flipper/commit/4b10e4d807772202f63881f5e2c00d11ac58481f).
|
506
|
+
- Instrument get_multi in instrumented adapter (https://github.com/flippercloud/flipper/commit/951d25c5ce07d3b56b0b2337adf5f6bcbe4050e7).
|
507
|
+
- Allow instrumenting Flipper::Cloud http adapter (https://github.com/flippercloud/flipper/pull/253).
|
508
|
+
- Add DSL#preload_all and Adapter#get_all to allow for making even more efficient loading of features (https://github.com/flippercloud/flipper/pull/255).
|
509
|
+
- Allow setting debug output of http adapter (https://github.com/flippercloud/flipper/pull/256 and https://github.com/flippercloud/flipper/pull/258).
|
510
|
+
- Allow setting env key for middleware (https://github.com/flippercloud/flipper/pull/259).
|
511
|
+
- Added ActiveSupport cache store adapter for use with Rails.cache (https://github.com/flippercloud/flipper/pull/265 and https://github.com/flippercloud/flipper/pull/297).
|
512
|
+
- Added support for up to 3 decimal places in percentage based rollouts (https://github.com/flippercloud/flipper/pull/274).
|
513
|
+
- Removed Flipper::GroupNotRegistered error as it is now unused (https://github.com/flippercloud/flipper/pull/270).
|
514
|
+
- Added get_all to all adapters (https://github.com/flippercloud/flipper/pull/298).
|
515
|
+
- Added support for Rails 5.1 (https://github.com/flippercloud/flipper/pull/299).
|
516
|
+
- Added Flipper default instance generation (https://github.com/flippercloud/flipper/pull/279).
|
463
517
|
|
464
518
|
## 0.10.2
|
465
519
|
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
520
|
+
- Add Adapter#get_multi to allow for efficient loading of more than one feature at a time (https://github.com/flippercloud/flipper/pull/198)
|
521
|
+
- Add DSL#preload for efficiently loading several features at once using get_mutli (https://github.com/flippercloud/flipper/pull/198)
|
522
|
+
- Add :preload and :preload_all options to memoizer as a way of efficiently loading several features for a request in one network call instead of N where N is the number of features checked (https://github.com/flippercloud/flipper/pull/198)
|
523
|
+
- Strip whitespace out of feature/actor/group values posted by UI (https://github.com/flippercloud/flipper/pull/205)
|
524
|
+
- Fix bug with dalli adapter where deleting a feature using the UI or API was not clearing the cache in the dalli adapter which meant the feature would continue to use whatever cached enabled state was present until the TTL was hit (1cd96f6)
|
525
|
+
- Change cache keys for dalli adapter. Backwards compatible in that it will just repopulate new keys on first check with this version, but old keys are not expired, so if you used the default ttl of 0, you'll have to expire them on your own. The primary reason for the change was safer namespacing of the cache keys to avoid collisions.
|
472
526
|
|
473
527
|
## 0.10.1
|
474
528
|
|
475
|
-
|
476
|
-
|
477
|
-
|
529
|
+
- Add docker compose support for contributing
|
530
|
+
- Add sequel adapter
|
531
|
+
- Show confirmation dialog when deleting a feature in flipper-ui
|
478
532
|
|
479
533
|
## 0.10.0
|
480
534
|
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
535
|
+
- Added feature check context (https://github.com/flippercloud/flipper/pull/158)
|
536
|
+
- Do not use mass assignment for active record adapter (https://github.com/flippercloud/flipper/pull/171)
|
537
|
+
- Several documentation improvements
|
538
|
+
- Make Flipper::UI.app.inspect return a String (https://github.com/flippercloud/flipper/pull/176)
|
539
|
+
- changes boolean gate route to api/v1/features/boolean (https://github.com/flippercloud/flipper/pull/175)
|
540
|
+
- add api v1 percentage_of_actors endpoint (https://github.com/flippercloud/flipper/pull/179)
|
541
|
+
- add api v1 percentage_of_time endpoint (https://github.com/flippercloud/flipper/pull/180)
|
542
|
+
- add api v1 actors gate endpoint (https://github.com/flippercloud/flipper/pull/181)
|
543
|
+
- wait for activesupport to tell us when active record is loaded for active record adapter (https://github.com/flippercloud/flipper/pull/192)
|
490
544
|
|
491
545
|
## 0.9.2
|
492
546
|
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
547
|
+
- GET /api/v1/features
|
548
|
+
- POST /api/v1/features - add feature endpoint
|
549
|
+
- rack-protection 2.0.0 support
|
550
|
+
- pretty rake output
|
497
551
|
|
498
552
|
## 0.9.1
|
499
553
|
|
500
|
-
|
554
|
+
- bump flipper-active_record to officially support rails 5
|
501
555
|
|
502
556
|
## 0.9.0
|
503
557
|
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
558
|
+
- Moves SharedAdapterTests module to Flipper::Test::SharedAdapterTests to avoid clobbering anything top level in apps that use Flipper
|
559
|
+
- Memoizable, Instrumented and OperationLogger now delegate any missing methods to the original adapter. This was lost with the removal of the official decorator in 0.8, but is actually useful functionality for these "wrapping" adapters.
|
560
|
+
- Instrumenting adapters is now off by default. Use Flipper::Adapters::Instrumented.new(adapter) to instrument adapters and maintain the old functionality.
|
561
|
+
- Added dalli cache adapter (https://github.com/flippercloud/flipper/pull/132)
|
508
562
|
|
509
563
|
## 0.8
|
510
564
|
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
565
|
+
- removed Flipper::Decorator and Flipper::Adapters::Decorator in favor of just calling methods on wrapped adapter
|
566
|
+
- fix bug where certain versions of AR left off quotes for key column which caused issues with MySQL https://github.com/flippercloud/flipper/issues/120
|
567
|
+
- fix bug where AR would store multiple gate values for percentage gates for each enable/disable and then nondeterministically pick one on read (https://github.com/flippercloud/flipper/pull/122 and https://github.com/flippercloud/flipper/pull/124)
|
568
|
+
- added readonly adapter (https://github.com/flippercloud/flipper/pull/111)
|
569
|
+
- flipper groups now match for truthy values rather than explicitly only true (https://github.com/flippercloud/flipper/issues/110)
|
570
|
+
- removed gate operation instrumentation (https://github.com/flippercloud/flipper/commit/32f14ed1fb25c64961b23c6be3dc6773143a06c8); I don't think it was useful and never found myself instrumenting it in reality
|
571
|
+
- initial implementation of flipper api - very limited functionality right now (get/delete feature, boolean gate for feature) but more is on the way
|
572
|
+
- made it easy to remove a feature (https://github.com/flippercloud/flipper/pull/126)
|
573
|
+
- add minitest shared tests for adapters that work the same as the shared specs for rspec (https://github.com/flippercloud/flipper/pull/127)
|
520
574
|
|
521
575
|
## 0.7.5
|
522
576
|
|
523
|
-
|
524
|
-
|
525
|
-
|
577
|
+
- support for rails 5 beta/ rack 2 alpha
|
578
|
+
- fix uninitialized constant in rails generators
|
579
|
+
- fix adapter test for clear to ensure that feature is not deleted, only gates
|
526
580
|
|
527
581
|
## 0.7.4
|
528
582
|
|
529
|
-
|
583
|
+
- Add missing migration file to gemspec for flipper-active_record
|
530
584
|
|
531
585
|
## 0.7.3
|
532
586
|
|
533
|
-
|
587
|
+
- Add Flipper ActiveRecord adapter
|
534
588
|
|
535
589
|
## 0.7.2
|
536
590
|
|
537
|
-
|
591
|
+
- Add Flipper::UI.application_breadcrumb_href for setting breadcrumb back to original app from Flipper UI
|
538
592
|
|
539
593
|
## 0.7.1
|
540
594
|
|
541
|
-
|
595
|
+
- Fix bug where features with names that match static file routes were incorrectly routing to the file action (https://github.com/flippercloud/flipper/issues/80)
|
542
596
|
|
543
597
|
## 0.7
|
544
598
|
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
599
|
+
- Added Flipper.groups and Flipper.group_names
|
600
|
+
- Changed percentage_of_random to percentage_of_time
|
601
|
+
- Added enable/disable convenience methods for all gates (enable_group, enable_actor, enable_percentage_of_actors, enable_percentage_of_time)
|
602
|
+
- Added value convenience methods (boolean_value, groups_value, actors_value, etc.)
|
603
|
+
- Added Feature#gate_values for getting typecast adapter gate values
|
604
|
+
- Added Feature#enabled_gates and #disabled_gates for getting the gates that are enabled/disabled for the feature
|
605
|
+
- Remove Feature#description
|
606
|
+
- Added Flipper::Adapters::PStore
|
607
|
+
- Moved memoizable decorator to instance variable storage from class level thread local stuff. Now not thread safe, but we can make a thread safe version later.
|
554
608
|
|
555
609
|
UI
|
556
610
|
|
557
|
-
|
611
|
+
- Totally new. Works like a charm.
|
558
612
|
|
559
613
|
Mongo
|
560
614
|
|
561
|
-
|
615
|
+
- Updated to latest driver (~> 2.0)
|
562
616
|
|
563
617
|
## 0.6.3
|
564
618
|
|
565
|
-
|
619
|
+
- Minor bug fixes
|
566
620
|
|
567
621
|
## 0.6.2
|
568
622
|
|
569
|
-
|
623
|
+
- Added Flipper.group_exists?
|
570
624
|
|
571
625
|
## 0.6.1
|
572
626
|
|
573
|
-
|
627
|
+
- Added statsd support for instrumentation.
|
574
628
|
|
575
629
|
## 0.4.0
|
576
630
|
|
577
|
-
|
631
|
+
- No longer use #id for detecting actors. You must now define #flipper_id on
|
578
632
|
anything that you would like to behave as an actor.
|
579
|
-
|
633
|
+
- Strings are now used instead of Integers for Actor identifiers. More flexible
|
580
634
|
and the only reason I used Integers was to do modulo for percentage of actors.
|
581
635
|
Since percentage of actors now uses hashing, integer is no longer needed.
|
582
|
-
|
583
|
-
|
636
|
+
- Easy integration of instrumentation with AS::Notifications or anything similar.
|
637
|
+
- A bunch of stuff around inspecting and getting names/descriptions out of
|
584
638
|
things to more easily figure out what is going on.
|
585
|
-
|
639
|
+
- Percentage of actors hash is now also seeded with feature name so the same
|
586
640
|
actors don't get all features instantly.
|