Please find the latest releases at github:
https://github.com/togglz/togglz/releases
Togglz 3.0.0 and later
Find the latest releases
at github.
Archived release notes
Togglz 2.6.1.Final
See the list of
fixed issues on GitHub.
Togglz 2.6.0.Final
See the list of
fixed issues on GitHub.
Togglz 2.5.0.Final
See the list of
fixed issues on GitHub.
Togglz 2.4.1.Final
See the list of
fixed issues on GitHub.
Togglz 2.4.0.Final
See the list of
closed issues and pull requests on GitHub.
Togglz 2.3.0.Final
-
Core: Added support for IP ranges to ClientIpActivationStrategy
(see #172)
-
Spring Boot: Auto-caching existing StateRepository if enabled
(see #164)
-
Spring Boot: Make the properties documentation available in the properties
editor in STS and IntelliJ IDEA and other tools
(see #165)
-
Spring Boot: Added SpringSecurityUserProvider to condition for
SpringSecurityUserProviderConfiguration
(see #173)
-
Google App Engine: Prevent the creation of unnecessary transactions
(see #167)
Togglz 2.3.0.RC2
-
New Apache Zookeeper integration module. Many thanks to
Ryan Gardner and his team
for this awesome contribution
(see #162)
-
New System Property activation strategy
(see #163)
-
Major performance improvements for looking up the FeatureManager
(see #158)
-
New JMH benchmark test suite for tracking performance problems
(see #159)
-
Fixed issue that caused failing integration tests when using the
Spring Boot integration module
-
Some minor improvements in the Spring Boot integration module
Togglz 2.3.0.RC1
-
New Spring Boot Starter module. Many thanks to
Marcel Overdijk for his
contribution and his help with getting Togglz to work with Spring Boot.
(see #134 and
#154)
-
New Hazelcast module. Many thanks to
Camiel de Vleeschauwer for his contribution.
(see #153)
-
Many minor improvements for the Spring
BeanFinder
implementations which
now should work much better especially in non Spring Web environments.
-
New annotation
@DefaultActivationStrategy
which can be used to specify a
default strategy for a feature directly on the enum.
(see #141)
-
Many minor improvements and bugfixes...
Togglz 2.2.0.Final
-
New Netflix Archaius module. Many thanks to
Richard Steele for his contribution.
(see #126)
-
New Cassandra module. Many thanks to
Artur Tamazian for his contribution.
(see #128)
-
Spring module has been splitted into
spring-core
and spring-web
modules
(see #55). Please refer to the
updating notes if you are updaing from an earlier version
of Togglz.
-
The JUnit
TogglzRule
now supports feature variations.
(see #131)
-
The Togglz Console now supports CSRF tokens created by Spring Security
(see #115)
-
New
CompositeStateRepository
to read feature state from multiple
wrapped state repositories.
-
Performance improvements for EnumBasedFeatureProvider
(see #121)
Togglz 2.1.0.Final
-
New Google AppEngine module. Many thanks to
Fábio Franco Uechi for his work on this.
-
New Guice module. Thanks to
Fábio Franco Uechi for this contribution.
-
New MongoDB module providing a MongoDB state repository.
-
Added OSGi manifests to all Togglz modules
(see #93)
-
New activation strategy based on SpringSecurity user authorities.
(see #67)
-
New
ServerNameActivationStrategy
for activating features only on certain
cluster nodes (see #88)
-
Fixed bug in
FeatureProxyFactoryBean
that caused issues if proxy was created too early
(see #76)
-
Various improvements and bugfixes for
CachingStateRepository
-
Performance improvements in
FileBasedStateRepository
(see #64)
-
Various improvements for the JSP taglib
(see #68,
#94 and
#96)
-
JDBCStateRepository
now supports container managed transactions
(see #77)
-
Added a builder to simplify the creation and configuration of
JDBCStateRepository
-
Fixed Togglz Admin Console to work correctly with JSESSIONID in URL
(see #83)
-
Various improvements in the test support modules
-
And much much more...
Togglz 2.0.1.Final
-
Avoid NPE when
FeatureManagerFactoryBean.getObjectType()
is called before initialization
(see #47)
-
Fixed
CachingStateRepository
to work correctly with NamedFeature
(see #56)
-
Added
noCommit
flag to JDBCStateRepository
to support managed connections.
(see #77)
-
Allow to specify cache TTL in other time units than millisecond
(see #48)
-
Added system property
org.togglz.DISABLE_JNDI_LOOKUPS
to work around issue when
running on GAE
-
Fixed NPE in
ServerIpActivationStrategy
that occurred if running on GAE
-
Allow users to configure the
minCheckInterval
of FileBasedStateRepository
(see #64)
-
StaticFeatureManagerProvider
should use a volatile field to store the FeatureManager
(see #59)
-
Make sure
FeatureProxyFactoryBean.getObject()
isn't called before initialization
(see #76)
-
And some more minor fixes...
Togglz 2.0.0.Final
-
Fixed performance issue in
FileBasedStateRepository
(see #43)
-
Fixed compatibility issue with Microsoft SQL Server
(see #41)
Togglz 2.0.0.RC1
-
Togglz now allows you to manage the lifecycle of the
FeatureManager
using a supported DI container
like CDI or Spring. To do so, make sure your container manages an instance of
FeatureManager
(for example by writing a CDI producer method)
and then set org.togglz.FEATURE_MANAGER_PROVIDED
in web.xml
to true
to tell Togglz to skip the automatic bootstrapping process
for a FeatureManager
managed by Togglz.
-
Added the factory bean
FeatureManagerFactory
that simplifies the creation of a
FeatureManager
managed by Spring. See the javadocs for
FeatureManagerFactory
for details.
-
Added a new extension point that allows users to define custom feature metadata attributes. If you are
using Java enums for declaring your features, you can now define your own annotations to specify metadata
for your features. Togglz already provides two annotations
@Owner
and
@InfoLink
that your can place on your features. If you want to define your own attribute,
just create an annotation and place @FeatureAttribute
on it. Have a look the source of
@Owner
for an example.
-
The
EnumBasedFeatureProvider
now supports multiple enums. This means that you can now
split your feature toggles across multiple Java enums.
-
If you are running Togglz in an servlet environment, the
TogglzFilter
now tries to autodetect whether
it should bootstrap a feature manager itself or if you already created one using a supported
container like CDI or Spring. This means that you typically don't have to set
FEATURE_MANAGER_PROVIDED
manually.
Togglz 2.0.0.Beta2
-
The
Feature
interface doesn't force the user to implement isActive()
anymore.
Please note that this change requires you to remove the @Override
annotation from your implementation of
the method.
-
Fixed a bug that caused
JDBCStateRepository
too work in the wrong database schema
(see #38).
-
The new Togglz JSP integration module provides a JSP taglib that simplifies checking feature states
in JSP pages. Thanks to Mauro Talevi for his help on this.
-
Added
SingleUserProvider
to simplify configuration of environments where only one (virtual) user exists.
-
Feature definitions can now be configured using property files instead of a Java enum. This can be especially
useful in distributed environments where components doesn't share any code.
Thanks to Mauro Talevi for implementing this feature.
-
Added new
NamedFeature
to replace the deprecated UntypedFeature
-
The Togglz Admin Console is now distributable and therefore works in clustered environments
(see #32).
Togglz 2.0.0.Beta1
-
The core classes of Togglz don't assume that features are declared using Java enums any more. This allows users
to use different approaches to define which features are available. Users could for example use a database to manage
the features and their metadata.
-
The new
StaticFeatureManagerProvider
simplifies the configuration of Togglz in standalone applications.
-
Two new activation strategies have been added to Togglz. The Client IP strategy allows to enable features only
for a specific number of client IP addresses. This strategy is useful if features should be active for users
accessing a site from a specific location. The Server IP strategy behaves similar. But instead of the client IP, it uses
the server's IP address. This strategy can be used for canary testing if you want to activate a feature only
on a specific server of you cluster.
-
Typically users configure Togglz by implementing the
TogglzConfig
interface. As an alternative to this,
you can now implement TogglzBootstrap
instead. Doing this allows you to configure more aspects of Togglz as you can
directly interact with the FeatureManagerBuilder
instead of just configuring some of it's properties.
-
The new SPI
FeatureManagerListener
has been added which allows you to get notified when Togglz starts up
and shuts down. This SPI has been added for other Togglz modules but may also be used directly by the user.
-
The
@WithFeature
annotation of the JUnit integration module now allows to activate multiple feature
at once and may even be used if you want to explicitly disable certain features in a test.
Togglz 2.0.0.Alpha1
-
The most noteworthy change in this version is the new extensible feature activation mechanism, that allows
to implement custom strategies for activating features based on arbitrary conditions. As you know, Togglz already
allowed to restrict features to a given list of users. Togglz 2.0.0.Alpha1 now also supports to activate features
for a given percentage of users (gradual rollouts) or at a specific point in time (timed rollouts).
There is also an generic strategy based on Java's
ScriptEngine,
that allows you to write strategies using script languages (like JavaScript) and update them at runtime.
-
As Togglz now allows to implement custom strategies for activating features, the data model of the persisted
feature state had to change. Togglz will automatically migrate the data persisted by previous versions
(like the properties file or the database table) to the new format. However this has one drawback.
Older versions of Togglz won't be able to read the new data format any more. So going back to an older version
of Togglz will be difficult. So please take special care and backup your state repository data.
-
If you are using a custom implementation of the
StateRepository
interface, you will have to
update your implementation to persist the new FeatureState
data structure. Have a look at the
other state repositories if you have any problems.
-
Please note, that although this release is called 2.0.0.Alpha1, it is considered to be very stable. The main
reason for calling it Alpha1 instead of CR1 is, that we are looking for community feedback regarding the new APIs.
Togglz 1.1.1.Final
-
Fixed issue in FileBasedStateRepository and InMemoryStateRepository which may lead to data corruption
of the repository data in case of conurrent writes (see #21).
Special thanks to Jonas Adler for bringing this up.
-
Fixed SPI implementation ordering issue for priority of Integer.MIN_VALUE
(see #22).
Togglz 1.1.0.Final
-
The new CachingStateRepository
allows to add caching capabilities to existing state repositories. See the chapter on
State Repositories for details.
-
The Spring integration module now contains the
FeatureProxyFactoryBean, which
allows to use different Spring beans depending on a specific feature state. The
Usage chapter contains concrete examples on how
to configure this factory bean.
-
It's now possible to define groups of features. These groups will be displayed in different tabs in the
Togglz Admin Console. See the Feature Groups
chapter to learn how to setup these groups.
-
Togglz now contains special support for handling feature toggles in unit tests. As part of this two new integration
modules have been added. The first one provides general support for unit testing and the second one offers
advanced support for JUnit. See the new Testing Support chapter
for details.
Togglz 1.0.0.Final
-
First official version. No changes since the last release. :)