diff --git a/.containerignore b/.containerignore new file mode 100644 index 0000000..ae02570 --- /dev/null +++ b/.containerignore @@ -0,0 +1 @@ +release/ \ No newline at end of file diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..674a67d --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,17 @@ +name: 'Close stale issues' +on: + schedule: + - cron: '30 1 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v6 + with: + stale-issue-message: 'This issue is stale because it has been open 150 days with no activity. Remove stale label or comment or this will be closed in 14 days.' + days-before-issue-stale: 150 + days-before-issue-close: 14 + days-before-pr-stale: -1 + days-before-pr-close: -1 + exempt-issue-labels: 'longterm,enhancement,parity-with-android,prio:medium,prio:high,electron issue,encrypted room search,build infrastructure' diff --git a/Containerfile.debian b/Containerfile.debian new file mode 100644 index 0000000..041c64e --- /dev/null +++ b/Containerfile.debian @@ -0,0 +1,30 @@ +ARG NODE_VERSION +FROM node:${NODE_VERSION} + +RUN apt-get -qq update && apt-get -qq install --no-install-recommends -y \ + curl \ + g++ \ + gcc \ + git \ + jq \ + libarchive-tools \ + libsecret-1-dev \ + libsqlcipher-dev \ + libssl-dev \ + make \ + openssl \ + pkg-config \ + python \ + tcl \ + vim + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal + +COPY . /project +WORKDIR /project + +# There might be remnants of the host which break the build +RUN make fixup \ No newline at end of file diff --git a/Containerfile.fedora b/Containerfile.fedora new file mode 100644 index 0000000..279d43f --- /dev/null +++ b/Containerfile.fedora @@ -0,0 +1,20 @@ +FROM fedora:latest + +RUN dnf install -y openssl openssl-devel rust cargo libsecret libsecret-devel g++ ruby-devel gcc make rpm-build libffi-devel tcl libxcrypt-compat + +# node setup +ARG NODE_VERSION +RUN mkdir -p /usr/local/n +RUN mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share +RUN curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n +RUN bash n ${NODE_VERSION} +RUN npm install -g n +RUN npm install -g yarn +RUN npm install -g node-gyp +RUN gem install --ignore-dependencies --no-user-install --no-document fpm + +COPY . /project +WORKDIR /project + +# There might be remnants of the host which break the build +RUN make fixup \ No newline at end of file diff --git a/Makefile b/Makefile index fbb47a2..c517e5b 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,17 @@ -.PHONY: all setup regenerate-i18n reskindex web desktop-common linux debian rpm pacman local-pkgbuild local-pkgbuild-install windows windows-portable +.PHONY: all setup regenerate-i18n web desktop-common linux debian rpm pacman local-pkgbuild local-pkgbuild-install windows windows-portable .PHONY: web-release debian-release rpm-release pacman-release windows-setup-release windows-unpacked-release windows-portable-release windows-release .PHONY: macos-common macos macos-mas macos-release macos-mas-release icns -.PHONY: clean +.PHONY: container-build-debian container-build-fedora +.PHONY: container-web-release container-debian-release container-rpm-release container-appimage-release +.PHONY: clean undo_setup fixup CFGDIR ?= configs/sc all: web YARN ?= yarnpkg +CONTAINER_ENGINE ?= podman +NODE_VERSION ?= 16 VERSION := $(shell grep version element-desktop/package.json | sed 's|.*: \"\(.*\)\",|\1|') WEB_APP_NAME := $(shell grep '"name"' element-web/package.json | head -n 1 | sed 's|.*: \"\(.*\)\",|\1|') @@ -32,6 +36,9 @@ OUT_WIN64_PORTABLE_BETTER_NAME := $(PRODUCT_NAME)_win-portable_v$(VERSION) OUT_MACOS := $(DESKTOP_OUT)/$(PRODUCT_NAME)-$(VERSION)-universal.dmg OUT_MACOS_MAS := $(DESKTOP_OUT)/mas-universal/$(PRODUCT_NAME).app +CONTAINER_IMAGE_DEBIAN := schildichat-desktop-containerbuild-debian +CONTAINER_IMAGE_FEDORA := schildichat-desktop-containerbuild-fedora + RELEASE_DIR := release CURRENT_RELEASE_DIR := $(RELEASE_DIR)/$(VERSION) @@ -43,7 +50,7 @@ CSC_NAME ?= -include release.mk setup: - if [ ! -L "element-desktop/webapp" ]; then ./setup.sh; fi + ./setup.sh element-desktop/build/SchildiChat.xcassets/SchildiChat.iconset: $(wildcard element-desktop/build/SchildiChat.xcassets/SchildiChat.iconset/*) @@ -60,19 +67,15 @@ icns: element-desktop/build/icon.icns element-desktop/build/dmg.icns regenerate-i18n: setup ./regenerate_i18n.sh -reskindex: setup - $(YARN) --cwd matrix-react-sdk reskindex - $(YARN) --cwd element-web reskindex - web: export DIST_VERSION=$(WEB_OUT_DIST_VERSION) -web: setup reskindex +web: setup cp $(CFGDIR)/config.json element-web/ $(YARN) --cwd element-web dist echo "$(VERSION)" > element-web/webapp/version desktop-common: web $(YARN) --cwd element-desktop run fetch --cfgdir '' - $(YARN) --cwd element-desktop run build:native + SQLCIPHER_STATIC=1 $(YARN) --cwd element-desktop run build:native macos-common: web icns $(YARN) --cwd element-desktop run fetch --cfgdir '' @@ -157,6 +160,24 @@ macos-mas-release: macos-mas mkdir -p $(CURRENT_RELEASE_DIR) cp $(OUT_MACOS_MAS) $(CURRENT_RELEASE_DIR) +container-build-debian: + $(CONTAINER_ENGINE) build -t $(CONTAINER_IMAGE_DEBIAN) -f Containerfile.debian --build-arg NODE_VERSION=$(NODE_VERSION) . + +container-build-fedora: + $(CONTAINER_ENGINE) build -t $(CONTAINER_IMAGE_FEDORA) -f Containerfile.fedora --build-arg NODE_VERSION=$(NODE_VERSION) . + +container-web-release: container-build-debian + $(CONTAINER_ENGINE) run --rm -ti -v $(PWD)/release:/project/release --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make web-release + +container-debian-release: container-build-debian + $(CONTAINER_ENGINE) run --rm -ti -v $(PWD)/release:/project/release --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make debian-release + +container-rpm-release: container-build-fedora + $(CONTAINER_ENGINE) run --rm -ti -v $(PWD)/release:/project/release --security-opt label=disable $(CONTAINER_IMAGE_FEDORA):latest make rpm-release + +container-appimage-release: container-build-debian + $(CONTAINER_ENGINE) run --rm -ti -v $(PWD)/release:/project/release --security-opt label=disable $(CONTAINER_IMAGE_DEBIAN):latest make appimage-release + bom.lock: element-desktop/yarn.lock element-web/yarn.lock matrix-js-sdk/yarn.lock matrix-react-sdk/yarn.lock ./build-bom.sh bom: bom.lock @@ -170,3 +191,11 @@ clean: rm -rf element-web/dist rm -rf local-pkgbuild rm -f bom.lock + +undo_setup: + rm -rf element-desktop/node_modules element-web/node_modules matrix-react-sdk/node_modules matrix-js-sdk/node_modules i18n-helper/node_modules element-desktop/.hak + +fixup: undo_setup + make setup + make clean + make setup diff --git a/README.md b/README.md index 821ed19..9b1ea85 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,10 @@ SchildiChat Web/Desktop is a fork of Element [Web](https://github.com/vector-im/element-web)/[Desktop](https://github.com/vector-im/element-desktop). The most important changes of SchildiChat Web/Desktop compared to Element Web/Desktop are: -- A unified chat list for both direct and group chats +- Customizable room list style (compact single line, intermediate and roomy with two line preview) +- Option to show direct and group chats in a combined list +- Improved theming options - Message bubbles -- Bigger items in the room list - … and more! Desktop downloads with installation instructions are listed on our website: [https://schildi.chat/desktop](https://schildi.chat/desktop) @@ -15,11 +16,26 @@ Feel free to [join the discussion on matrix](https://matrix.to/#/#schildichat-we +
+Public key used to sign the Debian packages + +``` +pub rsa4096 2020-12-08 [SC] + 560BB70DA86A6633A39CEC6023358905FE294D01 +uid Super apt repo key +sub rsa4096 2020-12-08 [E] +``` + +
+ ## Building SchildiChat Web/Desktop This particular repo is a wrapper project for element-desktop, element-web, matrix-react-sdk and matrix-js-sdk. It's the recommended starting point to build SchildiChat for Web **and** Desktop. +The `master` branch contains the latest release. +Development happens in the `sc` branch, which might be **broken at any time**! +
schildichat-desktop <-- this repo (recommended starting point to build SchildiChat for Web and Desktop)
 |-- element-desktop (electron wrapper)
 |-- element-web ("skin" for matrix-react-sdk)
@@ -33,11 +49,12 @@ This particular repo is a wrapper project for element-desktop, element-web, matr
 
 Since Debian is usually slow to update packages on its stable releases,
 some dependencies might not be recent enough to build SchildiChat.  
-The following are the dependencies required to build SchildiChat Web/Desktop on Debian 10:
+The following are the dependencies required to build SchildiChat Web/Desktop on Debian 11 (bullseye):
 
 ```
-# apt install vim curl git make gcc g++ libsqlcipher-dev pkg-config libsecret-1-dev bsdtar
-# curl -sL https://deb.nodesource.com/setup_14.x | bash -
+# apt install vim curl git make gcc g++ python jq libsqlcipher-dev pkg-config libsecret-1-dev libarchive-tools openssl libssl-dev tcl
+
+# curl -sL https://deb.nodesource.com/setup_16.x | bash -
 # apt update
 # apt install nodejs
 
@@ -75,32 +92,35 @@ To notarize a build with Apple set `NOTARIZE_APPLE_ID` to your AppleID and set t
 
 ### Initial setup
 
+As already noted above, **`master` contains the latest release** and **`sc` is the development branch**!
+
 ```
-git clone --recurse-submodules https://github.com/SchildiChat/schildichat-desktop.git
+git clone -b master --recurse-submodules https://github.com/SchildiChat/schildichat-desktop.git
 cd schildichat-desktop
 make setup # optional step if using the other make targets
 ```
 
 ### Create release builds
 
-Those are the builds distributed via GitHub releases.
-
 ```
 # The single make targets are explained below
