diff --git a/package-lock.json b/package-lock.json
index db8bb241e3b39feedeba789ac52bca350efc837e..adde0f51906755f0484586679b753b37a5f1af48 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
         "@changesets/cli": "^2.27.1",
         "@jest/types": "^29.6.3",
         "@types/jest": "^29.5.12",
-        "@types/node": "^20.11.30",
+        "@types/node": "^20.12.7",
         "commitizen": "^4.3.0",
         "eslint": "^8.57.0",
         "eslint-config-custom": "*",
@@ -25,14 +25,13 @@
         "jest": "^29.7.0",
         "prettier": "^3.2.5",
         "ts-jest": "^29.1.2",
-        "typescript": "^5.4.3"
+        "typescript": "^5.4.4"
       },
       "peerDependencies": {
         "@ljharb/tsconfig": "^0.2.0"
       }
     },
     "apps/commons": {
-      "name": "leafwriter-commons",
       "version": "3.3.1",
       "license": "GPL-2.0",
       "dependencies": {
@@ -41,14 +40,14 @@
         "@cwrc/leafwriter": "*",
         "@cwrc/leafwriter-storage-service": "*",
         "@emotion/react": "^11.11.4",
-        "@emotion/styled": "^11.11.0",
+        "@emotion/styled": "^11.11.5",
         "@fontsource/lato": "^5.0.20",
         "@lincs.project/auth-api-contract": "^1.0.3",
-        "@mui/icons-material": "^5.15.14",
-        "@mui/lab": "^5.0.0-alpha.169",
-        "@mui/material": "^5.15.14",
-        "@octokit/rest": "^20.0.2",
-        "@ts-rest/core": "^3.36.0",
+        "@mui/icons-material": "^5.15.15",
+        "@mui/lab": "5.0.0-alpha.170",
+        "@mui/material": "^5.15.15",
+        "@octokit/rest": "^20.1.0",
+        "@ts-rest/core": "^3.41.2",
         "analytics": "^0.8.11",
         "axios": "^1.6.8",
         "broadcast-channel": "^7.0.0",
@@ -58,15 +57,15 @@
         "dexie": "^3.2.7",
         "dexie-react-hooks": "^1.1.7",
         "env-cmd": "^10.1.0",
-        "express": "^4.19.1",
+        "express": "^4.19.2",
         "file-saver": "^2.0.5",
-        "framer-motion": "^11.0.18",
+        "framer-motion": "^11.0.25",
         "helmet": "^7.1.0",
-        "i18next": "^23.10.1",
-        "i18next-browser-languagedetector": "^7.2.0",
-        "jotai": "^2.7.1",
+        "i18next": "^23.11.1",
+        "i18next-browser-languagedetector": "^7.2.1",
+        "jotai": "^2.8.0",
         "js-cookie": "^3.0.5",
-        "keycloak-js": "^24.0.1",
+        "keycloak-js": "^24.0.2",
         "kleur": "^4.1.5",
         "loglevel": "^1.9.1",
         "material-ui-popup-state": "^5.1.0",
@@ -99,14 +98,15 @@
         "@types/dotenv-webpack": "^7.0.7",
         "@types/express": "^4.17.21",
         "@types/md5": "^2.3.5",
-        "@types/node": "^20.11.30",
-        "@types/react-dom": "^18.2.22",
+        "@types/node": "^20.12.7",
+        "@types/react-dom": "^18.2.24",
         "@types/react-router-dom": "^5.3.3",
         "@types/webpack": "^5.28.5",
         "@types/webpack-env": "^1.18.4",
         "@types/webpackbar": "^4.0.6",
         "clean-webpack-plugin": "^4.0.0",
         "copy-webpack-plugin": "^12.0.2",
+        "css-loader": "^6.10.0",
         "css-minimizer-webpack-plugin": "^6.0.0",
         "esbuild-loader": "^4.1.0",
         "eslint": "^8.57.0",
@@ -120,7 +120,7 @@
         "rimraf": "^5.0.5",
         "svg-inline-loader": "^0.8.2",
         "tsup": "^8.0.2",
-        "typescript": "^5.4.3",
+        "typescript": "^5.4.4",
         "webpack": "^5.91.0",
         "webpack-cli": "^5.1.4",
         "webpackbar": "^6.0.1"
@@ -7061,9 +7061,9 @@
       "dev": true
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001607",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001607.tgz",
-      "integrity": "sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==",
+      "version": "1.0.30001608",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001608.tgz",
+      "integrity": "sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA==",
       "dev": true,
       "funding": [
         {
@@ -11082,9 +11082,9 @@
       }
     },
     "node_modules/framer-motion": {
-      "version": "11.0.25",
-      "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.0.25.tgz",
-      "integrity": "sha512-mRt7vQGzA7++wTgb+PW1TrlXXgndqR6hCiJ48fXr2X9alte2hPQiAq556HRwDCt0Q5X98MNvcSe4KUa27Gm5Lg==",
+      "version": "11.0.27",
+      "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.0.27.tgz",
+      "integrity": "sha512-OmY1hnBXxUfvQTuoPqumAiXYPEt8jY31Fqbmihf/NR29XUL9BkRPHrqVqtJS7TLKriwRt+0pbwiO9tnziZTJzA==",
       "dependencies": {
         "tslib": "^2.4.0"
       },
@@ -22630,9 +22630,9 @@
       }
     },
     "node_modules/typescript": {
-      "version": "5.4.4",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz",
-      "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==",
+      "version": "5.4.5",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+      "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -24154,7 +24154,6 @@
       }
     },
     "packages/cwrc-leafwriter": {
-      "name": "@cwrc/leafwriter",
       "version": "3.4.0",
       "license": "GPL-2.0",
       "dependencies": {
@@ -24164,11 +24163,11 @@
         "@dnd-kit/sortable": "^8.0.0",
         "@dnd-kit/utilities": "^3.2.2",
         "@emotion/react": "^11.11.4",
-        "@emotion/styled": "^11.11.0",
+        "@emotion/styled": "^11.11.5",
         "@fontsource/lato": "^5.0.20",
-        "@fortawesome/fontawesome-free": "^6.5.1",
-        "@mui/icons-material": "^5.15.14",
-        "@mui/material": "^5.15.14",
+        "@fortawesome/fontawesome-free": "^6.5.2",
+        "@mui/icons-material": "^5.15.15",
+        "@mui/material": "^5.15.15",
         "@reactivex/rxjs": "^6.6.7",
         "axios": "^1.6.8",
         "chroma-js": "^2.4.2",
@@ -24179,12 +24178,12 @@
         "dexie": "^3.2.7",
         "dexie-react-hooks": "^1.1.7",
         "formik": "^2.4.5",
-        "framer-motion": "^11.0.18",
+        "framer-motion": "^11.0.25",
         "fscreen": "^1.2.0",
         "html2canvas": "^1.4.1",
-        "i18next": "^23.10.1",
+        "i18next": "^23.11.1",
         "iso-639-2": "^3.0.2",
-        "jotai": "^2.7.1",
+        "jotai": "^2.8.0",
         "jotai-devtools": "^0.8.0",
         "jquery": "^3.7.1",
         "jquery-ui": "^1.13.2",
@@ -24197,25 +24196,25 @@
         "monaco-editor": "^0.47.0",
         "mui-modal-provider": "^2.4.2",
         "notistack": "^3.0.1",
-        "openseadragon": "^4.1.0",
+        "openseadragon": "^4.1.1",
         "overmind": "^28.0.3",
         "overmind-react": "^29.0.5",
         "progressbar.js": "^1.1.1",
-        "rdflib": "^2.2.34-beta",
+        "rdflib": "^2.2.34",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
         "react-i18next": "^14.1.0",
         "react-icons": "^5.0.1",
-        "react-intersection-observer": "^9.8.1",
-        "react-resizable-panels": "^2.0.13",
+        "react-intersection-observer": "^9.8.2",
+        "react-resizable-panels": "^2.0.16",
         "react-use": "^17.5.0",
-        "react-virtuoso": "^4.7.4",
+        "react-virtuoso": "^4.7.8",
         "rxjs": "^7.8.1",
         "tinymce": "5.10.9",
         "uuid": "^9.0.1",
         "wikibase-sdk": "^10.0.2",
         "zod": "^3.22.4",
-        "zod-formik-adapter": "^1.2.0"
+        "zod-formik-adapter": "^1.3.0"
       },
       "devDependencies": {
         "@types/chroma-js": "^2.4.4",
@@ -24225,10 +24224,10 @@
         "@types/jqueryui": "^1.12.22",
         "@types/js-cookie": "^3.0.6",
         "@types/luxon": "^3.4.2",
-        "@types/node": "^20.11.30",
+        "@types/node": "^20.12.7",
         "@types/openseadragon": "^3.0.10",
         "@types/progressbar.js": "^1.1.7",
-        "@types/react-dom": "^18.2.22",
+        "@types/react-dom": "^18.2.24",
         "@types/shelljs": "^0.8.15",
         "@types/tinymce": "^4.6.9",
         "@types/uuid": "^9.0.8",
@@ -24242,7 +24241,7 @@
         "monaco-editor-webpack-plugin": "^7.1.0",
         "shelljs": "^0.8.5",
         "shx": "^0.3.4",
-        "typescript": "^5.4.3",
+        "typescript": "^5.4.4",
         "typescript-plugin-css-modules": "^5.1.0",
         "webpack": "^5.91.0",
         "webpack-cli": "^5.1.4",
@@ -24250,17 +24249,16 @@
       }
     },
     "packages/cwrc-leafwriter-storage-service": {
-      "name": "@cwrc/leafwriter-storage-service",
       "version": "3.0.1",
       "license": "GPL-2.0",
       "dependencies": {
         "@emotion/react": "^11.11.4",
-        "@emotion/styled": "^11.11.0",
+        "@emotion/styled": "^11.11.5",
         "@mui/base": "5.0.0-beta.40",
-        "@mui/icons-material": "^5.15.14",
-        "@mui/lab": "^5.0.0-alpha.169",
-        "@mui/material": "^5.15.14",
-        "@octokit/rest": "^20.0.2",
+        "@mui/icons-material": "^5.15.15",
+        "@mui/lab": "5.0.0-alpha.170",
+        "@mui/material": "^5.15.15",
+        "@octokit/rest": "^20.1.0",
         "autosuggest-highlight": "^3.3.4",
         "axios": "^1.6.8",
         "buffer": "^6.0.3",
@@ -24268,8 +24266,8 @@
         "dexie": "^3.2.7",
         "dexie-react-hooks": "^1.1.7",
         "file-saver": "^2.0.5",
-        "framer-motion": "^11.0.18",
-        "i18next": "^23.10.1",
+        "framer-motion": "^11.0.25",
+        "i18next": "^23.11.1",
         "lodash": "^4.17.21",
         "loglevel": "^1.9.1",
         "mdi-material-ui": "^7.8.0",
@@ -24288,14 +24286,14 @@
         "@jest/globals": "^29.7.0",
         "@octokit/types": "^13.4.0",
         "@testing-library/jest-dom": "^6.4.2",
-        "@testing-library/react": "^14.2.2",
+        "@testing-library/react": "^14.3.0",
         "@testing-library/user-event": "^14.5.2",
         "@types/autosuggest-highlight": "^3.2.3",
         "@types/file-saver": "^2.0.7",
         "@types/jest": "^29.5.12",
         "@types/lodash": "^4.17.0",
         "@types/mocha": "^10.0.6",
-        "@types/node": "^20.11.30",
+        "@types/node": "^20.12.7",
         "eslint": "^8.57.0",
         "eslint-config-custom": "*",
         "fake-indexeddb": "^5.0.2",
@@ -24306,8 +24304,8 @@
         "ts-jest": "^29.1.2",
         "ts-node": "^10.9.2",
         "tsup": "^8.0.2",
-        "typedoc": "^0.25.12",
-        "typescript": "^5.4.3"
+        "typedoc": "^0.25.13",
+        "typescript": "^5.4.4"
       }
     },
     "packages/cwrc-leafwriter-storage-service/node_modules/react-i18next": {
@@ -24332,7 +24330,6 @@
       }
     },
     "packages/cwrc-leafwriter-validator": {
-      "name": "@cwrc/leafwriter-validator",
       "version": "4.3.0",
       "license": "GPL-2.0",
       "dependencies": {
@@ -24349,7 +24346,7 @@
         "@types/jsdom": "^21.1.6",
         "@types/lodash": "^4.17.0",
         "@types/mocha": "^10.0.6",
-        "@types/node": "^20.11.30",
+        "@types/node": "^20.12.7",
         "browserify": "^17.0.0",
         "clean-webpack-plugin": "^4.0.0",
         "esbuild-loader": "^4.1.0",
@@ -24363,8 +24360,8 @@
         "ts-jest": "^29.1.2",
         "ts-node": "^10.9.2",
         "tsup": "^8.0.2",
-        "typedoc": "^0.25.12",
-        "typescript": "^5.4.3",
+        "typedoc": "^0.25.13",
+        "typescript": "^5.4.4",
         "webpack": "^5.91.0",
         "webpackbar": "^6.0.1"
       },
diff --git a/package.json b/package.json
index f431d7e52745b8a0c935e6fd4c8cbea1263f2dd1..d96a020d58863e97068a5514717f370c828d7dbc 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
     "jest": "^29.7.0",
     "prettier": "^3.2.5",
     "ts-jest": "^29.1.2",
-    "typescript": "^5.4.4"
+    "typescript": "^5.4.5"
   },
   "peerDependencies": {
     "@ljharb/tsconfig": "^0.2.0"