diff --git a/constraints.txt b/constraints.txt
index 6f3431f..49a0e67 100644
--- a/constraints.txt
+++ b/constraints.txt
@@ -16,13 +16,13 @@ certifi==2023.7.22
     #   selenium
 cffi==1.16.0
     # via cryptography
-charset-normalizer==3.3.1
+charset-normalizer==3.3.2
     # via requests
 confusable-homoglyphs==3.2.0
     # via django-registration
 cryptography==41.0.5
     # via django-anymail
-django==4.2.6
+django==4.2.7
     # via
     #   -r requirements.in
     #   django-anymail
@@ -57,7 +57,7 @@ idna==3.4
     # via
     #   requests
     #   trio
-markdown==3.5
+markdown==3.5.1
     # via -r requirements.in
 outcome==1.3.0.post0
     # via trio
@@ -81,7 +81,7 @@ sortedcontainers==2.4.0
     # via trio
 sqlparse==0.4.4
     # via django
-trio==0.22.2
+trio==0.23.1
     # via
     #   selenium
     #   trio-websocket
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 6220148..6c63b97 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -29,7 +29,7 @@ certifi==2023.7.22
     #   selenium
 cfgv==3.4.0
     # via pre-commit
-charset-normalizer==3.3.1
+charset-normalizer==3.3.2
     # via
     #   -c constraints.txt
     #   requests
@@ -49,7 +49,7 @@ cwcwidth==0.1.9
     #   curtsies
 distlib==0.3.7
     # via virtualenv
-django==4.2.6
+django==4.2.7
     # via
     #   -c constraints.txt
     #   django-browser-reload
@@ -59,7 +59,7 @@ django-browser-reload==1.12.0
     # via -r requirements-dev.in
 django-debug-toolbar==4.2.0
     # via -r requirements-dev.in
-filelock==3.13.0
+filelock==3.13.1
     # via virtualenv
 greenlet==3.0.1
     # via bpython
@@ -67,7 +67,7 @@ h11==0.14.0
     # via
     #   -c constraints.txt
     #   wsproto
-hypothesis==6.88.1
+hypothesis==6.88.3
     # via -r requirements-dev.in
 identify==2.5.31
     # via pre-commit
@@ -138,7 +138,7 @@ pytest-cov==4.1.0
     # via -r requirements-dev.in
 pytest-django==4.6.0
     # via -r requirements-dev.in
-pytest-html==4.0.2
+pytest-html==4.1.0
     # via pytest-selenium
 pytest-metadata==3.0.0
     # via pytest-html
@@ -156,7 +156,7 @@ requests==2.31.0
     #   bpython
     #   pytest-base-url
     #   pytest-selenium
-ruff==0.1.3
+ruff==0.1.4
     # via -r requirements-dev.in
 selenium==4.9.1
     # via
@@ -180,7 +180,7 @@ sqlparse==0.4.4
     #   django-debug-toolbar
 tenacity==8.2.3
     # via pytest-selenium
-trio==0.22.2
+trio==0.23.1
     # via
     #   -c constraints.txt
     #   selenium
@@ -196,7 +196,7 @@ urllib3[socks]==2.0.7
     #   selenium
 virtualenv==20.24.6
     # via pre-commit
-wcwidth==0.2.8
+wcwidth==0.2.9
     # via blessed
 wheel==0.41.3
     # via pip-tools
diff --git a/requirements.txt b/requirements.txt
index 8a6a8a1..fde2f63 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -16,13 +16,13 @@ certifi==2023.7.22
     #   selenium
 cffi==1.16.0
     # via cryptography
-charset-normalizer==3.3.1
+charset-normalizer==3.3.2
     # via requests
 confusable-homoglyphs==3.2.0
     # via django-registration
 cryptography==41.0.5
     # via django-anymail
-django==4.2.6
+django==4.2.7
     # via
     #   -r requirements.in
     #   django-anymail
@@ -57,7 +57,7 @@ idna==3.4
     # via
     #   requests
     #   trio
-markdown==3.5
+markdown==3.5.1
     # via -r requirements.in
 outcome==1.3.0.post0
     # via trio
@@ -81,7 +81,7 @@ sortedcontainers==2.4.0
     # via trio
 sqlparse==0.4.4
     # via django
-trio==0.22.2
+trio==0.23.1
     # via
     #   selenium
     #   trio-websocket