<!--
  Thanks for contributing to pypaperless!
  Please keep this template intact and just fill in the sections below.
-->

## Proposed change

<!--
  Describe what your change does and why it is needed. If it fixes a bug or
  implements a feature request, link the issue under "Related issues" below.
-->

## Type of change

<!-- Please check exactly one box. If more than one applies, consider splitting the PR. -->

- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that changes existing behavior)
- [ ] Code quality, refactor or performance (no functional change)
- [ ] Documentation
- [ ] CI, tooling or dependency update

## Breaking change

<!--
  Only fill this in if you checked "Breaking change" above: what breaks, how to
  migrate, and why the change is worth it. This text ends up in the release
  notes, so please write it for users of the library, not for the maintainer.
-->

## Related issues

- Fixes #
- Related to #

## Checklist

<!--
  Tick what applies. Not sure about something? Open the PR anyway and ask.
-->

- [ ] I understand the code I am submitting and can explain how it works.
- [ ] AI and agentic coding tools are very welcome here. If I used one, I have read and reviewed its entire output myself and take responsibility for it.
- [ ] `uv run pytest -x -q` passes locally and coverage stays at 95 % or above.
- [ ] `prek run --all-files` passes (ruff, mypy, codespell, yamllint).
- [ ] Tests have been added or updated for the changed behavior.
- [ ] (OPTIONAL) The docs in `docs/` have been updated if the public API changed.
- [ ] (OPTIONAL) `uv run python script/pngx_smoketest.py` passed against a live instance, or the change cannot affect live API interaction.

<!--
  Reviews can take a few days: pypaperless is a private side project. But every
  pull request gets a reply. Thanks for your patience!
-->