-make [{web|debian|windows-setup|windows-portable|macos}-release]
+make {web|debian|windows-setup|windows-portable|macos|...}-release
 ```
 
-After that these packages which belong to to their respective make target should appear in release/\/:
-- `web`: _schildichat-web-\.tar.gz_: archive that can be unpacked and served by a **web** server (copy `config.sample.json` to `config.json` and adjust the [configuration](https://github.com/SchildiChat/element-web/blob/sc/docs/config.md) to your likings)
-- `debian`: file ready for installation on a **Debian Linux** (based) system via `dpkg -i schildichat-desktop__amd64.deb`
-- `windows-setup`: _SchildiChat_Setup_v\.exe_: file ready for **installation** on a **Windows** system
-- `windows-portable`: _SchildiChat_win-portable_v\.zip_: **portable** version for a **Windows** system – take SchildiChat together with your login data around with you (the archive contains a readme with **instructions** and **notes**)
-- `macos`: Build a *.dmg for macOS
-- `macos-mas`: Build a *.pkg for release in the Mac App Store
+After that these packages which belong to their respective make target should appear in release/\/.
 
-#### Additional make targets not used for GitHub releases
-- `pacman`: file ready for installation on an **Arch Linux** (based) system via `pacman -U schildichat-desktop-.pacman`
+#### Builds distributed via GitHub releases
+- `web`: _schildichat-web-\.tar.gz_: Archive that can be unpacked and served by a **web** server (copy `config.sample.json` to `config.json` and adjust the [configuration](https://github.com/SchildiChat/element-web/blob/sc/docs/config.md) to your likings)
+- `debian`: File ready for installation on a **Debian Linux** (based) system via `dpkg -i schildichat-desktop__amd64.deb`
+- `windows-setup`: _SchildiChat_Setup_v\.exe_: File ready for **installation** on a **Windows** system
+- `windows-portable`: _SchildiChat_win-portable_v\.zip_: **Portable** version for a **Windows** system – take SchildiChat together with your login data around with you (the archive contains a readme with **instructions** and **notes**)
+- `macos`: Build a *.dmg for **macOS**
+
+#### Additional `{...}-release` targets not used for GitHub releases
+- `pacman`: File ready for installation on an **Arch Linux** (based) system via `pacman -U schildichat-desktop-.pacman`
+- `rpm`: Build a *.rpm for Linux
 - `windows-unpacked`: _SchildiChat_win-unpacked_v\.zip_: **unpacked** archive for a **Windows** system
+- `macos-mas`: Build a *.pkg for release in the Mac App Store
 
 ### Build SchildiChat Web and deploy it directly to your web server
 
diff --git a/bump_release_version.sh b/bump_release_version.sh
new file mode 100755
index 0000000..92b5cac
--- /dev/null
+++ b/bump_release_version.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -e
+
+mydir="$(dirname "$(realpath "$0")")"
+
+pushd "$mydir" > /dev/null
+
+source ./merge_helpers.sh
+
+# Check branch
+check_branch $branch
+forall_repos check_branch $branch
+
+# Ensure clean git state
+forall_repos check_clean_git
+
+bump_release_version
+
+# Get version string
+get_current_versions
+get_versions_string
+
+# Add everything
+git add -A
+git commit --allow-empty -m "New release v$versions_string"
+git tag -s "v$versions_string" -m "New release v$versions_string"
+
+popd > /dev/null
diff --git a/bump_test_version.sh b/bump_test_version.sh
new file mode 100755
index 0000000..bffb851
--- /dev/null
+++ b/bump_test_version.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -e
+
+mydir="$(dirname "$(realpath "$0")")"
+
+pushd "$mydir" > /dev/null
+
+source ./merge_helpers.sh
+
+# Check branch
+check_branch $branch
+forall_repos check_branch $branch
+
+# Ensure clean git state
+forall_repos check_clean_git
+
+bump_test_version
+
+# Get version string
+get_current_versions
+get_versions_string
+
+# Add everything
+git add -A
+git commit --allow-empty -m "New test release v$versions_string"
+git tag -s "v$versions_string" -m "New test release v$versions_string"
+
+popd > /dev/null
diff --git a/configs/sc/config.json b/configs/sc/config.json
index 3a229d0..0402a78 100644
--- a/configs/sc/config.json
+++ b/configs/sc/config.json
@@ -1,6 +1,11 @@
 {
     "update_base_url": null,
-    "default_server_name": "matrix.org",
+    "default_server_config": {
+        "m.homeserver": {
+            "base_url": "https://matrix-client.matrix.org",
+            "server_name": "matrix.org"
+        }
+    },
     "brand": "SchildiChat",
     "integrations_ui_url": "https://scalar.vector.im/",
     "integrations_rest_url": "https://scalar.vector.im/api",
@@ -11,10 +16,13 @@
         "https://scalar-staging.vector.im/api",
         "https://scalar-staging.riot.im/scalar/api"
     ],
-    "showLabsSettings": true,
-    "roomDirectory": {
+    "show_labs_settings": true,
+    "room_directory": {
         "servers": [
-            "matrix.org"
+            "matrix.org",
+            "gitter.im",
+            "libera.chat",
+            "schildi.chat"
         ]
     },
     "enable_presence_by_hs_url": {
@@ -27,11 +35,5 @@
             "text": "Privacy Policy"
         }
     ],
-    "sc_update_announcement_room": {
-        "room_id_or_alias": "!JwTYjASnrfLEJQGQvt:matrix.org",
-        "via_servers": [
-            "supercable.onl",
-            "spiritcroc.de"
-        ]
-    }
+    "map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
 }
diff --git a/deploy/update-aur-bin.sh b/deploy/update-aur-bin.sh
index 81b999d..f5d2213 100755
--- a/deploy/update-aur-bin.sh
+++ b/deploy/update-aur-bin.sh
@@ -21,6 +21,7 @@ git fetch
 git reset --hard origin/master
 
 sed -i "s|^_pkgver=.*$|_pkgver=$version|" PKGBUILD
+sed -i "s|^pkgrel=.*$|pkgrel=1|" PKGBUILD
 sed -i "s|^sha256sums=('.*'$|sha256sums=('$sha256sum'|" PKGBUILD
 
 makepkg --printsrcinfo > .SRCINFO
diff --git a/deploy/update-flathub.sh b/deploy/update-flathub.sh
index 28f228c..7451aec 100755
--- a/deploy/update-flathub.sh
+++ b/deploy/update-flathub.sh
@@ -20,10 +20,13 @@ debdate=$(date +%Y-%m-%d -r $debpath)
 pushd "$repopath" > /dev/null
 
 git fetch
+git checkout master
 git reset --hard origin/master
 
+git checkout -B "release-v$version"
+
 yamlFile="chat.schildi.desktop.yaml"
-xmlFile="chat.schildi.desktop.appdata.xml"
+xmlFile="chat.schildi.desktop.metainfo.xml"
 
 sed -i "s|url: .* #SC:url|url: $downloadurl #SC:url|" "$yamlFile"
 sed -i "s|sha256: .* #SC:sha256|sha256: $sha256sum #SC:sha256|" "$yamlFile"
@@ -33,8 +36,8 @@ sed -i "s|^\s\s$|  \n     /dev/null
 
-echo "Release v$version published on flathub!"
+echo "Release v$version published on flathub, now merge that branch as PR: https://github.com/flathub/chat.schildi.desktop/"
diff --git a/element-desktop b/element-desktop
index de5f137..b1a985e 160000
--- a/element-desktop
+++ b/element-desktop
@@ -1 +1 @@
-Subproject commit de5f137d4e37c7527596b4d910cb13a23b090dca
+Subproject commit b1a985e12802af8e3d2bf5440477f32bf9513b72
diff --git a/element-web b/element-web
index 615ecdc..8f5c3d2 160000
--- a/element-web
+++ b/element-web
@@ -1 +1 @@
-Subproject commit 615ecdc6d663431807884d4bb7c1d66ea684a3c9
+Subproject commit 8f5c3d28afdab73e2a67e4f570ab9fa8988709ac
diff --git a/flake.lock b/flake.lock
index 7e563d6..271a3d0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -2,11 +2,11 @@
   "nodes": {
     "nixpkgs": {
       "locked": {
-        "lastModified": 1630504215,
-        "narHash": "sha256-H5pzwo7z3e7ZatwuwWY25oZSejchO+ZH/XtMi8/PXLw=",
-        "owner": "yu-re-ka",
+        "lastModified": 1633901457,
+        "narHash": "sha256-GNJLwKENqEA4xlzkWI76VLHBAua4LUIlTeeiH4FR7Gc=",
+        "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "979e5916df0e6830a2b1ee999632de9a9d2beb23",
+        "rev": "f358794824b4595d77fec93732485d329ed7b0e0",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index cc71b74..d621243 100644
--- a/flake.nix
+++ b/flake.nix
@@ -25,5 +25,20 @@
         schildichat-desktop-wayland
       ;
     }) nixpkgsFor;
+
+    defaultPackage = forAllSystems (system: self.packages.${system}.schildichat-desktop);
+
+    apps = forAllSystems(system: {
+      schildichat-desktop = {
+        type = "app";
+        program = "${self.packages.${system}.schildichat-desktop}/bin/schildichat-desktop";
+      };
+      schildichat-desktop-wayland = {
+        type = "app";
+        program = "${self.packages.${system}.schildichat-desktop-wayland}/bin/schildichat-desktop";
+      };
+    });
+
+    defaultApp = forAllSystems (system: self.apps.${system}.schildichat-desktop);
   };
 }
diff --git a/generate_changelog.sh b/generate_changelog.sh
new file mode 100755
index 0000000..1e65601
--- /dev/null
+++ b/generate_changelog.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+set -e
+
+mydir="$(dirname "$(realpath "$0")")"
+
+pushd "$mydir" > /dev/null
+
+source ./merge_helpers.sh
+
+# Check branch
+check_branch $branch
+forall_repos check_branch $branch
+
+# Ensure clean git state
+forall_repos check_clean_git
+
+# Fetch upstream
+forall_repos git fetch origin > /dev/null 2>/dev/null
+forall_repos git fetch upstream > /dev/null 2>/dev/null
+
+(
+    # Add new line below git log: https://unix.stackexchange.com/a/345558
+
+    get_latest_upstream_tag
+    forelement_repos git log --pretty=format:"- %s" "sc" "^$latest_upstream_tag" "^master" \
+        | printf '%s\n' "$(cat)" \
+        | sed "s|Merge tag '\\(.*\\)' into sc.*|Update codebase to Element \1|" \
+        | sed "s|Merge tag '\\(.*\\)' into merge.*|Update codebase to Element \1|"
+
+    get_current_mxsdk_tags
+
+    pushd "matrix-js-sdk" > /dev/null
+    git log --pretty=format:"- %s" "sc" "^$current_mxjssdk_tag" "^master" \
+        | printf '%s\n' "$(cat)" \
+        | grep -v "Merge .*tag"
+    popd > /dev/null
+
+    pushd "matrix-react-sdk" > /dev/null
+    git log --pretty=format:"- %s" "sc" "^$current_mxreactsdk_tag" "^master" \
+        | printf '%s\n' "$(cat)" \
+        | grep -v "Merge .*tag"
+    popd > /dev/null
+) \
+    | grep -v "Automatic i18n reversion" \
+    | grep -v "Automatic package.json reversion" \
+    | grep -v "Merge .*branch" \
+    | grep -v "Automatic theme update" \
+    | grep -v "Automatic package.json adjustment" \
+    | grep -v "Automatic i18n adjustment" \
+    | grep -v "Update version to .*-sc\\..*" \
+    | grep -v "\\.sh" \
+    | grep -v "\\.md" \
+    | grep -v "Added translation using Weblate" \
+    | grep -v "Translated using Weblate" \
+    | grep -v "weblate/sc" \
+    | grep -v "\\[.*merge.*\\]" \
+    | awk '!seen[$0]++' `# https://stackoverflow.com/a/1444448` \
+    || echo "No significant changes since the last stable release"
+
+popd > /dev/null
diff --git a/i18n-overlays/element-desktop/bg.json b/i18n-overlays/element-desktop/bg.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-desktop/bg.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-desktop/fa.json b/i18n-overlays/element-desktop/fa.json
index 0967ef4..1cb3a76 100644
--- a/i18n-overlays/element-desktop/fa.json
+++ b/i18n-overlays/element-desktop/fa.json
@@ -1 +1,3 @@
-{}
+{
+    "Show": "نشان دادن"
+}
diff --git a/i18n-overlays/element-desktop/id.json b/i18n-overlays/element-desktop/id.json
new file mode 100644
index 0000000..79c1ad7
--- /dev/null
+++ b/i18n-overlays/element-desktop/id.json
@@ -0,0 +1,3 @@
+{
+    "Show": "Tampilkan"
+}
diff --git a/i18n-overlays/element-desktop/it.json b/i18n-overlays/element-desktop/it.json
new file mode 100644
index 0000000..e147bd9
--- /dev/null
+++ b/i18n-overlays/element-desktop/it.json
@@ -0,0 +1,3 @@
+{
+    "Show": "Visualizza"
+}
diff --git a/i18n-overlays/element-desktop/ja.json b/i18n-overlays/element-desktop/ja.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-desktop/ja.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-desktop/pt_BR.json b/i18n-overlays/element-desktop/pt_BR.json
index 0967ef4..928eceb 100644
--- a/i18n-overlays/element-desktop/pt_BR.json
+++ b/i18n-overlays/element-desktop/pt_BR.json
@@ -1 +1,3 @@
-{}
+{
+    "Show": "Mostrar"
+}
diff --git a/i18n-overlays/element-desktop/ro.json b/i18n-overlays/element-desktop/ro.json
new file mode 100644
index 0000000..b358cc2
--- /dev/null
+++ b/i18n-overlays/element-desktop/ro.json
@@ -0,0 +1,3 @@
+{
+    "Show": "Arată"
+}
diff --git a/i18n-overlays/element-desktop/sv.json b/i18n-overlays/element-desktop/sv.json
new file mode 100644
index 0000000..97bf809
--- /dev/null
+++ b/i18n-overlays/element-desktop/sv.json
@@ -0,0 +1,3 @@
+{
+    "Show": "Visa"
+}
diff --git a/i18n-overlays/element-desktop/tr.json b/i18n-overlays/element-desktop/tr.json
new file mode 100644
index 0000000..f1a952b
--- /dev/null
+++ b/i18n-overlays/element-desktop/tr.json
@@ -0,0 +1,3 @@
+{
+    "Show": "Göster"
+}
diff --git a/i18n-overlays/element-desktop/vi.json b/i18n-overlays/element-desktop/vi.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-desktop/vi.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-desktop/zh_Hans.json b/i18n-overlays/element-desktop/zh_Hans.json
new file mode 100644
index 0000000..7377015
--- /dev/null
+++ b/i18n-overlays/element-desktop/zh_Hans.json
@@ -0,0 +1,3 @@
+{
+    "Show": "显示"
+}
diff --git a/i18n-overlays/element-desktop/zh_Hant.json b/i18n-overlays/element-desktop/zh_Hant.json
new file mode 100644
index 0000000..ad1129c
--- /dev/null
+++ b/i18n-overlays/element-desktop/zh_Hant.json
@@ -0,0 +1,3 @@
+{
+    "Show": "顯示"
+}
diff --git a/i18n-overlays/element-web/bg.json b/i18n-overlays/element-web/bg.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/bg.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/id.json b/i18n-overlays/element-web/id.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/id.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/it.json b/i18n-overlays/element-web/it.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/it.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/ja.json b/i18n-overlays/element-web/ja.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/ja.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/ro.json b/i18n-overlays/element-web/ro.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/ro.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/sv.json b/i18n-overlays/element-web/sv.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/sv.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/tr.json b/i18n-overlays/element-web/tr.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/tr.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/vi.json b/i18n-overlays/element-web/vi.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/vi.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/zh_Hans.json b/i18n-overlays/element-web/zh_Hans.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/zh_Hans.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/element-web/zh_Hant.json b/i18n-overlays/element-web/zh_Hant.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/element-web/zh_Hant.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/matrix-react-sdk/bg.json b/i18n-overlays/matrix-react-sdk/bg.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/bg.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/matrix-react-sdk/cs.json b/i18n-overlays/matrix-react-sdk/cs.json
index 0830b04..c07e3a1 100644
--- a/i18n-overlays/matrix-react-sdk/cs.json
+++ b/i18n-overlays/matrix-react-sdk/cs.json
@@ -9,5 +9,46 @@
     "Show people and rooms in a combined list": "Zobrazit lidi a místnosti v kombinovaném seznamu",
     "Update notifications": "Aktualizace oznámení",
     "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Chcete se připojit k místnosti, která vás bude informovat o nových verzích? To je užitečné zejména v případě, že vaše platforma nepodporuje automatické aktualizace SchildiChatu (např. Windows a macOS).",
