diff --git a/Makefile b/Makefile index fbb47a2..5a897e6 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.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 @@ -43,7 +43,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,12 +60,8 @@ 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 diff --git a/README.md b/README.md index 821ed19..12a7bb2 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,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,10 +48,11 @@ 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
+# apt install vim curl git make gcc g++ python jq libsqlcipher-dev pkg-config libsecret-1-dev libarchive-tools
+
 # curl -sL https://deb.nodesource.com/setup_14.x | bash -
 # apt update
 # apt install nodejs
@@ -75,32 +91,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..2916dee 100644
--- a/configs/sc/config.json
+++ b/configs/sc/config.json
@@ -27,11 +27,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..31c4ce5 100755
--- a/deploy/update-flathub.sh
+++ b/deploy/update-flathub.sh
@@ -23,7 +23,7 @@ git fetch
 git reset --hard origin/master
 
 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"
diff --git a/element-desktop b/element-desktop
index de5f137..aea9cef 160000
--- a/element-desktop
+++ b/element-desktop
@@ -1 +1 @@
-Subproject commit de5f137d4e37c7527596b4d910cb13a23b090dca
+Subproject commit aea9cefa5d59930a831e94104521b70619d6623b
diff --git a/element-web b/element-web
index 615ecdc..416913d 160000
--- a/element-web
+++ b/element-web
@@ -1 +1 @@
-Subproject commit 615ecdc6d663431807884d4bb7c1d66ea684a3c9
+Subproject commit 416913d12060244672c86cc175b6fbbcbfaf759b
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/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/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/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/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/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..f4e03bb 100644
--- a/i18n-overlays/matrix-react-sdk/cs.json
+++ b/i18n-overlays/matrix-react-sdk/cs.json
@@ -9,5 +9,39 @@
     "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 domovském zobrazení.",
+    "Show all rooms in Home": "Ukázat všechny místnosti v domovském zobrazení",
+    "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."
 }
diff --git a/i18n-overlays/matrix-react-sdk/de_DE.json b/i18n-overlays/matrix-react-sdk/de_DE.json
index f7f36b9..02c1ee5 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,39 @@
     "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"
 }
diff --git a/i18n-overlays/matrix-react-sdk/en_EN.json b/i18n-overlays/matrix-react-sdk/en_EN.json
index 13eda4f..8d07295 100644
--- a/i18n-overlays/matrix-react-sdk/en_EN.json
+++ b/i18n-overlays/matrix-react-sdk/en_EN.json
@@ -11,8 +11,36 @@
     "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."
 }
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..a986a4d
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/id.json
@@ -0,0 +1,46 @@
+{
+    "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."
+}
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/lt.json b/i18n-overlays/matrix-react-sdk/lt.json
index cc5bfa9..2b32484 100644
--- a/i18n-overlays/matrix-react-sdk/lt.json
+++ b/i18n-overlays/matrix-react-sdk/lt.json
@@ -3,5 +3,19 @@
     "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."
 }
diff --git a/i18n-overlays/matrix-react-sdk/pt_BR.json b/i18n-overlays/matrix-react-sdk/pt_BR.json
index bdbad79..5bac536 100644
--- a/i18n-overlays/matrix-react-sdk/pt_BR.json
+++ b/i18n-overlays/matrix-react-sdk/pt_BR.json
@@ -3,5 +3,42 @@
     "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"
 }
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..7282f7f
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/sv.json
@@ -0,0 +1,46 @@
+{
+    "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."
+}
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..6702566
--- /dev/null
+++ b/i18n-overlays/matrix-react-sdk/zh_Hans.json
@@ -0,0 +1,43 @@
+{
+    "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": "标记为未读"
+}
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..c696abf 160000
--- a/matrix-js-sdk
+++ b/matrix-js-sdk
@@ -1 +1 @@
-Subproject commit 4bc4575eb65aa68ea8080f5de2072a5949ca8c6d
+Subproject commit c696abff7507dfce8e94a6db14a4b4693895b0e2
diff --git a/matrix-react-sdk b/matrix-react-sdk
index 55874ea..cdc59f3 160000
--- a/matrix-react-sdk
+++ b/matrix-react-sdk
@@ -1 +1 @@
-Subproject commit 55874eaa27ac68daa1fd67f739945cf51551f4ef
+Subproject commit cdc59f3df4d67c36a79c0872499713c256ba068d
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