diff --git a/docs/usage/release-notes-for-major-versions.md b/docs/usage/release-notes-for-major-versions.md
index 854355e7082c1781a907143e6d52a25c54cfbe33..5a1241fdc27d887a19581805d9a0babc1f4de55f 100644
--- a/docs/usage/release-notes-for-major-versions.md
+++ b/docs/usage/release-notes-for-major-versions.md
@@ -7,6 +7,71 @@ The most recent versions are always at the top of the page.
 This is because recent versions may revert changes made in an older version.
 You also don't have to scroll to the bottom of the page to find the latest release notes.
 
+## Version 39
+
+### Breaking changes for 39
+
+#### New tools for all Docker images
+
+All our Docker images now use:
+
+- Node.js v22 as base, was Node.js v20
+- Ubuntu 24.04 as base, was 20.04
+
+#### New Docker user ID for all Docker images
+
+All our Docker images now set the Docker user ID to `12021`, the old ID was `1001`.
+
+After updating your Renovate Docker image to the new v39 release, you must:
+
+- Delete your old Docker cache, _or_
+- Ensure the new user ID has write permissions to any existing cache
+
+#### Updated version of Python, and new default behavior for the `-full` Docker image
+
+On top of the changes listed above, the `-full` image now:
+
+- Uses Python 3.13
+- Defaults to [`binarySource=global`](self-hosted-configuration.md#binarysource) (note: this was previously the case in v36 onwards but regressed sometime in v38)
+
+If you want to keep the old behavior, where Renovate dynamically installs the needed tools: set the environment variable `RENOVATE_BINARY_SOURCE` to `"install"`.
+
+#### Renovate tries squash merges first when automerging on GitHub
+
+Due to technical reasons, GitHub will only sign commits coming from a squash merge.
+To help those who want Renovate to sign its commits, Renovate now tries the squash merge first.
+
+Of course, Renovate only uses the merge method(s) that you allow in your GitHub repository config.
+
+##### How you can allow squash merges on your GitHub repository
+
+If you want to allow squash merges on your GitHub repository, follow the steps in the [GitHub Docs, configuring commit squashing for pull requests](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests).
+
+#### Branch names with multiple slashes
+
+If you set `branchNameStrict=true`, then branch names with multiple forward slashes (`/`) will change.
+
+The problem was that even if you set `branchNameStrict=true`, in some cases special characters could still end up in Renovate's branch names.
+We fixed this problem, by letting Renovate convert multiple forward slashes (`/`) to hyphens (`-`) in its branch names, if `branchNameStrict=true`.
+
+### Commentary for 39
+
+#### Technical reasons for trying the squash merge first on GitHub
+
+Renovate has changed its GitHub merge preference to "squash" because this way results in signed commits, while "rebase" merges do not.
+
+Read the [GitHub Docs, Signature verification for rebase and merge](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#signature-verification-for-rebase-and-merge) to learn more about commit signing.
+
+#### Why we change branch names with multiple slashes
+
+Branches with mutiple slashes (`/`) are not wanted, this was a bug.
+We are changing it in a major release out of politeness to all our users.
+If you enabled `branchNameStrict`, you can expect some branch names to change.
+
+### Link to release notes for 39
+
+[Release notes for `v39` on GitHub](https://github.com/renovatebot/renovate/releases/tag/39.0.0).
+
 ## Version 38
 
 ### Breaking changes for 38
diff --git a/tools/mkdocs/mkdocs.yml b/tools/mkdocs/mkdocs.yml
index 5b8eef98dd29623f4e14820eeb8331d688b44755..cf68267748d9c96cd1132c2791fcd6f16be395a9 100644
--- a/tools/mkdocs/mkdocs.yml
+++ b/tools/mkdocs/mkdocs.yml
@@ -59,7 +59,7 @@ theme:
   # The custom_dir points to the overrides folder, this folder has the code for our announcement bar.
   # The easiest way to disable the announcement bar is to comment out the custom_dir: overrides entry in this mkdocs.yml file.
   # https://squidfunk.github.io/mkdocs-material/customization/#setup-and-theme-structure
-  # custom_dir: overrides
+  custom_dir: overrides
 
   logo: 'assets/images/logo.png'
   favicon: 'assets/images/logo.png'
diff --git a/tools/mkdocs/overrides/main.html b/tools/mkdocs/overrides/main.html
index 63eeff390ae7255f35f7bdfc2573ee31d49f741f..7c2c95214149ebed3245e98337a54e544e3bef1a 100644
--- a/tools/mkdocs/overrides/main.html
+++ b/tools/mkdocs/overrides/main.html
@@ -6,6 +6,6 @@
 
 {% block announce %}
 <p>
-  We released Renovate <code>v38</code>. Read the <a href="https://docs.renovatebot.com/release-notes-for-major-versions/">Release notes for major versions of Renovate</a> to learn what's changed.
+  We released Renovate <code>v39</code>. Read the <a href="https://docs.renovatebot.com/release-notes-for-major-versions/">Release notes for major versions of Renovate</a> to learn what's changed.
 </p>
 {% endblock %}