-    "Don't ask again": "Neptat se znovu"
+    "Don't ask again": "Neptat se znovu",
+    "System": "Systém",
+    "Light theme": "Světlý motiv",
+    "Dark theme": "Tmavý motiv",
+    "Add custom theme": "Přidat vlastní motiv",
+    "Theme in use": "Používaný motiv",
+    "User name color mode": "Barevný režim uživatelského jména",
+    "Uniform": "Jednotný",
+    "PowerLevel": "Úroveň oprávnění",
+    "MXID": "MXID",
+    "In group chats": "Ve skupinových chatech",
+    "In public rooms": "Ve veřejných místnostech",
+    "All rooms you're in will appear in Home.": "Všechny místnosti, ve kterých se nacházíte, se zobrazí v Úvodu.",
+    "Show all rooms in Home": "Zobrazit všechny místnosti v Úvodu",
+    "Show people in spaces": "Ukázat lidi v prostorech",
+    "Show notification badges for People in Spaces": "Zobrazit odznaky oznámení pro Lidé v prostorech",
+    "Return to the room previously opened in a space": "Návrat do dříve otevřené místnosti v prostoru",
+    "If disabled, the space overview will be shown when switching to another space.": "Pokud je vypnuto, zobrazí se při přepnutí do jiného prostoru přehled prostorů.",
+    "For people": "Pro osoby",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Pokud je zakázáno, můžete stále přidávat chaty s lidmi do osobních prostorů. Pokud je povoleno, automaticky se zobrazí všichni, kteří jsou členy daného prostoru.",
+    "Intermediate: medium sized avatar with single-line preview": "Střední: středně velký avatar s jednořádkovým náhledem",
+    "Roomy: big avatar with two-line preview": "Prostorný: velký avatar s dvouřádkovým náhledem",
+    "Room list style": "Styl seznamu místností",
+    "Compact: tiny avatar together with name and preview in one line": "Kompaktní: malý avatar spolu se jménem a náhledem v jednom řádku",
+    "Show advanced theme settings": "Zobrazit pokročilá nastavení motivu",
+    "Theme": "Motiv",
+    "Room list": "Seznam místností",
+    "Font size and typeface": "Velikost a typ písma",
+    "Hide advanced theme settings": "Skrýt pokročilá nastavení motivu",
+    "Mark rooms as unread": "Povolit označování chatů jako nepřečtených",
+    "Mark as unread": "Označit jako nepřečtené",
+    "Mark as read": "Označit jako přečtené",
+    "Enable YouTube embed player": "Povolí vložený přehrávač YouTube",
+    "Collapse additional buttons": "Sbalit další tlačítka",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Úvod je užitečný pro získání přehledu o všem. Mějte na paměti, že její vypnutí může způsobit, že nebudete moci zobrazit některé místnosti.",
+    "Corners": "Rohy",
+    "Round": "Oblé",
+    "Extra round": "Kulaté",
+    "Mixed": "Smíšené",
+    "Sound pack": "Balíček zvuků",
+    "Schildi: Softer sounds for reduced anxiety": "Schildi: Jemnější zvuky pro snížení úzkosti",
+    "Classic: The same sharp sounds as Element": "Klasické: Stejně ostré zvuky jako Element"
 }
diff --git a/i18n-overlays/matrix-react-sdk/de_DE.json b/i18n-overlays/matrix-react-sdk/de_DE.json
index f7f36b9..d7d2ed2 100644
--- a/i18n-overlays/matrix-react-sdk/de_DE.json
+++ b/i18n-overlays/matrix-react-sdk/de_DE.json
@@ -86,7 +86,7 @@
     "Enable experimental, compact IRC style layout": "Kompaktes, experimentelles Layout im IRC-Stil aktivieren",
     "Enable layout with message bubbles": "Layout mit Sprechblasen aktivieren",
     "Show message bubbles on one side only": "Sprechblasen nur auf einer Seite anzeigen",
-    "Show message bubbles depending on the width either on both sides or only on one side": "Sprechblasen abhänging von der Breite auf beiden Seiten oder nur einer Seite anzeigen",
+    "Show message bubbles depending on the width either on both sides or only on one side": "Sprechblasen abhängig von der Breite auf beiden Seiten oder nur einer Seite anzeigen",
     "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher während der Ausführung im Browser durchsuchen. Benutze %(brand)s Desktop, um verschlüsselte Nachrichten in den Suchergebnissen angezeigt zu bekommen.",
     "Use default": "Standardeinstellungen benutzen",
     "Your firewall or anti-virus is blocking the request.": "Deine Firewall oder dein Antivirenprogramm blockiert die Anfrage.",
