diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0082e88..de708a0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,14 @@ instructions, because git commits are used to generate release notes:
+
+## v21.0.0 (2025-10-30)
+
+- [Improvement] Migrate from pylint and black to ruff. (by @dawoudsheraz)
+- [Improvement] Test python package distribution build when running make-test. (by @dawoudsheraz)
+
+- 💥[Feature] Upgrade to Ulmo. (by @jfavellar90)
+
## v20.0.0 (2025-06-05)
diff --git a/changelog.d/20250915_115717_dawoud.sheraz_ruff_migration.md b/changelog.d/20250915_115717_dawoud.sheraz_ruff_migration.md
deleted file mode 100644
index 114cde4..0000000
--- a/changelog.d/20250915_115717_dawoud.sheraz_ruff_migration.md
+++ /dev/null
@@ -1,2 +0,0 @@
-- [Improvement] Migrate from pylint and black to ruff. (by @dawoudsheraz)
-- [Improvement] Test python package distribution build when running make-test. (by @dawoudsheraz)
diff --git a/pyproject.toml b/pyproject.toml
index 525d699..dd70a72 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -27,7 +27,7 @@ classifiers = [
"Programming Language :: Python :: 3.12",
]
dependencies = [
- "tutor>=20.0.0,<21.0.0",
+ "tutor>=21.0.0,<22.0.0",
]
# These fields will be set by hatch_build.py
@@ -35,7 +35,7 @@ dynamic = ["version"]
[project.optional-dependencies]
dev = [
- "tutor[dev]>=20.0.0,<21.0.0",
+ "tutor[dev]>=21.0.0,<22.0.0",
"ruff"
]
diff --git a/tutornotes/__about__.py b/tutornotes/__about__.py
index 9c9eb91..9bfcca5 100644
--- a/tutornotes/__about__.py
+++ b/tutornotes/__about__.py
@@ -1 +1 @@
-__version__ = "20.0.0"
+__version__ = "21.0.0"
diff --git a/tutornotes/templates/notes/build/notes/Dockerfile b/tutornotes/templates/notes/build/notes/Dockerfile
index 34752a2..9f7b716 100644
--- a/tutornotes/templates/notes/build/notes/Dockerfile
+++ b/tutornotes/templates/notes/build/notes/Dockerfile
@@ -34,7 +34,7 @@ ENV PATH=/app/venv/bin:${PATH}
# https://pypi.org/project/setuptools/
# https://pypi.org/project/pip/
# https://pypi.org/project/wheel/
-RUN --mount=type=cache,target=/app/.cache/pip,sharing=shared pip install setuptools==78.1.0 pip==25.0.1 wheel==0.46.0
+RUN --mount=type=cache,target=/app/.cache/pip,sharing=shared pip install setuptools==80.9.0 pip==25.3 wheel==0.46.1
RUN --mount=type=cache,target=/app/.cache/pip,sharing=shared pip install -r requirements/base.txt
EXPOSE 8000