diff --git a/.gitlab/issue_templates/update_all_components.md b/.gitlab/issue_templates/update_all_components.md
index b28300d6b07c124b98ac3539346f9afb583ea034..9f6a5da8c0a327f5e51318e5f2a9901f869d0f60 100644
--- a/.gitlab/issue_templates/update_all_components.md
+++ b/.gitlab/issue_templates/update_all_components.md
@@ -1,27 +1,34 @@
-## Update all applications in this repository
+## Only for major releases
 
-* [ ] Update Flux version
-  
-      current_flux_version=0.20.1
-      new_flux_version=0.24.0
+Flux and k3s still need manual intervention (see #976 and #993), so we
+only update them on major releases.
+
+* [ ] Update [Flux version](https://github.com/fluxcd/flux2/releases)
+
+      current_flux_version=$(yq eval .flux.version ansible/group_vars/all/stackspin.yml)
+      new_flux_version=$(curl -s https://api.github.com/repos/fluxcd/flux2/releases/latest | jq -r .name | tr -d 'v')
       sed -i "s/$current_flux_version/$new_flux_version/g" Dockerfile install/flux-version-check.sh docs/installation/install_stackspin.rst ansible/group_vars/all/stackspin.yml
 
-* [ ] Update all apk app versions inside `Dockerfile`
-* [ ] Update mitogen version in `ansible/plugins` (https://github.com/mitogen-hq/mitogen/releases)
-* [ ] Update k3s in `ansible/group_vars/all/stackspin.yml`:
+* [ ] Update k3s in `ansible/group_vars/all/stackspin.yml`
+
+## Update applications in this repository
 
-## Update our custom charts:
+* [ ] Update [taiko version](https://github.com/getgauge/taiko/releases) inside `Dockerfile` (see #981 for pending renovate automation)
 
-We get dependeny updates via renovate for our custom helm charts.  However, we
-still don't get [automated version
-bumps](https://open.greenhost.net/stackspin/stackspin/-/issues/1001) with it, so
-make sure to bump the version if needed for:
+## Update our custom charts
 
-* [ ] [dashboard](https://open.greenhost.net/stackspin/dashboard)
-* [ ] [nextcloud](https://open.greenhost.net/stackspin/nextcloud)
-* [ ] [single-sign-on](https://open.greenhost.net/stackspin/single-sign-on)
+We configured renovate for these projects, but [renovate doesn't properly update the
+`version` tag in `Chart.yaml`](#1176). So we need to manually update both the
+`version` and `appVersion` tags in:
+
+* [ ] [dashboard](https://open.greenhost.net/stackspin/dashboard) (see also dashboard#10)
+* [ ] [nextcloud](https://open.greenhost.net/stackspin/nextcloud) (see also nextcloud#1012)
 * [ ] [wordpress](https://open.greenhost.net/stackspin/wordpress-helm)
 
 Pull in upstream changes to:
 
 * [ ] [local-path-provisioner](https://open.greenhost.net/stackspin/local-path-provisioner)
+
+Update our Zulip container:
+
+* [ ] [Instructions to build new container](https://docs.stackspin.net/en/v0.8/instructions.html#building-a-new-version-of-zulip)
diff --git a/Dockerfile b/Dockerfile
index 4c2b6359103077563ec9c2689da071d7ed85dc21..6845a73c1c04b2d7f5241e23b65aae2f5852e06e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,7 @@
 FROM alpine:3.15
 
 LABEL name="Stackspin management"
-LABEL version="4.5"
+LABEL version="4.6"
 LABEL vendor1="Greenhost"
 
 ENV TAIKO_SKIP_CHROMIUM_DOWNLOAD=true
@@ -40,4 +40,4 @@ RUN \
   pip install --no-cache-dir --ignore-installed six -r /requirements.txt && \
   ln -s /usr/bin/python3 /usr/bin/python && \
   tar -xzf /tmp/flux*.tar.gz && mv ./flux /usr/local/bin && \
-  npm install -g taiko@1.2.6
+  npm install -g taiko@1.3.1
diff --git a/test/taiko/apps.js b/test/taiko/apps.js
index 0b5cb76a7a87a81b59ee4ea3289658e435c6a92c..1a26ad20cdb120ab9151f53da20c61eb5032855e 100644
--- a/test/taiko/apps.js
+++ b/test/taiko/apps.js
@@ -53,16 +53,16 @@
       console.log('• Onlyoffice')
 
       await goto(onlyofficeUrl + '/welcome')
-      await waitFor(async () => (await text("Thank you for choosing ONLYOFFICE!").isVisible()))
-      await waitFor(async () => (await text("Document Server is running").isVisible()))
+      await waitFor(async () => (await text("Thank you for choosing ONLYOFFICE!").exists()))
+      await waitFor(async () => (await text("Document Server is running").exists()))
 
       await goto(onlyofficeUrl + '/healthcheck')
-      await waitFor(async () => (await text("true").isVisible()))
+      await waitFor(async () => (await text("true").exists()))
 
       console.log('• Nextcloud')
       await goto(nextcloudUrl)
       await sso_login_if_needed('Log in with Stackspin')
-      await waitFor(async () => (await text("Set location for weather").isVisible()), globalTimeout)
+      await waitFor(async () => (await text("Set location for weather").exists()), globalTimeout)
       // Close potential nextcloud first run wizard modal
       // https://github.com/nextcloud/firstrunwizard/issues/488
       // Unfortunately, we need to sleep a while since I haven't found a
@@ -73,11 +73,11 @@
 
       // Test password app
       await click('Passwords')
-      await waitFor(async () => (await text("Handbook").isVisible()), globalTimeout)
+      await waitFor(async () => (await text("Handbook").exists()), globalTimeout)
 
       // Test if calendar app is enabled
       await click('Calendar')
-      await waitFor(async () => (await text("Settings & Import").isVisible()), globalTimeout)
+      await waitFor(async () => (await text("Settings & Import").exists()), globalTimeout)
 
       console.log('• Nextcloud Onlyoffice integration')
       // Open document and type some text