@@ -109,5 +109,47 @@
     "Show people and rooms in a combined list": "Personen und Räume in einer gemeinsamen Liste anzeigen",
     "Update notifications": "Updatebenachrichtigungen",
     "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Möchtest du einem Raum beitreten, der dich über neue Updates informiert? Das ist besonders nützlich, wenn deine Plattform keine automatischen Updates für SchildiChat unterstützt (z. B. Windows und macOS).",
-    "Don't ask again": "Nicht erneut fragen"
+    "Don't ask again": "Nicht erneut fragen",
+    "Light theme": "Helles Design",
+    "Dark theme": "Dunkles Design",
+    "System": "System",
+    "Add custom theme": "Benutzerdefiniertes Design hinzufügen",
+    "Theme in use": "Design in Verwendung",
+    "Uniform": "Einfarbig",
+    "PowerLevel": "Berechtigungslevel",
+    "MXID": "MXID",
+    "In direct chats": "In direkten Chats",
+    "In group chats": "In Gruppenchats",
+    "Show all rooms in Home": "Alle Räume auf der Startseite zeigen",
+    "Show notification badges for People in Spaces": "Benachrichtigungssymbol für Personen in Spaces zeigen",
+    "Return to the room previously opened in a space": "In den zuvor geöffneten Raum in einem Space zurückkehren",
+    "If disabled, the space overview will be shown when switching to another space.": "Wenn deaktiviert, wird die Space-Übersicht beim Wechsel zu einem anderen Space angezeigt.",
+    "User name color mode": "Farbmodus der Benutzernamen",
+    "In public rooms": "In öffentlichen Räumen",
+    "All rooms you're in will appear in Home.": "Alle Räume, in denen du dich befindest, werden auf der Startseite angezeigt.",
+    "Show people in spaces": "Personen in Spaces anzeigen",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Falls deaktiviert, kannst du trotzdem Direktnachrichten in privaten Spaces hinzufügen. Falls aktiviert, wirst du alle Mitglieder des Spaces sehen.",
+    "For people": "Für Personen",
+    "Intermediate: medium sized avatar with single-line preview": "Zwischending: mittelgroßer Avatar mit einer einzeiligen Vorschau",
+    "Roomy: big avatar with two-line preview": "Geräumig: großer Avatar mit einer zweizeiligen Vorschau",
+    "Room list style": "Stil der Raumliste",
+    "Compact: tiny avatar together with name and preview in one line": "Kompakt: winziger Avatar zusammen mit dem Namen und der Vorschau in einer Zeile",
+    "Hide advanced theme settings": "Erweiterte Designeinstellungen ausblenden",
+    "Theme": "Design",
+    "Room list": "Raumliste",
+    "Font size and typeface": "Schriftgröße und Schriftart",
+    "Show advanced theme settings": "Erweiterte Designeinstellungen anzeigen",
+    "Mark rooms as unread": "Erlaube Chats als ungelesen zu markieren",
+    "Mark as read": "Als gelesen markieren",
+    "Mark as unread": "Als ungelesen markieren",
+    "Enable YouTube embed player": "Eingebetteten YouTube-Player aktivieren",
+    "Collapse additional buttons": "Zusätzliche Buttons einklappen",
+    "Round": "Rund",
+    "Mixed": "Gemischt",
+    "Corners": "Ecken",
+    "Extra round": "Extra rund",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Die Startseite hilft dir, einen Überblick über deine Chats zu bekommen. Bedenke, dass die Deaktivierung dazu führen kann, dass du bestimmte Räume nicht sehen kannst.",
+    "Classic: The same sharp sounds as Element": "Klassisch: Die gleichen scharfen Geräusche wie in Element",
+    "Sound pack": "Geräuschpaket",
+    "Schildi: Softer sounds for reduced anxiety": "Schildi: Sanftere Klänge für weniger Angstgefühle"
 }
diff --git a/i18n-overlays/matrix-react-sdk/en_EN.json b/i18n-overlays/matrix-react-sdk/en_EN.json
index 13eda4f..7732df7 100644
--- a/i18n-overlays/matrix-react-sdk/en_EN.json
+++ b/i18n-overlays/matrix-react-sdk/en_EN.json
@@ -11,8 +11,43 @@
     "Don't ask again": "Don't ask again",
     "System": "System",
     "Add custom theme": "Add custom theme",
-    "Add theme": "Add theme",
     "Theme in use": "Theme in use",
     "Light theme": "Light theme",
-    "Dark theme": "Dark theme"
+    "Dark theme": "Dark theme",
+    "User name color mode": "User name color mode",
+    "Uniform": "Uniform",
+    "PowerLevel": "PowerLevel",
+    "MXID": "MXID",
+    "For people": "For people",
+    "In group chats": "In group chats",
+    "In public rooms": "In public rooms",
+    "Show all rooms in Home": "Show all rooms in Home",
+    "All rooms you're in will appear in Home.": "All rooms you're in will appear in Home.",
+    "Show people in spaces": "Show people in spaces",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.",
+    "Show notification badges for People in Spaces": "Show notification badges for People in Spaces",
+    "Return to the room previously opened in a space": "Return to the room previously opened in a space",
+    "If disabled, the space overview will be shown when switching to another space.": "If disabled, the space overview will be shown when switching to another space.",
+    "Compact: tiny avatar together with name and preview in one line": "Compact: tiny avatar together with name and preview in one line",
+    "Intermediate: medium sized avatar with single-line preview": "Intermediate: medium sized avatar with single-line preview",
+    "Roomy: big avatar with two-line preview": "Roomy: big avatar with two-line preview",
+    "Room list style": "Room list style",
+    "Hide advanced theme settings": "Hide advanced theme settings",
+    "Show advanced theme settings": "Show advanced theme settings",
+    "Theme": "Theme",
+    "Room list": "Room list",
+    "Font size and typeface": "Font size and typeface",
+    "Mark rooms as unread": "Allow marking chats as unread",
+    "Mark as unread": "Mark as unread",
+    "Mark as read": "Mark as read",
+    "Enable YouTube embed player": "Enable YouTube embed player",
+    "Collapse additional buttons": "Collapse additional buttons",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.",
+    "Corners": "Corners",
+    "Round": "Round",
+    "Extra round": "Extra round",
+    "Mixed": "Mixed",
+    "Sound pack": "Sound pack",
+    "Schildi: Softer sounds for reduced anxiety": "Schildi: Softer sounds for reduced anxiety",
+    "Classic: The same sharp sounds as Element": "Classic: The same sharp sounds as Element"
 }
diff --git a/i18n-overlays/matrix-react-sdk/fr.json b/i18n-overlays/matrix-react-sdk/fr.json
index bdab12c..07a15dc 100644
--- a/i18n-overlays/matrix-react-sdk/fr.json
+++ b/i18n-overlays/matrix-react-sdk/fr.json
@@ -5,5 +5,24 @@
     "Normal priority": "Priorité normale",
     "Message layout": "Disposition des messages",
     "Modern": "Moderne",
-    "Show people and rooms in a combined list": "Afficher les personnes et les salons dans une liste combinée"
+    "Show people and rooms in a combined list": "Afficher les personnes et les salons dans une liste combinée",
+    "Update notifications": "Mettre à jour les notifications",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Souhaitez-vous rejoindre un salon vous notifiant à propos des nouvelles versions ? Cela est surtout utile si votre plateforme ne supporte pas les mises à jour automatiques pour SchildiChat (par ex. Windows et macOS).",
+    "Don't ask again": "Ne plus demander",
+    "System": "Système",
+    "Add custom theme": "Ajouter un thème personnalisé",
+    "Theme in use": "Thème utilisé",
+    "Light theme": "Thème lumineux",
+    "Dark theme": "Thème sombre",
+    "Uniform": "Uniforme",
+    "MXID": "MXID",
+    "In group chats": "Dans les chats de groupe",
+    "In public rooms": "Dans les salons publiques",
+    "All rooms you're in will appear in Home.": "Tous les salons dans lesquels vous êtes apparaîtront dans Accueil",
+    "Show people in spaces": "Afficher les personnes dans les espaces",
+    "Show notification badges for People in Spaces": "Afficher les badges de notifications pour les Personnes dans les Espaces",
+    "User name color mode": "Mode de couleur des noms d'utilisateur",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Si désactivé, vous pouvez toujours ajouter Messages Directs à votre Espace Personnel. Si activé, vous verrez automatiquement toutes les personnes qui sont membres de l'Espace.",
+    "For people": "Pour les personnes",
+    "Show all rooms in Home": "Afficher tous les salons dans Accueil"
 }
