diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e2c241b0d23593da5dbafe42e3e3291a069f3ca7..cbe0fa7a423205a91e8c9086036559d315a4757e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-.templates_sha: &templates_sha 290b79e0e78eab67a83766f4e9691be554fc4afd
+.templates_sha: &templates_sha e9a461877f8c7f9fed9fff5491067ec3c3472559
 
 include:
   - project: 'freedesktop/ci-templates'
@@ -13,15 +13,13 @@ include:
 
 variables:
   FDO_UPSTREAM_REPO: xrdesktop/libinputsynth
-  # increment to easily rebuild all images
-  GLOBAL_TAG_SUFFIX: 2
+  FDO_DISTRIBUTION_DATE: "2022-01-27"
 
 stages:
   - container_prep
   - build_and_test
   - package
   - reprepro
-  - pages
 
 # "Base" job for a Meson build
 .xrdesktop.base-job.build-meson:
@@ -34,37 +32,32 @@ stages:
 # variables shared by container_prep and build jobs
 .xrdesktop.variables.arch:rolling:
   variables:
-    FDO_DISTRIBUTION_TAG: "2021-07-26.${GLOBAL_TAG_SUFFIX}.0"
+    FDO_DISTRIBUTION_TAG: "${FDO_DISTRIBUTION_DATE}.0"
 
 .xrdesktop.variables.ubuntu:focal:
   variables:
     FDO_DISTRIBUTION_VERSION: "20.04"
-    FDO_DISTRIBUTION_TAG: "2021-07-26.${GLOBAL_TAG_SUFFIX}.0"
+    FDO_DISTRIBUTION_TAG: "${FDO_DISTRIBUTION_DATE}.0"
 
-.xrdesktop.variables.ubuntu:groovy:
+.xrdesktop.variables.ubuntu:jammy:
   variables:
-    FDO_DISTRIBUTION_VERSION: "20.10"
-    FDO_DISTRIBUTION_TAG: "2021-07-26.${GLOBAL_TAG_SUFFIX}.0"
+    FDO_DISTRIBUTION_VERSION: "22.04"
+    FDO_DISTRIBUTION_TAG: "${FDO_DISTRIBUTION_DATE}.0"
 
-.xrdesktop.variables.ubuntu:hirsute:
+.xrdesktop.variables.debian:bookworm:
   variables:
-    FDO_DISTRIBUTION_VERSION: "21.04"
-    FDO_DISTRIBUTION_TAG: "2021-07-26.${GLOBAL_TAG_SUFFIX}.0"
-
-.xrdesktop.variables.debian:buster:
-  variables:
-    FDO_DISTRIBUTION_VERSION: "buster"
-    FDO_DISTRIBUTION_TAG: "2021-07-26.${GLOBAL_TAG_SUFFIX}.0"
+    FDO_DISTRIBUTION_VERSION: "bookworm"
+    FDO_DISTRIBUTION_TAG: "${FDO_DISTRIBUTION_DATE}.0"
 
 .xrdesktop.variables.debian:bullseye:
   variables:
     FDO_DISTRIBUTION_VERSION: "bullseye"
-    FDO_DISTRIBUTION_TAG: "2021-07-26.${GLOBAL_TAG_SUFFIX}.0"
+    FDO_DISTRIBUTION_TAG: "${FDO_DISTRIBUTION_DATE}.0"
 
 .xrdesktop.variables.debian:sid:
   variables:
     FDO_DISTRIBUTION_VERSION: "sid"
-    FDO_DISTRIBUTION_TAG: "2021-07-26.${GLOBAL_TAG_SUFFIX}.0"
+    FDO_DISTRIBUTION_TAG: "${FDO_DISTRIBUTION_DATE}.0"
 
 .xrdesktop.variables.debian-based-packages:
   variables:
@@ -87,7 +80,7 @@ arch:meson:gcc:
     - .fdo.distribution-image@arch # from ci-templates
     - .xrdesktop.base-job.build-meson
   variables:
-    MESON_ARGS: -Ddocs=disabled
+    MESON_ARGS: -Dapi_doc=false
     CC: gcc
     CXX: g++
 
@@ -97,7 +90,7 @@ arch:meson:clang:
     - .fdo.distribution-image@arch # from ci-templates
     - .xrdesktop.base-job.build-meson
   variables:
-    MESON_ARGS: -Ddocs=disabled
+    MESON_ARGS: -Dapi_doc=false
     CC: clang
     CXX: clang++
 
@@ -119,72 +112,51 @@ ubuntu:focal:gcc:
     - .fdo.distribution-image@ubuntu # from ci-templates
     - .xrdesktop.base-job.build-meson
   variables:
-    MESON_ARGS: -Ddocs=disabled
+    MESON_ARGS: -Dapi_doc=false
     CC: gcc
     CXX: g++
 
 
