Compare commits

..

175 Commits

Author SHA1 Message Date
Kat Gerasimova
de8b99de3d Fix indentation in automation
Fix indention and capitalisation
2022-09-01 15:30:49 +01:00
Michael Weimann
143632adb0 Add 2022 code style (#23153)
* Add 2022 code style

* Update CONTRIBUTING/code_style
2022-09-01 13:49:44 +02:00
Travis Ralston
7b904cd89b Update CHANGELOG.md 2022-08-31 11:49:05 -06:00
RiotRobot
7ade21ad9b Reset matrix-react-sdk back to develop branch 2022-08-31 16:49:07 +01:00
RiotRobot
900df8ce16 Reset matrix-js-sdk back to develop branch 2022-08-31 16:48:56 +01:00
RiotRobot
d50454ece6 Merge branch 'master' into develop 2022-08-31 16:48:45 +01:00
RiotRobot
4292bb1c28 v1.11.4 2022-08-31 16:44:24 +01:00
RiotRobot
320c58dbfc Prepare changelog for v1.11.4 2022-08-31 16:44:23 +01:00
RiotRobot
9d830f4837 Upgrade matrix-react-sdk to 3.53.0 2022-08-31 16:41:14 +01:00
RiotRobot
269ffe385a Upgrade matrix-js-sdk to 19.4.0 2022-08-31 16:40:28 +01:00
Robin
ed1ecde348 Simplify the Jitsi wrapper (#23158)
* Remove ClientReady and WidgetReady hacks from the Jitsi wrapper

By registering widget API listeners earlier and simply blocking the
execution of all actions until the Jitsi wrapper has finished setting
up, sending a WidgetReady action becomes no longer necessary.

The ClientReady action is likewise not necessary, because in practice
getting a ready event means the client and the widget have already been
happily talking back and forth for capability negotiation.

* Rename audioDevice/videoDevice to audioInput/videoInput

* Combine HangupCall and ForceHangupCall into one action

* Apply misc code review suggestions
2022-08-30 15:13:37 -04:00
Kat Gerasimova
26077db644 Update triage-labelled.yml (#22822) 2022-08-30 10:01:23 +01:00
RiotRobot
6232c3a471 v1.11.4-rc.2 2022-08-25 16:55:32 +01:00
RiotRobot
1bca364a03 Prepare changelog for v1.11.4-rc.2 2022-08-25 16:55:31 +01:00
RiotRobot
89691b19fd Upgrade matrix-react-sdk to 3.53.0-rc.2 2022-08-25 16:54:00 +01:00
Michael Telatynski
44e01823a3 Tweak tsc-strict config (#23148) 2022-08-24 11:11:43 +01:00
Michael Telatynski
6741ee61d8 Add backport automation (#23142) 2022-08-23 16:59:29 +01:00
Michael Telatynski
a9d1fd7cdf Add static analysis for tsc --strict (#23140) 2022-08-23 14:02:48 +01:00
RiotRobot
75522c771e v1.11.4-rc.1 2022-08-23 11:08:00 +01:00
RiotRobot
cce899bf69 Prepare changelog for v1.11.4-rc.1 2022-08-23 11:07:59 +01:00
RiotRobot
09562bccf6 Upgrade matrix-react-sdk to 3.53.0-rc.1 2022-08-23 11:04:30 +01:00
RiotRobot
0b23334ed2 Upgrade matrix-js-sdk to 19.4.0-rc.1 2022-08-23 11:04:08 +01:00
Element Translate Bot
6cc71e1f13 Translations update from Weblate (#23141)
* 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/

* Translated using Weblate (Korean)

Currently translated at 96.6% (29 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ko/

* Translated using Weblate (Korean)

Currently translated at 96.6% (29 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ko/

* Translated using Weblate (Persian)

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/fa/

* Translated using Weblate (Chinese (Simplified))

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/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

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/zh_Hans/

* Translated using Weblate (Russian)

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/ru/

* Translated using Weblate (Telugu)

Currently translated at 33.3% (10 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/te/

* Translated using Weblate (Telugu)

Currently translated at 40.0% (12 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/te/

* Translated using Weblate (Hungarian)

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/hu/

Co-authored-by: Suguru Hirahara <ovestekona@protonmail.com>
Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
Co-authored-by: Alexandre Franke <alexandre.franke@gmail.com>
Co-authored-by: Nermin <neercsys@gmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: Arya Bhosale <arya2001bhosale@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Xose M <xosem@disroot.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: joshua <weblate-p5yaa1sp@dc7ia.eu>
Co-authored-by: Metehan Özyürek <metehanc8s9@yandex.com>
Co-authored-by: Padam Ghimire <padamghimire2020@gmail.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito <willibandido@gmail.com>
Co-authored-by: anoloth <anoloth@gmail.com>
Co-authored-by: Sanjar Barakayev <sanjarbarakayev5@gmail.com>
Co-authored-by: Kominak Halalu <kominak310@svcache.com>
Co-authored-by: trongtran810 <trantrong810@gmail.com>
Co-authored-by: escix <preminik@preminik.com>
Co-authored-by: Piotr Strebski <strebski@gmail.com>
Co-authored-by: Simon <simonpmt@gmail.com>
Co-authored-by: a19901201 <a19901201@gmail.com>
Co-authored-by: Theo <tbousiou@gmail.com>
Co-authored-by: AhmedRN <APOP319@gmail.com>
Co-authored-by: NetanelHarris <harris.netanel@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Mya Rohit <element@mailbolt.com>
Co-authored-by: HelaBasa <R45XvezA@protonmail.ch>
Co-authored-by: revblue <neosurpass@gmail.com>
Co-authored-by: Mine_My <me@minemy.me>
Co-authored-by: nafi3h <alireza.zarei@gmail.com>
Co-authored-by: c1bebff3 <if5c3xi6@protonmail.com>
Co-authored-by: phardyle <bradney_ccea@aleeas.com>
Co-authored-by: Corvurius <corvurius@gmail.com>
Co-authored-by: kskarthik <kskarthik@disroot.org>
Co-authored-by: Balázs Meskó <meskobalazs@gmail.com>
2022-08-23 10:36:32 +01:00
Šimon Brandner
a302dba006 Remove docs for feature_message_right_click_context_menu (#22228) 2022-08-18 09:18:45 +02:00
RiotRobot
65edff3821 Reset matrix-react-sdk back to develop branch 2022-08-16 16:19:31 +01:00
RiotRobot
5946f1cd87 Reset matrix-js-sdk back to develop branch 2022-08-16 16:19:19 +01:00
RiotRobot
5d0deff937 Merge branch 'master' into develop
# Conflicts:
#	package.json
#	yarn.lock
2022-08-16 16:18:38 +01:00
RiotRobot
40a114a80a Merge branch 'release-v1.11.3' 2022-08-16 16:14:34 +01:00
RiotRobot
33caca80e2 v1.11.3 2022-08-16 16:07:40 +01:00
RiotRobot
f698ce7e79 Prepare changelog for v1.11.3 2022-08-16 16:07:39 +01:00
RiotRobot
538b1a2294 Upgrade matrix-react-sdk to 3.52.0 2022-08-16 15:57:27 +01:00
RiotRobot
fd3289f67e Upgrade matrix-js-sdk to 19.3.0 2022-08-16 15:49:17 +01:00
RiotRobot
d7f2eba310 v1.11.3-rc.2 2022-08-12 14:13:47 +01:00
RiotRobot
73189872b3 Prepare changelog for v1.11.3-rc.2 2022-08-12 14:13:46 +01:00
RiotRobot
cad20f3e0f Upgrade matrix-react-sdk to 3.52.0-rc.2 2022-08-12 14:07:26 +01:00
RiotRobot
ee0d29f4e7 Upgrade matrix-js-sdk to 19.3.0-rc.2 2022-08-12 13:53:01 +01:00
renovate[bot]
39eee10c57 Update all (#23052)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-11 08:08:17 +01:00
Michael Telatynski
e9a7b3349b Update issue_closed.yml (#23048) 2022-08-10 17:10:48 +01:00
Robin
2cd0bb7312 Upgrade matrix-widget-sdk (#23029)
* Upgrade matrix-widget-sdk

* Remove matrix-react-sdk's old dependency
2022-08-10 12:58:31 +00:00
ElementRobot
9c36adc4df Merge pull request #23046 from vector-im/actions/upgrade-deps
Upgrade dependencies
2022-08-10 09:04:26 +01:00
t3chguy
9d05e01907 [create-pull-request] automated change 2022-08-10 07:36:52 +00:00
renovate[bot]
2a38ccbd77 Update babel monorepo to v7.18.10 (#23040)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-10 07:27:20 +01:00
renovate[bot]
22f011bdbf Update typescript-eslint monorepo to v5.33.0 (#23041)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-10 07:27:06 +01:00
RiotRobot
f15f5a59de v1.11.3-rc.1 2022-08-09 17:27:06 +01:00
RiotRobot
8cd3294192 Prepare changelog for v1.11.3-rc.1 2022-08-09 17:27:06 +01:00
RiotRobot
adf4a7fb21 Upgrade matrix-react-sdk to 3.52.0-rc.1 2022-08-09 17:24:24 +01:00
RiotRobot
b17149ab39 Upgrade matrix-js-sdk to 19.3.0-rc.1 2022-08-09 17:21:10 +01:00
Element Translate Bot
9a6de19e9d Translations update from Weblate (#23038)
* 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/

* Translated using Weblate (Korean)

Currently translated at 96.6% (29 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ko/

* Translated using Weblate (Korean)

Currently translated at 96.6% (29 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ko/

* Translated using Weblate (Persian)

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/fa/

* Translated using Weblate (Chinese (Simplified))

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/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

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/zh_Hans/

* Translated using Weblate (Russian)

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/ru/

* Translated using Weblate (Telugu)

Currently translated at 33.3% (10 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/te/

Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: Suguru Hirahara <ovestekona@protonmail.com>
Co-authored-by: Alexandre Franke <alexandre.franke@gmail.com>
Co-authored-by: Nermin <neercsys@gmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: Arya Bhosale <arya2001bhosale@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Xose M <xosem@disroot.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: joshua <weblate-p5yaa1sp@dc7ia.eu>
Co-authored-by: Metehan Özyürek <metehanc8s9@yandex.com>
Co-authored-by: Padam Ghimire <padamghimire2020@gmail.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito <willibandido@gmail.com>
Co-authored-by: anoloth <anoloth@gmail.com>
Co-authored-by: Sanjar Barakayev <sanjarbarakayev5@gmail.com>
Co-authored-by: Kominak Halalu <kominak310@svcache.com>
Co-authored-by: trongtran810 <trantrong810@gmail.com>
Co-authored-by: escix <preminik@preminik.com>
Co-authored-by: Piotr Strebski <strebski@gmail.com>
Co-authored-by: Simon <simonpmt@gmail.com>
Co-authored-by: a19901201 <a19901201@gmail.com>
Co-authored-by: Theo <tbousiou@gmail.com>
Co-authored-by: AhmedRN <APOP319@gmail.com>
Co-authored-by: NetanelHarris <harris.netanel@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Mya Rohit <element@mailbolt.com>
Co-authored-by: HelaBasa <R45XvezA@protonmail.ch>
Co-authored-by: revblue <neosurpass@gmail.com>
Co-authored-by: Mine_My <me@minemy.me>
Co-authored-by: nafi3h <alireza.zarei@gmail.com>
Co-authored-by: c1bebff3 <if5c3xi6@protonmail.com>
Co-authored-by: phardyle <bradney_ccea@aleeas.com>
Co-authored-by: Corvurius <corvurius@gmail.com>
Co-authored-by: kskarthik <kskarthik@disroot.org>
2022-08-09 16:41:55 +01:00
Michael Telatynski
822e262a93 Revert "Update ElectronPlatform.tsx (#22976)" (#23030)
This reverts commit 6d3c49d866.
2022-08-09 15:39:47 +01:00
3nprob
847e6b03cb Document where new linting rules go (#23035)
Co-authored-by: Michael Weimann <michaelw@matrix.org>
2022-08-09 16:15:36 +02:00
Michael Telatynski
4b6d9a067b Update deploy scripts for gha-webhook-listener compatibility (#23002)
* Soft fail Sentry uploads from Webpack

* Delete duplicated script

* Delint script

* Move symlink support from redeploy to deploy
2022-08-09 13:23:41 +01:00
Šimon Brandner
9df3774886 Remove forgotten line out of labs docs (#23017)
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-08-05 22:04:27 +02:00
Šimon Brandner
0ed179d94c Show current avatar and name for users in message history (#22447) 2022-08-05 15:38:11 +00:00
Šimon Brandner
039141f91c Remove docs for feature_hidden_read_receipts (#22242) 2022-08-05 17:34:01 +02:00
Michael Telatynski
3e3f279469 Update build_develop.yml
Ignore checks which don't relate to this action
2022-08-04 17:36:13 +01:00
Šimon Brandner
0d18e4ea8e Add GHA for Dead Code Analysis (#22830) 2022-08-04 10:34:02 -06:00
Michael Telatynski
31636dcbaa Update build_develop.yml (#22996) 2022-08-04 17:07:22 +01:00
Michael Telatynski
1af4f75688 Create dockerhub.yaml 2022-08-03 10:33:23 +01:00
RiotRobot
fc6c859976 Reset matrix-react-sdk back to develop branch 2022-08-03 09:23:24 +01:00
RiotRobot
bf9d69cd1b Reset matrix-js-sdk back to develop branch 2022-08-03 09:23:09 +01:00
RiotRobot
f103492e50 Merge branch 'master' into develop 2022-08-03 09:22:31 +01:00
RiotRobot
35a9852b42 v1.11.2 2022-08-03 09:16:40 +01:00
RiotRobot
ccfd1b5d95 Prepare changelog for v1.11.2 2022-08-03 09:16:40 +01:00
RiotRobot
ef7dab792d Upgrade matrix-react-sdk to 3.51.0 2022-08-02 17:15:19 +01:00
RiotRobot
4a789991c8 Upgrade matrix-js-sdk to 19.2.0 2022-08-02 17:14:31 +01:00
Michael Telatynski
6d3c49d866 Update ElectronPlatform.tsx (#22976) 2022-08-02 16:11:59 +01:00
Michael Telatynski
394907fb7a Update build_develop.yml 2022-08-02 12:38:05 +01:00
Michael Telatynski
ec81bd5715 Fix sentry params 2022-08-02 12:08:17 +01:00
Michael Weimann
c4593091d6 Update matrix-org/react (enzyme deprecation) (#22959) 2022-08-02 12:15:38 +02:00
Michael Telatynski
070f4735cd Update dockerhub.yaml 2022-07-29 15:19:51 +01:00
Michael Telatynski
c21ba402ad Fix Sentry org 2022-07-29 14:59:48 +01:00
Michael Telatynski
88f25d7444 Specify environment 2022-07-29 14:41:05 +01:00
Michael Telatynski
d86e897ba6 Rework dockerhub builds (#22026)
* WIP

* Attempt to wire up dockerhub building in GHA

* Fix issue with mime types

* Skip linux/arm, Cypress only installs on 64-bit

* Update dockerhub.yaml

* Update comment
2022-07-29 14:30:16 +01:00
Michael Weimann
4738dc9da2 Add webpack react-sdk resolve alias (#22947) 2022-07-29 11:11:11 +02:00
Michael Telatynski
0f88d86c89 Improve auth aria attributes and semantics (#22948) 2022-07-28 14:00:34 +01:00
Kerry
f4480c9968 Update jest to v28 (#22946)
* Update jest monorepo to v28

* stop using deprecated jest-environment-jsdom-sixteen, set testURL

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-28 14:03:38 +02:00
renovate[bot]
267179aac0 Update babel monorepo to v7.18.9 (#22942)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-28 09:31:26 +01:00
Šimon Brandner
1e445a75a9 Add support for disabling spell check (#22220)
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-07-28 10:19:33 +02:00
renovate[bot]
a620ff2b6a Update typescript-eslint monorepo to v5.31.0 (#22943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-07-28 08:15:56 +02:00
renovate[bot]
ce5210d35b Configure Renovate (#22940)
* Add renovate.json

* Create renovate.json

* Delete renovate.json

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-07-27 15:09:04 +00:00
Germain
03cce754d4 Disallow invalid inline style comments in stylesheets (#22930) 2022-07-27 14:39:22 +01:00
Germain
d6d02631ab Move major and critical threads to delight board (#22937) 2022-07-27 15:01:06 +02:00
RiotRobot
a1d1b9105e v1.11.2-rc.1 2022-07-26 18:00:34 +01:00
RiotRobot
8ec574017c Prepare changelog for v1.11.2-rc.1 2022-07-26 18:00:33 +01:00
RiotRobot
bf0a05798c Upgrade matrix-react-sdk to 3.51.0-rc.1 2022-07-26 17:58:42 +01:00
RiotRobot
2fa98d7ad6 Upgrade matrix-js-sdk to 19.2.0-rc.1 2022-07-26 17:58:01 +01:00
Element Translate Bot
fc23d3f669 Translations update from Weblate (#22933)
* 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/

* Translated using Weblate (Korean)

Currently translated at 96.6% (29 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ko/

* Translated using Weblate (Korean)

Currently translated at 96.6% (29 of 30 strings)

Translation: Element Web/element-web
Translate-URL: https://translate.element.io/projects/element-web/element-web/ko/

* Translated using Weblate (Persian)

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/fa/

* Translated using Weblate (Chinese (Simplified))

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/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

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/zh_Hans/

Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: Suguru Hirahara <ovestekona@protonmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: xmeta <x_metawork@yahoo.co.jp>
Co-authored-by: Xose M <xosem@disroot.org>
Co-authored-by: nafi3h <alireza.zarei@gmail.com>
Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
Co-authored-by: Alexandre Franke <alexandre.franke@gmail.com>
Co-authored-by: Nermin <neercsys@gmail.com>
Co-authored-by: Arya Bhosale <arya2001bhosale@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: joshua <weblate-p5yaa1sp@dc7ia.eu>
Co-authored-by: Metehan Özyürek <metehanc8s9@yandex.com>
Co-authored-by: Padam Ghimire <padamghimire2020@gmail.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito <willibandido@gmail.com>
Co-authored-by: anoloth <anoloth@gmail.com>
Co-authored-by: Sanjar Barakayev <sanjarbarakayev5@gmail.com>
Co-authored-by: Kominak Halalu <kominak310@svcache.com>
Co-authored-by: trongtran810 <trantrong810@gmail.com>
Co-authored-by: escix <preminik@preminik.com>
Co-authored-by: Piotr Strebski <strebski@gmail.com>
Co-authored-by: Simon <simonpmt@gmail.com>
Co-authored-by: a19901201 <a19901201@gmail.com>
Co-authored-by: Theo <tbousiou@gmail.com>
Co-authored-by: AhmedRN <APOP319@gmail.com>
Co-authored-by: NetanelHarris <harris.netanel@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Mya Rohit <element@mailbolt.com>
Co-authored-by: HelaBasa <R45XvezA@protonmail.ch>
Co-authored-by: revblue <neosurpass@gmail.com>
Co-authored-by: Mine_My <me@minemy.me>
Co-authored-by: c1bebff3 <if5c3xi6@protonmail.com>
Co-authored-by: phardyle <bradney_ccea@aleeas.com>
2022-07-26 17:11:23 +01:00
RiotRobot
ebfa4c4b09 Reset matrix-react-sdk back to develop branch 2022-07-26 16:50:48 +01:00
RiotRobot
6726a1d3e9 Reset matrix-js-sdk back to develop branch 2022-07-26 16:50:36 +01:00
RiotRobot
3de75c20c1 Merge branch 'master' into develop
# Conflicts:
#	yarn.lock
2022-07-26 16:49:20 +01:00
RiotRobot
70dabba32d v1.11.1 2022-07-26 16:43:41 +01:00
RiotRobot
8f1ab66b04 Prepare changelog for v1.11.1 2022-07-26 16:43:41 +01:00
RiotRobot
9f53b83bdb Upgrade matrix-react-sdk to 3.49.0 2022-07-26 16:41:50 +01:00
RiotRobot
caf6a1ce62 Upgrade matrix-js-sdk to 19.1.0 2022-07-26 16:41:27 +01:00
Šimon Brandner
ee3b9c3310 Improve dead code detection (#22829) 2022-07-25 09:35:48 +00:00
Hubert Chathi
b3b8e2e0a2 Merge pull request #22906 from uhoreg/olm_3.2.12
bump olm version to match bump in matrix-js-sdk
2022-07-21 08:17:59 -04:00
dependabot[bot]
a6a1e1fffd Bump terser from 4.8.0 to 4.8.1 (#22900) 2022-07-20 16:06:37 +02:00
Hubert Chathi
dd82f4b47d bump olm version to match bump in matrix-js-sdk 2022-07-20 09:21:11 -04:00
Kat Gerasimova
1519d5672e Update issue automation for the design team (#22879)
The design team would like to see all of their issues on their board for triage now
2022-07-18 10:48:47 +01:00
Janne Mareike Koschinski
787d4c4135 Merge pull request #22858 from vector-im/justjanne/task/22846-remove-old-room-directory
Disable tests relying on old room directory
2022-07-16 00:52:24 +02:00
Yaya Usman
72afc206d3 Merge pull request #22818 from yaya-usman/feature_favMessages_docs
Add docs for feature_favourite_messages
2022-07-15 23:22:15 +03:00
RiotRobot
9518e61eae v1.11.1-rc.2 2022-07-15 15:03:05 +01:00
RiotRobot
dffc6acc1a Prepare changelog for v1.11.1-rc.2 2022-07-15 15:03:05 +01:00
Michael Telatynski
64ed6ebdad Rename PostCSS files to .pcss (#22769)
* Rename PostCSS files to `.pcss`

* Make Stylelint happy

* Make Stylelint happy v2

* Update CompatibilityView.tsx

* Update res/css/structures/ErrorView.pcss

Co-authored-by: Michael Weimann <mail@michael-weimann.eu>

* Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/pcss

 Conflicts:
	package.json
	res/css/_components.scss
	res/css/structures/_NotificationPanel.pcss
	res/css/views/dialogs/_SpotlightDialog.pcss
	res/css/views/rooms/_EventTile.pcss
	res/css/views/rooms/_ReadReceiptGroup.pcss
	yarn.lock

* Only use CI_PACKAGE mode on develop, it skips minification which can find some errors

* Keep name to not break existing PRs

Co-authored-by: Michael Weimann <mail@michael-weimann.eu>
2022-07-15 14:53:21 +01:00
RiotRobot
73df4077da Upgrade matrix-react-sdk to 3.49.0-rc.2 2022-07-15 14:51:16 +01:00
Janne Mareike Koschinski
e873e84130 Disable tests relying on old room directory 2022-07-15 12:22:33 +02:00
Michael Weimann
ecda0a1073 Adapt to new ValidatedServerConfig location (#22842) 2022-07-14 15:04:32 +02:00
ElementRobot
9414af4dca Upgrade dependencies (#22428)
* [create-pull-request] automated change

* Pin postcss-hexrgba as 2.1.0 needs postcss 8

* Bump typescript version

Co-authored-by: t3chguy <t3chguy@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-07-13 17:11:22 +01:00
Michael Telatynski
4d277a6bd9 Update build_develop.yml (#22820) 2022-07-13 09:57:51 +01:00
Šimon Brandner
e1d4817d54 Add a script to check for dead code (#22793) 2022-07-13 10:04:32 +02:00
RiotRobot
0cf8abcc6f v1.11.1-rc.1 2022-07-12 14:27:23 +01:00
RiotRobot
293ece5cec Prepare changelog for v1.11.1-rc.1 2022-07-12 14:27:22 +01:00
RiotRobot
c12f51c7ab Upgrade matrix-react-sdk to 3.49.0-rc.1 2022-07-12 14:20:19 +01:00
RiotRobot
3b109fbaeb Upgrade matrix-js-sdk to 19.1.0-rc.1 2022-07-12 14:13:54 +01:00
Element Translate Bot
fc1db94c80 Translations update from Weblate (#22819)
* 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 <such.a.lost.spirit@gmail.com>
Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Shi-nobi <mika.lehtonen@mttl.xyz>
Co-authored-by: Mahmut Tuncer <asimbesir4242+elementtranslations@gmail.com>
Co-authored-by: Xose M <xosem@disroot.org>
Co-authored-by: ENIGMA <N0NVAL@protonmail.com>
Co-authored-by: Nikita Epifanov <NikGreens@protonmail.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: Suguru Hirahara <ovestekona@protonmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: xmeta <x_metawork@yahoo.co.jp>
Co-authored-by: nafi3h <alireza.zarei@gmail.com>
Co-authored-by: Alexandre Franke <alexandre.franke@gmail.com>
Co-authored-by: Nermin <neercsys@gmail.com>
Co-authored-by: Arya Bhosale <arya2001bhosale@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: joshua <weblate-p5yaa1sp@dc7ia.eu>
Co-authored-by: Metehan Özyürek <metehanc8s9@yandex.com>
Co-authored-by: Padam Ghimire <padamghimire2020@gmail.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito <willibandido@gmail.com>
Co-authored-by: anoloth <anoloth@gmail.com>
Co-authored-by: Sanjar Barakayev <sanjarbarakayev5@gmail.com>
Co-authored-by: Kominak Halalu <kominak310@svcache.com>
Co-authored-by: trongtran810 <trantrong810@gmail.com>
Co-authored-by: escix <preminik@preminik.com>
Co-authored-by: Piotr Strebski <strebski@gmail.com>
Co-authored-by: Simon <simonpmt@gmail.com>
Co-authored-by: a19901201 <a19901201@gmail.com>
Co-authored-by: Theo <tbousiou@gmail.com>
Co-authored-by: AhmedRN <APOP319@gmail.com>
Co-authored-by: NetanelHarris <harris.netanel@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Mya Rohit <element@mailbolt.com>
Co-authored-by: HelaBasa <R45XvezA@protonmail.ch>
2022-07-12 13:55:35 +01:00
Robin
796aeff168 Hide screenshare button in video rooms on Desktop (#22810)
* Hide screenshare button in video rooms on Desktop

* Splice the screensharing button into the array
2022-07-12 08:23:53 -04:00
yaya-usman
c10735ad04 Add docs for feature_favourite_messages 2022-07-12 14:59:21 +03:00
Michael Telatynski
a271516c8b Update build_develop.yml (#22816) 2022-07-12 11:50:47 +01:00
Travis Ralston
2047c09d61 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.
2022-07-11 15:02:13 -06:00
Robin
7708d0584b Remove the ability to hide yourself in video rooms (#22806) 2022-07-11 14:13:23 +00:00
Michael Telatynski
017dfb6606 Write additional tests (#22802)
* Write additional tests

* Make Sonar happier
2022-07-11 13:22:37 +01:00
Travis Ralston
a4f9e7adad Build the module system on yarn start (#22773)
So developers can actually run the app with an empty modules file.
2022-07-07 21:19:08 +02:00
Johannes Marbach
688dbc6cba Enable URL tooltips on hover for Element Desktop (#22286)
* Enable URL tooltips for Element Desktop

Closes: #6532
Signed-off-by: Johannes Marbach <johannesm@element.io>

* Fix access level

Co-authored-by: Travis Ralston <travpc@gmail.com>

* Add explicit access level where it exists in base class

* Appease the linker

Co-authored-by: Travis Ralston <travpc@gmail.com>
2022-07-06 12:40:22 -06:00
Travis Ralston
2032668e3a Add node to the tsconfig settings for the module system (#22740) 2022-07-05 13:09:26 -06:00
Travis Ralston
f1e5b95554 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
2022-07-05 12:26:54 -06:00
RiotRobot
f03200f8e6 Reset matrix-react-sdk back to develop branch 2022-07-05 14:36:58 +01:00
RiotRobot
1070081217 Reset matrix-js-sdk back to develop branch 2022-07-05 14:36:48 +01:00
RiotRobot
3d15650bd6 Merge branch 'master' into develop 2022-07-05 14:36:37 +01:00
RiotRobot
9abbcd041f v1.11.0 2022-07-05 14:28:25 +01:00
RiotRobot
1ab9c3aee1 Prepare changelog for v1.11.0 2022-07-05 14:28:25 +01:00
RiotRobot
2b29c24483 Upgrade matrix-react-sdk to 3.48.0 2022-07-05 14:24:28 +01:00
RiotRobot
9c40422b7d Upgrade matrix-js-sdk to 19.0.0 2022-07-05 14:18:42 +01:00
Element Translate Bot
f92b157117 Translations update from Weblate (#22679)
* 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 <ejcept@gmail.com>
Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Shi-nobi <mika.lehtonen@mttl.xyz>
Co-authored-by: Mahmut Tuncer <asimbesir4242+elementtranslations@gmail.com>
Co-authored-by: Xose M <xosem@disroot.org>
Co-authored-by: ENIGMA <N0NVAL@protonmail.com>
Co-authored-by: Nikita Epifanov <NikGreens@protonmail.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: Suguru Hirahara <ovestekona@protonmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: xmeta <x_metawork@yahoo.co.jp>
Co-authored-by: nafi3h <alireza.zarei@gmail.com>
Co-authored-by: Alexandre Franke <alexandre.franke@gmail.com>
Co-authored-by: Nermin <neercsys@gmail.com>
Co-authored-by: Arya Bhosale <arya2001bhosale@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: joshua <weblate-p5yaa1sp@dc7ia.eu>
Co-authored-by: Metehan Özyürek <metehanc8s9@yandex.com>
Co-authored-by: Padam Ghimire <padamghimire2020@gmail.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito <willibandido@gmail.com>
Co-authored-by: anoloth <anoloth@gmail.com>
Co-authored-by: Sanjar Barakayev <sanjarbarakayev5@gmail.com>
Co-authored-by: Kominak Halalu <kominak310@svcache.com>
Co-authored-by: trongtran810 <trantrong810@gmail.com>
Co-authored-by: escix <preminik@preminik.com>
Co-authored-by: Piotr Strebski <strebski@gmail.com>
Co-authored-by: Simon <simonpmt@gmail.com>
Co-authored-by: a19901201 <a19901201@gmail.com>
Co-authored-by: Theo <tbousiou@gmail.com>
Co-authored-by: AhmedRN <APOP319@gmail.com>
Co-authored-by: NetanelHarris <harris.netanel@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-07-05 13:58:12 +01:00
Michael Telatynski
53ce8388f1 Fix font preloading causing errors on non-root deployments (#22714) 2022-07-01 20:05:43 +01:00
RiotRobot
961135c85d v1.11.0-rc.1 2022-06-28 16:29:08 +01:00
RiotRobot
cb84f0f913 Prepare changelog for v1.11.0-rc.1 2022-06-28 16:29:07 +01:00
RiotRobot
abc4c62fe4 Upgrade matrix-react-sdk to 3.48.0-rc.1 2022-06-28 16:25:53 +01:00
RiotRobot
323fb47c79 Upgrade matrix-js-sdk to 19.0.0-rc.1 2022-06-28 16:25:16 +01:00
Element Translate Bot
0baca38c31 Translations update from Weblate (#22678)
* 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/

* Run prunei18n

* Run prunei18n

Co-authored-by: Eduardo Ervideira <ejcept@gmail.com>
Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Shi-nobi <mika.lehtonen@mttl.xyz>
Co-authored-by: Mahmut Tuncer <asimbesir4242+elementtranslations@gmail.com>
Co-authored-by: Xose M <xosem@disroot.org>
Co-authored-by: ENIGMA <N0NVAL@protonmail.com>
Co-authored-by: Nikita Epifanov <NikGreens@protonmail.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: Suguru Hirahara <ovestekona@protonmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Co-authored-by: xmeta <x_metawork@yahoo.co.jp>
Co-authored-by: nafi3h <alireza.zarei@gmail.com>
Co-authored-by: Alexandre Franke <alexandre.franke@gmail.com>
Co-authored-by: Nermin <neercsys@gmail.com>
Co-authored-by: Arya Bhosale <arya2001bhosale@gmail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: joshua <weblate-p5yaa1sp@dc7ia.eu>
Co-authored-by: Metehan Özyürek <metehanc8s9@yandex.com>
Co-authored-by: Padam Ghimire <padamghimire2020@gmail.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Vilhelmo Bandito <willibandido@gmail.com>
Co-authored-by: anoloth <anoloth@gmail.com>
Co-authored-by: Sanjar Barakayev <sanjarbarakayev5@gmail.com>
Co-authored-by: Kominak Halalu <kominak310@svcache.com>
Co-authored-by: trongtran810 <trantrong810@gmail.com>
Co-authored-by: escix <preminik@preminik.com>
Co-authored-by: Piotr Strebski <strebski@gmail.com>
Co-authored-by: Simon <simonpmt@gmail.com>
Co-authored-by: a19901201 <a19901201@gmail.com>
Co-authored-by: Theo <tbousiou@gmail.com>
Co-authored-by: AhmedRN <APOP319@gmail.com>
Co-authored-by: NetanelHarris <harris.netanel@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-06-28 15:56:17 +01:00
Michael Telatynski
ab8cfa2d28 Update matrix-web-i18n (#22666) 2022-06-28 14:15:50 +01:00
Kat Gerasimova
836ba7a755 Update issue automation (#22672)
Remove "A-New-Search-Experience" from being automatically labelled with "Z-Labs"
2022-06-28 14:14:15 +01:00
Robin
91918f2a58 Add support for switching layouts in the Jitsi wrapper (#22664) 2022-06-27 19:37:27 +00:00
Robin
feccdec581 Reduce video rooms log spam (#22665)
If you forget to call preventDefault in widget action handlers,
matrix-widget-api logs a bunch of errors complaining that the action is
unsupported/unhandled, even if it isn't.
2022-06-27 15:30:56 -04:00
Robin
5f176fa9a6 Connect to Jitsi unmuted by default (#22660)
* Connect to Jitsi unmuted by default

* Refactor joinConference to placate SonarQube
2022-06-27 17:41:33 +00:00
dependabot[bot]
9eda502a9b Bump jsrsasign from 10.5.20 to 10.5.25 (#22646)
Bumps [jsrsasign](https://github.com/kjur/jsrsasign) from 10.5.20 to 10.5.25.
- [Release notes](https://github.com/kjur/jsrsasign/releases)
- [Changelog](https://github.com/kjur/jsrsasign/blob/master/ChangeLog.txt)
- [Commits](https://github.com/kjur/jsrsasign/compare/10.5.20...10.5.25)

---
updated-dependencies:
- dependency-name: jsrsasign
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-26 14:39:04 -06:00
Šimon Brandner
659f41482b Add docs feature_exploring_public_spaces (#22612) 2022-06-24 17:08:39 +02:00
Travis Ralston
7a131fc50f Workflow: Move WAT issues to In Progress rather than Ready when assigned (#22577) 2022-06-14 15:03:18 -06:00
Michael Telatynski
6c37574857 Remove all mentions of Piwik (#22556)
* Remove all mentions of Piwik

* Simplify ModalManager interface

* Maintain privacy_policy_url
2022-06-14 16:14:09 +01:00
RiotRobot
b69d4b6346 Reset matrix-react-sdk back to develop branch 2022-06-14 14:49:43 +01:00
RiotRobot
a7260f004e Reset matrix-js-sdk back to develop branch 2022-06-14 14:49:30 +01:00
RiotRobot
b400463ff3 Merge branch 'master' into develop
# Conflicts:
#	package.json
#	yarn.lock
2022-06-14 14:48:50 +01:00
RiotRobot
ba38b73a15 v1.10.15 2022-06-14 14:33:17 +01:00
RiotRobot
4013651ae2 Prepare changelog for v1.10.15 2022-06-14 14:33:16 +01:00
RiotRobot
e0adf93e21 Upgrade matrix-react-sdk to 3.47.0 2022-06-14 14:29:51 +01:00
Michael Telatynski
3a4ac1373c Abstract electron settings properly to avoid boilerplate-hell (#22491)
* Remove unused method `BasePlatform::screenCaptureErrorString`

* Extract SeshatIndexManager into its own file

* Improve platform typescripting

* Consolidate IPC call promisification into IPCManager

* Abstract electron settings properly to avoid boilerplate-hell

* i18n

* Iterate PR

(cherry picked from commit 2c0965c240)
2022-06-14 14:28:14 +01:00
Michael Telatynski
2ea12ea68d Skip running jobs on fork develop where they lack secrets (#22561)
* Skip running jobs on fork `develop` where they lack secrets

* Fix contexts
2022-06-14 11:30:12 +01:00
Michael Telatynski
2c0965c240 Abstract electron settings properly to avoid boilerplate-hell (#22491)
* Remove unused method `BasePlatform::screenCaptureErrorString`

* Extract SeshatIndexManager into its own file

* Improve platform typescripting

* Consolidate IPC call promisification into IPCManager

* Abstract electron settings properly to avoid boilerplate-hell

* i18n

* Iterate PR
2022-06-10 22:38:46 +01:00
Robin
867fc30ebf Work around a Jitsi bug with display name encoding (#22525) 2022-06-10 12:21:49 -04:00
Robin
0fd1bc7f5a Release video rooms as a beta feature (#21962)
* Update labs documentation for the video rooms beta

* Make video rooms opt-out on develop
2022-06-09 13:08:03 -04:00
Michael Telatynski
5698389789 Update pull_request.yaml (#22482) 2022-06-08 13:08:36 +01:00
Michael Telatynski
af609e35a3 Add CI to improve experience for community (#22474)
* Add CI to improve experience for community

* Fix close-if-fork-develop if-condition

* Extract into reusable workflow
2022-06-08 11:43:55 +01:00
Johannes Marbach
0a8938db4e Add docs for feature_html_topic labs flag (#21671)
Signed-off-by: Johannes Marbach <johannesm@element.io>

Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-06-07 13:31:13 -06:00
Michael Telatynski
5630a7defe Update matrix-analytics-events to @matrix-org/analytics-events (#22469)
* Update matrix-analytics-events to @matrix-org/analytics-events

* Update layered.sh
2022-06-07 20:08:38 +01:00
Robin
b44df4bcc3 Add message starring label to labs automation (#22461) 2022-06-07 17:16:44 +02:00
RiotRobot
1f3826f3ce Reset matrix-react-sdk back to develop branch 2022-06-07 12:22:33 +01:00
RiotRobot
91c56831d1 Reset matrix-js-sdk back to develop branch 2022-06-07 12:22:20 +01:00
RiotRobot
44979978a1 Merge branch 'master' into develop 2022-06-07 12:22:08 +01:00
RiotRobot
b7b5408fb1 v1.10.14 2022-06-07 12:18:15 +01:00
RiotRobot
657af4f844 Prepare changelog for v1.10.14 2022-06-07 12:18:14 +01:00
RiotRobot
59d90b3a69 Upgrade matrix-react-sdk to 3.46.0 2022-06-07 12:16:33 +01:00
RiotRobot
e89892c4d5 Upgrade matrix-js-sdk to 18.1.0 2022-06-07 12:15:43 +01:00
RiotRobot
e2d5aebea2 v1.10.14-rc.1 2022-05-31 11:57:51 +01:00
RiotRobot
e24d66410b Prepare changelog for v1.10.14-rc.1 2022-05-31 11:57:50 +01:00
RiotRobot
82a564a1be Upgrade matrix-react-sdk to 3.46.0-rc.1 2022-05-31 11:51:35 +01:00
RiotRobot
fa585521d0 Upgrade matrix-js-sdk to 18.1.0-rc.1 2022-05-31 11:50:00 +01:00
141 changed files with 5321 additions and 4886 deletions

View File

@@ -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

View File

@@ -18,11 +18,13 @@ module.exports = {
}
},
overrides: [{
files: ["src/**/*.{ts,tsx}"],
files: ["src/**/*.{ts,tsx}", "module_system/**/*.{ts,tsx}"],
extends: [
"plugin:matrix-org/typescript",
"plugin:matrix-org/react",
],
// NOTE: These rules are frozen and new rules should not be added here.
// New changes belong in https://github.com/matrix-org/eslint-plugin-matrix-org/
rules: {
// Things we do that break the ideal style
"prefer-promise-reject-errors": "off",

View File

@@ -1,11 +1,18 @@
<!-- Please read https://github.com/matrix-org/matrix-js-sdk/blob/develop/CONTRIBUTING.md before submitting your pull request -->
<!-- Thanks for submitting a PR! Please ensure the following requirements are met in order for us to review your PR -->
<!-- Include a Sign-Off as described in https://github.com/matrix-org/matrix-js-sdk/blob/develop/CONTRIBUTING.md#sign-off -->
## Checklist
<!-- To specify text for the changelog entry (otherwise the PR title will be used):
Notes:
* [ ] Tests written for new code (and old code if feasible)
* [ ] Linter and other CI checks pass
* [ ] Sign-off given on the changes (see [CONTRIBUTING.md](https://github.com/vector-im/element-web/blob/develop/CONTRIBUTING.md))
<!--
If you would like to specify text for the changelog entry other than your PR title, add the following:
Notes: Add super cool feature
For PRs which *only* affect the desktop version, please use:
Changelog entries will also appear in element-desktop. For PRs that *only* affect the desktop version:
Notes: none
element-desktop notes: <notes>
element-desktop notes: Add super cool feature
-->

6
.github/renovate.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"github>matrix-org/renovate-config-element-web"
]
}

30
.github/workflows/backport.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: Backport
on:
pull_request_target:
types:
- closed
- labeled
branches:
- develop
jobs:
backport:
name: Backport
runs-on: ubuntu-latest
# Only react to merged PRs for security reasons.
# See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target.
if: >
github.event.pull_request.merged
&& (
github.event.action == 'closed'
|| (
github.event.action == 'labeled'
&& contains(github.event.label.name, 'backport')
)
)
steps:
- uses: tibdex/backport@v2
with:
labels_template: "<%= JSON.stringify(labels) %>"
# We can't use GITHUB_TOKEN here or CI won't run on the new PR
github_token: ${{ secrets.ELEMENT_BOT_TOKEN }}

View File

@@ -1,33 +0,0 @@
name: Build
on:
pull_request: { }
push:
branches: [ master ]
# develop pushes and repository_dispatch handled in build_develop.yaml
env:
# These must be set for fetchdep.sh to get the right branch
REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
jobs:
build:
name: "Build"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
cache: 'yarn'
- name: Install Dependencies
run: "./scripts/layered.sh"
- name: Build & Package
run: "./scripts/ci_package.sh"
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: previewbuild
path: dist/*.tar.gz
retention-days: 28

View File

@@ -1,4 +1,4 @@
name: Build and Package
name: Build
on:
pull_request: { }
push:
@@ -22,5 +22,5 @@ jobs:
- name: Install Dependencies
run: "./scripts/layered.sh"
- name: Build & Package
run: "./scripts/ci_package.sh"
- name: Build
run: "yarn build"

View File

@@ -1,38 +0,0 @@
# Separate to the main build workflow for access to develop
# environment secrets, largely similar to build.yaml.
name: Build develop
on:
push:
branches: [ develop ]
repository_dispatch:
types: [ element-web-notify ]
jobs:
build:
name: "Build & Upload source maps to Sentry"
runs-on: ubuntu-latest
environment: develop
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
cache: 'yarn'
- name: Install Dependencies
run: "./scripts/layered.sh"
- name: Build, Package & Upload sourcemaps
run: "./scripts/ci_package.sh"
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_URL: ${{ secrets.SENTRY_URL }}
SENTRY_ORG: sentry
SENTRY_PROJECT: riot-web
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: previewbuild
path: dist/*.tar.gz
retention-days: 1

View File

@@ -6,9 +6,14 @@ on:
branches: [ develop ]
repository_dispatch:
types: [ element-web-notify ]
concurrency:
group: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: true
jobs:
build:
name: "Build & Upload source maps to Sentry"
# Only respect triggers from our develop branch, ignore that of forks
if: github.repository == 'vector-im/element-web'
runs-on: ubuntu-latest
environment: develop
steps:
@@ -27,5 +32,22 @@ jobs:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_URL: ${{ secrets.SENTRY_URL }}
SENTRY_ORG: sentry
SENTRY_ORG: element
SENTRY_PROJECT: riot-web
- run: mv dist/element-*.tar.gz webapp.tar.gz
- name: Wait for other steps to succeed
uses: lewagon/wait-on-check-action@v1.0.0
with:
ref: ${{ github.ref }}
running-workflow-name: 'Build & Upload source maps to Sentry'
repo-token: ${{ secrets.GITHUB_TOKEN }}
wait-interval: 10
check-regexp: ^((?!SonarQube|issues|board).)*$
- uses: actions/upload-artifact@v3
with:
name: webapp
path: webapp.tar.gz
retention-days: 1

View File

@@ -1,64 +0,0 @@
# Triggers after the Build has finished,
# because artifacts are not externally available
# until the end of their workflow.
name: Deploy develop.element.io
concurrency: deploy_develop
on:
workflow_run:
workflows: [ "Build develop" ]
types:
- completed
jobs:
deploy:
runs-on: ubuntu-latest
environment: develop
if: github.event.workflow_run.conclusion == 'success'
steps:
- name: Find Artifact ID
uses: actions/github-script@v3.1.0
id: find_artifact
with:
result-encoding: string
script: |
const artifacts = await github.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }},
});
const matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "previewbuild"
})[0];
const download = await github.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
return download.url;
- name: Create Deployment
uses: bobheadxi/deployments@v1
id: deployment
with:
step: start
token: ${{ secrets.GITHUB_TOKEN }}
env: Develop
ref: ${{ github.head_ref }}
- name: Notify the redeploy script
uses: distributhor/workflow-webhook@v2
env:
webhook_url: ${{ secrets.DEVELOP_DEPLOY_WEBHOOK_URL }}
webhook_secret: ${{ secrets.DEVELOP_DEPLOY_WEBHOOK_SECRET }}
data: '{"url": "${{ steps.find_artifact.outputs.result }}"}'
- name: Update deployment status
uses: bobheadxi/deployments@v1
if: always()
with:
step: finish
token: ${{ secrets.GITHUB_TOKEN }}
status: ${{ job.status }}
env: ${{ steps.deployment.outputs.env }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
env_url: https://develop.element.io

59
.github/workflows/dockerhub.yaml vendored Normal file
View File

@@ -0,0 +1,59 @@
name: Dockerhub
on:
workflow_dispatch: { }
push:
tags: [ v* ]
schedule:
# This job can take a while, and we have usage limits, so just publish develop only twice a day
- cron: '0 7/12 * * *'
concurrency: ${{ github.ref_name }}
jobs:
buildx:
name: Docker Buildx
runs-on: ubuntu-latest
environment: dockerhub
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # needed for docker-package to be able to calculate the version
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: |
vectorim/element-web
tags: |
type=ref,event=branch
type=ref,event=tag
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Update repo description
uses: peter-evans/dockerhub-description@v2
continue-on-error: true
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
repository: vectorim/element-web

View File

@@ -10,6 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v5
id: main
with:
# PAT needed as the GITHUB_TOKEN won't be able to see cross-references from other orgs (matrix-org)
github-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
@@ -127,13 +128,7 @@ jobs:
// Duplicate was closed with wrong reason, fix it
if (stateReason === "COMPLETED") {
await github.graphql(`mutation($id:ID!) {
closeIssue(input: { issueId:$id, stateReason:NOT_PLANNED }) {
clientMutationId
}
}`, {
id: context.payload.issue.node_id,
});
core.setOutput("closeAsNotPlanned", "true");
}
} else {
// This issue was closed, close all related rageshakes
@@ -146,3 +141,16 @@ jobs:
});
}
}
- uses: actions/github-script@v5
name: Close duplicate as Not Planned
if: steps.main.outputs.closeAsNotPlanned
with:
# We do this step separately, and with the default token so as to not re-trigger this workflow when re-closing
script: |
await github.graphql(`mutation($id:ID!) {
closeIssue(input: { issueId:$id, stateReason:NOT_PLANNED }) {
clientMutationId
}
}`, {
id: context.payload.issue.node_id,
});

View File

@@ -4,23 +4,9 @@ on:
types: [ opened, edited, labeled, unlabeled, synchronize ]
concurrency: ${{ github.workflow }}-${{ github.event.pull_request.head.ref }}
jobs:
changelog:
name: Preview Changelog
if: github.event.action != 'synchronize'
runs-on: ubuntu-latest
steps:
- uses: matrix-org/allchange@main
with:
ghToken: ${{ secrets.GITHUB_TOKEN }}
enforce-label:
name: Enforce Labels
runs-on: ubuntu-latest
permissions:
pull-requests: read
steps:
- uses: yogevbd/enforce-label-action@2.1.0
with:
REQUIRED_LABELS_ANY: "T-Defect,T-Enhancement,T-Task"
BANNED_LABELS: "X-Blocked"
BANNED_LABELS_DESCRIPTION: "Preventing merge whilst PR is marked blocked!"
action:
uses: matrix-org/matrix-js-sdk/.github/workflows/pull_request.yaml@develop
with:
labels: "T-Defect,T-Enhancement,T-Task"
secrets:
ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

View File

@@ -57,9 +57,60 @@ jobs:
with:
cache: 'yarn'
# Does not need branch matching as only analyses this layer
- name: Install Deps
run: "yarn install --pure-lockfile"
# Needs branch matching as it inherits .stylelintrc.js from matrix-react-sdk
- name: Install Dependencies
run: "./scripts/layered.sh"
- name: Run Linter
run: "yarn run lint:style"
analyse_dead_code:
name: "Analyse Dead Code"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
cache: 'yarn'
- name: Install Deps
run: "scripts/layered.sh"
- name: Dead Code Analysis
run: "yarn run analyse:unused-exports"
tsc-strict:
name: Typescript Strict Error Checker
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
permissions:
pull-requests: read
checks: write
steps:
- uses: actions/checkout@v3
- name: Get diff lines
id: diff
uses: Equip-Collaboration/diff-line-numbers@v1.0.0
with:
include: '["\\.tsx?$"]'
- name: Detecting files changed
id: files
uses: futuratrepadeira/changed-files@v3.2.1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
pattern: '^.*\.tsx?$'
- uses: t3chguy/typescript-check-action@main
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
use-check: false
check-fail-mode: added
output-behaviour: annotate
ts-extra-args: '--strict'
files-changed: ${{ steps.files.outputs.files_updated }}
files-added: ${{ steps.files.outputs.files_created }}
files-deleted: ${{ steps.files.outputs.files_deleted }}
line-numbers: ${{ steps.diff.outputs.lineNumbers }}

View File

@@ -1,27 +0,0 @@
name: Test
on:
pull_request: { }
push:
branches: [ master, develop ]
repository_dispatch:
types: [ element-web-notify ]
env:
# These must be set for fetchdep.sh to get the right branch
REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
jobs:
test:
name: "Test"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
cache: 'yarn'
- name: Install Dependencies
run: "./scripts/layered.sh"
- name: Run Tests
run: "yarn test"

View File

@@ -14,5 +14,5 @@ jobs:
- uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
with:
project: Web App Team
column: Ready
column: "In Progress"
repo-token: ${{ secrets.ELEMENT_BOT_TOKEN }}

View File

@@ -11,13 +11,13 @@ jobs:
if: >
contains(github.event.issue.labels.*.name, 'A-Maths') ||
contains(github.event.issue.labels.*.name, 'A-Message-Pinning') ||
contains(github.event.issue.labels.*.name, 'A-New-Search-Experience') ||
contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
contains(github.event.issue.labels.*.name, 'Z-IA') ||
contains(github.event.issue.labels.*.name, 'A-Themes-Custom') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
contains(github.event.issue.labels.*.name, 'A-Tags') ||
contains(github.event.issue.labels.*.name, 'A-Video-Rooms')
contains(github.event.issue.labels.*.name, 'A-Video-Rooms') ||
contains(github.event.issue.labels.*.name, 'A-Message-Starring')
steps:
- uses: actions/github-script@v5
with:
@@ -44,14 +44,7 @@ jobs:
name: P1 X-Needs-Design to Design project board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'X-Needs-Design') &&
(contains(github.event.issue.labels.*.name, 'S-Critical') &&
(contains(github.event.issue.labels.*.name, 'O-Frequent') ||
contains(github.event.issue.labels.*.name, 'O-Occasional')) ||
contains(github.event.issue.labels.*.name, 'S-Major') &&
contains(github.event.issue.labels.*.name, 'O-Frequent') ||
contains(github.event.issue.labels.*.name, 'A11y') &&
contains(github.event.issue.labels.*.name, 'O-Frequent'))
contains(github.event.issue.labels.*.name, 'X-Needs-Design')
steps:
- uses: octokit/graphql-action@v2.x
id: add_to_project
@@ -100,6 +93,9 @@ jobs:
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'A-New-Search-Experience') ||
(contains(github.event.issue.labels.*.name, 'A-Threads') &&
(contains(github.event.issue.labels.*.name, 'S-Major') ||
contains(github.event.issue.labels.*.name, 'S-Critical'))) ||
contains(github.event.issue.labels.*.name, 'Team: Delight') ||
contains(github.event.issue.labels.*.name, 'Z-NewUserJourney')
steps:
@@ -119,6 +115,29 @@ jobs:
env:
PROJECT_ID: "PN_kwDOAM0swc1HvQ"
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
search_issues_to_board:
name: Search issues to project board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'A-New-Search-Experience')
steps:
- uses: octokit/graphql-action@v2.x
with:
headers: '{"GraphQL-Features": "projects_next_graphql"}'
query: |
mutation add_to_project($projectid:ID!,$contentid:ID!) {
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
projectNextItem {
id
}
}
}
projectid: ${{ env.PROJECT_ID }}
contentid: ${{ github.event.issue.node_id }}
env:
PROJECT_ID: "PN_kwDOAM0swc4ADtaO"
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
move_voice-message_issues:
name: A-Voice Messages to voice message board

View File

@@ -56,7 +56,8 @@ jobs:
contains(github.event.issue.labels.*.name, 'A-Themes-Custom') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
contains(github.event.issue.labels.*.name, 'A-Tags') ||
contains(github.event.issue.labels.*.name, 'A-Video-Rooms')) &&
contains(github.event.issue.labels.*.name, 'A-Video-Rooms') ||
contains(github.event.issue.labels.*.name, 'A-Message-Starring')) &&
contains(github.event.issue.labels.*.name, 'Z-Labs')
steps:
- uses: actions/github-script@v5

5
.gitignore vendored
View File

@@ -24,5 +24,6 @@ electron/pub
.vscode/
.env
/coverage
/scripts/extracted/
/scripts/latest
# Auto-generated file
/src/modules.ts
/build_config.yaml

View File

@@ -1,26 +1,3 @@
// Copied from react-sdk
// TODO: Only keep one copy of this for synchronization purposes
module.exports = {
"extends": "stylelint-config-standard",
"plugins": [
"stylelint-scss",
],
"rules": {
"indentation": 4,
"comment-empty-line-before": null,
"declaration-empty-line-before": null,
"length-zero-no-unit": null,
"rule-empty-line-before": null,
"color-hex-length": null,
"max-empty-lines": null,
"number-no-trailing-zeros": null,
"number-leading-zero": null,
"selector-list-comma-newline-after": null,
"at-rule-no-unknown": null,
"no-descending-specificity": null,
"scss/at-rule-no-unknown": [true, {
// https://github.com/vector-im/element-web/issues/10544
"ignoreAtRules": ["define-mixin"],
}],
}
...require("matrix-react-sdk/.stylelintrc.js"),
};

View File

@@ -1,3 +1,361 @@
Changes in [1.11.4](https://github.com/vector-im/element-web/releases/tag/v1.11.4) (2022-08-31)
===============================================================================================
## 🔒 Security
* Fixes for [CVE-2022-36059](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=CVE%2D2022%2D36059) and [CVE-2022-36060](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=CVE%2D2022%2D36060)
Learn more about what we've been up to at https://element.io/blog/element-web-desktop-1-11-4-a-security-update-deferred-dms-and-more/
Find more details of the vulnerabilities at https://matrix.org/blog/2022/08/31/security-releases-matrix-js-sdk-19-4-0-and-matrix-react-sdk-3-53-0
## ✨ Features
* Device manager - scroll to filtered list from security recommendations ([\#9227](https://github.com/matrix-org/matrix-react-sdk/pull/9227)). Contributed by @kerryarchibald.
* Device manager - updated dropdown style in filtered device list ([\#9226](https://github.com/matrix-org/matrix-react-sdk/pull/9226)). Contributed by @kerryarchibald.
* Device manager - device type and verification icons on device tile ([\#9197](https://github.com/matrix-org/matrix-react-sdk/pull/9197)). Contributed by @kerryarchibald.
* Ignore unreads in low priority rooms in the space panel ([\#6518](https://github.com/matrix-org/matrix-react-sdk/pull/6518)). Fixes #16836.
* Release message right-click context menu out of labs ([\#8613](https://github.com/matrix-org/matrix-react-sdk/pull/8613)).
* Device manager - expandable session details in device list ([\#9188](https://github.com/matrix-org/matrix-react-sdk/pull/9188)). Contributed by @kerryarchibald.
* Device manager - device list filtering ([\#9181](https://github.com/matrix-org/matrix-react-sdk/pull/9181)). Contributed by @kerryarchibald.
* Device manager - add verification details to session details ([\#9187](https://github.com/matrix-org/matrix-react-sdk/pull/9187)). Contributed by @kerryarchibald.
* Device manager - current session expandable details ([\#9185](https://github.com/matrix-org/matrix-react-sdk/pull/9185)). Contributed by @kerryarchibald.
* Device manager - security recommendations section ([\#9179](https://github.com/matrix-org/matrix-react-sdk/pull/9179)). Contributed by @kerryarchibald.
* The Welcome Home Screen: Return Button ([\#9089](https://github.com/matrix-org/matrix-react-sdk/pull/9089)). Fixes #22917. Contributed by @justjanne.
* Device manager - label devices as inactive ([\#9175](https://github.com/matrix-org/matrix-react-sdk/pull/9175)). Contributed by @kerryarchibald.
* Device manager - other sessions list ([\#9155](https://github.com/matrix-org/matrix-react-sdk/pull/9155)). Contributed by @kerryarchibald.
* Implement MSC3846: Allowing widgets to access TURN servers ([\#9061](https://github.com/matrix-org/matrix-react-sdk/pull/9061)).
* Allow widgets to send/receive to-device messages ([\#8885](https://github.com/matrix-org/matrix-react-sdk/pull/8885)).
## 🐛 Bug Fixes
* Add super cool feature ([\#9222](https://github.com/matrix-org/matrix-react-sdk/pull/9222)). Contributed by @gefgu.
* Make use of js-sdk roomNameGenerator to handle i18n for generated room names ([\#9209](https://github.com/matrix-org/matrix-react-sdk/pull/9209)). Fixes #21369.
* Fix progress bar regression throughout the app ([\#9219](https://github.com/matrix-org/matrix-react-sdk/pull/9219)). Fixes #23121.
* Reuse empty string & space string logic for event types in devtools ([\#9218](https://github.com/matrix-org/matrix-react-sdk/pull/9218)). Fixes #23115.
* Reduce amount of requests done by the onboarding task list ([\#9194](https://github.com/matrix-org/matrix-react-sdk/pull/9194)). Fixes #23085. Contributed by @justjanne.
* Avoid hardcoding branding in user onboarding ([\#9206](https://github.com/matrix-org/matrix-react-sdk/pull/9206)). Fixes #23111. Contributed by @justjanne.
* End jitsi call when member is banned ([\#8879](https://github.com/matrix-org/matrix-react-sdk/pull/8879)). Contributed by @maheichyk.
* Fix context menu being opened when clicking message action bar buttons ([\#9200](https://github.com/matrix-org/matrix-react-sdk/pull/9200)). Fixes #22279 and #23100.
* Add gap between checkbox and text in report dialog following the same pattern (8px) used in the gap between the two buttons. It fixes vector-im/element-web#23060 ([\#9195](https://github.com/matrix-org/matrix-react-sdk/pull/9195)). Contributed by @gefgu.
* Fix url preview AXE and layout issue & add percy test ([\#9189](https://github.com/matrix-org/matrix-react-sdk/pull/9189)). Fixes #23083.
* Wrap long space names ([\#9201](https://github.com/matrix-org/matrix-react-sdk/pull/9201)). Fixes #23095.
* Attempt to fix `Failed to execute 'removeChild' on 'Node'` ([\#9196](https://github.com/matrix-org/matrix-react-sdk/pull/9196)).
* Fix soft crash around space hierarchy changing between spaces ([\#9191](https://github.com/matrix-org/matrix-react-sdk/pull/9191)). Fixes matrix-org/element-web-rageshakes#14613.
* Fix soft crash around room view store metrics ([\#9190](https://github.com/matrix-org/matrix-react-sdk/pull/9190)). Fixes matrix-org/element-web-rageshakes#14361.
* Fix the same person appearing multiple times when searching for them. ([\#9177](https://github.com/matrix-org/matrix-react-sdk/pull/9177)). Fixes #22851.
* Fix space panel subspace indentation going missing ([\#9167](https://github.com/matrix-org/matrix-react-sdk/pull/9167)). Fixes #23049.
* Fix invisible power levels tile when showing hidden events ([\#9162](https://github.com/matrix-org/matrix-react-sdk/pull/9162)). Fixes #23013.
* Space panel accessibility improvements ([\#9157](https://github.com/matrix-org/matrix-react-sdk/pull/9157)). Fixes #22995.
* Fix inverted logic for showing UserWelcomeTop component ([\#9164](https://github.com/matrix-org/matrix-react-sdk/pull/9164)). Fixes #23037.
Changes in [1.11.3](https://github.com/vector-im/element-web/releases/tag/v1.11.3) (2022-08-16)
===============================================================================================
## ✨ Features
* Improve auth aria attributes and semantics ([\#22948](https://github.com/vector-im/element-web/pull/22948)).
* Device manager - New device tile info design ([\#9122](https://github.com/matrix-org/matrix-react-sdk/pull/9122)). Contributed by @kerryarchibald.
* Device manager generic settings subsection component ([\#9147](https://github.com/matrix-org/matrix-react-sdk/pull/9147)). Contributed by @kerryarchibald.
* Migrate the hidden read receipts flag to new "send read receipts" option ([\#9141](https://github.com/matrix-org/matrix-react-sdk/pull/9141)).
* Live location sharing - share location at most every 5 seconds ([\#9148](https://github.com/matrix-org/matrix-react-sdk/pull/9148)). Contributed by @kerryarchibald.
* Increase max length of voice messages to 15m ([\#9133](https://github.com/matrix-org/matrix-react-sdk/pull/9133)). Fixes #18620.
* Move pin drop out of labs ([\#9135](https://github.com/matrix-org/matrix-react-sdk/pull/9135)).
* Start DM on first message ([\#8612](https://github.com/matrix-org/matrix-react-sdk/pull/8612)). Fixes #14736.
* Remove "Add Space" button from RoomListHeader when user cannot create spaces ([\#9129](https://github.com/matrix-org/matrix-react-sdk/pull/9129)).
* The Welcome Home Screen: Dedicated Download Apps Dialog ([\#9120](https://github.com/matrix-org/matrix-react-sdk/pull/9120)). Fixes #22921. Contributed by @justjanne.
* The Welcome Home Screen: "Submit Feedback" pane ([\#9090](https://github.com/matrix-org/matrix-react-sdk/pull/9090)). Fixes #22918. Contributed by @justjanne.
* New User Onboarding Task List ([\#9083](https://github.com/matrix-org/matrix-react-sdk/pull/9083)). Fixes #22919. Contributed by @justjanne.
* Add support for disabling spell checking ([\#8604](https://github.com/matrix-org/matrix-react-sdk/pull/8604)). Fixes #21901.
* Live location share - leave maximised map open when beacons expire ([\#9098](https://github.com/matrix-org/matrix-react-sdk/pull/9098)). Contributed by @kerryarchibald.
## 🐛 Bug Fixes
* Some slash-commands (`/myroomnick`) have temporarily been disabled before the first message in a DM is sent. ([\#9193](https://github.com/matrix-org/matrix-react-sdk/pull/9193)).
* Use stable reference for active tab in tabbedView ([\#9145](https://github.com/matrix-org/matrix-react-sdk/pull/9145)). Contributed by @kerryarchibald.
* Fix pillification sometimes doubling up ([\#9152](https://github.com/matrix-org/matrix-react-sdk/pull/9152)). Fixes #23036.
* Fix highlights not being applied to plaintext messages ([\#9126](https://github.com/matrix-org/matrix-react-sdk/pull/9126)). Fixes #22787.
* Fix dismissing edit composer when change was undone ([\#9109](https://github.com/matrix-org/matrix-react-sdk/pull/9109)). Fixes #22932.
* 1-to-1 DM rooms with bots now act like DM rooms instead of multi-user-rooms before ([\#9124](https://github.com/matrix-org/matrix-react-sdk/pull/9124)). Fixes #22894.
* Apply inline start padding to selected lines on modern layout only ([\#9006](https://github.com/matrix-org/matrix-react-sdk/pull/9006)). Fixes #22768. Contributed by @luixxiul.
* Peek into world-readable rooms from spotlight ([\#9115](https://github.com/matrix-org/matrix-react-sdk/pull/9115)). Fixes #22862.
* Use default styling on nested numbered lists due to MD being sensitive ([\#9110](https://github.com/matrix-org/matrix-react-sdk/pull/9110)). Fixes #22935.
* Fix replying using chat effect commands ([\#9101](https://github.com/matrix-org/matrix-react-sdk/pull/9101)). Fixes #22824.
Changes in [1.11.2](https://github.com/vector-im/element-web/releases/tag/v1.11.2) (2022-08-03)
===============================================================================================
## ✨ Features
* Live location share - focus on user location on list item click ([\#9051](https://github.com/matrix-org/matrix-react-sdk/pull/9051)). Contributed by @kerryarchibald.
* Live location sharing - don't trigger unread counts for beacon location events ([\#9071](https://github.com/matrix-org/matrix-react-sdk/pull/9071)). Contributed by @kerryarchibald.
* Support for sending voice messages as replies and in threads ([\#9097](https://github.com/matrix-org/matrix-react-sdk/pull/9097)). Fixes #22031.
* Add `Reply in thread` button to the right-click message context-menu ([\#9004](https://github.com/matrix-org/matrix-react-sdk/pull/9004)). Fixes #22745.
* Starred_Messages_Feature_Contd_II/Outreachy ([\#9086](https://github.com/matrix-org/matrix-react-sdk/pull/9086)).
* Use "frequently used emojis" for autocompletion in composer ([\#8998](https://github.com/matrix-org/matrix-react-sdk/pull/8998)). Fixes #18978. Contributed by @grimhilt.
* Improve clickability of view source event toggle button ([\#9068](https://github.com/matrix-org/matrix-react-sdk/pull/9068)). Fixes #21856. Contributed by @luixxiul.
* Improve clickability of "collapse" link button on bubble layout ([\#9037](https://github.com/matrix-org/matrix-react-sdk/pull/9037)). Fixes #22864. Contributed by @luixxiul.
* Starred_Messages_Feature/Outreachy ([\#8842](https://github.com/matrix-org/matrix-react-sdk/pull/8842)).
* Implement Use Case Selection screen ([\#8984](https://github.com/matrix-org/matrix-react-sdk/pull/8984)). Contributed by @justjanne.
* Live location share - handle insufficient permissions in location sharing ([\#9047](https://github.com/matrix-org/matrix-react-sdk/pull/9047)). Contributed by @kerryarchibald.
* Improve _FilePanel.scss ([\#9031](https://github.com/matrix-org/matrix-react-sdk/pull/9031)). Contributed by @luixxiul.
* Improve spotlight accessibility by adding context menus ([\#8907](https://github.com/matrix-org/matrix-react-sdk/pull/8907)). Fixes #20875 and #22675. Contributed by @justjanne.
## 🐛 Bug Fixes
* Replace mask-images with svg components in MessageActionBar ([\#9088](https://github.com/matrix-org/matrix-react-sdk/pull/9088)). Fixes #22912. Contributed by @kerryarchibald.
* Unbreak in-app permalink tooltips ([\#9087](https://github.com/matrix-org/matrix-react-sdk/pull/9087)). Fixes #22874.
* Show a back button when viewing a space member ([\#9095](https://github.com/matrix-org/matrix-react-sdk/pull/9095)). Fixes #22898.
* Align the right edge of info tile lines with normal ones on IRC layout ([\#9058](https://github.com/matrix-org/matrix-react-sdk/pull/9058)). Fixes #22871. Contributed by @luixxiul.
* Prevent email verification from overriding existing sessions ([\#9075](https://github.com/matrix-org/matrix-react-sdk/pull/9075)). Fixes #22881. Contributed by @justjanne.
* Fix wrong buttons being used when exploring public rooms ([\#9062](https://github.com/matrix-org/matrix-react-sdk/pull/9062)). Fixes #22862.
* Re-add padding to generic event list summary on IRC layout ([\#9063](https://github.com/matrix-org/matrix-react-sdk/pull/9063)). Fixes #22869. Contributed by @luixxiul.
* Joining federated rooms via the spotlight search should no longer cause a "No known servers" error. ([\#9055](https://github.com/matrix-org/matrix-react-sdk/pull/9055)). Fixes #22845. Contributed by @Half-Shot.
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.
* 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.
* 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)).
* 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.
* 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.
* 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.
* 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 inputs 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)
===============================================================================================
## 🚨 BREAKING CHANGES
* Remove Piwik support ([\#8835](https://github.com/matrix-org/matrix-react-sdk/pull/8835)).
## ✨ Features
* Document how to configure a custom `home.html`. ([\#21066](https://github.com/vector-im/element-web/pull/21066)). Contributed by @johannes-krude.
* Move New Search Experience out of beta ([\#8859](https://github.com/matrix-org/matrix-react-sdk/pull/8859)). Contributed by @justjanne.
* Switch video rooms to spotlight layout when in PiP mode ([\#8912](https://github.com/matrix-org/matrix-react-sdk/pull/8912)). Fixes #22574.
* Live location sharing - render message deleted tile for redacted beacons ([\#8905](https://github.com/matrix-org/matrix-react-sdk/pull/8905)). Contributed by @kerryarchibald.
* Improve view source dialog style ([\#8883](https://github.com/matrix-org/matrix-react-sdk/pull/8883)). Fixes #22636. Contributed by @luixxiul.
* Improve integration manager dialog style ([\#8888](https://github.com/matrix-org/matrix-react-sdk/pull/8888)). Fixes #22642. Contributed by @luixxiul.
* Implement MSC3827: Filtering of `/publicRooms` by room type ([\#8866](https://github.com/matrix-org/matrix-react-sdk/pull/8866)). Fixes #22578.
* Show chat panel when opening a video room with unread messages ([\#8812](https://github.com/matrix-org/matrix-react-sdk/pull/8812)). Fixes #22527.
* Live location share - forward latest location ([\#8860](https://github.com/matrix-org/matrix-react-sdk/pull/8860)). Contributed by @kerryarchibald.
* Allow integration managers to validate user identity after opening ([\#8782](https://github.com/matrix-org/matrix-react-sdk/pull/8782)). Contributed by @Half-Shot.
* Create a common header on right panel cards on BaseCard ([\#8808](https://github.com/matrix-org/matrix-react-sdk/pull/8808)). Contributed by @luixxiul.
* Integrate searching public rooms and people into the new search experience ([\#8707](https://github.com/matrix-org/matrix-react-sdk/pull/8707)). Fixes #21354 and #19349. Contributed by @justjanne.
* Bring back waveform for voice messages and retain seeking ([\#8843](https://github.com/matrix-org/matrix-react-sdk/pull/8843)). Fixes #21904.
* Improve colors in settings ([\#7283](https://github.com/matrix-org/matrix-react-sdk/pull/7283)).
* Keep draft in composer when a slash command syntax errors ([\#8811](https://github.com/matrix-org/matrix-react-sdk/pull/8811)). Fixes #22384.
* Release video rooms as a beta feature ([\#8431](https://github.com/matrix-org/matrix-react-sdk/pull/8431)).
* Clarify logout key backup warning dialog. Contributed by @notramo. ([\#8741](https://github.com/matrix-org/matrix-react-sdk/pull/8741)). Fixes #15565. Contributed by @MadLittleMods.
* Slightly improve the look of the `Message edits` dialog ([\#8763](https://github.com/matrix-org/matrix-react-sdk/pull/8763)). Fixes #22410.
* Add support for MD / HTML in room topics ([\#8215](https://github.com/matrix-org/matrix-react-sdk/pull/8215)). Fixes #5180. Contributed by @Johennes.
* Live location share - link to timeline tile from share warning ([\#8752](https://github.com/matrix-org/matrix-react-sdk/pull/8752)). Contributed by @kerryarchibald.
* Improve composer visiblity ([\#8578](https://github.com/matrix-org/matrix-react-sdk/pull/8578)). Fixes #22072 and #17362.
* Makes the avatar of the user menu non-draggable ([\#8765](https://github.com/matrix-org/matrix-react-sdk/pull/8765)). Contributed by @luixxiul.
* Improve widget buttons behaviour and layout ([\#8734](https://github.com/matrix-org/matrix-react-sdk/pull/8734)).
* Use AccessibleButton for 'Reset All' link button on SetupEncryptionBody ([\#8730](https://github.com/matrix-org/matrix-react-sdk/pull/8730)). Contributed by @luixxiul.
* Adjust message timestamp position on TimelineCard in non-bubble layouts ([\#8745](https://github.com/matrix-org/matrix-react-sdk/pull/8745)). Fixes #22426. Contributed by @luixxiul.
* Use AccessibleButton for 'In reply to' link button on ReplyChain ([\#8726](https://github.com/matrix-org/matrix-react-sdk/pull/8726)). Fixes #22407. Contributed by @luixxiul.
* Live location share - enable reply and react to tiles ([\#8721](https://github.com/matrix-org/matrix-react-sdk/pull/8721)). Contributed by @kerryarchibald.
* Change dash to em dash issues fixed ([\#8455](https://github.com/matrix-org/matrix-react-sdk/pull/8455)). Fixes #21895. Contributed by @goelesha.
## 🐛 Bug Fixes
* Reduce video rooms log spam ([\#22665](https://github.com/vector-im/element-web/pull/22665)).
* Connect to Jitsi unmuted by default ([\#22660](https://github.com/vector-im/element-web/pull/22660)). Fixes #22637.
* Work around a Jitsi bug with display name encoding ([\#22525](https://github.com/vector-im/element-web/pull/22525)). Fixes #22521.
* Make invite dialogue fixed height ([\#8945](https://github.com/matrix-org/matrix-react-sdk/pull/8945)).
* Correct issue with tab order in new search experience ([\#8919](https://github.com/matrix-org/matrix-react-sdk/pull/8919)). Fixes #22670. Contributed by @justjanne.
* Clicking location replies now redirects to the replied event instead of opening the map ([\#8918](https://github.com/matrix-org/matrix-react-sdk/pull/8918)). Fixes #22667.
* Keep clicks on pills within the app ([\#8917](https://github.com/matrix-org/matrix-react-sdk/pull/8917)). Fixes #22653.
* Don't overlap tile bubbles with timestamps in modern layout ([\#8908](https://github.com/matrix-org/matrix-react-sdk/pull/8908)). Fixes #22425.
* Connect to Jitsi unmuted by default ([\#8909](https://github.com/matrix-org/matrix-react-sdk/pull/8909)).
* Maximize width value of display name on TimelineCard with IRC/modern layout ([\#8904](https://github.com/matrix-org/matrix-react-sdk/pull/8904)). Fixes #22651. Contributed by @luixxiul.
* Align the avatar and the display name on TimelineCard ([\#8900](https://github.com/matrix-org/matrix-react-sdk/pull/8900)). Contributed by @luixxiul.
* Remove inline margin from reactions row on IRC layout ([\#8891](https://github.com/matrix-org/matrix-react-sdk/pull/8891)). Fixes #22644. Contributed by @luixxiul.
* Align "From a thread" on search result panel on IRC layout ([\#8892](https://github.com/matrix-org/matrix-react-sdk/pull/8892)). Fixes #22645. Contributed by @luixxiul.
* Display description of E2E advanced panel as subsection text ([\#8889](https://github.com/matrix-org/matrix-react-sdk/pull/8889)). Contributed by @luixxiul.
* Remove inline end margin from images on file panel ([\#8886](https://github.com/matrix-org/matrix-react-sdk/pull/8886)). Fixes #22640. Contributed by @luixxiul.
* Disable option to `Quote` when we don't have sufficient permissions ([\#8893](https://github.com/matrix-org/matrix-react-sdk/pull/8893)). Fixes #22643.
* Add padding to font scaling loader for message bubble layout ([\#8875](https://github.com/matrix-org/matrix-react-sdk/pull/8875)). Fixes #22626. Contributed by @luixxiul.
* Set 100% max-width to display name on reply tiles ([\#8867](https://github.com/matrix-org/matrix-react-sdk/pull/8867)). Fixes #22615. Contributed by @luixxiul.
* Fix alignment of pill letter ([\#8874](https://github.com/matrix-org/matrix-react-sdk/pull/8874)). Fixes #22622. Contributed by @luixxiul.
* Move the beta pill to the right side and display the pill on video room only ([\#8873](https://github.com/matrix-org/matrix-react-sdk/pull/8873)). Fixes #22619 and #22620. Contributed by @luixxiul.
* Stop using absolute property to place beta pill on RoomPreviewCard ([\#8872](https://github.com/matrix-org/matrix-react-sdk/pull/8872)). Fixes #22617. Contributed by @luixxiul.
* Make the pill text single line ([\#8744](https://github.com/matrix-org/matrix-react-sdk/pull/8744)). Fixes #22427. Contributed by @luixxiul.
* Hide overflow of public room description on spotlight dialog result ([\#8870](https://github.com/matrix-org/matrix-react-sdk/pull/8870)). Contributed by @luixxiul.
* Fix position of message action bar on the info tile on TimelineCard in message bubble layout ([\#8865](https://github.com/matrix-org/matrix-react-sdk/pull/8865)). Fixes #22614. Contributed by @luixxiul.
* Remove inline start margin from display name on reply tiles on TimelineCard ([\#8864](https://github.com/matrix-org/matrix-react-sdk/pull/8864)). Fixes #22613. Contributed by @luixxiul.
* Improve homeserver dropdown dialog styling ([\#8850](https://github.com/matrix-org/matrix-react-sdk/pull/8850)). Fixes #22552. Contributed by @justjanne.
* Fix crash when drawing blurHash for portrait videos PSB-139 ([\#8855](https://github.com/matrix-org/matrix-react-sdk/pull/8855)). Fixes #22597. Contributed by @andybalaam.
* Fix grid blowout on pinned event tiles ([\#8816](https://github.com/matrix-org/matrix-react-sdk/pull/8816)). Fixes #22543. Contributed by @luixxiul.
* Fix temporary sync errors if there's weird settings stored in account data ([\#8857](https://github.com/matrix-org/matrix-react-sdk/pull/8857)).
* Fix reactions row overflow and gap between reactions ([\#8813](https://github.com/matrix-org/matrix-react-sdk/pull/8813)). Fixes #22093. Contributed by @luixxiul.
* Fix issues with the Create new room button in Spotlight ([\#8851](https://github.com/matrix-org/matrix-react-sdk/pull/8851)). Contributed by @justjanne.
* Remove margin from E2E icon between avatar and hidden event ([\#8584](https://github.com/matrix-org/matrix-react-sdk/pull/8584)). Fixes #22186. Contributed by @luixxiul.
* Fix waveform on a message bubble ([\#8852](https://github.com/matrix-org/matrix-react-sdk/pull/8852)). Contributed by @luixxiul.
* Location sharing maps are now loaded after reconnection ([\#8848](https://github.com/matrix-org/matrix-react-sdk/pull/8848)). Fixes #20993.
* Update the avatar mask so it doesnt cut off spaces avatars anymore ([\#8849](https://github.com/matrix-org/matrix-react-sdk/pull/8849)). Contributed by @justjanne.
* Add a bit of safety around timestamp handling for threads ([\#8845](https://github.com/matrix-org/matrix-react-sdk/pull/8845)).
* Remove top margin from event tile on a narrow viewport ([\#8814](https://github.com/matrix-org/matrix-react-sdk/pull/8814)). Contributed by @luixxiul.
* Fix keyboard shortcuts on settings tab being wrapped ([\#8825](https://github.com/matrix-org/matrix-react-sdk/pull/8825)). Fixes #22547. Contributed by @luixxiul.
* Add try-catch around blurhash loading ([\#8830](https://github.com/matrix-org/matrix-react-sdk/pull/8830)).
* Prevent new composer from overflowing from non-breakable text ([\#8829](https://github.com/matrix-org/matrix-react-sdk/pull/8829)). Fixes #22507. Contributed by @justjanne.
* Use common subheading on sidebar user settings tab ([\#8823](https://github.com/matrix-org/matrix-react-sdk/pull/8823)). Contributed by @luixxiul.
* Fix clickable area of advanced toggle on appearance user settings tab ([\#8820](https://github.com/matrix-org/matrix-react-sdk/pull/8820)). Fixes #22546. Contributed by @luixxiul.
* Disable redacting reactions if we don't have sufficient permissions ([\#8767](https://github.com/matrix-org/matrix-react-sdk/pull/8767)). Fixes #22262.
* Update the live timeline when the JS SDK resets it ([\#8806](https://github.com/matrix-org/matrix-react-sdk/pull/8806)). Fixes #22421.
* Fix flex blowout on image reply ([\#8809](https://github.com/matrix-org/matrix-react-sdk/pull/8809)). Fixes #22509 and #22510. Contributed by @luixxiul.
* Enable background color on hover for chat panel and thread panel ([\#8644](https://github.com/matrix-org/matrix-react-sdk/pull/8644)). Fixes #22273. Contributed by @luixxiul.
* Fix #20026: send read marker as soon as we change it ([\#8802](https://github.com/matrix-org/matrix-react-sdk/pull/8802)). Fixes #20026. Contributed by @andybalaam.
* Allow AppTiles to shrink as much as necessary ([\#8805](https://github.com/matrix-org/matrix-react-sdk/pull/8805)). Fixes #22499.
* Make widgets in video rooms immutable again ([\#8803](https://github.com/matrix-org/matrix-react-sdk/pull/8803)). Fixes #22497.
* Use MessageActionBar style declarations on pinned message card ([\#8757](https://github.com/matrix-org/matrix-react-sdk/pull/8757)). Fixes #22444. Contributed by @luixxiul.
* Expire video member events after 1 hour ([\#8776](https://github.com/matrix-org/matrix-react-sdk/pull/8776)).
* Name lists on invite dialog ([\#8046](https://github.com/matrix-org/matrix-react-sdk/pull/8046)). Fixes #21400 and #19463. Contributed by @luixxiul.
* Live location share - show loading UI for beacons with start timestamp in the future ([\#8775](https://github.com/matrix-org/matrix-react-sdk/pull/8775)). Fixes #22437. Contributed by @kerryarchibald.
* Fix scroll jump issue with the composer ([\#8788](https://github.com/matrix-org/matrix-react-sdk/pull/8788)). Fixes #22464.
* Fix the incorrect nesting of download button on MessageActionBar ([\#8785](https://github.com/matrix-org/matrix-react-sdk/pull/8785)). Contributed by @luixxiul.
* Revert link color change in composer ([\#8784](https://github.com/matrix-org/matrix-react-sdk/pull/8784)). Fixes #22468.
* Fix 'Logout' inline link on the splash screen ([\#8770](https://github.com/matrix-org/matrix-react-sdk/pull/8770)). Fixes #22449. Contributed by @luixxiul.
* Fix disappearing widget poput button when changing the widget layout ([\#8754](https://github.com/matrix-org/matrix-react-sdk/pull/8754)).
* Reduce gutter with the new read receipt UI ([\#8736](https://github.com/matrix-org/matrix-react-sdk/pull/8736)). Fixes #21890.
* Add ellipsis effect to hidden beacon status ([\#8755](https://github.com/matrix-org/matrix-react-sdk/pull/8755)). Fixes #22441. Contributed by @luixxiul.
* Make the pill on the basic message composer compatible with display name in RTL languages ([\#8758](https://github.com/matrix-org/matrix-react-sdk/pull/8758)). Fixes #22445. Contributed by @luixxiul.
* Prevent the banner text from being selected, replacing the spacing values with the variable ([\#8756](https://github.com/matrix-org/matrix-react-sdk/pull/8756)). Fixes #22442. Contributed by @luixxiul.
* Ensure the first device on a newly-registered account gets cross-signed properly ([\#8750](https://github.com/matrix-org/matrix-react-sdk/pull/8750)). Fixes #21977. Contributed by @duxovni.
* Hide live location option in threads composer ([\#8746](https://github.com/matrix-org/matrix-react-sdk/pull/8746)). Fixes #22424. Contributed by @kerryarchibald.
* Make sure MessageTimestamp is not hidden by EventTile_line on TimelineCard ([\#8748](https://github.com/matrix-org/matrix-react-sdk/pull/8748)). Contributed by @luixxiul.
* Make PiP motion smoother and react to window resizes correctly ([\#8747](https://github.com/matrix-org/matrix-react-sdk/pull/8747)). Fixes #22292.
* Prevent Invite and DevTools dialogs from being cut off ([\#8646](https://github.com/matrix-org/matrix-react-sdk/pull/8646)). Fixes #20911 and undefined/matrix-react-sdk#8165. Contributed by @justjanne.
* Squish event bubble tiles less ([\#8740](https://github.com/matrix-org/matrix-react-sdk/pull/8740)).
* Use random widget IDs for video rooms ([\#8739](https://github.com/matrix-org/matrix-react-sdk/pull/8739)). Fixes #22417.
* Fix read avatars overflow from the right chat panel with a maximized widget on bubble message layout ([\#8470](https://github.com/matrix-org/matrix-react-sdk/pull/8470)). Contributed by @luixxiul.
* Fix `CallView` crash ([\#8735](https://github.com/matrix-org/matrix-react-sdk/pull/8735)). Fixes #22394.
Changes in [1.10.15](https://github.com/vector-im/element-web/releases/tag/v1.10.15) (2022-06-14)
=================================================================================================
## 🐛 Bug Fixes
* Fix missing element desktop preferences ([\#8798](https://github.com/matrix-org/matrix-react-sdk/pull/8798)). Contributed by @t3chguy.
Changes in [1.10.14](https://github.com/vector-im/element-web/releases/tag/v1.10.14) (2022-06-07)
=================================================================================================
## ✨ Features
* Make Lao translation available ([\#22358](https://github.com/vector-im/element-web/pull/22358)). Fixes #22327.
* Option to disable hardware acceleration on Element Desktop ([\#22295](https://github.com/vector-im/element-web/pull/22295)). Contributed by @novocaine.
* Configure custom home.html via `.well-known/matrix/client["io.element.embedded_pages"]["home_url"]` for all your element-web/desktop users ([\#7790](https://github.com/matrix-org/matrix-react-sdk/pull/7790)). Contributed by @johannes-krude.
* Live location sharing - open location in OpenStreetMap ([\#8695](https://github.com/matrix-org/matrix-react-sdk/pull/8695)). Contributed by @kerryarchibald.
* Show a dialog when Jitsi encounters an error ([\#8701](https://github.com/matrix-org/matrix-react-sdk/pull/8701)). Fixes #22284.
* Add support for setting the `avatar_url` of widgets by integration managers. ([\#8550](https://github.com/matrix-org/matrix-react-sdk/pull/8550)). Contributed by @Fox32.
* Add an option to ignore (block) a user when reporting their events ([\#8471](https://github.com/matrix-org/matrix-react-sdk/pull/8471)).
* Add the option to disable hardware acceleration ([\#8655](https://github.com/matrix-org/matrix-react-sdk/pull/8655)). Contributed by @novocaine.
* Slightly better presentation of read receipts to screen reader users ([\#8662](https://github.com/matrix-org/matrix-react-sdk/pull/8662)). Fixes #22293. Contributed by @pvagner.
* Add jump to related event context menu item ([\#6775](https://github.com/matrix-org/matrix-react-sdk/pull/6775)). Fixes #19883.
* Add public room directory hook ([\#8626](https://github.com/matrix-org/matrix-react-sdk/pull/8626)).
## 🐛 Bug Fixes
* Stop Jitsi if we time out while connecting to a video room ([\#22301](https://github.com/vector-im/element-web/pull/22301)). Fixes #22283.
* Remove inline margin from UTD error message inside a reply tile on ThreadView ([\#8708](https://github.com/matrix-org/matrix-react-sdk/pull/8708)). Fixes #22376. Contributed by @luixxiul.
* Move unread notification dots of the threads list to the expected position ([\#8700](https://github.com/matrix-org/matrix-react-sdk/pull/8700)). Fixes #22350. Contributed by @luixxiul.
* Prevent overflow of grid items on a bubble with UTD generally ([\#8697](https://github.com/matrix-org/matrix-react-sdk/pull/8697)). Contributed by @luixxiul.
* Create 'Unable To Decrypt' grid layout for hidden events on a bubble layout ([\#8704](https://github.com/matrix-org/matrix-react-sdk/pull/8704)). Fixes #22365. Contributed by @luixxiul.
* Fix - AccessibleButton does not set disabled attribute ([\#8682](https://github.com/matrix-org/matrix-react-sdk/pull/8682)). Contributed by @kerryarchibald.
* Fix font not resetting when logging out ([\#8670](https://github.com/matrix-org/matrix-react-sdk/pull/8670)). Fixes #17228.
* Fix local aliases section of room settings not working for some homeservers (ie ([\#8698](https://github.com/matrix-org/matrix-react-sdk/pull/8698)). Fixes #22337.
* Align EventTile_line with display name on message bubble ([\#8692](https://github.com/matrix-org/matrix-react-sdk/pull/8692)). Fixes #22343. Contributed by @luixxiul.
* Convert references to direct chat -> direct message ([\#8694](https://github.com/matrix-org/matrix-react-sdk/pull/8694)). Contributed by @novocaine.
* Improve combining diacritics for U+20D0 to U+20F0 in Chrome ([\#8687](https://github.com/matrix-org/matrix-react-sdk/pull/8687)).
* Make the empty thread panel fill BaseCard ([\#8690](https://github.com/matrix-org/matrix-react-sdk/pull/8690)). Fixes #22338. Contributed by @luixxiul.
* Fix edge case around composer handling gendered facepalm emoji ([\#8686](https://github.com/matrix-org/matrix-react-sdk/pull/8686)).
* Fix a grid blowout due to nowrap displayName on a bubble with UTD ([\#8688](https://github.com/matrix-org/matrix-react-sdk/pull/8688)). Fixes #21914. Contributed by @luixxiul.
* Apply the same max-width to image tile on the thread timeline as message bubble ([\#8669](https://github.com/matrix-org/matrix-react-sdk/pull/8669)). Fixes #22313. Contributed by @luixxiul.
* Fix dropdown button size for picture-in-picture CallView ([\#8680](https://github.com/matrix-org/matrix-react-sdk/pull/8680)). Fixes #22316. Contributed by @luixxiul.
* Live location sharing - fix square border for image-less avatar (PSF-1052) ([\#8679](https://github.com/matrix-org/matrix-react-sdk/pull/8679)). Contributed by @kerryarchibald.
* Stop connecting to a video room if the widget messaging disappears ([\#8660](https://github.com/matrix-org/matrix-react-sdk/pull/8660)).
* Fix file button and audio player overflowing from message bubble ([\#8666](https://github.com/matrix-org/matrix-react-sdk/pull/8666)). Fixes #22308. Contributed by @luixxiul.
* Don't show broken composer format bar when selection is whitespace ([\#8673](https://github.com/matrix-org/matrix-react-sdk/pull/8673)). Fixes #10788.
* Fix media upload http 413 handling ([\#8674](https://github.com/matrix-org/matrix-react-sdk/pull/8674)).
* Fix emoji picker for editing thread responses ([\#8671](https://github.com/matrix-org/matrix-react-sdk/pull/8671)). Fixes matrix-org/element-web-rageshakes#13129.
* Map attribution while sharing live location is now visible ([\#8621](https://github.com/matrix-org/matrix-react-sdk/pull/8621)). Fixes #22236. Contributed by @weeman1337.
* Fix info tile overlapping the time stamp on TimelineCard ([\#8639](https://github.com/matrix-org/matrix-react-sdk/pull/8639)). Fixes #22256. Contributed by @luixxiul.
* Fix position of wide images on IRC / modern layout ([\#8667](https://github.com/matrix-org/matrix-react-sdk/pull/8667)). Fixes #22309. Contributed by @luixxiul.
* Fix other user's displayName being wrapped on the bubble message layout ([\#8456](https://github.com/matrix-org/matrix-react-sdk/pull/8456)). Fixes #22004. Contributed by @luixxiul.
* Set spacing declarations to elements in mx_EventTile_mediaLine ([\#8665](https://github.com/matrix-org/matrix-react-sdk/pull/8665)). Fixes #22307. Contributed by @luixxiul.
* Fix wide image overflowing from the thumbnail container ([\#8663](https://github.com/matrix-org/matrix-react-sdk/pull/8663)). Fixes #22303. Contributed by @luixxiul.
* Fix styles of "Show all" link button on ReactionsRow ([\#8658](https://github.com/matrix-org/matrix-react-sdk/pull/8658)). Fixes #22300. Contributed by @luixxiul.
* Automatically log in after registration ([\#8654](https://github.com/matrix-org/matrix-react-sdk/pull/8654)). Fixes #19305. Contributed by @justjanne.
* Fix offline status in window title not working reliably ([\#8656](https://github.com/matrix-org/matrix-react-sdk/pull/8656)).
* Align input area with event body's first letter in a thread on IRC/modern layout ([\#8636](https://github.com/matrix-org/matrix-react-sdk/pull/8636)). Fixes #22252. Contributed by @luixxiul.
* Fix crash on null idp for SSO buttons ([\#8650](https://github.com/matrix-org/matrix-react-sdk/pull/8650)). Contributed by @hughns.
* Don't open the regular browser or our context menu on right-clicking the `Options` button in the message action bar ([\#8648](https://github.com/matrix-org/matrix-react-sdk/pull/8648)). Fixes #22279.
* Show notifications even when Element is focused ([\#8590](https://github.com/matrix-org/matrix-react-sdk/pull/8590)). Contributed by @sumnerevans.
* Remove padding from the buttons on edit message composer of a event tile on a thread ([\#8632](https://github.com/matrix-org/matrix-react-sdk/pull/8632)). Contributed by @luixxiul.
* ensure metaspace changes correctly notify listeners ([\#8611](https://github.com/matrix-org/matrix-react-sdk/pull/8611)). Fixes #21006. Contributed by @justjanne.
* Hide image banner on stickers, they have a tooltip already ([\#8641](https://github.com/matrix-org/matrix-react-sdk/pull/8641)). Fixes #22244.
* Adjust EditMessageComposer style declarations ([\#8631](https://github.com/matrix-org/matrix-react-sdk/pull/8631)). Fixes #22231. Contributed by @luixxiul.
Changes in [1.10.13](https://github.com/vector-im/element-web/releases/tag/v1.10.13) (2022-05-24)
=================================================================================================

View File

@@ -1,4 +1,283 @@
Contributing code to Element
============================
Contributing code to Element Web
================================
Element follows the same pattern as the [matrix-js-sdk](https://github.com/matrix-org/matrix-js-sdk/blob/develop/CONTRIBUTING.md).
Everyone is welcome to contribute code to Element Web, provided that they are
willing to license their contributions under the same license as the project
itself. We follow a simple 'inbound=outbound' model for contributions: the act
of submitting an 'inbound' contribution means that the contributor agrees to
license the code under the same terms as the project's overall 'outbound'
license - in this case, Apache Software License v2 (see
[LICENSE](LICENSE)).
How to contribute
-----------------
The preferred and easiest way to contribute changes to the project is to fork
it on github, and then create a pull request to ask us to pull your changes
into our repo (https://help.github.com/articles/using-pull-requests/)
We use GitHub's pull request workflow to review the contribution, and either
ask you to make any refinements needed or merge it and make them ourselves.
Things that should go into your PR description:
* A changelog entry in the `Notes` section (see below)
* References to any bugs fixed by the change (in GitHub's `Fixes` notation)
* Describe the why and what is changing in the PR description so it's easy for
onlookers and reviewers to onboard and context switch. This information is
also helpful when we come back to look at this in 6 months and ask "why did
we do it like that?" we have a chance of finding out.
* Why didn't it work before? Why does it work now? What use cases does it
unlock?
* If you find yourself adding information on how the code works or why you
chose to do it the way you did, make sure this information is instead
written as comments in the code itself.
* Sometimes a PR can change considerably as it is developed. In this case,
the description should be updated to reflect the most recent state of
the PR. (It can be helpful to retain the old content under a suitable
heading, for additional context.)
* Include both **before** and **after** screenshots to easily compare and discuss
what's changing.
* Include a step-by-step testing strategy so that a reviewer can check out the
code locally and easily get to the point of testing your change.
* Add comments to the diff for the reviewer that might help them to understand
why the change is necessary or how they might better understand and review it.
We rely on information in pull request to populate the information that goes into
the changelogs our users see, both for Element Web itself and other projects on
which it is based. This is picked up from both labels on the pull request and
the `Notes:` annotation in the description. By default, the PR title will be
used for the changelog entry, but you can specify more options, as follows.
To add a longer, more detailed description of the change for the changelog:
*Fix llama herding bug*
```
Notes: Fix a bug (https://github.com/matrix-org/notaproject/issues/123) where the 'Herd' button would not herd more than 8 Llamas if the moon was in the waxing gibbous phase
```
For some PRs, it's not useful to have an entry in the user-facing changelog (this is
the default for PRs labelled with `T-Task`):
*Remove outdated comment from `Ungulates.ts`*
```
Notes: none
```
Sometimes, you're fixing a bug in a downstream project, in which case you want
an entry in that project's changelog. You can do that too:
*Fix another herding bug*
```
Notes: Fix a bug where the `herd()` function would only work on Tuesdays
element-web notes: Fix a bug where the 'Herd' button only worked on Tuesdays
```
This example is for Element Web. You can specify:
* matrix-react-sdk
* element-web
* element-desktop
If your PR introduces a breaking change, use the `Notes` section in the same
way, additionally adding the `X-Breaking-Change` label (see below). There's no need
to specify in the notes that it's a breaking change - this will be added
automatically based on the label - but remember to tell the developer how to
migrate:
*Remove legacy class*
```
Notes: Remove legacy `Camelopard` class. `Giraffe` should be used instead.
```
Other metadata can be added using labels.
* `X-Breaking-Change`: A breaking change - adding this label will mean the change causes a *major* version bump.
* `T-Enhancement`: A new feature - adding this label will mean the change causes a *minor* version bump.
* `T-Defect`: A bug fix (in either code or docs).
* `T-Task`: No user-facing changes, eg. code comments, CI fixes, refactors or tests. Won't have a changelog entry unless you specify one.
If you don't have permission to add labels, your PR reviewer(s) can work with you
to add them: ask in the PR description or comments.
We use continuous integration, and all pull requests get automatically tested:
if your change breaks the build, then the PR will show that there are failed
checks, so please check back after a few minutes.
Tests
-----
Your PR should include tests.
For new user facing features in `matrix-js-sdk`, `matrix-react-sdk` or `element-web`, you
must include:
1. Comprehensive unit tests written in Jest. These are located in `/test`.
2. "happy path" end-to-end tests.
These are located in `/cypress/e2e` in `matrix-react-sdk`, and
are run using `element-web`. Ideally, you would also include tests for edge
and error cases.
Unit tests are expected even when the feature is in labs. It's good practice
to write tests alongside the code as it ensures the code is testable from
the start, and gives you a fast feedback loop while you're developing the
functionality. End-to-end tests should be added prior to the feature
leaving labs, but don't have to be present from the start (although it might
be beneficial to have some running early, so you can test things faster).
For bugs in those repos, your change must include at least one unit test or
end-to-end test; which is best depends on what sort of test most concisely
exercises the area.
Changes to must be accompanied by unit tests written in Jest.
These are located in `/spec/` in `matrix-js-sdk` or `/test/` in `element-web`
and `matrix-react-sdk`.
When writing unit tests, please aim for a high level of test coverage
for new code - 80% or greater. If you cannot achieve that, please document
why it's not possible in your PR.
Some sections of code are not sensible to add coverage for, such as those
which explicitly inhibit noisy logging for tests. Which can be hidden using
an istanbul magic comment as [documented here][1]. See example:
```javascript
/* istanbul ignore if */
if (process.env.NODE_ENV !== "test") {
logger.error("Log line that is noisy enough in tests to want to skip");
}
```
Tests validate that your change works as intended and also document
concisely what is being changed. Ideally, your new tests fail
prior to your change, and succeed once it has been applied. You may
find this simpler to achieve if you write the tests first.
If you're spiking some code that's experimental and not being used to support
production features, exceptions can be made to requirements for tests.
Note that tests will still be required in order to ship the feature, and it's
strongly encouraged to think about tests early in the process, as adding
tests later will become progressively more difficult.
If you're not sure how to approach writing tests for your change, ask for help
in [#element-dev](https://matrix.to/#/#element-dev:matrix.org).
Code style
----------
Element Web aims to target TypeScript/ES6. All new files should be written in
TypeScript and existing files should use ES6 principles where possible.
Members should not be exported as a default export in general - it causes problems
with the architecture of the SDK (index file becomes less clear) and could
introduce naming problems (as default exports get aliased upon import). In
general, avoid using `export default`.
The remaining code style is documented in [code_style.md](./code_style.md).
Contributors are encouraged to it and follow the principles set out there.
Please ensure your changes match the cosmetic style of the existing project,
and ***never*** mix cosmetic and functional changes in the same commit, as it
makes it horribly hard to review otherwise.
Attribution
-----------
Everyone who contributes anything to Matrix is welcome to be listed in the
AUTHORS.rst file for the project in question. Please feel free to include a
change to AUTHORS.rst in your pull request to list yourself and a short
description of the area(s) you've worked on. Also, we sometimes have swag to
give away to contributors - if you feel that Matrix-branded apparel is missing
from your life, please mail us your shipping address to matrix at matrix.org
and we'll try to fix it :)
Sign off
--------
In order to have a concrete record that your contribution is intentional
and you agree to license it under the same terms as the project's license, we've
adopted the same lightweight approach that the Linux Kernel
(https://www.kernel.org/doc/Documentation/SubmittingPatches), Docker
(https://github.com/docker/docker/blob/master/CONTRIBUTING.md), and many other
projects use: the DCO (Developer Certificate of Origin:
http://developercertificate.org/). This is a simple declaration that you wrote
the contribution or otherwise have the right to contribute it to Matrix:
```
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```
If you agree to this for your contribution, then all that's needed is to
include the line in your commit or pull request comment:
```
Signed-off-by: Your Name <your@email.example.org>
```
We accept contributions under a legally identifiable name, such as your name on
government documentation or common-law names (names claimed by legitimate usage
or repute). Unfortunately, we cannot accept anonymous contributions at this
time.
Git allows you to add this signoff automatically when using the `-s` flag to
`git commit`, which uses the name and email set in your `user.name` and
`user.email` git configs.
If you forgot to sign off your commits before making your pull request and are
on Git 2.17+ you can mass signoff using rebase:
```
git rebase --signoff origin/develop
```
Review expectations
===================
See https://github.com/vector-im/element-meta/wiki/Review-process
Merge Strategy
==============
The preferred method for merging pull requests is squash merging to keep the
commit history trim, but it is up to the discretion of the team member merging
the change. We do not support rebase merges due to `allchange` being unable to
handle them. When merging make sure to leave the default commit title, or
at least leave the PR number at the end in brackets like by default.
When stacking pull requests, you may wish to do the following:
1. Branch from develop to your branch (branch1), push commits onto it and open a pull request
2. Branch from your base branch (branch1) to your work branch (branch2), push commits and open a pull request configuring the base to be branch1, saying in the description that it is based on your other PR.
3. Merge the first PR using a merge commit otherwise your stacked PR will need a rebase. Github will automatically adjust the base branch of your other PR to be develop.
[1]: https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md

View File

@@ -27,9 +27,6 @@ FROM nginx:alpine
COPY --from=builder /src/webapp /app
# Insert wasm type into Nginx mime.types file so they load correctly.
RUN sed -i '3i\ \ \ \ application/wasm wasm\;' /etc/nginx/mime.types
# Override default nginx config
COPY /nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf

25
build_config.sample.yaml Normal file
View File

@@ -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"

455
code_style.md Normal file
View File

@@ -0,0 +1,455 @@
# Element Web/Desktop code style guide
This code style applies to projects which the element-web team directly maintains or is reasonably
adjacent to. As of writing, these are:
* element-desktop
* element-web
* matrix-react-sdk
* matrix-js-sdk
Other projects might extend this code style for increased strictness. For example, matrix-events-sdk
has stricter code organization to reduce the maintenance burden. These projects will declare their code
style within their own repos.
Note that some requirements will be layer-specific. Where the requirements don't make sense for the
project, they are used to the best of their ability, used in spirit, or ignored if not applicable,
in that order.
## Guiding principles
1. We want the lint rules to feel natural for most team members. No one should have to think too much
about the linter.
2. We want to stay relatively close to [industry standards](https://google.github.io/styleguide/tsguide.html)
to make onboarding easier.
3. We describe what good code looks like rather than point out bad examples. We do this to avoid
excessively punishing people for writing code which fails the linter.
4. When something isn't covered by the style guide, we come up with a reasonable rule rather than
claim that it "passes the linter". We update the style guide and linter accordingly.
5. While we aim to improve readability, understanding, and other aspects of the code, we deliberately
do not let solely our personal preferences drive decisions.
6. We aim to have an understandable guide.
## Coding practices
1. Lint rules enforce decisions made by this guide. The lint rules and this guide are kept in
perfect sync.
2. Commit messages are descriptive for the changes. When the project supports squash merging,
only the squashed commit needs to have a descriptive message.
3. When there is disagreement with a code style approved by the linter, a PR is opened against
the lint rules rather than making exceptions on the responsible code PR.
4. Rules which are intentionally broken (via eslint-ignore, @ts-ignore, etc) have a comment
included in the immediate vicinity for why. Determination of whether this is valid applies at
code review time.
5. When editing a file, nearby code is updated to meet the modern standards. "Nearby" is subjective,
but should be whatever is reasonable at review time. Such an example might be to update the
class's code style, but not the file's.
1. These changes should be minor enough to include in the same commit without affecting a code
reviewer's job.
## All code
Unless otherwise specified, the following applies to all code:
1. 120 character limit per line. Match existing code in the file if it is using a lower guide.
2. A tab/indentation is 4 spaces.
3. Newlines are Unix.
4. A file has a single empty line at the end.
5. Lines are trimmed of all excess whitespace, including blank lines.
6. Long lines are broken up for readability.
## TypeScript / JavaScript {#typescript-javascript}
1. Write TypeScript. Turn JavaScript into TypeScript when working in the area.
2. Use named exports.
3. Break long lines to appear as follows:
```typescript
// Function arguments
function doThing(
arg1: string,
arg2: string,
arg3: string,
): boolean {
return !!arg1
&& !!arg2
&& !!arg3;
}
// Calling a function
doThing(
"String 1",
"String 2",
"String 3",
);
// Reduce line verbosity when possible/reasonable
doThing(
"String1", "String 2",
"A much longer string 3",
);
// Chaining function calls
something.doThing()
.doOtherThing()
.doMore()
.somethingElse(it =>
useIt(it)
);
```
4. Use semicolons for block/line termination.
1. Except when defining interfaces, classes, and non-arrow functions specifically.
5. When a statement's body is a single line, it may be written without curly braces, so long as the body is placed on
the same line as the statement.
```typescript
if (x) doThing();
```
6. Blocks for `if`, `for`, `switch` and so on must have a space surrounding the condition, but not
within the condition.
```typescript
if (x) {
doThing();
}
```
7. Mixing of logical operands requires brackets to explicitly define boolean logic.
```typescript
if ((a > b && b > c) || (d < e)) return true;
```
8. Ternaries use the same rules as `if` statements, plus the following:
```typescript
// Single line is acceptable
const val = a > b ? doThing() : doOtherThing();
// Multiline is also okay
const val = a > b
? doThing()
: doOtherThing();
// Use brackets when using multiple conditions.
// Maximum 3 conditions, prefer 2 or less.
const val = (a > b && b > c) ? doThing() : doOtherThing();
```
9. lowerCamelCase is used for function and variable naming.
10. UpperCamelCase is used for general naming.
11. Interface names should not be marked with an uppercase `I`.
12. One variable declaration per line.
13. If a variable is not receiving a value on declaration, its type must be defined.
```typescript
let errorMessage: Optional<string>;
```
14. Objects, arrays, enums and so on must have each line terminated with a comma:
```typescript
const obj = {
prop: 1,
else: 2,
};
const arr = [
"one",
"two",
];
enum Thing {
Foo,
Bar,
}
doThing(
"arg1",
"arg2",
);
```
15. Objects can use shorthand declarations, including mixing of types.
```typescript
{
room,
prop: this.prop,
}
// ... or ...
{ room, prop: this.prop }
```
16. Object keys should always be non-strings when possible.
```typescript
{
property: "value",
"m.unavoidable": true,
[EventType.RoomMessage]: true,
}
```
17. Explicitly cast to a boolean.
```typescript
!!stringVar || Boolean(stringVar)
```
18. Use `switch` statements when checking against more than a few enum-like values.
19. Use `const` for constants, `let` for mutability.
20. Describe types exhaustively (ensure noImplictAny would pass).
1. Notable exceptions are arrow functions used as parameters, when a void return type is
obvious, and when declaring and assigning a variable in the same line.
21. Declare member visibility (public/private/protected).
22. Private members are private and not prefixed unless required for naming conflicts.
1. Convention is to use an underscore or the word "internal" to denote conflicted member names.
2. "Conflicted" typically refers to a getter which wants the same name as the underlying variable.
23. Prefer readonly members over getters backed by a variable, unless an internal setter is required.
24. Prefer Interfaces for object definitions, and types for parameter-value-only declarations.
1. Note that an explicit type is optional if not expected to be used outside of the function call,
unlike in this example:
```typescript
interface MyObject {
hasString: boolean;
}
type Options = MyObject | string;
function doThing(arg: Options) {
// ...
}
```
25. Variables/properties which are `public static` should also be `readonly` when possible.
26. Interface and type properties are terminated with semicolons, not commas.
27. Prefer arrow formatting when declaring functions for interfaces/types:
```typescript
interface Test {
myCallback: (arg: string) => Promise<void>;
}
```
28. Prefer a type definition over an inline type. For example, define an interface.
29. Always prefer to add types or declare a type over the use of `any`. Prefer inferred types
when they are not `any`.
1. When using `any`, a comment explaining why must be present.
30. `import` should be used instead of `require`, as `require` does not have types.
31. Export only what can be reused.
32. Prefer a type like `Optional<X>` (`type Optional<T> = T | null | undefined`) instead
of truly optional parameters.
1. A notable exception is when the likelihood of a bug is minimal, such as when a function
takes an argument that is more often not required than required. An example where the
`?` operator is inappropriate is when taking a room ID: typically the caller should
supply the room ID if it knows it, otherwise deliberately acknowledge that it doesn't
have one with `null`.
```typescript
function doThingWithRoom(
thing: string,
room: Optional<string>, // require the caller to specify
) {
// ...
}
```
33. There should be approximately one interface, class, or enum per file unless the file is named
"types.ts", "global.d.ts", or ends with "-types.ts".
1. The file name should match the interface, class, or enum name.
34. Bulk functions can be declared in a single file, though named as "foo-utils.ts" or "utils/foo.ts".
35. Imports are grouped by external module imports first, then by internal imports.
36. File ordering is not strict, but should generally follow this sequence:
1. Licence header
2. Imports
3. Constants
4. Enums
5. Interfaces
6. Functions
7. Classes
1. Public/protected/private static properties
2. Public/protected/private properties
3. Constructors
4. Public/protected/private getters & setters
5. Protected and abstract functions
6. Public/private functions
7. Public/protected/private static functions
37. Variable names should be noticeably unique from their types. For example, "str: string" instead
of "string: string".
38. Use double quotes to enclose strings. You may use single quotes if the string contains double quotes.
```typescript
const example1 = "simple string";
const example2 = 'string containing "double quotes"';
```
39. Prefer async-await to promise-chaining
```typescript
async function () {
const result = await anotherAsyncFunction();
// ...
}
```
## React
Inheriting all the rules of TypeScript, the following additionally apply:
1. Types for lifecycle functions are not required (render, componentDidMount, and so on).
2. Class components must always have a `Props` interface declared immediately above them. It can be
empty if the component accepts no props.
3. Class components should have an `State` interface declared immediately above them, but after `Props`.
4. Props and State should not be exported. Use `React.ComponentProps<typeof ComponentNameHere>`
instead.
5. One component per file, except when a component is a utility component specifically for the "primary"
component. The utility component should not be exported.
6. Exported constants, enums, interfaces, functions, etc must be separate from files containing components
or stores.
7. Stores should use a singleton pattern with a static instance property:
```typescript
class FooStore {
public static readonly instance = new FooStore();
// or if the instance can't be created eagerly:
private static _instance: FooStore;
public static get instance(): FooStore {
if (!FooStore._instance) {
FooStore._instance = new FooStore();
}
return FooStore._instance;
}
}
```
8. Stores must support using an alternative MatrixClient and dispatcher instance.
9. Utilities which require JSX must be split out from utilities which do not. This is to prevent import
cycles during runtime where components accidentally include more of the app than they intended.
10. Interdependence between stores should be kept to a minimum. Break functions and constants out to utilities
if at all possible.
11. A component should only use CSS class names in line with the component name.
1. When knowingly using a class name from another component, document it.
12. Break components over multiple lines like so:
```typescript
function render() {
return <Component
prop1="test"
prop2={this.state.variable}
/>;
// or
return (
<Component
prop1="test"
prop2={this.state.variable}
/>
);
// or if children are needed (infer parens usage)
return <Component
prop1="test"
prop2={this.state.variable}
>{ _t("Short string here") }</Component>;
return <Component
prop1="test"
prop2={this.state.variable}
>
{ _t("Longer string here") }
</Component>;
}
```
13. Curly braces within JSX should be padded with a space, however properties on those components should not.
See above code example.
14. Functions used as properties should either be defined on the class or stored in a variable. They should not
be inline unless mocking/short-circuiting the value.
15. Prefer hooks (functional components) over class components. Be consistent with the existing area if unsure
which should be used.
1. Unless the component is considered a "structure", in which case use classes.
16. Write more views than structures. Structures are chunks of functionality like MatrixChat while views are
isolated components.
17. Components should serve a single, or near-single, purpose.
18. Prefer to derive information from component properties rather than establish state.
19. Do not use `React.Component::forceUpdate`.
## Stylesheets (\*.pcss = PostCSS + Plugins)
Note: We use PostCSS + some plugins to process our styles. It looks like SCSS, but actually it is not.
1. Class names must be prefixed with "mx_".
2. Class names should denote the component which defines them, followed by any context:
1. mx_MyFoo
2. mx_MyFoo_avatar
3. mx_MyFoo_avatar--user
3. Use the `$font` and `$spacing` variables instead of manual values.
4. Keep indentation/nesting to a minimum. Maximum suggested nesting is 5 layers.
5. Use the whole class name instead of shortcuts:
```scss
.mx_MyFoo {
& .mx_MyFoo_avatar { // instead of &_avatar
// ...
}
}
```
6. Break multiple selectors over multiple lines this way:
```scss
.mx_MyFoo,
.mx_MyBar,
.mx_MyFooBar {
// ...
}
```
7. Non-shared variables should use $lowerCamelCase. Shared variables use $dashed-naming.
8. Overrides to Z indexes, adjustments of dimensions/padding with pixels, and so on should all be
documented for what the values mean:
```scss
.mx_MyFoo {
width: calc(100% - 12px); // 12px for read receipts
top: -2px; // visually centred vertically
z-index: 10; // above user avatar, but below dialogs
}
```
9. Avoid the use of `!important`. If necessary, add a comment.
## Tests
1. Tests must be written in TypeScript.
2. Jest mocks are declared below imports, but above everything else.
3. Use the following convention template:
```typescript
// Describe the class, component, or file name.
describe("FooComponent", () => {
// all test inspecific variables go here
beforeEach(() => {
// exclude if not used.
});
afterEach(() => {
// exclude if not used.
});
// Use "it should..." terminology
it("should call the correct API", async () => {
// test-specific variables go here
// function calls/state changes go here
// expectations go here
});
});
// If the file being tested is a utility class:
describe("foo-utils", () => {
describe("firstUtilFunction", () => {
it("should...", async () => {
// ...
});
});
describe("secondUtilFunction", () => {
it("should...", async () => {
// ...
});
});
});
```

View File

@@ -34,12 +34,6 @@
"matrix.org"
]
},
"piwik": {
"url": "https://piwik.riot.im/",
"whitelisted_hs_urls": ["https://matrix.org"],
"whitelisted_is_urls": ["https://vector.im", "https://matrix.org"],
"siteId": 1
},
"enable_presence_by_hs_url": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false

View File

@@ -206,7 +206,7 @@ Together, the options might look like this in your config:
"auth_header_logo_url": "https://example.org/assets/logo.svg",
"auth_footer_links": [
{"text": "FAQ", "url": "https://example.org/faq"},
{"text": "Donate", "url": "https://example.org/donate"},
{"text": "Donate", "url": "https://example.org/donate"}
]
},
"embedded_pages": {
@@ -393,25 +393,19 @@ To add additional "terms and conditions" links throughout the app, use the follo
## Analytics
Analytics are currently possible with two systems: `posthog` (preferred) and <del>`piwik`</del> (matomo; deprecated). When
these configuration options are not present, analytics are deemed impossible and the user won't be asked to opt-in to the
system.
To configure [Posthog](https://posthog.com/), add the following under `posthog` in your config:
1. `api_host`: The hostname of the posthog server.
2. `project_api_key`: The API key from posthog.
To configure Piwik (***DEPRECATED***), add the following under `piwik` in your config:
When these configuration options are not present,
analytics are deemed impossible and the user won't be asked to opt in to the system.
1. `url`: The URL of the piwik server.
2. `site_id`: The site ID to use.
3. `policy_url`: URL to the analytics collection policy.
4. `whitelisted_hs_urls`: A list of homeserver client-server URLs to *not* redact from analytics.
There are additional root-level options which can be specified:
Additionally, you may set `"piwik": false` to disable piwik configuration too. An `analytics_owner` can also be specified in your
config to replace the company name used in dialogs talking about analytics - this defaults to `brand`, and is useful when the
provider of analytics is different from the provider of the Element instance.
1. `analytics_owner`: the company name used in dialogs talking about analytics - this defaults to `brand`,
and is useful when the provider of analytics is different from the provider of the Element instance.
2. `privacy_policy_url`: URL to the privacy policy including the analytics collection policy.
## Server hosting links

View File

@@ -70,12 +70,6 @@ Then you can deploy it to your cluster with something like `kubectl apply -f my-
"matrix.org"
]
},
"piwik": {
"url": "https://piwik.riot.im/",
"whitelistedHSUrls": ["https://matrix.org"],
"whitelistedISUrls": ["https://vector.im", "https://matrix.org"],
"siteId": 1
},
"enable_presence_by_hs_url": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false

View File

@@ -108,10 +108,6 @@ To enable message previews for reactions in DMs only, enable `feature_roomlist_p
Allows users to receive encrypted messages by creating a device that is stored
encrypted on the server, as described in [MSC2697](https://github.com/matrix-org/matrix-doc/pull/2697).
## Hidden read receipts (`feature_hidden_read_receipts`)
Enables sending hidden read receipts as per [MSC2285](https://github.com/matrix-org/matrix-doc/pull/2285)
## Breadcrumbs v2 (`feature_breadcrumbs_v2`)
Instead of showing the horizontal list of breadcrumbs under the filter field, the new UX is an interactive context menu
@@ -146,14 +142,6 @@ If no right panel state is known for the room or it was closed on the last room
visit, it will default to the room member list. Otherwise, the saved card last
used in that room is shown.
## Show current profile of users on historical messages (`feature_use_only_current_profiles`)
An experimental flag to determine how the app would behave if a user's current display
name and avatar (profile) were shown on historical messages instead of the profile details
at the time when the message was sent.
When enabled, historical messages will use the current profile for the sender.
## Pin drop location sharing (`feature_location_share_pin_drop`) [In Development]
Enables sharing a pin drop location to the timeline.
@@ -170,12 +158,19 @@ Threads can be access by clicking their summary below the root event on the room
This feature might work in degraded mode if the homeserver a user is connected to does not advertise support for the unstable feature `org.matrix.msc3440` when calling the `/versions` API endpoint.
## Right-click Message Context Menu (`feature_message_right_click_context_menu`)
Enables showing a right-click context menu when right-clicking messages in the
timeline. This menu shows options that can usually be found in the message
action bar or in the message options.
## Voice & video rooms (`feature_video_rooms`) [In Development]
## Video rooms (`feature_video_rooms`)
Enables support for creating and joining video rooms, which are persistent video chats that users can jump in and out of.
## Rich text in room topics (`feature_html_topic`) [In Development]
Enables rendering of MD / HTML in room topics.
## Exploring public spaces (`feature_exploring_public_spaces`)
Enables exploring public spaces in the new search dialog. Requires the server to
have [MSC3827](https://github.com/matrix-org/matrix-spec-proposals/pull/3827) enabled.
## Favourite Messages (`feature_favourite_messages`) [In Development]
Enables users to bookmark a message or content for a later reference.

48
docs/modules.md Normal file
View File

@@ -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.

View File

@@ -11,11 +11,11 @@ As of March 2022, skins are not fully supported; Element is the only available s
To define a theme for Element:
1. Pick a name, e.g. `teal`. at time of writing we have `light` and `dark`.
2. Fork `src/skins/vector/css/themes/dark.scss` to be `teal.scss`
3. Fork `src/skins/vector/css/themes/_base.scss` to be `_teal.scss`
4. Override variables in `_teal.scss` as desired. You may wish to delete ones
which don't differ from `_base.scss`, to make it clear which are being
overridden. If every single colour is being changed (as per `_dark.scss`)
2. Fork `src/skins/vector/css/themes/dark.pcss` to be `teal.pcss`
3. Fork `src/skins/vector/css/themes/_base.pcss` to be `_teal.pcss`
4. Override variables in `_teal.pcss` as desired. You may wish to delete ones
which don't differ from `_base.pcss`, to make it clear which are being
overridden. If every single colour is being changed (as per `_dark.pcss`)
then you might as well keep them all.
5. Add the theme to the list of entrypoints in webpack.config.js
6. Add the theme to the list of themes in matrix-react-sdk's UserSettings.js

View File

@@ -14,11 +14,6 @@
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"uisi_autorageshake_app": "element-auto-uisi",
"showLabsSettings": false,
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1,
"policyUrl": "https://element.io/cookie-policy"
},
"roomDirectory": {
"servers": [
"matrix.org",
@@ -54,5 +49,6 @@
"projectApiKey": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"apiHost": "https://posthog.element.io"
},
"privacy_policy_url": "https://element.io/cookie-policy",
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
}

View File

@@ -1,191 +0,0 @@
#!/usr/bin/env python
#
# download and unpack a element-web tarball.
#
# Allows `bundles` to be extracted to a common directory, and a link to
# config.json to be added.
from __future__ import print_function
import argparse
import os
import os.path
import subprocess
import sys
import tarfile
import shutil
import glob
try:
# python3
from urllib.request import urlretrieve
except ImportError:
# python2
from urllib import urlretrieve
class DeployException(Exception):
pass
def create_relative_symlink(linkname, target):
relpath = os.path.relpath(target, os.path.dirname(linkname))
print ("Symlink %s -> %s" % (linkname, relpath))
os.symlink(relpath, linkname)
def move_bundles(source, dest):
"""Move the contents of the 'bundles' directory to a common dir
We check that we will not be overwriting anything before we proceed.
Args:
source (str): path to 'bundles' within the extracted tarball
dest (str): target common directory
"""
if not os.path.isdir(dest):
os.mkdir(dest)
# build a map from source to destination, checking for non-existence as we go.
renames = {}
for f in os.listdir(source):
dst = os.path.join(dest, f)
if os.path.exists(dst):
print (
"Skipping bundle. The bundle includes '%s' which we have previously deployed."
% f
)
else:
renames[os.path.join(source, f)] = dst
for (src, dst) in renames.iteritems():
print ("Move %s -> %s" % (src, dst))
os.rename(src, dst)
class Deployer:
def __init__(self):
self.packages_path = "."
self.bundles_path = None
self.should_clean = False
# filename -> symlink path e.g 'config.localhost.json' => '../localhost/config.json'
self.symlink_paths = {}
self.verify_signature = True
def deploy(self, tarball, extract_path):
"""Download a tarball if necessary, and unpack it
Returns:
(str) the path to the unpacked deployment
"""
print("Deploying %s to %s" % (tarball, extract_path))
name_str = os.path.basename(tarball).replace(".tar.gz", "")
extracted_dir = os.path.join(extract_path, name_str)
if os.path.exists(extracted_dir):
raise DeployException('Cannot unpack %s: %s already exists' % (
tarball, extracted_dir))
downloaded = False
if tarball.startswith("http://") or tarball.startswith("https://"):
tarball = self.download_and_verify(tarball)
print("Downloaded file: %s" % tarball)
downloaded = True
try:
with tarfile.open(tarball) as tar:
tar.extractall(extract_path)
finally:
if self.should_clean and downloaded:
os.remove(tarball)
print ("Extracted into: %s" % extracted_dir)
if self.symlink_paths:
for link_path, file_path in self.symlink_paths.iteritems():
create_relative_symlink(
target=file_path,
linkname=os.path.join(extracted_dir, link_path)
)
if self.bundles_path:
extracted_bundles = os.path.join(extracted_dir, 'bundles')
move_bundles(source=extracted_bundles, dest=self.bundles_path)
# replace the extracted_bundles dir (which may not be empty if some
# bundles were skipped) with a symlink to the common dir.
shutil.rmtree(extracted_bundles)
create_relative_symlink(
target=self.bundles_path,
linkname=extracted_bundles,
)
return extracted_dir
def download_and_verify(self, url):
tarball = self.download_file(url)
if self.verify_signature:
sigfile = self.download_file(url + ".asc")
subprocess.check_call(["gpg", "--verify", sigfile, tarball])
return tarball
def download_file(self, url):
if not os.path.isdir(self.packages_path):
os.mkdir(self.packages_path)
local_filename = os.path.join(self.packages_path,
url.split('/')[-1])
sys.stdout.write("Downloading %s -> %s..." % (url, local_filename))
sys.stdout.flush()
urlretrieve(url, local_filename)
print ("Done")
return local_filename
if __name__ == "__main__":
parser = argparse.ArgumentParser("Deploy a Riot build on a web server.")
parser.add_argument(
"-p", "--packages-dir", default="./packages", help=(
"The directory to download the tarball into. (Default: '%(default)s')"
)
)
parser.add_argument(
"-e", "--extract-path", default="./deploys", help=(
"The location to extract .tar.gz files to. (Default: '%(default)s')"
)
)
parser.add_argument(
"-b", "--bundles-dir", nargs='?', default="./bundles", help=(
"A directory to move the contents of the 'bundles' directory to. A \
symlink to the bundles directory will also be written inside the \
extracted tarball. Example: './bundles'. \
(Default: '%(default)s')"
)
)
parser.add_argument(
"-c", "--clean", action="store_true", default=False, help=(
"Remove .tar.gz files after they have been downloaded and extracted. \
(Default: %(default)s)"
)
)
parser.add_argument(
"--include", nargs='*', default=['./config*.json'], help=(
"Symlink these files into the root of the deployed tarball. \
Useful for config files and home pages. Supports glob syntax. \
(Default: '%(default)s')"
)
)
parser.add_argument(
"tarball", help=(
"filename of tarball, or URL to download."
),
)
args = parser.parse_args()
deployer = Deployer()
deployer.packages_path = args.packages_dir
deployer.bundles_path = args.bundles_dir
deployer.should_clean = args.clean
for include in args.include:
deployer.symlink_paths.update({ os.path.basename(pth): pth for pth in glob.iglob(include) })
deployer.deploy(args.tarball, args.extract_path)

View File

@@ -14,11 +14,6 @@
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"uisi_autorageshake_app": "element-auto-uisi",
"showLabsSettings": true,
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1,
"policyUrl": "https://element.io/cookie-policy"
},
"roomDirectory": {
"servers": [
"matrix.org",
@@ -58,8 +53,10 @@
"projectApiKey": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"apiHost": "https://posthog.element.io"
},
"privacy_policy_url": "https://element.io/cookie-policy",
"features": {
"feature_spotlight": true
"feature_spotlight": true,
"feature_video_rooms": true
},
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
}

View File

@@ -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
}

191
module_system/installer.ts Normal file
View File

@@ -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");
}

View File

@@ -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);

View File

@@ -1,6 +1,6 @@
{
"name": "element-web",
"version": "1.10.13",
"version": "1.11.4",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -35,32 +35,35 @@
"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": "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",
"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:style": "stylelint \"res/css/**/*.scss\"",
"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/**/*.pcss\"",
"test": "jest",
"coverage": "yarn test --coverage"
"coverage": "yarn test --coverage",
"analyse:unused-exports": "node ./scripts/analyse_unused_exports.js"
},
"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/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.12.tgz",
"@matrix-org/react-sdk-module-api": "^0.0.3",
"browser-request": "^0.3.3",
"gfm.css": "^1.1.2",
"jsrsasign": "^10.2.0",
"jsrsasign": "^10.5.25",
"katex": "^0.12.0",
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
"matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop",
"matrix-widget-api": "^0.1.0-beta.18",
"matrix-widget-api": "^1.0.0",
"prop-types": "^15.7.2",
"react": "17.0.2",
"react-dom": "17.0.2",
@@ -88,7 +91,7 @@
"@sentry/webpack-plugin": "^1.18.1",
"@svgr/webpack": "^5.5.0",
"@types/flux": "^3.1.9",
"@types/jest": "^27.0.2",
"@types/jest": "^28.0.0",
"@types/modernizr": "^3.5.3",
"@types/node": "^14.14.22",
"@types/react": "17.0.14",
@@ -99,7 +102,7 @@
"@typescript-eslint/parser": "^5.6.0",
"allchange": "^1.0.6",
"autoprefixer": "^9.8.6",
"babel-jest": "^26.6.3",
"babel-jest": "^28.0.0",
"babel-loader": "^8.2.2",
"chokidar": "^3.5.1",
"concurrently": "^5.3.0",
@@ -108,8 +111,9 @@
"dotenv": "^10.0.0",
"eslint": "8.9.0",
"eslint-config-google": "^0.14.0",
"eslint-plugin-deprecate": "^0.7.0",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-matrix-org": "^0.4.0",
"eslint-plugin-matrix-org": "^0.6.1",
"eslint-plugin-react": "^7.28.0",
"eslint-plugin-react-hooks": "^4.3.0",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
@@ -117,15 +121,15 @@
"file-loader": "^5.1.0",
"fs-extra": "^0.30.0",
"html-webpack-plugin": "^4.5.2",
"jest": "^26.6.3",
"jest-environment-jsdom-sixteen": "^1.0.3",
"jest": "^28.0.0",
"jest-environment-jsdom": "^28.1.3",
"jest-raw-loader": "^1.0.1",
"jest-sonar-reporter": "^2.0.0",
"json-loader": "^0.5.7",
"loader-utils": "^1.4.0",
"matrix-mock-request": "^2.0.0",
"matrix-react-test-utils": "^0.2.3",
"matrix-web-i18n": "^1.2.0",
"matrix-web-i18n": "^1.3.0",
"mini-css-extract-plugin": "^0.12.0",
"minimist": "^1.2.6",
"mkdirp": "^1.0.4",
@@ -133,7 +137,7 @@
"node-fetch": "^2.6.7",
"optimize-css-assets-webpack-plugin": "^5.0.4",
"postcss-easings": "^2.0.0",
"postcss-hexrgba": "^2.0.1",
"postcss-hexrgba": "2.0.1",
"postcss-import": "^12.0.1",
"postcss-loader": "^3.0.0",
"postcss-mixins": "^6.2.3",
@@ -141,29 +145,34 @@
"postcss-preset-env": "^6.7.0",
"postcss-scss": "^2.1.1",
"postcss-simple-vars": "^5.0.2",
"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",
"style-loader": "2",
"stylelint": "^13.9.0",
"stylelint-config-standard": "^20.0.0",
"stylelint-scss": "^3.18.0",
"stylelint": "^14.9.1",
"stylelint-config-standard": "^26.0.0",
"stylelint-scss": "^4.2.0",
"terser-webpack-plugin": "^2.3.8",
"typescript": "^4.5.3",
"ts-prune": "^0.10.3",
"typescript": "^4.7.4",
"webpack": "^4.46.0",
"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"
},
"jest": {
"testEnvironment": "jest-environment-jsdom-sixteen",
"testEnvironment": "jsdom",
"testEnvironmentOptions": {
"url": "http://localhost/"
},
"testMatch": [
"<rootDir>/test/**/*-test.[tj]s?(x)"
],
@@ -171,7 +180,7 @@
"<rootDir>/node_modules/matrix-react-sdk/test/setupTests.js"
],
"moduleNameMapper": {
"\\.(css|scss)$": "<rootDir>/__mocks__/cssMock.js",
"\\.(css|scss|pcss)$": "<rootDir>/__mocks__/cssMock.js",
"\\.(gif|png|ttf|woff2)$": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/imageMock.js",
"\\.svg$": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/svg.js",
"\\$webapp/i18n/languages.json": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/languages.json",

View File

@@ -14,16 +14,28 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
// import font-size variables manually, ideally this scss would get loaded by the theme which has all variables in context
@import "../../../node_modules/matrix-react-sdk/res/css/_font-sizes.scss";
// import font-size variables manually,
// ideally this file would get loaded by the theme which has all variables in context
@import "../../../node_modules/matrix-react-sdk/res/css/_font-sizes.pcss";
.mx_ErrorView {
background: #c5e0f7;
background: -moz-linear-gradient(top, #c5e0f7 0%, #ffffff 100%);
background: -webkit-linear-gradient(top, #c5e0f7 0%, #ffffff 100%);
background: linear-gradient(to bottom, #c5e0f7 0%, #ffffff 100%);
/* stylelint-disable-next-line function-no-unknown */
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#c5e0f7', endColorstr='#ffffff', GradientType=0);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-family:
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
Helvetica,
Arial,
sans-serif,
"Apple Color Emoji",
"Segoe UI Emoji",
"Segoe UI Symbol";
width: 100%;
min-height: 100%;
height: auto;

View File

@@ -0,0 +1,48 @@
#!/usr/bin/env node
'use strict';
const fs = require("fs");
const { exec } = require("node:child_process");
const includeJSSDK = process.argv.includes("--include-js-sdk");
const ignore = [];
ignore.push(...Object.values(JSON.parse(fs.readFileSync(`${__dirname}/../components.json`))));
ignore.push("/index.ts");
// We ignore js-sdk by default as it may export for other non element-web projects
if (!includeJSSDK) ignore.push("matrix-js-sdk");
const command = `yarn ts-prune --ignore "${ignore.join("|")}" | grep -v "(used in module)"`;
exec(command, (error, stdout, stderr) => {
if (error) throw error;
// We have to do this as piping the output of ts-prune causes the return
// code to be 0
if (stderr) throw Error(stderr);
let lines = stdout.split("\n");
// Remove the first line as that is the command that was being run and we
// log that only in case of an error
lines.splice(0, 1);
// Remove the last line as it is empty
lines.pop();
// ts-prune has bug where if the unused export is in a dependency, the path
// won't have an "/" character at the start, so we try to fix that for
// better UX
// TODO: This might break on Windows
lines = lines.reduce((newLines, line) => {
if (!line.startsWith("/")) newLines.push("/" + line);
else newLines.push(line);
return newLines;
}, []);
// If an unused export has been found, we error
if (lines.length > 0) {
console.log(`Command that was run: ${command}`);
console.log(lines.join("\n"));
throw Error("Unused exports found!");
}
console.log("Success - no unused exports found!");
});

View File

@@ -1,13 +1,12 @@
#!/usr/bin/env python
#!/usr/bin/env python3
#
# download and unpack a element-web tarball.
#
# Allows `bundles` to be extracted to a common directory, and a link to
# config.json to be added.
from __future__ import print_function
import argparse
import errno
import os
import os.path
import subprocess
@@ -15,13 +14,7 @@ import sys
import tarfile
import shutil
import glob
try:
# python3
from urllib.request import urlretrieve
except ImportError:
# python2
from urllib import urlretrieve
from urllib.request import urlretrieve
class DeployException(Exception):
@@ -30,8 +23,17 @@ class DeployException(Exception):
def create_relative_symlink(linkname, target):
relpath = os.path.relpath(target, os.path.dirname(linkname))
print ("Symlink %s -> %s" % (linkname, relpath))
os.symlink(relpath, linkname)
print("Symlink %s -> %s" % (linkname, relpath))
try:
os.symlink(relpath, linkname)
except OSError as e:
if e.errno == errno.EEXIST:
# atomic modification
os.symlink(relpath, linkname + ".tmp")
os.rename(linkname + ".tmp", linkname)
else:
raise e
def move_bundles(source, dest):
@@ -52,7 +54,7 @@ def move_bundles(source, dest):
for f in os.listdir(source):
dst = os.path.join(dest, f)
if os.path.exists(dst):
print (
print(
"Skipping bundle. The bundle includes '%s' which we have previously deployed."
% f
)
@@ -60,7 +62,7 @@ def move_bundles(source, dest):
renames[os.path.join(source, f)] = dst
for (src, dst) in renames.items():
print ("Move %s -> %s" % (src, dst))
print("Move %s -> %s" % (src, dst))
os.rename(src, dst)
@@ -69,17 +71,18 @@ class Deployer:
self.packages_path = "."
self.bundles_path = None
self.should_clean = False
self.symlink_latest = None
# filename -> symlink path e.g 'config.localhost.json' => '../localhost/config.json'
self.symlink_paths = {}
self.verify_signature = True
def deploy(self, tarball, extract_path):
"""Download a tarball if necessary, and unpack it
def fetch(self, tarball, extract_path):
"""Download a tarball, verifies it if needed, and unpacks it
Returns:
(str) the path to the unpacked deployment
(str) the path to the unpacked directory
"""
print("Deploying %s to %s" % (tarball, extract_path))
print("Fetching %s to %s" % (tarball, extract_path))
name_str = os.path.basename(tarball).replace(".tar.gz", "")
extracted_dir = os.path.join(extract_path, name_str)
@@ -100,7 +103,12 @@ class Deployer:
if self.should_clean and downloaded:
os.remove(tarball)
print ("Extracted into: %s" % extracted_dir)
print("Extracted into: %s" % extracted_dir)
return extracted_dir
def deploy(self, extracted_dir):
"""Applies symlinks and handles the bundles directory on an extracted tarball"""
print("Deploying %s" % extracted_dir)
if self.symlink_paths:
for link_path, file_path in self.symlink_paths.items():
@@ -120,7 +128,12 @@ class Deployer:
target=self.bundles_path,
linkname=extracted_bundles,
)
return extracted_dir
if self.symlink_latest:
create_relative_symlink(
target=extracted_dir,
linkname=self.symlink_latest,
)
def download_and_verify(self, url):
tarball = self.download_file(url)
@@ -177,8 +190,15 @@ if __name__ == "__main__":
)
)
parser.add_argument(
"tarball", help=(
"filename of tarball, or URL to download."
"-s", "--symlink", dest="symlink", default="./latest", help=(
"Write a symlink to this location pointing to the extracted tarball. \
New builds will keep overwriting this symlink. The symlink will point \
to the webapp directory INSIDE the tarball."
)
)
parser.add_argument(
"target", help=(
"filename of extracted directory, tarball, or URL to download."
),
)
@@ -188,8 +208,18 @@ if __name__ == "__main__":
deployer.packages_path = args.packages_dir
deployer.bundles_path = args.bundles_dir
deployer.should_clean = args.clean
deployer.symlink_latest = args.symlink
for include in args.include:
deployer.symlink_paths.update({ os.path.basename(pth): pth for pth in glob.iglob(include) })
deployer.deploy(args.tarball, args.extract_path)
if os.path.isdir(args.target):
# If the given directory contains a single directory then use that instead, the ci package wraps in an extra dir
files = os.listdir(args.target)
if len(files) == 1 and os.path.isdir(os.path.join(args.target, files[0])):
extracted_dir = os.path.join(args.target, files[0])
else:
extracted_dir = args.target
else:
extracted_dir = deployer.fetch(args.target, args.extract_path)
deployer.deploy(extracted_dir)

View File

@@ -5,7 +5,7 @@ set -ex
# Automatically link to develop if we're building develop, but only if the caller
# hasn't asked us to build something else
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ $USE_CUSTOM_SDKS == false ] && [ $BRANCH == 'develop' ]
if [[ $USE_CUSTOM_SDKS == false ]] && [[ $BRANCH == 'develop' ]]
then
echo "using develop dependencies for react-sdk and js-sdk"
USE_CUSTOM_SDKS=true
@@ -13,21 +13,21 @@ then
REACT_SDK_BRANCH='develop'
fi
if [ $USE_CUSTOM_SDKS == false ]
if [[ $USE_CUSTOM_SDKS == false ]]
then
echo "skipping react-sdk and js-sdk installs: USE_CUSTOM_SDKS is false"
exit 0
fi
echo "Linking js-sdk"
git clone --depth 1 --branch $JS_SDK_BRANCH $JS_SDK_REPO js-sdk
git clone --depth 1 --branch $JS_SDK_BRANCH "$JS_SDK_REPO" js-sdk
cd js-sdk
yarn link
yarn --network-timeout=100000 install
cd ../
echo "Linking react-sdk"
git clone --depth 1 --branch $REACT_SDK_BRANCH $REACT_SDK_REPO react-sdk
git clone --depth 1 --branch $REACT_SDK_BRANCH "$REACT_SDK_REPO" react-sdk
cd react-sdk
yarn link
yarn link matrix-js-sdk

View File

@@ -1,21 +1,18 @@
#!/bin/sh
#!/bin/bash
set -ex
TAG=$(git describe --tags)
BRANCH=$(git rev-parse --abbrev-ref HEAD)
DIST_VERSION=$TAG
DIST_VERSION=$(git describe --abbrev=0 --tags)
# If the branch comes out as HEAD then we're probably checked out to a tag, so if the thing is *not*
# coming out as HEAD then we're on a branch. When we're on a branch, we want to resolve ourselves to
# a few SHAs rather than a version.
# Docker Hub doesn't always check out the tag and sometimes checks out the branch, so we should look
# for an appropriately tagged branch as well (heads/v1.2.3).
if [[ $BRANCH != HEAD && ! $BRANCH =~ heads/v.+ ]]
DIR=$(dirname "$0")
# If we're not using custom SDKs and on a branch other than master, generate a version akin go develop.element.io
if [[ $USE_CUSTOM_SDKS == false ]] && [[ $BRANCH != 'master' ]]
then
DIST_VERSION=`$(dirname $0)/get-version-from-git.sh`
DIST_VERSION=$("$DIR"/get-version-from-git.sh)
fi
DIST_VERSION=`$(dirname $0)/normalize-version.sh ${DIST_VERSION}`
DIST_VERSION=$("$DIR"/normalize-version.sh "$DIST_VERSION")
VERSION=$DIST_VERSION yarn build
echo $DIST_VERSION > /src/webapp/version
echo "$DIST_VERSION" > /src/webapp/version

99
scripts/fetch-develop.deps.sh Executable file
View File

@@ -0,0 +1,99 @@
#!/bin/bash
# Fetches the js-sdk and matrix-react-sdk dependencies for development
# or testing purposes
# If there exists a branch of that dependency with the same name as
# the branch the current checkout is on, use that branch. Otherwise,
# use develop.
set -ex
GIT_CLONE_ARGS=("$@")
[ -z "$defbranch" ] && defbranch="develop"
# clone a specific branch of a github repo
function clone() {
org=$1
repo=$2
branch=$3
# Chop 'origin' off the start as jenkins ends up using
# branches on the origin, but this doesn't work if we
# specify the branch when cloning.
branch=${branch#origin/}
if [ -n "$branch" ]
then
echo "Trying to use $org/$repo#$branch"
# Disable auth prompts: https://serverfault.com/a/665959
GIT_TERMINAL_PROMPT=0 git clone https://github.com/$org/$repo.git $repo --branch $branch \
"${GIT_CLONE_ARGS[@]}"
return $?
fi
return 1
}
function dodep() {
deforg=$1
defrepo=$2
rm -rf $defrepo
# Try the PR author's branch in case it exists on the deps as well.
# Try the target branch of the push or PR.
# Use the default branch as the last resort.
if [[ "$BUILDKITE" == true ]]; then
# If BUILDKITE_BRANCH is set, it will contain either:
# * "branch" when the author's branch and target branch are in the same repo
# * "author:branch" when the author's branch is in their fork
# We can split on `:` into an array to check.
BUILDKITE_BRANCH_ARRAY=(${BUILDKITE_BRANCH//:/ })
if [[ "${#BUILDKITE_BRANCH_ARRAY[@]}" == "2" ]]; then
prAuthor=${BUILDKITE_BRANCH_ARRAY[0]}
prBranch=${BUILDKITE_BRANCH_ARRAY[1]}
else
prAuthor=$deforg
prBranch=$BUILDKITE_BRANCH
fi
clone $prAuthor $defrepo $prBranch ||
clone $deforg $defrepo $BUILDKITE_PULL_REQUEST_BASE_BRANCH ||
clone $deforg $defrepo $defbranch ||
return $?
else
clone $deforg $defrepo $ghprbSourceBranch ||
clone $deforg $defrepo $GIT_BRANCH ||
clone $deforg $defrepo `git rev-parse --abbrev-ref HEAD` ||
clone $deforg $defrepo $defbranch ||
return $?
fi
echo "$defrepo set to branch "`git -C "$defrepo" rev-parse --abbrev-ref HEAD`
}
##############################
echo 'Setting up matrix-js-sdk'
dodep matrix-org matrix-js-sdk
pushd matrix-js-sdk
yarn link
yarn install --pure-lockfile
popd
yarn link matrix-js-sdk
##############################
echo 'Setting up matrix-react-sdk'
dodep matrix-org matrix-react-sdk
pushd matrix-react-sdk
yarn link
yarn link matrix-js-sdk
yarn install --pure-lockfile
popd
yarn link matrix-react-sdk
##############################

View File

@@ -1,78 +0,0 @@
#!/bin/bash
set -x
deforg="$1"
defrepo="$2"
defbranch="$3"
[ -z "$defbranch" ] && defbranch="develop"
rm -r "$defrepo" || true
# A function that clones a branch of a repo based on the org, repo and branch
clone() {
org=$1
repo=$2
branch=$3
if [ -n "$branch" ]
then
echo "Trying to use $org/$repo#$branch"
# Disable auth prompts: https://serverfault.com/a/665959
GIT_TERMINAL_PROMPT=0 git clone https://github.com/$org/$repo.git $repo --branch "$branch" --depth 1 && exit 0
fi
}
# A function that gets info about a PR from the GitHub API based on its number
getPRInfo() {
number=$1
if [ -n "$number" ]; then
echo "Getting info about a PR with number $number"
apiEndpoint="https://api.github.com/repos/${REPOSITORY:-"vector-im/element-web"}/pulls/"
apiEndpoint+=$number
head=$(curl $apiEndpoint | jq -r '.head.label')
fi
}
# Some CIs don't give us enough info, so we just get the PR number and ask the
# GH API for more info - "fork:branch". Some give us this directly.
if [ -n "$BUILDKITE_BRANCH" ]; then
# BuildKite
head=$BUILDKITE_BRANCH
elif [ -n "$PR_NUMBER" ]; then
# GitHub
getPRInfo $PR_NUMBER
elif [ -n "$REVIEW_ID" ]; then
# Netlify
getPRInfo $REVIEW_ID
fi
# for forks, $head will be in the format "fork:branch", so we split it by ":"
# into an array. On non-forks, this has the effect of splitting into a single
# element array given ":" shouldn't appear in the head - it'll just be the
# branch name. Based on the results, we clone.
BRANCH_ARRAY=(${head//:/ })
TRY_ORG=$deforg
TRY_BRANCH=${BRANCH_ARRAY[0]}
if [[ "$head" == *":"* ]]; then
# ... but only match that fork if it's a real fork
if [ "${BRANCH_ARRAY[0]}" != "matrix-org" ]; then
TRY_ORG=${BRANCH_ARRAY[0]}
fi
TRY_BRANCH=${BRANCH_ARRAY[1]}
fi
clone ${TRY_ORG} $defrepo ${TRY_BRANCH}
# Try the target branch of the push or PR.
if [ -n "$GITHUB_BASE_REF" ]; then
clone $deforg $defrepo $GITHUB_BASE_REF
elif [ -n "$BUILDKITE_PULL_REQUEST_BASE_BRANCH" ]; then
clone $deforg $defrepo $BUILDKITE_PULL_REQUEST_BASE_BRANCH
fi
# Try HEAD which is the branch name in Netlify (not BRANCH which is pull/xxxx/head for PR builds)
clone $deforg $defrepo $HEAD
# Use the default branch as the last resort.
clone $deforg $defrepo $defbranch

View File

@@ -33,6 +33,7 @@ node_modules/matrix-react-sdk/scripts/fetchdep.sh matrix-org matrix-analytics-ev
pushd matrix-analytics-events
yarn link
yarn install --pure-lockfile
yarn build:ts
popd
# Now set up the react-sdk
@@ -40,7 +41,7 @@ node_modules/matrix-react-sdk/scripts/fetchdep.sh matrix-org matrix-react-sdk
pushd matrix-react-sdk
yarn link
yarn link matrix-js-sdk
yarn link matrix-analytics-events
yarn link @matrix-org/analytics-events
yarn install --pure-lockfile
popd

View File

@@ -1,84 +1,152 @@
#!/usr/bin/env python
#
# auto-deploy script for https://develop.element.io
# Listens for Github Action webhook pokes (https://github.com/marketplace/actions/workflow-webhook-action)
# When it gets one: downloads the artifact from github actions and deploys it as the new version.
#
# Listens for buildkite webhook pokes (https://buildkite.com/docs/apis/webhooks)
# When it gets one, downloads the artifact from buildkite
# and deploys it as the new version.
#
# Requires the following python packages:
#
# - requests
# - flask
# - python-github-webhook
#
from __future__ import print_function
import argparse
import os
import errno
import requests, argparse, os, errno
import time
import traceback
import glob
from io import BytesIO
from urllib.request import urlopen
from zipfile import ZipFile
import re
import shutil
import threading
from Queue import Queue
from github_webhook import Webhook
from flask import Flask, abort
from flask import Flask, jsonify, request, abort
from deploy import Deployer, DeployException
app = Flask(__name__)
webhook = Webhook(app, endpoint="/")
deployer = None
arg_extract_path = None
arg_webhook_token = None
arg_api_token = None
workQueue = Queue()
def create_symlink(source: str, linkname: str):
try:
os.symlink(source, linkname)
except OSError as e:
if e.errno == errno.EEXIST:
# atomic modification
os.symlink(source, linkname + ".tmp")
os.rename(linkname + ".tmp", linkname)
else:
raise e
def req_headers():
return {
"Authorization": "Bearer %s" % (arg_api_token,),
}
# Buildkite considers a poke to have failed if it has to wait more than 10s for
# data (any data, not just the initial response) and it normally takes longer than
# that to download an artifact from buildkite. Apparently there is no way in flask
# to finish the response and then keep doing stuff, so instead this has to involve
# threading. Sigh.
def worker_thread():
while True:
toDeploy = workQueue.get()
deploy_buildkite_artifact(*toDeploy)
@webhook.hook(event_type="workflow_run")
def on_deployment(payload: dict):
repository = payload.get("repository")
if repository is None:
abort(400, "No 'repository' specified")
@app.route("/", methods=["POST"])
def on_receive_buildkite_poke():
got_webhook_token = request.headers.get('X-Buildkite-Token')
if got_webhook_token != arg_webbook_token:
print("Denying request with incorrect webhook token: %s" % (got_webhook_token,))
abort(400, "Incorrect webhook token")
return
workflow = payload.get("workflow")
if repository is None:
abort(400, "No 'workflow' specified")
required_api_prefix = None
if arg_buildkite_org is not None:
required_api_prefix = 'https://api.buildkite.com/v2/organizations/%s' % (arg_buildkite_org,)
incoming_json = request.get_json()
if not incoming_json:
abort(400, "No JSON provided!")
return
print("Incoming JSON: %s" % (incoming_json,))
event = incoming_json.get("event")
if event is None:
abort(400, "No 'event' specified")
return
request_id = payload.get("requestID")
if request_id is None:
abort(400, "No 'request_id' specified")
if event == 'ping':
print("Got ping request - responding")
return jsonify({'response': 'pong!'})
if event != 'build.finished':
print("Rejecting '%s' event")
abort(400, "Unrecognised event")
return
if arg_github_org is not None and not repository.startswith(arg_github_org):
print("Denying poke for repository with incorrect prefix: %s" % (repository,))
abort(400, "Invalid repository")
build_obj = incoming_json.get("build")
if build_obj is None:
abort(400, "No 'build' object")
return
if arg_github_workflow is not None and workflow != arg_github_workflow:
print("Denying poke for incorrect workflow: %s" % (workflow,))
abort(400, "Incorrect workflow")
build_url = build_obj.get('url')
if build_url is None:
abort(400, "build has no url")
return
artifact_url = payload.get("data", {}).get("url")
if artifact_url is None:
abort(400, "No 'data.url' specified")
if required_api_prefix is not None and not build_url.startswith(required_api_prefix):
print("Denying poke for build url with incorrect prefix: %s" % (build_url,))
abort(400, "Invalid build url")
return
deploy_artifact(artifact_url, request_id)
build_num = build_obj.get('number')
if build_num is None:
abort(400, "build has no number")
return
pipeline_obj = incoming_json.get("pipeline")
if pipeline_obj is None:
abort(400, "No 'pipeline' object")
return
pipeline_name = pipeline_obj.get('name')
if pipeline_name is None:
abort(400, "pipeline has no name")
return
artifacts_url = build_url + "/artifacts"
artifacts_resp = requests.get(artifacts_url, headers=req_headers())
artifacts_resp.raise_for_status()
artifacts_array = artifacts_resp.json()
artifact_to_deploy = None
for artifact in artifacts_array:
if re.match(r"dist/.*.tar.gz", artifact['path']):
artifact_to_deploy = artifact
if artifact_to_deploy is None:
print("No suitable artifacts found")
return jsonify({})
# double paranoia check: make sure the artifact is on the right org too
if required_api_prefix is not None and not artifact_to_deploy['url'].startswith(required_api_prefix):
print("Denying poke for build url with incorrect prefix: %s" % (artifact_to_deploy['url'],))
abort(400, "Refusing to deploy artifact from URL %s", artifact_to_deploy['url'])
return
# there's no point building up a queue of things to deploy, so if there are any pending jobs,
# remove them
while not workQueue.empty():
try:
workQueue.get(False)
except:
pass
workQueue.put([artifact_to_deploy, pipeline_name, build_num])
return jsonify({})
def deploy_buildkite_artifact(artifact, pipeline_name, build_num):
artifact_response = requests.get(artifact['url'], headers=req_headers())
artifact_response.raise_for_status()
artifact_obj = artifact_response.json()
def deploy_artifact(artifact_url: str, request_id: str):
# we extract into a directory based on the build number. This avoids the
# problem of multiple builds building the same git version and thus having
# the same tarball name. That would lead to two potential problems:
@@ -86,42 +154,57 @@ def deploy_artifact(artifact_url: str, request_id: str):
# a good deploy with a bad one
# (b) we'll be overwriting the live deployment, which means people might
# see half-written files.
build_dir = os.path.join(arg_extract_path, "gha-%s" % (request_id,))
if os.path.exists(build_dir):
# We have already deployed this, nop
return
os.mkdir(build_dir)
build_dir = os.path.join(arg_extract_path, "%s-#%s" % (pipeline_name, build_num))
try:
with urlopen(artifact_url) as f:
with ZipFile(BytesIO(f.read()), "r") as z:
name = next((x for x in z.namelist() if x.endswith(".tar.gz")))
z.extract(name, build_dir)
extracted_dir = deployer.deploy(os.path.join(build_dir, name), build_dir)
create_symlink(source=extracted_dir, linkname=arg_symlink)
extracted_dir = deploy_tarball(artifact_obj, build_dir)
except DeployException as e:
traceback.print_exc()
abort(400, str(e))
finally:
if deployer.should_clean:
os.remove(os.path.join(build_dir, name))
abort(400, e.message)
def deploy_tarball(artifact, build_dir):
"""Download a tarball from jenkins and unpack it
Returns:
(str) the path to the unpacked deployment
"""
if os.path.exists(build_dir):
raise DeployException(
"Not deploying. We have previously deployed this build."
)
os.mkdir(build_dir)
print("Fetching artifact %s -> %s..." % (artifact['download_url'], artifact['filename']))
# Download the tarball here as buildkite needs auth to do this
# we don't pgp-sign buildkite artifacts, relying on HTTPS and buildkite
# not being evil. If that's not good enough for you, don't use develop.element.io.
resp = requests.get(artifact['download_url'], stream=True, headers=req_headers())
resp.raise_for_status()
with open(artifact['filename'], 'wb') as ofp:
shutil.copyfileobj(resp.raw, ofp)
print("...download complete. Deploying...")
# we rely on the fact that flask only serves one request at a time to
# ensure that we do not overwrite a tarball from a concurrent request.
return deployer.deploy(artifact['filename'], build_dir)
if __name__ == "__main__":
parser = argparse.ArgumentParser("Runs an Element redeployment server.")
parser = argparse.ArgumentParser("Runs a Vector redeployment server.")
parser.add_argument(
"-p", "--port", dest="port", default=4000, type=int, help=(
"The port to listen on for redeployment requests."
"The port to listen on for requests from Jenkins."
)
)
parser.add_argument(
"-e", "--extract", dest="extract", default="./extracted", type=str, help=(
"-e", "--extract", dest="extract", default="./extracted", help=(
"The location to extract .tar.gz files to."
)
)
parser.add_argument(
"-b", "--bundles-dir", dest="bundles_dir", type=str, help=(
"-b", "--bundles-dir", dest="bundles_dir", help=(
"A directory to move the contents of the 'bundles' directory to. A \
symlink to the bundles directory will also be written inside the \
extracted tarball. Example: './bundles'."
@@ -133,7 +216,7 @@ if __name__ == "__main__":
)
)
parser.add_argument(
"-s", "--symlink", dest="symlink", default="./latest", type=str, help=(
"-s", "--symlink", dest="symlink", default="./latest", help=(
"Write a symlink to this location pointing to the extracted tarball. \
New builds will keep overwriting this symlink. The symlink will point \
to the /vector directory INSIDE the tarball."
@@ -142,65 +225,71 @@ if __name__ == "__main__":
# --include ../../config.json ./localhost.json homepages/*
parser.add_argument(
"--include", nargs='*', default='./config*.json', type=str, help=(
"--include", nargs='*', default='./config*.json', help=(
"Symlink these files into the root of the deployed tarball. \
Useful for config files and home pages. Supports glob syntax. \
(Default: '%(default)s')"
)
)
parser.add_argument(
"--test", dest="tarball_uri", type=str, help=(
"Don't start an HTTP listener. Instead download a build from this URL immediately."
"--test", dest="tarball_uri", help=(
"Don't start an HTTP listener. Instead download a build from Jenkins \
immediately."
),
)
parser.add_argument(
"--webhook-token", dest="webhook_token", type=str, help=(
"Only accept pokes signed with this github token."
"--webhook-token", dest="webhook_token", help=(
"Only accept pokes with this buildkite token."
), required=True,
)
parser.add_argument(
"--api-token", dest="api_token", help=(
"API access token for buildkite. Require read_artifacts scope."
), required=True,
)
# We require a matching webhook token, but because we take everything else
# about what to deploy from the poke body, we can be a little more paranoid
# and only accept builds / artifacts from a specific github org
# and only accept builds / artifacts from a specific buildkite org
parser.add_argument(
"--org", dest="github_org", type=str, help=(
"Lock down to this github org"
)
)
# Optional matching workflow name
parser.add_argument(
"--workflow", dest="github_workflow", type=str, help=(
"Lock down to this github workflow"
"--org", dest="buildkite_org", help=(
"Lock down to this buildkite org"
)
)
args = parser.parse_args()
arg_extract_path = args.extract
arg_symlink = args.symlink
arg_github_org = args.github_org
arg_github_workflow = args.github_workflow
arg_webbook_token = args.webhook_token
arg_api_token = args.api_token
arg_buildkite_org = args.buildkite_org
if not os.path.isdir(arg_extract_path):
os.mkdir(arg_extract_path)
webhook.secret = args.webhook_token
deployer = Deployer()
deployer.bundles_path = args.bundles_dir
deployer.should_clean = args.clean
deployer.symlink_latest = args.symlink
for include in args.include.split(" "):
for include in args.include:
deployer.symlink_paths.update({ os.path.basename(pth): pth for pth in glob.iglob(include) })
print(
"Listening on port %s. Extracting to %s%s. Symlinking to %s. Include files: %s" %
(args.port,
arg_extract_path,
" (clean after)" if deployer.should_clean else "",
arg_symlink,
deployer.symlink_paths,
if args.tarball_uri is not None:
build_dir = os.path.join(arg_extract_path, "test-%i" % (time.time()))
deploy_tarball(args.tarball_uri, build_dir)
else:
print(
"Listening on port %s. Extracting to %s%s. Symlinking to %s. Include files: %s" %
(args.port,
arg_extract_path,
" (clean after)" if deployer.should_clean else "",
args.symlink,
deployer.symlink_paths,
)
)
)
app.run(port=args.port, debug=False)
fred = threading.Thread(target=worker_thread)
fred.daemon = True
fred.start()
app.run(port=args.port, debug=False)

View File

@@ -19,8 +19,8 @@ import { _t } from "matrix-react-sdk/src/languageHandler";
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
// directly import the style here as this layer does not support rethemedex at this time so no matrix-react-sdk
// scss variables will be accessible.
import "../../../res/css/structures/ErrorView.scss";
// PostCSS variables will be accessible.
import "../../../res/css/structures/ErrorView.pcss";
interface IProps {
onAccept(): void;

View File

@@ -18,8 +18,8 @@ import * as React from "react";
import { _t } from "matrix-react-sdk/src/languageHandler";
// directly import the style here as this layer does not support rethemedex at this time so no matrix-react-sdk
// scss variables will be accessible.
import "../../../res/css/structures/ErrorView.scss";
// PostCSS variables will be accessible.
import "../../../res/css/structures/ErrorView.pcss";
interface IProps {
// both of these should already be internationalised

View File

@@ -37,10 +37,10 @@ const VectorAuthFooter = () => {
}
return (
<div className="mx_AuthFooter">
<footer className="mx_AuthFooter" role="contentinfo">
{ authFooterLinks }
<a href="https://matrix.org" target="_blank" rel="noreferrer noopener">{ _t('Powered by Matrix') }</a>
</div>
</footer>
);
};

View File

@@ -24,9 +24,9 @@ export default class VectorAuthHeaderLogo extends React.PureComponent {
const logoUrl = brandingConfig?.get("auth_header_logo_url") ?? "themes/element/img/logos/element-logo.svg";
return (
<div className="mx_AuthHeaderLogo">
<aside className="mx_AuthHeaderLogo">
<img src={logoUrl} alt="Element" />
</div>
</aside>
);
}
}

View File

@@ -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<IParams> = {}) {
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;

View File

@@ -1,14 +1,10 @@
{
"Dismiss": "أهمِل",
"Unknown device": "جهاز مجهول",
"You need to be using HTTPS to place a screen-sharing call.": "عليك استعمال ميفاق HTTPS للاتصال بمشاركة الشاشة.",
"powered by Matrix": "مشغل بواسطة Matrix",
"Welcome to Element": "مرحبًا بك في Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "دردشة وتعاون غير مركزي معمّى، تدعمه [matrix]",
"Create Account": "أنشِئ حسابًا",
"Explore rooms": "استكشِف الغرف",
"Sign In": "لِج",
"Missing indexeddb worker script!": "سكربت عامل indexeddb ناقص!",
"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": "لم يُضبط تطبيق Element كما ينبغي",
@@ -19,8 +15,6 @@
"Unexpected error preparing the app. See console for details.": "حدث عُطل غير متوقع أثناء تجهيز التطبيق. طالِع المِعراض للتفاصيل.",
"Download Completed": "اكتمل التنزيل",
"Open": "افتح",
"Open user settings": "افتح إعدادات المستخدم",
"Previous/next recently visited room or community": "الغرفة أو المجتمع التالي/السابق الذي زرته حديثًا",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s لسطح المكتب (%(platformName)s)",
"Go to your browser to complete Sign In": "افتح المتصفح لإكمال الولوج",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s، %(osName)s)",
@@ -34,5 +28,6 @@
"Failed to start": "فشل البدء",
"Powered by Matrix": "تدعمه «ماترِكس»",
"Use %(brand)s on mobile": "استعمل %(brand)s على المحمول",
"Switch to space by number": "التبديل إلى المساحة بالرقم"
"Switch to space by number": "التبديل إلى المساحة بالرقم",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "محادثة لامركزية، مشفرة &amp; تعمل بواسطة $matrixLogo"
}

View File

@@ -1,16 +1,33 @@
{
"Unknown device": "Naməlum qurğu",
"You need to be using HTTPS to place a screen-sharing call.": "İş stolunun birgə istifadəsi üçün HTTPS-dan istifadə tələb olunur.",
"Invalid JSON": "Yanlış JSON",
"Sign In": "Daxil ol",
"Create Account": "Hesab Aç",
"Explore rooms": "Otaqları kəşf edin",
"Unexpected error preparing the app. See console for details.": "Proqramın başlanmasında gözlənilməz xəta. İzah üçün konsola baxın",
"Unexpected error preparing the app. See console for details.": "Tətbiqin başladılmasında gözlənilməz xəta.Təfərrüatlar üçün konsola baxın.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Yanlış konfiqurasiya: bunlardan yalnız birini təyin edin - default_server_config, default_server_name, və ya default_hs_url.",
"Invalid configuration: no default server specified.": "Yanlış konfiqurasiya: ilkin server təyin edilməyib",
"Invalid configuration: no default server specified.": "Yanlış konfiqurasiya: standart server göstərilməyib.",
"The message from the parser is: %(message)s": "Sözügedən mesaj: %(message)s",
"powered by Matrix": "Matrix tərəfindən təchiz edilmişdir",
"Dismiss": "Nəzərə almayın",
"Welcome to Element": "Element-ə xoş gəlmişsiniz",
"Decentralised, encrypted chat &amp; 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 &amp; 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 &amp; 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 &amp; əməkdaşlıq",
"Failed to start": "Başlatmaq alınmadı",
"Go to element.io": "element.io saytına keçin",
"I understand the risks and wish to continue": "Mən riskləri başa düşürəm və davam etmək istəyirəm",
"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.": "Siz cari brauzerinizdən istifadə etməyə davam edə bilərsiniz, lakin bəzi və ya bütün funksiyalar işləməyə və tətbiqin görünüşü yanlış ola bilər.",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Zəhmət olmasa quraşdırın<chromeLink> Chrome</chromeLink> ,<firefoxLink> Firefox</firefoxLink> , və ya<safariLink> Safari</safariLink> ən yaxşı təcrübə üçün.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s cari brauzeriniz tərəfindən dəstəklənməyən təkmil brauzer funksiyalarından istifadə edir.",
"Your browser can't run %(brand)s": "Brauzeriniz %(brand)s işlədə bilmir",
"Unsupported browser": "Dəstəklənməyən brauzer",
"Use %(brand)s on mobile": "Mobil telefonda %(brand)s istifadə edin",
"Powered by Matrix": "Gücünü Matrix'dən alır",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Go to your browser to complete Sign In": "Girişi tamamlamaq üçün brauzerinizə keçin",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Masaüstü (%(platformName)s)",
"Open": "Aç",
"Download Completed": "Yükləmə Tamamlandı",
"Unable to load config file: please refresh the page to try again.": "Konfiqurasiya faylını yükləmək mümkün deyil: yenidən cəhd etmək üçün səhifəni yeniləyin.",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element konfiqurasiyanızda yanlış JSON var. Problemi düzəldin və səhifəni yenidən yükləyin.",
"Your Element is misconfigured": "Elementi yanlış konfiqurasiya edibsiniz"
}

View File

@@ -1,4 +1,3 @@
{
"Dismiss": "Aдхіліць",
"powered by Matrix": "працуе на Matrix"
"Dismiss": "Aдхіліць"
}

View File

@@ -1,10 +1,7 @@
{
"Unknown device": "Непознато устройство",
"You need to be using HTTPS to place a screen-sharing call.": "Трябва да използвате HTTPS, за да споделите екрана си.",
"Dismiss": "Затвори",
"powered by Matrix": "базирано на Matrix",
"Welcome to Element": "Добре дошли в Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Децентрализиран, шифрован чат и съвместна работа, базирани на [matrix]",
"Sign In": "Вписване",
"Create Account": "Създай профил",
"Explore rooms": "Открий стаи",
@@ -13,11 +10,8 @@
"Invalid configuration: no default server specified.": "Невалидна конфигурация: не е указан сървър по подразбиране.",
"The message from the parser is: %(message)s": "Грешката от парсъра е: %(message)s",
"Invalid JSON": "Невалиден JSON",
"Open user settings": "Отвори потребителските настройки",
"Go to your browser to complete Sign In": "Отидете в браузъра за да завършите влизането",
"Missing indexeddb worker script!": "Липсва indexdb worker скриптът!",
"Unable to load config file: please refresh the page to try again.": "Неуспешно зареждане на конфигурационния файл: презаредете страницата за да опитате пак.",
"Previous/next recently visited room or community": "Предишна/следваща наскоро-посетена стая или общност",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Неподдържан браузър",
@@ -33,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 &amp; collaboration powered by $matrixLogo": "Децентрализиран, криптиран чат &amp; сътрудничество, захранено от $matrixlogo"
}

View File

@@ -1,5 +1,4 @@
{
"Missing indexeddb worker script!": "Nedostaje indexeddb radna skripta!",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neispravna konfiguracija: navesti se samo može jedan od default_server_config, default_server_name ili default_hs_url.",
"Invalid configuration: no default server specified.": "Neispravna konfiguracija: nije naveden zadani server.",
"Your Element is misconfigured": "Vaš element je pogrešno konfiguriran",
@@ -11,13 +10,10 @@
"Download Completed": "Preuzimanje završeno",
"Open": "Otvori",
"Dismiss": "Odbaci",
"Open user settings": "Otvori korisničke postavke",
"Previous/next recently visited room or community": "Prethodna / sljedeća nedavno posjećena soba ili zajednica",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Radna povrsina (%(platformName)s)",
"Go to your browser to complete Sign In": "Idite na svoj pretraživač da biste dovršili prijavu",
"Unknown device": "Nepoznat uređaj",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS za upućivanje poziva za dijeljenje ekrana.",
"Powered by Matrix": "Pokretano uz Matrix",
"Unsupported browser": "Nepodržani pretraživač",
"Your browser can't run %(brand)s": "Vaš pretraživač ne može pokretati %(brand)s",
@@ -28,7 +24,6 @@
"Go to element.io": "Idite na element.io",
"Failed to start": "Pokretanje nije uspjelo",
"Welcome to Element": "Dobrodošli u Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizirani, šifrirani razgovor &amp; suradnja pokrenuta [matrix]",
"Sign In": "Prijavite se",
"Create Account": "Otvori račun",
"Explore rooms": "Istražite sobe",

View File

@@ -2,9 +2,6 @@
"Dismiss": "Omet",
"Unknown device": "Dispositiu desconegut",
"Welcome to Element": "Benvingut/da a Element",
"You need to be using HTTPS to place a screen-sharing call.": "Has d'utilitzar HTTPS per poder fer una trucada amb pantalla compartida.",
"powered by Matrix": "amb tecnologia de Matrix",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Xat descentralitzat, xifrat i col·laboratiu amb tecnologia de [matrix]",
"Create Account": "Crea un compte",
"Explore rooms": "Explora sales",
"Sign In": "Inicia sessió",
@@ -19,8 +16,6 @@
"Unexpected error preparing the app. See console for details.": "Error inesperat durant la preparació de l'aplicació. Consulta la consola pels a més detalls.",
"Download Completed": "Baixada completada",
"Open": "Obre",
"Open user settings": "Obre la configuració d'usuari",
"Previous/next recently visited room or community": "Anterior/següent sala o comunitat visitada recentment",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s d'escriptori (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Powered by Matrix": "Amb tecnologia de Matrix",
@@ -32,7 +27,5 @@
"I understand the risks and wish to continue": "Entenc els riscos i vull continuar",
"Go to element.io": "Vés a element.io",
"Failed to start": "Ha fallat l'inici",
"Missing indexeddb worker script!": "Falta l'script del treballador indexeddb!",
"Use %(brand)s on mobile": "Utilitza %(brand)s al mòbil",
"Switch to space by number": "Canvia d'espai per número"
"Use %(brand)s on mobile": "Utilitza %(brand)s al mòbil"
}

View File

@@ -1,10 +1,7 @@
{
"Welcome to Element": "Vítá vás Element",
"Unknown device": "Neznámé zařízení",
"You need to be using HTTPS to place a screen-sharing call.": "Pro uskutečnění hovoru se sdílením obrazovky musíte používat HTTPS.",
"Dismiss": "Zavřít",
"powered by Matrix": "používá protokol Matrix",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráce na platformě [matrix]",
"Sign In": "Přihlásit se",
"Create Account": "Vytvořit účet",
"Explore rooms": "Procházet místnosti",
@@ -13,14 +10,12 @@
"Unexpected error preparing the app. See console for details.": "Neočekávaná chyba při přípravě aplikace. Podrobnosti najdete v konzoli.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neplatná konfigurace: je možné specifikovat pouze jednu volbu z default_server_config, default_server_name, nebo default_hs_url.",
"Invalid configuration: no default server specified.": "Neplatná konfigurace: není zadán výchozí server.",
"Open user settings": "Otevřít uživatelské nastavení",
"Go to your browser to complete Sign In": "Přejděte do prohlížeče a dokončete přihlášení",
"Your Element is misconfigured": "Váš Element je nesprávně nastaven",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Vaše konfigurace Elementu obsahuje nesprávná data JSON. Vyřešte prosím problém a načtěte znovu stránku.",
"Unable to load config file: please refresh the page to try again.": "Nepodařilo se načíst konfigurační soubor: abyste to zkusili znovu, načtěte prosím znovu stránku.",
"Download Completed": "Stahování dokončeno",
"Open": "Otevřít",
"Previous/next recently visited room or community": "Předchozí/další nedávno navštívená místnost či skupina",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Nepodporovaný prohlížeč",
"Your browser can't run %(brand)s": "Váš prohlížeč nedokáže spustit %(brand)s",
@@ -32,10 +27,6 @@
"Failed to start": "Nepovedlo se nastartovat",
"Powered by Matrix": "Běží na Matrixu",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s pro desktopový počítač (%(platformName)s)",
"Missing indexeddb worker script!": "Nenačetl se skript spravující indexdb!",
"Use %(brand)s on mobile": "Používání %(brand)s v mobilních zařízeních",
"Switch to space by number": "Přepnout na prostor podle čísla",
"Next recently visited room or community": "Další nedávno navštívená místnost nebo komunita",
"Previous recently visited room or community": "Nedávno navštívená místnost nebo komunita",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Decentralizovaný, šifrovaný chat a spolupráce na platformě $matrixLogo"
}

View File

@@ -5,11 +5,8 @@
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Gosodiad annilys: dim ond un o default_server_config, default_server_name, neu default_hs_url y gall ei nodi.",
"Invalid configuration: no default server specified.": "Gosodiad annilys: ni nodwyd gweinydd diofyn.",
"Unknown device": "Dyfais anhysbys",
"You need to be using HTTPS to place a screen-sharing call.": "Mae angen i chi fod yn defnyddio HTTPS i osod galwad rhannu sgrin.",
"powered by Matrix": "pwerwyd gan Matrix",
"Dismiss": "Wfftio",
"Welcome to Element": "Croeso i Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Sgwrsio a chydweithredu datganoledig a amgryptiedig â phwerwyd gan [matrix]",
"Sign In": "Mewngofnodi",
"Create Account": "Creu Cyfrif",
"Explore rooms": "Archwilio Ystafelloedd",

View File

@@ -1,10 +1,8 @@
{
"Dismiss": "Afslut",
"Dismiss": "Afvis",
"powered by Matrix": "Drevet af Matrix",
"Unknown device": "Ukendt enhed",
"You need to be using HTTPS to place a screen-sharing call.": "Du skal bruge HTTPS for at lave skærmdelings opkald.",
"Welcome to Element": "Velkommen til Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentraliseret, krypteret chat &amp; samarbejde baseret på [matrix]",
"The message from the parser is: %(message)s": "Beskeden fra parseren er: %(message)s",
"Invalid JSON": "Ugyldig JSON",
"Unexpected error preparing the app. See console for details.": "Uventet fejl ved forberedelse af appen. Se konsollen for detaljer.",
@@ -13,10 +11,7 @@
"Sign In": "Log ind",
"Create Account": "Opret brugerkonto",
"Explore rooms": "Udforsk rum",
"Missing indexeddb worker script!": "Manglende indexeddb worker script!",
"Unable to load config file: please refresh the page to try again.": "Ikke i stand til at indlæse konfigurationsfil: Genopfrisk venligst siden for at prøve igen.",
"Open user settings": "Åbn brugerindstillinger",
"Previous/next recently visited room or community": "Forrige/næste besøgte rum eller fællesskab",
"Go to your browser to complete Sign In": "Gå til din browser for at færdiggøre Log ind",
"Go to element.io": "Gå til element.io",
"I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker at fortsætte",
@@ -33,8 +28,5 @@
"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.": "Du kan fortsætte med at bruge din nuværende browser, men du kan opleve at visse eller alle funktioner ikke vil fungere korrekt.",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Venligst installer <chromeLink>Chrome</chromeLink>,<firefoxLink>Firefox</firefoxLink> eller <safariLink>Safari</safariLink> for den bedste oplevelse.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s bruger avanceret browser funktioner som ikke er understøttet af din nuværende browser.",
"Previous recently visited room or community": "Tidligere besøgt rum eller fællesskab",
"Switch to space by number": "Skift til space med nummer",
"Use %(brand)s on mobile": "Brug %(brand)s på mobil",
"Next recently visited room or community": "Næste tidligere besøgt rum eller fællesskab"
"Use %(brand)s on mobile": "Brug %(brand)s på mobil"
}

View File

@@ -1,10 +1,7 @@
{
"powered by Matrix": "betrieben mit Matrix",
"Dismiss": "Ausblenden",
"Unknown device": "Unbekanntes Gerät",
"You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen, um einen Anruf mit Bildschirmfreigabe durchzuführen.",
"Welcome to Element": "Willkommen bei Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- &amp; Kollaborationslösung basierend auf [matrix]",
"Sign In": "Anmelden",
"Create Account": "Konto erstellen",
"Explore rooms": "Räume erkunden",
@@ -14,10 +11,7 @@
"The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s",
"Invalid JSON": "Ungültiges JSON",
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen",
"Open user settings": "Benutzereinstellungen öffnen",
"Unable to load config file: please refresh the page to try again.": "Konfigurationsdatei kann nicht geladen werden: Bitte aktualisiere die Seite, um es erneut zu versuchen.",
"Missing indexeddb worker script!": "Fehlendes indexeddb-Arbeitsskript!",
"Previous/next recently visited room or community": "Vorheriger/nächster kürzlich besuchter Raum oder Community",
"Unsupported browser": "Nicht unterstützter Browser",
"Go to element.io": "Gehe zu element.io",
"Failed to start": "Start fehlgeschlagen",
@@ -34,8 +28,5 @@
"Your browser can't run %(brand)s": "Dein Browser kann %(brand)s nicht ausführen",
"Powered by Matrix": "Betrieben mit Matrix",
"Use %(brand)s on mobile": "Verwende %(brand)s am Handy",
"Switch to space by number": "Zum n-ten Space wechseln",
"Next recently visited room or community": "Nächster kürzlich besuchter Raum",
"Previous recently visited room or community": "Vorheriger kürzlich besuchter Raum",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Dezentralisierter, verschlüsselter Chat &amp; Zusammenarbeit unterstützt von $matrixLogo"
}

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Απόρριψη",
"Unknown device": "Άγνωστη συσκευή",
"You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για την πραγματοποίηση κλήσης διαμοιρασμού επιφάνειας εργασίας.",
"powered by Matrix": "λειτουργεί με το Matrix",
"Welcome to Element": "Καλώς ήλθατε στο Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Αποκεντρωμένη, κρυπτογραφημένη συνεργασία συνομιλίας χρησιμοποιώντας το [matrix]",
"Sign In": "Σύνδεση",
"Create Account": "Δημιουργία Λογαριασμού",
"The message from the parser is: %(message)s": "Το μήνυμα από τον αναλυτή είναι: %(message)s",
@@ -21,8 +18,6 @@
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Η ρύθμιση του Element περιέχει μη έγκυρο JSON. Διορθώστε το πρόβλημα και φορτώστε ξανά τη σελίδα.",
"Unable to load config file: please refresh the page to try again.": "Δεν είναι δυνατή η φόρτωση του αρχείου config: ανανεώστε τη σελίδα για να δοκιμάσετε ξανά.",
"Download Completed": "Η λήψη ολοκληρώθηκε",
"Open user settings": "Ανοίξτε τις ρυθμίσεις χρήστη",
"Previous/next recently visited room or community": "Προηγούμενο / επόμενο δωμάτιο ή κοινότητα που επισκεφτήκατε πρόσφατα",
"Unsupported browser": "Μη υποστηριζόμενο πρόγραμμα περιήγησης",
"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 χρησιμοποιεί προηγμένες δυνατότητες προγράμματος περιήγησης που δεν υποστηρίζονται από το τρέχον πρόγραμμα περιήγησής σας.",
@@ -32,7 +27,7 @@
"Failed to start": "Αποτυχία έναρξης",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"Missing indexeddb worker script!": "Απουσία indexeddb worker script!",
"Use %(brand)s on mobile": "Χρήση %(brand)s σε κινητό",
"Switch to space by number": "Εναλλαγή σε space με αριθμό"
"Switch to space by number": "Εναλλαγή σε space με αριθμό",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Αποκεντρωμένη, κρυπτογραφημένη συνομιλία και συνεργασία χρησιμοποιώντας το $matrixLogo"
}

View File

@@ -14,7 +14,6 @@
"Go to your browser to complete Sign In": "Go to your browser to complete Sign In",
"Unknown device": "Unknown device",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
"Powered by Matrix": "Powered by Matrix",
"Use %(brand)s on mobile": "Use %(brand)s on mobile",
"Unsupported browser": "Unsupported browser",

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Dismiss",
"powered by Matrix": "powered by Matrix",
"Unknown device": "Unknown device",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
"Welcome to Element": "Welcome to Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralised, encrypted chat &amp; collaboration powered by [matrix]",
"Sign In": "Sign In",
"Create Account": "Create Account",
"Explore rooms": "Explore rooms",
@@ -25,13 +22,9 @@
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Go to your browser to complete Sign In": "Go to your browser to complete Sign In",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"Previous/next recently visited room or community": "Previous/next recently visited room or community",
"Open user settings": "Open user settings",
"Open": "Open",
"Download Completed": "Download Completed",
"Unable to load config file: please refresh the page to try again.": "Unable to load config file: please refresh the page to try again.",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.",
"Your Element is misconfigured": "Your Element is misconfigured",
"Missing indexeddb worker script!": "Missing indexeddb worker script!",
"Switch to space by number": "Switch to space by number"
"Your Element is misconfigured": "Your Element is misconfigured"
}

View File

@@ -1,7 +1,6 @@
{
"Dismiss": "Rezigni",
"Unknown device": "Nekonata aparato",
"You need to be using HTTPS to place a screen-sharing call.": "Vi devas uzi HTTPS por ekran-kundivide alvoki.",
"Welcome to Element": "Bonvenon al Element",
"Sign In": "Ensaluti",
"Create Account": "Krei konton",

View File

@@ -1,10 +1,7 @@
{
"Unknown device": "Dispositivo desconocido",
"Dismiss": "Omitir",
"powered by Matrix": "con el poder de Matrix",
"You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.",
"Welcome to Element": "Te damos la bienvenida a Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas. Funciona con [matrix]",
"Sign In": "Iniciar sesión",
"Create Account": "Crear cuenta",
"Explore rooms": "Explorar salas",
@@ -13,11 +10,8 @@
"Invalid configuration: no default server specified.": "Configuración errónea: no se ha especificado servidor.",
"The message from the parser is: %(message)s": "El mensaje del parser es: %(message)s",
"Invalid JSON": "JSON inválido",
"Open user settings": "Abrir opciones de usuario",
"Go to your browser to complete Sign In": "Abre tu navegador web para completar el registro",
"Missing indexeddb worker script!": "¡Falta el Worker script “indexeddb”!",
"Unable to load config file: please refresh the page to try again.": "No se ha podido cargar el archivo de configuración. Recarga la página para intentarlo otra vez.",
"Previous/next recently visited room or community": "Anterior/siguiente sala o comunidad visitada recientemente",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s de escritorio (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Navegador no compatible",
@@ -34,6 +28,5 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funciones avanzadas que su navegador actual no soporta.",
"Powered by Matrix": "Funciona con Matrix",
"Use %(brand)s on mobile": "Usar %(brand)s en modo móvil",
"Switch to space by number": "Cambiar a espacio por número",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Conversaciones y colaboración descentralizadas y cifradas gracias a $matrixLogo"
}

View File

@@ -5,16 +5,10 @@
"Invalid configuration: no default server specified.": "Vigane seadistus: vaikimisi server on määramata.",
"Unable to load config file: please refresh the page to try again.": "Seadistuste faili laadimine ei õnnestunud: uuesti proovimiseks palun laadi leht uuesti.",
"Unexpected error preparing the app. See console for details.": "Rakenduse ettevalmistamisel tekkis ootamatu viga. Täpsema teabe leiad konsoolist.",
"Open user settings": "Ava kasutaja seadistused",
"Go to your browser to complete Sign In": "Sisselogimiseks ava oma brauser",
"Dismiss": "Loobu",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Matrix'i protokollil põhinev hajutatud ja krüpteeritud suhtlus- ning ühistöörakendus",
"Explore rooms": "Tutvu jututubadega",
"Missing indexeddb worker script!": "Lahendusest puudub indexeddb skript!",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Vigane seadistus. Sa võid määrata vaid ühe alljärgnevatest: default_server_config, default_server_name või default_hs_url.",
"Previous/next recently visited room or community": "Eelmine/järgmine hiljuti kasutatud jututuba või kogukond",
"You need to be using HTTPS to place a screen-sharing call.": "Ekraani jagava kõne jaoks pead kasutama HTTPS-ühendust.",
"powered by Matrix": "põhineb Matrix'il",
"Welcome to Element": "Tere tulemast kasutama suhtlusrakendust Element",
"Sign In": "Logi sisse",
"Create Account": "Loo konto",
@@ -34,8 +28,5 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s kasutab mitmeid uusi brauseri-põhiseid tehnoloogiaid, mis ei ole veel sinu veebibrauseris toetatud.",
"Powered by Matrix": "Põhineb Matrix'il",
"Use %(brand)s on mobile": "Kasuta rakendust %(brand)s nutiseadmes",
"Switch to space by number": "Vaata kogukonnakeskust tema numbri alusel",
"Next recently visited room or community": "Järgmine hiljuti külastatud jututuba või kogukond",
"Previous recently visited room or community": "Eelmine hiljuti külastatud jututuba või kogukond",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Hajutatud ja krüpteeritud suhtlus- ning ühistöörakendus, mille aluseks on $matrixLogo"
}

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Baztertu",
"powered by Matrix": "Matrix-ekin egina",
"Unknown device": "Gailu ezezaguna",
"You need to be using HTTPS to place a screen-sharing call.": "HTTPS erabili behar duzu sekretuak partekatzeko dei bat ezartzeko.",
"Welcome to Element": "Ongi etorri Element mezularitzara",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Txat eta elkarlan deszentralizatua eta zifratua [matrix] sarean",
"Sign In": "Hasi saioa",
"Create Account": "Sortu kontua",
"Explore rooms": "Arakatu gelak",
@@ -14,10 +11,7 @@
"The message from the parser is: %(message)s": "Prozesatzailearen mezua hau da: %(message)s",
"Invalid JSON": "JSON baliogabea",
"Go to your browser to complete Sign In": "Joan zure nabigatzailera izena ematen bukatzeko",
"Open user settings": "Ireki erabiltzailearen ezarpenak",
"Missing indexeddb worker script!": "indexeddb langile scripta falta da!",
"Unable to load config file: please refresh the page to try again.": "Ezin izan da konfigurazio fitxategia kargatu: Saiatu orria birkargatzen.",
"Previous/next recently visited room or community": "Berriki bisitatutako aurreko/hurrengo gela edo komunitatea",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Onartu gabeko nabigatzailea",

View File

@@ -1,17 +1,12 @@
{
"powered by Matrix": "قدرت‌یافته از ماتریکس",
"Unknown device": "دستگاه ناشناخته",
"Welcome to Element": "به Element خوش‌آمدید",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "چت غیر‌متمرکز، رمزنگاری‌شده &amp; راه اندازی شده با استفاده از ماتریکس",
"Dismiss": "نادیده بگیر",
"You need to be using HTTPS to place a screen-sharing call.": "برای راه اندازی تماس با اشتراک صفحه باید از HTTPS استفاده کنید.",
"Invalid JSON": "JSON اشتباه",
"Open user settings": "تنظیمات کاربر",
"Go to your browser to complete Sign In": "برای تکمیل ورود به مرورگر خود بروید",
"Sign In": "ورود",
"Create Account": "ایجاد حساب کاربری",
"Explore rooms": "جستجو در اتاق ها",
"Missing indexeddb worker script!": "اسکریپت کارگر نمایه پایگاه داده از دست رفته است!",
"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": "Element شما پیکربندی نشده است",
@@ -21,7 +16,6 @@
"Unexpected error preparing the app. See console for details.": "خطای غیر منتظره در آماده سازی برنامه. کنسول را برای جزئیات مشاهده کنید.",
"Download Completed": "بارگیری کامل شد",
"Open": "باز",
"Previous/next recently visited room or community": "قبلی/بعدی اتاق ها یا اجتماع های اخیرا بازدید شده",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s میزکار %(platformName)s",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "مرورگر پش‬تبانی نمی شود",
@@ -34,7 +28,5 @@
"Failed to start": "خطا در شروع",
"Powered by Matrix": "راه اندازی شده با استفاده از ماتریکس",
"Use %(brand)s on mobile": "از %(brand)s گوشی استفاده کنید",
"Switch to space by number": "تغییر به فضا با شماره",
"Previous recently visited room or community": "جلسه یا اتاق قبلی که اخیرا مشاهده شده است",
"Next recently visited room or community": "جلسه یا اتاق بعدی که اخیرا مشاهده شده است"
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "همکاری چت غیرمتمرکز و رمزگذاری شده &amp; توسعه یافته با استفاده از $matrixLogo"
}

View File

@@ -2,9 +2,6 @@
"Dismiss": "Hylkää",
"Unknown device": "Tuntematon laite",
"Welcome to Element": "Tervetuloa Element-sovellukseen",
"You need to be using HTTPS to place a screen-sharing call.": "Sinun täytyy käyttää HTTPS-yhteyttä, jotta voit jakaa näytön puhelussa.",
"powered by Matrix": "moottorina Matrix",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Hajautettua ja salattua viestintää Matrix-teknologialla",
"Sign In": "Kirjaudu",
"Create Account": "Luo tili",
"Explore rooms": "Selaa huoneita",
@@ -13,10 +10,7 @@
"Invalid configuration: no default server specified.": "Virheellinen asetus: oletuspalvelinta ei ole määritetty.",
"The message from the parser is: %(message)s": "Viesti jäsentimeltä: %(message)s",
"Invalid JSON": "Virheellinen JSON",
"Missing indexeddb worker script!": "Indexeddb-suorittajan skripti puuttuu!",
"Unable to load config file: please refresh the page to try again.": "Asetustiedostoa ei voi ladata. Yritä uudelleen lataamalla sivu uudelleen.",
"Open user settings": "Avaa käyttäjäasetukset",
"Previous/next recently visited room or community": "Edellinen/seuraava hiljattain vierailtu huone tai yhteisö",
"%(brand)s Desktop (%(platformName)s)": "%(brand)sin työpöytäversio (%(platformName)s)",
"Go to your browser to complete Sign In": "Tee kirjautuminen loppuun selaimessasi",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
@@ -33,8 +27,5 @@
"Powered by Matrix": "Moottorina Matrix",
"Your browser can't run %(brand)s": "%(brand)s ei toimi selaimessasi",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s käyttää edistyneitä selaimen ominaisuuksia, joita nykyinen selaimesi ei tue.",
"Use %(brand)s on mobile": "Käytä %(brand)sia mobiilisti",
"Switch to space by number": "Vaihda avaruuteen käyttäen numeroa",
"Next recently visited room or community": "Seuraava aiemmin vierailtu huone tai yhteisö",
"Previous recently visited room or community": "Aiemmin viimeaikoina vierailtu huone tai yhteisö"
"Use %(brand)s on mobile": "Käytä %(brand)sia mobiilisti"
}

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Ignorer",
"powered by Matrix": "propulsé par Matrix",
"Unknown device": "Appareil inconnu",
"You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel avec partage décran.",
"Welcome to Element": "Bienvenue sur Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Messagerie et collaboration décentralisées et chiffrées, propulsées par [matrix]",
"Sign In": "Se connecter",
"Create Account": "Créer un compte",
"Explore rooms": "Parcourir les salons",
@@ -14,10 +11,7 @@
"The message from the parser is: %(message)s": "Le message de lanalyseur est : %(message)s",
"Invalid JSON": "JSON non valide",
"Go to your browser to complete Sign In": "Utilisez votre navigateur pour terminer la connexion",
"Open user settings": "Ouvrir les paramètres utilisateur",
"Missing indexeddb worker script!": "Script du worker IndexedDB manquant !",
"Unable to load config file: please refresh the page to try again.": "Impossible de charger le fichier de configuration : rechargez la page pour réessayer.",
"Previous/next recently visited room or community": "Salon ou communauté visité récemment précédent/suivant",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Navigateur non pris en charge",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Veuillez installer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ou <safariLink>Safari</safariLink> pour une expérience optimale.",
@@ -34,8 +28,5 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s nécessite des fonctionnalités avancées que votre navigateur actuel ne prend pas en charge.",
"Powered by Matrix": "Propulsé par Matrix",
"Use %(brand)s on mobile": "Utiliser %(brand)s sur téléphone",
"Switch to space by number": "Afficher un espace par son numéro",
"Next recently visited room or community": "Prochain salon ou communauté récemment visité",
"Previous recently visited room or community": "Salon ou communauté précédemment visité",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Messagerie décentralisée, chiffrée &amp; une collaboration alimentée par $matrixLogo"
}

View File

@@ -6,19 +6,14 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s brûkt avansearre browserfunksjes dyt net stipe wurde troch de browser dyt jo no brûke.",
"Powered by Matrix": "Mooglik makke troch Matrix",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"Previous/next recently visited room or community": "Foarige/Folgjende resintlik besochte keamer as mienskip",
"Switch to space by number": "Wikselje fan romte mei nûmer",
"Unexpected error preparing the app. See console for details.": "Unferwachte flater by it klearmeitsjen fan de applikaasje. Sjoch yn de console foar details.",
"The message from the parser is: %(message)s": "It berjocht fan de ferwurker is: %(message)s",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Jo Element-konfiguraasje hat ûnjildige JSON. Nei dat jo dit oplost ha, kin dizze side ferfarske wurde.",
"Use %(brand)s on mobile": "Brûk %(brand)s op mobyl",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Desintralisearre, fersifere chat &amp; gearwurking fersoarge troch [matrix]",
"You need to be using HTTPS to place a screen-sharing call.": "Oproppen mei skerm dielen fereasket HTTPS.",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Go to your browser to complete Sign In": "Gean nei jo browser om it ynskriuwen te foltôgjen",
"Download Completed": "Download foltôge",
"Unable to load config file: please refresh the page to try again.": "Kin konfiguraasjebestân net lade: ferfarskje de side en probearje it nochris.",
"Open user settings": "Brûkersynstellingen iepenje",
"Dismiss": "Slute",
"Explore rooms": "Keamers ûntdekke",
"Create Account": "Registrearje",

View File

@@ -1,10 +1,7 @@
{
"Unknown device": "Gléas nár aithníodh",
"You need to be using HTTPS to place a screen-sharing call.": "Ní mór HTTPS a úsáid chun glaoch comhroinnt scáileáin a chur.",
"powered by Matrix": "cumhachtaithe ag Matrix",
"Dismiss": "Cuir uait",
"Welcome to Element": "Fáilte romhat chuig Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Meán comhrá agus comhoibriú, díláraithe agus criptithe, cumhachtaithe ag [matrix]",
"Sign In": "Sínigh Isteach",
"Create Account": "Déan cuntas a chruthú",
"Explore rooms": "Breathnaigh thart ar na seomraí",
@@ -12,7 +9,6 @@
"Go to your browser to complete Sign In": "Oscail do bhrabhsálaí agus críochnaigh an clárú",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Coinníonn do chumraíocht JSON neamhbhailí. Ceartaigh an fadhb agus athlódáil an leathanach le do thoil.",
"Your Element is misconfigured": "Níl do fheidhmchlár Element cumraithe i gceart",
"Previous/next recently visited room or community": "roimhe/chéad eile, seomra nó pobal is déanaí",
"Failed to start": "Theip chun tosú",
"I understand the risks and wish to continue": "Tuigim na rioscaí agus ba mhaith liom lean ar aghaidh",
"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.": "An féidir leat úsáid do bhrabhsálaí reatha, ach nár oibrí roinnt nó gach gné agus nár thaispeántar an feidhmchlár i gceart.",
@@ -28,11 +24,8 @@
"The message from the parser is: %(message)s": "Is í an teachtaireacht as an parsálaí: %(message)s",
"Invalid configuration: no default server specified.": "Cumraíocht neamhbhailí: Níl aon freastalaí réamhshocraithe a sonrú.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Cumraíocht neamhbhailí: ní féidir ach ceann de default_server_config, default_server_name, nó default_hs_url a shonrú.",
"Missing indexeddb worker script!": "An script oibrí \"indexeddb\" ag iarraidh!",
"Powered by Matrix": "Cumhachtaithe ag Matrix",
"Go to element.io": "Téigh go element.io",
"Open user settings": "Oscail socruithe úsáideora",
"Open": "Oscail",
"Use %(brand)s on mobile": "Úsáid %(brand)s ar guthán póca",
"Switch to space by number": "Athraigh go spás de réir uimhreach"
"Use %(brand)s on mobile": "Úsáid %(brand)s ar guthán póca"
}

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Rexeitar",
"powered by Matrix": "funciona grazas a Matrix",
"Unknown device": "Dispositivo descoñecido",
"You need to be using HTTPS to place a screen-sharing call.": "Precisa utilizar HTTPS para establecer unha chamada de pantalla compartida.",
"Welcome to Element": "Benvida/o a Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Conversas e colaboración descentralizada e cifrada grazas a [matrix]",
"Sign In": "Acceder",
"Create Account": "Crear conta",
"Explore rooms": "Explorar salas",
@@ -13,10 +10,7 @@
"Unexpected error preparing the app. See console for details.": "Fallo non agardado ao preparar a app. Detalles na consola.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración non válida: só se pode indicar un de default_server_config, default_server_name, ou default_hs_url.",
"Invalid configuration: no default server specified.": "Configuración non válida: non se indicou servidor por defecto.",
"Missing indexeddb worker script!": "Falta o script indexeddb!",
"Unable to load config file: please refresh the page to try again.": "Non se cargou o ficheiro de configuración: actualiza a páxina para reintentalo.",
"Open user settings": "Abrir axustes da usuaria",
"Previous/next recently visited room or community": "Anterior/seguinte sala ou comunidade recentes",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"Go to your browser to complete Sign In": "Abre o navegador para realizar a Conexión",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
@@ -34,8 +28,5 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza características avanzadas do navegador que non están dispoñibles no teu navegador.",
"Powered by Matrix": "Funciona grazas a Matrix",
"Use %(brand)s on mobile": "Utiliza %(brand)s no móbil",
"Switch to space by number": "Cambiar a espazo polo número",
"Next recently visited room or community": "Seguinte sala ou comunidade visitada recentemente",
"Previous recently visited room or community": "Sala ou Comunidade visitada recentemente",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Conversas &amp; colaboración descentralizadas e cifradas grazas a $matrixLogo"
}

View File

@@ -1,19 +1,14 @@
{
"Dismiss": "התעלם",
"powered by Matrix": "מופעל ע\"י Matrix",
"Unknown device": "מכשיר לא ידוע",
"You need to be using HTTPS to place a screen-sharing call.": "עליך להיות מחובר ב-HTTPS בכדי לבצע שיחה עם שיתוף מסך.",
"Welcome to Element": "ברוכים הבאים ל Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "צ'אט וכלי שיתוף פעולה מבוזר ומוצפן - מופעל באמצעות [matrix]",
"Invalid JSON": "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.": "תצורה שגויה: לא צוין שרת ברירת מחדל.",
"Open user settings": "פתח הגדרות משתמש",
"Go to your browser to complete Sign In": "עבור לדפדפן להמשך ההתחברות",
"Explore rooms": "גלה חדרים",
"Create Account": "משתמש חדש",
"Sign In": "התחברות",
"Previous/next recently visited room or community": "הבא\\קודם חדרים וקהילות שביקרתם לאחרונה",
"Open": "פתח",
"Download Completed": "ההורדה הושלמה",
"Unexpected error preparing the app. See console for details.": "שגיאה לא צפויה במהלך טעינת האפליקציה. ראו קונסול לפרטים נוספים.",
@@ -34,5 +29,6 @@
"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 במכשיר הנייד"
"Use %(brand)s on mobile": "השתמש ב-%(brand)s במכשיר הנייד",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "צ'אט מבוזר ומוצפן &amp; מופעל בשיתוף פעולה ע\"י $matrixLogo"
}

View File

@@ -1,10 +1,7 @@
{
"Unknown device": "अज्ञात यन्त्र",
"You need to be using HTTPS to place a screen-sharing call.": "स्क्रीन साझा की कॉल करने के लिए आपको HTTPS का उपयोग करने की आवश्यकता है।",
"Dismiss": "खारिज",
"powered by Matrix": "मैट्रिक्स द्वारा संचालित",
"Welcome to Element": "Element में आपका स्वागत है",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "[मैट्रिक्स] द्वारा संचालित विकेंद्रीकृत, एन्क्रिप्टेड चैट और सहयोगिता",
"Sign In": "साइन करना",
"Create Account": "खाता बनाएं",
"Explore rooms": "रूम का अन्वेषण करें",

View File

@@ -1,8 +1,5 @@
{
"Unknown device": "Nepoznati uređaj",
"You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS kako biste pokrenuli poziv s dijeljenjem ekrana.",
"Dismiss": "Odbaci",
"powered by Matrix": "powered by Matrix",
"Welcome to Element": "Dobrodošli u Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizirani, enkriptirani chat &amp; kolaboracija powered by [matrix]"
"Welcome to Element": "Dobrodošli u Element"
}

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Eltüntetés",
"powered by Matrix": "a gépházban: Matrix",
"Unknown device": "Ismeretlen eszköz",
"You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnia.",
"Welcome to Element": "Üdvözli az Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon",
"Sign In": "Bejelentkezés",
"Create Account": "Fiók létrehozása",
"Explore rooms": "Szobák felderítése",
@@ -14,13 +11,10 @@
"The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s",
"Invalid JSON": "Érvénytelen JSON",
"Go to your browser to complete Sign In": "A böngészőben fejezze be a bejelentkezést",
"Open user settings": "Felhasználói beállítások megnyitása",
"Missing indexeddb worker script!": "Hiányzó indexeddb worker parancsfájl!",
"Unable to load config file: please refresh the page to try again.": "A konfigurációs fájlt nem sikerült betölteni: frissítse az oldalt és próbálja meg újra.",
"Previous/next recently visited room or community": "Előző/következő nemrég meglátogatott szobák vagy közösségek",
"%(brand)s Desktop (%(platformName)s)": "Asztali %(brand)s (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "A böngésző nem támogatott",
"Unsupported browser": "Nem támogatott böngésző",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "A legjobb élmény érdékében telepítsen <chromeLink>Chrome-ot</chromeLink>, <firefoxLink>Firefoxot</firefoxLink> vagy <safariLink>Safarit</safariLink>.",
"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.": "Folytathatja a jelenlegi böngészőjével, de néhány vagy az összes funkció használhatatlan lehet, vagy hibák lehetnek az alkalmazás kinézetében és viselkedésében.",
"I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom",
@@ -31,11 +25,8 @@
"Your Element is misconfigured": "Az Element hibásan van beállítva",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Az Element érvénytelen JSON-t tartalmazó konfigurációval rendelkezik. Javítsa és töltse újra az oldalt.",
"Your browser can't run %(brand)s": "A böngészője nem tudja futtatni ezt: %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s speciális böngészőfunkciókat használ, amelyeket a jelenlegi böngészője nem támogat.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "A(z) %(brand)s speciális böngészőfunkciókat használ, amelyeket a jelenlegi böngészője nem támogat.",
"Powered by Matrix": "A gépházban: Matrix",
"Use %(brand)s on mobile": "Mobilon használd ezt: %(brand)s",
"Switch to space by number": "Tér váltás számmal",
"Next recently visited room or community": "Következő nemrég meglátogatott szoba vagy közösség",
"Previous recently visited room or community": "Előző nemrég meglátogatott szoba vagy közösség",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Elosztott, titkosított csevegés &amp; együttműködés ezzel: $matrixLogo"
"Use %(brand)s on mobile": "Mobilon használja ezt: %(brand)s",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Elosztott, titkosított csevegés és együttműködés ezzel: $matrixLogo"
}

View File

@@ -2,7 +2,6 @@
"Explore rooms": "Փնտրել սենյակներ",
"Failed to start": "Չի ստացվում սկսել",
"Use %(brand)s on mobile": "Օգտագործում է %(brand)s հեռախոսի վրա",
"You need to be using HTTPS to place a screen-sharing call.": "Դուք պետք է օգտագործեք HTTPS միացում որպիսի կարողանաք կատարել էկրանը ցույց տալով զանգ",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s%(browserName)s%(osName)s",
"Unknown device": "Անծանոթ սարք",
"Welcome to Element": "Բարի գալուստ Element",

View File

@@ -1,16 +1,11 @@
{
"Dismiss": "Abaikan",
"powered by Matrix": "didukung oleh Matrix",
"Unknown device": "Perangkat tidak dikenal",
"You need to be using HTTPS to place a screen-sharing call.": "Anda perlu menggunakan HTTPS untuk melakukan panggilan berbagi layar.",
"Welcome to Element": "Selamat datang di Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Obrolan &amp; kolaborasi terdecentralisasi dan terenkripsi, diberdayakan oleh [matrix]",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfigurasi Element Anda berisi JSON yang tidak valid. Mohon perbaiki masalahnya dan muat ulang halamannya.",
"Invalid configuration: no default server specified.": "Konfigurasi tidak valid: server bawaan belum ditentukan.",
"Missing indexeddb worker script!": "Tidak ada script worker indexeddb!",
"Explore rooms": "Jelajahi ruangan",
"Create Account": "Buat Akun",
"Switch to space by number": "Beralih ke space bedasarkan angka",
"Go to your browser to complete Sign In": "Buka browser Anda untuk menyelesaikan Sign In",
"Sign In": "Masuk",
"Failed to start": "Gagal untuk memulai",
@@ -25,8 +20,6 @@
"Powered by Matrix": "Diberdayakan oleh Matrix",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"Previous/next recently visited room or community": "Ruangan atau komunitas yang baru saja dikunjungi sebelumnya/berikutnya",
"Open user settings": "Buka pengaturan pengguna",
"Open": "Buka",
"Download Completed": "Unduhan Selesai",
"Unexpected error preparing the app. See console for details.": "Kesalahan tak terduga saat menyiapkan aplikasi. Lihat konsol untuk detail.",
@@ -35,7 +28,5 @@
"The message from the parser is: %(message)s": "Pesan dari pengurai adalah: %(message)s",
"Your Element is misconfigured": "Anda mengatur Element dengan salah",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Konfigurasi tidak valid: hanya bisa menentukan satu dari default_server_config, default_server_name, atau default_hs_url.",
"Next recently visited room or community": "Ruangan atau komunitas berikutnya yang baru saja dilihat",
"Previous recently visited room or community": "Ruangan atau komunitas sebelumnya yang baru saja dilihat",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Obrolan &amp; kolaborasi terdesentralisasi dan terenkripsi, diberdayakan oleh $matrixLogo"
}

View File

@@ -2,7 +2,6 @@
"Welcome to Element": "Velkomin í Element",
"Unknown device": "Óþekkt tæki",
"Dismiss": "Hunsa",
"You need to be using HTTPS to place a screen-sharing call.": "Þú verður að nota HTTPS til að hringja símtal með skjádeilingu.",
"Open": "Opna",
"Unsupported browser": "Óstuddur vafri",
"Your browser can't run %(brand)s": "Vafrinn þinn getur ekki keyrt %(brand)s",

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Chiudi",
"powered by Matrix": "offerto da Matrix",
"Unknown device": "Dispositivo sconosciuto",
"You need to be using HTTPS to place a screen-sharing call.": "Devi usare HTTPS per effettuare una chiamata con la condivisione dello schermo.",
"Welcome to Element": "Benvenuti su Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat criptate, decentralizzate e collaborazioni offerte da [matrix]",
"Sign In": "Accedi",
"Create Account": "Crea account",
"Explore rooms": "Esplora stanze",
@@ -14,10 +11,7 @@
"The message from the parser is: %(message)s": "Il messaggio dal parser è: %(message)s",
"Invalid JSON": "JSON non valido",
"Go to your browser to complete Sign In": "Vai nel tuo browser per completare l'accesso",
"Open user settings": "Apri impostazioni utente",
"Missing indexeddb worker script!": "Script di lavoro indexeddb mancante!",
"Unable to load config file: please refresh the page to try again.": "Impossibile caricare il file di configurazione: ricarica la pagina per riprovare.",
"Previous/next recently visited room or community": "Avanti/indietro stanze o comunità visitate di recente",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Browser non supportato",
@@ -34,8 +28,5 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funzionalità avanzate del browser che non sono supportate dal tuo browser attuale.",
"Powered by Matrix": "Offerto da Matrix",
"Use %(brand)s on mobile": "Usa %(brand)s su mobile",
"Switch to space by number": "Passa allo spazio per numero",
"Next recently visited room or community": "Prossima stanza o comunità visitata di recente",
"Previous recently visited room or community": "Precedente stanza o comunità visitata di recente",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Chat e collaborazioni criptate e decentralizzate offerte da $matrixLogo"
}

View File

@@ -2,9 +2,6 @@
"Welcome to Element": "Elementにようこそ",
"Unknown device": "不明な端末",
"Dismiss": "閉じる",
"powered by Matrix": "powered by Matrix",
"You need to be using HTTPS to place a screen-sharing call.": "画面共有通話を行うにはHTTPS通信を使う必要があります。",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "[matrix] による、分散型で暗号化された会話とコラボレーション",
"Unexpected error preparing the app. See console for details.": "アプリケーションの準備中に予期しないエラーが発生しました。詳細はコンソールを参照してください。",
"Invalid configuration: no default server specified.": "不正な設定:デフォルトのサーバーが設定されていません。",
"Sign In": "サインイン",
@@ -16,11 +13,9 @@
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "最高のユーザー体験を得るためには、<chromeLink>Chrome</chromeLink>か<firefoxLink>Firefox</firefoxLink>、もしくは<safariLink>Safari</safariLink>をインストールしてください。",
"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": "リスクを理解して続行",
"Missing indexeddb worker script!": "IndexedDBのワーカースクリプトがありません",
"Unable to load config file: please refresh the page to try again.": "設定ファイルの読み込みに失敗しました:ページを再読み込みして、もう一度やり直してください。",
"Download Completed": "ダウンロードが完了しました",
"Open": "開く",
"Open user settings": "ユーザー設定を開く",
"%(brand)s Desktop (%(platformName)s)": "%(brand)sデスクトップ版%(platformName)s",
"Go to your browser to complete Sign In": "ブラウザーに移動してサインインを完了してください",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s%(browserName)s、%(osName)s",
@@ -32,7 +27,5 @@
"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": "Powered by Matrix",
"Previous/next recently visited room or community": "最近利用したルームまたはコミュニティ",
"Use %(brand)s on mobile": "携帯端末で%(brand)sを使用できます",
"Switch to space by number": "スペースを番号で切り替える"
"Use %(brand)s on mobile": "携帯端末で%(brand)sを使用できます"
}

View File

@@ -1,9 +1,6 @@
{
"Unknown device": "se samtcise'u vau je na slabu",
"You need to be using HTTPS to place a screen-sharing call.": ".i lo nu do pilno la'au xy. bu ty. ty. py. sy. li'u sarcu lo nu do co'a vidni benji",
"Dismiss": "nu mipri",
"powered by Matrix": ".i la .meitriks. cu jicmu",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": ".i la .meitriks. cu jicmu lo nu catni be na ku je mifra tavla je ke kansa gunka",
"Invalid JSON": ".i le veirdjeisano na drani",
"Download Completed": ".i mo'u kibycpa",
"Open": "nu viska",
@@ -22,7 +19,6 @@
"Sign In": "nu co'a jaspu",
"Create Account": "nu pa re'u co'a jaspu",
"Explore rooms": "nu facki le du'u ve zilbe'i",
"Missing indexeddb worker script!": ".i na pa gunka samtci pe la'o zoi. indexeddb .zoi vanbi",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": ".i le tcimi'e vreji na drani le ka jai do'e fai gi jo nai zoi zoi. default_server_config .zoi gi zoi zoi. default_server_name .zoi gi zoi zoi. default_hs_url .zoi cmene da",
"Invalid configuration: no default server specified.": ".i le tcimi'e vreji na drani le ka jai do'e zmicu'a fo le ka samtcise'u",
"Your Element is misconfigured": ".i le tcimi'e be la .elyment. be'o vreji na drani",
@@ -30,7 +26,5 @@
"The message from the parser is: %(message)s": ".i notci fi le genturfa'i fa zoi zoi. %(message)s .zoi",
"Unable to load config file: please refresh the page to try again.": ".i da nabmi fi lo nu samymo'i le tcimi'e vreji .i ko ba zukte le ka kibycpa le kibypapri kei le ka troci",
"Unexpected error preparing the app. See console for details.": ".i da nabmi fi lo nu co'a ka'e pilno le samtci .i ko tcidu le notci be fi le samymi'etci",
"Open user settings": "nu viska le pilno tcimi'e tutci",
"Previous/next recently visited room or community": "ve zilbe'i vau ja girzu vau je bo lamli'e vau ja se lamli'e",
"Powered by Matrix": ".i la .meitriks. cu jicmu"
}

View File

@@ -1,10 +1,7 @@
{
"Unknown device": "უცნობი მოწყობილობა",
"You need to be using HTTPS to place a screen-sharing call.": "ეკრანის გაზიარების ფუნქციის მქონე ზარისთვის საჭიროა, იყენებდეთ HTTPS-ს.",
"Dismiss": "უარის თქმა",
"powered by Matrix": "Matrix-ზე დაფუძნებული",
"Welcome to Element": "კეთილი იყოს თქვენი მობრძანება Element-ზე",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "დეცენტრალიზებული, დაშიფრული ჩატი &amp; კოლაბორაცია, დაფუძნებული [matrix]-ზე",
"Explore rooms": "ოთახების დათავლიერება",
"Failed to start": "ჩართვა ვერ მოხერხდა",
"Use %(brand)s on mobile": "გამოიყენე %(brand)s-ი მობილურზე",
@@ -25,7 +22,6 @@
"Powered by Matrix": "მუშაობს Matrix-ის მეშვეობით",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Go to your browser to complete Sign In": "გახსენი ბრაუზერი Sign In-ის დასასრულებლად",
"Open user settings": "მომხმარებლების პარამეტრების გახსნა",
"Open": "გახსნა",
"Download Completed": "გადმოწერა დასრულებულია"
}

View File

@@ -1,23 +1,18 @@
{
"Invalid JSON": "JSON armeɣtu",
"Open user settings": "Ldi iɣewwaṛen n useqdac",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s n tnarit (%(platformName)s)",
"Go to your browser to complete Sign In": "Ddu ɣer iminig akken ad tkemleḍ ajerred",
"Unknown device": "Ibenk arussin",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Create Account": "Rnu amiḍan",
"powered by Matrix": "s lmendad n Matrix",
"Dismiss": "Agwi",
"Sign In": "Kcem",
"Explore rooms": "Snirem tixxamin",
"Missing indexeddb worker script!": "Asekript n uxeddam Indexeddb ulac-it!",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Tawila d tarmeɣtut: mudd-d kan yiwen seg default_server_config, default_server_name, neɣ default_hs_url.",
"Invalid configuration: no default server specified.": "Tawila d tarmeɣtut: ulac aqeddac amezwer i d-yettwafernen.",
"The message from the parser is: %(message)s": "Izen n umaslaḍ d: %(message)s",
"Unable to load config file: please refresh the page to try again.": "Yegguma ad d-yali ufaylu n twila: ma ulac aɣilif smiren asebter akken ad tεerḍeḍ tikkelt-nniḍen.",
"Unexpected error preparing the app. See console for details.": "Tella-d tuccḍa lawan n uheyyi n usnas: Wali tadiwent i wugar telqeyt.",
"Previous/next recently visited room or community": "Taxxamt neɣ tamɣiwent wuɣur kecmen imerza send/seld",
"You need to be using HTTPS to place a screen-sharing call.": "Ilaq-ak(am) ad tesqedceḍ HTTPs akken ad tesεeddiḍ asiwel s beṭṭu n ugdil.",
"Unsupported browser": "Ur yettusefrak ara yiminig",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Ma ulac aɣilif, sebded <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, neɣ<safariLink>Safari</safariLink> i tirmit igerrzen.",
"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.": "Tzemreḍ ad tkemmleḍ deg useqdec n yiminig-ik(im) amiran, maca kra n tmahilin neɣ akk zemrent ur nteddu ara, rnu arwes n usnas yezmer ad d-iban d armeɣtu.",
@@ -25,7 +20,6 @@
"Go to element.io": "Ṛuḥ ɣer element.io",
"Failed to start": "Asenker ur yeddi ara",
"Welcome to Element": "Ansuf ɣer Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Adiwenni &amp; attekki araslemmas d uwgelhan s lmendad n [matrix]",
"Your Element is misconfigured": "Aferdis-inek·inem ur yettuswel ara akken iwata",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Deg twila n uferdis-inek·inem yella JSON d arameɣtu. Ttxil-k·m seɣti ugur syen ales asali n usebter.",
"Download Completed": "Asider yemmed",
@@ -33,6 +27,5 @@
"Your browser can't run %(brand)s": "Iminig-inek·inem ur isselkan ara %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s isseqdac timahilin n yiminig leqqayen ur yessefrak ara yiminig-ik·im amiran.",
"Powered by Matrix": "Iteddu s lmendad n Matrix",
"Use %(brand)s on mobile": "Seqdec %(brand)s deg tiliɣri",
"Switch to space by number": "Ddu ɣer space s uṭṭun"
"Use %(brand)s on mobile": "Seqdec %(brand)s deg tiliɣri"
}

View File

@@ -1,12 +1,9 @@
{
"Dismiss": "버리기",
"powered by Matrix": "Matrix의 지원을 받음",
"Unknown device": "알 수 없는 기기",
"Welcome to Element": "Element에 오신 것을 환영합니다",
"You need to be using HTTPS to place a screen-sharing call.": "화면 공유 전화를 걸려면 HTTPS를 사용해야 합니다.",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "분산되고, 암호화된 대화 &amp; [matrix]의 지원으로 협력",
"The message from the parser is: %(message)s": "파서에서 온 메시지: %(message)s",
"Invalid JSON": "잘못된 JSON",
"Invalid JSON": "유효하지 않은 JSON",
"Unexpected error preparing the app. See console for details.": "앱을 준비하는 동안 예기치 않은 오류가 발생했습니다. 자세한 내용은 콘솔을 확인하세요.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "잘못된 설정: default_server_config 와 defalut_server_name, default_hs_url 중 하나만 지정할 수 있습니다.",
"Invalid configuration: no default server specified.": "잘못된 설정: 기본 서버가 지정되지 않았습니다.",
@@ -14,22 +11,19 @@
"Create Account": "계정 만들기",
"Explore rooms": "방 검색",
"Unable to load config file: please refresh the page to try again.": "설정 파일을 불러오는 데 실패: 페이지를 새로고침한 후에 다시 시도해 주십시오.",
"Open user settings": "사용자 설정 열기",
"Previous/next recently visited room or community": "최근에 방문한 이전/다음 방 또는 커뮤니티",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s 데스크탑 (%(platformName)s)",
"Go to your browser to complete Sign In": "로그인을 완료하려면 브라우저로 이동해주세요",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "지원되지 않는 브라우저",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "최상의 경험을 위해 <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, 또는 <safariLink>Safari</safariLink>를 설치해주세요.",
"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.": "현재 사용중이신 브라우저를 계속 사용하셔도 됩니다, 다만 일부 기능들이 작동하지 않을 수 있으며 애플리케이션이 잘못돼 보일 수 있습니다.",
"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": "위험하다는 것을 이해했으며 계속하고 싶습니다",
"Go to element.io": "element.io가기",
"Go to element.io": "element.io 이동",
"Failed to start": "시작 실패",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s 는 당신의 브라우저에서 지원되지 않는 고급 기능을 사용합니다.",
"Your browser can't run %(brand)s": "당신의 브라우저는 %(brand)s 를 작동할 수 없습니다",
"Use %(brand)s on mobile": "모바일에서 %(brand)s 사용",
"Powered by Matrix": "Matrix로 지원됨",
"Switch to space by number": "숫자로 스페이스 전환하기",
"Open": "열기",
"Download Completed": "다운로드 완료",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "당신의 Element 설정은 유효하지 않은 JSON을 포함합니다. 이 문제를 해결하고 페이지를 새로고침해주세요.",

View File

@@ -15,7 +15,6 @@
"Unsupported browser": "ບໍ່ຮັບຮອງເວັບບຣາວເຊີນີ້",
"Use %(brand)s on mobile": "ໃຊ້ມືຖື %(brand)s",
"Powered by Matrix": "ສະໜັບສະໜູນໂດຍ Matrix",
"You need to be using HTTPS to place a screen-sharing call.": "ທ່ານຈໍາເປັນຕ້ອງໃຊ້ HTTPS ເພື່ອໃຊ້ການແບ່ງປັນຫນ້າຈໍ.",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unknown device": "ທີ່ບໍ່ຮູ້ຈັກອຸປະກອນນີ້",
"Go to your browser to complete Sign In": "ໄປທີ່ໜ້າເວັບຂອງທ່ານເພື່ອເຂົ້າສູ່ລະບົບ",

View File

@@ -1,10 +1,7 @@
{
"Unknown device": "Nežinomas įrenginys",
"powered by Matrix": "veikia su Matrix",
"Welcome to Element": "Sveiki atvykę į Element",
"You need to be using HTTPS to place a screen-sharing call.": "Norint skambinti naudojant ekrano vaizdo dalijimosi funkciją, jūs turite naudoti HTTPS.",
"Dismiss": "Atmesti",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizuoti, šifruoti pokalbiai ir bendradarbiavimas, veikiantis su [matrix]",
"Sign In": "Prisijungti",
"Create Account": "Sukurti Paskyrą",
"Explore rooms": "Žvalgyti kambarius",
@@ -14,10 +11,7 @@
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Klaidinga konfigūracija: galima nurodyti tik vieną iš default_server_config, default_server_name, arba default_hs_url.",
"Invalid configuration: no default server specified.": "Klaidinga konfigūracija: nenurodytas numatytasis serveris.",
"Go to your browser to complete Sign In": "Norėdami užbaigti prisijungimą, eikite į naršyklę",
"Open user settings": "Atidaryti vartotojo nustatymus",
"Missing indexeddb worker script!": "Trūksta indexeddb worker skripto!",
"Unable to load config file: please refresh the page to try again.": "Nepavyko įkelti konfigūracijos failo: atnaujinkite puslapį, kad pabandytumėte dar kartą.",
"Previous/next recently visited room or community": "Ankstesnis/sekantis neseniai lankytas kambarys ar bendruomenė",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Kompiuteryje (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Nepalaikoma naršyklė",

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Aizvērt",
"powered by Matrix": "Tiek darbināta ar Matrix",
"Unknown device": "Nezināma ierīce",
"You need to be using HTTPS to place a screen-sharing call.": "Ekrāna kopīgošanai nepieciešams izmantot HTTPS savienojumu.",
"Welcome to Element": "Esiet laipni gaidīti Elementā",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizēta, šifrēta tērziņu &amp; kopdarbības vide uz [matrix] bāzes",
"Sign In": "Ierakstīties",
"Create Account": "Izveidot kontu",
"Explore rooms": "Pārlūkot istabas",
@@ -14,7 +11,6 @@
"The message from the parser is: %(message)s": "No pārsētāja ir ziņa: %(message)s",
"Invalid JSON": "Kļūdains JSON",
"Unable to load config file: please refresh the page to try again.": "Neizdevās ielādēt konfigurācijas failu. Lai atkārtotu mēģinātu, lūdzu pārlādējiet lapu.",
"Open user settings": "Atvērt lietotāja iestatījumus",
"Go to your browser to complete Sign In": "Dodieties uz pārlūku, lai pabeigtu pierakstīšanos",
"Unsupported browser": "Neatbalstīts pārlūks",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Lai gūtu labāko lietošanas pieredzi, lūdzu, instalējiet <chromeLink>Chromium</chromeLink>, <firefoxLink>Firefox</firefoxLink> vai <safariLink>Safari</safariLink> pārlūku.",
@@ -23,16 +19,13 @@
"Go to element.io": "Doties uz element.io",
"Failed to start": "Neizdevās palaist",
"Powered by Matrix": "Griežas uz Matrix tehnoloģijas",
"Previous/next recently visited room or community": "Iepriekšējā/nākošā nesen apmeklētā istaba vai kopiena",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s izmanto pārlūku papildfunkcijas, kuras netiek atbalstītas šajā pārlūkā.",
"Your browser can't run %(brand)s": "Jūsu pārlūks nevar palaist %(brand)s",
"Missing indexeddb worker script!": "Trūkst indexeddb worker skripta!",
"Open": "Atvērt",
"Download Completed": "Lejuplāde pabeigta",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Jūsu Element konfigurācija satur kļūdainu JSON. Lūdzu, izlabojiet un pārlādējiet lapu.",
"Your Element is misconfigured": "Jūsu Element ir nokonfigurēts kļūdaini",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Galdvirsmas (%(platformName)s)",
"Switch to space by number": "Pārslēgties uz atstarpi/tukšumu ar numuru",
"Use %(brand)s on mobile": "Mobilajā tālrunī izmanojiet %(brand)s"
}

View File

@@ -1,16 +1,11 @@
{
"Dismiss": "ഒഴിവാക്കുക",
"powered by Matrix": "മാട്രിക്സില്‍ പ്രവര്‍ത്തിക്കുന്നു",
"Unknown device": "അപരിചിത ഡിവൈസ്",
"You need to be using HTTPS to place a screen-sharing call.": "സ്ക്രീന്‍ ഷെയറിങ്ങ് കോള്‍ നടത്തണമെങ്കില്‍ https ഉപയോഗിക്കണം.",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "വികേന്ദ്രീകൃത , എന്‍ക്രിപ്റ്റഡ് ചാറ്റ് &amp; മാട്രിക്സ് നല്‍കുന്ന കൊളാബൊറേഷന്‍",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s%(browserName)s%(osName)s",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "ദയവായി <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, അല്ലെങ്കിൽ <safariLink>Safari</safariLink> ഇൻസ്റ്റാൾ ചെയ്യുക.",
"Your Element is misconfigured": "നിങ്ങളുടെ Element തെറ്റായിട്ടാണ് കോൺഫിഗർ ചെയ്തിരിക്കുന്നത്",
"Invalid configuration: no default server specified.": "അസാധുവായ കോൺഫിഗറേഷൻ: സ്ഥിര സെർവർ ഒന്നും വ്യക്തമാക്കിയില്ല.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "അസാധുവായ കോൺഫിഗറേഷൻ: default_server_config, default_server_name, or default_hs_url-ൽ ഒരെണ്ണം മാത്രമേ വ്യക്തമാക്കാൻ കഴിയൂ.",
"Missing indexeddb worker script!": "indexeddb worker സ്ക്രിപ്റ്റ് കണ്ടെത്താനായില്ല!",
"Open user settings": "യൂസർ ക്രമീകരങ്ങൾ തുറക്കുക",
"Download Completed": "ഡൗൺലോഡ് പൂർത്തിയായി",
"Unsupported browser": "പിന്തുണയ്‌ക്കാത്ത ബ്രൗസർ",
"I understand the risks and wish to continue": "ഞാൻ അപകടസാധ്യതകൾ മനസിലാക്കുകയും തുടരാൻ ആഗ്രഹിക്കുകയും ചെയ്യുന്നു",

View File

@@ -5,14 +5,10 @@
"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.": "Буруу тохиргоо: Өгөгдсөл серверийг зааж өгөөгүй байна.",
"Unknown device": "Үл мэдэгдэх төхөөрөмж",
"You need to be using HTTPS to place a screen-sharing call.": "Та дэлгэц хуваалцах дуудлага хийхдээ HTTPS ашиглах ёстой.",
"powered by Matrix": "Matrix - Ивээв",
"Dismiss": "Орхих",
"Welcome to Element": "Element -д тавтай морил",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Төвлөрсөн бус, нууцлалтай чат &amp; хамтын ажиллагааг [matrix] - ивээв",
"Sign In": "Нэвтрэх",
"Create Account": "Хэрэглэгч үүсгэх",
"Explore rooms": "Өрөөнүүд үзэх",
"Open user settings": "Хэрэглэгчийн тохиргоо нээх",
"Go to your browser to complete Sign In": "Бүрэн нэвтрэхийн тулд вэб хөтөч рүү шилжинэ үү"
}

View File

@@ -1,10 +1,7 @@
{
"powered by Matrix": "Drevet av Matrix",
"Unknown device": "Ukjent enhet",
"You need to be using HTTPS to place a screen-sharing call.": "Du er nødt til å bruke HTTPS for å ha en samtale med skjermdeling.",
"Dismiss": "Avvis",
"Welcome to Element": "Velkommen til Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Desentralisert, kryptert chat &amp; samarbeid drevet av [matrix]",
"Sign In": "Logg inn",
"Create Account": "Opprett konto",
"Explore rooms": "Se alle rom",
@@ -13,7 +10,6 @@
"Invalid configuration: no default server specified.": "Ugyldig konfigurasjon: ingen standardserver spesifisert.",
"Unexpected error preparing the app. See console for details.": "Uventet feil ved klargjøring av appen. Se konsollen for detaljer.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfigurasjon: Spesifiser kun en av følgende: default_server_config, default_server_name eller default_hs_url.",
"Open user settings": "Åpne brukerinnstillinger",
"Go to your browser to complete Sign In": "Gå til nettleseren din for å fullføre innloggingen",
"Failed to start": "Kunne ikke starte",
"Go to element.io": "Gå til element.io",
@@ -22,17 +18,14 @@
"Your browser can't run %(brand)s": "Nettleseren din kan ikke kjøre %(brand)s",
"Unsupported browser": "Ustøttet nettleser",
"Powered by Matrix": "Drevet av Matrix",
"Previous/next recently visited room or community": "Forrige/neste nylig besøkte rom eller samfunn",
"Download Completed": "Nedlasting Fullført",
"Unable to load config file: please refresh the page to try again.": "Kan ikke laste inn konfigurasjonsfil: oppdater siden for å prøve igjen.",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Ditt Element konfigurasjonen inneholder ugyldig JSON. Løs problemet og last siden på nytt.",
"Your Element is misconfigured": "Ditt Element er feilkonfigurert",
"Missing indexeddb worker script!": "Mangler indexeddb arbeiderskript!",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Vennligst installer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eller <safariLink>Safari</safariLink> for den beste opplevelsen.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s bruker avanserte nettleserfunksjoner som ikke støttes av din nåværende nettleser.",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Skrivebord (%(platformName)s)",
"Open": "Åpne",
"Use %(brand)s on mobile": "Bruk %(brand)s på mobil",
"Switch to space by number": "Bytt til plass etter nummer"
"Use %(brand)s on mobile": "Bruk %(brand)s på mobil"
}

View File

@@ -16,7 +16,6 @@
"Unsupported browser": "असमर्थित ब्राउज़र",
"Use %(brand)s on mobile": "मोबाइल पर %(brand)s का प्रयोग करें",
"Powered by Matrix": "मैट्रिक्स द्वारा संचालित",
"You need to be using HTTPS to place a screen-sharing call.": "स्क्रीन साझा की कॉल करने के लिए आपको HTTPS का उपयोग करने की आवश्यकता है।",
"Unknown device": "अज्ञात यन्त्र",
"Go to your browser to complete Sign In": "साइन इन पूरा करने के लिए अपने ब्राउज़र पर जाएं",
"Dismiss": "खारिज",

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Sluiten",
"powered by Matrix": "draait op Matrix",
"Unknown device": "Onbekend apparaat",
"You need to be using HTTPS to place a screen-sharing call.": "Oproepen met schermdelen vergen HTTPS.",
"Welcome to Element": "Welkom bij Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentrale en versleutelde chat &amp; samenwerken dankzij [matrix]",
"Sign In": "Inloggen",
"Create Account": "Registreren",
"Explore rooms": "Kamers ontdekken",
@@ -14,10 +11,7 @@
"The message from the parser is: %(message)s": "De ontleder meldt: %(message)s",
"Invalid JSON": "Ongeldige JSON",
"Go to your browser to complete Sign In": "Ga naar uw browser om de aanmelding te voltooien",
"Open user settings": "Open de gebruikersinstellingen",
"Missing indexeddb worker script!": "Het indexeddb script ontbreekt!",
"Unable to load config file: please refresh the page to try again.": "Kan het configuratiebestand niet laden. Herlaad de pagina alstublieft.",
"Previous/next recently visited room or community": "Vorige/volgende recent bezochte kamer of gemeenschap",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Niet-ondersteunde browser",
@@ -34,8 +28,5 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s gebruikt geavanceerde functies die niet ondersteund worden in uw huidige browser.",
"Powered by Matrix": "Mogelijk gemaakt door Matrix",
"Use %(brand)s on mobile": "Gebruik %(brand)s op uw mobiel",
"Switch to space by number": "Wissel naar Space met nummer",
"Next recently visited room or community": "Volgende recent bezochte kamer of community",
"Previous recently visited room or community": "Vorige recent bezochte kamer of community",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Gedecentraliseerde, versleutelde chat &amp; samenwerking mogelijk gemaakt door $matrixLogo"
}

View File

@@ -1,10 +1,7 @@
{
"Unknown device": "Ukjend eining",
"You need to be using HTTPS to place a screen-sharing call.": "Du må bruka HTTPS for å ha ein samtale med skjermdeling.",
"Dismiss": "Avvis",
"powered by Matrix": "Matrixdriven",
"Welcome to Element": "Velkomen til Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Desentralisert, kryptert nettprat &amp; samarbeid drive av [matrix]",
"Sign In": "Logg inn",
"Create Account": "Opprett konto",
"Explore rooms": "Utforsk romma",
@@ -23,15 +20,12 @@
"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.": "Du kan fortsetja å bruka gjeldande nettlesar, men nokre eller alle funksjonane fungerer kanskje ikkje, og utsjånaden og kjensla av applikasjonen kan vera feil.",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Installer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eller <safariLink>Safari</safariLink> for den beste opplevinga.",
"I understand the risks and wish to continue": "Eg forstår risikoen og ynskjer å fortsetja",
"Previous/next recently visited room or community": "Føregåande/neste nyleg besøkte rom eller samfunn",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s brukar avanserte nettlesarfunksjonar som ikkje er støtta av den gjeldande nettlesaren din.",
"Use %(brand)s on mobile": "Bruk %(brand)s på mobil",
"Powered by Matrix": "Driven av Matrix",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Skrivebord (%(platformName)s)",
"Your Element is misconfigured": "Element er feilkonfigurert",
"Failed to start": "Klarte ikkje å starta",
"Open user settings": "Opna brukarinnstillingar",
"Switch to space by number": "Byt til plass etter nummer",
"Open": "Opna",
"Download Completed": "Nedlasting Fullført"
}

View File

@@ -4,14 +4,11 @@
"Unexpected error preparing the app. See console for details.": "Error inesperada en preparant laplicacion. Vejatz la consòla pels detalhs.",
"Go to your browser to complete Sign In": "Anatz al navegador per acabar la connexion",
"Unknown device": "Periferic desconegut",
"powered by Matrix": "propulsat per Matrix",
"Dismiss": "Refusar",
"Welcome to Element": "La benvenguda a Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Messatjariá chifrada, descentralizada e collaborativa propulsada per [matrix]",
"Sign In": "Se connectar",
"Create Account": "Crear un compte",
"Explore rooms": "Percórrer las salas",
"Missing indexeddb worker script!": "Lo worker script IndexedDB manca !",
"Invalid configuration: no default server specified.": "Configuracion invalida : pas de servidor per defauta especificat.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuracion invalida : podètz unicament especificar un camp entre default_server_config, default_server_name, o default_hs_url.",
"Failed to start": "Non se pòt pas lançar",
@@ -23,11 +20,8 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza de foncions avançadas que lo vòstre navigator non suporta pas.",
"Unsupported browser": "Navigator incompatible",
"Powered by Matrix": "Fonciona ambé Matrix",
"You need to be using HTTPS to place a screen-sharing call.": "Devetz utilizar HTTPS per apelar ambé partatge d'ecran.",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s de burèu (%(platformName)s)",
"Previous/next recently visited room or community": "Sala o comunautat recentament visitada precedenta/seguenta",
"Open user settings": "Dobrir los paramètres utilizaire",
"Open": "Dobrir",
"Download Completed": "Descargament acabat",
"Unable to load config file: please refresh the page to try again.": "Se pòt pas cargar lo fichièr de configuracion : si vos plai actualizatz la pagina per tornar ensajar.",

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Zamknij",
"powered by Matrix": "napędzany przez Matrix",
"Unknown device": "Nieznane urządzenie",
"You need to be using HTTPS to place a screen-sharing call.": "Musisz używać bezpiecznego protokołu HTTPS aby użyć połączenia współdzielenia ekranu.",
"Welcome to Element": "Witamy w Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Zdecentralizowany, szyfrowany czat &amp; współpraca oparta na [matrix]",
"Create Account": "Utwórz konto",
"Sign In": "Zaloguj się",
"Explore rooms": "Przeglądaj pokoje",
@@ -13,11 +10,8 @@
"Unexpected error preparing the app. See console for details.": "Niespodziewany błąd podczas przygotowywania aplikacji. Otwórz konsolę po szczegóły.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Błędna konfiguracja. Akceptowalne wartości to: default_server_config, default_server_name, default_hs_url.",
"Invalid configuration: no default server specified.": "Błędna konfiguracja: nie wybrano domyślnego serwera.",
"Open user settings": "Otwórz ustawienia użytkownika",
"Go to your browser to complete Sign In": "Aby dokończyć proces rejestracji, przejdź do swojej przeglądarki",
"Missing indexeddb worker script!": "Brakujący skrypt workera indexeddb!",
"Unable to load config file: please refresh the page to try again.": "Nie udało się załadować pliku konfiguracyjnego: odśwież stronę aby spróbować ponownie.",
"Previous/next recently visited room or community": "Poprzedni/następny niedawno odwiedzony pokój lub społeczność",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Niewspierana przeglądarka",
@@ -36,5 +30,6 @@
"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"
"Previous recently visited room or community": "Ostatnio odwiedzone pokoje i społeczności",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Zdecentralizowany, szyfrowany czat i współpraca wspierana przez $matrixLogo"
}

View File

@@ -1,10 +1,7 @@
{
"Dismiss": "Descartar",
"powered by Matrix": "powered by Matrix",
"Unknown device": "Dispositivo desconhecido",
"You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã.",
"Welcome to Element": "Boas-vindas ao Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, encriptado &amp; colaborativo powered by [matrix]",
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
"Invalid JSON": "JSON inválido",
"Unexpected error preparing the app. See console for details.": "Erro inesperado na preparação da aplicação. Veja a consola para mais detalhes.",
@@ -26,8 +23,6 @@
"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.": "Podes continuar a utilizar teu browser atual, mas algumas funcionalidades podem não funcionar ou aparecerem de forma incorrecta.",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor, instala <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, ou <safariLink>Safari</safariLink> para uma melhor experiência.",
"Unsupported browser": "Browser não suportado",
"Previous/next recently visited room or community": "Anterior/seguinte comunidade ou sala recentemente visitado",
"Open user settings": "Abrir definições do utilizador",
"Failed to start": "Erro ao iniciar",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza funções avançadas que não são suportadas pelo teu atual browser.",
"Your browser can't run %(brand)s": "O teu browser não consegue executar %(brand)s",

Some files were not shown because too many files have changed in this diff Show More