diff --git a/i18n-overlays/matrix-react-sdk/id.json b/i18n-overlays/matrix-react-sdk/id.json
new file mode 100644
index 0000000..c0d5cbb
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/id.json
@@ -0,0 +1,53 @@
+{
+    "Normal priority": "Prioritas normal",
+    "Message layout": "Tata letak pesan",
+    "Modern": "Modern",
+    "Show people and rooms in a combined list": "Tampilkan pengguna dan ruangan di daftar gabungan",
+    "Don't ask again": "Jangan tanya lagi",
+    "System": "Sistem",
+    "Add custom theme": "Tambahkan tema kustom",
+    "Theme in use": "Tema digunakan",
+    "Light theme": "Tema terang",
+    "Dark theme": "Tema gelap",
+    "User name color mode": "Mode warna nama pengguna",
+    "Uniform": "Seragam",
+    "PowerLevel": "TingkatDaya",
+    "MXID": "MXID",
+    "In group chats": "Di grup",
+    "In public rooms": "Di ruangan publik",
+    "Show all rooms in Home": "Tampilkan semua ruangan di Beranda",
+    "All rooms you're in will appear in Home.": "Semua ruangan yang Anda bergabung akan ditampilkan di Beranda.",
+    "Show notification badges for People in Spaces": "Tampilkan lencana pemberitahuan untuk Orang di Space",
+    "Show people in spaces": "Tampilkan orang di space",
+    "For people": "Untuk orang-orang",
+    "Return to the room previously opened in a space": "Kembali ke ruangan yang sebelumnya dibuka di sebuah space",
+    "If disabled, the space overview will be shown when switching to another space.": "Jika dinonaktifkan, ikhtisar space akan ditampilkan saat ganti ke space yang lain.",
+    "Compact: tiny avatar together with name and preview in one line": "Kecil: avatar kecil dengan nama dan tampilan di satu baris",
+    "Roomy: big avatar with two-line preview": "Luas: avatar besar dengan tampilan dua baris",
+    "Room list style": "Gaya daftar ruangan",
+    "Hide advanced theme settings": "Sembunyikan pengaturan tema lanjutan",
+    "Show advanced theme settings": "Tampilkan pengaturan tema lanjutan",
+    "Theme": "Tema",
+    "Room list": "Daftar ruangan",
+    "Font size and typeface": "Ukuran fon dan jenis huruf",
+    "Show message bubbles on one side only": "Tampilkan gelembung pesan di satu sisi saja",
+    "Show message bubbles depending on the width either on both sides or only on one side": "Tampilkan gelembung pesan tergantung pada lebarnya baik di kedua sisi atau hanya di satu sisi",
+    "Message bubbles": "Gelembung pesan",
+    "Update notifications": "Notifikasi peningkatan",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Apakah Anda ingin bergabung ke ruangan yang memberitahu Anda tentang rilis yang baru? Ini sangat berguna jika platform Anda tidak mendukung pembaruan otomatis untuk SchildiChat (mis. Windows dan macOS).",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Jika dinonaktifkan, Anda masih dapat menambahkan Pesan Langsung ke Space Personal. Jika diaktifkan, Anda akan otomatis melihat semua orang yang juga ada di Spacenya.",
+    "Intermediate: medium sized avatar with single-line preview": "Sedang: avatar sedang dengan tampilan satu baris",
+    "Mark rooms as unread": "Perbolehkan menandai obrolan sebagai dibaca",
+    "Mark as unread": "Tandai sebagai belum dibaca",
+    "Mark as read": "Tandai sebagai dibaca",
+    "Enable YouTube embed player": "Aktifkan pemain YouTube tersemat",
+    "Collapse additional buttons": "Sembunyikan tombol tambahan",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Beranda berguna untuk mendapatkan ikhtisar segalanya. Menonaktifkan Beranda mungkin dapat membuat Anda tidak dapat melihat beberapa ruangan.",
+    "Corners": "Sudut",
+    "Round": "Bulat",
+    "Extra round": "Ekstra bulat",
+    "Mixed": "Campur",
+    "Sound pack": "Paket suara",
+    "Schildi: Softer sounds for reduced anxiety": "Schildi: Suara lebih lembut untuk mengurangi kecemasan",
+    "Classic: The same sharp sounds as Element": "Klasik: Suara keras yang biasa seperti Element"
+}
diff --git a/i18n-overlays/matrix-react-sdk/it.json b/i18n-overlays/matrix-react-sdk/it.json
new file mode 100644
index 0000000..72a5b3a
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/it.json
@@ -0,0 +1,13 @@
+{
+    "Modern": "Moderno",
+    "Show people and rooms in a combined list": "Visualizza persone e stanze in una lista combinata",
+    "Update notifications": "Aggiorna notifiche",
+    "Don't ask again": "Non chiedere di nuovo",
+    "System": "Sistema",
+    "Add custom theme": "Aggiungi tema personalizzato",
+    "Theme in use": "Tema in uso",
+    "Light theme": "Tema chiaro",
+    "Dark theme": "Tema scuro",
+    "Normal priority": "Priorità normale",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Vuoi entrare in una stanza che ti notificherà riguardo nuove release? Sarebbe comodo particolarmente se la tua piattaforma non supporta aggiornamenti automatici (Come per esempio Windows o MacOS.)"
+}
diff --git a/i18n-overlays/matrix-react-sdk/ja.json b/i18n-overlays/matrix-react-sdk/ja.json
new file mode 100644
index 0000000..fedc533
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/ja.json
@@ -0,0 +1,3 @@
+{
+    "Normal priority": "常優先度"
+}
diff --git a/i18n-overlays/matrix-react-sdk/lt.json b/i18n-overlays/matrix-react-sdk/lt.json
index cc5bfa9..7013517 100644
--- a/i18n-overlays/matrix-react-sdk/lt.json
+++ b/i18n-overlays/matrix-react-sdk/lt.json
@@ -3,5 +3,51 @@
     "Modern": "Modernus",
     "Message bubbles": "Žinučių burbulai",
     "Message layout": "Žinučių išdėstymas",
-    "Show people and rooms in a combined list": "Asmenų ir kambarių rodymas bendrame sąraše"
+    "Show people and rooms in a combined list": "Asmenų ir kambarių rodymas bendrame sąraše",
+    "Room list": "Kambarių sąrašas",
+    "Show message bubbles on one side only": "Rodyti žinučių burbulus tik vienoje pusėje",
+    "Update notifications": "Atnaujinimų pranešimai",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Ar jūs norite prisijungti prie kambario kuris praneš jums apie atnaujinimus? Tai yra labai naudinga jei jūsų platforma nepalaiko automatinių SchildiChat atnaujinimų (pvz. Windows ir macOS).",
+    "Don't ask again": "Nebeklausti",
+    "System": "Sistema",
+    "Theme in use": "Tema naudojama",
+    "Light theme": "Šviesi tema",
+    "Dark theme": "Tamsi tema",
+    "MXID": "MXID",
+    "In group chats": "Pokalbių grupėse",
+    "In public rooms": "Viešuose kambariuose",
+    "Show all rooms in Home": "Rodyti visus kambarius Pradžioje",
+    "All rooms you're in will appear in Home.": "Visi kambariai kuriuose esate bus rodomi Pradžioje.",
+    "Hide advanced theme settings": "Slėpti išplėstinius temos nustatymus",
+    "Show advanced theme settings": "Rodyti išplėstinius temos nustatymus",
+    "Theme": "Tema",
+    "Font size and typeface": "Šrifto dydis ir raštas",
+    "Show message bubbles depending on the width either on both sides or only on one side": "Rodyti žinučių burbulus, priklausomai nuo pločio, abiejose pusėse arba tik vienoje pusėje",
+    "Sound pack": "Garso paketas",
+    "Schildi: Softer sounds for reduced anxiety": "Schildi: švelnesni garsai sumažintam nerimui",
+    "Classic: The same sharp sounds as Element": "Klasikiniai: Tie patys aštrūs garsai kaip ir Element",
+    "Enable YouTube embed player": "Įgalinti YouTube įterptą grotuvą",
+    "Add custom theme": "Pridėti pasirinktinę temą",
+    "Mark as unread": "Žymėti kaip neskaitytą",
+    "Mark as read": "Žymėti kaip perskaitytą",
+    "User name color mode": "Naudotojo vardo spalvų režimas",
+    "Uniform": "Vienodi",
+    "Show notification badges for People in Spaces": "Rodyti pranešimų ženkliukus žmonėms erdvėse",
+    "Return to the room previously opened in a space": "Grįžti į anksčiau atidarytą kambarį erdvėje",
+    "If disabled, the space overview will be shown when switching to another space.": "Jei išjungta, perjungiant į kitą erdvę bus rodoma erdvės apžvalga.",
+    "Room list style": "Kambarių sąrašo stilius",
+    "Compact: tiny avatar together with name and preview in one line": "Kompaktiška: mažytis avataras kartu su vardu ir peržiūra vienoje eilutėje",
+    "Intermediate: medium sized avatar with single-line preview": "Vidutinis: vidutinio dydžio avataras su vienos eilutės peržiūra",
+    "Roomy: big avatar with two-line preview": "Erdvus: didelis avataras su dviejų eilučių peržiūra",
+    "PowerLevel": "Galios lygis",
+    "For people": "Žmonėms",
+    "Show people in spaces": "Rodyti žmones erdvėse",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Jei išjungta, vis tiek galite pridėti tiesioginius pokalbius į asmenines erdves. Jei ši funkcija įjungta, automatiškai matysite visus, kurie yra erdvės nariai.",
+    "Mark rooms as unread": "Leisti žymėti pokalbius kaip neskaitytus",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Pradžia yra naudinga, kad galėtumėte viską apžvelgti. Turėkite omenyje, kad ją išjungę galite nematyti tam tikrų kambarių.",
+    "Collapse additional buttons": "Sulankstyti papildomus mygtukus",
+    "Corners": "Kampai",
+    "Round": "Apvalus",
+    "Extra round": "Ypač apvalus",
+    "Mixed": "Mišrus"
 }
diff --git a/i18n-overlays/matrix-react-sdk/nb_NO.json b/i18n-overlays/matrix-react-sdk/nb_NO.json
index cd11a91..e3eb1c6 100644
--- a/i18n-overlays/matrix-react-sdk/nb_NO.json
+++ b/i18n-overlays/matrix-react-sdk/nb_NO.json
@@ -8,5 +8,29 @@
     "Show message bubbles on one side only": "Vis meldingsbobler kun på én side",
     "Show message bubbles depending on the width either on both sides or only on one side": "Vis meldingsbobler avhengig av bredden enten på begge sider eller kun på én side",
     "Don't ask again": "Ikke spør igjen",
-    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Ønsker du at et rom skal gi deg merknader om nye utgivelser? Dette er spesielt nyttig hvis din plattform ikke støtter automatiske oppdateringer for SchildiChat (f.eks. Windows og macOS)."
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Ønsker du at et rom skal gi deg merknader om nye utgivelser? Dette er spesielt nyttig hvis din plattform ikke støtter automatiske oppdateringer for SchildiChat (f.eks. Windows og macOS).",
+    "Hide advanced theme settings": "Skjul avanserte draktinnstillinger",
+    "Show advanced theme settings": "Vis avanserte draktinnstillinger",
+    "Theme": "Drakt",
+    "Room list": "Romliste",
+    "Font size and typeface": "Størrelse på og type skrift",
+    "Sound pack": "Lydpakke",
+    "Schildi: Softer sounds for reduced anxiety": "Schildi: Mykere lyder for mindre angst",
+    "System": "System",
+    "Add custom theme": "Legg til egendefinert drakt",
+    "Theme in use": "Drakt i bruk",
+    "Light theme": "Lys drakt",
+    "Dark theme": "Mørk drakt",
+    "Mark as read": "Marker som lest",
+    "Mark rooms as unread": "Tillat markering av sludringer som uleste",
+    "Mark as unread": "Marker som ulest",
+    "In group chats": "I gruppesludringer",
+    "In public rooms": "I offentlige rom",
+    "For people": "For folk",
+    "Classic: The same sharp sounds as Element": "Klassisk: Samme skarpe lyder som Element",
+    "Collapse additional buttons": "Fold sammen ytterligere knapper",
+    "Corners": "Hjørner",
+    "Round": "Runde",
+    "Extra round": "Ekstra runde",
+    "Mixed": "Blandet"
 }
diff --git a/i18n-overlays/matrix-react-sdk/pt_BR.json b/i18n-overlays/matrix-react-sdk/pt_BR.json
index bdbad79..1b4c8af 100644
--- a/i18n-overlays/matrix-react-sdk/pt_BR.json
+++ b/i18n-overlays/matrix-react-sdk/pt_BR.json
@@ -3,5 +3,43 @@
     "Message bubbles": "Bolhas de mensagens",
     "Normal priority": "Prioridade normal",
     "Show message bubbles on one side only": "Mostrar bolhas de mensagem em apenas um lado",