-# === Ubuntu Groovy ===
-
-ubuntu:groovy:container_prep:
-  stage: container_prep
-  extends:
-    - .xrdesktop.variables.ubuntu:groovy
-    - .fdo.container-build@ubuntu # from ci-templates
-    - .xrdesktop.variables.debian-based-packages
-  variables:
-    FDO_DISTRIBUTION_PACKAGES: "${CORE_REQUIRED_PACKAGES}"
-
-ubuntu:groovy:gcc:
-  extends:
-    - .xrdesktop.variables.ubuntu:groovy
-    - .fdo.distribution-image@ubuntu # from ci-templates
-    - .xrdesktop.base-job.build-meson
-  variables:
-    MESON_ARGS: -Ddocs=disabled
-    CC: gcc
-    CXX: g++
-
-# === Ubuntu Hirsute ===
+# === Ubuntu jammy ===
 
-ubuntu:hirsute:container_prep:
+ubuntu:jammy:container_prep:
   stage: container_prep
   extends:
-    - .xrdesktop.variables.ubuntu:hirsute
+    - .xrdesktop.variables.ubuntu:jammy
     - .fdo.container-build@ubuntu # from ci-templates
     - .xrdesktop.variables.debian-based-packages
   variables:
     FDO_DISTRIBUTION_PACKAGES: "${CORE_REQUIRED_PACKAGES}"
 
-ubuntu:hirsute:gcc:
+ubuntu:jammy:gcc:
   extends:
-    - .xrdesktop.variables.ubuntu:hirsute
+    - .xrdesktop.variables.ubuntu:jammy
     - .fdo.distribution-image@ubuntu # from ci-templates
     - .xrdesktop.base-job.build-meson
   variables:
-    MESON_ARGS: -Ddocs=disabled
+    MESON_ARGS: -Dapi_doc=false
     CC: gcc
     CXX: g++
 
 
-# === Debian buster ===
+# === Debian bookworm ===
 
-debian:buster:container_prep:
+debian:bookworm:container_prep:
   stage: container_prep
   extends:
-    - .xrdesktop.variables.debian:buster
+    - .xrdesktop.variables.debian:bookworm
     - .fdo.container-build@debian # from ci-templates
     - .xrdesktop.variables.debian-based-packages
   variables:
     FDO_DISTRIBUTION_PACKAGES: "${CORE_REQUIRED_PACKAGES}"
 
-debian:buster:gcc:
+debian:bookworm:gcc:
   extends:
-    - .xrdesktop.variables.debian:buster
+    - .xrdesktop.variables.debian:bookworm
     - .fdo.distribution-image@debian # from ci-templates
     - .xrdesktop.base-job.build-meson
   variables:
-    MESON_ARGS: -Ddocs=disabled
+    MESON_ARGS: -Dapi_doc=false
     CC: gcc
     CXX: g++
 
@@ -206,7 +178,7 @@ debian:bullseye:gcc:
     - .fdo.distribution-image@debian # from ci-templates
     - .xrdesktop.base-job.build-meson
   variables:
-    MESON_ARGS: -Ddocs=disabled
+    MESON_ARGS: -Dapi_doc=false
     CC: gcc
     CXX: g++
 
@@ -228,7 +200,7 @@ debian:sid:gcc:
     - .fdo.distribution-image@debian # from ci-templates
     - .xrdesktop.base-job.build-meson
   variables:
-    MESON_ARGS: -Ddocs=disabled
+    MESON_ARGS: -Dapi_doc=false
     CC: gcc
     CXX: g++
 
@@ -237,7 +209,7 @@ debian:sid:gcc:
 .xrdesktop.packaging.conditions:
   rules:
     # Only the default branch of the "upstream" repo.
-    - if: '$CI_PROJECT_PATH == $FDO_UPSTREAM_REPO && $CI_COMMIT_REF_NAME == "master"'
+    - if: $CI_PROJECT_PATH =~ /(xrdesktop\/.*|haagch\/.*)/ && $CI_COMMIT_REF_NAME =~ /(main|legacy|release-.*)/
       when: on_success
     # Otherwise, don't build packages.
     - when: never
@@ -277,15 +249,15 @@ debian:sid:gcc:
     expire_in: 2 days
 
 
-debian:buster:package:
+debian:bookworm:package:
   extends:
-    - .xrdesktop.variables.debian:buster
+    - .xrdesktop.variables.debian:bookworm
     - .fdo.distribution-image@debian # from ci-templates
     - .xrdesktop.base-job.debuild
   variables:
     BACKPORT_SUFFIX: bpo8
     PACKAGE_DIR:  .gitlab-ci/debian_sid
-    DISTRO: buster
+    DISTRO: bookworm
 
 
 debian:bullseye:package:
@@ -321,26 +293,15 @@ ubuntu:focal:package:
     DISTRO: focal
 
 
-ubuntu:groovy:package:
+ubuntu:jammy:package:
   extends:
-    - .xrdesktop.variables.ubuntu:groovy
+    - .xrdesktop.variables.ubuntu:jammy
     - .fdo.distribution-image@ubuntu # from ci-templates
     - .xrdesktop.base-job.debuild
   variables:
-    BACKPORT_SUFFIX: ubuntu20.10
+    BACKPORT_SUFFIX: ubuntu22.04
     PACKAGE_DIR:  .gitlab-ci/debian_sid
