* Fix unnecessary reapply of branch protection when `*_access_levels` is set to `0`. PR [474](https://github.com/gitlabform/gitlabform/pull/474)
Thanks to [Ben Kuhar](https://github.com/BenKuhar) for his contribution!
3.3.3
* Fix bug on the first run when both adding project members and the same users as merge request approvers. Fixes [461](https://github.com/gitlabform/gitlabform/issues/461).
3.3.2
* Don't strip trailing new lines from files. Fixes [451](https://github.com/gitlabform/gitlabform/issues/451), PR [#452](https://github.com/gitlabform/gitlabform/pull/452).
3.3.1
* Fix for setting deploy key in some cases fail with HTTP 400: `{"fingerprint":["has already been taken"]}`. Fixes [19](https://github.com/gitlabform/gitlabform/issues/19), PR [#441](https://github.com/gitlabform/gitlabform/pull/441).
3.3.0
* **Add support for managing project [Protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html#protected-environments).** PR [423](https://github.com/gitlabform/gitlabform/pull/423) & PR [#430](https://github.com/gitlabform/gitlabform/pull/430) * Add support for Python 3.11 and switch to this version in the Docker image. * (For contributors) Move all the GitLabForm tests that require GitLab Premium license into a separate module and introduce a new GitHub Actions flow to enable running them for PRs after the maintainer's approval.
Thanks to [Rafael Zanella](https://github.com/zanella) for his contributions!
3.2.0
* **Add authoritative mode (`enforce: true`) support to group badges, group LDAP links, group variables, badges, deploy keys, variables.** Implements [403](https://github.com/gitlabform/gitlabform/issues/403), PR [#419](https://github.com/gitlabform/gitlabform/pull/419).