-    "Show message bubbles depending on the width either on both sides or only on one side": "Mostrar bolhas de mensagem dependendo da largura de ambos os lados ou somente de um lado"
+    "Show message bubbles depending on the width either on both sides or only on one side": "Mostrar bolhas de mensagem dependendo da largura de ambos os lados ou somente de um lado",
+    "Hide advanced theme settings": "Ocultar configurações de tema avançadas",
+    "Show advanced theme settings": "Mostrar configurações de tema avançadas",
+    "Theme": "Tema",
+    "Room list": "Lista de salas",
+    "Font size and typeface": "Tamanho da fonte e tipo de letra",
+    "Message layout": "Layout da mensagem",
+    "Modern": "Moderno",
+    "Show people and rooms in a combined list": "Mostrar pessoas e salas em uma lista combinada",
+    "Update notifications": "Atualizar notificações",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Você quer participar numa sala para ser notificado sobre novos lançamentos? Isto é especialmente útil se a sua plataforma não suportar atualizações automáticas para SchildiChat (tipo Windows e macOS).",
+    "Don't ask again": "Não pergunte novamente",
+    "System": "Sistema",
+    "Add custom theme": "Adicionar tema personalizado",
+    "Theme in use": "Tema em uso",
+    "Dark theme": "Tema escuro",
+    "Light theme": "Tema claro",
+    "Uniform": "comum",
+    "PowerLevel": "Nível de poder",
+    "MXID": "MXID",
+    "In group chats": "Em conversas de grupo",
+    "In public rooms": "Em salas públicas",
+    "All rooms you're in will appear in Home.": "Todos as salas em que você estiver aparecerão em Início.",
+    "Show all rooms in Home": "Mostrar todos as salas em Início",
+    "Show people in spaces": "Mostrar as pessoas em espaços",
+    "Show notification badges for People in Spaces": "Mostrar símbolo de notificação para Pessoas em Espaços",
+    "Return to the room previously opened in a space": "Retornar à sala previamente aberta em um espaço",
+    "If disabled, the space overview will be shown when switching to another space.": "Se desativado, a visão geral do espaço será mostrada ao mudar para outro espaço.",
+    "For people": "Para pessoas",
+    "User name color mode": "Modo de cor baseado em nome do usuário",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Se estiver desativado, você ainda pode adicionar Mensagens Diretas aos Espaços Pessoais. Se ativado, você verá automaticamente todos os que são membros do Espaço.",
+    "Compact: tiny avatar together with name and preview in one line": "Compacto: avatar minúsculo junto com o nome e visualização em uma linha",
+    "Intermediate: medium sized avatar with single-line preview": "Intermédio: avatar de tamanho médio com visualização de uma linha",
+    "Roomy: big avatar with two-line preview": "Amplo: grande avatar com visualização em duas linhas",
+    "Room list style": "Estilo da lista de salas",
+    "Mark rooms as unread": "Permitir markar conversas como não lidos",
+    "Mark as unread": "Markar como não lido",
+    "Mark as read": "Markar como lido",
+    "Collapse additional buttons": "Recolher botões adicionais"
 }
diff --git a/i18n-overlays/matrix-react-sdk/ro.json b/i18n-overlays/matrix-react-sdk/ro.json
new file mode 100644
index 0000000..08e7981
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/ro.json
@@ -0,0 +1,28 @@
+{
+    "Show message bubbles on one side only": "Arata bulele mesajelor pe o singură parte",
+    "Show message bubbles depending on the width either on both sides or only on one side": "Arată bulele mesajelor bazat fie pe lățimea ambelor părți sau o singură parte",
+    "Message bubbles": "Bulele mesajelor",
+    "Normal priority": "Prioritate normală",
+    "Message layout": "Așezarea mesajului",
+    "Modern": "Modern",
+    "Show people and rooms in a combined list": "Arată persoanele și camerele într-o listă combinată",
+    "Update notifications": "Actualizează notificările",
+    "Don't ask again": "Nu întreba din nou",
+    "System": "Sistem",
+    "Add custom theme": "Adaugă o temă proprie",
+    "Theme in use": "Temă în folosință",
+    "Light theme": "Temă luminoasă",
+    "Dark theme": "Temă întunecată",
+    "Uniform": "Uniform",
+    "In group chats": "În chaturile de grup",
+    "In public rooms": "În camerele publice",
+    "All rooms you're in will appear in Home.": "Toate camerele în care te afli vor apărea în Pagina principala",
+    "Show people in spaces": "Arată persoanele în spații",
+    "Show notification badges for People in Spaces": "Arată simboluri de notificare pentru Persoanele din Spații",
+    "Return to the room previously opened in a space": "Întoarce-te spre camera deschisă ultima oară într-un spațiu",
+    "If disabled, the space overview will be shown when switching to another space.": "Dacă e dezactivat, se va arăta vederea de ansamblu a spațiului când schimbi pe alt spațiu.",
+    "For people": "Pentru persoane",
+    "User name color mode": "Modul culorilor utilizatorilor",
+    "Show all rooms in Home": "Arată toate camerele în Pagina principală",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Dacă e dezactivat, încă poți adăuga Mesaje Directe în Spații Personale. Dacă e activat, vei vedea toți membrii Spațiului automat."
+}
diff --git a/i18n-overlays/matrix-react-sdk/ru.json b/i18n-overlays/matrix-react-sdk/ru.json
index 4ef2334..3a8cdac 100644
--- a/i18n-overlays/matrix-react-sdk/ru.json
+++ b/i18n-overlays/matrix-react-sdk/ru.json
@@ -9,5 +9,33 @@
     "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Вы хотите присоединиться к комнате, уведомляющей вас о новых релизах? Это особенно полезно, если ваша платформа не поддерживает автоматические обновления для SchildiChat (например, Windows и macOS).",
     "Show people and rooms in a combined list": "Показать людей и комнаты в объединенном списке",
     "Update notifications": "Уведомления об обновлениях",
-    "Don't ask again": "Не спрашивать больше"
+    "Don't ask again": "Не спрашивать больше",
+    "Hide advanced theme settings": "Скрыть расширенные настройки темы",
+    "Show advanced theme settings": "Показать расширенные настройки темы",
+    "Theme": "Тема",
+    "Room list": "Список комнат",
+    "Font size and typeface": "Размер и начертание шрифта",
+    "Light theme": "Светлая тема",
+    "Dark theme": "Тёмная тема",
+    "System": "Система",
+    "Add custom theme": "Добавить пользовательскую тему",
+    "Theme in use": "Используемая тема",
+    "In group chats": "В групповых чатах",
+    "In public rooms": "В публичных комнатах",
+    "PowerLevel": "Уровень прав",
+    "MXID": "MXID",
+    "Show all rooms in Home": "Показать все комнаты в Начале",
+    "Show notification badges for People in Spaces": "Показывать значки уведомлений для людей в пространствах",
+    "Return to the room previously opened in a space": "Возврат в комнату, ранее открытую в пространстве",
+    "If disabled, the space overview will be shown when switching to another space.": "Если отключить, то при переключении на другое пространство будет отображаться обзор пространства.",
+    "Uniform": "Одинаковый",
+    "All rooms you're in will appear in Home.": "Все комнаты, в которых вы находитесь, будут отображаться в Начале.",
+    "Show people in spaces": "Показать людей в пространствах",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Если этот параметр отключен, вы по-прежнему можете добавлять личные сообщения в личные пространства. Если включено, вы будете автоматически видеть всех, кто является членом пространства.",
+    "Compact: tiny avatar together with name and preview in one line": "Компактный: крошечный аватар вместе с именем и превью в одной строке",
+    "User name color mode": "Имя пользователя цветовой режим",
+    "For people": "Для людей",
+    "Room list style": "Стиль списка комнат",
+    "Intermediate: medium sized avatar with single-line preview": "Средний: аватар среднего размера с однострочным превью",
+    "Roomy: big avatar with two-line preview": "Вместительный: большой аватар с двухстрочным превью"
 }
