================
Waffle Changelog
================

v5.0.0
======
- Updated documentation
- Dropped support for Django 3.2, 4.0, and 4.1
- Updated test suite for Django 5.x
- Added Czech translations
- Extracted percent evaluation to separate function for custom models
- Added support for Django 5.2
- Dropped support for Python 3.8
- [BREAKING] Corrected behavior of flag.everyone

v4.2.0
======
- Joined Jazzband (https://jazzband.co/)
- Linting improvements and cleanups
- Added support for Django 5.0 and 5.1
- Added support for Python 3.13

v4.1.0
======
- Updated `is_active_for_user` method to account for `everyone` option
- Added `--testing` option to waffle_flag management command

v4.0.0
======
- Added support for Django 4.2 and Python 3.11
- Dropped support for Python 3.7
- Added type hints

v3.0.0
======
- Added support for pluggable Sample and Switch models
- Removed support EOL Python versions
- Removed support for EOL Django versions

v2.7.0
======
- Exposed JSON endpoint for Waffle flag/switch/sample state

v2.6.0
======
- Fixed Django 4.0 compatibility
- Added support for custom Sample and Switch models
- Added ability to determine if flag is active without persisting new state
- Added support for Python 3.10

v2.5.0
======
- Corrected error in docs
- Added setting to support disabling admin pages

v2.4.1
======
- Reverted: Creating missing flags for all attempts to access the missing flag

v2.4.0
======
- Preventing exceptions for template use cases where a request is not available
- Creating missing flags for all attempts to access the missing flag
- Added Italian translations
- Removed universal wheel

v2.3.0
======
- Added support for Django 4.0

v2.2.1
======
- Resolved deprecation warning when using Jinja2 >= 3

v2.2.0
======
- Added support for Django 3.2
- Updated documentation for custom flag models
- Updated Russian translations

v2.1.0
======
- Added test support for PowerPC
- Fixed caching of auto-created missing flags
- Fix bug in flag_membership_changed signal handler

v2.0.0
======
- Add support for Django 3.1
- Remove support for Django 1.11, 2.0, 2.1
- Caching auto-created missing flags, switches, and samples

v1.0.0
======
- Removed Python 2.7 compatibility code
- Fixed typo in docs example
- Documented WAFFLE_TEST_COOKIE

v0.20.0
=======
- Dropped support for Python 2.7
- Removed deprecation warnings for ugettext.

v0.19.0
=======
- Dropped support for Django 2.0, 2.1, and Python 3.4.
- Made tests for Jinja2 optional while waiting for django-jinja to be compatible with Django 3.0.
- Add support for Django 3.0 by removing use of deprecated functionality from Django 2.2.

v0.18.0
=======
- Updated `MIDDLEWARE` setting name for Django 1.10+
- Improved cache performance for `is_active_for_user`
- Corrected log formatting
- Added log entries for admin quick link actions
- Added permissions for admin actions

v0.17.0
=======
- Fixed documentation issues
- Added class-based view mixins

v0.16.0
=======
- Added support for Django 2.1 and 2.2
- Flushing cache after modifying flags' groups and users
- Removed redundant log line
- Corrected version in `waffle/__init__.py`
- Fixed bug in tests
- Using strings as cache keys instead of bytes
- Passing effects of test decorator to child classes
-- NOTE: This introduced a backwards-incompatible change for the testutils override decorators.
   See https://github.com/jazzband/django-waffle/pull/331 for details.

v0.15.1
=======
- Optionally logging missing flags, samples, and switches
- Added --users option to waffle_flag management command
- Updated testutils to flush caches
- Improved admin site for users and groups
- Fixed global cache thread safety issues

v0.15.0
=======
- Dropped support for Django < 1.11
- Dropped support for Python 3.3
- Added settings `WAFFLE_CREATE_MISSING_(FLAG|SWITCHES|SAMPLES)` to optionally
  create missing objects in the database automatically
- Allow serializing/de-serializing waffle models by natural key
- Added pluggable Flag model

v0.14.0
=======
- Added i18n support
- Added Russian translations
- Add management command to delete waffle data

v0.13
=====
- Added support for Django 2.0.
- Added support for search the name and notes fields in Django admin.
- Fixed small bugs in management commands.
- Fixed small documentation issues.
- Updated `waffle_flag` management command to accept user groups.
- Added setting `WAFFLE_READ_FROM_WRITE_DB` to read from write DB on cache miss.

v0.12
=====

- Drop support for Django<1.8 and Python<2.7.
- Moved bulk of code from waffle.*_is_active methods to .is_active
  instance methods.
- Centralized caching code behind Class.get() methods.
- Significant caching overhaul.
- Automatically invalidate cache on waffle upgrade.


v0.11.1
=======

- Fix Django 1.9 support.
- Fix several Python >=3.4 issues.
- Fix output of `waffle_switch --list`.
- Fix small documentation issues.
- Cache a plain list instead of a ValuesListQuerySet.


v0.11
=====

- Support Django 1.8.
- Move from jingo-specific to generic Jinja2 template support.
- Added tools for integration testing.
- Drop Django 1.5 support.
- Fix several code and documentation bugs.
- Add optional redirect parameter to view decorators.


v0.10.2
=======

- Overhaul documentation.
- Move CLI commands to waffle_(flag|sample|switch) to be more polite.
- Add override_(flag|sample|switch) testing tools.
- Changed the default of WAFFLE_SECURE to True.


v0.10.1
=======

- Support Python 3.
- Support Django 1.7.
- Add WAFFLE_CACHE_NAME.
- Fix caching for empty lists.


v0.10.0
=======

- Replace waffle.get_flags with waffle.{FLAGS,SWITCHES,SAMPLES} in JS.
- Update Custom User Models for Django 1.6 support.
- Support WaffleJS inline in templates.
- Improve test infrastructure and coverage.


v0.9.2
======

- Add get_flags method to waffle.js.
- Fix issue with South migrations and custom user models in Django 1.5.
- Document command-line access and get more useful information from it.
- Support non-naive datetimes when appropriate.
- Fix a cache invalidation issue.


v0.9.1
======

- Real Django 1.5 support.
- JavaScript obeys WAFFLE_*_DEFAULT settings.

v0.9
====

- Reorganized documentation.
- Hash form values for better memcached keys.
- Simplified and improved Django template tags.
- Renamed JS functions to *_is_active to avoid reserved keywords.

v0.8.1
======

- Fix cache flushing issues.
- Fix order of flag_is_active checks.
- Add a waffle.urls module.
- Add management commands.
- Add language support to flags.
- Better caching for missing flags/switches/samples.
- Re-add 'note' field.
- Created a set_flag method to make custom flag cookie triggers easier.

v0.8
====

- Fix issue with repeated flag_is_active calls.
- Add created/modified dates to models.
- Add WAFFLE_CACHE_PREFIX settings.

v0.7.6
======

- Fix waffle template functions when no request is present.
- Added testing mode to flags.
- Add WAFFLE_*_DEFAULT for switches and samples.

v0.7.5
======

- Fix issue with stale cache using bulk admin actions.

v0.7.4
======

- Fix waffle.js in Safari.

v0.7.2
======

- Handle 404s correctly.

v0.7.1
======

- I am bad at packaging.

v0.7
====

- Add 'note' field.
- Add migrations for Samples.
- Clean up Jinja2 functions.

v0.6
====

- Add Samples.

v0.5
====

- Fix waffle.js view with Switches.
- Add South migrations.
- Cache values to save database queries.

v0.4
====

- Add Switches.

v0.3
====

- Add waffle.js view.

v0.2.1
======

- Add bulk admin actions.

v0.2
====

- Add rollout mode to Flags.
