diff --git a/vizro-ai/CHANGELOG.md b/vizro-ai/CHANGELOG.md
index 2e1ccd11b4..364bf62770 100644
--- a/vizro-ai/CHANGELOG.md
+++ b/vizro-ai/CHANGELOG.md
@@ -11,6 +11,18 @@ See the fragment files in the [changelog.d directory](https://github.com/mckinse
+
+
+# 0.3.8 — 2026-01-05
+
+## Removed
+
+- Remove `dashboard_ui` example. ([#1332](https://github.com/mckinsey/vizro/pull/1332))
+
+- Drop support for Python 3.9. ([#1484](https://github.com/mckinsey/vizro/pull/1484))
+
+- Drop support for Python 3.14 until dependencies are updated. ([#1529](https://github.com/mckinsey/vizro/pull/1529))
+
# 0.3.7 — 2025-06-03
diff --git a/vizro-ai/changelog.d/20250603_144151_runner.md b/vizro-ai/changelog.d/20250603_144151_runner.md
deleted file mode 100644
index 7c0d58d4f8..0000000000
--- a/vizro-ai/changelog.d/20250603_144151_runner.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/vizro-ai/changelog.d/20250709_145916_petar_pejovic_slider_and_range_slider_js.md b/vizro-ai/changelog.d/20250709_145916_petar_pejovic_slider_and_range_slider_js.md
deleted file mode 100644
index 7c0d58d4f8..0000000000
--- a/vizro-ai/changelog.d/20250709_145916_petar_pejovic_slider_and_range_slider_js.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/vizro-ai/changelog.d/20250808_122642_90609403+huong-li-nguyen_remove_dashboard_ui.md b/vizro-ai/changelog.d/20250808_122642_90609403+huong-li-nguyen_remove_dashboard_ui.md
deleted file mode 100644
index e0587074ac..0000000000
--- a/vizro-ai/changelog.d/20250808_122642_90609403+huong-li-nguyen_remove_dashboard_ui.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-### Removed
-
-- Remove `dashboard_ui` example. ([#1332](https://github.com/mckinsey/vizro/pull/1332))
-
-
-
-
-
-
-
diff --git a/vizro-ai/changelog.d/20251013_133217_90609403+huong-li-nguyen_pre_commit_ci_update_config.md b/vizro-ai/changelog.d/20251013_133217_90609403+huong-li-nguyen_pre_commit_ci_update_config.md
deleted file mode 100644
index 7c0d58d4f8..0000000000
--- a/vizro-ai/changelog.d/20251013_133217_90609403+huong-li-nguyen_pre_commit_ci_update_config.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/vizro-ai/changelog.d/20251020_140632_petar_pejovic_button_set_control_support.md b/vizro-ai/changelog.d/20251020_140632_petar_pejovic_button_set_control_support.md
deleted file mode 100644
index 7c0d58d4f8..0000000000
--- a/vizro-ai/changelog.d/20251020_140632_petar_pejovic_button_set_control_support.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/vizro-ai/changelog.d/20251029_094801_lingyi_zhang_yaml_example_cc_chart.md b/vizro-ai/changelog.d/20251029_094801_lingyi_zhang_yaml_example_cc_chart.md
deleted file mode 100644
index 7c0d58d4f8..0000000000
--- a/vizro-ai/changelog.d/20251029_094801_lingyi_zhang_yaml_example_cc_chart.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/vizro-ai/changelog.d/20251111_172413_antony.milne_bump_python.md b/vizro-ai/changelog.d/20251111_172413_antony.milne_bump_python.md
deleted file mode 100644
index 6d84a7b6b8..0000000000
--- a/vizro-ai/changelog.d/20251111_172413_antony.milne_bump_python.md
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-### Removed
-
-- Drop support for Python 3.9. ([#1484](https://github.com/mckinsey/vizro/pull/1484))
-
-### Added
-
-- Add support for Python 3.14. ([#1484](https://github.com/mckinsey/vizro/pull/1484))
-
-
-
-
diff --git a/vizro-ai/changelog.d/20250603_102309_lingyi_zhang_0_3_7.md b/vizro-ai/changelog.d/20260105_150033_maximilian_schulz_0_3_8.md
similarity index 100%
rename from vizro-ai/changelog.d/20250603_102309_lingyi_zhang_0_3_7.md
rename to vizro-ai/changelog.d/20260105_150033_maximilian_schulz_0_3_8.md
diff --git a/vizro-ai/changelog.d/a.md b/vizro-ai/changelog.d/a.md
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/vizro-ai/src/vizro_ai/__init__.py b/vizro-ai/src/vizro_ai/__init__.py
index a8cf0e6a4b..46deabd0e8 100644
--- a/vizro-ai/src/vizro_ai/__init__.py
+++ b/vizro-ai/src/vizro_ai/__init__.py
@@ -9,7 +9,7 @@
__all__ = ["VizroAI"]
-__version__ = "0.3.8.dev0"
+__version__ = "0.3.8"
# TODO: I think this collides with the VIZRO_LOG_LEVEL setting, as basicConfig can only be set once
logging.basicConfig(level=os.getenv("VIZRO_AI_LOG_LEVEL", "INFO"))