|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to `django-fernet-encrypted-fields` are documented here. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## [0.4.1] - 2026-04-15 |
| 9 | + |
| 10 | +### Added |
| 11 | + |
| 12 | +- `CHANGELOG.md` documenting the full release history of the project. |
| 13 | + |
| 14 | +### Changed |
| 15 | + |
| 16 | +- Applied `ruff format` across the codebase and enforced formatting in CI |
| 17 | + ([#40](https://github.com/jazzband/django-fernet-encrypted-fields/pull/40)). |
| 18 | +- Moved `ruff` lint configuration into a dedicated `[tool.ruff.lint]` section and |
| 19 | + lowered the `target-version` to the earliest supported Python version. |
| 20 | +- `pre-commit` now runs `ruff format` in addition to `ruff check`. |
| 21 | +- Packaging metadata now sources the version directly from `pyproject.toml`. |
| 22 | + |
| 23 | +### Fixed |
| 24 | + |
| 25 | +- CI no longer runs `ruff check` during the installation step. |
| 26 | + |
| 27 | +## [0.4.0] - 2026-04-14 |
| 28 | + |
| 29 | +### Added |
| 30 | + |
| 31 | +- Jazzband contributing guide ([#37](https://github.com/jazzband/django-fernet-encrypted-fields/pull/37)). |
| 32 | +- `dev` dependency group in `pyproject.toml` (mypy, pre-commit, ruff, pytest, pytest-cov, coverage). |
| 33 | +- Django 6.0 compatibility ([#32](https://github.com/jazzband/django-fernet-encrypted-fields/pull/32)). |
| 34 | + |
| 35 | +### Changed |
| 36 | + |
| 37 | +- Migrated project to a `src/` layout ([#39](https://github.com/jazzband/django-fernet-encrypted-fields/pull/39)). |
| 38 | +- Bumped minimum required Python version to **3.10**. |
| 39 | +- CI now installs the package before running the test suite and uses the `dev` dependency group. |
| 40 | + |
| 41 | +### Removed |
| 42 | + |
| 43 | +- `requirements.txt` (dependencies are now fully managed via `pyproject.toml` with version ranges). |
| 44 | + |
| 45 | +## [0.3.1] - 2025-11-10 |
| 46 | + |
| 47 | +### Changed |
| 48 | + |
| 49 | +- Raised minimum Django requirement to **Django 4.2** ([#28](https://github.com/jazzband/django-fernet-encrypted-fields/pull/28)). |
| 50 | +- Updated the supported Python / Django version matrix in CI (excluded Python 3.13 with Django 4.2, etc.). |
| 51 | + |
| 52 | +## [0.3.0] - 2025-02-21 |
| 53 | + |
| 54 | +### Changed |
| 55 | + |
| 56 | +- Project moved to the **Jazzband** organization (author, URL, and maintainer metadata updated) |
| 57 | + ([#25](https://github.com/jazzband/django-fernet-encrypted-fields/pull/25)). |
| 58 | + |
| 59 | +## [0.2.0] - 2025-01-06 |
| 60 | + |
| 61 | +### Added |
| 62 | + |
| 63 | +- Support for Django's `SECRET_KEY_FALLBACKS` to enable secret key rotation |
| 64 | + ([#24](https://github.com/jazzband/django-fernet-encrypted-fields/pull/24)). |
| 65 | +- README documentation describing the secret-key rotation workflow. |
| 66 | +- `pre-commit` configuration. |
| 67 | + |
| 68 | +### Fixed |
| 69 | + |
| 70 | +- `SECRET_KEY_FALLBACKS` handling for Django `< 4.1`. |
| 71 | +- Lint errors and GitHub Actions workflow triggers. |
| 72 | + |
| 73 | +## [0.1.3] - 2023-07-24 |
| 74 | + |
| 75 | +### Added |
| 76 | + |
| 77 | +- Support for encrypted JSON fields (`EncryptedJSONField`) with tests ensuring key retention |
| 78 | + ([#14](https://github.com/jazzband/django-fernet-encrypted-fields/pull/14)). |
| 79 | + |
| 80 | +### Changed |
| 81 | + |
| 82 | +- Set minimum required Django version to **3.2**. |
| 83 | + |
| 84 | +### Fixed |
| 85 | + |
| 86 | +- `EncryptedIntegerField`: corrected `get_prep_value` / `to_python` behavior |
| 87 | + ([#11](https://github.com/jazzband/django-fernet-encrypted-fields/pull/11)). |
| 88 | + |
| 89 | +## [0.1.2] - 2022-05-17 |
| 90 | + |
| 91 | +### Fixed |
| 92 | + |
| 93 | +- `EncryptedIntegerField` now properly exposes default validators via a `cached_property`, |
| 94 | + restoring expected validation behavior ([#10](https://github.com/jazzband/django-fernet-encrypted-fields/issues/10)). |
| 95 | + |
| 96 | +## [0.1.1] - 2021-12-19 |
| 97 | + |
| 98 | +### Fixed |
| 99 | + |
| 100 | +- Django Admin no longer raises an exception when saving encrypted fields. A semaphore |
| 101 | + flag in `clean()` prevents `to_python()` from attempting to decrypt an already-decrypted |
| 102 | + value during form cleaning ([#4](https://github.com/jazzband/django-fernet-encrypted-fields/issues/4)). |
| 103 | + |
| 104 | +## [0.1.0] - 2021-12-15 |
| 105 | + |
| 106 | +### Added |
| 107 | + |
| 108 | +- Support for multiple `SALT_KEY` values, enabling SALT rotation while still decrypting |
| 109 | + data encrypted with legacy salts. |
| 110 | +- Unit tests covering salt rotation with a retained legacy salt. |
| 111 | +- README documentation for rotating salts. |
| 112 | +- GitHub Actions CI: linting (black, flake8), testing, and coverage across multiple Python versions. |
| 113 | + |
| 114 | +## [0.0.2] - 2021-09-30 |
| 115 | + |
| 116 | +### Added |
| 117 | + |
| 118 | +- `long_description` (sourced from `README.md`) and `long_description_content_type` in |
| 119 | + `setup.py` so the project description renders correctly on PyPI. |
| 120 | + |
| 121 | +## [0.0.1] - 2021-09-30 |
| 122 | + |
| 123 | +### Added |
| 124 | + |
| 125 | +- Initial release inspired by `django-encrypted-fields`. |
| 126 | +- Symmetric encryption for Django model fields backed by Fernet, including: |
| 127 | + `EncryptedFieldMixin`, `EncryptedTextField`, `EncryptedCharField`, |
| 128 | + `EncryptedDateTimeField`, `EncryptedIntegerField`, `EncryptedDateField`, |
| 129 | + `EncryptedFloatField`, `EncryptedEmailField`, `EncryptedBooleanField`. |
0 commit comments