diff --git a/hugo/content/dev/release.md b/hugo/content/dev/release.md
index ffae622b673c1e8cbdd91048177899ca2c8a0ef1..468a6c2f46564ec8be1932cf6a80b4c8043d2885 100644
--- a/hugo/content/dev/release.md
+++ b/hugo/content/dev/release.md
@@ -7,8 +7,10 @@ weight = 90
 
 #### Test phase
 
+- Decide whether it's a minor or major increment, and set version number in `CMakeLists.txt`
+- Decide and set recommended_python_minor in `hugo/hugo.toml`
 - Declare feature freeze
-- Release new versions of library dependencies (heinz, ff) if they have changed.
+- Release new versions of library dependencies (heinz, ff) if they have changed
 - Start release branch
 - Update CHANGELOG
 - Build packages, and test them
@@ -18,35 +20,61 @@ weight = 90
   - import sample from script to GUI
 - Start new branch in ba-www, and write release letter (`content/news/release-*.md`)
 
+#### Finalize release
 
-Finalize bornagain (MRs against release branch):
-- Finalize CHANGELOG
-- CMakeLists.txt
-- In hugo/config.toml, update `baseURL`, `release_number` and `version_name`
-- Set git tag v`x.y` - reversible freeze
+- Finalize bornagain (MRs against release branch):
+  - Finalize CHANGELOG
+  - In hugo/hugo.toml, update `baseURL`, `release_number`, `version_name`, `url_blob`
+- After merger into release branch, set git tag v`x.y`
 
 Finalize ba-www (in fresh release branch):
+- Finalize release letter
 - Update content/documentation.md
 - Update static/js/version_switch
-- In config.toml, update `version_mm`
-- Add release letter
+- In `hugo.toml`, update `version_mm`
+- Hold back MR until everything else is ready
 
 Upload installers and wheels (this makes the release irreversible):
 - Build installers and wheels for all Python versions
 - Installers to www@scgbuild:www/ext/ba/files/`version`.`patch`/
 - Wheels to PyPI
 
-Publish:
+#### Publish
+
 - Create release in Jugit
-- In www@scg3:ba: for hotfix, update versioned repository (in subdirectory repo, checkout release branch and run make, make figures etc, hugo); for major release, create new versioned repository
-- In www@scg3:www/ba/public, update `latest` and version link
+- As www on @scg3
+  ```
+  cd ~/ba
+  cp -pr <old_version>/repo <new_version>/repo; # for hotfix, use extant directory
+  git fetch --all --prune
+  git checkout <release_branch>
+  git pull --all
+  cd build
+  cmake ..
+  make
+  ctest
+  make figures
+  cd ../hugo
+  hugo
+  cd ../..
+  ln -si repo/hugo/public hugo-public
+  cd ~/www/ba/public
+  ln -si /home/www/ba/VERSION/hugo-public VERSION
+  rm latest
+  ln -si VERSION latest
+  ```
 - Merge release branch to ba-www => Docs will automatically be updated
 
-Inform users
-- Mail to BornAgain mailing list
-- For major milestones, mail to external mailing lists (neutron, sa_scat [unsigned mails only!])
-- Update "Latest" section on computing.mlz-garching.de
+- Inform users
+  - Mail to BornAgain mailing list
+  - For major milestones, mail to external mailing lists (neutron, sa_scat [unsigned mails only!])
+  - Update "Latest" section on computing.mlz-garching.de
+
+#### Continue development
 
-Create next release branch
-- Create branch `rx.y`, push to Jugit
-- In Jugit > Settings > Repository > Protected Branches, protect the branch
+- Merge changes back into `main`
+  - fork new feature branch from `main`
+  - merge release branch
+  - restore "git-main" in `hugo/hugo.toml`
+  - update version number in `CMakeLists.txt`
+  - create MR against `main`