-    DISTRO: groovy
-
-
-ubuntu:hirsute:package:
-  extends:
-    - .xrdesktop.variables.ubuntu:hirsute
-    - .fdo.distribution-image@ubuntu # from ci-templates
-    - .xrdesktop.base-job.debuild
-  variables:
-    BACKPORT_SUFFIX: ubuntu21.04
-    PACKAGE_DIR:  .gitlab-ci/debian_sid
-    DISTRO: hirsute
+    DISTRO: jammy
 
 
 reprepro:package:
@@ -350,12 +311,11 @@ reprepro:package:
     - .xrdesktop.packaging.conditions
     - .fdo.distribution-image@debian # from ci-templates
   dependencies:
-    - debian:buster:package
+    - debian:bookworm:package
     - debian:bullseye:package
     - debian:sid:package
     - ubuntu:focal:package
-    - ubuntu:groovy:package
-    - ubuntu:hirsute:package
+    - ubuntu:jammy:package
   before_script:
     # Convince gnupg to work properly in CI
     - mkdir -p ~/.gnupg && chmod 700 ~/.gnupg
@@ -390,22 +350,3 @@ reprepro:package:
     paths:
       - "repo/"
     expire_in: 2 days
-
-
-###
-# Pages
-###
-pages:
-  stage: pages
-  extends:
-    - .xrdesktop.packaging.conditions
-  dependencies:
-    - reprepro:package
-  script:
-    - mkdir -p public
-    # - mv build/doc/html/* public/
-    - mv repo public/apt
-  artifacts:
-    paths:
-      - public
-
diff --git a/.gitlab-ci/debian_sid/changelog b/.gitlab-ci/debian_sid/changelog
index 534bd5c6b3a5fa6474ef5ffec19306aae09ca829..f58cac106486064e5c112beeeae7483ab3836716 100644
--- a/.gitlab-ci/debian_sid/changelog
+++ b/.gitlab-ci/debian_sid/changelog
@@ -1,3 +1,9 @@
+libinputsynth (0.16.0-1) UNRELEASED; urgency=medium
+
+  * Version bump
+
+ -- Christoph Haag <christoph.haag@collabora.com>  Mon, 16 Jan 2023 21:37:57 +0000
+
 libinputsynth (0.15.0-2) unstable; urgency=medium
 
   * Source only upload.
diff --git a/.gitlab-ci/debian_sid/control b/.gitlab-ci/debian_sid/control
index a0bc7b69f11c10a5f272feafa140f0b0d74c2485..853d8028eca66f4fed851b4484b55260124dbda0 100644
--- a/.gitlab-ci/debian_sid/control
+++ b/.gitlab-ci/debian_sid/control
@@ -19,13 +19,13 @@ Package: libinputsynth-dev
 Section: libdevel
 Architecture: any
 Multi-Arch: same
-Depends: libinputsynth-0.15-0 (= ${binary:Version}), ${misc:Depends}
+Depends: libinputsynth-0.16-0 (= ${binary:Version}), ${misc:Depends}
 Description: synthesize keyboard and mouse input -- development files
  synthesize keyboard and mouse input on X11 and Wayland with various backends.
  .
  This package includes files needed for development.
 
-Package: libinputsynth-0.15-0
+Package: libinputsynth-0.16-0
 Architecture: any
 Multi-Arch: same
 Depends: ${shlibs:Depends}, ${misc:Depends}
diff --git a/.gitlab-ci/debian_sid/extra/prepare-commit-package.sh b/.gitlab-ci/debian_sid/extra/prepare-commit-package.sh
index 131db71f67234fec5c51adf1147289bb7bb4a6ac..576c02e4ba5eb120d8702578e7987df38853c9df 100755
--- a/.gitlab-ci/debian_sid/extra/prepare-commit-package.sh
+++ b/.gitlab-ci/debian_sid/extra/prepare-commit-package.sh
@@ -27,6 +27,6 @@ set -e
     fi
 
     UPSTREAM_VER=$(git describe --abbrev=0 --tags $COMMIT_TO_PACKAGE | sed -E -e 's/^v//' -e 's/-([0-9]+)-g([0-9a-f])/+git\1.\2/')
-    git archive -o "../libinputsynth_${UPSTREAM_VER}.orig.tar.gz" ${COMMIT_TO_PACKAGE}
+    git archive --format=tar ${COMMIT_TO_PACKAGE} | gzip -n > "../libinputsynth_${UPSTREAM_VER}.orig.tar.gz"
     dch -b --newversion "${UPSTREAM_VER}-${PKG_REVISION}" --preserve "Automated CI build of commit ${COMMIT_TO_PACKAGE}"
 )
diff --git a/.gitlab-ci/debian_sid/libinputsynth-0.15-0.install b/.gitlab-ci/debian_sid/libinputsynth-0.16-0.install
similarity index 100%
rename from .gitlab-ci/debian_sid/libinputsynth-0.15-0.install
rename to .gitlab-ci/debian_sid/libinputsynth-0.16-0.install