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": {