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.
- Config.Load now is concurrent-safe (#567).
- Removes the chronological order between Config.Load and Config.Watch, so they can be called in different goroutines (#569).
- Copy the value from slice to avoid the original value being modified (#572).
- Support converting unmarshalled configurations to interface{}. Defaults to map[string]interface{} for now if the source has nested values and the destination is just an interface{} (#460).
- Remove support for Golang 1.21 (#457).
- Allow Config.Explain on empty Config (#408).
- Overwriting parent context in Config.Watch what led to unwanted routine exit (#370).
- Use atomic.Pointer for Config.values and provider.values to avoid race condition (#378).
- [Breaking] The map key is case insensitive now. If you would like to keep it case sensitive. please add konf.WithMapKeyCaseSensitive option (#365).
- Explain supports empty string as path (#314).
- Reserve the case for key of map when unmarshalling. All keys in map used to be lower case, now it matches the case in the configuration (#318).
This version introduces a new feature to support change notification via AWS SNS, GCP PubSub, and Azure Service Bus.
- Support change notification via SNS topic (#267).
- Support change notification via PubSub topic (#294).
- Support change notification via Service Bus topic (#302).
- Add provider for AWS Parameter Store (#298).
First stable release.
- Return no chang if s3/azblob/gcs returns 304 (not modified) (#233).
- flag and pflag always add the default value even the key already exists since konf.Exists uses empty delimiter for empty Config (#228).
- Add konf.WithCaseSensitive to support case-sensitive path match (#205).
- Add GCP Cloud Storage Loader (#210).
- Add AWS S3 Loader (#214).
- Add Azure Blob Storage Loader (#217).
- Config uses default tag name of decode hooks even only one of them is set (#204).
- Statuser interface for providers report status of configuration loading/watching (#199).
- [Breaking] Replace mapstructure with simpler built-in converter (#198).
- [Breaking] Remove WithLogHandler in providers in favor of Statuser interface (#199).
- [Breaking] Use pointer receiver for konf.Config to make empty Config useful (#187).
- [Breaking] Remove konf.Default() to disallow loading configuration into the default Config (#180).
- [Breaking] Remove ExplainOption from Config.Explain for always blurring sensitive information (#180).
- [Breaking] Remove LoadOption from Config.Load (#184).
- The changed values in watch may not update values in config (#171).
- Add ContinueOnError so watcher can continue watching even the loader fails to load the configuration (#161).
- merge loader into providers even it fails the loading. Developers can ignore the loading error and wait for the watching to get latest configuration (#159).
- [BREAKING] Change signature of valueFormatter for config.Explain (#146).
- Remove deprecated env.WithDelimiter/flag.WithDelimiter/pflag.WithDelimiter in favor of WithNameSplitter (#137).
- Add env.WithNameSplitter/flag.WithNameSplitter/pflag.WithNameSplitter to split the name of the flag/env (#110).
- Add Azure App Configuration Loader (#121).
- Add GCP Secret Manager Loader (#128).
- Use CredentialFormatter to blur sensitive information in config.Explain (#113).
- Deprecate env.WithDelimiter/flag.WithDelimiter/pflag.WithDelimiter in favor of WithNameSplitter (#110).
- add Config.Explain to provide information about how Config resolve each value from loaders (#78).
- add Default to get the default Config (#81).
- add AWS AppConfig Loader (#92).
- Switch from mitchellh/mapstructure to go-viper/mapstructure (#69).
- [BREAKING] Redesign API.
- Remove file.WithLog to favor standard log.Printf (#32).
Initial alpha release.