diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1ff0e970..2fb8d9df 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,13 @@ instructions, because git commits are used to generate release notes:
+
+## v18.0.0 (2024-06-19)
+
+- 💥[Feature] Upgrade to Redwood (by @hinakhadim)
+- [Feature] Enable `atlas pull` on all Micro-frontends. (by @omarithawi)
+- 💥[Feature] Use `ATLAS_OPTIONS` for `atlas pull`. This breaks the `i18n-merge.js` custom locale Tutor MFE feature in favor of [OEP-58](https://docs.openedx.org/en/latest/developers/concepts/oep58.html) `atlas pull` options. (by @omarithawi)
+
## v17.0.1 (2024-03-26)
diff --git a/changelog.d/20240109_111839_i_atlas_options.md b/changelog.d/20240109_111839_i_atlas_options.md
deleted file mode 100644
index 58cccd47..00000000
--- a/changelog.d/20240109_111839_i_atlas_options.md
+++ /dev/null
@@ -1 +0,0 @@
-- 💥[Feature] Use `ATLAS_OPTIONS` for `atlas pull`. This breaks the `i18n-merge.js` custom locale Tutor MFE feature in favor of [OEP-58](https://docs.openedx.org/en/latest/developers/concepts/oep58.html) `atlas pull` options. (by @omarithawi)
diff --git a/changelog.d/20240202_172501_i_atlas_for_all.md b/changelog.d/20240202_172501_i_atlas_for_all.md
deleted file mode 100644
index c3dde6cd..00000000
--- a/changelog.d/20240202_172501_i_atlas_for_all.md
+++ /dev/null
@@ -1 +0,0 @@
-- [Feature] Enable `atlas pull` on all Micro-frontends. (by @omarithawi)
diff --git a/changelog.d/20240228_111818_arbrandes_nightly.md b/changelog.d/20240228_111818_arbrandes_nightly.md
deleted file mode 100644
index 0e6c4915..00000000
--- a/changelog.d/20240228_111818_arbrandes_nightly.md
+++ /dev/null
@@ -1 +0,0 @@
-- [Bugfix] Fix dev mode after frontend-build NPM namespace change (by @arbrandes)
diff --git a/setup.py b/setup.py
index 1234f35c..6e427edd 100644
--- a/setup.py
+++ b/setup.py
@@ -40,8 +40,8 @@ def load_about():
packages=find_packages(exclude=["tests*"]),
include_package_data=True,
python_requires=">=3.8",
- install_requires=["tutor>=17.0.0,<18.0.0"],
- extras_require={"dev": ["tutor[dev]>=17.0.0,<18.0.0"]},
+ install_requires=["tutor>=18.0.0,<19.0.0"],
+ extras_require={"dev": ["tutor[dev]>=18.0.0,<19.0.0"]},
entry_points={"tutor.plugin.v1": ["mfe = tutormfe.plugin"]},
classifiers=[
"Development Status :: 5 - Production/Stable",
diff --git a/tutormfe/__about__.py b/tutormfe/__about__.py
index dba3a77b..c6a8b8ed 100644
--- a/tutormfe/__about__.py
+++ b/tutormfe/__about__.py
@@ -1 +1 @@
-__version__ = "17.0.1"
+__version__ = "18.0.0"
diff --git a/tutormfe/hooks.py b/tutormfe/hooks.py
index e62c2eb2..e23d461d 100644
--- a/tutormfe/hooks.py
+++ b/tutormfe/hooks.py
@@ -3,6 +3,7 @@
the tutor-mfe hooks would be created in the context of some other plugin that imports
them.
"""
+
from __future__ import annotations
import typing as t