From 53ce8388f1b31c25728ccfd7cb6f19b28e6a6554 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Fri, 1 Jul 2022 20:05:43 +0100
Subject: [PATCH 01/25] Fix font preloading causing errors on non-root
deployments (#22714)
---
src/vector/index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/vector/index.html b/src/vector/index.html
index 57271b3f7..24694fc46 100644
--- a/src/vector/index.html
+++ b/src/vector/index.html
@@ -52,8 +52,8 @@
<% for (var i=0; i < htmlWebpackPlugin.tags.headTags.length; i++) {
var tag = htmlWebpackPlugin.tags.headTags[i];
var path = tag.attributes && tag.attributes.href;
- if (path.indexOf("Inter") !== -1) { %>
-
+ if (path.includes("/Inter/")) { %>
+
<% }
} %>
From f92b1571174f83409d445f832d7742c7613189bb Mon Sep 17 00:00:00 2001
From: Element Translate Bot
Date: Tue, 5 Jul 2022 14:58:12 +0200
Subject: [PATCH 02/25] Translations update from Weblate (#22679)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Translated using Weblate (Portuguese)
Currently translated at 88.5% (31 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/pt/
* Translated using Weblate (Hebrew)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Slovak)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sk/
* Translated using Weblate (Finnish)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fi/
* Translated using Weblate (Turkish)
Currently translated at 97.1% (34 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/tr/
* Translated using Weblate (Galician)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/gl/
* Added translation using Weblate (Sorani)
* Translated using Weblate (Russian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ru/
* Translated using Weblate (Estonian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/et/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Galician)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/gl/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Persian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fa/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Persian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fa/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (French)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fr/
* Translated using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Bosnian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/bs/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Hindi)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/hi/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Czech)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/cs/
* Translated using Weblate (Galician)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/gl/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/uk/
* Translated using Weblate (Estonian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/et/
* Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/zh_Hant/
* Translated using Weblate (Russian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ru/
* Translated using Weblate (Russian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ru/
* Translated using Weblate (Italian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/it/
* Translated using Weblate (Swedish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sv/
* Translated using Weblate (Indonesian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/id/
* Translated using Weblate (Slovak)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sk/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/es/
* Translated using Weblate (Albanian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sq/
* Translated using Weblate (Dutch)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/nl/
* Added translation using Weblate (Armenian)
* Translated using Weblate (Armenian)
Currently translated at 41.9% (13 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/hy/
* Translated using Weblate (French)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fr/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/hu/
* Translated using Weblate (German)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/de/
* Translated using Weblate (Turkish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/tr/
* Translated using Weblate (Nepali)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ne/
* Translated using Weblate (Nepali)
Currently translated at 3.2% (1 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ne/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/pt_BR/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Esperanto)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/eo/
* Translated using Weblate (Lao)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/lo/
* Translated using Weblate (Uzbek)
Currently translated at 12.9% (4 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/uz/
* Added translation using Weblate (Bengali)
* Translated using Weblate (Bengali (Bangladesh))
Currently translated at 3.2% (1 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/bn_BD/
* Translated using Weblate (Lao)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/lo/
* Translated using Weblate (Bengali)
Currently translated at 6.4% (2 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/bn/
* Translated using Weblate (Vietnamese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/vi/
* Translated using Weblate (Tamil)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ta/
* Translated using Weblate (Polish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/pl/
* Translated using Weblate (Danish)
Currently translated at 96.7% (30 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/da/
* Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/zh_Hans/
* Translated using Weblate (Greek)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/el/
* Translated using Weblate (Arabic)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ar/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/az/
Co-authored-by: Eduardo Ervideira
Co-authored-by: Weblate
Co-authored-by: SPiRiT
Co-authored-by: Jozef Gaal
Co-authored-by: Shi-nobi
Co-authored-by: Mahmut Tuncer
Co-authored-by: Xose M
Co-authored-by: ENIGMA
Co-authored-by: Nikita Epifanov
Co-authored-by: Priit Jõerüüt
Co-authored-by: Suguru Hirahara
Co-authored-by: Sveinn í Felli
Co-authored-by: xmeta
Co-authored-by: nafi3h
Co-authored-by: Alexandre Franke
Co-authored-by: Nermin
Co-authored-by: Arya Bhosale
Co-authored-by: waclaw66
Co-authored-by: Ihor Hordiichuk
Co-authored-by: Jeff Huang
Co-authored-by: oleg-fiksel
Co-authored-by: Dimitriy Ryazantcev
Co-authored-by: random
Co-authored-by: LinAGKar
Co-authored-by: Linerly
Co-authored-by: iaiz
Co-authored-by: Besnik Bleta
Co-authored-by: Johan Smits
Co-authored-by: FIONover
Co-authored-by: Lucas
Co-authored-by: Szimszon
Co-authored-by: joshua
Co-authored-by: Metehan Özyürek
Co-authored-by: Padam Ghimire
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito
Co-authored-by: anoloth
Co-authored-by: Sanjar Barakayev
Co-authored-by: Kominak Halalu
Co-authored-by: trongtran810
Co-authored-by: escix
Co-authored-by: Piotr Strebski
Co-authored-by: Simon
Co-authored-by: a19901201
Co-authored-by: Theo
Co-authored-by: AhmedRN
Co-authored-by: NetanelHarris
Co-authored-by: Nizami
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/i18n/strings/ar.json | 1 +
src/i18n/strings/az.json | 1 +
src/i18n/strings/da.json | 1 +
src/i18n/strings/el.json | 1 +
src/i18n/strings/he.json | 2 ++
src/i18n/strings/pl.json | 3 +++
src/i18n/strings/zh_Hans.json | 1 +
7 files changed, 10 insertions(+)
diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json
index 0a243937e..d85021a72 100644
--- a/src/i18n/strings/ar.json
+++ b/src/i18n/strings/ar.json
@@ -28,5 +28,6 @@
"Failed to start": "فشل البدء",
"Powered by Matrix": "تدعمه «ماترِكس»",
"Use %(brand)s on mobile": "استعمل %(brand)s على المحمول",
+ "Switch to space by number": "التبديل إلى المساحة بالرقم",
"Decentralised, encrypted chat & collaboration powered by $matrixLogo": "محادثة لامركزية، مشفرة & تعمل بواسطة $matrixLogo"
}
diff --git a/src/i18n/strings/az.json b/src/i18n/strings/az.json
index c02d37c35..49ab8753c 100644
--- a/src/i18n/strings/az.json
+++ b/src/i18n/strings/az.json
@@ -10,6 +10,7 @@
"The message from the parser is: %(message)s": "Sözügedən mesaj: %(message)s",
"Dismiss": "Nəzərə almayın",
"Welcome to Element": "Element-ə xoş gəlmişsiniz",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "[matrix] tərəfindən təchiz edilmiş mərkəziləşdirilməmiş, şifrələnmiş çat və əməkdaşlıq platforması",
"Decentralised, encrypted chat & collaboration powered by $matrixLogo": "$matrixLogo tərəfindən dəstəklənən mərkəzləşdirilməmiş ,şifrələnmiş söhbət & əməkdaşlıq",
"Failed to start": "Başlatmaq alınmadı",
"Go to element.io": "element.io saytına keçin",
diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json
index a8042c55d..e2268d3d7 100644
--- a/src/i18n/strings/da.json
+++ b/src/i18n/strings/da.json
@@ -1,5 +1,6 @@
{
"Dismiss": "Afvis",
+ "powered by Matrix": "Drevet af Matrix",
"Unknown device": "Ukendt enhed",
"Welcome to Element": "Velkommen til Element",
"The message from the parser is: %(message)s": "Beskeden fra parseren er: %(message)s",
diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json
index 9267a2d1b..733f3ccd3 100644
--- a/src/i18n/strings/el.json
+++ b/src/i18n/strings/el.json
@@ -28,5 +28,6 @@
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"Use %(brand)s on mobile": "Χρήση %(brand)s σε κινητό",
+ "Switch to space by number": "Εναλλαγή σε space με αριθμό",
"Decentralised, encrypted chat & collaboration powered by $matrixLogo": "Αποκεντρωμένη, κρυπτογραφημένη συνομιλία και συνεργασία χρησιμοποιώντας το $matrixLogo"
}
diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json
index db6e5981e..b7597ac09 100644
--- a/src/i18n/strings/he.json
+++ b/src/i18n/strings/he.json
@@ -27,6 +27,8 @@
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s שולחן עבודה %(platformName)s",
"The message from the parser is: %(message)s": "ההודעה מהמנתח היא: %(message)s",
+ "Missing indexeddb worker script!": "סקריפט indexeddb worker חסר!",
+ "Switch to space by number": "עבור 'למרחב' על פי המספר שלו",
"Use %(brand)s on mobile": "השתמש ב-%(brand)s במכשיר הנייד",
"Decentralised, encrypted chat & collaboration powered by $matrixLogo": "צ'אט מבוזר ומוצפן & מופעל בשיתוף פעולה ע\"י $matrixLogo"
}
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index c133379fc..86082f66e 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -28,5 +28,8 @@
"Your Element is misconfigured": "Element jest nieprawidłowo skonfigurowany",
"Powered by Matrix": "Zasilane przez Matrix",
"Use %(brand)s on mobile": "Użyj %(brand)s w telefonie",
+ "Switch to space by number": "Przełącz na przestrzeń według numeru",
+ "Next recently visited room or community": "Następne ostatnio odwiedzone pokoje i społeczności",
+ "Previous recently visited room or community": "Ostatnio odwiedzone pokoje i społeczności",
"Decentralised, encrypted chat & collaboration powered by $matrixLogo": "Zdecentralizowany, szyfrowany czat i współpraca wspierana przez $matrixLogo"
}
diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json
index c3a5c27ea..889102df8 100644
--- a/src/i18n/strings/zh_Hans.json
+++ b/src/i18n/strings/zh_Hans.json
@@ -28,5 +28,6 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "当前浏览器不支持 %(brand)s 所需的高级浏览器特性。",
"Powered by Matrix": "由 Matrix 驱动",
"Use %(brand)s on mobile": "在移动设备上使用 %(brand)s",
+ "Switch to space by number": "按数字切换空间",
"Decentralised, encrypted chat & collaboration powered by $matrixLogo": "去中心化、加密的聊天与协作,威力本源 $matrixLogo"
}
From 10700812171604e29ae173aee3795c0febf9a85a Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 5 Jul 2022 14:36:48 +0100
Subject: [PATCH 03/25] Reset matrix-js-sdk back to develop branch
---
package.json | 2 +-
yarn.lock | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 323fe4147..f1727d9be 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
"gfm.css": "^1.1.2",
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
- "matrix-js-sdk": "19.0.0",
+ "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
"matrix-react-sdk": "3.48.0",
"matrix-widget-api": "^0.1.0-beta.18",
"prop-types": "^15.7.2",
diff --git a/yarn.lock b/yarn.lock
index 64158dd52..6a27f60c4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8392,6 +8392,22 @@ matrix-js-sdk@19.0.0:
request "^2.88.2"
unhomoglyph "^1.0.6"
+"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
+ version "19.0.0"
+ resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/85a96c6467c24b031ee25d5fbb8d9fe62edbbe49"
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ another-json "^0.2.0"
+ browser-request "^0.3.3"
+ bs58 "^4.0.1"
+ content-type "^1.0.4"
+ loglevel "^1.7.1"
+ matrix-events-sdk "^0.0.1-beta.7"
+ p-retry "^4.5.0"
+ qs "^6.9.6"
+ request "^2.88.2"
+ unhomoglyph "^1.0.6"
+
matrix-mock-request@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/matrix-mock-request/-/matrix-mock-request-2.0.0.tgz#653c258eb3b6dfbf6a48418e8633a377c82de3ab"
From f03200f8e639917656aca1ac742cbbdfd4691870 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 5 Jul 2022 14:36:58 +0100
Subject: [PATCH 04/25] Reset matrix-react-sdk back to develop branch
---
package.json | 2 +-
yarn.lock | 24 +++---------------------
2 files changed, 4 insertions(+), 22 deletions(-)
diff --git a/package.json b/package.json
index f1727d9be..cd3afdbac 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
- "matrix-react-sdk": "3.48.0",
+ "matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop",
"matrix-widget-api": "^0.1.0-beta.18",
"prop-types": "^15.7.2",
"react": "17.0.2",
diff --git a/yarn.lock b/yarn.lock
index 6a27f60c4..ed8d41c05 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8375,23 +8375,6 @@ matrix-events-sdk@^0.0.1-beta.7:
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.7.tgz#5ffe45eba1f67cc8d7c2377736c728b322524934"
integrity sha512-9jl4wtWanUFSy2sr2lCjErN/oC8KTAtaeaozJtrgot1JiQcEI4Rda9OLgQ7nLKaqb4Z/QUx/fR3XpDzm5Jy1JA==
-matrix-js-sdk@19.0.0:
- version "19.0.0"
- resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-19.0.0.tgz#c4be8365d08126976a1a3de053fe12b5dd7d4a0d"
- integrity sha512-UWFEhV3XlBRY/9dLKlFgBzd9vynN+U4ratE0BVvM3Zw8FQa+a8rrDwJRIpJnWoxDB7IjJ188A0TxFqzxkQoEBQ==
- dependencies:
- "@babel/runtime" "^7.12.5"
- another-json "^0.2.0"
- browser-request "^0.3.3"
- bs58 "^4.0.1"
- content-type "^1.0.4"
- loglevel "^1.7.1"
- matrix-events-sdk "^0.0.1-beta.7"
- p-retry "^4.5.0"
- qs "^6.9.6"
- request "^2.88.2"
- unhomoglyph "^1.0.6"
-
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
version "19.0.0"
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/85a96c6467c24b031ee25d5fbb8d9fe62edbbe49"
@@ -8415,10 +8398,9 @@ matrix-mock-request@^2.0.0:
dependencies:
expect "^1.20.2"
-matrix-react-sdk@3.48.0:
+"matrix-react-sdk@github:matrix-org/matrix-react-sdk#develop":
version "3.48.0"
- resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.48.0.tgz#c64f40f3777fb658805b3ffb806b7f789175b98d"
- integrity sha512-7GNy+2O9AUDSjLbJX2Fi+WkyL4q8QvSzXIvkCOftkDjV1R7BTpNHG5ZwINbzXKsoca6fx+4zoV/k37H7RsgvCg==
+ resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/bdc05ec2682748ab26daae74096f15fe8db52294"
dependencies:
"@babel/runtime" "^7.12.5"
"@matrix-org/analytics-events" "^0.1.1"
@@ -8457,7 +8439,7 @@ matrix-react-sdk@3.48.0:
maplibre-gl "^1.15.2"
matrix-encrypt-attachment "^1.0.3"
matrix-events-sdk "^0.0.1-beta.7"
- matrix-js-sdk "19.0.0"
+ matrix-js-sdk "github:matrix-org/matrix-js-sdk#develop"
matrix-widget-api "^0.1.0-beta.18"
minimist "^1.2.5"
opus-recorder "^8.0.3"
From f1e5b95554b2c7f1286d6b50a11581b0da65d950 Mon Sep 17 00:00:00 2001
From: Travis Ralston
Date: Tue, 5 Jul 2022 20:26:54 +0200
Subject: [PATCH 05/25] Wire up module loading to application startup (#21703)
* Early module loader bundler
* Add a module installer script
* Add dev-friendly docs
* Add real module-api dependency
* Speed up `yarn add` for mulitple modules
* Fix version check for modules
* Appease the linter
---
.eslintignore | 2 +
.eslintrc.js | 2 +-
.gitignore | 3 +
build_config.sample.yaml | 25 ++++
docs/modules.md | 48 ++++++++
module_system/BuildConfig.ts | 33 ++++++
module_system/installer.ts | 191 +++++++++++++++++++++++++++++++
module_system/scripts/install.ts | 21 ++++
package.json | 14 ++-
src/vector/index.ts | 7 ++
src/vector/init.tsx | 14 ++-
tsconfig.module_system.json | 14 +++
yarn.lock | 19 +++
13 files changed, 386 insertions(+), 7 deletions(-)
create mode 100644 build_config.sample.yaml
create mode 100644 docs/modules.md
create mode 100644 module_system/BuildConfig.ts
create mode 100644 module_system/installer.ts
create mode 100644 module_system/scripts/install.ts
create mode 100644 tsconfig.module_system.json
diff --git a/.eslintignore b/.eslintignore
index e5cc47698..8a5f170a5 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,5 @@
src/vector/modernizr.js
# Legacy skinning file that some people might still have
src/component-index.js
+# Auto-generated file
+src/modules.ts
diff --git a/.eslintrc.js b/.eslintrc.js
index b6f2693ab..a3dd5073c 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -18,7 +18,7 @@ module.exports = {
}
},
overrides: [{
- files: ["src/**/*.{ts,tsx}"],
+ files: ["src/**/*.{ts,tsx}", "module_system/**/*.{ts,tsx}"],
extends: [
"plugin:matrix-org/typescript",
"plugin:matrix-org/react",
diff --git a/.gitignore b/.gitignore
index 9d86780de..b279ef0bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,6 @@ electron/pub
.vscode/
.env
/coverage
+# Auto-generated file
+/src/modules.ts
+/build_config.yaml
diff --git a/build_config.sample.yaml b/build_config.sample.yaml
new file mode 100644
index 000000000..a41e991a5
--- /dev/null
+++ b/build_config.sample.yaml
@@ -0,0 +1,25 @@
+# A sample build_config.yaml to supply to Element Web's build pipeline,
+# enabling custom functionality at compile time. Copy this file to
+# `build_config.yaml` in the same directory to use, as you would with
+# `config.json`.
+#
+# Note: The vast majority of users DO NOT need this. If you are looking
+# to build your own Element Web as seen on app.element.io or similar then
+# this is not required.
+#
+# This config file does become required if you are looking to add runtime
+# functionality to Element Web, such as customisation endpoints and modules.
+#
+# Over time we might expand this config to better support some use cases.
+# Watch the release notes for features which might impact this config.
+
+# The modules to install. See ./docs/modules.md for more information on
+# what modules are.
+#
+# The values of this are provided to `yarn add` for inclusion.
+modules:
+ # An example of pulling a module from NPM
+ - "@vector-im/element-web-ilag-module@^0.0.1"
+
+ # An example of pulling a module from github
+ - "github:vector-im/element-web-ilag-module#main"
diff --git a/docs/modules.md b/docs/modules.md
new file mode 100644
index 000000000..d5c101d16
--- /dev/null
+++ b/docs/modules.md
@@ -0,0 +1,48 @@
+# Module system
+
+The module system in Element Web is a way to add or modify functionality of Element Web itself, bundled at compile time
+for the app. This means that modules are loaded as part of the `yarn build` process but have an effect on user experience
+at runtime.
+
+## Installing modules
+
+If you already have a module you want to install, such as our [ILAG Module](https://github.com/vector-im/element-web-ilag-module),
+then copy `build_config.sample.yaml` to `build_config.yaml` in the same directory. In your new `build_config.yaml` simply
+add the reference to the module as described by the sample file, using the same syntax you would for `yarn add`:
+
+```yaml
+modules:
+ # Our module happens to be published on NPM, so we use that syntax to reference it.
+ - "@vector-im/element-web-ilag-module@latest"
+```
+
+Then build the app as you normally would: `yarn build` or `yarn dist` (if compatible on your platform). If you are building
+the Docker image then ensure your `build_config.yaml` ends up in the build directory. Usually this works fine if you use
+the current directory as the build context (the `.` in `docker build -t my-element-web .`).
+
+## Writing modules
+
+While writing modules is meant to be easy, not everything is possible yet. For modules which want to do something we haven't
+exposed in the module API, the module API will need to be updated. This means a PR to both the
+[`matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk) and [`matrix-react-sdk-module-api`](https://github.com/matrix-org/matrix-react-sdk-module-api).
+
+Once your change to the module API is accepted, the `@matrix-org/react-sdk-module-api` dependency gets updated at the
+`matrix-react-sdk` and `element-web` layers (usually by us, the maintainers) to ensure your module can operate.
+
+If you're not adding anything to the module API, or your change was accepted per above, then start off with a clone of
+our [ILAG module](https://github.com/vector-im/element-web-ilag-module) which will give you a general idea for what the
+structure of a module is and how it works.
+
+The following requirements are key for any module:
+1. The module must depend on `@matrix-org/react-sdk-module-api` (usually as a dev dependency).
+2. The module's `main` entrypoint must have a `default` export for the `RuntimeModule` instance, supporting a constructor
+ which takes a single parameter: a `ModuleApi` instance. This instance is passed to `super()`.
+3. The module must be deployed in a way where `yarn add` can access it, as that is how the build system will try to
+ install it. Note that while this is often NPM, it can also be a GitHub/GitLab repo or private NPM registry.
+
+... and that's pretty much it. As with any code, please be responsible and call things in line with the documentation.
+Both `RuntimeModule` and `ModuleApi` have extensive documentation to describe what is proper usage and how to set things
+up.
+
+If you have any questions then please visit [#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) on
+Matrix and we'll help as best we can.
diff --git a/module_system/BuildConfig.ts b/module_system/BuildConfig.ts
new file mode 100644
index 000000000..59e17d0da
--- /dev/null
+++ b/module_system/BuildConfig.ts
@@ -0,0 +1,33 @@
+/*
+Copyright 2022 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import * as YAML from "yaml";
+import * as fs from "fs";
+
+export type BuildConfig = {
+ // Dev note: make everything here optional for user safety. Invalid
+ // configs are very possible.
+
+ // The module references to include in the build.
+ modules?: string[];
+};
+
+export function readBuildConfig(): BuildConfig {
+ if (fs.existsSync("./build_config.yaml")) {
+ return YAML.parse(fs.readFileSync("./build_config.yaml", "utf-8"));
+ }
+ return {}; // no config
+}
diff --git a/module_system/installer.ts b/module_system/installer.ts
new file mode 100644
index 000000000..021550fde
--- /dev/null
+++ b/module_system/installer.ts
@@ -0,0 +1,191 @@
+/*
+Copyright 2022 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import * as fs from "fs";
+import * as childProcess from "child_process";
+import * as semver from "semver";
+
+import { BuildConfig } from "./BuildConfig";
+
+// This expects to be run from ./scripts/install.ts
+
+const moduleApiDepName = "@matrix-org/react-sdk-module-api";
+
+const MODULES_TS_HEADER = `
+/*
+ * THIS FILE IS AUTO-GENERATED
+ * You can edit it you like, but your changes will be overwritten,
+ * so you'd just be trying to swim upstream like a salmon.
+ * You are not a salmon.
+ */
+
+import { RuntimeModule } from "@matrix-org/react-sdk-module-api/lib/RuntimeModule";
+`;
+const MODULES_TS_DEFINITIONS = `
+export const INSTALLED_MODULES: RuntimeModule[] = [];
+`;
+
+export function installer(config: BuildConfig): void {
+ if (!config.modules?.length) {
+ // nothing to do
+ writeModulesTs(MODULES_TS_HEADER + MODULES_TS_DEFINITIONS);
+ return;
+ }
+
+ let exitCode = 0;
+
+ // We cheat a bit and store the current package.json and lockfile so we can safely
+ // run `yarn add` without creating extra committed files for people. We restore
+ // these files by simply overwriting them when we're done.
+ const packageDeps = readCurrentPackageDetails();
+
+ // Record which optional dependencies there are currently, if any, so we can exclude
+ // them from our "must be a module" assumption later on.
+ const currentOptDeps = getOptionalDepNames(packageDeps.packageJson);
+
+ try {
+ // Install the modules with yarn
+ const yarnAddRef = config.modules.join(" ");
+ callYarnAdd(yarnAddRef); // install them all at once
+
+ // Grab the optional dependencies again and exclude what was there already. Everything
+ // else must be a module, we assume.
+ const pkgJsonStr = fs.readFileSync("./package.json", "utf-8");
+ const optionalDepNames = getOptionalDepNames(pkgJsonStr);
+ const installedModules = optionalDepNames.filter(d => !currentOptDeps.includes(d));
+
+ // Ensure all the modules are compatible. We check them all and report at the end to
+ // try and save the user some time debugging this sort of failure.
+ const ourApiVersion = getTopLevelDependencyVersion(moduleApiDepName);
+ const incompatibleNames: string[] = [];
+ for (const moduleName of installedModules) {
+ const modApiVersion = getModuleApiVersionFor(moduleName);
+ if (!isModuleVersionCompatible(ourApiVersion, modApiVersion)) {
+ incompatibleNames.push(moduleName);
+ }
+ }
+ if (incompatibleNames.length > 0) {
+ console.error(
+ "The following modules are not compatible with this version of element-web. Please update the module " +
+ "references and try again.",
+ JSON.stringify(incompatibleNames, null, 4), // stringify to get prettier/complete output
+ );
+ exitCode = 1;
+ return; // hit the finally{} block before exiting
+ }
+
+ // If we reach here, everything seems fine. Write modules.ts and log some output
+ // Note: we compile modules.ts in two parts for developer friendliness if they
+ // happen to look at it.
+ console.log("The following modules have been installed: ", installedModules);
+ let modulesTsHeader = MODULES_TS_HEADER;
+ let modulesTsDefs = MODULES_TS_DEFINITIONS;
+ let index = 0;
+ for (const moduleName of installedModules) {
+ const importName = `Module${++index}`;
+ modulesTsHeader += `import ${importName} from "${moduleName}";\n`;
+ modulesTsDefs += `INSTALLED_MODULES.push(${importName});\n`;
+ }
+ writeModulesTs(modulesTsHeader + modulesTsDefs);
+ console.log("Done installing modules");
+ } finally {
+ // Always restore package details (or at least try to)
+ writePackageDetails(packageDeps);
+
+ if (exitCode > 0) {
+ process.exit(exitCode);
+ }
+ }
+}
+
+type RawDependencies = {
+ lockfile: string;
+ packageJson: string;
+};
+
+function readCurrentPackageDetails(): RawDependencies {
+ return {
+ lockfile: fs.readFileSync("./yarn.lock", "utf-8"),
+ packageJson: fs.readFileSync("./package.json", "utf-8"),
+ };
+}
+
+function writePackageDetails(deps: RawDependencies) {
+ fs.writeFileSync("./yarn.lock", deps.lockfile, "utf-8");
+ fs.writeFileSync("./package.json", deps.packageJson, "utf-8");
+}
+
+function callYarnAdd(dep: string) {
+ // Add the module to the optional dependencies section just in case something
+ // goes wrong in restoring the original package details.
+ childProcess.execSync(`yarn add -O ${dep}`, {
+ env: process.env,
+ stdio: ['inherit', 'inherit', 'inherit'],
+ });
+}
+
+function getOptionalDepNames(pkgJsonStr: string): string[] {
+ return Object.keys(JSON.parse(pkgJsonStr)?.['optionalDependencies'] ?? {});
+}
+
+function findDepVersionInPackageJson(dep: string, pkgJsonStr: string): string {
+ const pkgJson = JSON.parse(pkgJsonStr);
+ const packages = {
+ ...(pkgJson['optionalDependencies'] ?? {}),
+ ...(pkgJson['devDependencies'] ?? {}),
+ ...(pkgJson['dependencies'] ?? {}),
+ };
+ return packages[dep];
+}
+
+function getTopLevelDependencyVersion(dep: string): string {
+ const dependencyTree = JSON.parse(childProcess.execSync(`npm list ${dep} --depth=0 --json`, {
+ env: process.env,
+ stdio: ['inherit', 'pipe', 'pipe'],
+ }).toString('utf-8'));
+
+ /*
+ What a dependency tree looks like:
+ {
+ "version": "1.10.13",
+ "name": "element-web",
+ "dependencies": {
+ "@matrix-org/react-sdk-module-api": {
+ "version": "0.0.1",
+ "resolved": "file:../../../matrix-react-sdk-module-api"
+ }
+ }
+ }
+ */
+
+ return dependencyTree["dependencies"][dep]["version"];
+}
+
+function getModuleApiVersionFor(moduleName: string): string {
+ // We'll just pretend that this isn't highly problematic...
+ // Yarn is fairly stable in putting modules in a flat hierarchy, at least.
+ const pkgJsonStr = fs.readFileSync(`./node_modules/${moduleName}/package.json`, "utf-8");
+ return findDepVersionInPackageJson(moduleApiDepName, pkgJsonStr);
+}
+
+function isModuleVersionCompatible(ourApiVersion: string, moduleApiVersion: string): boolean {
+ if (!moduleApiVersion) return false;
+ return semver.satisfies(ourApiVersion, moduleApiVersion);
+}
+
+function writeModulesTs(content: string) {
+ fs.writeFileSync("./src/modules.ts", content, "utf-8");
+}
diff --git a/module_system/scripts/install.ts b/module_system/scripts/install.ts
new file mode 100644
index 000000000..a3de3c46d
--- /dev/null
+++ b/module_system/scripts/install.ts
@@ -0,0 +1,21 @@
+/*
+Copyright 2022 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import { readBuildConfig } from "../BuildConfig";
+import { installer } from "../installer";
+
+const buildConf = readBuildConfig();
+installer(buildConf);
diff --git a/package.json b/package.json
index cd3afdbac..279d27c12 100644
--- a/package.json
+++ b/package.json
@@ -35,25 +35,27 @@
"build-stats": "yarn clean && yarn build:genfiles && yarn build:bundle-stats",
"build:jitsi": "node scripts/build-jitsi.js",
"build:res": "node scripts/copy-res.js",
- "build:genfiles": "yarn build:res && yarn build:jitsi",
+ "build:genfiles": "yarn build:res && yarn build:jitsi && yarn build:module_system",
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
"build:bundle": "webpack --progress --bail --mode production",
"build:bundle-stats": "webpack --progress --bail --mode production --json > webpack-stats.json",
+ "build:module_system": "tsc --project ./tsconfig.module_system.json && node ./lib/module_system/scripts/install.js",
"dist": "scripts/package.sh",
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"",
"start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js --https\"",
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w",
"start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --mode development --disable-host-check --hot",
"lint": "yarn lint:types && yarn lint:js && yarn lint:style",
- "lint:js": "eslint --max-warnings 0 src",
- "lint:js-fix": "eslint --fix src",
- "lint:types": "tsc --noEmit --jsx react",
+ "lint:js": "eslint --max-warnings 0 src module_system",
+ "lint:js-fix": "eslint --fix src module_system",
+ "lint:types": "tsc --noEmit --jsx react && tsc --noEmit --project ./tsconfig.module_system.json",
"lint:style": "stylelint \"res/css/**/*.scss\"",
"test": "jest",
"coverage": "yarn test --coverage"
},
"dependencies": {
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz",
+ "@matrix-org/react-sdk-module-api": "^0.0.3",
"browser-request": "^0.3.3",
"gfm.css": "^1.1.2",
"jsrsasign": "^10.5.25",
@@ -144,6 +146,7 @@
"postcss-strip-inline-comments": "^0.1.5",
"raw-loader": "^4.0.2",
"rimraf": "^3.0.2",
+ "semver": "^7.3.7",
"shell-escape": "^0.2.0",
"simple-proxy-agent": "^1.1.0",
"string-replace-loader": "2",
@@ -157,7 +160,8 @@
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.2",
"worker-loader": "^2.0.0",
- "worklet-loader": "^2.0.0"
+ "worklet-loader": "^2.0.0",
+ "yaml": "^2.0.1"
},
"resolutions": {
"@types/react": "17.0.14"
diff --git a/src/vector/index.ts b/src/vector/index.ts
index e27129d9a..5b60f324c 100644
--- a/src/vector/index.ts
+++ b/src/vector/index.ts
@@ -113,6 +113,7 @@ async function start() {
loadLanguage,
loadTheme,
loadApp,
+ loadModules,
showError,
showIncompatibleBrowser,
_t,
@@ -155,6 +156,11 @@ async function start() {
// now that the config is ready, try to persist logs
const persistLogsPromise = setupLogStorage();
+ // Load modules before language to ensure any custom translations are respected, and any app
+ // startup functionality is run
+ const loadModulesPromise = loadModules();
+ await settled(loadModulesPromise);
+
// Load language after loading config.json so that settingsDefaults.language can be applied
const loadLanguagePromise = loadLanguage();
// as quickly as we possibly can, set a default theme...
@@ -209,6 +215,7 @@ async function start() {
// assert things started successfully
// ##################################
await loadOlmPromise;
+ await loadModulesPromise;
await loadThemePromise;
await loadLanguagePromise;
diff --git a/src/vector/init.tsx b/src/vector/init.tsx
index 0e43700ae..72dcd6b07 100644
--- a/src/vector/init.tsx
+++ b/src/vector/init.tsx
@@ -2,7 +2,7 @@
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
-Copyright 2018 - 2021 New Vector Ltd
+Copyright 2018 - 2022 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -29,11 +29,15 @@ import PlatformPeg from "matrix-react-sdk/src/PlatformPeg";
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
import { setTheme } from "matrix-react-sdk/src/theme";
import { logger } from "matrix-js-sdk/src/logger";
+import { ModuleRunner } from "matrix-react-sdk/src/modules/ModuleRunner";
import ElectronPlatform from "./platform/ElectronPlatform";
import PWAPlatform from "./platform/PWAPlatform";
import WebPlatform from "./platform/WebPlatform";
import { initRageshake, initRageshakeStore } from "./rageshakesetup";
+// eslint-disable-next-line @typescript-eslint/ban-ts-comment
+// @ts-ignore - this path is created at runtime and therefore won't exist at typecheck time
+import { INSTALLED_MODULES } from "../modules";
export const rageshakePromise = initRageshake();
@@ -157,4 +161,12 @@ export async function showIncompatibleBrowser(onAccept) {
document.getElementById('matrixchat'));
}
+export async function loadModules() {
+ for (const InstalledModule of INSTALLED_MODULES) {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore - we know the constructor exists even if TypeScript can't be convinced of that
+ ModuleRunner.instance.registerModule((api) => new InstalledModule(api));
+ }
+}
+
export const _t = languageHandler._t;
diff --git a/tsconfig.module_system.json b/tsconfig.module_system.json
new file mode 100644
index 000000000..2b656d4df
--- /dev/null
+++ b/tsconfig.module_system.json
@@ -0,0 +1,14 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "jsx": "preserve",
+ "declaration": false,
+ "outDir": "./lib/module_system",
+ "lib": [
+ "es2019"
+ ]
+ },
+ "include": [
+ "./module_system/**/*.ts"
+ ]
+}
diff --git a/yarn.lock b/yarn.lock
index ed8d41c05..f586f3ca5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1094,6 +1094,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.17.9":
+ version "7.18.3"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4"
+ integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/template@^7.16.7", "@babel/template@^7.3.3":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
@@ -1514,6 +1521,13 @@
version "3.2.8"
resolved "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz#8d53636d045e1776e2a2ec6613e57330dd9ce856"
+"@matrix-org/react-sdk-module-api@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/@matrix-org/react-sdk-module-api/-/react-sdk-module-api-0.0.3.tgz#a7ac1b18a72d18d08290b81fa33b0d8d00a77d2b"
+ integrity sha512-jQmLhVIanuX0g7Jx1OIqlzs0kp72PfSpv3umi55qVPYcAPQmO252AUs0vncatK8O4e013vohdnNhly19a/kmLQ==
+ dependencies:
+ "@babel/runtime" "^7.17.9"
+
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -13436,6 +13450,11 @@ yaml@^1.10.0:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yaml@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.1.tgz#71886d6021f3da28169dbefde78d4dd0f8d83650"
+ integrity sha512-1NpAYQ3wjzIlMs0mgdBmYzLkFgWBIWrzYVDYfrixhoFNNgJ444/jT2kUT2sicRbJES3oQYRZugjB6Ro8SjKeFg==
+
yargs-parser@^13.1.2:
version "13.1.2"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
From 2032668e3a29a0d7790a43560013ed752c593828 Mon Sep 17 00:00:00 2001
From: Travis Ralston
Date: Tue, 5 Jul 2022 21:09:26 +0200
Subject: [PATCH 06/25] Add node to the tsconfig settings for the module system
(#22740)
---
tsconfig.module_system.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tsconfig.module_system.json b/tsconfig.module_system.json
index 2b656d4df..e5e8d22b5 100644
--- a/tsconfig.module_system.json
+++ b/tsconfig.module_system.json
@@ -6,6 +6,9 @@
"outDir": "./lib/module_system",
"lib": [
"es2019"
+ ],
+ "types": [
+ "node"
]
},
"include": [
From 688dbc6cbab62c3562ddd7d68fdf4c7d31595160 Mon Sep 17 00:00:00 2001
From: Johannes Marbach
Date: Wed, 6 Jul 2022 20:40:22 +0200
Subject: [PATCH 07/25] Enable URL tooltips on hover for Element Desktop
(#22286)
* Enable URL tooltips for Element Desktop
Closes: #6532
Signed-off-by: Johannes Marbach
* Fix access level
Co-authored-by: Travis Ralston
* Add explicit access level where it exists in base class
* Appease the linker
Co-authored-by: Travis Ralston
---
src/vector/platform/ElectronPlatform.tsx | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/vector/platform/ElectronPlatform.tsx b/src/vector/platform/ElectronPlatform.tsx
index 831288aed..ee26b35f0 100644
--- a/src/vector/platform/ElectronPlatform.tsx
+++ b/src/vector/platform/ElectronPlatform.tsx
@@ -238,6 +238,10 @@ export default class ElectronPlatform extends VectorBasePlatform {
electron.send('loudNotification');
}
+ public needsUrlTooltips(): boolean {
+ return true;
+ }
+
public async getAppVersion(): Promise {
return this.ipc.call('getAppVersion');
}
From a4f9e7adad81b7a5bbdc57d7ffa1bcc87d416175 Mon Sep 17 00:00:00 2001
From: Travis Ralston
Date: Thu, 7 Jul 2022 21:19:08 +0200
Subject: [PATCH 08/25] Build the module system on `yarn start` (#22773)
So developers can actually run the app with an empty modules file.
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 279d27c12..ad358a1ed 100644
--- a/package.json
+++ b/package.json
@@ -41,7 +41,7 @@
"build:bundle-stats": "webpack --progress --bail --mode production --json > webpack-stats.json",
"build:module_system": "tsc --project ./tsconfig.module_system.json && node ./lib/module_system/scripts/install.js",
"dist": "scripts/package.sh",
- "start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"",
+ "start": "yarn build:module_system && concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"",
"start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js --https\"",
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w",
"start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --mode development --disable-host-check --hot",
From 017dfb660683b1eb804df65a4900488f5dda566c Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Mon, 11 Jul 2022 13:22:37 +0100
Subject: [PATCH 09/25] Write additional tests (#22802)
* Write additional tests
* Make Sonar happier
---
src/favicon.ts | 10 ++---
src/vector/init.tsx | 8 ++--
src/vector/platform/IPCManager.ts | 2 +-
src/vector/platform/VectorBasePlatform.ts | 3 +-
src/vector/platform/WebPlatform.ts | 2 +-
src/vector/rageshakesetup.ts | 2 +-
src/vector/routing.ts | 2 +-
test/unit-tests/vector/getconfig-test.ts | 26 ++++++++-----
.../vector/platform/PWAPlatform-test.ts | 33 ++++++++++++++++
.../vector/platform/WebPlatform-test.ts | 39 +++++++++++--------
10 files changed, 87 insertions(+), 40 deletions(-)
create mode 100644 test/unit-tests/vector/platform/PWAPlatform-test.ts
diff --git a/src/favicon.ts b/src/favicon.ts
index bec13c786..2212d2aad 100644
--- a/src/favicon.ts
+++ b/src/favicon.ts
@@ -54,7 +54,7 @@ export default class Favicon {
private isReady = false;
// callback to run once isReady is asserted, allows for a badge to be queued for when it can be shown
- private readyCb = () => {};
+ private readyCb?: () => void;
constructor(params: Partial = {}) {
this.params = { ...defaults, ...params };
@@ -180,7 +180,7 @@ export default class Favicon {
private ready() {
if (this.isReady) return;
this.isReady = true;
- this.readyCb();
+ this.readyCb?.();
}
private setIcon(canvas) {
@@ -230,9 +230,9 @@ export default class Favicon {
private static getLinks() {
const icons: HTMLLinkElement[] = [];
const links = window.document.getElementsByTagName("head")[0].getElementsByTagName("link");
- for (let i = 0; i < links.length; i++) {
- if ((/(^|\s)icon(\s|$)/i).test(links[i].getAttribute("rel"))) {
- icons.push(links[i]);
+ for (const link of links) {
+ if ((/(^|\s)icon(\s|$)/i).test(link.getAttribute("rel"))) {
+ icons.push(link);
}
}
return icons;
diff --git a/src/vector/init.tsx b/src/vector/init.tsx
index 72dcd6b07..d8e79dde2 100644
--- a/src/vector/init.tsx
+++ b/src/vector/init.tsx
@@ -92,8 +92,8 @@ export function loadOlm(): Promise {
locateFile: () => olmWasmPath,
}).then(() => {
logger.log("Using WebAssembly Olm");
- }).catch((e) => {
- logger.log("Failed to load Olm: trying legacy version", e);
+ }).catch((wasmLoadError) => {
+ logger.log("Failed to load Olm: trying legacy version", wasmLoadError);
return new Promise((resolve, reject) => {
const s = document.createElement('script');
s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too
@@ -106,8 +106,8 @@ export function loadOlm(): Promise {
return window.Olm.init();
}).then(() => {
logger.log("Using legacy Olm");
- }).catch((e) => {
- logger.log("Both WebAssembly and asm.js Olm failed!", e);
+ }).catch((legacyLoadError) => {
+ logger.log("Both WebAssembly and asm.js Olm failed!", legacyLoadError);
});
});
}
diff --git a/src/vector/platform/IPCManager.ts b/src/vector/platform/IPCManager.ts
index c0ceda64e..d25fe0af6 100644
--- a/src/vector/platform/IPCManager.ts
+++ b/src/vector/platform/IPCManager.ts
@@ -48,7 +48,7 @@ export class IPCManager {
return deferred.promise;
}
- private onIpcReply = (ev: {}, payload: IPCPayload): void => {
+ private onIpcReply = (_ev: {}, payload: IPCPayload): void => {
if (payload.id === undefined) {
logger.warn("Ignoring IPC reply with no ID");
return;
diff --git a/src/vector/platform/VectorBasePlatform.ts b/src/vector/platform/VectorBasePlatform.ts
index b6e78629e..cca39ea45 100644
--- a/src/vector/platform/VectorBasePlatform.ts
+++ b/src/vector/platform/VectorBasePlatform.ts
@@ -47,7 +47,8 @@ export default abstract class VectorBasePlatform extends BasePlatform {
if (this._favicon) {
return this._favicon;
}
- return this._favicon = new Favicon();
+ this._favicon = new Favicon();
+ return this._favicon;
}
private updateFavicon() {
diff --git a/src/vector/platform/WebPlatform.ts b/src/vector/platform/WebPlatform.ts
index bef9c51d3..77be97ce4 100644
--- a/src/vector/platform/WebPlatform.ts
+++ b/src/vector/platform/WebPlatform.ts
@@ -80,7 +80,7 @@ export default class WebPlatform extends VectorBasePlatform {
// annoyingly, the latest spec says this returns a
// promise, but this is only supported in Chrome 46
// and Firefox 47, so adapt the callback API.
- return new Promise(function(resolve, reject) {
+ return new Promise(function(resolve) {
window.Notification.requestPermission((result) => {
resolve(result);
});
diff --git a/src/vector/rageshakesetup.ts b/src/vector/rageshakesetup.ts
index d7dc3d05f..cddd7adc9 100644
--- a/src/vector/rageshakesetup.ts
+++ b/src/vector/rageshakesetup.ts
@@ -39,7 +39,7 @@ export function initRageshake() {
logger.log("To fix line numbers in Chrome: " +
"Meatball menu → Settings → Ignore list → Add /rageshake\\.js$");
- window.addEventListener('beforeunload', (e) => {
+ window.addEventListener('beforeunload', () => {
logger.log('element-web closing');
// try to flush the logs to indexeddb
rageshake.flush();
diff --git a/src/vector/routing.ts b/src/vector/routing.ts
index 73d579417..d2633cb8e 100644
--- a/src/vector/routing.ts
+++ b/src/vector/routing.ts
@@ -41,7 +41,7 @@ function routeUrl(location: Location) {
(window.matrixChat as MatrixChatType).showScreen(s.screen, s.params);
}
-function onHashChange(ev: HashChangeEvent) {
+function onHashChange() {
if (decodeURIComponent(window.location.hash) === lastLocationHashSet) {
// we just set this: no need to route it!
return;
diff --git a/test/unit-tests/vector/getconfig-test.ts b/test/unit-tests/vector/getconfig-test.ts
index 87de15a7d..360b888d8 100644
--- a/test/unit-tests/vector/getconfig-test.ts
+++ b/test/unit-tests/vector/getconfig-test.ts
@@ -48,16 +48,16 @@ describe('getVectorConfig()', () => {
it('requests specific config for document domain', async () => {
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(specificConfig))
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
await getVectorConfig();
expect(request.mock.calls[0][0]).toEqual({ method: "GET", url: 'config.app.element.io.json', qs: { cachebuster: now } })
});
-
+
it('adds trailing slash to relativeLocation when not an empty string', async () => {
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(specificConfig))
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
await getVectorConfig('..');
expect(request.mock.calls[0][0]).toEqual(expect.objectContaining({ url: '../config.app.element.io.json' }))
@@ -67,7 +67,7 @@ describe('getVectorConfig()', () => {
it('returns parsed specific config when it is non-empty', async () => {
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(specificConfig))
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
const result = await getVectorConfig();
expect(result).toEqual(specificConfig);
});
@@ -75,7 +75,7 @@ describe('getVectorConfig()', () => {
it('returns general config when specific config succeeds but is empty', async () => {
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify({}))
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
const result = await getVectorConfig();
expect(result).toEqual(generalConfig);
});
@@ -83,7 +83,7 @@ describe('getVectorConfig()', () => {
it('returns general config when specific config 404s', async () => {
setRequestMockImplementationOnce(undefined, { status: 404 })
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
const result = await getVectorConfig();
expect(result).toEqual(generalConfig);
});
@@ -91,7 +91,7 @@ describe('getVectorConfig()', () => {
it('returns general config when specific config is fetched from a file and is empty', async () => {
setRequestMockImplementationOnce(undefined, { status: 0 }, '')
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
const result = await getVectorConfig();
expect(result).toEqual(generalConfig);
});
@@ -99,7 +99,7 @@ describe('getVectorConfig()', () => {
it('returns general config when specific config returns a non-200 status', async () => {
setRequestMockImplementationOnce(undefined, { status: 401 })
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
const result = await getVectorConfig();
expect(result).toEqual(generalConfig);
});
@@ -107,7 +107,7 @@ describe('getVectorConfig()', () => {
it('returns general config when specific config returns an error', async () => {
setRequestMockImplementationOnce('err1')
setRequestMockImplementationOnce(undefined, { status: 200 }, JSON.stringify(generalConfig))
-
+
const result = await getVectorConfig();
expect(result).toEqual(generalConfig);
});
@@ -119,4 +119,12 @@ describe('getVectorConfig()', () => {
await expect(() => getVectorConfig()).rejects.toEqual({"err": "err-general", "response": undefined});
});
+ it('rejects with an error when config is invalid JSON', async () => {
+ setRequestMockImplementationOnce('err-specific');
+ setRequestMockImplementationOnce(undefined, { status: 200 }, '{"invalid": "json",}');
+
+ await expect(() => getVectorConfig()).rejects.toEqual({
+ err: new SyntaxError("Unexpected token } in JSON at position 19"),
+ });
+ });
});
diff --git a/test/unit-tests/vector/platform/PWAPlatform-test.ts b/test/unit-tests/vector/platform/PWAPlatform-test.ts
new file mode 100644
index 000000000..23c41399e
--- /dev/null
+++ b/test/unit-tests/vector/platform/PWAPlatform-test.ts
@@ -0,0 +1,33 @@
+/*
+Copyright 2022 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import PWAPlatform from "../../../../src/vector/platform/PWAPlatform";
+
+describe('PWAPlatform', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ describe("setNotificationCount", () => {
+ it("should call Navigator::setAppBadge", () => {
+ navigator.setAppBadge = jest.fn().mockResolvedValue(undefined);
+ const platform = new PWAPlatform();
+ expect(navigator.setAppBadge).not.toHaveBeenCalled();
+ platform.setNotificationCount(123);
+ expect(navigator.setAppBadge).toHaveBeenCalledWith(123);
+ });
+ });
+});
diff --git a/test/unit-tests/vector/platform/WebPlatform-test.ts b/test/unit-tests/vector/platform/WebPlatform-test.ts
index fa5c3e7d8..39d4af2b5 100644
--- a/test/unit-tests/vector/platform/WebPlatform-test.ts
+++ b/test/unit-tests/vector/platform/WebPlatform-test.ts
@@ -30,6 +30,13 @@ describe('WebPlatform', () => {
expect(platform.getHumanReadableName()).toEqual('Web Platform');
});
+ it('registers service worker', () => {
+ // @ts-ignore - mocking readonly object
+ navigator.serviceWorker = { register: jest.fn() };
+ new WebPlatform();
+ expect(navigator.serviceWorker.register).toHaveBeenCalled();
+ });
+
describe('notification support', () => {
const mockNotification = {
requestPermission: jest.fn(),
@@ -50,7 +57,7 @@ describe('WebPlatform', () => {
it('supportsNotifications returns true when platform supports notifications', () => {
expect(new WebPlatform().supportsNotifications()).toBe(true);
});
-
+
it('maySendNotifications returns true when notification permissions are not granted', () => {
expect(new WebPlatform().maySendNotifications()).toBe(false);
});
@@ -109,78 +116,76 @@ describe('WebPlatform', () => {
});
describe('pollForUpdate()', () => {
-
it('should return not available and call showNoUpdate when current version matches most recent version', async () => {
process.env.VERSION = prodVersion;
setRequestMockImplementation(undefined, { status: 200}, prodVersion);
const platform = new WebPlatform();
-
+
const showUpdate = jest.fn();
const showNoUpdate = jest.fn();
const result = await platform.pollForUpdate(showUpdate, showNoUpdate);
-
+
expect(result).toEqual({ status: UpdateCheckStatus.NotAvailable });
expect(showUpdate).not.toHaveBeenCalled();
expect(showNoUpdate).toHaveBeenCalled();
});
-
+
it('should strip v prefix from versions before comparing', async () => {
process.env.VERSION = prodVersion;
setRequestMockImplementation(undefined, { status: 200}, `v${prodVersion}`);
const platform = new WebPlatform();
-
+
const showUpdate = jest.fn();
const showNoUpdate = jest.fn();
const result = await platform.pollForUpdate(showUpdate, showNoUpdate);
-
+
// versions only differ by v prefix, no update
expect(result).toEqual({ status: UpdateCheckStatus.NotAvailable });
expect(showUpdate).not.toHaveBeenCalled();
expect(showNoUpdate).toHaveBeenCalled();
});
-
+
it('should return ready and call showUpdate when current version differs from most recent version', async () => {
process.env.VERSION = '0.0.0'; // old version
setRequestMockImplementation(undefined, { status: 200}, prodVersion);
const platform = new WebPlatform();
-
+
const showUpdate = jest.fn();
const showNoUpdate = jest.fn();
const result = await platform.pollForUpdate(showUpdate, showNoUpdate);
-
+
expect(result).toEqual({ status: UpdateCheckStatus.Ready });
expect(showUpdate).toHaveBeenCalledWith('0.0.0', prodVersion);
expect(showNoUpdate).not.toHaveBeenCalled();
});
-
+
it('should return ready without showing update when user registered in last 24', async () => {
process.env.VERSION = '0.0.0'; // old version
jest.spyOn(MatrixClientPeg, 'userRegisteredWithinLastHours').mockReturnValue(true);
setRequestMockImplementation(undefined, { status: 200}, prodVersion);
const platform = new WebPlatform();
-
+
const showUpdate = jest.fn();
const showNoUpdate = jest.fn();
const result = await platform.pollForUpdate(showUpdate, showNoUpdate);
-
+
expect(result).toEqual({ status: UpdateCheckStatus.Ready });
expect(showUpdate).not.toHaveBeenCalled();
expect(showNoUpdate).not.toHaveBeenCalled();
});
-
+
it('should return error when version check fails', async () => {
setRequestMockImplementation('oups');
const platform = new WebPlatform();
-
+
const showUpdate = jest.fn();
const showNoUpdate = jest.fn();
const result = await platform.pollForUpdate(showUpdate, showNoUpdate);
-
+
expect(result).toEqual({ status: UpdateCheckStatus.Error, detail: 'Unknown Error' });
expect(showUpdate).not.toHaveBeenCalled();
expect(showNoUpdate).not.toHaveBeenCalled();
});
});
-
});
});
From 7708d0584bb7bc64e9b35cd8029a8e0435394c28 Mon Sep 17 00:00:00 2001
From: Robin
Date: Mon, 11 Jul 2022 10:13:23 -0400
Subject: [PATCH 10/25] Remove the ability to hide yourself in video rooms
(#22806)
---
src/vector/jitsi/index.ts | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/vector/jitsi/index.ts b/src/vector/jitsi/index.ts
index 8af13ee25..969ce9e5e 100644
--- a/src/vector/jitsi/index.ts
+++ b/src/vector/jitsi/index.ts
@@ -413,6 +413,9 @@ function joinConference(audioDevice?: string | null, videoDevice?: string | null
];
// Hide all top bar elements
options.configOverwrite.conferenceInfo = { autoHide: [] };
+ // Remove the ability to hide your own tile, since we're hiding the
+ // settings button which would be the only way to get it back
+ options.configOverwrite.disableSelfViewSettings = true;
}
meetApi = new JitsiMeetExternalAPI(jitsiDomain, options);
From 2047c09d6182a78b679132665abd5ba4a335fa64 Mon Sep 17 00:00:00 2001
From: Travis Ralston
Date: Mon, 11 Jul 2022 15:02:13 -0600
Subject: [PATCH 11/25] Add a basic PR checklist for all PRs (#22811)
It'll be mildly annoying for core developers who have to constantly remove or edit this, but it'll also serve as a good reminder to do these things.
Note that signoff is not required for core developers.
---
.github/PULL_REQUEST_TEMPLATE.md | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index f1d5476c5..4bace80f3 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,11 +1,18 @@
-
+
-
+## Checklist
-
From a271516c8b39f7efd75ae6683d225c2086760753 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Tue, 12 Jul 2022 11:50:47 +0100
Subject: [PATCH 12/25] Update build_develop.yml (#22816)
---
.github/workflows/build_develop.yml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/.github/workflows/build_develop.yml b/.github/workflows/build_develop.yml
index b907420ba..e841f7bf3 100644
--- a/.github/workflows/build_develop.yml
+++ b/.github/workflows/build_develop.yml
@@ -31,3 +31,11 @@ jobs:
SENTRY_URL: ${{ secrets.SENTRY_URL }}
SENTRY_ORG: sentry
SENTRY_PROJECT: riot-web
+
+ - run: mv dist/element-*.tar.gz webapp.tar.gz
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: webapp
+ path: webapp.tar.gz
+ retention-days: 1
From 796aeff168d1e581332f53c002734b01392bfedd Mon Sep 17 00:00:00 2001
From: Robin
Date: Tue, 12 Jul 2022 08:23:53 -0400
Subject: [PATCH 13/25] Hide screenshare button in video rooms on Desktop
(#22810)
* Hide screenshare button in video rooms on Desktop
* Splice the screensharing button into the array
---
src/vector/jitsi/index.ts | 12 +++++++++---
src/vector/platform/ElectronPlatform.tsx | 5 +++++
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/src/vector/jitsi/index.ts b/src/vector/jitsi/index.ts
index 969ce9e5e..1b3e1aa34 100644
--- a/src/vector/jitsi/index.ts
+++ b/src/vector/jitsi/index.ts
@@ -52,6 +52,7 @@ let openIdToken: IOpenIDCredentials;
let roomName: string;
let startAudioOnly: boolean;
let isVideoChannel: boolean;
+let supportsScreensharing: boolean;
let widgetApi: WidgetApi;
let meetApi: any; // JitsiMeetExternalAPI
@@ -122,6 +123,7 @@ const ack = (ev: CustomEvent) => widgetApi.transport.reply(ev
roomName = qsParam('roomName', true);
startAudioOnly = qsParam('isAudioOnly', true) === "true";
isVideoChannel = qsParam('isVideoChannel', true) === "true";
+ supportsScreensharing = qsParam('supportsScreensharing', true) === "true";
// We've reached the point where we have to wait for the config, so do that then parse it.
const instanceConfig = new SnakedObject((await configPromise) ?? {});
@@ -408,9 +410,13 @@ function joinConference(audioDevice?: string | null, videoDevice?: string | null
// deployments that have it enabled
options.configOverwrite.prejoinConfig = { enabled: false };
// Use a simplified set of toolbar buttons
- options.configOverwrite.toolbarButtons = [
- "microphone", "camera", "desktop", "tileview", "hangup",
- ];
+ options.configOverwrite.toolbarButtons = ["microphone", "camera", "tileview", "hangup"];
+ // Note: We can hide the screenshare button in video rooms but not in
+ // normal conference calls, since in video rooms we control exactly what
+ // set of controls appear, but in normal calls we need to leave that up
+ // to the deployment's configuration.
+ // https://github.com/vector-im/element-web/issues/4880#issuecomment-940002464
+ if (supportsScreensharing) options.configOverwrite.toolbarButtons.splice(2, 0, "desktop");
// Hide all top bar elements
options.configOverwrite.conferenceInfo = { autoHide: [] };
// Remove the ability to hide your own tile, since we're hiding the
diff --git a/src/vector/platform/ElectronPlatform.tsx b/src/vector/platform/ElectronPlatform.tsx
index ee26b35f0..b2aaa935a 100644
--- a/src/vector/platform/ElectronPlatform.tsx
+++ b/src/vector/platform/ElectronPlatform.tsx
@@ -324,6 +324,11 @@ export default class ElectronPlatform extends VectorBasePlatform {
return true;
}
+ public supportsJitsiScreensharing(): boolean {
+ // See https://github.com/vector-im/element-web/issues/4880
+ return false;
+ }
+
public async getAvailableSpellCheckLanguages(): Promise {
return this.ipc.call('getAvailableSpellCheckLanguages');
}
From fc1db94c80309d59a39925f6d497990a2364899d Mon Sep 17 00:00:00 2001
From: Element Translate Bot
Date: Tue, 12 Jul 2022 14:55:35 +0200
Subject: [PATCH 14/25] Translations update from Weblate (#22819)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Translated using Weblate (Hebrew)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Slovak)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sk/
* Translated using Weblate (Finnish)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fi/
* Translated using Weblate (Turkish)
Currently translated at 97.1% (34 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/tr/
* Translated using Weblate (Galician)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/gl/
* Added translation using Weblate (Sorani)
* Translated using Weblate (Russian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ru/
* Translated using Weblate (Estonian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/et/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Galician)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/gl/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Persian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fa/
* Translated using Weblate (Japanese)
Currently translated at 94.2% (33 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Persian)
Currently translated at 100.0% (35 of 35 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fa/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (French)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fr/
* Translated using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ja/
* Translated using Weblate (Bosnian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/bs/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Hindi)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/hi/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Czech)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/cs/
* Translated using Weblate (Galician)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/gl/
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/uk/
* Translated using Weblate (Estonian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/et/
* Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/zh_Hant/
* Translated using Weblate (Russian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ru/
* Translated using Weblate (Russian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ru/
* Translated using Weblate (Italian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/it/
* Translated using Weblate (Swedish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sv/
* Translated using Weblate (Indonesian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/id/
* Translated using Weblate (Slovak)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sk/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/es/
* Translated using Weblate (Albanian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/sq/
* Translated using Weblate (Dutch)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/nl/
* Added translation using Weblate (Armenian)
* Translated using Weblate (Armenian)
Currently translated at 41.9% (13 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/hy/
* Translated using Weblate (French)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/fr/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/hu/
* Translated using Weblate (German)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/de/
* Translated using Weblate (Turkish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/tr/
* Translated using Weblate (Nepali)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ne/
* Translated using Weblate (Nepali)
Currently translated at 3.2% (1 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ne/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/pt_BR/
* Translated using Weblate (Icelandic)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/is/
* Translated using Weblate (Esperanto)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/eo/
* Translated using Weblate (Lao)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/lo/
* Translated using Weblate (Uzbek)
Currently translated at 12.9% (4 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/uz/
* Added translation using Weblate (Bengali)
* Translated using Weblate (Bengali (Bangladesh))
Currently translated at 3.2% (1 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/bn_BD/
* Translated using Weblate (Lao)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/lo/
* Translated using Weblate (Bengali)
Currently translated at 6.4% (2 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/bn/
* Translated using Weblate (Vietnamese)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/vi/
* Translated using Weblate (Tamil)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ta/
* Translated using Weblate (Polish)
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/pl/
* Translated using Weblate (Danish)
Currently translated at 96.7% (30 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/da/
* Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (31 of 31 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/zh_Hans/
* Translated using Weblate (Greek)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/el/
* Translated using Weblate (Arabic)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ar/
* Translated using Weblate (Hebrew)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/he/
* Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/az/
* Translated using Weblate (Bulgarian)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/bg/
* Translated using Weblate (Sinhala)
Currently translated at 100.0% (30 of 30 strings)
Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/si/
Co-authored-by: SPiRiT
Co-authored-by: Weblate
Co-authored-by: Jozef Gaal
Co-authored-by: Shi-nobi
Co-authored-by: Mahmut Tuncer
Co-authored-by: Xose M
Co-authored-by: ENIGMA
Co-authored-by: Nikita Epifanov
Co-authored-by: Priit Jõerüüt
Co-authored-by: Suguru Hirahara
Co-authored-by: Sveinn í Felli
Co-authored-by: xmeta
Co-authored-by: nafi3h
Co-authored-by: Alexandre Franke
Co-authored-by: Nermin
Co-authored-by: Arya Bhosale
Co-authored-by: waclaw66
Co-authored-by: Ihor Hordiichuk
Co-authored-by: Jeff Huang
Co-authored-by: oleg-fiksel
Co-authored-by: Dimitriy Ryazantcev
Co-authored-by: random
Co-authored-by: LinAGKar
Co-authored-by: Linerly
Co-authored-by: iaiz
Co-authored-by: Besnik Bleta
Co-authored-by: Johan Smits
Co-authored-by: FIONover
Co-authored-by: Lucas
Co-authored-by: Szimszon
Co-authored-by: joshua
Co-authored-by: Metehan Özyürek
Co-authored-by: Padam Ghimire
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito
Co-authored-by: anoloth
Co-authored-by: Sanjar Barakayev
Co-authored-by: Kominak Halalu
Co-authored-by: trongtran810
Co-authored-by: escix
Co-authored-by: Piotr Strebski
Co-authored-by: Simon
Co-authored-by: a19901201
Co-authored-by: Theo
Co-authored-by: AhmedRN
Co-authored-by: NetanelHarris
Co-authored-by: Nizami
Co-authored-by: Mya Rohit
Co-authored-by: HelaBasa
---
src/i18n/strings/bg.json | 3 ++-
src/i18n/strings/si.json | 17 ++++++++++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 181887809..8c082e8a4 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -27,5 +27,6 @@
"Your browser can't run %(brand)s": "Браузърът ви не може да изпълни %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s използва модерни функции на браузъра, които не се поддържат от Вашия.",
"Powered by Matrix": "Базирано на Matrix",
- "Use %(brand)s on mobile": "Използвайте %(brand)s на мобилен телефон"
+ "Use %(brand)s on mobile": "Използвайте %(brand)s на мобилен телефон",
+ "Decentralised, encrypted chat & collaboration powered by $matrixLogo": "Децентрализиран, криптиран чат & сътрудничество, захранено от $matrixlogo"
}
diff --git a/src/i18n/strings/si.json b/src/i18n/strings/si.json
index e10a421b8..bbcea6a5f 100644
--- a/src/i18n/strings/si.json
+++ b/src/i18n/strings/si.json
@@ -13,5 +13,20 @@
"Your browser can't run %(brand)s": "ඔබගේ අතිරික්සුවට %(brand)s ධාවනය කළ නොහැකිය",
"Unsupported browser": "සහය නොදක්වන අතිරික්සුව කි",
"Go to your browser to complete Sign In": "පිවිසීම සම්පූර්ණ කිරීමට ඔබගේ අතිරික්සුව වෙත යන්න",
- "Download Completed": "බාගැනීම සම්පූර්ණයි"
+ "Download Completed": "බාගැනීම සම්පූර්ණයි",
+ "%(brand)s uses advanced browser features which aren't supported by your current browser.": "ඔබගේ වත්මන් අතිරික්සුව සහාය නොදක්වන උසස් විශේෂාංග %(brand)s භාවිත කරයි.",
+ "The message from the parser is: %(message)s": "විග්රහය වෙතින් පණිවිඩය: %(message)s",
+ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "ඔබගේ ඉලෙමන්ට් වින්යාසයෙහි වැරදි JSON අඩංගුය. ගැටලුව නිවැරදි කර පිටුව නැවුම් කරන්න.",
+ "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "වින්යාසය වැරදිය: default_server_config, default_server_name, හෝ default_hs_url න් එකක් සඳහන් කළ හැකිය.",
+ "Invalid configuration: no default server specified.": "වින්යාසය වලංගු නොවේ: පෙරනිමි සේවාදායකයක් දක්වා නැත.",
+ "Your Element is misconfigured": "ඉලෙමන්ට් වැරදියට වින්යාසගතයි",
+ "Unable to load config file: please refresh the page to try again.": "වින්යාස ගොනුව පූරණය කළ නොහැකිය: පිටුව නැවුම් කරන්න.",
+ "Unexpected error preparing the app. See console for details.": "යෙදුම සූදානමේදී අනපේක්ෂිත දෝෂයකි. විස්තර සඳහා හසුරුවම බලන්න.",
+ "Please install Chrome, Firefox, or Safari for the best experience.": "ඉහළ අත්දැකීමකට ක්රෝම්, ෆයර්ෆොකස්, හෝ සෆාරි ස්ථාපනය කරන්න.",
+ "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "වත්මන් අතිරික්සුව දිගටම භාවිතා කළ හැකිය, නමුත් සමහර හෝ සියළුම විශේෂාංග ක්රියා නොකරන අතර යෙදුමේ පෙනුම වෙනස් විය හැකිය.",
+ "I understand the risks and wish to continue": "අවදානම වැටහේ, ඉදිරියට යාමට කැමැත්තෙමි",
+ "Decentralised, encrypted chat & collaboration powered by $matrixLogo": "විමධ්යගත, සංකේතිත කතාබහ සහ amp; $matrixLogo මගින් බලගැන්වූ සහයෝගිත්වය",
+ "Use %(brand)s on mobile": "දුරකථනය සඳහා %(brand)s",
+ "%(brand)s Desktop (%(platformName)s)": "%(brand)s වැඩතලය (%(platformName)s)",
+ "Invalid JSON": "JSON වලංගු නොවේ"
}
From 3b109fbaebd65f43f071009da09b405909a5c75c Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 12 Jul 2022 14:13:54 +0100
Subject: [PATCH 15/25] Upgrade matrix-js-sdk to 19.1.0-rc.1
---
package.json | 2 +-
yarn.lock | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index ad358a1ed..d2c3dd8ec 100644
--- a/package.json
+++ b/package.json
@@ -60,7 +60,7 @@
"gfm.css": "^1.1.2",
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
- "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
+ "matrix-js-sdk": "19.1.0-rc.1",
"matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop",
"matrix-widget-api": "^0.1.0-beta.18",
"prop-types": "^15.7.2",
diff --git a/yarn.lock b/yarn.lock
index f586f3ca5..758948c3a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8389,6 +8389,23 @@ matrix-events-sdk@^0.0.1-beta.7:
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.7.tgz#5ffe45eba1f67cc8d7c2377736c728b322524934"
integrity sha512-9jl4wtWanUFSy2sr2lCjErN/oC8KTAtaeaozJtrgot1JiQcEI4Rda9OLgQ7nLKaqb4Z/QUx/fR3XpDzm5Jy1JA==
+matrix-js-sdk@19.1.0-rc.1:
+ version "19.1.0-rc.1"
+ resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-19.1.0-rc.1.tgz#561ef6e9bf56b2695d7497070b8629cc2bd07211"
+ integrity sha512-qioGRpjSftT642loWaUy7F0ulPEsU0yeXDrvW6uYlYsBnow8jp9JCNBGCTs/kRafaowEPKnyeHIWwvaKRiOrQw==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ another-json "^0.2.0"
+ browser-request "^0.3.3"
+ bs58 "^4.0.1"
+ content-type "^1.0.4"
+ loglevel "^1.7.1"
+ matrix-events-sdk "^0.0.1-beta.7"
+ p-retry "^4.5.0"
+ qs "^6.9.6"
+ request "^2.88.2"
+ unhomoglyph "^1.0.6"
+
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
version "19.0.0"
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/85a96c6467c24b031ee25d5fbb8d9fe62edbbe49"
From c12f51c7ab11b07abc9bce6a1c62bc4b1b96b4bb Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 12 Jul 2022 14:20:19 +0100
Subject: [PATCH 16/25] Upgrade matrix-react-sdk to 3.49.0-rc.1
---
package.json | 2 +-
yarn.lock | 26 ++++++--------------------
2 files changed, 7 insertions(+), 21 deletions(-)
diff --git a/package.json b/package.json
index d2c3dd8ec..8a900edbf 100644
--- a/package.json
+++ b/package.json
@@ -61,7 +61,7 @@
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
"matrix-js-sdk": "19.1.0-rc.1",
- "matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop",
+ "matrix-react-sdk": "3.49.0-rc.1",
"matrix-widget-api": "^0.1.0-beta.18",
"prop-types": "^15.7.2",
"react": "17.0.2",
diff --git a/yarn.lock b/yarn.lock
index 758948c3a..367a3f36d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8406,22 +8406,6 @@ matrix-js-sdk@19.1.0-rc.1:
request "^2.88.2"
unhomoglyph "^1.0.6"
-"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
- version "19.0.0"
- resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/85a96c6467c24b031ee25d5fbb8d9fe62edbbe49"
- dependencies:
- "@babel/runtime" "^7.12.5"
- another-json "^0.2.0"
- browser-request "^0.3.3"
- bs58 "^4.0.1"
- content-type "^1.0.4"
- loglevel "^1.7.1"
- matrix-events-sdk "^0.0.1-beta.7"
- p-retry "^4.5.0"
- qs "^6.9.6"
- request "^2.88.2"
- unhomoglyph "^1.0.6"
-
matrix-mock-request@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/matrix-mock-request/-/matrix-mock-request-2.0.0.tgz#653c258eb3b6dfbf6a48418e8633a377c82de3ab"
@@ -8429,12 +8413,14 @@ matrix-mock-request@^2.0.0:
dependencies:
expect "^1.20.2"
-"matrix-react-sdk@github:matrix-org/matrix-react-sdk#develop":
- version "3.48.0"
- resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/bdc05ec2682748ab26daae74096f15fe8db52294"
+matrix-react-sdk@3.49.0-rc.1:
+ version "3.49.0-rc.1"
+ resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.49.0-rc.1.tgz#90c9d7398e06fbb61102de6de22aa718b222de30"
+ integrity sha512-6jifcsTZjbFTKWh0cc6qoxcIWXAN6yCseQAZDokiBolQE3DWweE3jaJe0oWV54SAjtfKW10rZLpXg4yrs4BAKg==
dependencies:
"@babel/runtime" "^7.12.5"
"@matrix-org/analytics-events" "^0.1.1"
+ "@matrix-org/react-sdk-module-api" "^0.0.3"
"@sentry/browser" "^6.11.0"
"@sentry/tracing" "^6.11.0"
"@testing-library/react" "^12.1.5"
@@ -8470,7 +8456,7 @@ matrix-mock-request@^2.0.0:
maplibre-gl "^1.15.2"
matrix-encrypt-attachment "^1.0.3"
matrix-events-sdk "^0.0.1-beta.7"
- matrix-js-sdk "github:matrix-org/matrix-js-sdk#develop"
+ matrix-js-sdk "19.1.0-rc.1"
matrix-widget-api "^0.1.0-beta.18"
minimist "^1.2.5"
opus-recorder "^8.0.3"
From 293ece5cecf665b0109e8a45ba0254ef05c40cc4 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 12 Jul 2022 14:27:22 +0100
Subject: [PATCH 17/25] Prepare changelog for v1.11.1-rc.1
---
CHANGELOG.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0b99bcc49..f2cffd08a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,82 @@
+Changes in [1.11.1-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.11.1-rc.1) (2022-07-12)
+=========================================================================================================
+
+## ✨ Features
+ * Enable URL tooltips on hover for Element Desktop ([\#22286](https://github.com/vector-im/element-web/pull/22286)). Fixes undefined/element-web#6532. Contributed by @Johennes.
+ * Hide screenshare button in video rooms on Desktop ([\#9045](https://github.com/matrix-org/matrix-react-sdk/pull/9045)).
+ * Add a developer command to reset Megolm and Olm sessions ([\#9044](https://github.com/matrix-org/matrix-react-sdk/pull/9044)).
+ * add spaces to TileErrorBoundary ([\#9012](https://github.com/matrix-org/matrix-react-sdk/pull/9012)). Contributed by @HarHarLinks.
+ * Location sharing - add localised strings to map ([\#9025](https://github.com/matrix-org/matrix-react-sdk/pull/9025)). Fixes #21443. Contributed by @kerryarchibald.
+ * Added trim to ignore whitespaces in email check ([\#9027](https://github.com/matrix-org/matrix-react-sdk/pull/9027)). Contributed by @ankur12-1610.
+ * Improve _GenericEventListSummary.scss ([\#9005](https://github.com/matrix-org/matrix-react-sdk/pull/9005)). Contributed by @luixxiul.
+ * Live location share - tiles without tile server (PSG-591) ([\#8962](https://github.com/matrix-org/matrix-react-sdk/pull/8962)). Contributed by @kerryarchibald.
+ * Add option to display tooltip on link hover ([\#8394](https://github.com/matrix-org/matrix-react-sdk/pull/8394)). Fixes #21907. Contributed by @Johennes.
+ * Support a module API surface for custom functionality ([\#8246](https://github.com/matrix-org/matrix-react-sdk/pull/8246)).
+ * Adjust encryption copy when creating a video room ([\#8989](https://github.com/matrix-org/matrix-react-sdk/pull/8989)). Fixes #22737.
+ * Add bidirectonal isolation for pills ([\#8985](https://github.com/matrix-org/matrix-react-sdk/pull/8985)). Contributed by @sha-265.
+ * Delabs `Show current avatar and name for users in message history` ([\#8764](https://github.com/matrix-org/matrix-react-sdk/pull/8764)). Fixes #22336.
+ * Live location share - open latest location in map site ([\#8981](https://github.com/matrix-org/matrix-react-sdk/pull/8981)). Contributed by @kerryarchibald.
+ * Improve LinkPreviewWidget ([\#8881](https://github.com/matrix-org/matrix-react-sdk/pull/8881)). Fixes #22634. Contributed by @luixxiul.
+ * Render HTML topics in rooms on space home ([\#8939](https://github.com/matrix-org/matrix-react-sdk/pull/8939)). Contributed by @Johennes.
+ * Hide timestamp on event tiles being edited on every layout ([\#8956](https://github.com/matrix-org/matrix-react-sdk/pull/8956)). Contributed by @luixxiul.
+ * Introduce new copy icon ([\#8942](https://github.com/matrix-org/matrix-react-sdk/pull/8942)).
+ * Allow finding group DMs by members in spotlight ([\#8922](https://github.com/matrix-org/matrix-react-sdk/pull/8922)). Fixes #22564. Contributed by @justjanne.
+ * Live location share - explicitly stop beacons replaced beacons ([\#8933](https://github.com/matrix-org/matrix-react-sdk/pull/8933)). Contributed by @kerryarchibald.
+ * Remove unpin from widget kebab menu ([\#8924](https://github.com/matrix-org/matrix-react-sdk/pull/8924)).
+ * Live location share - redact related locations on beacon redaction ([\#8926](https://github.com/matrix-org/matrix-react-sdk/pull/8926)). Contributed by @kerryarchibald.
+ * Live location share - disallow message pinning ([\#8928](https://github.com/matrix-org/matrix-react-sdk/pull/8928)). Contributed by @kerryarchibald.
+
+## 🐛 Bug Fixes
+ * Remove the ability to hide yourself in video rooms ([\#22806](https://github.com/vector-im/element-web/pull/22806)). Fixes #22805.
+ * Add space for the stroke on message editor on IRC layout ([\#9030](https://github.com/matrix-org/matrix-react-sdk/pull/9030)). Fixes #22785. Contributed by @luixxiul.
+ * Fix pinned messages not re-linkifying on edit ([\#9042](https://github.com/matrix-org/matrix-react-sdk/pull/9042)). Fixes #22726.
+ * Don't unnecessarily persist the host signup dialog ([\#9043](https://github.com/matrix-org/matrix-react-sdk/pull/9043)). Fixes #22778.
+ * Fix URL previews causing messages to become unrenderable ([\#9028](https://github.com/matrix-org/matrix-react-sdk/pull/9028)). Fixes #22766.
+ * Fix event list summaries including invalid events ([\#9041](https://github.com/matrix-org/matrix-react-sdk/pull/9041)). Fixes #22790.
+ * Correct accessibility labels for unread rooms in spotlight ([\#9003](https://github.com/matrix-org/matrix-react-sdk/pull/9003)). Contributed by @justjanne.
+ * Enable search strings highlight on bubble layout ([\#9032](https://github.com/matrix-org/matrix-react-sdk/pull/9032)). Fixes #22786. Contributed by @luixxiul.
+ * Unbreak URL preview for formatted links with tooltips ([\#9022](https://github.com/matrix-org/matrix-react-sdk/pull/9022)). Fixes #22764. Contributed by @Johennes.
+ * Re-add margin to tiles based on EventTileBubble ([\#9015](https://github.com/matrix-org/matrix-react-sdk/pull/9015)). Fixes #22772. Contributed by @luixxiul.
+ * Fix Shortcut prompt for Search showing in minimized Roomlist ([\#9014](https://github.com/matrix-org/matrix-react-sdk/pull/9014)). Fixes #22739. Contributed by @justjanne.
+ * Fix avatar position on event info line for hidden events on a thread ([\#9019](https://github.com/matrix-org/matrix-react-sdk/pull/9019)). Fixes #22777. Contributed by @luixxiul.
+ * Fix lost padding of event tile info line ([\#9009](https://github.com/matrix-org/matrix-react-sdk/pull/9009)). Fixes #22754 and #22759. Contributed by @luixxiul.
+ * Align verification bubble with normal event tiles on IRC layout ([\#9001](https://github.com/matrix-org/matrix-react-sdk/pull/9001)). Fixes #22758. Contributed by @luixxiul.
+ * Ensure timestamp on generic event list summary is not hidden from TimelineCard ([\#9000](https://github.com/matrix-org/matrix-react-sdk/pull/9000)). Fixes #22755. Contributed by @luixxiul.
+ * Fix headings margin on security user settings tab ([\#8826](https://github.com/matrix-org/matrix-react-sdk/pull/8826)). Contributed by @luixxiul.
+ * Fix timestamp position on file panel ([\#8976](https://github.com/matrix-org/matrix-react-sdk/pull/8976)). Fixes #22718. Contributed by @luixxiul.
+ * Stop using :not() pseudo class for mx_GenericEventListSummary ([\#8944](https://github.com/matrix-org/matrix-react-sdk/pull/8944)). Fixes #22602. Contributed by @luixxiul.
+ * Don't show the same user twice in Spotlight ([\#8978](https://github.com/matrix-org/matrix-react-sdk/pull/8978)). Fixes #22697.
+ * Align the right edge of expand / collapse link buttons of generic event list summary in bubble layout with a variable ([\#8992](https://github.com/matrix-org/matrix-react-sdk/pull/8992)). Fixes #22743. Contributed by @luixxiul.
+ * Display own avatars on search results panel in bubble layout ([\#8990](https://github.com/matrix-org/matrix-react-sdk/pull/8990)). Contributed by @luixxiul.
+ * Fix text flow of thread summary content on threads list ([\#8991](https://github.com/matrix-org/matrix-react-sdk/pull/8991)). Fixes #22738. Contributed by @luixxiul.
+ * Fix the size of the clickable area of images ([\#8987](https://github.com/matrix-org/matrix-react-sdk/pull/8987)). Fixes #22282.
+ * Fix font size of MessageTimestamp on TimelineCard ([\#8950](https://github.com/matrix-org/matrix-react-sdk/pull/8950)). Contributed by @luixxiul.
+ * Improve security room settings tab style rules ([\#8844](https://github.com/matrix-org/matrix-react-sdk/pull/8844)). Fixes #22575. Contributed by @luixxiul.
+ * Align E2E icon and avatar of info tile in compact modern layout ([\#8965](https://github.com/matrix-org/matrix-react-sdk/pull/8965)). Fixes #22652. Contributed by @luixxiul.
+ * Fix clickable area of general event list summary toggle ([\#8979](https://github.com/matrix-org/matrix-react-sdk/pull/8979)). Fixes #22722. Contributed by @luixxiul.
+ * Fix resizing room topic ([\#8966](https://github.com/matrix-org/matrix-react-sdk/pull/8966)). Fixes #22689.
+ * Dismiss the search dialogue when starting a DM ([\#8967](https://github.com/matrix-org/matrix-react-sdk/pull/8967)). Fixes #22700.
+ * Fix "greyed out" text style inconsistency on search result panel ([\#8974](https://github.com/matrix-org/matrix-react-sdk/pull/8974)). Contributed by @luixxiul.
+ * Add top padding to EventTilePreview loader ([\#8977](https://github.com/matrix-org/matrix-react-sdk/pull/8977)). Fixes #22719. Contributed by @luixxiul.
+ * Fix read receipts group position on TimelineCard in compact modern/group layout ([\#8971](https://github.com/matrix-org/matrix-react-sdk/pull/8971)). Fixes #22715. Contributed by @luixxiul.
+ * Fix calls on homeservers without the unstable thirdparty endpoints. ([\#8931](https://github.com/matrix-org/matrix-react-sdk/pull/8931)). Fixes #21680. Contributed by @deepbluev7.
+ * Enable ReplyChain text to be expanded on IRC layout ([\#8959](https://github.com/matrix-org/matrix-react-sdk/pull/8959)). Fixes #22709. Contributed by @luixxiul.
+ * Fix hidden timestamp on message edit history dialog ([\#8955](https://github.com/matrix-org/matrix-react-sdk/pull/8955)). Fixes #22701. Contributed by @luixxiul.
+ * Enable ReplyChain text to be expanded on bubble layout ([\#8958](https://github.com/matrix-org/matrix-react-sdk/pull/8958)). Fixes #22709. Contributed by @luixxiul.
+ * Fix expand/collapse state wrong in metaspaces ([\#8952](https://github.com/matrix-org/matrix-react-sdk/pull/8952)). Fixes #22632.
+ * Location (live) share replies now provide a fallback content ([\#8949](https://github.com/matrix-org/matrix-react-sdk/pull/8949)).
+ * Fix space settings not opening for script-created spaces ([\#8957](https://github.com/matrix-org/matrix-react-sdk/pull/8957)). Fixes #22703.
+ * Respect `filename` field on `m.file` events ([\#8951](https://github.com/matrix-org/matrix-react-sdk/pull/8951)).
+ * Fix PlatformSettingsHandler always returning true due to returning a Promise ([\#8954](https://github.com/matrix-org/matrix-react-sdk/pull/8954)). Fixes #22616.
+ * Improve high-contrast support for spotlight ([\#8948](https://github.com/matrix-org/matrix-react-sdk/pull/8948)). Fixes #22481. Contributed by @justjanne.
+ * Fix wrong assertions that all media events have a mimetype ([\#8946](https://github.com/matrix-org/matrix-react-sdk/pull/8946)). Fixes matrix-org/element-web-rageshakes#13727.
+ * Make invite dialogue fixed height ([\#8934](https://github.com/matrix-org/matrix-react-sdk/pull/8934)). Fixes #22659.
+ * Fix all megolm error reported as unknown ([\#8916](https://github.com/matrix-org/matrix-react-sdk/pull/8916)).
+ * Remove line-height declarations from _ReplyTile.scss ([\#8932](https://github.com/matrix-org/matrix-react-sdk/pull/8932)). Fixes #22687. Contributed by @luixxiul.
+ * Reduce video rooms log spam ([\#8913](https://github.com/matrix-org/matrix-react-sdk/pull/8913)).
+ * Correct new search input’s rounded corners ([\#8921](https://github.com/matrix-org/matrix-react-sdk/pull/8921)). Fixes #22576. Contributed by @justjanne.
+ * Align unread notification dot on threads list in compact modern=group layout ([\#8911](https://github.com/matrix-org/matrix-react-sdk/pull/8911)). Fixes #22677. Contributed by @luixxiul.
+
Changes in [1.11.0](https://github.com/vector-im/element-web/releases/tag/v1.11.0) (2022-07-05)
===============================================================================================
From 0cf8abcc6fada04845a32feed00257cb838fe349 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 12 Jul 2022 14:27:23 +0100
Subject: [PATCH 18/25] v1.11.1-rc.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 8a900edbf..7ebe1cedb 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "element-web",
- "version": "1.11.0",
+ "version": "1.11.1-rc.1",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
From 73df4077da78ad30122c1670a4e378bbe5b5f496 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Fri, 15 Jul 2022 14:51:16 +0100
Subject: [PATCH 19/25] Upgrade matrix-react-sdk to 3.49.0-rc.2
---
package.json | 2 +-
yarn.lock | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index 7ebe1cedb..e1e723e6c 100644
--- a/package.json
+++ b/package.json
@@ -61,7 +61,7 @@
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
"matrix-js-sdk": "19.1.0-rc.1",
- "matrix-react-sdk": "3.49.0-rc.1",
+ "matrix-react-sdk": "3.49.0-rc.2",
"matrix-widget-api": "^0.1.0-beta.18",
"prop-types": "^15.7.2",
"react": "17.0.2",
diff --git a/yarn.lock b/yarn.lock
index 367a3f36d..a4f3cd833 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8413,10 +8413,10 @@ matrix-mock-request@^2.0.0:
dependencies:
expect "^1.20.2"
-matrix-react-sdk@3.49.0-rc.1:
- version "3.49.0-rc.1"
- resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.49.0-rc.1.tgz#90c9d7398e06fbb61102de6de22aa718b222de30"
- integrity sha512-6jifcsTZjbFTKWh0cc6qoxcIWXAN6yCseQAZDokiBolQE3DWweE3jaJe0oWV54SAjtfKW10rZLpXg4yrs4BAKg==
+matrix-react-sdk@3.49.0-rc.2:
+ version "3.49.0-rc.2"
+ resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.49.0-rc.2.tgz#77108c5b9426cda2d4b333a7afe694f5170b2c44"
+ integrity sha512-XhBZlp5Z2FxUcf+68l+sp9bEPdFPe8CsB8TNDo9FV4UmoQoGYQ0my8i5xU+W4G8aN6+e7nE8CxWhQZ1+Z4/qxw==
dependencies:
"@babel/runtime" "^7.12.5"
"@matrix-org/analytics-events" "^0.1.1"
From dffc6acc1a10b3f8be10b61eca0f188658668d9c Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Fri, 15 Jul 2022 15:03:05 +0100
Subject: [PATCH 20/25] Prepare changelog for v1.11.1-rc.2
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f2cffd08a..83cea5647 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+Changes in [1.11.1-rc.2](https://github.com/vector-im/element-web/releases/tag/v1.11.1-rc.2) (2022-07-15)
+=========================================================================================================
+
+## 🐛 Bug Fixes
+ * Prefer using the canonical alias in spotlight search ([\#9059](https://github.com/matrix-org/matrix-react-sdk/pull/9059)). Fixes vector-im/element-web#22845.
+
Changes in [1.11.1-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.11.1-rc.1) (2022-07-12)
=========================================================================================================
From 9518e61eae1d43f968b42aa544944cea811db0c9 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Fri, 15 Jul 2022 15:03:05 +0100
Subject: [PATCH 21/25] v1.11.1-rc.2
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index e1e723e6c..39d11d28a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "element-web",
- "version": "1.11.1-rc.1",
+ "version": "1.11.1-rc.2",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
From caf6a1ce62ba07693755f7dd3215ecf2df84e7ac Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 26 Jul 2022 16:41:27 +0100
Subject: [PATCH 22/25] Upgrade matrix-js-sdk to 19.1.0
---
package.json | 2 +-
yarn.lock | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 39d11d28a..838f0f8a2 100644
--- a/package.json
+++ b/package.json
@@ -60,7 +60,7 @@
"gfm.css": "^1.1.2",
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
- "matrix-js-sdk": "19.1.0-rc.1",
+ "matrix-js-sdk": "19.1.0",
"matrix-react-sdk": "3.49.0-rc.2",
"matrix-widget-api": "^0.1.0-beta.18",
"prop-types": "^15.7.2",
diff --git a/yarn.lock b/yarn.lock
index a4f3cd833..ca8f916a0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8389,6 +8389,23 @@ matrix-events-sdk@^0.0.1-beta.7:
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.7.tgz#5ffe45eba1f67cc8d7c2377736c728b322524934"
integrity sha512-9jl4wtWanUFSy2sr2lCjErN/oC8KTAtaeaozJtrgot1JiQcEI4Rda9OLgQ7nLKaqb4Z/QUx/fR3XpDzm5Jy1JA==
+matrix-js-sdk@19.1.0:
+ version "19.1.0"
+ resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-19.1.0.tgz#acf1f8c966c2a3ea7f3eefef148959292b50275b"
+ integrity sha512-dV3sO8x4ZsHVsVfOK6PNkT80LphMBilK3qX0+3FM8VHUigzzy3fupR6xbWftcQ+E7hyQTl64+VB5nExLUfqt9A==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ another-json "^0.2.0"
+ browser-request "^0.3.3"
+ bs58 "^4.0.1"
+ content-type "^1.0.4"
+ loglevel "^1.7.1"
+ matrix-events-sdk "^0.0.1-beta.7"
+ p-retry "^4.5.0"
+ qs "^6.9.6"
+ request "^2.88.2"
+ unhomoglyph "^1.0.6"
+
matrix-js-sdk@19.1.0-rc.1:
version "19.1.0-rc.1"
resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-19.1.0-rc.1.tgz#561ef6e9bf56b2695d7497070b8629cc2bd07211"
From 9f53b83bdb79f3a777c8387bd65bb3d69da13f81 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 26 Jul 2022 16:41:50 +0100
Subject: [PATCH 23/25] Upgrade matrix-react-sdk to 3.49.0
---
package.json | 2 +-
yarn.lock | 27 +++++----------------------
2 files changed, 6 insertions(+), 23 deletions(-)
diff --git a/package.json b/package.json
index 838f0f8a2..fa835acb0 100644
--- a/package.json
+++ b/package.json
@@ -61,7 +61,7 @@
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
"matrix-js-sdk": "19.1.0",
- "matrix-react-sdk": "3.49.0-rc.2",
+ "matrix-react-sdk": "3.49.0",
"matrix-widget-api": "^0.1.0-beta.18",
"prop-types": "^15.7.2",
"react": "17.0.2",
diff --git a/yarn.lock b/yarn.lock
index ca8f916a0..d6054b16b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8406,23 +8406,6 @@ matrix-js-sdk@19.1.0:
request "^2.88.2"
unhomoglyph "^1.0.6"
-matrix-js-sdk@19.1.0-rc.1:
- version "19.1.0-rc.1"
- resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-19.1.0-rc.1.tgz#561ef6e9bf56b2695d7497070b8629cc2bd07211"
- integrity sha512-qioGRpjSftT642loWaUy7F0ulPEsU0yeXDrvW6uYlYsBnow8jp9JCNBGCTs/kRafaowEPKnyeHIWwvaKRiOrQw==
- dependencies:
- "@babel/runtime" "^7.12.5"
- another-json "^0.2.0"
- browser-request "^0.3.3"
- bs58 "^4.0.1"
- content-type "^1.0.4"
- loglevel "^1.7.1"
- matrix-events-sdk "^0.0.1-beta.7"
- p-retry "^4.5.0"
- qs "^6.9.6"
- request "^2.88.2"
- unhomoglyph "^1.0.6"
-
matrix-mock-request@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/matrix-mock-request/-/matrix-mock-request-2.0.0.tgz#653c258eb3b6dfbf6a48418e8633a377c82de3ab"
@@ -8430,10 +8413,10 @@ matrix-mock-request@^2.0.0:
dependencies:
expect "^1.20.2"
-matrix-react-sdk@3.49.0-rc.2:
- version "3.49.0-rc.2"
- resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.49.0-rc.2.tgz#77108c5b9426cda2d4b333a7afe694f5170b2c44"
- integrity sha512-XhBZlp5Z2FxUcf+68l+sp9bEPdFPe8CsB8TNDo9FV4UmoQoGYQ0my8i5xU+W4G8aN6+e7nE8CxWhQZ1+Z4/qxw==
+matrix-react-sdk@3.49.0:
+ version "3.49.0"
+ resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.49.0.tgz#cc96fc792d061f9beb209235f10c4a54155740bf"
+ integrity sha512-uWMr8QOTzDMu0XtTqQ7KRmuktD35A0G8yS2sBF7lYlGqimg2z8NuixwOZPCU4UiMaGZkTVmggpPAmRkQ+f6j6A==
dependencies:
"@babel/runtime" "^7.12.5"
"@matrix-org/analytics-events" "^0.1.1"
@@ -8473,7 +8456,7 @@ matrix-react-sdk@3.49.0-rc.2:
maplibre-gl "^1.15.2"
matrix-encrypt-attachment "^1.0.3"
matrix-events-sdk "^0.0.1-beta.7"
- matrix-js-sdk "19.1.0-rc.1"
+ matrix-js-sdk "19.1.0"
matrix-widget-api "^0.1.0-beta.18"
minimist "^1.2.5"
opus-recorder "^8.0.3"
From 8f1ab66b0470de57d7f40df1315c35179ba55777 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 26 Jul 2022 16:43:41 +0100
Subject: [PATCH 24/25] Prepare changelog for v1.11.1
---
CHANGELOG.md | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 83cea5647..892e59418 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,14 +1,8 @@
-Changes in [1.11.1-rc.2](https://github.com/vector-im/element-web/releases/tag/v1.11.1-rc.2) (2022-07-15)
-=========================================================================================================
-
-## 🐛 Bug Fixes
- * Prefer using the canonical alias in spotlight search ([\#9059](https://github.com/matrix-org/matrix-react-sdk/pull/9059)). Fixes vector-im/element-web#22845.
-
-Changes in [1.11.1-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.11.1-rc.1) (2022-07-12)
-=========================================================================================================
+Changes in [1.11.1](https://github.com/vector-im/element-web/releases/tag/v1.11.1) (2022-07-26)
+===============================================================================================
## ✨ Features
- * Enable URL tooltips on hover for Element Desktop ([\#22286](https://github.com/vector-im/element-web/pull/22286)). Fixes undefined/element-web#6532. Contributed by @Johennes.
+ * Enable URL tooltips on hover for Element Desktop ([\#22286](https://github.com/vector-im/element-web/pull/22286)). Fixes undefined/element-web#6532.
* Hide screenshare button in video rooms on Desktop ([\#9045](https://github.com/matrix-org/matrix-react-sdk/pull/9045)).
* Add a developer command to reset Megolm and Olm sessions ([\#9044](https://github.com/matrix-org/matrix-react-sdk/pull/9044)).
* add spaces to TileErrorBoundary ([\#9012](https://github.com/matrix-org/matrix-react-sdk/pull/9012)). Contributed by @HarHarLinks.
@@ -16,14 +10,14 @@ Changes in [1.11.1-rc.1](https://github.com/vector-im/element-web/releases/tag/v
* Added trim to ignore whitespaces in email check ([\#9027](https://github.com/matrix-org/matrix-react-sdk/pull/9027)). Contributed by @ankur12-1610.
* Improve _GenericEventListSummary.scss ([\#9005](https://github.com/matrix-org/matrix-react-sdk/pull/9005)). Contributed by @luixxiul.
* Live location share - tiles without tile server (PSG-591) ([\#8962](https://github.com/matrix-org/matrix-react-sdk/pull/8962)). Contributed by @kerryarchibald.
- * Add option to display tooltip on link hover ([\#8394](https://github.com/matrix-org/matrix-react-sdk/pull/8394)). Fixes #21907. Contributed by @Johennes.
+ * Add option to display tooltip on link hover ([\#8394](https://github.com/matrix-org/matrix-react-sdk/pull/8394)). Fixes #21907.
* Support a module API surface for custom functionality ([\#8246](https://github.com/matrix-org/matrix-react-sdk/pull/8246)).
* Adjust encryption copy when creating a video room ([\#8989](https://github.com/matrix-org/matrix-react-sdk/pull/8989)). Fixes #22737.
* Add bidirectonal isolation for pills ([\#8985](https://github.com/matrix-org/matrix-react-sdk/pull/8985)). Contributed by @sha-265.
* Delabs `Show current avatar and name for users in message history` ([\#8764](https://github.com/matrix-org/matrix-react-sdk/pull/8764)). Fixes #22336.
* Live location share - open latest location in map site ([\#8981](https://github.com/matrix-org/matrix-react-sdk/pull/8981)). Contributed by @kerryarchibald.
* Improve LinkPreviewWidget ([\#8881](https://github.com/matrix-org/matrix-react-sdk/pull/8881)). Fixes #22634. Contributed by @luixxiul.
- * Render HTML topics in rooms on space home ([\#8939](https://github.com/matrix-org/matrix-react-sdk/pull/8939)). Contributed by @Johennes.
+ * Render HTML topics in rooms on space home ([\#8939](https://github.com/matrix-org/matrix-react-sdk/pull/8939)).
* Hide timestamp on event tiles being edited on every layout ([\#8956](https://github.com/matrix-org/matrix-react-sdk/pull/8956)). Contributed by @luixxiul.
* Introduce new copy icon ([\#8942](https://github.com/matrix-org/matrix-react-sdk/pull/8942)).
* Allow finding group DMs by members in spotlight ([\#8922](https://github.com/matrix-org/matrix-react-sdk/pull/8922)). Fixes #22564. Contributed by @justjanne.
@@ -34,6 +28,7 @@ Changes in [1.11.1-rc.1](https://github.com/vector-im/element-web/releases/tag/v
## 🐛 Bug Fixes
* Remove the ability to hide yourself in video rooms ([\#22806](https://github.com/vector-im/element-web/pull/22806)). Fixes #22805.
+ * Unbreak in-app permalink tooltips ([\#9100](https://github.com/matrix-org/matrix-react-sdk/pull/9100)).
* Add space for the stroke on message editor on IRC layout ([\#9030](https://github.com/matrix-org/matrix-react-sdk/pull/9030)). Fixes #22785. Contributed by @luixxiul.
* Fix pinned messages not re-linkifying on edit ([\#9042](https://github.com/matrix-org/matrix-react-sdk/pull/9042)). Fixes #22726.
* Don't unnecessarily persist the host signup dialog ([\#9043](https://github.com/matrix-org/matrix-react-sdk/pull/9043)). Fixes #22778.
@@ -41,7 +36,7 @@ Changes in [1.11.1-rc.1](https://github.com/vector-im/element-web/releases/tag/v
* Fix event list summaries including invalid events ([\#9041](https://github.com/matrix-org/matrix-react-sdk/pull/9041)). Fixes #22790.
* Correct accessibility labels for unread rooms in spotlight ([\#9003](https://github.com/matrix-org/matrix-react-sdk/pull/9003)). Contributed by @justjanne.
* Enable search strings highlight on bubble layout ([\#9032](https://github.com/matrix-org/matrix-react-sdk/pull/9032)). Fixes #22786. Contributed by @luixxiul.
- * Unbreak URL preview for formatted links with tooltips ([\#9022](https://github.com/matrix-org/matrix-react-sdk/pull/9022)). Fixes #22764. Contributed by @Johennes.
+ * Unbreak URL preview for formatted links with tooltips ([\#9022](https://github.com/matrix-org/matrix-react-sdk/pull/9022)). Fixes #22764.
* Re-add margin to tiles based on EventTileBubble ([\#9015](https://github.com/matrix-org/matrix-react-sdk/pull/9015)). Fixes #22772. Contributed by @luixxiul.
* Fix Shortcut prompt for Search showing in minimized Roomlist ([\#9014](https://github.com/matrix-org/matrix-react-sdk/pull/9014)). Fixes #22739. Contributed by @justjanne.
* Fix avatar position on event info line for hidden events on a thread ([\#9019](https://github.com/matrix-org/matrix-react-sdk/pull/9019)). Fixes #22777. Contributed by @luixxiul.
From 70dabba32de597e82904b95ca22726d39713e736 Mon Sep 17 00:00:00 2001
From: RiotRobot
Date: Tue, 26 Jul 2022 16:43:41 +0100
Subject: [PATCH 25/25] v1.11.1
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index fa835acb0..b377e124d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "element-web",
- "version": "1.11.1-rc.2",
+ "version": "1.11.1",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {