Please consult the Upgrade notes in the documentation for specific instructions for this release, and general upgrade instructions. Below is an automatically generated list of all PRs merged since the previous release.
Changes since 2.53.0
- [docs] create sitemap at root on Hugo deploy @paulOsinski (#14024)
- [docs] Pro changelog: Dec 30 @paulOsinski (#14007)
- docs: add new page on custom trust @sNiXx (#13841)
- Vulnerability IDs: Do not allow users to import empty strings @Jino-T (#14017)
- allow alpine in docker compose dev override @valentijnscholten (#14001)
- Remove entrypoint-first-boot.sh references and implement complete initialization command @Maffooch (#14002)
- Add workflow path for GitHub Actions validation @Maffooch (#14000)
- docs: Update weight of 2.54.0 upgrade notes @valentijnscholten (#13991)
- Add status and notes columns to CSV/Excel exports @valentijnscholten (#13970)
- Fix: Apply tags to findings/endpoints when TRACK_IMPORT_HISTORY is disabled @valentijnscholten (#13969)
- Fix bulk edit validation: prevent duplicate findings from being active/verified @valentijnscholten (#13965)
- Handle System_Settings errors better in middleware @valentijnscholten (#13982)
- [docs] pro changelog: 2.53.3-4 @paulOsinski (#13978)
- Fix JIRA form processing logic to not skip pushing new findings when finding_jira_sync is enabled @valentijnscholten (#13983)
- Add test_type mismatch validation during reimport (#10219) @valentijnscholten (#13975)
- Fix: Populate vulnerability_id field in BlackDuck Binary Analysis parser @valentijnscholten (#13973)
- Fix FileUpload.copy() to prevent title length exceeding 100 chars @valentijnscholten (#13968)
- Fix Tenable CSV import fails with 'Version of CPE not implemented' @valentijnscholten (#13967)
- Fix cross-scanner deduplication endpoint parsing (#10215) @valentijnscholten (#13964)
- Fix CycloneDX XML import failing when vulnerability description is missing @valentijnscholten (#13963)
- fix(HELM): Docs for #13907 @kiblik (#13942)
- 🎉 Implement pingcastle vulnerability parser @manuel-sommer (#13933)
- feat(docker): Clean official image from (unit)tests @kiblik (#13877)
- Increasing timeouts for unit tests @rossops (#13849)
- Prowler Scan Parser @Jino-T (#13831)
- feat(docker): Manage images via renovate (not dependabot) @kiblik (#13953)
- Added relevant test name to "close old findings" comment @Jino-T (#13930)
- release process fix for 2.53.4: also start valkey is it's now required by the entrypoitn scripts @valentijnscholten (#13960)
- Github action fix for 2.53.4 @valentijnscholten (#13958)
- github action fetch openapi spec must wait for dojo to be up @valentijnscholten (#13955)
- ⬆️ Bump ruff from 0.14.9 to 0.14.10 @manuel-sommer (#13938)
- feat(broker): Add start-up checker @kiblik (#13931)
- fix(GHA): Fix annotation for renovate and dependabot @kiblik (#13941)
- Make Twistlock Parser use discoveredDate for Date @Jino-T (#13922)
- Make SonarQube Parser use creationDate for Date @Jino-T (#13919)
- make ordering by sla_age more reliable @valentijnscholten (#13918)
- Change log level from warning to debug for cwe check @Maffooch (#13909)
- docs: add dedupe batching note to 2.53 upgrade notes @valentijnscholten (#13914)
- feat(HELM): Make HPA more Argo-friendly @kiblik (#13882)
- Add DD_SOCIAL_AUTH_CREATE_USER_MAPPING to docs @manuel-sommer (#13929)
- docs: edits to deduplication-tuning docs @LeongBryan (#13924)
- Refactor GitHub integration error handling @Maffooch (#13913)
- Refactor async_delete mapping and filter logic @Maffooch (#13908)
- reimport: add internal dupe test when reimport into empty test @valentijnscholten (#13890)
- reimport: add management command to reimport sample scans @valentijnscholten (#13893)
- (chore) importers: log time spent on parsing @valentijnscholten (#13892)
- foundy_by: optimize for dedupe @valentijnscholten (#13888)
- jira: add none checks in a few places @valentijnscholten (#13886)
- Update RELEASING.md with release type clarifications @valentijnscholten (#13881)
- fix logger NoneType during single finding save @valentijnscholten (#13880)
- fix(HELM): Improve autogeneration of annotation @kiblik (#13879)
- fix(HELM): Annotation and docs correction for #13856 @kiblik (#13878)
- feat(releases): Add section for GHA @kiblik (#13867)
- async delete: retry on deadlock @valentijnscholten (#13863)
- 💄 Beautify Rubocop json @manuel-sommer (#13894)
- fix(HELM): Use renovate-compatible format @kiblik (#13866)
- fix(GHA): Failed if all dependences had not been in latest version @kiblik (#13865)
- fix(django): Upgrade to 5.2 @kiblik (#12524)
- [docs] update sso docs: permission scope @paulOsinski (#13850)
- [docs] Pro changelog updates @paulOsinski (#13855)
- [docs] asset/organization in Pro @paulOsinski (#13848)
- docs: Add Pro vs OSS comparison for cross-product risk acceptances @skywalke34 (#13703)
- Add null check for engagement in permission validation @Maffooch (#13832)
- perf: Use lazy loading for Product_Tab to improve edit finding performance Fixes#10313 @Vincent-Ngobeh (#13805)
- fix(GHA): Correction of #13722 @kiblik (#13833)
- fix(unittest): avoid ResourceWarning: unclosed file @kiblik (#13830)
- fix(node_modules): Avoid staticfiles.W004 @kiblik (#13829)
- fix(parsers): DeprecationWarning: Testing an element's truth ... @kiblik (#13828)
- fix(helm): Drop djnago.mediaPersistentVolume.fsGroup @kiblik (#13813)
- ⬆️ Bump ruff from 0.14.6 to 0.14.8 @manuel-sommer (#13799)
- 💄 reformat whispers sample scan reports @manuel-sommer (#13790)
- 🎉 Add 'fix_available' field to legitify @manuel-sommer (#13791)
- [docs] "about us" section maintenance @paulOsinski (#13783)
- UI: Add AND logic for tag filtering @PoojasPatel013 (#13789)
💣 Breaking changes
- finding template refactor @valentijnscholten (#13946)
🚩 Changes to settings.dist.py / local_settings.py
- tags: allow setting tag truncate length @valentijnscholten (#13943)
- reimport: match findings in batches @valentijnscholten (#13889)
- auditlog: switch to pghistory (for real) @valentijnscholten (#13587)
- 🎉 Add ICSA vulnid @manuel-sommer (#13895)
- 🐛 Remove unselected parsers from filters and test types @manuel-sommer (#13767)
🚩 Database migration
- finding template refactor @valentijnscholten (#13946)
- rename/reorder migrations after recent merges @dogboat (#13915)
- api tokens: allow admins to reset user tokens @valentijnscholten (#13885)
- auditlog: switch to pghistory (for real) @valentijnscholten (#13587)
🚀 General features and enhancements
- reimport: match findings in batches @valentijnscholten (#13889)
🚀 API features and enhancements
- Add permission classes and refine queryset in BurpRawRequestResponseViewSet @Maffooch (#14013)
- finding template refactor @valentijnscholten (#13946)
- pghistory: add context for each process and celery tasks @valentijnscholten (#13988)
- metrics: use mitigated_date for closed findings @valentijnscholten (#13945)
- push_to_jira: fix pushing to JIRA during import/reimport in asynchronous mode @valentijnscholten (#13916)
- api tokens: allow admins to reset user tokens @valentijnscholten (#13885)
🐛 Bug Fixes
- dedupe reopen: continue to try all match candidates @valentijnscholten (#14011)
- push_to_jira: fix pushing to JIRA during import/reimport in asynchronous mode @valentijnscholten (#13916)
🖌 Updates in UI
- finding template refactor @valentijnscholten (#13946)
- metrics: use mitigated_date for closed findings @valentijnscholten (#13945)
- Fix product.html and engagements_all.html formatting and add autoWidth false @testaccount90009 (#13884)
- api tokens: allow admins to reset user tokens @valentijnscholten (#13885)
- auditlog: switch to pghistory (for real) @valentijnscholten (#13587)
- finding list: disable autowidth to fix too wide column @valentijnscholten (#13835)
🔧 Improved code quality with linters
- reimport: match findings in batches @valentijnscholten (#13889)
🧰 Maintenance
- chore(deps): update python:3.13.11-slim-trixie docker digest from 3.13.11 to v (dockerfile.integration-tests-debian) @renovate (#14008)
- chore(deps): bump celery from 5.6.0 to 5.6.1 @dependabot (#14005)
- fix(deps): update dependency @tabler/icons from 3.36.0 to v3.36.1 (docs/package.json) @renovate (#14023)
- chore(deps): bump gitpython from 3.1.45 to 3.1.46 @dependabot (#14022)
- chore(deps): bump pdfmake from 0.2.21 to 0.3.0 in /components @dependabot (#14021)
- chore(deps): update dependency vcrpy from 8.1.0 to v8.1.1 (requirements-dev.txt) @renovate (#14026)
- chore(deps): update dependency renovatebot/renovate from 42.66.11 to v42.71.0 (.github/workflows/renovate.yaml) @renovate (#14025)
- chore(deps): bump pillow from 12.0.0 to 12.1.0 @dependabot (#14020)
- chore(deps): bump django-polymorphic from 4.5.1 to 4.5.2 @dependabot (#14019)
- chore(deps): bump drf-spectacular-sidecar from 2025.12.1 to 2026.1.1 @dependabot (#14018)
- chore(deps): update python:3.13.11-slim-trixie docker digest from 3.13.11 to v (dockerfile.integration-tests-debian) @renovate (#14003)
- chore(deps): update python docker tag from 3.13.7 to v3.13.11 (dockerfile.nginx-alpine) @renovate (#13995)
- chore(deps): bump python-gitlab from 7.0.0 to 7.1.0 @dependabot (#13990)
- ⬆️ Bump django-filter from 25.1 to 25.2 @dependabot (#13346)
- Update dependency gohugoio/hugo from v0.153.2 to v0.153.4 (.github/workflows/validate_docs_build.yml) @renovate (#13985)
- fix(deps): update dependency @docsearch/js from 4.3.2 to v4.4.0 (docs/package.json) @renovate (#13957)
- chore(deps): update dependency renovatebot/renovate from 42.66.4 to v42.66.11 (.github/workflows/renovate.yaml) @renovate (#13987)
- chore(deps): bump django-polymorphic from 4.4.1 to 4.5.1 @dependabot (#13980)
- chore(deps): bump django-fieldsignals from 0.7.0 to 0.8.0 @dependabot (#13979)
- chore(deps): bump datatables.net-buttons-bs from 3.2.5 to 3.2.6 in /components @dependabot (#13977)
- chore(deps): bump pdfmake from 0.2.20 to 0.2.21 in /components @dependabot (#13972)
- fix(deps): update dependency @docsearch/css from 4.3.2 to v4.4.0 (docs/package.json) @renovate (#13956)
- chore(deps): bump datatables.net from 2.3.5 to 2.3.6 in /components @dependabot (#13976)
- chore(deps): update valkey/valkey:7.2.11-alpine docker digest from 7.2.11 to v (docker-compose.yml) @renovate (#13966)
- chore(deps): bump humanize from 4.14.0 to 4.15.0 @dependabot (#13949)
- chore(deps): bump openapitools/openapi-generator-cli from v7.17.0 to v7.18.0 @dependabot (#13948)
- chore(deps): update dependency renovatebot/renovate from 42.52.8 to v42.66.4 (.github/workflows/renovate.yaml) @renovate (#13947)
- chore(deps): update dependency gohugoio/hugo to v0.153.2 (.github/workflows/validate_docs_build.yml) @renovate (#13944)
- chore(deps): update dependency kubernetes/kubernetes from v1.34.3 to v1.35.0 (.github/workflows/k8s-tests.yml) @renovate (#13940)
- chore(deps): bump social-auth-core from 4.8.1 to 4.8.3 @dependabot (#13936)
- chore(deps): update dependency gohugoio/hugo from v0.152.2 to v0.153.0 (.github/workflows/validate_docs_build.yml) @renovate (#13937)
- chore(deps): update docker/setup-buildx-action action from v3.11.1 to v3.12.0 (.github/workflows/release-x-manual-tag-as-latest.yml) @renovate (#13934)
- chore(deps): update postgres:18.1-alpine docker digest from 18.1 to 18.1-alpine (docker-compose.yml) @renovate (#13932)
- chore(deps): bump django-dbbackup from 5.0.1 to 5.1.0 @dependabot (#13926)
- chore(deps): bump asteval from 1.0.7 to 1.0.8 @dependabot (#13927)
- chore(deps): update postgres:18.1-alpine docker digest from 18.1 to 18.1-alpine (docker-compose.yml) @renovate (#13925)
- chore(deps): update dependency kubernetes from 1.32.10 to v1.32.11 (.github/workflows/k8s-tests.yml) @renovate (#13923)
- chore(deps): bump django-polymorphic from 4.4.0 to 4.4.1 @dependabot (#13917)
- chore(deps): update stefanzweifel/git-auto-commit-action action from v7.0.0 to v7.1.0 (.github/workflows/release-3-master-into-dev.yml) @renovate (#13920)
- chore(deps): update valkey docker tag from 0.10.2 to v0.13.0 (helm/defectdojo/chart.yaml) @renovate (#13907)
- chore(deps): bump django-polymorphic from 4.3.0 to 4.4.0 @dependabot (#13901)
- chore(deps): update dependency vite from 7.2.7 to v7.3.0 (docs/package.json) @renovate (#13902)
- fix(deps): update dependency @tabler/icons from 3.35.0 to v3.36.0 (docs/package.json) @renovate (#13897)
- chore(deps): update dependency renovatebot/renovate from 42.42.0 to v42.52.8 (.github/workflows/renovate.yaml) @renovate (#13896)
- chore(deps): update github artifact actions (.github/workflows/rest-framework-tests.yml) (major) @renovate (#13883)
- chore(deps): bump ruff from 0.14.8 to 0.14.9 @dependabot (#13876)
- chore(deps): bump django-pghistory from 3.9.0 to 3.9.1 @dependabot (#13875)
- chore(deps): update dependency kubernetes/kubernetes from v1.34.2 to v1.34.3 (.github/workflows/k8s-tests.yml) @renovate (#13873)
- chore(deps): update actions/cache action from v4.3.0 to v5 (.github/workflows/validate_docs_build.yml) @renovate (#13871)
- chore(deps): update dependency node from 24.11.1 to v24.12.0 (.github/workflows/validate_docs_build.yml) @renovate (#13864)
- chore(deps): bump vulners from 3.1.2 to 3.1.3 @dependabot (#13861)
- chore(deps): bump urllib3 from 2.6.0 to 2.6.1 @dependabot (#13852)
- chore(deps): bump sqlalchemy from 2.0.44 to 2.0.45 @dependabot (#13860)
- chore(deps): bump django-polymorphic from 4.2.0 to 4.3.0 @dependabot (#13859)
- chore(deps): update peter-evans/create-pull-request action from v7.0.11 to v8 (.github/workflows/update-sample-data.yml) @renovate (#13857)
- chore(deps): update losisin/helm-values-schema-json-action action from v2.3.1 to v2.3.2 (.github/workflows/test-helm-chart.yml) @renovate (#13847)
- chore(deps-dev): bump vcrpy from 8.0.0 to 8.1.0 @dependabot (#13851)
- chore(deps): update gcr.io/cloudsql-docker/gce-proxy docker tag from 1.37.10 to v1.37.11 (helm/defectdojo/values.yaml) @renovate (#13856)
- chore(deps): update dependency renovatebot/renovate from 42.27.0 to v42.42.0 (.github/workflows/renovate.yaml) @renovate (#13836)
- chore(deps): update dependency vite from 7.2.6 to v7.2.7 (docs/package.json) @renovate (#13837)
- chore(deps): bump psycopg[c] from 3.3.1 to 3.3.2 @dependabot (#13839)
- chore(deps): bump urllib3 from 2.5.0 to 2.6.0 @dependabot (#13834)
- chore(deps): bump django-polymorphic from 4.1.0 to 4.2.0 @dependabot (#13824)
- chore(deps): update valkey/valkey:7.2.11-alpine docker digest from 7.2.11 to v (docker-compose.yml) @renovate (#13821)
- chore(deps): update peter-evans/create-pull-request action from v7.0.9 to v7.0.11 (.github/workflows/update-sample-data.yml) @renovate (#13827)
- chore(deps): bump django from 5.1.14 to 5.1.15 @dependabot (#13814)
- chore(deps): update postgres:18.1-alpine docker digest from 18.1 to 18.1-alpine (docker-compose.yml) @renovate (#13820)
- chore(deps): update dependency vcrpy from 7.0.0 to v8 (requirements-dev.txt) @renovate (#13815)
- chore(deps): bump psycopg[c] from 3.3.0 to 3.3.1 @dependabot (#13812)
- chore(deps): update actions/setup-node action from v6.0.0 to v6.1.0 (.github/workflows/validate_docs_build.yml) @renovate (#13810)
- chore(deps): update dependency prettier from 3.7.3 to v3.7.4 (docs/package.json) @renovate (#13808)
- chore(deps): update actions/stale action from v10.1.0 to v10.1.1 (.github/workflows/close-stale.yml) @renovate (#13807)
- chore(deps): update actions/checkout action from v6.0.0 to v6.0.1 (.github/workflows/validate_docs_build.yml) @renovate (#13806)
- chore(deps): bump psycopg[c] from 3.2.13 to 3.3.0 @dependabot (#13798)
- chore(deps): bump drf-spectacular-sidecar from 2025.10.1 to 2025.12.1 @dependabot (#13797)
- chore(deps): bump django-pghistory from 3.8.3 to 3.9.0 @dependabot (#13795)
- chore(deps): bump celery from 5.5.3 to 5.6.0 @dependabot (#13794)
- chore(deps): update softprops/action-gh-release action from v2.4.2 to v2.5.0 (.github/workflows/release-x-manual-helm-chart.yml) @renovate (#13793)
- chore(deps): update dependency vite from 7.2.4 to v7.2.6 (docs/package.json) @renovate (#13792)
- chore(deps): update dependency prettier from 3.7.2 to v3.7.3 (docs/package.json) @renovate (#13787)