diff --git a/README.md b/README.md
index 9313b6f..5283c1b 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,6 @@

-
- [Teilchensammler: Collect parts in a list](#teilchensammler-collect-parts-in-a-list)
- [Badges](#badges)
- [Development](#development)
@@ -24,7 +23,6 @@
- [Direnv (automatic venv)](#direnv-automatic-venv)
- [Subshells or Shells started from Editors](#subshells-or-shells-started-from-editors)
- [just](#just)
-
## Development
diff --git a/docs/coverage-badge.svg b/docs/coverage-badge.svg
index 3ed6d83..8f71438 100644
--- a/docs/coverage-badge.svg
+++ b/docs/coverage-badge.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/requirements/dev.in b/requirements/dev.in
index 2a41edd..45f88d4 100644
--- a/requirements/dev.in
+++ b/requirements/dev.in
@@ -9,4 +9,3 @@ ruff # linter
uv # resolver for pip-compile-multi
genbadge[tests,coverage] # create badges from coverage reports and pytest
pymarkdownlnt # lint markdown files, note: it's "lnt" at the end, not "lint"
-pytest-randomly # run tests in random order; installed in dev env because in test/ci we want more reproducibility
diff --git a/requirements/dev.txt b/requirements/dev.txt
index 67198cc..9eaca0d 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -1,4 +1,4 @@
-# SHA1:596eaea6df10023a3db5f9b26c0cf974c97cb86e
+# SHA1:0fe30e8de6a24fe0b1d50d82a23038919d203909
#
# This file was generated by pip-compile-multi.
# To update, run:
@@ -6,110 +6,51 @@
# requirements upgrade
#
-r test.txt
-application-properties==0.8.3
- # via pymarkdownlnt
+application-properties==0.8.2
asttokens==3.0.0
- # via stack-data
build==1.2.2.post1
- # via pip-tools
-certifi==2025.6.15
- # via requests
+certifi==2025.4.26
charset-normalizer==3.4.2
- # via requests
-click==8.2.1
- # via
- # genbadge
- # pip-compile-multi
- # pip-tools
+click==8.1.8
columnar==1.4.1
- # via pymarkdownlnt
decorator==5.2.1
- # via ipython
defusedxml==0.7.1
- # via genbadge
django-debug-toolbar==5.2.0
- # via -r requirements/dev.in
-django-stubs==5.2.1
- # via -r requirements/dev.in
-django-stubs-ext==5.2.1
- # via django-stubs
+django-stubs==5.2.0
+django-stubs-ext==5.2.0
executing==2.2.0
- # via stack-data
genbadge==1.1.2
- # via -r requirements/dev.in
idna==3.10
- # via requests
-ipython==9.3.0
- # via -r requirements/dev.in
+ipython==9.2.0
ipython-pygments-lexers==1.1.1
- # via ipython
jedi==0.19.2
- # via ipython
markdown-it-py==3.0.0
- # via rich
matplotlib-inline==0.1.7
- # via ipython
mdurl==0.1.2
- # via markdown-it-py
parso==0.8.4
- # via jedi
pexpect==4.9.0
- # via ipython
pillow==11.2.1
- # via genbadge
pip==25.1.1
- # via pip-tools
-pip-compile-multi==3.2.1
- # via -r requirements/dev.in
+pip-compile-multi==3.0.0
pip-tools==7.4.1
- # via pip-compile-multi
prompt-toolkit==3.0.51
- # via ipython
ptyprocess==0.7.0
- # via pexpect
pure-eval==0.2.3
- # via stack-data
-pymarkdownlnt==0.9.30
- # via -r requirements/dev.in
+pygments==2.19.1
+pymarkdownlnt==0.9.29
pyproject-hooks==1.2.0
- # via
- # build
- # pip-tools
-pytest-randomly==3.16.0
- # via -r requirements/dev.in
pyyaml==6.0.2
- # via application-properties
-requests==2.32.4
- # via genbadge
+requests==2.32.3
rich==14.0.0
- # via -r requirements/dev.in
-ruff==0.12.0
- # via -r requirements/dev.in
-setuptools==80.9.0
- # via
- # genbadge
- # pip-tools
+ruff==0.11.8
+setuptools==80.3.1
stack-data==0.6.3
- # via ipython
tomli==2.2.1
- # via application-properties
toolz==1.0.0
- # via columnar
toposort==1.10
- # via pip-compile-multi
traitlets==5.14.3
- # via
- # ipython
- # matplotlib-inline
-types-pyyaml==6.0.12.20250516
- # via django-stubs
-urllib3==2.5.0
- # via requests
-uv==0.7.13
- # via -r requirements/dev.in
+types-pyyaml==6.0.12.20250402
+urllib3==2.4.0
+uv==0.7.3
wcwidth==0.2.13
- # via
- # columnar
- # prompt-toolkit
wheel==0.45.1
- # via pip-tools
diff --git a/requirements/prod.txt b/requirements/prod.txt
index 5ec662d..8499f3c 100644
--- a/requirements/prod.txt
+++ b/requirements/prod.txt
@@ -6,37 +6,15 @@
# requirements upgrade
#
asgiref==3.8.1
- # via
- # django
- # django-structlog
-django==5.2.3
- # via
- # -r requirements/prod.in
- # django-extensions
- # django-structlog
+django==5.2.1
django-environ==0.12.0
- # via -r requirements/prod.in
django-extensions==4.1
- # via
- # -r requirements/prod.in
- # django-structlog
django-ipware==7.0.1
- # via django-structlog
django-structlog==9.1.1
- # via -r requirements/prod.in
-psycopg==3.2.9
- # via -r requirements/prod.in
-psycopg-binary==3.2.9
- # via psycopg
+psycopg==3.2.7
+psycopg-binary==3.2.7
psycopg-pool==3.2.6
- # via psycopg
python-ipware==3.0.0
- # via django-ipware
sqlparse==0.5.3
- # via django
structlog==24.4.0
- # via
- # -r requirements/prod.in
- # django-structlog
-typing-extensions==4.14.0
- # via psycopg-pool
+typing-extensions==4.13.2
diff --git a/requirements/test.txt b/requirements/test.txt
index afb256e..77dcff2 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -7,29 +7,12 @@
#
-r prod.txt
attrs==25.3.0
- # via hypothesis
-coverage==7.9.1
- # via pytest-cov
-hypothesis==6.135.14
- # via -r requirements/test.in
+coverage==7.8.0
+hypothesis==6.131.15
iniconfig==2.1.0
- # via pytest
packaging==25.0
- # via pytest
-pluggy==1.6.0
- # via
- # pytest
- # pytest-cov
-pygments==2.19.1
- # via pytest
-pytest==8.4.1
- # via
- # -r requirements/test.in
- # pytest-cov
- # pytest-django
-pytest-cov==6.2.1
- # via -r requirements/test.in
+pluggy==1.5.0
+pytest==8.3.5
+pytest-cov==6.1.1
pytest-django==4.11.1
- # via -r requirements/test.in
sortedcontainers==2.4.0
- # via hypothesis