diff --git a/CHANGELOG.md b/CHANGELOG.md
index 497463be..ea172e44 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,14 @@ instructions, because git commits are used to generate release notes:
+
+## v17.0.0 (2023-12-04)
+
+- 💥Upgrade to Quince.
+ - [Bugfix] Remove the trailing slash from auto-generated ``PUBLIC_PATH`` env vars for MFEs in order to be consistent with LMS/Studio config, and so that we don't have to strip it off on the JavaScript side after the React Router 6 upgrade. (by @ormsbee)
+ - [Improvement] Added Makefile and test action to repository and formatted code with Black and isort. (by @CodeWithEmad)
+ - [Feature] Add support for the Learner Dashboard MFE. (by @arbrandes)
+
## v16.1.3 (2023-12-07)
diff --git a/changelog.d/20231003_133500_dave_remove_trailing_slash.md b/changelog.d/20231003_133500_dave_remove_trailing_slash.md
deleted file mode 100644
index 36416779..00000000
--- a/changelog.d/20231003_133500_dave_remove_trailing_slash.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-- [Bugfix] Remove the trailing slash from auto-generated PUBLIC_PATH env vars for MFEs in order to be consistent with LMS/Studio config, and so that we don't have to strip it off on the JavaScript side after the React Router 6 upgrade. (by @ormsbee)
diff --git a/changelog.d/20231116_110038_arbrandes_add_learner_dashboard.md b/changelog.d/20231116_110038_arbrandes_add_learner_dashboard.md
deleted file mode 100644
index e5c319a4..00000000
--- a/changelog.d/20231116_110038_arbrandes_add_learner_dashboard.md
+++ /dev/null
@@ -1 +0,0 @@
-- [Feature] Add support for the Learner Dashboard MFE. (by @arbrandes)
diff --git a/setup.py b/setup.py
index 9346bb82..1234f35c 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>=16.1.2,<17.0.0"],
- extras_require={"dev": ["tutor[dev]>=16.1.2,<17.0.0"]},
+ install_requires=["tutor>=17.0.0,<18.0.0"],
+ extras_require={"dev": ["tutor[dev]>=17.0.0,<18.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 ce2be6bd..a08b09c5 100644
--- a/tutormfe/__about__.py
+++ b/tutormfe/__about__.py
@@ -1 +1 @@
-__version__ = "16.1.3"
+__version__ = "17.0.0"
diff --git a/tutormfe/patches/openedx-cms-development-settings b/tutormfe/patches/openedx-cms-development-settings
index b4659012..bfbf031e 100644
--- a/tutormfe/patches/openedx-cms-development-settings
+++ b/tutormfe/patches/openedx-cms-development-settings
@@ -2,4 +2,4 @@
COURSE_AUTHORING_MICROFRONTEND_URL = "http://{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}/course-authoring"
CORS_ORIGIN_WHITELIST.append("http://{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}")
LOGIN_REDIRECT_WHITELIST.append("{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}")
-CSRF_TRUSTED_ORIGINS.append("{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}")
+CSRF_TRUSTED_ORIGINS.append("http://{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}")
diff --git a/tutormfe/patches/openedx-cms-production-settings b/tutormfe/patches/openedx-cms-production-settings
index d86061e5..b1b5e163 100644
--- a/tutormfe/patches/openedx-cms-production-settings
+++ b/tutormfe/patches/openedx-cms-production-settings
@@ -5,4 +5,4 @@ COURSE_AUTHORING_MICROFRONTEND_URL = "{% if ENABLE_HTTPS %}https://{% else %}htt
LOGIN_REDIRECT_WHITELIST.append("{{ MFE_HOST }}")
CORS_ORIGIN_WHITELIST.append("{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}")
-CSRF_TRUSTED_ORIGINS.append("{{ MFE_HOST }}")
+CSRF_TRUSTED_ORIGINS.append("{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}")
diff --git a/tutormfe/patches/openedx-lms-development-settings b/tutormfe/patches/openedx-lms-development-settings
index 1b5e5297..bf633746 100644
--- a/tutormfe/patches/openedx-lms-development-settings
+++ b/tutormfe/patches/openedx-lms-development-settings
@@ -78,7 +78,7 @@ MFE_CONFIG["SCHEDULE_EMAIL_SECTION"] = True
# {{ app_name }} MFE
CORS_ORIGIN_WHITELIST.append("http://{{ MFE_HOST }}:{{ app["port"] }}")
LOGIN_REDIRECT_WHITELIST.append("{{ MFE_HOST }}:{{ app["port"] }}")
-CSRF_TRUSTED_ORIGINS.append("{{ MFE_HOST }}:{{ app["port"] }}")
+CSRF_TRUSTED_ORIGINS.append("http://{{ MFE_HOST }}:{{ app["port"] }}")
{% endfor %}
{{ patch("mfe-lms-common-settings") }}
diff --git a/tutormfe/patches/openedx-lms-production-settings b/tutormfe/patches/openedx-lms-production-settings
index d26de19a..1df4bcfe 100644
--- a/tutormfe/patches/openedx-lms-production-settings
+++ b/tutormfe/patches/openedx-lms-production-settings
@@ -76,7 +76,7 @@ MFE_CONFIG["SCHEDULE_EMAIL_SECTION"] = True
LOGIN_REDIRECT_WHITELIST.append("{{ MFE_HOST }}")
CORS_ORIGIN_WHITELIST.append("{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}")
-CSRF_TRUSTED_ORIGINS.append("{{ MFE_HOST }}")
+CSRF_TRUSTED_ORIGINS.append("{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}")
{{ patch("mfe-lms-common-settings") }}
{{ patch("mfe-lms-production-settings") }}
diff --git a/tutormfe/templates/mfe/build/mfe/Dockerfile b/tutormfe/templates/mfe/build/mfe/Dockerfile
index 21617c6e..6b5de7f2 100644
--- a/tutormfe/templates/mfe/build/mfe/Dockerfile
+++ b/tutormfe/templates/mfe/build/mfe/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1
# https://hub.docker.com/_/node/tags
-FROM docker.io/node:18.16.0-bullseye-slim AS base
+FROM docker.io/node:18.19.0-bullseye-slim AS base
RUN apt update \
&& apt install -y git \