diff --git a/i18n-overlays/matrix-react-sdk/sv.json b/i18n-overlays/matrix-react-sdk/sv.json
new file mode 100644
index 0000000..9facd06
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/sv.json
@@ -0,0 +1,53 @@
+{
+    "Message bubbles": "Meddelandebubblor",
+    "Normal priority": "Normal prioritet",
+    "Message layout": "Meddelande layout",
+    "Modern": "Modern",
+    "Show people and rooms in a combined list": "Visa personer och rum i en kombinerad lista",
+    "Update notifications": "Uppdatera meddelanden",
+    "Don't ask again": "Fråga inte igen",
+    "System": "System",
+    "Add custom theme": "Lägg till anpassat tema",
+    "Theme in use": "Tema i bruk",
+    "Light theme": "Ljus tema",
+    "Dark theme": "Mörkt tema",
+    "Show message bubbles on one side only": "Visa meddelandebubblor bara på ena sidan",
+    "Show message bubbles depending on the width either on both sides or only on one side": "Visa meddelandebubblor beroende på bredden antingen på båda sidor eller bara på ena sidan",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Vill du gå med i ett rum som informerar dig om nya utgåvor? Detta är särskilt användbart om din plattform inte stöder automatiska uppdateringar för SchildiChat (t.ex.Windows och macOS).",
+    "Uniform": "Enhetlig",
+    "PowerLevel": "PowerLevel",
+    "MXID": "MXID",
+    "In group chats": "I gruppchattar",
+    "In public rooms": "I offentliga rum",
+    "Show all rooms in Home": "Visa alla rum i Home",
+    "Show people in spaces": "Visa människor i Spaces",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Om den är inaktiverad kan du fortfarande lägga till direktmeddelanden till personliga utrymmen. Om den är aktiverad ser du automatiskt alla som är medlem i Space.",
+    "Show notification badges for People in Spaces": "Visa meddelandemärken för personer in Spaces",
+    "Return to the room previously opened in a space": "Återgå till rummet som tidigare öppnats i ett Space",
+    "If disabled, the space overview will be shown when switching to another space.": "Om den är inaktiverad visas utrymmeöversikten när du byter till ett annat utrymme.",
+    "For people": "För folk",
+    "User name color mode": "Användarnamns färgläge",
+    "All rooms you're in will appear in Home.": "Alla rum du befinner dig i visas i Home.",
+    "Show advanced theme settings": "Visa avancerade temainställningar",
+    "Theme": "tema",
+    "Room list": "Rumslista",
+    "Font size and typeface": "Teckenstorlek och typsnitt",
+    "Hide advanced theme settings": "Dölj avancerade temainställningar",
+    "Compact: tiny avatar together with name and preview in one line": "Kompakt: liten avatar tillsammans med namn och förhandsvisning på en rad",
+    "Intermediate: medium sized avatar with single-line preview": "Medel: medelstor avatar med enradig förhandsvisning",
+    "Roomy: big avatar with two-line preview": "Rymlig: stor avatar med förhandsvisning med två rader",
+    "Room list style": "Rumslista stil",
+    "Mark as unread": "markera som oläst",
+    "Mark as read": "markera som läst",
+    "Mark rooms as unread": "Tillåt att chattar markeras som olästa",
+    "Enable YouTube embed player": "Aktivera inbäddad YouTube-spelare",
+    "Collapse additional buttons": "Dölj ytterligare knappar",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Home är användbart för att få en överblick över allt. Tänk på att om du inaktiverar den kan du inte se vissa rum.",
+    "Round": "Runda",
+    "Extra round": "Extrarunda",
+    "Mixed": "Blandad",
+    "Corners": "Hörn",
+    "Sound pack": "Ljudpaket",
+    "Schildi: Softer sounds for reduced anxiety": "Schildi: Mjukare ljud för minskad ångest",
+    "Classic: The same sharp sounds as Element": "Klassisk: Samma skarpa ljud som Element"
+}
diff --git a/i18n-overlays/matrix-react-sdk/tr.json b/i18n-overlays/matrix-react-sdk/tr.json
new file mode 100644
index 0000000..0856dee
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/tr.json
@@ -0,0 +1,48 @@
+{
+    "Show message bubbles on one side only": "Mesaj baloncuklarını yalnızca bir tarafta göster",
+    "Show message bubbles depending on the width either on both sides or only on one side": "Genişliğe bağlı olarak mesaj baloncuklarını her iki tarafta veya sadece bir tarafta göster",
+    "Message bubbles": "Mesaj baloncukları",
+    "Normal priority": "Normal öncelik",
+    "Message layout": "Mesaj düzeni",
+    "Modern": "Modern",
+    "Update notifications": "Güncelleme bildirimleri",
+    "Don't ask again": "Bir daha sorma",
+    "System": "Sistem",
+    "Add custom theme": "Özel tema ekle",
+    "Theme in use": "Tema kullanımda",
+    "Light theme": "Açık tema",
+    "Dark theme": "Koyu tema",
+    "Uniform": "Düzenli",
+    "For people": "İnsanlar için",
+    "In group chats": "Grup sohbetlerinde",
+    "In public rooms": "Halka açık odalarda",
+    "Show people and rooms in a combined list": "Kişileri ve odaları birleşik bir listede göster",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "Yeni sürümler hakkında sizi bilgilendiren bir odaya katılmak ister misiniz? Bu oda özellikle platformunuz SchildiChat için otomatik güncellemeleri desteklemiyorsa (ör. Windows ve macOS) kullanışlıdır.",
+    "If disabled, the space overview will be shown when switching to another space.": "Devre dışı bırakılırsa, başka bir alana geçerken alana ilişkin genel görünüm gösterilir.",
+    "Mark as unread": "Okunmadı olarak işaretle",
+    "User name color mode": "Kullanıcı adı renk modu",
+    "Show people in spaces": "İnsanları alanlarda göster",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "Devre dışı bırakılmışsa, kişisel alanlara direkt mesajlar eklemeye devam edebilirsiniz. Etkinleştirilirse, alana üye olan herkesi otomatik olarak görürsünüz.",
+    "Show notification badges for People in Spaces": "Alanlardaki Kişiler için bildirim rozetlerini göster",
+    "Return to the room previously opened in a space": "Bir alanda daha önce açılmış olan odaya geri dön",
+    "Compact: tiny avatar together with name and preview in one line": "Sıkıştırılmış: tek satırda isim ve önizleme ile birlikte küçük avatar",
+    "Intermediate: medium sized avatar with single-line preview": "Orta: tek satır önizlemeli orta boy avatar",
+    "Roomy: big avatar with two-line preview": "Ferah: iki satırlık önizleme ile büyük avatar",
+    "Room list style": "Oda listesi tarzı",
+    "Hide advanced theme settings": "Gelişmiş tema ayarlarını gizle",
+    "Show all rooms in Home": "Ana sayfadaki tüm odaları göster",
+    "All rooms you're in will appear in Home.": "Bulunduğunuz tüm odalar ana sayfada görünecektir.",
+    "Show advanced theme settings": "Gelişmiş tema ayarlarını göster",
+    "Theme": "Tema",
+    "Font size and typeface": "Yazı tipi boyutu ve yazı karakteri",
+    "Room list": "Oda sıralaması",
+    "Mark rooms as unread": "Sohbetleri okunmamış olarak işaretlemeye izin ver",
+    "Mark as read": "Okundu olarak işaretle",
+    "Enable YouTube embed player": "YouTube gömülü oynatıcıyı etkinleştir",
+    "Collapse additional buttons": "Ek düğmeleri daralt",
+    "Corners": "Köşeler",
+    "Round": "Yuvarlak",
+    "Extra round": "Fazladan yuvarlak",
+    "Mixed": "Karışık",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "Ana sayfa, her şeye genel bir bakış elde etmek için kullanışlıdır. Devre dışı bırakıldığında belirli odaları göremeyebileceğinizi unutmayın."
+}
diff --git a/i18n-overlays/matrix-react-sdk/vi.json b/i18n-overlays/matrix-react-sdk/vi.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/vi.json
@@ -0,0 +1 @@
+{}
diff --git a/i18n-overlays/matrix-react-sdk/zh_Hans.json b/i18n-overlays/matrix-react-sdk/zh_Hans.json
new file mode 100644
index 0000000..aef112a
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/zh_Hans.json
@@ -0,0 +1,46 @@
+{
+    "Message bubbles": "消息气泡",
+    "Normal priority": "正常优先级",
+    "Message layout": "消息布局",
+    "Modern": "现代",
+    "Show people and rooms in a combined list": "使用组合列表显示所有人员和房间",
+    "Update notifications": "更新通知",
+    "Don't ask again": "不再询问",
+    "System": "系统",
+    "Add custom theme": "添加自定义主题",
+    "Theme in use": "当前主题",
+    "User name color mode": "用户名颜色模式",
+    "Light theme": "浅色主题",
+    "Dark theme": "深色主题",
+    "Uniform": "单色",
+    "In group chats": "群聊",
+    "For people": "私聊",
+    "All rooms you're in will appear in Home.": "你加入的所有聊天室都会显示在主页。",
+    "In public rooms": "公共聊天室",
+    "Show people in spaces": "显示空间中的人",
+    "Show all rooms in Home": "在主页显示所有聊天室",
+    "If disabled, you can still add Direct Messages to Personal Spaces. If enabled, you'll automatically see everyone who is a member of the Space.": "如果禁用,你仍可以将私聊添加至个人空间。若启用,你将自动看见空间中的每位成员。",
+    "Show notification badges for People in Spaces": "为空间中的人显示通知标志",
+    "PowerLevel": "根据权限等级自动设定",
+    "MXID": "根据 Matrix ID 自动设定",
+    "Return to the room previously opened in a space": "返回先前在空间中打开的聊天室",
+    "If disabled, the space overview will be shown when switching to another space.": "如果禁用,切换到其他空间时将显示空间概览。",
+    "Compact: tiny avatar together with name and preview in one line": "紧凑:在一行中包含小头像、用户名和消息预览",
+    "Intermediate: medium sized avatar with single-line preview": "中等:中等大小头像,用户名与消息预览在头像旁以单行宽度分列",
+    "Roomy: big avatar with two-line preview": "宽敞:大尺寸头像,用户名与消息预览在头像旁以双行宽度分列",
+    "Hide advanced theme settings": "隐藏高级主题设置",
+    "Show advanced theme settings": "显示高级主题设置",
+    "Theme": "主题",
+    "Room list": "聊天室列表",
+    "Font size and typeface": "字号与字型",
+    "Show message bubbles on one side only": "仅在一侧显示消息气泡",
+    "Room list style": "聊天室列表样式",
+    "Show message bubbles depending on the width either on both sides or only on one side": "根据窗口大小智能切换消息气泡的显示样式",
+    "Do you want to join a room notifying you about new releases? This is especially useful if your platform doesn't support automatic updates for SchildiChat (e.g. Windows and macOS).": "您想加入一个用来通知版本更新的房间吗?如果您的平台不支持自动更新 SchildiChat(例如 Windows 和 macOS),这将非常有用。",
+    "Mark as read": "标记为已读",
+    "Mark rooms as unread": "允许将聊天记录标记为未读",
+    "Mark as unread": "标记为未读",
+    "Home is useful for getting an overview of everything. Keep in mind that disabling it could leave you unable to see certain rooms.": "主页对于概览所有消息来说非常有用。请注意:禁用主页可能会让您无法看到某些房间。",
+    "Enable YouTube embed player": "启用 YouTube 嵌入式播放器",
+    "Collapse additional buttons": "折叠额外的按钮"
+}
diff --git a/i18n-overlays/matrix-react-sdk/zh_Hant.json b/i18n-overlays/matrix-react-sdk/zh_Hant.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/zh_Hant.json
@@ -0,0 +1 @@
+{}
diff --git a/local-pkgbuild-template/PKGBUILD b/local-pkgbuild-template/PKGBUILD
index df4c516..ff49e1f 100644
--- a/local-pkgbuild-template/PKGBUILD
+++ b/local-pkgbuild-template/PKGBUILD
@@ -10,7 +10,7 @@ pkgdesc="SchildiChat is a Matrix client based on Element with a more traditional
 arch=('x86_64')
 url="https://schildi.chat"
 license=('Apache')
