Skip to content

Releases: thomaspoignant/go-feature-flag

v0.11.0

14 Apr 08:49
691af89
Compare
Choose a tag to compare

v0.11.0

Features

  • #95 - Add an option to start even when retriever is unreachable
  • #94 - Add a log data exporter to replace automatic variation logging
    ⚠️ Breaking changes
    If you were using these logs, you need to add the log data exporter to your configuration.
err := Init(Config{
	// ...
	DataExporter: DataExporter{
		Exporter: &ffexporter.Log{},
	},
})

Fixes

  • #92 - Wait longer to avoid flaky test

Changes

  • #93 - CI: Upgrade CI to go 1.16 + Scope coveralls

v0.10.0

12 Apr 17:49
1d7c3aa
Compare
Choose a tag to compare

v0.10.0

This new version includes a way to export your data to a file 💥 📈 📊 💹
Ok maybe you don't care to collect data on the fly and to put them locally, but this version includes a simple way to add more exporters in the future.

This version will allow developing #89 #88 #87 ...


Features

  • #82 - Introducing the concept of feature events to export data

Changes

  • #84 - Better summary in the readme

v0.9.1

01 Apr 13:52
c493ecc
Compare
Choose a tag to compare

v0.9.1

Fixes

  • #78 - Fix a race condition that can be rarely detected while running tests

Changes

  • #80 - Use testify everywhere

v0.9.0

01 Apr 08:01
b38f9dd
Compare
Choose a tag to compare

v0.9.0

Features

  • #75 - Send a Slack message when a flag has changed.

⚠️ Breaking changes

  • #74 - Deprecate the Webhooks field in the configuration to have the field Notifiers instead

Migration

If you were using Webhooks before, you should have a configuration like this:

ffclient.Init(ffclient.Config{ 
    Retriever:      &ffclient.FileRetriever{Path: "testdata/flag-config.yaml"},
    FileFormat:     "yaml",
    Webhooks:       []ffclient.WebhookConfig{
        {
            PayloadURL: " https://example.com/hook",
            Secret:     "Secret",
            Meta: map[string]string{
                "app.name": "my app",
            },
        },
    },
}

With Notifiers, your configuration should looks like this now:

ffclient.Init(ffclient.Config{ 
    Retriever:      &ffclient.FileRetriever{Path: "testdata/flag-config.yaml"},
    FileFormat:     "yaml",
    Notifiers: []ffclient.NotifierConfig{
        &ffclient.WebhookConfig{
            PayloadURL: " https://example.com/hook",
            Secret:     "Secret",
            Meta: map[string]string{
                "app.name": "my app",
            },
        },
    },
}

Changes

  • #76 - Bump github.com/google/go-cmp from 0.5.4 to 0.5.5
  • #77 - Bump github.com/aws/aws-sdk-go from 1.37.20 to 1.38.10

v0.8.1

29 Mar 08:11
574f9a6
Compare
Choose a tag to compare

v0.8.1

Fixes

  • #72 - Handle error even if the logger is nil
  • #73 - Don't panic when defer a cache that has failed to init

v0.8.0

24 Mar 14:46
29190e4
Compare
Choose a tag to compare

v0.8.0

Features

  • #60 - Support multiple formats for your flag configuration file. You can define your flags in JSON and TOML now, and you can still use YAML if it's what you prefer.

v0.7.0

03 Feb 14:18
2fb5a34
Compare
Choose a tag to compare

v0.7.0

Features

  • #65 - Call webhooks when a flag has changed

Changes

  • #64 - Create a notification system when flags changes
  • #63 - Bump github.com/stretchr/testify from 1.6.1 to 1.7.0
  • #62 - Bump github.com/aws/aws-sdk-go from 1.36.19 to 1.37.1

v0.6.1

21 Jan 15:32
2791961
Compare
Choose a tag to compare

v0.6.1

Changes

  • #59 - Remove gocron dependency and use a time.Ticker to handle the background updater.

v0.6.0

18 Jan 10:32
552fc5e
Compare
Choose a tag to compare

v0.6.0

Features

  • #53 - Log flag changes of your flags to be able to trace all the flag changes.
  • #58 - Allow multiple go-feature-flag instances in the same application.

Changes

  • #55 - Refactor to avoid global variables as much as possible.

v0.5.0

13 Jan 10:14
33e35be
Compare
Choose a tag to compare

v0.5.0

⚠️ Breaking changes

  • #49 - Change the signature to pass the retriever in the config. See the pull request (#49) to have the full details and to see how to migrate from v0.4.1 to v0.5.0.

Why?

The main reason is to have the aws/aws-sdk-go as a dependency only if you are using the S3Retriever. With this new syntax, we don't force you to have the SDK if you are not using it.

How to migrate

If you were using HTTPRetriever, S3Retriever or GithubRetriever, the change consists only of changing the key in the config.

// Before v0.5.0
err := ffclient.Init(ffclient.Config{
    PollInterval: 3,
    HTTPRetriever: &ffClient.HTTPRetriever{
        URL:    "http://example.com/test.yaml",
    },
})

// Since v0.5.0
err := ffclient.Init(ffclient.Config{
    PollInterval: 3,
    Retriever: &ffclient.HTTPRetriever{
        URL:    "http://example.com/test.yaml",
    },
})

It is a bit different for the flag configuration, I have introduced a FileRetriever to keep the same format for all retrievers.

// Before v0.5.0
err := ffclient.Init(ffclient.Config{
    PollInterval: 3,
    LocalFile: "file-example.yaml",
})

// Since v0.5.0
err := ffclient.Init(ffclient.Config{
    PollInterval: 3,
    Retriever: &ffclient.FileRetriever{
        Path:    "file-example.yaml",
    },
})

Features

  • #47 - Add a Timeout properties to specify timeout when calling HTTP Client retriever, default is 10 seconds.
  • #48 - Use context when retrieving the flags, Context could be passed in the ffclient.Config{} during initialization.

Internal

  • #46 - Rename and un-export UserToJSON