diff --git a/constraints.txt b/constraints.txt
index ba03baa..80ab076 100644
--- a/constraints.txt
+++ b/constraints.txt
@@ -29,7 +29,7 @@ django==5.0.6
     #   django-htmx
     #   django-linear-migrations
     #   django-registration
-django-anymail==10.3
+django-anymail==11.0
     # via -r requirements.in
 django-bootstrap5==24.2
     # via -r requirements.in
@@ -39,9 +39,9 @@ django-environ==0.11.2
     # via -r requirements.in
 django-extensions==3.2.3
     # via -r requirements.in
-django-htmx==1.17.3
+django-htmx==1.18.0
     # via -r requirements.in
-django-linear-migrations==2.12.0
+django-linear-migrations==2.13.0
     # via -r requirements.in
 django-registration==3.4
     # via -r requirements.in
@@ -67,7 +67,7 @@ requests==2.32.3
     # via
     #   -r requirements.in
     #   django-anymail
-selenium==4.21.0
+selenium==4.22.0
     # via -r requirements.in
 sniffio==1.3.1
     # via trio
@@ -88,7 +88,9 @@ urllib3==2.2.2
     #   django-anymail
     #   requests
     #   selenium
-whitenoise==6.6.0
+websocket-client==1.8.0
+    # via selenium
+whitenoise==6.7.0
     # via -r requirements.in
 wsproto==1.2.0
     # via trio-websocket
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 3054c61..2d64887 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -38,7 +38,7 @@ click==8.1.7
     # via
     #   black
     #   pip-tools
-coverage[toml]==7.5.3
+coverage[toml]==7.5.4
     # via pytest-cov
 curtsies==0.4.2
     # via bpython
@@ -54,11 +54,11 @@ django==5.0.6
     #   django-browser-reload
     #   django-debug-toolbar
     #   model-bakery
-django-browser-reload==1.12.1
+django-browser-reload==1.13.0
     # via -r requirements-dev.in
 django-debug-toolbar==4.4.2
     # via -r requirements-dev.in
-filelock==3.15.1
+filelock==3.15.4
     # via virtualenv
 greenlet==3.0.3
     # via bpython
@@ -66,7 +66,7 @@ h11==0.14.0
     # via
     #   -c constraints.txt
     #   wsproto
-hypothesis==6.103.2
+hypothesis==6.103.5
     # via -r requirements-dev.in
 identify==2.5.36
     # via pre-commit
@@ -155,9 +155,9 @@ requests==2.32.3
     #   bpython
     #   pytest-base-url
     #   pytest-selenium
-ruff==0.4.9
+ruff==0.4.10
     # via -r requirements-dev.in
-selenium==4.21.0
+selenium==4.22.0
     # via
     #   -c constraints.txt
     #   pytest-selenium
@@ -177,7 +177,7 @@ sqlparse==0.5.0
     #   -c constraints.txt
     #   django
     #   django-debug-toolbar
-tenacity==8.4.1
+tenacity==8.4.2
     # via pytest-selenium
 trio==0.25.1
     # via
@@ -197,10 +197,14 @@ urllib3[socks]==2.2.2
     #   -c constraints.txt
     #   requests
     #   selenium
-virtualenv==20.26.2
+virtualenv==20.26.3
     # via pre-commit
 wcwidth==0.2.13
     # via blessed
+websocket-client==1.8.0
+    # via
+    #   -c constraints.txt
+    #   selenium
 wheel==0.43.0
     # via pip-tools
 wsproto==1.2.0
@@ -209,7 +213,7 @@ wsproto==1.2.0
     #   trio-websocket
 
 # The following packages are considered to be unsafe in a requirements file:
-pip==24.0
+pip==24.1
     # via pip-tools
-setuptools==70.0.0
+setuptools==70.1.0
     # via pip-tools
diff --git a/requirements.txt b/requirements.txt
index 7059b6d..f8a24f1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -29,7 +29,7 @@ django==5.0.6
     #   django-htmx
     #   django-linear-migrations
     #   django-registration
-django-anymail[mailgun]==10.3
+django-anymail[mailgun]==11.0
     # via -r requirements.in
 django-bootstrap5==24.2
     # via -r requirements.in
@@ -39,9 +39,9 @@ django-environ==0.11.2
     # via -r requirements.in
 django-extensions==3.2.3
     # via -r requirements.in
-django-htmx==1.17.3
+django-htmx==1.18.0
     # via -r requirements.in
-django-linear-migrations==2.12.0
+django-linear-migrations==2.13.0
     # via -r requirements.in
 django-registration==3.4
     # via -r requirements.in
@@ -67,7 +67,7 @@ requests==2.32.3
     # via
     #   -r requirements.in
     #   django-anymail
-selenium==4.21.0
+selenium==4.22.0
     # via -r requirements.in
 sniffio==1.3.1
     # via trio
@@ -88,7 +88,9 @@ urllib3[socks]==2.2.2
     #   django-anymail
     #   requests
     #   selenium
-whitenoise==6.6.0
+websocket-client==1.8.0
+    # via selenium
+whitenoise==6.7.0
     # via -r requirements.in
 wsproto==1.2.0
     # via trio-websocket