-depends=('sqlcipher')
+depends=()
 provides=('---appName---')
 conflicts=('---appName---')
 source=("---debName---"
@@ -22,4 +22,5 @@ package() {
   msg2 "Extracting the data.tar.xz..."
   bsdtar -xf data.tar.xz -C "$pkgdir/"
   install -Dm755 "${srcdir}"/---appName---.sh "${pkgdir}"/usr/bin/---appName---
+  sed -i 's|^Exec=.*|Exec=/usr/bin/---appName--- %u|' "${pkgdir}"/usr/share/applications/---appName---.desktop
 }
diff --git a/matrix-js-sdk b/matrix-js-sdk
index 4bc4575..589938f 160000
--- a/matrix-js-sdk
+++ b/matrix-js-sdk
@@ -1 +1 @@
-Subproject commit 4bc4575eb65aa68ea8080f5de2072a5949ca8c6d
+Subproject commit 589938f71d50c55a78f7c3d5a7e54110e35279e0
diff --git a/matrix-react-sdk b/matrix-react-sdk
index 55874ea..1cea13f 160000
--- a/matrix-react-sdk
+++ b/matrix-react-sdk
@@ -1 +1 @@
-Subproject commit 55874eaa27ac68daa1fd67f739945cf51551f4ef
+Subproject commit 1cea13f3c55f353fd3bac1110214de54ba3d6ade
diff --git a/merge_helpers.sh b/merge_helpers.sh
index d9562af..3808eab 100755
--- a/merge_helpers.sh
+++ b/merge_helpers.sh
@@ -2,6 +2,8 @@
 
 SCHILDI_ROOT="$(dirname "$(realpath "$0")")"
 
+branch=${BRANCH:-"sc"}
+
 i18n_helper_path="$SCHILDI_ROOT/i18n-helper/index.js"
 i18n_path="src/i18n/strings"
 i18n_overlay_path="$SCHILDI_ROOT/i18n-overlays"
@@ -30,18 +32,31 @@ add_upstream() {
 }
 
 forall_repos() {
-    pushd "$SCHILDI_ROOT/matrix-js-sdk"
+    pushd "$SCHILDI_ROOT/matrix-js-sdk" > /dev/null
     "$@"
-    popd
-    pushd "$SCHILDI_ROOT/matrix-react-sdk"
+    popd > /dev/null
+
+    pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
     "$@"
-    popd
-    pushd "$SCHILDI_ROOT/element-web"
+    popd > /dev/null
+
+    pushd "$SCHILDI_ROOT/element-web" > /dev/null
     "$@"
-    popd
-    pushd "$SCHILDI_ROOT/element-desktop"
+    popd > /dev/null
+
+    pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
     "$@"
-    popd
+    popd > /dev/null
+}
+
+forelement_repos() {
+    pushd "$SCHILDI_ROOT/element-web" > /dev/null
+    "$@"
+    popd > /dev/null
+
+    pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
+    "$@"
+    popd > /dev/null
 }
 
 ensure_yes() {
@@ -70,9 +85,10 @@ check_clean_git() {
 
 revert_i18n_changes() {
     local i18n_path="$1"
-    local skip_commit="$2"
+    local revision="$2"
+    local skip_commit="$3"
 
-    git checkout upstream/master -- "$i18n_path"
+    git checkout "$revision" -- "$i18n_path"
 
     if [[ "$skip_commit" != [Yy]* ]]; then
         git commit -m "Automatic i18n reversion" || true
@@ -89,16 +105,23 @@ apply_i18n_changes() {
 automatic_i18n_reversion() {
     local skip_commit="$1"
 
+    local current_upstream_tag
+    get_current_upstream_tag
+
+    local current_mxjssdk_tag
+    local current_mxreactsdk_tag
+    get_current_mxsdk_tags
+
     pushd "$SCHILDI_ROOT/matrix-react-sdk" > /dev/null
-    revert_i18n_changes "$i18n_path" $skip_commit
+    revert_i18n_changes "$i18n_path" "$current_mxreactsdk_tag" "$skip_commit"
     popd > /dev/null
 
     pushd "$SCHILDI_ROOT/element-web" > /dev/null
-    revert_i18n_changes "$i18n_path" $skip_commit
+    revert_i18n_changes "$i18n_path" "$current_upstream_tag" "$skip_commit"
     popd > /dev/null
 
     pushd "$SCHILDI_ROOT/element-desktop" > /dev/null
-    revert_i18n_changes "$i18n_path" $skip_commit
+    revert_i18n_changes "$i18n_path" "$current_upstream_tag" "$skip_commit"
     popd > /dev/null
 }
 
@@ -124,3 +147,117 @@ automatic_i18n_adjustment() {
     apply_i18n_changes "$i18n_path"
     popd > /dev/null
 }
+
+get_current_versions() {
+    local version=`cat "$SCHILDI_ROOT/element-web/package.json" | jq .version -r`
+    if [[ "$version" =~ ([0-9\.]*)(-sc\.([0-9]+)(\.test.([0-9]+))?)? ]]; then
+        upstream="${BASH_REMATCH[1]}"
+        release="${BASH_REMATCH[3]}"
+        test="${BASH_REMATCH[5]}"
+    fi
+
+    versions=("${upstream:-"0.0.1"}" "${release:-"0"}" "${test:-"0"}")
+}
+
+get_versions_string() {
+    versions_string="${versions[0]}-sc.${versions[1]}"
+
+    # both zero means the initial version after a merge
+    if [[ ${versions[1]} -eq 0 || ${versions[2]} -gt 0 ]]; then
+        versions_string+=".test.${versions[2]}"
+    fi
+}
+
+write_version() {
+    local file="$1"
+    local versions_string
+    get_versions_string
+
+    new_content=`jq --arg version "$versions_string" '.version = $version' "$file"`
+    echo "$new_content" > "$file"
+
+    git add "$file"
+    git commit -m "Update version to $versions_string" || true
+}
+
+bump_test_version() {
+    local versions
+    get_current_versions
+    
+    # increment test version
+    versions[2]=$((versions[2] + 1))
+
+    forelement_repos write_version "package.json"
+}
+
+bump_release_version() {
+    local versions
+    get_current_versions
+    
+    # increment release version
+    versions[1]=$((versions[1] + 1))
+    
+    # set test version to 0
+    versions[2]=0
+
+    forelement_repos write_version "package.json"
+}
+
+revert_packagejson_changes() {
+    local path="$1"
+    local revision="$2"
+    local skip_commit="$3"
+
+    git checkout "$revision" -- "$path"
+
+    if [[ "$skip_commit" != [Yy]* ]]; then
+        git commit -m "Automatic package.json reversion" || true
+    fi
+}
+
+apply_packagejson_overlay() {
+    local orig_path="$1"
+    local overlay_path="$2"
+
+    # see: https://stackoverflow.com/a/24904276
+    new_content=`jq -s '.[0] * .[1]' "$orig_path" "$overlay_path"`
+
+    echo "$new_content" > "$orig_path"
+    git add "$orig_path"
+    git commit -m "Automatic package.json adjustment" || true
+}
+
+automatic_packagejson_reversion() {
+    local skip_commit="$1"
+
+    local current_upstream_tag
+    get_current_upstream_tag
+
+    forelement_repos revert_packagejson_changes "package.json" "$current_upstream_tag" "$skip_commit"
+}
+
+automatic_packagejson_adjustment() {
+    local versions
+    get_current_versions
+
+    forelement_repos apply_packagejson_overlay "package.json" "overlay-package.json"
+    forelement_repos write_version "package.json"
+}
+
+get_latest_upstream_tag() {
+    pushd "$SCHILDI_ROOT/element-web" > /dev/null
+    git fetch upstream
+    latest_upstream_tag=`git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags | sed -nr 's|refs/tags/(v[0-9]+(\.[0-9]+(\.[0-9]+)?)?) .*|\1|p' | tail -n 1`
+    popd > /dev/null
+}
+
+get_current_upstream_tag() {
+    local versions
+    get_current_versions
+    current_upstream_tag="v${versions[0]}"
+}
+
+get_current_mxsdk_tags() {
+    current_mxreactsdk_tag="v$(cat "$SCHILDI_ROOT/element-web/package.json" | jq '.dependencies["matrix-react-sdk"]' -r)"
+    current_mxjssdk_tag="v$(cat "$SCHILDI_ROOT/element-web/package.json" | jq '.dependencies["matrix-js-sdk"]' -r)"
+}
diff --git a/merge_upstream.sh b/merge_upstream.sh
index db2b383..cfbea1f 100755
--- a/merge_upstream.sh
+++ b/merge_upstream.sh
@@ -3,7 +3,6 @@
 set -e
 
 mydir="$(dirname "$(realpath "$0")")"
-branch=${BRANCH:-"sc"}
 
 pushd "$mydir" > /dev/null
 
@@ -16,23 +15,38 @@ forall_repos check_branch $branch
 # Ensure clean git state
 forall_repos check_clean_git
 
-# Automatic i18n reversion
-automatic_i18n_reversion
-
-# Merge
+# Fetch upstream
 forall_repos git fetch upstream
-forall_repos git merge upstream/master
+
+# Automatic reversions
+automatic_i18n_reversion
+automatic_packagejson_reversion
+
+# Merge upstream
+get_latest_upstream_tag
+forelement_repos git merge "$latest_upstream_tag"
+
+get_current_mxsdk_tags
+
+pushd "matrix-js-sdk" > /dev/null
+git merge "$current_mxjssdk_tag"
+popd > /dev/null
+
+pushd "matrix-react-sdk" > /dev/null
+git merge "$current_mxreactsdk_tag"
+popd > /dev/null
 
 # Refresh environment
 make clean
 make setup
 
-# Automatic i18n adjustment
+# Automatic adjustments
 automatic_i18n_adjustment
+automatic_packagejson_adjustment
 
 # Automatic theme update
 pushd "matrix-react-sdk" > /dev/null
-./theme.sh
+./theme.sh y
 popd > /dev/null
 
 popd > /dev/null
diff --git a/nix/overlay.nix b/nix/overlay.nix
index 7261941..8c763e7 100644
--- a/nix/overlay.nix
+++ b/nix/overlay.nix
@@ -6,7 +6,8 @@ final: prev: {
     ;
     inherit src;
   };
-  schildichat-web = final.callPackage ./schildichat-web.nix {};
+  schildichat-web = final.callPackage ./schildichat-web.nix {
+  };
   schildichat-desktop = final.callPackage ./schildichat-desktop.nix {
     inherit (final.darwin.apple_sdk.frameworks) Security AppKit CoreServices;
   };
diff --git a/publish_release.sh b/publish_release.sh
new file mode 100755
index 0000000..cd5874c
--- /dev/null
+++ b/publish_release.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+set -e
+
+mydir="$(dirname "$(realpath "$0")")"
+
+pushd "$mydir" > /dev/null
+
+source ./merge_helpers.sh
+
+# Check branch
+check_branch $branch
+forall_repos check_branch $branch
+
+# Ensure clean git state
+forall_repos check_clean_git
+
+git fetch origin
+git branch -D master || true
+git checkout -b master --track origin/master
+git merge --ff-only sc
+git push
+git checkout sc
+forall_repos git fetch origin
+forall_repos git branch -D master || true
+forall_repos git checkout -b master --track origin/master
+forall_repos git merge --ff-only sc
+forall_repos git push
+forall_repos git checkout sc
+
+popd > /dev/null
diff --git a/regenerate_i18n.sh b/regenerate_i18n.sh
index 8c13ab6..1e6c300 100755
--- a/regenerate_i18n.sh
+++ b/regenerate_i18n.sh
@@ -9,6 +9,9 @@ pushd "$mydir" > /dev/null
 
 source ./merge_helpers.sh
 
+# Fetch to get upstream strings for current version
+forall_repos git fetch upstream
+
 # Check branch
 check_branch $branch
 forall_repos check_branch $branch