-
Ensure everything is ready
- CHANGELOG.md has the target version (e.g.
[1.1.0]) with date and full entry;[Unreleased]is at the top and empty or updated for the next cycle. - UPGRADING.md has a section “Upgrading to X.Y.Z” with what’s new, breaking changes (if any), and upgrade steps.
- Tests pass:
make testorcomposer test. - Code style:
make cs-checkorcomposer cs-check.
- CHANGELOG.md has the target version (e.g.
-
Commit and push any last changes to your default branch (e.g.
mainormaster):git add -A git commit -m "Prepare v1.1.0 release" git push origin HEAD -
Create and push the tag
git tag -a v1.1.0 -m "Release v1.1.0" git push origin v1.1.0 -
GitHub Actions (if configured) may create the GitHub Release from the tag.
-
Packagist (if the package is registered) will pick up the new tag; users can then
composer require nowo-tech/doctrine-encrypt-bundle.
Important: Never move or force-push a tag that Packagist already published. Stable versions are immutable; publish fixes as a new patch tag (e.g. v2.2.1) and restore the old tag to its original commit if it was moved by mistake.
- Keep
## [Unreleased]at the top of CHANGELOG.md for the next version; add new changes there. - Optionally bump a dev version in
composer.jsonfor development.
- Scope: Rename config keys
default_config/configs→default_profile/profiles(AuditKit-style); legacy YAML keys and container parameters still accepted;default_profilemust exist inprofiles(throws if unknown). Docs, Flex recipe, demos and DI/tests updated. - Checklist: CHANGELOG and UPGRADING updated;
make qa(ormake test); commit; tagv2.3.0; push branch and tag.
- Scope: GitHub Spec Kit (
.specify/, baselinespecs/001-baseline/, Cursor skills, SPEC-KIT.md); CodeRabbit CI; Twig|decryptauto-escape fix; MysqlAes PHPDoc@deprecated; composer.lock sync (root + demos). - Checklist: CHANGELOG and UPGRADING updated;
make test; commit release notes; tagv2.2.3; push branch and tag.
- Scope: Functional tests — native lazy objects on PHP 8.4+ for Symfony 8 CI matrix (LazyGhost unavailable in
symfony/var-exporter8.x). - Checklist: CHANGELOG and UPGRADING updated;
make test; commit release notes; tagv2.2.2; push branch and tag. Do not move existingv2.2.0/v2.2.1tags.
- Scope: Fix
composer.lockplatform PHP 8.2 sync; CIsymfony/var-exporterfor Symfony 8.x matrix. - Packagist:
v2.2.0must stay on commit6cde672(immutable). Tagv2.2.1on the release-notes commit; restorev2.2.0withgit tag -f v2.2.0 6cde672 && git push origin v2.2.0 --forceif it was moved. - Checklist: CHANGELOG and UPGRADING updated;
make test;composer validate --strict; commit; tagv2.2.1; push branch and tag.
- Scope: Align with Nowo bundle specs (REQ-SF-001/002): PHP 8.2+;
symfony/*^7.0 || ^8.0 (drop^6.0fromcomposer.json); CI matrix Symfony 7.4, 8.0, 8.1 on PHP 8.2–8.5; docs (README, INSTALLATION, ROADMAP, UPGRADING); Rectorphp82. - Checklist: CHANGELOG and UPGRADING updated; run
make qa; commit; tagv2.2.0; push branch and tag.
- Scope: (1) New MysqlAes encryptor (MySQL AES_ENCRYPT/AES_DECRYPT compatible). (2) Docs: MYSQL_AES.md, PERFORMANCE.md; CONFIGURATION/USAGE/DEMO/README updates. (3) Demos: MySQL AES CRUD, LIKE filters, fixtures, DB raw vs decrypted views; secret-message db-values; Docker MySQL optional. (4) generate-secret-key for MysqlAes; unit tests MysqlAesEncryptorTest.
- Checklist: CHANGELOG and UPGRADING updated; run
make qa; remove stray demo files; commit; tagv2.1.0; push branch and tag.
- Scope: (1) DoctrineEncryptExtension extends
DependencyInjection\Extension\Extensioninstead ofHttpKernel\DependencyInjection\Extension(fixes Symfony 7.1+ internal/deprecation). (2) COMMANDS.md: batchSize default 5 and link to CONFIGURATION. - Checklist: CHANGELOG and UPGRADING updated; run
make qa; commit; tagv2.0.10; push branch and tag.
- Scope: Code style (PHP-CS-Fixer) and internal refactors across src/tests/demos; demo apps and demo/Makefile updates; CI and Makefile/docker-compose adjustments. No API or config changes.
- Checklist: CHANGELOG and UPGRADING updated; run
make qa(orcomposer cs-checkandcomposer test); commit; tagv2.0.9; push branch and tag.
- Scope: Fix RotateKeysCommandTest for Symfony Console 7.0/8.0: replace
Application::add()withFactoryCommandLoader+setCommandLoader()andsetApplication()on the rotate command so all 8 unit tests pass on PHP 8.4 with Symfony 7.0 (CI). - Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.8created and pushed.
- Scope: (1) doctrine:encrypt:status: list encrypted properties and config per entity; show configured encryptor configs at end. (2) New command doctrine:encrypt:rotate-keys (optional backup, decrypt, change keys, re-encrypt; --backup, --no-interaction). (3) --force on generate-secret-key (overwrite without asking), decrypt:database and encrypt:database (skip confirmation). (4) Encrypt/decrypt database use raw SQL; batch_size config (default 5). (5) FrankenPHP docs (INSTALLATION, README, DEMO); tests and coverage ≥ 95%. (6) Docs: COMMANDS, KEY_ROTATION, SECURITY, INSTALLATION, ROADMAP, CHANGELOG, UPGRADING updated.
- Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.7created and pushed.
- Scope: (1) New unit tests for coverage: HaliteEncryptor when key path is a directory; GenerateSecretKeyCommand when creating key in non-existent directory. (2) Fix PHP Notice in HaliteEncryptor test (suppress with
@so suite runs without notices). Coverage lines ≥ 95%. - Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.6created and pushed.
- Scope: (1) GenerateSecretKeyCommand: support all configs (create missing Halite/Defuse keys); optional
configargument with overwrite confirmation. (2) Rename test directoryTests→tests; update phpunit, composer autoload-dev, php-cs-fixer. (3) Keep symfony/var-exporter in require for LazyGhost; CI pin var-exporter ^7.4. (4) Makefile: validate and update targets; qa runs validate. (5) Docs: COMMANDS.md correct args (config) and generate-secret-key behaviour. - Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.5created and pushed.
- Scope: (1) Fix PHPUnit unit tests (EncryptUtil, DecryptExtension) so they no longer mock the final class
EncryptorRegistry; use real registry with mockedEncryptorInterfaceinstead. Fixes test-coverage errors with PHPUnit 10/11. (2) Makedoctrine:encrypt:databaseanddoctrine:decrypt:databasecommandconfigure()idempotent so arguments are only added when not already present; avoids "An argument with name config already exists" with Symfony Console 7/8. - Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.4created and pushed.
- Scope: Allow paragonie/sodium_compat ^2.0 so the bundle installs in projects using sodium_compat 2.x.
- Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.3created and pushed.
- Scope: Symfony Console 8.0 compatibility in command tests (setApplication); CI fix for symfony/var-exporter and functional tests (LazyGhost).
- Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.2created and pushed.
- Scope: Test fixes (encryptor unit tests), add
symfony/var-exporterfor Doctrine ORM LazyGhost in functional tests. - Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.1created and pushed.
- Scope: Drop Symfony 6 support and remove demo/symfony6; require Symfony ^7.0 || ^8.0.
- Checklist: CHANGELOG and UPGRADING updated; tag
v2.0.0created and pushed.