Compare commits

..

191 Commits

Author SHA1 Message Date
Michael Telatynski
b7052a5c5f Merge branch 'develop' of github.com:vector-im/element-web into t3chguy/ci3
 Conflicts:
	.editorconfig
	.github/workflows/preview_changelog.yaml
	.github/workflows/static_analysis.yaml
	.github/workflows/triage-labelled.yml
	.github/workflows/triage-priority-bugs.yml
	.gitignore
	scripts/layered.sh
2022-06-06 11:47:18 +01:00
Michael Telatynski
3c170bbe96 Switch to composite actions for pr_details and sonarqube (#22409)
* Switch to composite actions for pr_details and sonarqube

* Bring back a reusable workflow for element-web stack sonarqube runs
2022-06-06 11:37:44 +01:00
Michael Telatynski
2a9587d4ff Clean up closed issues (duplicates and rageshakes) (#22451) 2022-06-06 10:26:29 +01:00
Michael Telatynski
69426387dc Put web app team issues in the board (#22452) 2022-06-06 10:03:24 +01:00
Germain
76c9535255 Remove Z-IA issues to delight board automation (#22414) 2022-06-01 09:22:43 +00:00
Johannes Krude
97fb7f0235 document custom home view (#21066)
Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-05-31 21:57:18 +00:00
Travis Ralston
41f05541ed Disable no-non-null assertions lint rule (#22348)
This *allows* us to use `variable!.prop` to ensure `variable` is not null/undefined.
2022-05-30 08:43:56 -06:00
Michael Telatynski
4a91c172b2 Github Actions pull_request synchronize runs on PR open anyway (#22396)
* Github Actions pull_request synchronize runs on PR open anyway

* Update pull_request.yaml
2022-05-30 15:40:33 +01:00
Kerry
7c8ded1526 Add /coverage to .gitignore (#22397)
* add coverage to gitignore

Signed-off-by: Kerry Archibald <kerrya@element.io>

* ignore coverage
2022-05-30 15:27:26 +02:00
Kerry
e92d44eb56 matrix-mock-request to 2.0 (#22395) 2022-05-30 13:20:50 +01:00
Michael Telatynski
70a247446e Add logo to readme badge (#22374) 2022-05-27 12:10:16 -04:00
Kerry
5ade461ea5 unit test getVectorConfig (#22373)
* test getconfig

Signed-off-by: Kerry Archibald <kerrya@element.io>

* whitespace

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-05-27 13:09:27 +00:00
Kerry
9df5bf17f4 unit test WebPlatform (#22371)
* test most version stuff

Signed-off-by: Kerry Archibald <kerrya@element.io>

* tidy

Signed-off-by: Kerry Archibald <kerrya@element.io>

* eof

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-05-27 10:30:13 +00:00
Robin
51ed7784d5 Show a dialog when Jitsi encounters an error (#22352) 2022-05-26 10:03:55 -04:00
Robin
359e0e205f Make Lao translation available (#22358) 2022-05-26 08:49:58 -04:00
Michael Telatynski
89bffd132a Fix gha concurrency conditions (#22360) 2022-05-26 10:21:43 +01:00
Robin
9c92f55afd Work around a Jitsi log handling crash (#22353) 2022-05-25 21:50:27 +00:00
Michael Telatynski
745140e9e7 Remove stale release.sh parameter for no-jsdoc (#22255) 2022-05-25 20:55:53 +00:00
RiotRobot
863e5f6c78 Reset matrix-react-sdk back to develop branch 2022-05-24 15:14:34 +01:00
RiotRobot
4e6836d00e Reset matrix-js-sdk back to develop branch 2022-05-24 15:14:21 +01:00
RiotRobot
1cdbcf29ce Merge branch 'master' into develop
# Conflicts:
#	yarn.lock
2022-05-24 15:13:38 +01:00
RiotRobot
c46c112c32 v1.10.13 2022-05-24 15:02:01 +01:00
RiotRobot
d5cf793fad Prepare changelog for v1.10.13 2022-05-24 15:02:00 +01:00
RiotRobot
bf1f297bed Upgrade matrix-react-sdk to 3.45.0 2022-05-24 13:35:48 +01:00
RiotRobot
1c8b52e1cd Upgrade matrix-js-sdk to 18.0.0 2022-05-24 13:35:28 +01:00
Michael Telatynski
7c949f9f5a Fix wrongly using github.ref in workflow_run actions which always refer to develop (#22321) 2022-05-24 12:36:15 +01:00
James Salter
11a3011cbd Option to disable hardware acceleration on Element Desktop (#22295)
Override ElectronPlatform to support disableHardwareAcceleration
2022-05-23 11:50:10 +01:00
Robin
6c7f663983 Stop Jitsi if we time out while connecting to a video room (#22301) 2022-05-20 16:25:31 -04:00
RiotRobot
57499c721f v1.10.13-rc.2 2022-05-20 11:18:17 +01:00
RiotRobot
61a8b6fbc6 Prepare changelog for v1.10.13-rc.2 2022-05-20 11:18:17 +01:00
RiotRobot
095f2733f7 Upgrade matrix-react-sdk to 3.45.0-rc.3 2022-05-20 11:07:31 +01:00
RiotRobot
b9af13b533 Upgrade matrix-js-sdk to 18.0.0-rc.2 2022-05-20 11:06:53 +01:00
Michael Telatynski
fab52795e3 Consolidate i18n check into a reusable workflow (#22248)
* Fix i18n check bypass for RiotTranslateBot

* Consolidate i18n check into a reusable workflow
2022-05-20 01:17:34 +01:00
Michael Telatynski
b2d057b7c3 Update triage-priority-bugs.yml (#22277) 2022-05-19 14:54:38 +01:00
Robin
d36dcd2766 Patch Jitsi logs into rageshakes (#22270)
* Patch Jitsi logs into rageshakes

* Remove unused import

* Fix types
2022-05-19 09:24:39 +01:00
Germain
ff7398b21f Remove spaces to delight board automation (#22260) 2022-05-18 11:59:32 +01:00
RiotRobot
f906cc3067 Merge pull request #22253 from vector-im/actions/upgrade-deps
Upgrade dependencies
2022-05-17 20:10:51 +01:00
t3chguy
06349e4a9c [create-pull-request] automated change 2022-05-17 19:03:51 +00:00
RiotRobot
0039572231 v1.10.13-rc.1 2022-05-17 19:28:26 +01:00
RiotRobot
676cf4fd39 Prepare changelog for v1.10.13-rc.1 2022-05-17 19:28:26 +01:00
RiotRobot
91805c9f44 Upgrade matrix-react-sdk to 3.45.0-rc.2 2022-05-17 19:22:47 +01:00
RiotRobot
fa2f438a89 Upgrade matrix-js-sdk to 18.0.0-rc.1 2022-05-17 19:22:15 +01:00
Michael Telatynski
20cc77401c Revert "Sonarcloud check out upstream develop not fork develop (#22239)" (#22249)
This reverts commit 56f3afc7f8.
2022-05-17 18:27:52 +01:00
Michael Telatynski
56f3afc7f8 Sonarcloud check out upstream develop not fork develop (#22239) 2022-05-17 18:09:32 +01:00
Michael Telatynski
b3ef2c179a Update weblateToCounterpart to be more resilient (#22247)
* Update i18n check CI to ignore RiotTranslateBot

* Update `weblateToCounterpart` to be more resilient
2022-05-17 17:44:30 +01:00
Element Translate Bot
aca0346f4e Translations update from Weblate (#22243)
* Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Greek)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

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

* Translated using Weblate (Ukrainian)

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

* Translated using Weblate (Indonesian)

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

* Translated using Weblate (Italian)

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

* Translated using Weblate (Czech)

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

* Translated using Weblate (Albanian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Hungarian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Swedish)

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

* Translated using Weblate (Chinese (Traditional))

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

* 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 (Portuguese (Brazil))

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (German)

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

* Translated using Weblate (German)

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

* Translated using Weblate (French)

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

* 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 (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/

Co-authored-by: Bjørn I.Svindseth <bjorni.svindseth@yahoo.com>
Co-authored-by: pkst-ellak <pkst@eellak.gr>
Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: Bui Minh Duc <m.nhduc.bui1@gmail.com>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Hexandcube <hexandcube@hexandcube.tk>
Co-authored-by: Skibbi <skibbi@gmail.com>
Co-authored-by: Norbert <norbertrom01@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: TR_SLimey <tr_slimey@protonmail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Alfred Makne Poulsen <Alfredmakne@gmail.com>
Co-authored-by: libexus <libexus@gmail.com>
Co-authored-by: Paragoumba <paragoumba@gmail.com>
Co-authored-by: Helder Ferreira <woounn@gmail.com>
Co-authored-by: Eduardo Ervideira <ejcept@gmail.com>
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: 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: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
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: 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>
2022-05-17 17:24:09 +02:00
Michael Telatynski
88b5368f72 Ignore decoder-ring for Sonar coverage (#22225) 2022-05-16 14:02:31 -06:00
Michael Telatynski
ca98529bd2 Improve code as per Sonar suggestions (#22224) 2022-05-16 16:47:12 +01:00
Michael Telatynski
0292f66365 Fix coverage reporting to Sonar (#22223) 2022-05-16 17:15:08 +02:00
Michael Telatynski
6c87e294c4 Run CI in Github Actions (#22054)
* Tidy workflows

* Update get-version-from-git.sh

* Run tests in Actions

* Upload coverage to SonarCloud

* Run linters in Actions

* Run builds in Actions, consolidating with sentry uploader

* Update sonar-project.properties

* chmod +x

* Iterate

* Use new env vars

* Delete yarn-sub.js

* Use re-usable sonarqube action

* Add README badges

* Match reality
2022-05-16 16:23:44 +02:00
Travis Ralston
f080b1fb27 Update unlabel workflow to check for card archive-ness (#22194)
* Update unlabel workflow to check for card archive-ness

Fixes CI error notifications when removing labels from issues which are archived on the Issue Triage board.

Doesn't fix the adding of labels, but that's more complicated and a work in progress as of writing.

* Update triage-unlabelled.yml
2022-05-14 00:21:41 +02:00
Michael Telatynski
f2c8e89053 Make pull_request.yaml between the layers consistent and fix enforce labels (#22172) 2022-05-13 18:51:22 +01:00
RiotRobot
479d4bf64d Reset matrix-react-sdk back to develop branch 2022-05-10 15:27:17 +01:00
RiotRobot
d7a6fbc5fe Reset matrix-js-sdk back to develop branch 2022-05-10 15:27:04 +01:00
RiotRobot
3a5091f2d8 Merge branch 'master' into develop 2022-05-10 15:26:12 +01:00
RiotRobot
f552ad6908 v1.10.12 2022-05-10 15:18:38 +01:00
RiotRobot
20abdc6fe2 Prepare changelog for v1.10.12 2022-05-10 15:18:37 +01:00
RiotRobot
79f193bd48 Upgrade matrix-react-sdk to 3.44.0 2022-05-10 15:14:50 +01:00
RiotRobot
c014b51a85 Upgrade matrix-js-sdk to 17.2.0 2022-05-10 15:14:22 +01:00
Johannes Marbach
915c839148 Point at Settings.tsx for locating available settings (#21978)
* Point at Settings.tsx for locating available settings

Signed-off-by: Johannes Marbach <johannesm@element.io>
2022-05-10 11:06:10 +01:00
Robin
cdf95ab8b7 Fix video rooms sometimes connecting muted when they shouldn't (#22125) 2022-05-09 18:02:18 -04:00
Robin
1783645108 Avoid flashing the 'join conference' button at the user in video rooms (#22120) 2022-05-09 15:22:45 +01:00
Jerry Ling
31b43542cd Update config.md (#22115)
fix typo
2022-05-08 18:29:24 +01:00
Oliver Gramberg
a94323fc36 Broken link, no replacement to be found (#17124) 2022-05-06 18:50:50 -06:00
Travis Ralston
e749bb3ce3 Remove docs for now-defunct labs flags (#22101) 2022-05-06 13:20:59 -06:00
RiotRobot
166c72fb31 v1.10.12-rc.2 2022-05-06 17:37:01 +01:00
RiotRobot
c85c8e60a3 Prepare changelog for v1.10.12-rc.2 2022-05-06 17:37:01 +01:00
RiotRobot
75c291e360 Upgrade matrix-react-sdk to 3.44.0-rc.2 2022-05-06 17:25:19 +01:00
Andy Balaam
a885de4eda Add 'Choosing an issue to work on' doc (#22092) 2022-05-06 15:18:11 +01:00
Robin
9cb0185ec2 Fully close Jitsi conferences on errors (#22060)
By not closing Jitsi fully when an error occurs, it could get stuck in
PiP mode with no way to dismiss.
2022-05-05 05:51:00 -04:00
Kat Gerasimova
abb31c9b01 Improve wording in the labs docs page (#22053)
Try to clarify what the previews are
2022-05-04 19:35:48 +01:00
RiotRobot
bf1e8a07c1 Merge pull request #22048 from vector-im/actions/upgrade-deps
Upgrade dependencies
2022-05-04 14:41:58 +01:00
t3chguy
092f919e60 [create-pull-request] automated change 2022-05-04 13:32:03 +00:00
Michael Telatynski
b98e605574 Create dependency upgrade action (#22043) 2022-05-04 14:28:23 +01:00
Michael Telatynski
8bb13e8d2d Prune i18n files (#22035) 2022-05-03 16:08:54 +01:00
RiotRobot
4ce4ced69d v1.10.12-rc.1 2022-05-03 15:36:20 +01:00
RiotRobot
bbe243fbf6 Prepare changelog for v1.10.12-rc.1 2022-05-03 15:36:19 +01:00
RiotRobot
cd0ec54009 Upgrade matrix-react-sdk to 3.44.0-rc.1 2022-05-03 15:33:45 +01:00
RiotRobot
318273ae17 Upgrade matrix-js-sdk to 17.2.0-rc.1 2022-05-03 15:33:06 +01:00
Element Translate Bot
1aafcaff7a Translations update from Weblate (#22034)
* Translated using Weblate (Indonesian)

Currently translated at 100.0% (34 of 34 strings)

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

* Added translation using Weblate (Uzbek)

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Slovak)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Greek)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

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

* Translated using Weblate (Ukrainian)

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

* Translated using Weblate (Indonesian)

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

* Translated using Weblate (Italian)

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

* Translated using Weblate (Czech)

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

* Translated using Weblate (Albanian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Hungarian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Swedish)

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

* Translated using Weblate (Chinese (Traditional))

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

* 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 (Portuguese (Brazil))

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (German)

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

* Translated using Weblate (German)

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

* Translated using Weblate (French)

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

* 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 (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/

Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Yorqinbek <yyoriqulov@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Bjørn I.Svindseth <bjorni.svindseth@yahoo.com>
Co-authored-by: pkst-ellak <pkst@eellak.gr>
Co-authored-by: Bui Minh Duc <m.nhduc.bui1@gmail.com>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Hexandcube <hexandcube@hexandcube.tk>
Co-authored-by: Skibbi <skibbi@gmail.com>
Co-authored-by: Norbert <norbertrom01@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: TR_SLimey <tr_slimey@protonmail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Alfred Makne Poulsen <Alfredmakne@gmail.com>
Co-authored-by: libexus <libexus@gmail.com>
Co-authored-by: Paragoumba <paragoumba@gmail.com>
Co-authored-by: Helder Ferreira <woounn@gmail.com>
Co-authored-by: Eduardo Ervideira <ejcept@gmail.com>
Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
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: 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: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
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: 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>
2022-05-03 15:11:55 +01:00
Michael Telatynski
b18c944b42 strings 2022-05-03 09:22:18 +01:00
Michael Telatynski
0bbad38929 Must it really be single quotes only? 2022-05-03 09:07:47 +01:00
Michael Telatynski
a431363768 Add CI to prevent i18n non-EN changes 2022-05-03 09:04:30 +01:00
Robin
850a250cea Fix label triage automation (#21999) 2022-04-30 15:32:55 +01:00
Robin
f733e2af87 Fix Jitsi Meet getting wedged at startup in some cases (#21995) 2022-04-30 10:23:36 -04:00
Robin
b5336c9a4d Fix camera getting muted when disconnecting from a video room (#21958) 2022-04-29 08:51:43 -04:00
Kat Gerasimova
2c7680bd87 Add github automation for new labels (#21966)
Add 'Team: Delight' and 'Z-NewUserJourney' to the Delight board
2022-04-28 09:53:20 +01:00
Michael Telatynski
2d7bada5c4 Tweak 2022-04-27 23:09:35 +01:00
Michael Telatynski
0e22503860 Reusable workflows don't help us here 2022-04-27 23:07:06 +01:00
Michael Telatynski
a340358551 🤦 2022-04-27 23:01:00 +01:00
Michael Telatynski
e53f2695a4 Fix reusable workflow call 2022-04-27 22:56:46 +01:00
Michael Telatynski
0a239a30fa Update fetchdep to also take into account forks 2022-04-27 22:50:28 +01:00
Michael Telatynski
dab1488ffe Fix PR_NUMBER env variable 2022-04-27 22:43:51 +01:00
Michael Telatynski
61f8ec5e10 Test 2022-04-27 22:41:12 +01:00
Michael Telatynski
7a01c6c61b Update deploy_develop.yaml 2022-04-27 22:31:03 +01:00
Michael Telatynski
0ab7cd05c7 Consolidate the two secrets environments 2022-04-27 22:27:00 +01:00
Michael Telatynski
fa28d2400b Fix layered.sh 2022-04-27 22:11:23 +01:00
Michael Telatynski
7cc52e68d1 Consolidate workflows by means of reuse 2022-04-27 17:23:06 +01:00
Michael Telatynski
8bdd965122 Use fetchdep everywhere 2022-04-27 17:12:34 +01:00
Michael Telatynski
418de7998a Switch up develop redeploy script to work off Github Actions 2022-04-27 16:48:02 +01:00
Michael Telatynski
008889d2a8 Split back out into two workflows for artifact access 2022-04-27 13:29:14 +01:00
Michael Telatynski
b577d0f2f2 Fix usage of wrong action 2022-04-27 13:15:16 +01:00
Michael Telatynski
98733057a7 Attempt to use deployments more properly 2022-04-27 13:10:39 +01:00
Michael Telatynski
0cd6e02c99 Iterate 2022-04-27 12:41:46 +01:00
Michael Telatynski
449a0e64d9 Test 2022-04-27 12:38:09 +01:00
Michael Telatynski
89b3e4aaab Lets try this 2022-04-27 08:38:12 +01:00
Michael Telatynski
fe8c583e09 Attempt all of the CI 2022-04-27 07:53:30 +01:00
Michael Telatynski
5adf38c87f temporarily increase trigger 2022-04-26 18:19:19 +01:00
Michael Telatynski
59d7265e69 Test deployment hook 2022-04-26 18:17:47 +01:00
Michael Telatynski
446b510b82 Delint workflow scripts 2022-04-26 18:17:31 +01:00
RiotRobot
7c326f49d9 Reset matrix-react-sdk back to develop branch 2022-04-26 12:21:12 +01:00
RiotRobot
c627001fc8 Reset matrix-js-sdk back to develop branch 2022-04-26 12:20:33 +01:00
RiotRobot
cc572450c5 Merge branch 'master' into develop 2022-04-26 12:18:44 +01:00
RiotRobot
c9a0e4d2d5 Merge branch 'release-v1.10.11' 2022-04-26 12:17:41 +01:00
RiotRobot
b9668aceff v1.10.11 2022-04-26 11:57:40 +01:00
RiotRobot
a797421641 Prepare changelog for v1.10.11 2022-04-26 11:57:39 +01:00
RiotRobot
f2cfb75d18 Upgrade matrix-react-sdk to 3.43.0 2022-04-26 11:55:44 +01:00
RiotRobot
9b333e9c44 Upgrade matrix-js-sdk to 17.1.0 2022-04-26 11:54:38 +01:00
James Salter
2ffb3a1180 Pass the version in the updated param to attempt to cache bust (#21912) 2022-04-25 14:15:21 +01:00
Michael Telatynski
691b8d5c38 Upgrade dependencies (#21849) 2022-04-21 08:08:50 +01:00
Robin
b41e215112 Show a lobby screen in video rooms (#21746)
* No longer skip the prejoin screen in video rooms

* Enable joining with specific devices

* Start widget API listeners earlier

so that they're instantly ready for use, rather than being stuck behind
the config loading

* Revert "Start widget API listeners earlier"

This reverts commit 2c1bb08832.

* Tell the client when the Jitsi wrapper is ready to receive events

* Fix video rooms getting stuck on Jitsi Meet's prejoin screen
2022-04-20 11:03:28 -04:00
James Salter
ff89eef01a Ensure updated=1 is set as the query string before any # (#21605)
* Ensure updated=1 is set as the query string before any #

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-04-20 15:12:24 +01:00
RiotRobot
2a5486a4da v1.10.11-rc.1 2022-04-19 15:21:52 +01:00
RiotRobot
f5797428ff Prepare changelog for v1.10.11-rc.1 2022-04-19 15:21:51 +01:00
RiotRobot
dc649eae77 Upgrade matrix-react-sdk to 3.43.0-rc.1 2022-04-19 15:18:50 +01:00
RiotRobot
3daddf3d1a Upgrade matrix-js-sdk to 17.1.0-rc.1 2022-04-19 15:17:59 +01:00
Element Translate Bot
f46a6f2d92 Translations update from Weblate (#21846)
* Translated using Weblate (Slovak)

Currently translated at 97.0% (33 of 34 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 97.0% (33 of 34 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 97.0% (33 of 34 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Slovak)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Indonesian)

Currently translated at 100.0% (34 of 34 strings)

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

* Added translation using Weblate (Uzbek)

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Slovak)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Greek)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

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

* Translated using Weblate (Ukrainian)

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

* Translated using Weblate (Indonesian)

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

* Translated using Weblate (Italian)

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

* Translated using Weblate (Czech)

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

* Translated using Weblate (Albanian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Hungarian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Swedish)

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

* Translated using Weblate (Chinese (Traditional))

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

* 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 (Portuguese (Brazil))

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (German)

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

* Translated using Weblate (German)

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

* Translated using Weblate (French)

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

* 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 (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/

Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: Marek Ľach <graweeld@googlemail.com>
Co-authored-by: a5r0n <h98aaron@gmail.com>
Co-authored-by: Vulcan <element@zbug.anonaddy.com>
Co-authored-by: jelv <post@jelv.nl>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Yorqinbek <yyoriqulov@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Bjørn I.Svindseth <bjorni.svindseth@yahoo.com>
Co-authored-by: pkst-ellak <pkst@eellak.gr>
Co-authored-by: Bui Minh Duc <m.nhduc.bui1@gmail.com>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Hexandcube <hexandcube@hexandcube.tk>
Co-authored-by: Skibbi <skibbi@gmail.com>
Co-authored-by: Norbert <norbertrom01@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: TR_SLimey <tr_slimey@protonmail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Alfred Makne Poulsen <Alfredmakne@gmail.com>
Co-authored-by: libexus <libexus@gmail.com>
Co-authored-by: Paragoumba <paragoumba@gmail.com>
Co-authored-by: Helder Ferreira <woounn@gmail.com>
Co-authored-by: Eduardo Ervideira <ejcept@gmail.com>
Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
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: 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: oleg-fiksel <github-oleg-fiksel@spam.fiksel.info>
Co-authored-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Co-authored-by: iaiz <git@iapellaniz.com>
Co-authored-by: FIONover <overfion@protonmail.com>
Co-authored-by: Lucas <lucasdupanne@gmail.com>
Co-authored-by: joshua <weblate-p5yaa1sp@dc7ia.eu>
Co-authored-by: Metehan Özyürek <metehanc8s9@yandex.com>
2022-04-19 14:05:42 +01:00
Šimon Brandner
a0e08bff4f Document feature_message_right_click_context_menu (#21480)
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2022-04-15 08:23:02 -06:00
RiotRobot
4a56509d66 v1.10.10 2022-04-14 14:04:30 +01:00
RiotRobot
a4c20dd045 Prepare changelog for v1.10.10 2022-04-14 14:04:29 +01:00
RiotRobot
32e6fd1f5b Upgrade matrix-react-sdk to 3.42.4 2022-04-14 14:02:53 +01:00
RiotRobot
03ab1237ed Reset matrix-react-sdk back to develop branch 2022-04-12 10:48:13 +01:00
RiotRobot
96d9fac281 Reset matrix-js-sdk back to develop branch 2022-04-12 10:47:59 +01:00
RiotRobot
e6414787d4 Merge branch 'master' into develop 2022-04-12 10:47:46 +01:00
RiotRobot
4ef985f878 v1.10.9 2022-04-12 10:43:23 +01:00
RiotRobot
3a53260ccc Prepare changelog for v1.10.9 2022-04-12 10:43:22 +01:00
RiotRobot
ed0f003cb1 Upgrade matrix-react-sdk to 3.42.3 2022-04-12 10:41:38 +01:00
RiotRobot
861def67bf Upgrade matrix-js-sdk to 17.0.0 2022-04-12 10:41:16 +01:00
RiotRobot
e8d6653854 v1.10.9-rc.4 2022-04-11 11:46:57 +01:00
RiotRobot
5feae5141b Prepare changelog for v1.10.9-rc.4 2022-04-11 11:46:57 +01:00
RiotRobot
1a91e5bc82 Upgrade matrix-react-sdk to 3.42.2-rc.4 2022-04-11 11:45:28 +01:00
RiotRobot
52025b8b6f Upgrade matrix-js-sdk to 17.0.0-rc.3 2022-04-11 11:44:45 +01:00
RiotRobot
45e6a716d9 v1.10.9-rc.3 2022-04-08 12:21:37 +01:00
RiotRobot
7e5beb8c7f Prepare changelog for v1.10.9-rc.3 2022-04-08 12:21:36 +01:00
RiotRobot
2a922e847b Upgrade matrix-react-sdk to 3.42.2-rc.3 2022-04-08 12:20:25 +01:00
RiotRobot
74fd8eea20 Upgrade matrix-js-sdk to 17.0.0-rc.2 2022-04-08 12:19:58 +01:00
Kat Gerasimova
cec31d0e71 Don't label threads issues with Z-Labs (#21707)
Threads is out of labs now, so shouldn't be labelled as Z-Labs in our issue tracker any more
2022-04-07 14:59:25 +01:00
Robin
ef1d90ad41 Handle forced disconnects from Jitsi (#21697) 2022-04-06 13:08:58 -04:00
RiotRobot
6b6ac94fd0 v1.10.9-rc.2 2022-04-06 11:57:11 +01:00
RiotRobot
1edeed1cf2 Prepare changelog for v1.10.9-rc.2 2022-04-06 11:57:11 +01:00
RiotRobot
4b184905e8 Upgrade matrix-react-sdk to 3.42.2-rc.2 2022-04-06 11:55:48 +01:00
Travis Ralston
ecf1c41f7c Merge branch 'travis/remove-skinning' into develop 2022-04-05 11:27:43 -06:00
Travis Ralston
98ced973a9 Merge branch 'develop' into travis/remove-skinning 2022-04-05 11:27:37 -06:00
RiotRobot
d9a77eb1c3 v1.10.9-rc.1 2022-04-05 18:22:07 +01:00
RiotRobot
4325930e21 Prepare changelog for v1.10.9-rc.1 2022-04-05 18:22:06 +01:00
RiotRobot
ba0ea71cf7 Upgrade matrix-react-sdk to 3.42.2-rc.1 2022-04-05 18:20:49 +01:00
RiotRobot
2d4444fec1 Upgrade matrix-js-sdk to 16.0.2-rc.1 2022-04-05 18:20:29 +01:00
Element Translate Bot
95de3c1b04 Translations update from Weblate (#21688)
* Translated using Weblate (Frisian)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Polish)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Indonesian)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Slovak)

Currently translated at 97.0% (33 of 34 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 97.0% (33 of 34 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 97.0% (33 of 34 strings)

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

* Translated using Weblate (Hebrew)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Slovak)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Indonesian)

Currently translated at 100.0% (34 of 34 strings)

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

* Added translation using Weblate (Uzbek)

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Slovak)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Greek)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Vietnamese)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

Currently translated at 100.0% (34 of 34 strings)

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

* Translated using Weblate (Dutch)

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

* Translated using Weblate (Ukrainian)

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

* Translated using Weblate (Indonesian)

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

* Translated using Weblate (Italian)

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

* Translated using Weblate (Czech)

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

* Translated using Weblate (Albanian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Hungarian)

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

* Translated using Weblate (Polish)

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

* Translated using Weblate (Swedish)

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

* Translated using Weblate (Chinese (Traditional))

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

* 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 (Portuguese (Brazil))

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (Danish)

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

* Translated using Weblate (German)

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

* Translated using Weblate (German)

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

* Translated using Weblate (French)

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

* 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 (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/

Co-authored-by: Weblate <translate@riot.im>
Co-authored-by: Fjoerfoks <fryskefirefox@gmail.com>
Co-authored-by: Adrian Środoń <adrian.srodon@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: jelv <post@jelv.nl>
Co-authored-by: Marek Ľach <graweeld@googlemail.com>
Co-authored-by: a5r0n <h98aaron@gmail.com>
Co-authored-by: Vulcan <element@zbug.anonaddy.com>
Co-authored-by: Jozef Gaal <preklady@mayday.sk>
Co-authored-by: Yorqinbek <yyoriqulov@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Bjørn I.Svindseth <bjorni.svindseth@yahoo.com>
Co-authored-by: pkst-ellak <pkst@eellak.gr>
Co-authored-by: Bui Minh Duc <m.nhduc.bui1@gmail.com>
Co-authored-by: Johan Smits <johan@smitsmail.net>
Co-authored-by: random <dictionary@tutamail.com>
Co-authored-by: waclaw66 <waclaw66@seznam.cz>
Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Hexandcube <hexandcube@hexandcube.tk>
Co-authored-by: Skibbi <skibbi@gmail.com>
Co-authored-by: Norbert <norbertrom01@gmail.com>
Co-authored-by: Szimszon <github@oregpreshaz.eu>
Co-authored-by: TR_SLimey <tr_slimey@protonmail.com>
Co-authored-by: LinAGKar <linus.kardell@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Priit Jõerüüt <riot@joeruut.com>
Co-authored-by: lvre <7uu3qrbvm@relay.firefox.com>
Co-authored-by: Alfred Makne Poulsen <Alfredmakne@gmail.com>
Co-authored-by: libexus <libexus@gmail.com>
Co-authored-by: Paragoumba <paragoumba@gmail.com>
Co-authored-by: Helder Ferreira <woounn@gmail.com>
Co-authored-by: Eduardo Ervideira <ejcept@gmail.com>
Co-authored-by: SPiRiT <such.a.lost.spirit@gmail.com>
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: 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>
2022-04-05 17:52:15 +01:00
Travis Ralston
d39ae8a91b Merge branch 'develop' into travis/remove-skinning 2022-04-05 10:42:48 -06:00
Robin
eab8a19ec7 Avoid flashing the Jitsi prejoin screen at the user before skipping it (#21665) 2022-04-05 11:32:26 -04:00
Robin
b79133c694 Fix stuck persistence of Jitsi widgets (#21650)
The hangup event may or may not be handled, so we need to account for
cases where it throws an error.
2022-04-04 07:32:12 -04:00
Shivrani A. Jadhav
b1a60b25b4 Fix typo in translation docs (#21653)
* Correct typo

* Removing extra lines
2022-04-04 00:05:37 -06:00
Robin
aeb6cddc2f Update video rooms to new design specs (#21623)
* "Voice room" → "video room"

* Customize Jitsi behavior in video rooms
2022-04-01 11:28:47 -04:00
Travis Ralston
f7dea9421f Merge branch 'develop' into travis/remove-skinning 2022-03-31 19:21:12 -06:00
Robin
58cca0a77a Update name of video rooms label (#21629) 2022-03-31 18:01:49 -04:00
Kat Gerasimova
8ce9488bb5 Add automation for "A-New-Search-Experience" label (#21622)
Add A-New-Search-Experience label for automation to Delight board and to add Z-Labs label.

This label is currently down as A-Spotlight-Search, but I will rename it.
2022-03-31 16:55:10 +01:00
Robin
5077157282 Remove React HMR (#21607) 2022-03-30 16:57:26 +01:00
Shreeya
f029b68ad4 Updated 'Setting up a dev environment' in README.md (#21597) 2022-03-30 13:52:15 +01:00
Sven Mäder
a8e914ad9f Fix show_labs_settings config.md typo (#21600)
* Fix typo show_labs_settings

* Document latex_maths_delims developer option
2022-03-30 13:41:23 +01:00
Michael Kaye
5eecc768a3 Docs: Require creation of config.json as part of Getting Started (#21590)
* Require creation of config.json

Change the language from "If desired" to "Configure" to ensure people do not miss this step, as skipping this step will show the error "Invalid configuration: no default server specified."

* Update README.md

Rollback unintentioned bullet point `3` change
2022-03-29 16:40:07 +01:00
Travis Ralston
9c23f6c476 Step 14: Remove reskindex 2022-03-28 15:26:22 -06:00
Travis Ralston
7bd584abe0 Step 13: Update documentation for skinning 2022-03-28 15:17:56 -06:00
Travis Ralston
5b592eca4f Step 10.3: Use module replacement to achieve component overrides
This is the same system as the customisations override, however deliberately using a different JSON file to avoid conflicts. 

Forks would be expected to use the customisations file, not the components file, to override/add components.
2022-03-28 13:02:50 -06:00
Travis Ralston
5459c1eb96 Step 10.2: Move hacky welcome page replacement to react-sdk 2022-03-28 13:02:50 -06:00
Travis Ralston
0bcb1d18ce Step 10.1: Ensure the js-sdk browser bundle gets pulled
We no longer have implicit imports which would have called this path, so manually call it. We have to disable lint as it doesn't like us doing this, but we only end up with a single entry point.
2022-03-28 13:02:50 -06:00
Travis Ralston
e1f9e9a8f8 Step 8.1: Remove skin-sdk.js 2022-03-28 13:02:50 -06:00
Travis Ralston
384903361d Step 4: Disable/remove bulk of skinner code 2022-03-28 13:02:50 -06:00
Travis Ralston
585c777878 Step 3.2: Stop using getComponent 2022-03-28 13:02:50 -06:00
Travis Ralston
1bbecdff6c Step 3.1: Stop using getComponent in tests 2022-03-28 13:02:50 -06:00
Travis Ralston
303f06cc61 Step 2: Remove the decorator 2022-03-28 13:02:50 -06:00
Robin
02a5789dd3 Fix typo in labs label workflow (#21582) 2022-03-28 16:44:25 +01:00
RiotRobot
951fdaf3ab Reset matrix-react-sdk back to develop branch 2022-03-28 16:29:08 +01:00
RiotRobot
7ce2538778 Reset matrix-js-sdk back to develop branch 2022-03-28 16:28:55 +01:00
RiotRobot
23608855c6 Merge branch 'master' into develop 2022-03-28 16:28:42 +01:00
Travis Ralston
14f46a8ca9 Update location of Settings.ts in labs docs (#21562) 2022-03-25 10:43:03 -06:00
dependabot[bot]
6ae7d60f4a Bump minimist from 1.2.5 to 1.2.6 (#21561)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: direct:development
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-25 15:23:00 +00:00
Travis Ralston
fe6a9c257b Fix style lint on Windows (#21557) 2022-03-25 09:13:22 -06:00
Michael Telatynski
f2c3f880c7 Update Posthog URLs (#21559) 2022-03-25 10:34:25 +00:00
Robin
e638abf7c2 Add voice rooms to labs labels (#21512) 2022-03-22 19:29:11 -04:00
Travis Ralston
072f87a06a Delete documentation relating to legacy communities (#21385)
* Remove deprecated feature_communities_v2_prototypes

* Fix typo

* Remove now-unused docs

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-03-22 16:48:26 -06:00
Robin
6103f4a9d3 Voice rooms prototype (#21476)
* Document voice rooms labs flag

Signed-off-by: Robin Townsend <robin@robin.town>

* Add join and mute handlers to Jitsi wrapper

Signed-off-by: Robin Townsend <robin@robin.town>

* Document voice rooms labs flag

Signed-off-by: Robin Townsend <robin@robin.town>

* Mark voice rooms as in development

Signed-off-by: Robin Townsend <robin@robin.town>

* ack at the end of widget event handlers

Signed-off-by: Robin Townsend <robin@robin.town>

* Move acks back before suspend points

Signed-off-by: Robin Townsend <robin@robin.town>
2022-03-22 16:14:27 -06:00
112 changed files with 3899 additions and 2618 deletions

View File

@@ -21,3 +21,9 @@ insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.{yml,yaml}]
indent_size = 2
[package.json]
indent_size = 2

View File

@@ -1,2 +1,3 @@
src/vector/modernizr.js
# Legacy skinning file that some people might still have
src/component-index.js

View File

@@ -30,6 +30,8 @@ module.exports = {
// We disable this while we're transitioning
"@typescript-eslint/no-explicit-any": "off",
// We're okay with assertion errors when we ask for them
"@typescript-eslint/no-non-null-assertion": "off",
// Ban matrix-js-sdk/src imports in favour of matrix-js-sdk/src/matrix imports to prevent unleashing hell.
"no-restricted-imports": ["error", {

33
.github/workflows/build.yaml vendored Normal file
View File

@@ -0,0 +1,33 @@
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

26
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Build and Package
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"

38
.github/workflows/build_develop.yaml vendored Normal file
View File

@@ -0,0 +1,38 @@
# 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

31
.github/workflows/build_develop.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
# Separate to the main build workflow for access to develop
# environment secrets, largely similar to build.yaml.
name: Build and Package 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

64
.github/workflows/deploy_develop.yaml vendored Normal file
View File

@@ -0,0 +1,64 @@
# 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

148
.github/workflows/issue_closed.yml vendored Normal file
View File

@@ -0,0 +1,148 @@
# For duplicate issues, ensure the close type is right (not planned), update it if not
# For all closed (completed) issues, cascade the closure onto any referenced rageshakes
# For all closed (not planned) issues, comment on rageshakes to move them into the canonical issue if one exists
on:
issues:
types: [ closed ]
jobs:
tidy:
name: Tidy closed issues
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v5
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 }}
script: |
const variables = {
owner: context.repo.owner,
name: context.repo.repo,
number: context.issue.number,
};
const query = `query($owner:String!, $name:String!, $number:Int!) {
repository(owner: $owner, name: $name) {
issue(number: $number) {
stateReason,
timelineItems(first: 100, itemTypes: [MARKED_AS_DUPLICATE_EVENT, UNMARKED_AS_DUPLICATE_EVENT, CROSS_REFERENCED_EVENT]) {
edges {
node {
__typename
... on MarkedAsDuplicateEvent {
canonical {
... on Issue {
repository {
nameWithOwner
}
number
}
... on PullRequest {
repository {
nameWithOwner
}
number
}
}
}
... on UnmarkedAsDuplicateEvent {
canonical {
... on Issue {
repository {
nameWithOwner
}
number
}
... on PullRequest {
repository {
nameWithOwner
}
number
}
}
}
... on CrossReferencedEvent {
source {
... on Issue {
repository {
nameWithOwner
}
number
}
... on PullRequest {
repository {
nameWithOwner
}
number
}
}
}
}
}
}
}
}
}`;
const result = await github.graphql(query, variables);
const { stateReason, timelineItems: { edges } } = result.repository.issue;
const RAGESHAKE_OWNER = "matrix-org";
const RAGESHAKE_REPO = "element-web-rageshakes";
const rageshakes = new Set();
const duplicateOf = new Set();
console.log("Edges: ", JSON.stringify(edges));
for (const { node } of edges) {
switch(node.__typename) {
case "MarkedAsDuplicateEvent":
duplicateOf.add(node.canonical.repository.nameWithOwner + "#" + node.canonical.number);
break;
case "UnmarkedAsDuplicateEvent":
duplicateOf.remove(node.canonical.repository.nameWithOwner + "#" + node.canonical.number);
break;
case "CrossReferencedEvent":
if (node.source.repository.nameWithOwner === (RAGESHAKE_OWNER + "/" + RAGESHAKE_REPO)) {
rageshakes.add(node.source.number);
}
break;
}
}
console.log("Duplicate of: ", duplicateOf);
console.log("Found rageshakes: ", rageshakes);
if (duplicateOf.size) {
const body = Array.from(duplicateOf).join("\n");
// Comment on all rageshakes to create relationship to the issue this was closed as duplicate of
for (const rageshake of rageshakes) {
github.rest.issues.createComment({
owner: RAGESHAKE_OWNER,
repo: RAGESHAKE_REPO,
issue_number: rageshake,
body,
});
}
// 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,
});
}
} else {
// This issue was closed, close all related rageshakes
for (const rageshake of rageshakes) {
github.rest.issues.update({
owner: RAGESHAKE_OWNER,
repo: RAGESHAKE_REPO,
issue_number: rageshake,
state: "closed",
});
}
}

View File

@@ -1,12 +0,0 @@
name: Preview Changelog
on:
pull_request_target:
types: [ opened, edited, labeled ]
jobs:
changelog:
runs-on: ubuntu-latest
steps:
- name: Preview Changelog
uses: matrix-org/allchange@main
with:
ghToken: ${{ secrets.GITHUB_TOKEN }}

26
.github/workflows/pull_request.yaml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Pull Request
on:
pull_request_target:
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!"

View File

@@ -1,26 +0,0 @@
name: Upload Sentry Sourcemaps
on:
push:
branches:
- develop
repository_dispatch:
types: [ element-web-notify ]
jobs:
upload-sentry-sourcemaps:
runs-on: ubuntu-latest
environment: develop
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
cache: 'yarn'
- run: ./scripts/fetch-develop.deps.sh --depth 1
- run: yarn install
- 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

15
.github/workflows/sonarqube.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: SonarQube
on:
workflow_run:
workflows: [ "Tests" ]
types:
- completed
concurrency:
group: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: true
jobs:
sonarqube:
name: 🩻 SonarQube
uses: matrix-org/matrix-js-sdk/.github/workflows/sonarcloud.yml@develop
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

65
.github/workflows/static_analysis.yaml vendored Normal file
View File

@@ -0,0 +1,65 @@
name: Static Analysis
on:
pull_request: { }
push:
branches: [ develop, master ]
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:
ts_lint:
name: "Typescript Syntax Check"
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: Typecheck
run: "yarn run lint:types"
i18n_lint:
name: "i18n Check"
uses: matrix-org/matrix-react-sdk/.github/workflows/i18n_check.yml@develop
js_lint:
name: "ESLint"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
cache: 'yarn'
# Does not need branch matching as only analyses this layer
- name: Install Deps
run: "yarn install --pure-lockfile"
- name: Run Linter
run: "yarn run lint:js"
style_lint:
name: "Style Lint"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
cache: 'yarn'
# Does not need branch matching as only analyses this layer
- name: Install Deps
run: "yarn install --pure-lockfile"
- name: Run Linter
run: "yarn run lint:style"

27
.github/workflows/test.yaml vendored Normal file
View File

@@ -0,0 +1,27 @@
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"

37
.github/workflows/tests.yaml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: Tests
on:
pull_request: { }
push:
branches: [ develop, master ]
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:
jest:
name: Jest
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Yarn cache
uses: actions/setup-node@v3
with:
cache: 'yarn'
- name: Install Dependencies
run: "./scripts/layered.sh"
- name: Run tests with coverage
run: "yarn coverage --ci"
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: coverage
path: |
coverage
!coverage/lcov-report

18
.github/workflows/triage-assigned.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: Move issued assigned to specific team members to their boards
on:
issues:
types: [ assigned ]
jobs:
web-app-team:
runs-on: ubuntu-latest
if: |
contains(github.event.issue.assignees.*.login, 't3chguy') ||
contains(github.event.issue.assignees.*.login, 'turt2live')
steps:
- uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
with:
project: Web App Team
column: Ready
repo-token: ${{ secrets.ELEMENT_BOT_TOKEN }}

View File

@@ -2,7 +2,7 @@ name: Move new issues into Issue triage board
on:
issues:
types: [opened]
types: [ opened ]
jobs:
automate-project-columns:

View File

@@ -1,22 +1,23 @@
name: Move labelled issues to correct boards and columns
name: Move labelled issues to correct projects
on:
issues:
types: [labeled]
jobs:
apply_Z-Labs_label:
name: Add Z-Labs label for features behind labs flags
runs-on: ubuntu-latest
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-Threads') ||
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-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')
steps:
- uses: actions/github-script@v5
with:
@@ -43,14 +44,14 @@ 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') &&
(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'))
steps:
- uses: octokit/graphql-action@v2.x
id: add_to_project
@@ -74,7 +75,7 @@ jobs:
name: X-Needs-Product to Design project board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'X-Needs-Product')
contains(github.event.issue.labels.*.name, 'X-Needs-Product')
steps:
- uses: octokit/graphql-action@v2.x
id: add_to_project
@@ -98,10 +99,9 @@ jobs:
name: Delight issues to project board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'A-Spaces') ||
contains(github.event.issue.labels.*.name, 'A-Space-Settings') ||
contains(github.event.issue.labels.*.name, 'A-Subspaces') ||
contains(github.event.issue.labels.*.name, 'Z-IA')
contains(github.event.issue.labels.*.name, 'A-New-Search-Experience') ||
contains(github.event.issue.labels.*.name, 'Team: Delight') ||
contains(github.event.issue.labels.*.name, 'Z-NewUserJourney')
steps:
- uses: octokit/graphql-action@v2.x
with:
@@ -124,7 +124,7 @@ jobs:
name: A-Voice Messages to voice message board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'A-Voice Messages')
contains(github.event.issue.labels.*.name, 'A-Voice Messages')
steps:
- uses: octokit/graphql-action@v2.x
with:
@@ -147,7 +147,7 @@ jobs:
name: A-Threads to Thread board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'A-Threads')
contains(github.event.issue.labels.*.name, 'A-Threads')
steps:
- uses: octokit/graphql-action@v2.x
with:
@@ -170,7 +170,7 @@ jobs:
name: A-Message-Bubbles to Message bubbles board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'A-Message-Bubbles')
contains(github.event.issue.labels.*.name, 'A-Message-Bubbles')
steps:
- uses: octokit/graphql-action@v2.x
with:
@@ -193,7 +193,7 @@ jobs:
name: Z-FTUE issues to the FTUE project board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'Z-FTUE')
contains(github.event.issue.labels.*.name, 'Z-FTUE')
steps:
- uses: octokit/graphql-action@v2.x
with:
@@ -216,7 +216,7 @@ jobs:
name: Z-WTF issues to the WTF project board
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'Z-WTF')
contains(github.event.issue.labels.*.name, 'Z-WTF')
steps:
- uses: octokit/graphql-action@v2.x
with:

View File

@@ -1,7 +1,7 @@
name: Move pull requests asking for review to the relevant project
on:
pull_request_target:
types: [review_requested]
types: [ review_requested ]
jobs:
add_design_pr_to_project:

View File

@@ -5,49 +5,23 @@ on:
types: [labeled, unlabeled]
jobs:
p1_issues_to_team_workboard:
runs-on: ubuntu-latest
if: >
(!contains(github.event.issue.labels.*.name, 'A-E2EE') &&
!contains(github.event.issue.labels.*.name, 'A-E2EE-Cross-Signing') &&
!contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') &&
!contains(github.event.issue.labels.*.name, 'A-E2EE-Key-Backup') &&
!contains(github.event.issue.labels.*.name, 'A-E2EE-SAS-Verification') &&
!contains(github.event.issue.labels.*.name, 'A-Spaces') &&
!contains(github.event.issue.labels.*.name, 'A-Spaces-Settings') &&
!contains(github.event.issue.labels.*.name, 'A-Subspaces')) &&
(contains(github.event.issue.labels.*.name, 'T-Defect') &&
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'))
steps:
- uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
with:
project: Web App Team
column: P1
repo-token: ${{ secrets.ELEMENT_BOT_TOKEN }}
P1_issues_to_crypto_team_workboard:
runs-on: ubuntu-latest
if: >
contains(github.event.issue.labels.*.name, 'Z-UISI') ||
(contains(github.event.issue.labels.*.name, 'A-E2EE') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Cross-Signing') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Key-Backup') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-SAS-Verification')) &&
(contains(github.event.issue.labels.*.name, 'T-Defect') &&
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, 'Z-UISI') ||
(contains(github.event.issue.labels.*.name, 'A-E2EE') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Cross-Signing') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-Key-Backup') ||
contains(github.event.issue.labels.*.name, 'A-E2EE-SAS-Verification')) &&
(contains(github.event.issue.labels.*.name, 'T-Defect') &&
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'))
steps:
- uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
with:

View File

@@ -2,15 +2,15 @@ name: Move unlabelled from needs info columns to triaged
on:
issues:
types: [unlabeled]
types: [ unlabeled ]
jobs:
Move_Unabeled_Issue_On_Project_Board:
name: Move no longer X-Needs-Info issues to Triaged
runs-on: ubuntu-latest
if: >
${{
!contains(github.event.issue.labels.*.name, 'X-Needs-Info') }}
${{
!contains(github.event.issue.labels.*.name, 'X-Needs-Info') }}
env:
BOARD_NAME: "Issue triage"
OWNER: ${{ github.repository_owner }}
@@ -19,16 +19,24 @@ jobs:
steps:
- name: Check if issue is already in "${{ env.BOARD_NAME }}"
run: |
if curl -i -H 'Content-Type: application/json' -H "Authorization: bearer ${{ secrets.GITHUB_TOKEN }}" -X POST -d '{"query": "query($issue: Int!, $owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { issue(number: $issue) { projectCards { nodes { project { name } } } } } } ", "variables" : "{ \"issue\": '${ISSUE}', \"owner\": \"'${OWNER}'\", \"repo\": \"'${REPO}'\" }" }' https://api.github.com/graphql | grep "\b$BOARD_NAME\b"; then
echo "Issue is already in Project '$BOARD_NAME', proceeding";
echo "ALREADY_IN_BOARD=true" >> $GITHUB_ENV
else
echo "Issue is not in project '$BOARD_NAME', cancelling this workflow"
echo "ALREADY_IN_BOARD=false" >> $GITHUB_ENV
json=$(curl -s -H 'Content-Type: application/json' -H "Authorization: bearer ${{ secrets.GITHUB_TOKEN }}" -X POST -d '{"query": "query($issue: Int!, $owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { issue(number: $issue) { projectCards { nodes { project { name } isArchived } } } } } ", "variables" : "{ \"issue\": '${ISSUE}', \"owner\": \"'${OWNER}'\", \"repo\": \"'${REPO}'\" }" }' https://api.github.com/graphql)
if echo $json | jq '.data.repository.issue.projectCards.nodes | length'; then
if [[ $(echo $json | jq '.data.repository.issue.projectCards.nodes[0].project.name') =~ "${BOARD_NAME}" ]]; then
if [[ $(echo $json | jq '.data.repository.issue.projectCards.nodes[0].isArchived') == 'true' ]]; then
echo "Issue is already in Project '$BOARD_NAME', but is archived - skipping workflow";
echo "SKIP_ACTION=true" >> $GITHUB_ENV
else
echo "Issue is already in Project '$BOARD_NAME', proceeding";
echo "ALREADY_IN_BOARD=true" >> $GITHUB_ENV
fi
else
echo "Issue is not in project '$BOARD_NAME', cancelling this workflow"
echo "ALREADY_IN_BOARD=false" >> $GITHUB_ENV
fi
fi
- name: Move issue
uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488
if: ${{ env.ALREADY_IN_BOARD == 'true' }}
if: ${{ env.ALREADY_IN_BOARD == 'true' && env.SKIP_ACTION != 'true' }}
with:
project: Issue triage
column: Triaged
@@ -38,17 +46,18 @@ jobs:
name: Remove Z-Labs label when features behind labs flags are removed
runs-on: ubuntu-latest
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-Threads') ||
contains(github.event.issue.labels.*.name, 'A-Polls') ||
contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
contains(github.event.issue.labels.*.name, 'A-Message-Bubbles') ||
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, 'Z-Labs')
!(contains(github.event.issue.labels.*.name, 'A-Maths') ||
contains(github.event.issue.labels.*.name, 'A-Message-Pinning') ||
contains(github.event.issue.labels.*.name, 'A-Threads') ||
contains(github.event.issue.labels.*.name, 'A-Polls') ||
contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
contains(github.event.issue.labels.*.name, 'A-Message-Bubbles') ||
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, 'Z-Labs')
steps:
- uses: actions/github-script@v5
with:

View File

@@ -0,0 +1,8 @@
name: Upgrade Dependencies
on:
workflow_dispatch: { }
jobs:
upgrade:
uses: matrix-org/matrix-js-sdk/.github/workflows/upgrade_dependencies.yml@develop
secrets:
ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}

4
.gitignore vendored
View File

@@ -16,9 +16,13 @@ electron/pub
/config.json
/config.json.*
/config.local*.json
# Legacy skinning file that some people might still have
/src/component-index.js
/.tmp
/webpack-stats.json
.vscode
.vscode/
.env
/coverage
/scripts/extracted/
/scripts/latest

View File

@@ -1,3 +1,336 @@
Changes in [1.10.13](https://github.com/vector-im/element-web/releases/tag/v1.10.13) (2022-05-24)
=================================================================================================
## ✨ Features
* Go to space landing page when clicking on a selected space ([\#6442](https://github.com/matrix-org/matrix-react-sdk/pull/6442)). Fixes #20296.
* Fall back to untranslated string rather than showing missing translation error ([\#8609](https://github.com/matrix-org/matrix-react-sdk/pull/8609)).
* Show file name and size on images on hover ([\#6511](https://github.com/matrix-org/matrix-react-sdk/pull/6511)). Fixes #18197.
* Iterate on search results for message bubbles ([\#7047](https://github.com/matrix-org/matrix-react-sdk/pull/7047)). Fixes #20315.
* registration: redesign email verification page ([\#8554](https://github.com/matrix-org/matrix-react-sdk/pull/8554)). Fixes #21984.
* Show full thread message in hover title on thread summary ([\#8568](https://github.com/matrix-org/matrix-react-sdk/pull/8568)). Fixes #22037.
* Tweak video rooms copy ([\#8582](https://github.com/matrix-org/matrix-react-sdk/pull/8582)). Fixes #22176.
* Live location share - beacon tooltip in maximised view ([\#8572](https://github.com/matrix-org/matrix-react-sdk/pull/8572)).
* Add dialog to navigate long room topics ([\#8517](https://github.com/matrix-org/matrix-react-sdk/pull/8517)). Fixes #9623.
* Change spaceroomfacepile tooltip if memberlist is shown ([\#8571](https://github.com/matrix-org/matrix-react-sdk/pull/8571)). Fixes #17406.
* Improve message editing UI ([\#8483](https://github.com/matrix-org/matrix-react-sdk/pull/8483)). Fixes #9752 and #22108.
* Make date changes more obvious ([\#6410](https://github.com/matrix-org/matrix-react-sdk/pull/6410)). Fixes #16221.
* Enable forwarding static locations ([\#8553](https://github.com/matrix-org/matrix-react-sdk/pull/8553)).
* Log `TimelinePanel` debugging info when opening the bug report modal ([\#8502](https://github.com/matrix-org/matrix-react-sdk/pull/8502)).
* Improve welcome screen, add opt-out analytics ([\#8474](https://github.com/matrix-org/matrix-react-sdk/pull/8474)). Fixes #21946.
* Converting selected text to MD link when pasting a URL ([\#8242](https://github.com/matrix-org/matrix-react-sdk/pull/8242)). Fixes #21634. Contributed by @Sinharitik589.
* Support Inter on custom themes ([\#8399](https://github.com/matrix-org/matrix-react-sdk/pull/8399)). Fixes #16293.
* Add a `Copy link` button to the right-click message context-menu labs feature ([\#8527](https://github.com/matrix-org/matrix-react-sdk/pull/8527)).
* Move widget screenshots labs flag to devtools ([\#8522](https://github.com/matrix-org/matrix-react-sdk/pull/8522)).
* Remove some labs features which don't get used or create maintenance burden: custom status, multiple integration managers, and do not disturb ([\#8521](https://github.com/matrix-org/matrix-react-sdk/pull/8521)).
* Add a way to toggle `ScrollPanel` and `TimelinePanel` debug logs ([\#8513](https://github.com/matrix-org/matrix-react-sdk/pull/8513)).
* Spaces: remove blue beta dot ([\#8511](https://github.com/matrix-org/matrix-react-sdk/pull/8511)). Fixes #22061.
* Order new search dialog results by recency ([\#8444](https://github.com/matrix-org/matrix-react-sdk/pull/8444)).
* Improve pills ([\#6398](https://github.com/matrix-org/matrix-react-sdk/pull/6398)). Fixes #16948 and #21281.
* Add a way to maximize/pin widget from the PiP view ([\#7672](https://github.com/matrix-org/matrix-react-sdk/pull/7672)). Fixes #20723.
* Iterate video room designs in labs ([\#8499](https://github.com/matrix-org/matrix-react-sdk/pull/8499)).
* Improve UI/UX in calls ([\#7791](https://github.com/matrix-org/matrix-react-sdk/pull/7791)). Fixes #19937.
* Add ability to change audio and video devices during a call ([\#7173](https://github.com/matrix-org/matrix-react-sdk/pull/7173)). Fixes #15595.
## 🐛 Bug Fixes
* Fix video rooms sometimes connecting muted when they shouldn't ([\#22125](https://github.com/vector-im/element-web/pull/22125)).
* Avoid flashing the 'join conference' button at the user in video rooms ([\#22120](https://github.com/vector-im/element-web/pull/22120)).
* Fully close Jitsi conferences on errors ([\#22060](https://github.com/vector-im/element-web/pull/22060)).
* Fix click behavior of notification badges on spaces ([\#8627](https://github.com/matrix-org/matrix-react-sdk/pull/8627)). Fixes #22241.
* Add missing return values in Read Receipt animation code ([\#8625](https://github.com/matrix-org/matrix-react-sdk/pull/8625)). Fixes #22175.
* Fix 'continue' button not working after accepting identity server terms of service ([\#8619](https://github.com/matrix-org/matrix-react-sdk/pull/8619)). Fixes #20003.
* Proactively fix stuck devices in video rooms ([\#8587](https://github.com/matrix-org/matrix-react-sdk/pull/8587)). Fixes #22131.
* Fix position of the message action bar on left side bubbles ([\#8398](https://github.com/matrix-org/matrix-react-sdk/pull/8398)). Fixes #21879. Contributed by @luixxiul.
* Fix edge case thread summaries around events without a msgtype ([\#8576](https://github.com/matrix-org/matrix-react-sdk/pull/8576)).
* Fix favourites metaspace not updating ([\#8594](https://github.com/matrix-org/matrix-react-sdk/pull/8594)). Fixes #22156.
* Stop spaces from displaying as rooms in new breadcrumbs ([\#8595](https://github.com/matrix-org/matrix-react-sdk/pull/8595)). Fixes #22165.
* Fix avatar position of hidden event on ThreadView ([\#8592](https://github.com/matrix-org/matrix-react-sdk/pull/8592)). Fixes #22199. Contributed by @luixxiul.
* Fix MessageTimestamp position next to redacted messages on IRC/modern layout ([\#8591](https://github.com/matrix-org/matrix-react-sdk/pull/8591)). Fixes #22181. Contributed by @luixxiul.
* Fix padding of messages in threads ([\#8574](https://github.com/matrix-org/matrix-react-sdk/pull/8574)). Contributed by @luixxiul.
* Enable overflow of hidden events content ([\#8585](https://github.com/matrix-org/matrix-react-sdk/pull/8585)). Fixes #22187. Contributed by @luixxiul.
* Increase composer line height to avoid cutting off emoji ([\#8583](https://github.com/matrix-org/matrix-react-sdk/pull/8583)). Fixes #22170.
* Don't consider threads for breaking continuation until actually created ([\#8581](https://github.com/matrix-org/matrix-react-sdk/pull/8581)). Fixes #22164.
* Fix displaying hidden events on threads ([\#8555](https://github.com/matrix-org/matrix-react-sdk/pull/8555)). Fixes #22058. Contributed by @luixxiul.
* Fix button width and align 絵文字 (emoji) on the user panel ([\#8562](https://github.com/matrix-org/matrix-react-sdk/pull/8562)). Fixes #22142. Contributed by @luixxiul.
* Standardise the margin for settings tabs ([\#7963](https://github.com/matrix-org/matrix-react-sdk/pull/7963)). Fixes #20767. Contributed by @yuktea.
* Fix room history not being visible even if we have historical keys ([\#8563](https://github.com/matrix-org/matrix-react-sdk/pull/8563)). Fixes #16983.
* Fix oblong avatars in video room lobbies ([\#8565](https://github.com/matrix-org/matrix-react-sdk/pull/8565)).
* Update thread summary when latest event gets decrypted ([\#8564](https://github.com/matrix-org/matrix-react-sdk/pull/8564)). Fixes #22151.
* Fix codepath which can wrongly cause automatic space switch from all rooms ([\#8560](https://github.com/matrix-org/matrix-react-sdk/pull/8560)). Fixes #21373.
* Fix effect of URL preview toggle not updating live ([\#8561](https://github.com/matrix-org/matrix-react-sdk/pull/8561)). Fixes #22148.
* Fix visual bugs on AccessSecretStorageDialog ([\#8160](https://github.com/matrix-org/matrix-react-sdk/pull/8160)). Fixes #19426. Contributed by @luixxiul.
* Fix the width bounce of the clock on the AudioPlayer ([\#8320](https://github.com/matrix-org/matrix-react-sdk/pull/8320)). Fixes #21788. Contributed by @luixxiul.
* Hide the verification left stroke only on the thread list ([\#8525](https://github.com/matrix-org/matrix-react-sdk/pull/8525)). Fixes #22132. Contributed by @luixxiul.
* Hide recently_viewed dropdown when other modal opens ([\#8538](https://github.com/matrix-org/matrix-react-sdk/pull/8538)). Contributed by @yaya-usman.
* Only jump to date after pressing the 'go' button ([\#8548](https://github.com/matrix-org/matrix-react-sdk/pull/8548)). Fixes #20799.
* Fix download button not working on events that were decrypted too late ([\#8556](https://github.com/matrix-org/matrix-react-sdk/pull/8556)). Fixes #19427.
* Align thread summary button with bubble messages on the left side ([\#8388](https://github.com/matrix-org/matrix-react-sdk/pull/8388)). Fixes #21873. Contributed by @luixxiul.
* Fix unresponsive notification toggles ([\#8549](https://github.com/matrix-org/matrix-react-sdk/pull/8549)). Fixes #22109.
* Set color-scheme property in themes ([\#8547](https://github.com/matrix-org/matrix-react-sdk/pull/8547)). Fixes #22124.
* Improve the styling of error messages during search initialization. ([\#6899](https://github.com/matrix-org/matrix-react-sdk/pull/6899)). Fixes #19245 and #18164. Contributed by @KalleStruik.
* Don't leave button tooltips open when closing modals ([\#8546](https://github.com/matrix-org/matrix-react-sdk/pull/8546)). Fixes #22121.
* update matrix-analytics-events ([\#8543](https://github.com/matrix-org/matrix-react-sdk/pull/8543)).
* Handle Jitsi Meet crashes more gracefully ([\#8541](https://github.com/matrix-org/matrix-react-sdk/pull/8541)).
* Fix regression around pasting links ([\#8537](https://github.com/matrix-org/matrix-react-sdk/pull/8537)). Fixes #22117.
* Fixes suggested room not ellipsized on shrinking ([\#8536](https://github.com/matrix-org/matrix-react-sdk/pull/8536)). Contributed by @yaya-usman.
* Add global spacing between display name and location body ([\#8523](https://github.com/matrix-org/matrix-react-sdk/pull/8523)). Fixes #22111. Contributed by @luixxiul.
* Add box-shadow to the reply preview on the main (left) panel only ([\#8397](https://github.com/matrix-org/matrix-react-sdk/pull/8397)). Fixes #21894. Contributed by @luixxiul.
* Set line-height: 1 to RedactedBody inside GenericEventListSummary for IRC/modern layout ([\#8529](https://github.com/matrix-org/matrix-react-sdk/pull/8529)). Fixes #22112. Contributed by @luixxiul.
* Fix position of timestamp on the chat panel in IRC layout and message edits history modal window ([\#8464](https://github.com/matrix-org/matrix-react-sdk/pull/8464)). Fixes #22011 and #22014. Contributed by @luixxiul.
* Fix unexpected and inconsistent inheritance of line-height property for mx_TextualEvent ([\#8485](https://github.com/matrix-org/matrix-react-sdk/pull/8485)). Fixes #22041. Contributed by @luixxiul.
* Set the same margin to the right side of NewRoomIntro on TimelineCard ([\#8453](https://github.com/matrix-org/matrix-react-sdk/pull/8453)). Contributed by @luixxiul.
* Remove duplicate tooltip from user pills ([\#8512](https://github.com/matrix-org/matrix-react-sdk/pull/8512)).
* Set max-width for MLocationBody and MLocationBody_map by default ([\#8519](https://github.com/matrix-org/matrix-react-sdk/pull/8519)). Fixes #21983. Contributed by @luixxiul.
* Simplify ReplyPreview UI implementation ([\#8516](https://github.com/matrix-org/matrix-react-sdk/pull/8516)). Fixes #22091. Contributed by @luixxiul.
* Fix thread summary overflow on narrow message panel on bubble message layout ([\#8520](https://github.com/matrix-org/matrix-react-sdk/pull/8520)). Fixes #22097. Contributed by @luixxiul.
* Live location sharing - refresh beacon timers on tab becoming active ([\#8515](https://github.com/matrix-org/matrix-react-sdk/pull/8515)).
* Enlarge emoji again ([\#8509](https://github.com/matrix-org/matrix-react-sdk/pull/8509)). Fixes #22086.
* Order receipts with the most recent on the right ([\#8506](https://github.com/matrix-org/matrix-react-sdk/pull/8506)). Fixes #22044.
* Disconnect from video rooms when leaving ([\#8500](https://github.com/matrix-org/matrix-react-sdk/pull/8500)).
* Fix soft crash around threads when room isn't yet in store ([\#8496](https://github.com/matrix-org/matrix-react-sdk/pull/8496)). Fixes #22047.
* Fix reading of cached room device setting values ([\#8491](https://github.com/matrix-org/matrix-react-sdk/pull/8491)).
* Add loading spinners to threads panels ([\#8490](https://github.com/matrix-org/matrix-react-sdk/pull/8490)). Fixes #21335.
* Fix forwarding UI papercuts ([\#8482](https://github.com/matrix-org/matrix-react-sdk/pull/8482)). Fixes #17616.
Changes in [1.10.12](https://github.com/vector-im/element-web/releases/tag/v1.10.12) (2022-05-10)
=================================================================================================
## ✨ Features
* Made the location map change the cursor to a pointer so it looks like it's clickable (https ([\#8451](https://github.com/matrix-org/matrix-react-sdk/pull/8451)). Fixes #21991. Contributed by @Odyssey346.
* Implement improved spacing for the thread list and timeline ([\#8337](https://github.com/matrix-org/matrix-react-sdk/pull/8337)). Fixes #21759. Contributed by @luixxiul.
* LLS: expose way to enable live sharing labs flag from location dialog ([\#8416](https://github.com/matrix-org/matrix-react-sdk/pull/8416)).
* Fix source text boxes in View Source modal should have full width ([\#8425](https://github.com/matrix-org/matrix-react-sdk/pull/8425)). Fixes #21938. Contributed by @EECvision.
* Read Receipts: never show +1, if its just 4, show all of them ([\#8428](https://github.com/matrix-org/matrix-react-sdk/pull/8428)). Fixes #21935.
* Add opt-in analytics to onboarding tasks ([\#8409](https://github.com/matrix-org/matrix-react-sdk/pull/8409)). Fixes #21705.
* Allow user to control if they are signed out of all devices when changing password ([\#8259](https://github.com/matrix-org/matrix-react-sdk/pull/8259)). Fixes #2671.
* Implement new Read Receipt design ([\#8389](https://github.com/matrix-org/matrix-react-sdk/pull/8389)). Fixes #20574.
* Stick connected video rooms to the top of the room list ([\#8353](https://github.com/matrix-org/matrix-react-sdk/pull/8353)).
* LLS: fix jumpy maximised map ([\#8387](https://github.com/matrix-org/matrix-react-sdk/pull/8387)).
* Persist audio and video mute state in video rooms ([\#8376](https://github.com/matrix-org/matrix-react-sdk/pull/8376)).
* Forcefully disconnect from video rooms on logout and tab close ([\#8375](https://github.com/matrix-org/matrix-react-sdk/pull/8375)).
* Add local echo of connected devices in video rooms ([\#8368](https://github.com/matrix-org/matrix-react-sdk/pull/8368)).
* Improve text of account deactivation dialog ([\#8371](https://github.com/matrix-org/matrix-react-sdk/pull/8371)). Fixes #17421.
* Live location sharing: own live beacon status on maximised view ([\#8374](https://github.com/matrix-org/matrix-react-sdk/pull/8374)).
* Show a lobby screen in video rooms ([\#8287](https://github.com/matrix-org/matrix-react-sdk/pull/8287)).
* Settings toggle to disable Composer Markdown ([\#8358](https://github.com/matrix-org/matrix-react-sdk/pull/8358)). Fixes #20321.
* Cache localStorage objects for SettingsStore ([\#8366](https://github.com/matrix-org/matrix-react-sdk/pull/8366)).
* Bring `View Source` back from behind developer mode ([\#8369](https://github.com/matrix-org/matrix-react-sdk/pull/8369)). Fixes #21771.
## 🐛 Bug Fixes
* Fix Jitsi Meet getting wedged at startup in some cases ([\#21995](https://github.com/vector-im/element-web/pull/21995)).
* Fix camera getting muted when disconnecting from a video room ([\#21958](https://github.com/vector-im/element-web/pull/21958)).
* Fix race conditions around threads ([\#8448](https://github.com/matrix-org/matrix-react-sdk/pull/8448)). Fixes #21627.
* Fix reading of cached room device setting values ([\#8495](https://github.com/matrix-org/matrix-react-sdk/pull/8495)).
* Fix issue with dispatch happening mid-dispatch due to js-sdk emit ([\#8473](https://github.com/matrix-org/matrix-react-sdk/pull/8473)). Fixes #22019.
* Match MSC behaviour for threads when disabled (thread-aware mode) ([\#8476](https://github.com/matrix-org/matrix-react-sdk/pull/8476)). Fixes #22033.
* Specify position of DisambiguatedProfile inside a thread on bubble message layout ([\#8452](https://github.com/matrix-org/matrix-react-sdk/pull/8452)). Fixes #21998. Contributed by @luixxiul.
* Location sharing: do not trackuserlocation in location picker ([\#8466](https://github.com/matrix-org/matrix-react-sdk/pull/8466)). Fixes #22013.
* fix text and map indent in thread view ([\#8462](https://github.com/matrix-org/matrix-react-sdk/pull/8462)). Fixes #21997.
* Live location sharing: don't group beacon info with room creation summary ([\#8468](https://github.com/matrix-org/matrix-react-sdk/pull/8468)).
* Don't linkify code blocks ([\#7859](https://github.com/matrix-org/matrix-react-sdk/pull/7859)). Fixes #9613.
* read receipts: improve tooltips to show names of users ([\#8438](https://github.com/matrix-org/matrix-react-sdk/pull/8438)). Fixes #21940.
* Fix poll overflowing a reply tile on bubble message layout ([\#8459](https://github.com/matrix-org/matrix-react-sdk/pull/8459)). Fixes #22005. Contributed by @luixxiul.
* Fix text link buttons on UserInfo panel ([\#8247](https://github.com/matrix-org/matrix-react-sdk/pull/8247)). Fixes #21702. Contributed by @luixxiul.
* Clear local storage settings handler cache on logout ([\#8454](https://github.com/matrix-org/matrix-react-sdk/pull/8454)). Fixes #21994.
* Fix jump to bottom button being always displayed in non-overflowing timelines ([\#8460](https://github.com/matrix-org/matrix-react-sdk/pull/8460)). Fixes #22003.
* fix timeline search with empty text box should do nothing ([\#8262](https://github.com/matrix-org/matrix-react-sdk/pull/8262)). Fixes #21714. Contributed by @EECvision.
* Fixes "space panel kebab menu is rendered out of view on sub spaces" ([\#8350](https://github.com/matrix-org/matrix-react-sdk/pull/8350)). Contributed by @yaya-usman.
* Add margin to the location map inside ThreadView ([\#8442](https://github.com/matrix-org/matrix-react-sdk/pull/8442)). Fixes #21982. Contributed by @luixxiul.
* Patch: "Reloading the registration page should warn about data loss" ([\#8377](https://github.com/matrix-org/matrix-react-sdk/pull/8377)). Contributed by @yaya-usman.
* Live location sharing: fix safari timestamps pt 2 ([\#8443](https://github.com/matrix-org/matrix-react-sdk/pull/8443)).
* Fix issue with thread notification state ignoring initial events ([\#8417](https://github.com/matrix-org/matrix-react-sdk/pull/8417)). Fixes #21927.
* Fix event text overflow on bubble message layout ([\#8391](https://github.com/matrix-org/matrix-react-sdk/pull/8391)). Fixes #21882. Contributed by @luixxiul.
* Disable the message action bar when hovering over the 1px border between threads on the list ([\#8429](https://github.com/matrix-org/matrix-react-sdk/pull/8429)). Fixes #21955. Contributed by @luixxiul.
* correctly align read receipts to state events in bubble layout ([\#8419](https://github.com/matrix-org/matrix-react-sdk/pull/8419)). Fixes #21899.
* Fix issue with underfilled timelines when barren of content ([\#8432](https://github.com/matrix-org/matrix-react-sdk/pull/8432)). Fixes #21930.
* Fix baseline misalignment of thread panel summary by deduplication ([\#8413](https://github.com/matrix-org/matrix-react-sdk/pull/8413)).
* Fix editing of non-html replies ([\#8418](https://github.com/matrix-org/matrix-react-sdk/pull/8418)). Fixes #21928.
* Read Receipts "Fall from the Sky" ([\#8414](https://github.com/matrix-org/matrix-react-sdk/pull/8414)). Fixes #21888.
* Make read receipts handle nullable roomMembers correctly ([\#8410](https://github.com/matrix-org/matrix-react-sdk/pull/8410)). Fixes #21896.
* Don't form continuations on either side of a thread root ([\#8408](https://github.com/matrix-org/matrix-react-sdk/pull/8408)). Fixes #20908.
* Fix centering issue with sticker placeholder ([\#8404](https://github.com/matrix-org/matrix-react-sdk/pull/8404)). Fixes #18014 and #6449.
* Disable download option on <video/> , preferring dedicated download button ([\#8403](https://github.com/matrix-org/matrix-react-sdk/pull/8403)). Fixes #21902.
* Fix infinite loop when pinning/unpinning persistent widgets ([\#8396](https://github.com/matrix-org/matrix-react-sdk/pull/8396)). Fixes #21864.
* Tweak ReadReceiptGroup to better handle disambiguation ([\#8402](https://github.com/matrix-org/matrix-react-sdk/pull/8402)). Fixes #21897.
* stop the bottom edge of buttons getting clipped in devtools ([\#8400](https://github.com/matrix-org/matrix-react-sdk/pull/8400)).
* Fix issue with threads timelines with few events cropping events ([\#8392](https://github.com/matrix-org/matrix-react-sdk/pull/8392)). Fixes #20594.
* Changed font-weight to 400 to support light weight font ([\#8345](https://github.com/matrix-org/matrix-react-sdk/pull/8345)). Fixes #21171. Contributed by @goelesha.
* Fix issue with thread panel not updating when it loads on first render ([\#8382](https://github.com/matrix-org/matrix-react-sdk/pull/8382)). Fixes #21737.
* fix: "Mention highlight and cursor hover highlight has different corner radius" ([\#8384](https://github.com/matrix-org/matrix-react-sdk/pull/8384)). Contributed by @yaya-usman.
* Fix regression around haveRendererForEvent for hidden events ([\#8379](https://github.com/matrix-org/matrix-react-sdk/pull/8379)). Fixes #21862 and #21725.
* Fix regression around the room list treeview keyboard a11y ([\#8385](https://github.com/matrix-org/matrix-react-sdk/pull/8385)). Fixes #21436.
* Remove float property to let the margin between events appear on bubble message layout ([\#8373](https://github.com/matrix-org/matrix-react-sdk/pull/8373)). Fixes #21861. Contributed by @luixxiul.
* Fix race in Registration between server change and flows fetch ([\#8359](https://github.com/matrix-org/matrix-react-sdk/pull/8359)). Fixes #21800.
* fix rainbow breaks compound emojis ([\#8245](https://github.com/matrix-org/matrix-react-sdk/pull/8245)). Fixes #21371. Contributed by @EECvision.
* Fix RightPanelStore handling first room on app launch wrong ([\#8370](https://github.com/matrix-org/matrix-react-sdk/pull/8370)). Fixes #21741.
* Fix UnknownBody error message unalignment ([\#8346](https://github.com/matrix-org/matrix-react-sdk/pull/8346)). Fixes #21828. Contributed by @luixxiul.
* Use -webkit-line-clamp for the room header topic overflow ([\#8367](https://github.com/matrix-org/matrix-react-sdk/pull/8367)). Fixes #21852. Contributed by @luixxiul.
* Fix issue with ServerInfo crashing the modal ([\#8364](https://github.com/matrix-org/matrix-react-sdk/pull/8364)).
* Fixes around threads beta in degraded mode ([\#8319](https://github.com/matrix-org/matrix-react-sdk/pull/8319)). Fixes #21762.
Changes in [1.10.11](https://github.com/vector-im/element-web/releases/tag/v1.10.11) (2022-04-26)
=================================================================================================
## ✨ Features
* Handle forced disconnects from Jitsi ([\#21697](https://github.com/vector-im/element-web/pull/21697)). Fixes #21517.
* Improve performance of switching to rooms with lots of servers and ACLs ([\#8347](https://github.com/matrix-org/matrix-react-sdk/pull/8347)).
* Avoid a reflow when setting caret position on an empty composer ([\#8348](https://github.com/matrix-org/matrix-react-sdk/pull/8348)).
* Add message right-click context menu as a labs feature ([\#5672](https://github.com/matrix-org/matrix-react-sdk/pull/5672)).
* Live location sharing - basic maximised beacon map ([\#8310](https://github.com/matrix-org/matrix-react-sdk/pull/8310)).
* Live location sharing - render users own beacons in timeline ([\#8296](https://github.com/matrix-org/matrix-react-sdk/pull/8296)).
* Improve Threads beta around degraded mode ([\#8318](https://github.com/matrix-org/matrix-react-sdk/pull/8318)).
* Live location sharing - beacon in timeline happy path ([\#8285](https://github.com/matrix-org/matrix-react-sdk/pull/8285)).
* Add copy button to View Source screen ([\#8278](https://github.com/matrix-org/matrix-react-sdk/pull/8278)). Fixes #21482. Contributed by @olivialivia.
* Add heart effect ([\#6188](https://github.com/matrix-org/matrix-react-sdk/pull/6188)). Contributed by @CicadaCinema.
* Update new room icon ([\#8239](https://github.com/matrix-org/matrix-react-sdk/pull/8239)).
## 🐛 Bug Fixes
* Fix: "Code formatting button does not escape backticks" ([\#8181](https://github.com/matrix-org/matrix-react-sdk/pull/8181)). Contributed by @yaya-usman.
* Fix beta indicator dot causing excessive CPU usage ([\#8340](https://github.com/matrix-org/matrix-react-sdk/pull/8340)). Fixes #21793.
* Fix overlapping timestamps on empty messages ([\#8205](https://github.com/matrix-org/matrix-react-sdk/pull/8205)). Fixes #21381. Contributed by @goelesha.
* Fix power selector not showing up in user info when state_default undefined ([\#8297](https://github.com/matrix-org/matrix-react-sdk/pull/8297)). Fixes #21669.
* Avoid looking up settings during timeline rendering ([\#8313](https://github.com/matrix-org/matrix-react-sdk/pull/8313)). Fixes #21740.
* Fix a soft crash with video rooms ([\#8333](https://github.com/matrix-org/matrix-react-sdk/pull/8333)).
* Fixes call tiles overflow ([\#8096](https://github.com/matrix-org/matrix-react-sdk/pull/8096)). Fixes #20254. Contributed by @luixxiul.
* Fix a bug with emoji autocomplete sorting where adding the final "&#58;" would cause the emoji with the typed shortcode to no longer be at the top of the autocomplete list. ([\#8086](https://github.com/matrix-org/matrix-react-sdk/pull/8086)). Fixes #19302. Contributed by @commonlawfeature.
* Fix image preview sizing for edge cases ([\#8322](https://github.com/matrix-org/matrix-react-sdk/pull/8322)). Fixes #20088.
* Refactor SecurityRoomSettingsTab and remove unused state ([\#8306](https://github.com/matrix-org/matrix-react-sdk/pull/8306)). Fixes matrix-org/element-web-rageshakes#12002.
* Don't show the prompt to enable desktop notifications immediately after registration ([\#8274](https://github.com/matrix-org/matrix-react-sdk/pull/8274)).
* Stop tracking threads if threads support is disabled ([\#8308](https://github.com/matrix-org/matrix-react-sdk/pull/8308)). Fixes #21766.
* Fix some issues with threads rendering ([\#8305](https://github.com/matrix-org/matrix-react-sdk/pull/8305)). Fixes #21670.
* Fix threads rendering issue in Safari ([\#8298](https://github.com/matrix-org/matrix-react-sdk/pull/8298)). Fixes #21757.
* Fix space panel width change on hovering over space item ([\#8299](https://github.com/matrix-org/matrix-react-sdk/pull/8299)). Fixes #19891.
* Hide the reply in thread button in deployments where beta is forcibly disabled ([\#8294](https://github.com/matrix-org/matrix-react-sdk/pull/8294)). Fixes #21753.
* Prevent soft crash around room list header context menu when space changes ([\#8289](https://github.com/matrix-org/matrix-react-sdk/pull/8289)). Fixes matrix-org/element-web-rageshakes#11416, matrix-org/element-web-rageshakes#11692, matrix-org/element-web-rageshakes#11739, matrix-org/element-web-rageshakes#11772, matrix-org/element-web-rageshakes#11891 matrix-org/element-web-rageshakes#11858 and matrix-org/element-web-rageshakes#11456.
* When selecting reply in thread on a thread response open existing thread ([\#8291](https://github.com/matrix-org/matrix-react-sdk/pull/8291)). Fixes #21743.
* Handle thread bundled relationships coming from the server via MSC3666 ([\#8292](https://github.com/matrix-org/matrix-react-sdk/pull/8292)). Fixes #21450.
* Fix: Avatar preview does not update when same file is selected repeatedly ([\#8288](https://github.com/matrix-org/matrix-react-sdk/pull/8288)). Fixes #20098.
* Fix a bug where user gets a warning when changing powerlevel from **Admin** to **custom level (100)** ([\#8248](https://github.com/matrix-org/matrix-react-sdk/pull/8248)). Fixes #21682. Contributed by @Jumeb.
* Use a consistent alignment for all text items in a list ([\#8276](https://github.com/matrix-org/matrix-react-sdk/pull/8276)). Fixes #21731. Contributed by @luixxiul.
* Fixes button labels being collapsed per a character in CJK languages ([\#8212](https://github.com/matrix-org/matrix-react-sdk/pull/8212)). Fixes #21287. Contributed by @luixxiul.
* Fix: Remove jittery timeline scrolling after jumping to an event ([\#8263](https://github.com/matrix-org/matrix-react-sdk/pull/8263)).
* Fix regression of edits showing up in the timeline with hidden events shown ([\#8260](https://github.com/matrix-org/matrix-react-sdk/pull/8260)). Fixes #21694.
* Fix reporting events not working ([\#8257](https://github.com/matrix-org/matrix-react-sdk/pull/8257)). Fixes #21713.
* Make Jitsi widgets in video rooms immutable ([\#8244](https://github.com/matrix-org/matrix-react-sdk/pull/8244)). Fixes #21647.
* Fix: Ensure links to events scroll the correct events into view ([\#8250](https://github.com/matrix-org/matrix-react-sdk/pull/8250)). Fixes #19934.
Changes in [1.10.10](https://github.com/vector-im/element-web/releases/tag/v1.10.10) (2022-04-14)
=================================================================================================
## 🐛 Bug Fixes
* Fixes around threads beta in degraded mode ([\#8319](https://github.com/matrix-org/matrix-react-sdk/pull/8319)). Fixes #21762.
Changes in [1.10.9](https://github.com/vector-im/element-web/releases/tag/v1.10.9) (2022-04-12)
===============================================================================================
## ✨ Features
* Release threads as a beta feature ([\#8081](https://github.com/matrix-org/matrix-react-sdk/pull/8081)). Fixes #21351.
* More video rooms design updates ([\#8222](https://github.com/matrix-org/matrix-react-sdk/pull/8222)).
* Update video rooms to new design specs ([\#8207](https://github.com/matrix-org/matrix-react-sdk/pull/8207)). Fixes #21515, #21516 #21519 and #21526.
* Live Location Sharing - left panel warning with error ([\#8201](https://github.com/matrix-org/matrix-react-sdk/pull/8201)).
* Live location sharing - Stop publishing location to beacons with consecutive errors ([\#8194](https://github.com/matrix-org/matrix-react-sdk/pull/8194)).
* Live location sharing: allow retry when stop sharing fails ([\#8193](https://github.com/matrix-org/matrix-react-sdk/pull/8193)).
* Allow voice messages to be scrubbed in the timeline ([\#8079](https://github.com/matrix-org/matrix-react-sdk/pull/8079)). Fixes #18713.
* Live location sharing - stop sharing to beacons in rooms you left ([\#8187](https://github.com/matrix-org/matrix-react-sdk/pull/8187)).
* Allow sending and thumbnailing AVIF images ([\#8172](https://github.com/matrix-org/matrix-react-sdk/pull/8172)).
* Live location sharing - handle geolocation errors ([\#8179](https://github.com/matrix-org/matrix-react-sdk/pull/8179)).
* Show voice room participants when not connected ([\#8136](https://github.com/matrix-org/matrix-react-sdk/pull/8136)). Fixes #21513.
* Add margins between labs sections ([\#8169](https://github.com/matrix-org/matrix-react-sdk/pull/8169)).
* Live location sharing - send geolocation beacon events - happy path ([\#8127](https://github.com/matrix-org/matrix-react-sdk/pull/8127)).
* Add support for Animated (A)PNG ([\#8158](https://github.com/matrix-org/matrix-react-sdk/pull/8158)). Fixes #12967.
* Don't form continuations from thread roots ([\#8166](https://github.com/matrix-org/matrix-react-sdk/pull/8166)). Fixes #20908.
* Improve handling of animated GIF and WEBP images ([\#8153](https://github.com/matrix-org/matrix-react-sdk/pull/8153)). Fixes #16193 and #6684.
* Wire up file preview for video files ([\#8140](https://github.com/matrix-org/matrix-react-sdk/pull/8140)). Fixes #21539.
* When showing thread, always auto-focus its composer ([\#8115](https://github.com/matrix-org/matrix-react-sdk/pull/8115)). Fixes #21438.
* Live location sharing - refresh beacon expiry in room ([\#8116](https://github.com/matrix-org/matrix-react-sdk/pull/8116)).
* Use styled mxids in member list v2 ([\#8110](https://github.com/matrix-org/matrix-react-sdk/pull/8110)). Fixes #14825. Contributed by @SimonBrandner.
* Delete groups (legacy communities system) ([\#8027](https://github.com/matrix-org/matrix-react-sdk/pull/8027)). Fixes #17532.
* Add a prototype of voice rooms in labs ([\#8084](https://github.com/matrix-org/matrix-react-sdk/pull/8084)). Fixes #3546.
## 🐛 Bug Fixes
* Avoid flashing the Jitsi prejoin screen at the user before skipping it ([\#21665](https://github.com/vector-im/element-web/pull/21665)).
* Fix editing `<ol>` tags with a non-1 start attribute ([\#8211](https://github.com/matrix-org/matrix-react-sdk/pull/8211)). Fixes #21625.
* Fix URL previews being enabled when room first created ([\#8227](https://github.com/matrix-org/matrix-react-sdk/pull/8227)). Fixes #21659.
* Don't use m.call for Jitsi video rooms ([\#8223](https://github.com/matrix-org/matrix-react-sdk/pull/8223)).
* Scale emoji with size of surrounding text ([\#8224](https://github.com/matrix-org/matrix-react-sdk/pull/8224)).
* Make "Jump to date" translatable ([\#8218](https://github.com/matrix-org/matrix-react-sdk/pull/8218)).
* Normalize call buttons ([\#8129](https://github.com/matrix-org/matrix-react-sdk/pull/8129)). Fixes #21493. Contributed by @luixxiul.
* Show room preview bar with maximised widgets ([\#8180](https://github.com/matrix-org/matrix-react-sdk/pull/8180)). Fixes #21542.
* Update more strings to not wrongly mention room when it is/could be a space ([\#7722](https://github.com/matrix-org/matrix-react-sdk/pull/7722)). Fixes #20243 and #20910.
* Fix issue with redacting via edit composer flow causing stuck editStates ([\#8184](https://github.com/matrix-org/matrix-react-sdk/pull/8184)).
* Fix some image/video scroll jumps ([\#8182](https://github.com/matrix-org/matrix-react-sdk/pull/8182)).
* Fix "react error on share dialog" ([\#8170](https://github.com/matrix-org/matrix-react-sdk/pull/8170)). Contributed by @yaya-usman.
* Fix disambiguated profile in threads in bubble layout ([\#8168](https://github.com/matrix-org/matrix-react-sdk/pull/8168)). Fixes #21570. Contributed by @SimonBrandner.
* Responsive BetaCard on Labs ([\#8154](https://github.com/matrix-org/matrix-react-sdk/pull/8154)). Fixes #21554. Contributed by @luixxiul.
* Display button as inline in room directory dialog ([\#8164](https://github.com/matrix-org/matrix-react-sdk/pull/8164)). Fixes #21567. Contributed by @luixxiul.
* Null guard TimelinePanel unmount edge ([\#8171](https://github.com/matrix-org/matrix-react-sdk/pull/8171)).
* Fix beta pill label breaking ([\#8162](https://github.com/matrix-org/matrix-react-sdk/pull/8162)). Fixes #21566. Contributed by @luixxiul.
* Strip relations when forwarding ([\#7929](https://github.com/matrix-org/matrix-react-sdk/pull/7929)). Fixes #19769, #18067 #21015 and #10924.
* Don't try (and fail) to show replies for redacted events ([\#8141](https://github.com/matrix-org/matrix-react-sdk/pull/8141)). Fixes #21435.
* Fix 3pid member info for space member list ([\#8128](https://github.com/matrix-org/matrix-react-sdk/pull/8128)). Fixes #21534.
* Set max-width to user context menu ([\#8089](https://github.com/matrix-org/matrix-react-sdk/pull/8089)). Fixes #21486. Contributed by @luixxiul.
* Fix issue with falsey hrefs being sent in events ([\#8113](https://github.com/matrix-org/matrix-react-sdk/pull/8113)). Fixes #21417.
* Make video sizing consistent with images ([\#8102](https://github.com/matrix-org/matrix-react-sdk/pull/8102)). Fixes #20072.
Changes in [1.10.9-rc.4](https://github.com/vector-im/element-web/releases/tag/v1.10.9-rc.4) (2022-04-11)
=========================================================================================================
Changes in [1.10.9-rc.3](https://github.com/vector-im/element-web/releases/tag/v1.10.9-rc.3) (2022-04-08)
=========================================================================================================
Changes in [1.10.9-rc.2](https://github.com/vector-im/element-web/releases/tag/v1.10.9-rc.2) (2022-04-06)
=========================================================================================================
Changes in [1.10.9-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.10.9-rc.1) (2022-04-05)
=========================================================================================================
## ✨ Features
* Release threads as a beta feature ([\#8081](https://github.com/matrix-org/matrix-react-sdk/pull/8081)). Fixes #21351.
* More video rooms design updates ([\#8222](https://github.com/matrix-org/matrix-react-sdk/pull/8222)).
* Update video rooms to new design specs ([\#8207](https://github.com/matrix-org/matrix-react-sdk/pull/8207)). Fixes #21515, #21516 #21519 and #21526.
* Live Location Sharing - left panel warning with error ([\#8201](https://github.com/matrix-org/matrix-react-sdk/pull/8201)).
* Live location sharing - Stop publishing location to beacons with consecutive errors ([\#8194](https://github.com/matrix-org/matrix-react-sdk/pull/8194)).
* Live location sharing: allow retry when stop sharing fails ([\#8193](https://github.com/matrix-org/matrix-react-sdk/pull/8193)).
* Allow voice messages to be scrubbed in the timeline ([\#8079](https://github.com/matrix-org/matrix-react-sdk/pull/8079)). Fixes #18713.
* Live location sharing - stop sharing to beacons in rooms you left ([\#8187](https://github.com/matrix-org/matrix-react-sdk/pull/8187)).
* Allow sending and thumbnailing AVIF images ([\#8172](https://github.com/matrix-org/matrix-react-sdk/pull/8172)).
* Live location sharing - handle geolocation errors ([\#8179](https://github.com/matrix-org/matrix-react-sdk/pull/8179)).
* Show voice room participants when not connected ([\#8136](https://github.com/matrix-org/matrix-react-sdk/pull/8136)). Fixes #21513.
* Add margins between labs sections ([\#8169](https://github.com/matrix-org/matrix-react-sdk/pull/8169)).
* Live location sharing - send geolocation beacon events - happy path ([\#8127](https://github.com/matrix-org/matrix-react-sdk/pull/8127)).
* Add support for Animated (A)PNG ([\#8158](https://github.com/matrix-org/matrix-react-sdk/pull/8158)). Fixes #12967.
* Don't form continuations from thread roots ([\#8166](https://github.com/matrix-org/matrix-react-sdk/pull/8166)). Fixes #20908.
* Improve handling of animated GIF and WEBP images ([\#8153](https://github.com/matrix-org/matrix-react-sdk/pull/8153)). Fixes #16193 and #6684.
* Wire up file preview for video files ([\#8140](https://github.com/matrix-org/matrix-react-sdk/pull/8140)). Fixes #21539.
* When showing thread, always auto-focus its composer ([\#8115](https://github.com/matrix-org/matrix-react-sdk/pull/8115)). Fixes #21438.
* Live location sharing - refresh beacon expiry in room ([\#8116](https://github.com/matrix-org/matrix-react-sdk/pull/8116)).
* Use styled mxids in member list v2 ([\#8110](https://github.com/matrix-org/matrix-react-sdk/pull/8110)). Fixes #14825. Contributed by @SimonBrandner.
* Delete groups (legacy communities system) ([\#8027](https://github.com/matrix-org/matrix-react-sdk/pull/8027)). Fixes #17532.
* Add a prototype of voice rooms in labs ([\#8084](https://github.com/matrix-org/matrix-react-sdk/pull/8084)). Fixes #3546.
## 🐛 Bug Fixes
* Fix URL previews being enabled when room first created ([\#8227](https://github.com/matrix-org/matrix-react-sdk/pull/8227)). Fixes #21659.
* Don't use m.call for Jitsi video rooms ([\#8223](https://github.com/matrix-org/matrix-react-sdk/pull/8223)).
* Scale emoji with size of surrounding text ([\#8224](https://github.com/matrix-org/matrix-react-sdk/pull/8224)).
* Make "Jump to date" translatable ([\#8218](https://github.com/matrix-org/matrix-react-sdk/pull/8218)).
* Normalize call buttons ([\#8129](https://github.com/matrix-org/matrix-react-sdk/pull/8129)). Fixes #21493. Contributed by @luixxiul.
* Fix editing <ol> tags with a non-1 start attribute ([\#8211](https://github.com/matrix-org/matrix-react-sdk/pull/8211)). Fixes #21625.
* Show room preview bar with maximised widgets ([\#8180](https://github.com/matrix-org/matrix-react-sdk/pull/8180)). Fixes #21542.
* Update more strings to not wrongly mention room when it is/could be a space ([\#7722](https://github.com/matrix-org/matrix-react-sdk/pull/7722)). Fixes #20243 and #20910.
* Fix issue with redacting via edit composer flow causing stuck editStates ([\#8184](https://github.com/matrix-org/matrix-react-sdk/pull/8184)).
* Fix some image/video scroll jumps ([\#8182](https://github.com/matrix-org/matrix-react-sdk/pull/8182)).
* Fix "react error on share dialog" ([\#8170](https://github.com/matrix-org/matrix-react-sdk/pull/8170)). Contributed by @yaya-usman.
* Fix disambiguated profile in threads in bubble layout ([\#8168](https://github.com/matrix-org/matrix-react-sdk/pull/8168)). Fixes #21570. Contributed by @SimonBrandner.
* Responsive BetaCard on Labs ([\#8154](https://github.com/matrix-org/matrix-react-sdk/pull/8154)). Fixes #21554. Contributed by @luixxiul.
* Display button as inline in room directory dialog ([\#8164](https://github.com/matrix-org/matrix-react-sdk/pull/8164)). Fixes #21567. Contributed by @luixxiul.
* Null guard TimelinePanel unmount edge ([\#8171](https://github.com/matrix-org/matrix-react-sdk/pull/8171)).
* Fix beta pill label breaking ([\#8162](https://github.com/matrix-org/matrix-react-sdk/pull/8162)). Fixes #21566. Contributed by @luixxiul.
* Strip relations when forwarding ([\#7929](https://github.com/matrix-org/matrix-react-sdk/pull/7929)). Fixes #19769, #18067 #21015 and #10924.
* Don't try (and fail) to show replies for redacted events ([\#8141](https://github.com/matrix-org/matrix-react-sdk/pull/8141)). Fixes #21435.
* Fix 3pid member info for space member list ([\#8128](https://github.com/matrix-org/matrix-react-sdk/pull/8128)). Fixes #21534.
* Set max-width to user context menu ([\#8089](https://github.com/matrix-org/matrix-react-sdk/pull/8089)). Fixes #21486. Contributed by @luixxiul.
* Fix issue with falsey hrefs being sent in events ([\#8113](https://github.com/matrix-org/matrix-react-sdk/pull/8113)). Fixes #21417.
* Make video sizing consistent with images ([\#8102](https://github.com/matrix-org/matrix-react-sdk/pull/8102)). Fixes #20072.
Changes in [1.10.8-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.10.8-rc.1) (2022-03-22)
=========================================================================================================

View File

@@ -1,3 +1,12 @@
[![Chat](https://img.shields.io/matrix/element-web:matrix.org?logo=matrix)](https://matrix.to/#/#element-web:matrix.org)
![Tests](https://github.com/vector-im/element-web/actions/workflows/tests.yaml/badge.svg)
![Static Analysis](https://github.com/vector-im/element-web/actions/workflows/static_analysis.yaml/badge.svg)
[![Weblate](https://translate.element.io/widgets/element-web/-/element-web/svg-badge.svg)](https://translate.element.io/engage/element-web/)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=element-web&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=element-web)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=element-web&metric=coverage)](https://sonarcloud.io/summary/new_code?id=element-web)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=element-web&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=element-web)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=element-web&metric=bugs)](https://sonarcloud.io/summary/new_code?id=element-web)
Element
=======
@@ -41,8 +50,8 @@ released version of Element:
1. Untar the tarball on your web server
1. Move (or symlink) the `element-x.x.x` directory to an appropriate name
1. Configure the correct caching headers in your webserver (see below)
1. If desired, copy `config.sample.json` to `config.json` and edit it
as desired. See the [configuration docs](docs/config.md) for details.
1. Configure the app by copying `config.sample.json` to `config.json` and
modifying it. See the [configuration docs](docs/config.md) for details.
1. Enter the URL into your browser and log into Element!
Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located
@@ -250,10 +259,11 @@ Before attempting to develop on Element you **must** read the [developer guide
for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk#developer-guide), which
also defines the design, architecture and style for Element too.
Before starting work on a feature, it's best to ensure your plan aligns well
with our vision for Element. Please chat with the team in
[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) before you
start so we can ensure it's something we'd be willing to merge.
Read the [Choosing an issue](docs/choosing-an-issue.md) page for some guidance
about where to start. Before starting work on a feature, it's best to ensure
your plan aligns well with our vision for Element. Please chat with the team in
[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) before
you start so we can ensure it's something we'd be willing to merge.
You should also familiarise yourself with the ["Here be Dragons" guide
](https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM)
@@ -264,9 +274,6 @@ top of the underlying `matrix-react-sdk`. `matrix-react-sdk` provides both the
higher and lower level React components useful for building Matrix communication
apps using React.
After creating a new component you must run `yarn reskindex` to regenerate
the `component-index.js` for the app (used in future for skinning).
Please note that Element is intended to run correctly without access to the public
internet. So please don't depend on resources (JS libs, CSS, images, fonts)
hosted by external CDNs or servers but instead please package all dependencies
@@ -305,15 +312,22 @@ yarn install
popd
```
Finally, build and start Element itself:
Clone the repo and switch to the `element-web` directory:
```bash
git clone https://github.com/vector-im/element-web.git
cd element-web
```
Configure the app by copying `config.sample.json` to `config.json` and
modifying it. See the [configuration docs](docs/config.md) for details.
Finally, build and start Element itself:
```bash
yarn link matrix-js-sdk
yarn link matrix-react-sdk
yarn install
yarn reskindex
yarn start
```
@@ -330,9 +344,6 @@ Wait a few seconds for the initial build to finish; you should see something lik
and rebuilds source files when they change. This development server also
disables caching, so do NOT use it in production.
Configure the app by copying `config.sample.json` to `config.json` and
modifying it. See the [configuration docs](docs/config.md) for details.
Open <http://127.0.0.1:8080/> in your browser to see your newly built Element.
**Note**: The build script uses inotify by default on Linux to monitor directories
@@ -364,9 +375,6 @@ ___
When you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be
automatically picked up by webpack and built.
If you add or remove any components from the Element skin, you will need to rebuild
the skin's index by running, `yarn reskindex`.
If any of these steps error with, `file table overflow`, you are probably on a mac
which has a very low limit on max open files. Run `ulimit -Sn 1024` and try again.
You'll need to do this in each new terminal you open before building Element.

View File

@@ -13,7 +13,6 @@ module.exports = {
"@babel/preset-react",
],
"plugins": [
["@babel/plugin-proposal-decorators", {legacy: true}],
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-class-properties",

5
components.json Normal file
View File

@@ -0,0 +1,5 @@
{
"src/components/views/auth/AuthFooter.tsx": "src/components/views/auth/VectorAuthFooter.tsx",
"src/components/views/auth/AuthHeaderLogo.tsx": "src/components/views/auth/VectorAuthHeaderLogo.tsx",
"src/components/views/auth/AuthPage.tsx": "src/components/views/auth/VectorAuthPage.tsx"
}

View File

@@ -1,5 +1,8 @@
# App load order
**Dev note**: As of March 2022, the skin is no longer part of the app load order at all. The document's graphs have
been kept untouched for posterity.
Old slow flow:
![image](https://user-images.githubusercontent.com/2403652/73848963-00a2a080-4821-11ea-97d4-1200fc2638f3.png)

81
docs/choosing-an-issue.md Normal file
View File

@@ -0,0 +1,81 @@
# Choosing an issue to work on
So you want to contribute to Element Web? That is awesome!
If you're not sure where to start, make sure you read
[CONTRIBUTING.md](../CONTRIBUTING.md), and the
[Development](../README.md#development) and
[Setting up a dev environment](../README.md#setting-up-a-dev-environment)
sections of the README.
Maybe you've got something specific you'd like to work on? If so, make sure you
create an issue and
[discuss it with the developers](https://matrix.to/#/#element-dev:matrix.org)
before you put a lot of time into it.
If you're looking for inspiration on where to start, keep reading!
## Finding a good first issue
All the issues for Element Web live in the
[element-web](https://github.com/vector-im/element-web) repository, including
issues that actually need fixing in `matrix-react-sdk` or one of the related
repos.
The first place to look is for
[issues tagged with "good first issue"](https://github.com/vector-im/element-web/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).
Look through that list and find something that catches your interest. If there
is nothing, there, try gently asking in
[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) for
someone to add something.
When you're looking through the list, here are some things that might make an
issue a **GOOD** choice:
* It is a problem or feature you care about.
* It concerns a type of code you know a little about.
* You think you can understand what's needed.
* It already has approval from Element Web's designers (look for comments from
members of the
[Product](https://github.com/orgs/vector-im/teams/product/members) or
[Design](https://github.com/orgs/vector-im/teams/design/members) teams).
Here are some things that might make it a **BAD** choice:
* You don't understand it (maybe add a comment asking a clarifying question).
* It sounds difficult, or is part of a larger change you don't know about.
* **It is tagged with `X-Needs-Design` or `X-Needs-Product`.**
**Element Web's Design and Product teams tend to be very busy**, so if you make
changes that require approval from one of those teams, you will probably have
to wait a very long time. The kind of change affected by this is changing the
way the product works, or how it looks in a specific area.
## Finding a good second issue
Once you've fixed a few small things, you can consider taking on something a
little larger. This should mostly be driven by what you find interesting, but
you may also find the
[Help Wanted](https://github.com/vector-im/element-web/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22Help+Wanted%22)
label useful.
Note that the same comment applies as in the previous section: if you want to
work in areas that require Design or Product approval, you should look to join
existing work that is already designed, as getting approval for your random
change will take a very long time.
So you should **always avoid issues tagged with `X-Needs-Design` or
`X-Needs-Product`**.
## Asking questions
Feel free to ask questions about the issues or how to choose them in the
[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) Matrix
room.
## Thank you
Thank you again for contributing to Element Web. We welcome your contributions
and are grateful for your work. We find working on it great fun, and we hope
you do too!

View File

@@ -14,7 +14,7 @@ for the desktop app the application will need to be exited fully (including via
## Homeserver configuration
In order for Element to even start you will need to tell it what homeserver to connect to *by default*. Users will be
able to use a different homeserver if they like, though this can be disabled with `"disable_custom_urls": false` in your
able to use a different homeserver if they like, though this can be disabled with `"disable_custom_urls": true` in your
config.
One of the following options **must** be supplied:
@@ -61,7 +61,7 @@ To force a labs flag on or off, use the following:
}
```
If you'd like the user to be able to self-select which labs flags they can turn on, add `"show_labs_flags": true` to
If you'd like the user to be able to self-select which labs flags they can turn on, add `"show_labs_settings": true` to
your config. This will turn on the tab in user settings.
**Note**: Feature support varies release-by-release. Check the [labs flag documentation](./labs.md) frequently if enabling
@@ -95,7 +95,8 @@ instance. As of writing those settings are not fully documented, however a few a
}
}
```
These values will take priority over the hardcoded defaults for the settings.
These values will take priority over the hardcoded defaults for the settings. For a list of available settings, see
[Settings.tsx](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.tsx).
## Customisation & branding
@@ -192,7 +193,7 @@ Starting with `branding`, the following subproperties are available:
`welcome.html` that ships with Element will be used instead.
2. `home_url`: A URL to an HTML page to show within the app as the "home" page. When the app doesn't have a room/screen to
show the user, it will use the home page instead. The home page is additionally accessible from the user menu. By default,
no home page is set and therefore a hardcoded landing screen is used.
no home page is set and therefore a hardcoded landing screen is used. More documentation and examples are [here](./custom-home.md).
3. `login_for_welcome`: When `true` (default `false`), the app will use the login form as a welcome page instead of the welcome
page itself. This disables use of `welcome_url` and all welcome page functionality.
@@ -541,4 +542,4 @@ The following are undocumented or intended for developer use only.
1. `fallback_hs_url`
2. `sync_timeline_limit`
3. `dangerously_allow_unsafe_and_insecure_passwords`
4. `latex_maths_delims`
4. `latex_maths_delims`: An optional setting to override the default delimiters used for maths parsing. See https://github.com/matrix-org/matrix-react-sdk/pull/5939 for details. Only used when `feature_latex_maths` is enabled.

65
docs/custom-home.md Normal file
View File

@@ -0,0 +1,65 @@
# Custom Home Page
The home page is shown whenever the user is logged in, but no room is selected.
A custom `home.html` replacing the default home page can be configured either in `.well-known/matrix/client` or `config.json`.
Such a custom home page can be used to communicate helpful information and important rules to the users.
## Configuration
To provide a custom home page for all element-web/desktop users of a homeserver, include the following in `.well-known/matrix/client`:
```
{
"io.element.embedded_pages": {
"home_url": "https://example.org/home.html"
}
}
```
The home page can be overridden in `config.json` to provide all users of an element-web installation with the same experience:
```
{
"embeddedPages": {
"homeUrl": "https://example.org/home.html"
}
}
```
## `home.html` Example
The following is a simple example for a custom `home.html`:
```
<style type="text/css">
.tos {
width: auto;
color: black;
background : #ffcccb;
font-weight: bold;
}
</style>
<h1>The example.org Matrix Server</h1>
<div class="tos">
<p>Behave appropriately.</p>
</div>
<h2>Start Chatting</h2>
<ul>
<li><a href="#/dm">Send a Direct Message</a></li>
<li><a href="#/directory">Explore Public Rooms</a></li>
<li><a href="#/new">Create a Group Chat</a></li>
</ul>
```
When choosing colors, be aware that the home page may be displayed in either light or dark mode.
It may be needed to set CORS headers for the `home.html` to enable element-desktop to fetch it, with e.g., the following nginx config:
```
add_header Access-Control-Allow-Origin *;
```

View File

@@ -34,9 +34,9 @@ default, Element Web does *not* ship with this file to prevent conflicts.
### Custom components
Instead of implementing skinning from the react-sdk, maintainers can use the above system to override components
if they wish. Maintenance and API surface compatibility are left as a responsibility for the project - the layering
in Element Web (including the react-sdk) do not make guarantees that properties/state machines won't change.
Maintainers can use the above system to override components if they wish. Maintenance and API surface compatibility are
left as a responsibility for the project - the layering in Element Web (including the react-sdk) do not make guarantees
that properties/state machines won't change.
### Component visibility customisation

View File

@@ -35,7 +35,7 @@ clients commit to doing the associated clean up work once a feature stabilises.
When starting work on a feature, we should create a matching feature flag:
1. Add a new
[setting](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.ts)
[setting](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.tsx)
of the form:
```js
"feature_cats": {
@@ -81,7 +81,7 @@ configs.
**Note:** The above will only enable the feature for https://app.element.io and official Element
Desktop builds. It will not be enabled for self-hosted installed, custom desktop builds, etc. To
cover these cases, change the setting's `default` in `Settings.ts` to `true`.
cover these cases, change the setting's `default` in `Settings.tsx` to `true`.
## Feature deployed successfully

View File

@@ -34,18 +34,6 @@ date from the calendar.
Also adds the `/jumptodate 2022-01-31` slash command.
## Custom status (`feature_custom_status`)
An experimental approach for supporting custom status messages across DMs. To set a status, click on
your avatar next to the message composer.
## Custom tags (`feature_custom_tags`)
An experimental approach for dealing with custom tags. Custom tags will appear in the bottom portion
of the community filter panel.
Setting custom tags is not supported by Element.
## Render simple counters in room header (`feature_state_counters`)
Allows rendering of labelled counters above the message list.
@@ -69,10 +57,6 @@ Once enabled, send a custom state event to a room to set values:
That's it. Now should see your new counter under the header.
## Multiple integration managers (`feature_many_integration_managers`)
Exposes a way to access all the integration managers known to Element. This is an implementation of [MSC1957](https://github.com/matrix-org/matrix-doc/pull/1957).
## New ways to ignore people (`feature_mjolnir`)
When enabled, a new settings tab appears for users to be able to manage their ban lists.
@@ -115,26 +99,15 @@ For some sample themes, check out [aaronraimist/element-themes](https://github.c
## Message preview tweaks
To enable message previews for reactions in all rooms, enable `feature_roomlist_preview_reactions_all`.
To enable message previews for reactions in DMs, enable `feature_roomlist_preview_reactions_dms`, ignored when it is enabled for all rooms.
To enable message previews in the left panel for reactions in all rooms, enable `feature_roomlist_preview_reactions_all`.
## Communities v2 prototyping (`feature_communities_v2_prototypes`) [In Development]
**This is a highly experimental implementation for parts of the communities v2 experience.** It does not
represent what communities v2 will look/feel like and can/will change without notice. Due to the early
stages this feature is in and the requirement for a compatible homeserver, we will not be accepting issues
or feedback for this functionality at this time.
To enable message previews for reactions in DMs only, enable `feature_roomlist_preview_reactions_dms`. This is ignored when it is enabled for all rooms.
## Dehydrated devices (`feature_dehydration`)
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).
## Do not disturb (`feature_dnd`)
Enables UI for turning on "do not disturb" mode for the current device. When DND mode is engaged, popups
and notification noises are suppressed. Not perfect, but can help reduce noise.
## Hidden read receipts (`feature_hidden_read_receipts`)
Enables sending hidden read receipts as per [MSC2285](https://github.com/matrix-org/matrix-doc/pull/2285)
@@ -196,3 +169,13 @@ Threading allows users to branch out a new conversation from the main timeline o
Threads can be access by clicking their summary below the root event on the room timeline. Users can find a comprehensive list of threads by click the icon on the room header button.
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]
Enables support for creating and joining video rooms, which are persistent video chats that users can jump in and out of.

View File

@@ -1,68 +0,0 @@
== Skinning refactor ==
matrix-react-sdk
- base images
- base CSS
- all the components needed to build a workable app (including the top layer)
element-web: the Element skin
- Element-specific classes (e.g. login header/footer)
- Element-specific themes
- light
- dark
i.e. the only things which should go into element-web are bits which apply vector-specific skinning
specifically "Stuff that any other brand would not want to use. (e.g. Element logos, links, T&Cs)"
- Questions:
- Electron app? (should probably be a separate repo in its own right? but might as well go here for now)
- index.html & index.js? (should be in matrix-react-sdk, given the SDK is useless without them?)
ideally matrix-react-sdk itself should ship with a default skin which actually works built in.
status skin (can go in the same app for now)
- has status theme
- which inherits from Element light theme
- how do we share graphics between skins?
- shove them into react-sdk, or...
- guess we do ../../vector/img
- this means keeping the skin name in the images (unless /img is a shortcut to the right skin's images)
out of scope:
- making the components more independent, so they can be used in isolation.
- that said, the bits which should probably be used by being embeded into a different app:
- login/reg
- RoomView + RoomSettings
- MessageComposer
- RoomList
- MemberList
- MemberInfo
- Voip UI
- UserSettings
- sharing different js-sdks between the different isolated modules
other changes:
- how do we handle i18n?
- each skin should really be its own i18n project. As long as all the commonality stuff is in matrix-react-sdk this shouldn't be too bad.
- ability to associate components with a given skin
- skins/vector/src <-- components
- skins/vector/css
- skins/vector/img
- skins/vector/fonts
- gather together themes (per skin) into a single place too
- skins/vector/themes/foo/css
- skins/vector/themes/foo/img
- skins/vector/themes/foo/fonts
- ideally element-web would contain almost nothing but skins/vector directory.
- ability to entirely replace CSS rather than override it for a given theme
- e.g. if we replace `Login.js` with `StatusLogin.js`, then we should similarly be able to replace `_Login.scss` with `_StatusLogin.scss`.
random thoughts;
- should we be able to change the entire skin at runtime (more like wordpress) - to the extent of replacing entire components?
- might pose security issues if a theme can be swapped out to replace MatrixChat or other fundamental functionality at runtime
- if so, perhaps skins & themes should converge...
-----------------
Immediate plan for Status:
* Implement it as a theme for the Element skin
* Ideally move skins to a sensible level (possibly even including src?)

View File

@@ -6,7 +6,7 @@ Element app via CSS & custom imagery.
They are *NOT* co be confused with 'skins', which describe apps which sit on top
of matrix-react-sdk - e.g. in theory Element itself is a react-sdk skin.
As of Jan 2017, skins are not fully supported; Element is the only available skin.
As of March 2022, skins are not fully supported; Element is the only available skin.
To define a theme for Element:

View File

@@ -18,7 +18,6 @@
2. After registering check if you got an email to verify your account and click the link (if there is none head to step 1.4)
3. Log into weblate
4. Head to https://translate.element.io/accounts/profile/ and select the languages you know and maybe another language you know too.
6. Head to https://translate.element.io/accounts/profile/#subscriptions and select Element Web as Project
## How to check if your language already is being translated
@@ -62,4 +61,4 @@ You can use inside the translation field "Review needed" checkbox. It will be sh
### Further reading
The official Weblate doc provides some more in-deepth explanation on how to do translations and talks about do and don'ts. You can find it at: https://docs.weblate.org/en/latest/user/translating.html
The official Weblate doc provides some more in-depth explanation on how to do translations and talks about do and don'ts. You can find it at: https://docs.weblate.org/en/latest/user/translating.html

View File

@@ -52,7 +52,7 @@
},
"posthog": {
"projectApiKey": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"apiHost": "https://posthog.hss.element.io"
"apiHost": "https://posthog.element.io"
},
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx"
}

View File

@@ -56,7 +56,7 @@
},
"posthog": {
"projectApiKey": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"apiHost": "https://posthog.hss.element.io"
"apiHost": "https://posthog.element.io"
},
"features": {
"feature_spotlight": true

View File

@@ -1,6 +1,6 @@
{
"name": "element-web",
"version": "1.10.8",
"version": "1.10.13",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -30,29 +30,27 @@
"i18n": "matrix-gen-i18n",
"prunei18n": "matrix-prune-i18n",
"diff-i18n": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && matrix-gen-i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json",
"reskindex": "reskindex -h src/header",
"reskindex:watch": "reskindex -h src/header -w",
"reskindex:watch-react": "node scripts/yarn-sub.js matrix-react-sdk reskindex:watch",
"clean": "rimraf lib webapp",
"build": "yarn clean && yarn build:genfiles && yarn build:bundle",
"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 reskindex && yarn build:res && yarn build:jitsi",
"build:genfiles": "yarn build:res && yarn build:jitsi",
"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",
"dist": "scripts/package.sh",
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,element-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js\"",
"start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,element-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js --https\"",
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"",
"start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js --https\"",
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w",
"start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --mode development --disable-host-check --hot",
"lint": "yarn lint:types && yarn lint:js && yarn lint:style",
"lint:js": "eslint --max-warnings 0 src",
"lint:js-fix": "eslint --fix src",
"lint:types": "tsc --noEmit --jsx react",
"lint:style": "stylelint 'res/css/**/*.scss'",
"test": "jest"
"lint:style": "stylelint \"res/css/**/*.scss\"",
"test": "jest",
"coverage": "yarn test --coverage"
},
"dependencies": {
"@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz",
@@ -60,8 +58,8 @@
"gfm.css": "^1.1.2",
"jsrsasign": "^10.2.0",
"katex": "^0.12.0",
"matrix-js-sdk": "16.0.1",
"matrix-react-sdk": "3.42.1",
"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",
"prop-types": "^15.7.2",
"react": "17.0.2",
@@ -74,7 +72,6 @@
"@babel/eslint-parser": "^7.12.10",
"@babel/eslint-plugin": "^7.12.10",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-decorators": "^7.12.12",
"@babel/plugin-proposal-export-default-from": "^7.12.1",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
"@babel/plugin-proposal-numeric-separator": "^7.12.7",
@@ -87,7 +84,6 @@
"@babel/preset-typescript": "^7.12.7",
"@babel/register": "^7.12.10",
"@babel/runtime": "^7.12.5",
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
"@principalstudio/html-webpack-inject-preload": "^1.2.7",
"@sentry/webpack-plugin": "^1.18.1",
"@svgr/webpack": "^5.5.0",
@@ -124,13 +120,14 @@
"jest": "^26.6.3",
"jest-environment-jsdom-sixteen": "^1.0.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": "^1.2.3",
"matrix-mock-request": "^2.0.0",
"matrix-react-test-utils": "^0.2.3",
"matrix-web-i18n": "^1.2.0",
"mini-css-extract-plugin": "^0.12.0",
"minimist": "^1.2.5",
"minimist": "^1.2.6",
"mkdirp": "^1.0.4",
"modernizr": "^3.12.0",
"node-fetch": "^2.6.7",
@@ -146,7 +143,6 @@
"postcss-simple-vars": "^5.0.2",
"postcss-strip-inline-comments": "^0.1.5",
"raw-loader": "^4.0.2",
"react-refresh": "^0.10.0",
"rimraf": "^3.0.2",
"shell-escape": "^0.2.0",
"simple-proxy-agent": "^1.1.0",
@@ -196,6 +192,15 @@
"transformIgnorePatterns": [
"/node_modules/(?!matrix-js-sdk).+$",
"/node_modules/(?!matrix-react-sdk).+$"
]
],
"coverageReporters": [
"text-summary",
"lcov"
],
"testResultsProcessor": "jest-sonar-reporter"
},
"jestSonar": {
"reportPath": "coverage",
"sonar56x": true
}
}

View File

@@ -43,7 +43,7 @@ do
fi
done
./node_modules/matrix-js-sdk/release.sh -n -z "$orig_args"
./node_modules/matrix-js-sdk/release.sh -n "$orig_args"
release="${1#v}"
tag="v${release}"

View File

@@ -18,7 +18,6 @@
* ```
*/
class Optional {
static from(value) {
return value && Some.of(value) || None;

View File

@@ -102,7 +102,7 @@ function fetchAsSubject(endpoint) {
const contentLength = res.headers.get("content-length");
const context = contentLength ? { length: parseInt(contentLength) } : {};
const streamer = observeReadableStream(res.body, context, endpoint);
const streamer = observeReadableStream(res.body, context);
streamer.subscribe((value) => {
fetcher.next(value);
});

View File

@@ -1,4 +1,5 @@
<html>
<!doctype html>
<html lang="en">
<head>
<title>Rageshake decoder ring</title>
<script crossorigin src="https://unpkg.com/source-map@0.7.3/dist/source-map.js"></script>

View File

@@ -47,7 +47,6 @@ h1::after {
display: flex;
-webkit-justify-content: space-around;
-ms-flex-pack: distribute;
justify-content: space-around;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
@@ -173,7 +172,8 @@ we don't have an account and should hide them. No account == no guest account ei
<img src="welcome/images/logo.svg" alt="" class="mx_Logo"/>
</a>
<h1 class="mx_Header_title">_t("Welcome to Element")</h1>
<h4 class="mx_Header_subtitle">_t("Decentralised, encrypted chat &amp; collaboration powered by [matrix]")</h4>
<!-- XXX: Our translations system isn't smart enough to recognize variables in the HTML, so we manually do it -->
<h4 class="mx_Header_subtitle">_t("Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo")</h4>
<div class="mx_ButtonGroup">
<div class="mx_ButtonRow">
<a href="#/login" class="mx_ButtonParent mx_ButtonSignIn mx_Button_iconSignIn">

View File

@@ -1,153 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="793.322px" height="340.809px" viewBox="0 0 793.322 340.809" enable-background="new 0 0 793.322 340.809"
xml:space="preserve">
<path opacity="0.5" fill="#FFFFFF" d="M34.004,340.809H2c-1.104,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h32.004c1.104,0,2,0.896,2,2
v7.71c0,1.104-0.896,2-2,2h-21.13v317.386h21.13c1.104,0,2,0.896,2,2.001v7.712C36.004,339.913,35.108,340.809,34.004,340.809
L34.004,340.809z"/>
<path opacity="0.5" fill="#FFFFFF" d="M10.875,9.711v321.386h23.13v7.711H1.999V2.001h32.006v7.71H10.875z"/>
<path opacity="0.5" fill="#FFFFFF" d="M252.402,233.711h-32.993c-1.104,0-2-0.896-2-2v-68.073c0-3.949-0.154-7.722-0.457-11.213
c-0.289-3.282-1.074-6.153-2.332-8.53c-1.204-2.276-3.017-4.119-5.384-5.476c-2.393-1.362-5.775-2.056-10.042-2.056
c-4.238,0-7.674,0.798-10.213,2.371c-2.565,1.596-4.604,3.701-6.053,6.258c-1.498,2.643-2.51,5.694-3.013,9.067
c-0.526,3.513-0.793,7.125-0.793,10.741v66.91c0,1.104-0.896,2-2,2h-32.991c-1.104,0-2-0.896-2-2v-67.373
c0-3.435-0.078-6.964-0.228-10.485c-0.148-3.251-0.767-6.278-1.841-8.995c-1.018-2.571-2.667-4.584-5.047-6.153
c-2.372-1.552-6.029-2.341-10.865-2.341c-1.372,0-3.265,0.328-5.629,0.976c-2.28,0.624-4.536,1.826-6.705,3.577
c-2.152,1.732-4.036,4.306-5.605,7.655c-1.569,3.356-2.367,7.877-2.367,13.438v69.701c0,1.104-0.895,2-2,2H68.857
c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h31.13c1.104,0,2,0.896,2,1.999v11.007
c3.834-4.499,8.248-8.152,13.173-10.896c6.396-3.559,13.799-5.362,22.002-5.362c7.846,0,15.127,1.548,21.642,4.604
c5.794,2.722,10.424,7.26,13.791,13.52c3.449-4.362,7.833-8.306,13.071-11.752c6.422-4.228,14.102-6.371,22.824-6.371
c6.499,0,12.625,0.807,18.209,2.399c5.686,1.628,10.635,4.271,14.712,7.857c4.088,3.605,7.318,8.357,9.601,14.123
c2.25,5.719,3.391,12.649,3.391,20.604v80.384C254.402,232.815,253.507,233.711,252.402,233.711L252.402,233.711z"/>
<path opacity="0.5" fill="#FFFFFF" d="M99.988,111.595v16.264h0.463c4.338-6.191,9.563-10.998,15.684-14.406
c6.117-3.402,13.129-5.11,21.027-5.11c7.588,0,14.521,1.475,20.793,4.415c6.274,2.945,11.038,8.131,14.291,15.567
c3.56-5.265,8.4-9.913,14.521-13.94c6.117-4.025,13.358-6.042,21.724-6.042c6.351,0,12.234,0.776,17.66,2.325
c5.418,1.549,10.065,4.027,13.938,7.434c3.869,3.41,6.889,7.863,9.062,13.357c2.167,5.504,3.253,12.122,3.253,19.869v80.385H219.41
v-68.074c0-4.025-0.154-7.82-0.465-11.385c-0.313-3.56-1.161-6.656-2.555-9.293c-1.395-2.631-3.45-4.724-6.157-6.274
c-2.711-1.543-6.391-2.322-11.037-2.322s-8.403,0.896-11.269,2.671c-2.868,1.784-5.112,4.109-6.737,6.971
c-1.626,2.869-2.711,6.12-3.252,9.762c-0.545,3.638-0.814,7.318-0.814,11.035v66.91h-32.991v-67.375c0-3.562-0.081-7.087-0.23-10.57
c-0.158-3.487-0.814-6.7-1.978-9.645c-1.162-2.94-3.099-5.304-5.809-7.088c-2.711-1.775-6.699-2.671-11.965-2.671
c-1.551,0-3.603,0.349-6.156,1.048c-2.556,0.697-5.036,2.016-7.435,3.949c-2.404,1.938-4.454,4.726-6.158,8.363
c-1.705,3.642-2.556,8.402-2.556,14.287v69.701h-32.99V111.595H99.988z"/>
<path opacity="0.5" fill="#FFFFFF" d="M304.909,236.733c-5.883,0-11.46-0.729-16.574-2.163c-5.192-1.464-9.806-3.774-13.713-6.871
c-3.944-3.117-7.068-7.111-9.282-11.871c-2.205-4.733-3.324-10.412-3.324-16.876c0-7.13,1.293-13.117,3.846-17.797
c2.542-4.674,5.877-8.464,9.912-11.263c3.97-2.752,8.556-4.842,13.63-6.209c4.901-1.322,9.937-2.394,14.961-3.184
c4.986-0.775,9.949-1.404,14.754-1.872c4.679-0.452,8.88-1.139,12.489-2.039c3.412-0.854,6.118-2.09,8.042-3.672
c1.666-1.37,2.416-3.384,2.292-6.151c-0.002-3.289-0.502-5.816-1.492-7.595c-0.998-1.798-2.283-3.15-3.927-4.138
c-1.703-1.02-3.725-1.713-6.012-2.062c-2.47-0.37-5.146-0.557-7.947-0.557c-6.034,0-10.789,1.271-14.135,3.783
c-3.233,2.424-5.155,6.64-5.714,12.527c-0.098,1.026-0.961,1.812-1.992,1.812h-32.992c-0.552,0-1.079-0.229-1.457-0.629
c-0.376-0.402-0.572-0.941-0.54-1.491c0.485-8.073,2.55-14.894,6.142-20.272c3.548-5.331,8.147-9.682,13.661-12.931
c5.424-3.191,11.612-5.498,18.392-6.857c6.684-1.335,13.5-2.013,20.26-2.013c6.096,0,12.365,0.437,18.626,1.296
c6.377,0.88,12.285,2.622,17.562,5.177c5.376,2.604,9.845,6.29,13.282,10.951c3.498,4.744,5.271,11.048,5.271,18.731v62.494
c0,5.307,0.306,10.462,0.915,15.319c0.576,4.64,1.572,8.116,2.963,10.338c0.385,0.616,0.407,1.395,0.055,2.031
c-0.353,0.635-1.022,1.03-1.75,1.03h-33.457c-0.861,0-1.624-0.55-1.898-1.367c-0.646-1.941-1.176-3.939-1.572-5.936
c-0.141-0.696-0.267-1.402-0.38-2.12c-4.825,4.184-10.349,7.24-16.474,9.105C320.033,235.609,312.489,236.733,304.909,236.733
L304.909,236.733z M341.941,176.661c-0.809,0.409-1.676,0.768-2.596,1.074c-2.161,0.72-4.511,1.326-6.988,1.807
c-2.442,0.475-5.033,0.872-7.699,1.186c-2.631,0.311-5.251,0.697-7.784,1.146c-2.329,0.433-4.705,1.035-7.051,1.792
c-2.194,0.711-4.114,1.667-5.699,2.842c-1.531,1.128-2.785,2.587-3.731,4.335c-0.917,1.709-1.385,3.97-1.385,6.719
c0,2.598,0.465,4.778,1.385,6.481c0.928,1.722,2.142,3.035,3.716,4.018c1.644,1.026,3.601,1.757,5.816,2.17
c2.344,0.439,4.799,0.663,7.297,0.663c6.105,0,10.836-0.996,14.063-2.961c3.244-1.973,5.666-4.349,7.199-7.062
c1.568-2.78,2.542-5.62,2.892-8.436c0.376-3.019,0.565-5.436,0.565-7.187V176.661L341.941,176.661z"/>
<path opacity="0.5" fill="#FFFFFF" d="M273.544,129.255c3.405-5.113,7.744-9.215,13.012-12.316
c5.264-3.097,11.186-5.303,17.771-6.621c6.582-1.315,13.205-1.976,19.865-1.976c6.042,0,12.158,0.428,18.354,1.277
c6.195,0.855,11.85,2.522,16.962,4.997c5.111,2.477,9.292,5.926,12.546,10.338c3.253,4.414,4.879,10.262,4.879,17.543v62.494
c0,5.428,0.31,10.611,0.931,15.567c0.615,4.959,1.701,8.676,3.251,11.153H347.66c-0.621-1.86-1.126-3.755-1.511-5.693
c-0.39-1.933-0.661-3.908-0.813-5.923c-5.267,5.422-11.465,9.217-18.585,11.386c-7.127,2.163-14.407,3.251-21.842,3.251
c-5.733,0-11.077-0.698-16.033-2.09c-4.958-1.395-9.293-3.562-13.01-6.51c-3.718-2.938-6.622-6.656-8.713-11.147
s-3.138-9.84-3.138-16.033c0-6.813,1.199-12.43,3.604-16.84c2.399-4.417,5.495-7.939,9.295-10.575
c3.793-2.632,8.129-4.607,13.01-5.923c4.878-1.315,9.795-2.358,14.752-3.137c4.957-0.772,9.835-1.393,14.638-1.857
c4.801-0.466,9.062-1.164,12.779-2.093c3.718-0.929,6.658-2.282,8.829-4.065c2.165-1.781,3.172-4.375,3.02-7.785
c0-3.56-0.58-6.389-1.742-8.479c-1.161-2.09-2.711-3.719-4.646-4.88c-1.937-1.161-4.183-1.936-6.737-2.325
c-2.557-0.382-5.309-0.58-8.248-0.58c-6.506,0-11.617,1.395-15.335,4.183c-3.716,2.788-5.889,7.437-6.506,13.94h-32.991
C268.199,140.794,270.132,134.363,273.544,129.255z M338.713,175.838c-2.09,0.696-4.337,1.275-6.736,1.741
c-2.402,0.465-4.918,0.853-7.551,1.161c-2.635,0.313-5.268,0.698-7.899,1.163c-2.48,0.461-4.919,1.086-7.317,1.857
c-2.404,0.779-4.495,1.822-6.274,3.138c-1.784,1.317-3.216,2.985-4.3,4.994c-1.085,2.014-1.626,4.571-1.626,7.668
c0,2.94,0.541,5.422,1.626,7.431c1.084,2.017,2.558,3.604,4.416,4.765s4.025,1.976,6.507,2.438c2.475,0.466,5.031,0.698,7.665,0.698
c6.505,0,11.537-1.082,15.103-3.253c3.561-2.166,6.192-4.762,7.899-7.785c1.702-3.019,2.749-6.072,3.137-9.174
c0.384-3.097,0.58-5.576,0.58-7.434v-12.316C342.547,174.173,340.805,175.14,338.713,175.838z"/>
<path opacity="0.5" fill="#FFFFFF" d="M444.542,234.874c-5.187,0-10.173-0.361-14.823-1.069c-4.802-0.732-9.104-2.183-12.779-4.313
c-3.789-2.185-6.821-5.341-9.006-9.375c-2.163-3.986-3.26-9.232-3.26-15.59v-68.859h-17.981c-1.104,0-2-0.896-2-1.999v-22.073
c0-1.104,0.896-1.999,2-1.999h17.981V75.582c0-1.104,0.896-2,2-2h32.992c1.104,0,2,0.896,2,2v34.014h22.162c1.104,0,2,0.896,2,1.999
v22.073c0,1.104-0.896,1.999-2,1.999h-22.162v57.479c0,6.229,1.198,8.731,2.202,9.733c1.004,1.007,3.506,2.205,9.738,2.205
c1.804,0,3.542-0.076,5.161-0.225c1.604-0.144,3.174-0.367,4.669-0.665c0.13-0.026,0.261-0.039,0.391-0.039
c0.458,0,0.907,0.159,1.27,0.454c0.463,0.379,0.73,0.946,0.73,1.546v25.555c0,0.979-0.707,1.813-1.672,1.974
c-2.834,0.472-6.041,0.794-9.527,0.957C451.015,234.798,447.718,234.874,444.542,234.874L444.542,234.874z"/>
<path opacity="0.5" fill="#FFFFFF" d="M463.825,111.595v22.072h-24.161v59.479c0,5.573,0.928,9.292,2.788,11.149
c1.856,1.859,5.576,2.788,11.152,2.788c1.859,0,3.638-0.076,5.343-0.232c1.703-0.152,3.33-0.388,4.878-0.696v25.557
c-2.788,0.465-5.887,0.773-9.293,0.931c-3.407,0.149-6.737,0.23-9.99,0.23c-5.111,0-9.953-0.35-14.521-1.048
c-4.571-0.695-8.597-2.047-12.081-4.063c-3.486-2.011-6.236-4.88-8.248-8.597c-2.016-3.714-3.021-8.595-3.021-14.639v-70.859h-19.98
v-22.072h19.98V75.583h32.992v36.012H463.825z"/>
<path opacity="0.5" fill="#FFFFFF" d="M512.613,233.711h-32.991c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h31.366
c1.104,0,2,0.896,2,1.999v15.069c0.967-1.516,2.034-2.978,3.199-4.382c2.754-3.312,5.949-6.182,9.496-8.522
c3.545-2.332,7.385-4.169,11.415-5.462c4.056-1.298,8.327-1.954,12.691-1.954c2.341,0,4.953,0.418,7.766,1.243
c0.852,0.25,1.437,1.032,1.437,1.92v30.67c0,0.6-0.269,1.167-0.732,1.547c-0.361,0.296-0.808,0.452-1.265,0.452
c-0.133,0-0.265-0.013-0.398-0.039c-1.484-0.3-3.299-0.565-5.392-0.787c-2.098-0.224-4.136-0.339-6.062-0.339
c-5.706,0-10.572,0.95-14.467,2.823c-3.862,1.86-7.012,4.428-9.361,7.629c-2.389,3.263-4.115,7.12-5.127,11.47
c-1.043,4.479-1.574,9.409-1.574,14.647v54.132C514.613,232.815,513.717,233.711,512.613,233.711L512.613,233.711z"/>
<path opacity="0.5" fill="#FFFFFF" d="M510.988,111.595V133.9h0.465c1.546-3.72,3.636-7.163,6.272-10.341
c2.634-3.172,5.652-5.885,9.06-8.131c3.405-2.242,7.047-3.985,10.923-5.228c3.868-1.237,7.898-1.859,12.081-1.859
c2.168,0,4.566,0.39,7.202,1.163v30.67c-1.551-0.312-3.41-0.584-5.576-0.814c-2.17-0.233-4.26-0.35-6.274-0.35
c-6.041,0-11.152,1.01-15.332,3.021c-4.182,2.014-7.55,4.761-10.107,8.247c-2.555,3.487-4.379,7.55-5.462,12.198
c-1.083,4.645-1.625,9.682-1.625,15.102v54.133h-32.991V111.595H510.988z"/>
<path opacity="0.5" fill="#FFFFFF" d="M603.923,233.711H570.93c-1.104,0-2-0.896-2-2V111.594c0-1.104,0.896-1.999,2-1.999h32.994
c1.104,0,2,0.896,2,1.999v120.117C605.923,232.815,605.027,233.711,603.923,233.711L603.923,233.711z M603.923,95.006H570.93
c-1.104,0-2-0.896-2-1.999V65.825c0-1.104,0.896-2,2-2h32.994c1.104,0,2,0.896,2,2v27.182
C605.923,94.11,605.027,95.006,603.923,95.006L603.923,95.006z"/>
<path opacity="0.5" fill="#FFFFFF" d="M570.93,93.007V65.824h32.994v27.183H570.93z M603.924,111.595v120.117H570.93V111.595
H603.924z"/>
<path opacity="0.5" fill="#FFFFFF" d="M742.163,233.711h-37.64c-0.671,0-1.297-0.335-1.667-0.896l-23.426-35.352l-23.426,35.352
c-0.369,0.561-0.995,0.896-1.667,0.896h-36.938c-0.741,0-1.424-0.411-1.77-1.067c-0.345-0.654-0.3-1.449,0.118-2.061l42.435-62.055
l-38.71-55.793c-0.424-0.613-0.474-1.408-0.128-2.069c0.343-0.658,1.028-1.071,1.771-1.071h37.636c0.665,0,1.287,0.33,1.658,0.882
l19.477,28.893l19.255-28.884c0.372-0.556,0.996-0.891,1.665-0.891h36.475c0.746,0,1.43,0.415,1.776,1.078
c0.343,0.66,0.289,1.46-0.139,2.071l-38.69,55.082l43.578,62.744c0.424,0.61,0.474,1.408,0.128,2.066
C743.591,233.298,742.908,233.711,742.163,233.711L742.163,233.711z"/>
<path opacity="0.5" fill="#FFFFFF" d="M621.115,111.595h37.637l21.144,31.365l20.911-31.365h36.476l-39.496,56.226l44.377,63.892
h-37.64l-25.093-37.87l-25.094,37.87h-36.938l43.213-63.193L621.115,111.595z"/>
<path opacity="0.5" fill="#FFFFFF" d="M791.322,340.809h-32.008c-1.105,0-2-0.896-2-2v-7.712c0-1.105,0.896-2.001,2-2.001h21.13
V11.71h-21.13c-1.105,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h32.008c1.104,0,2,0.896,2,2v336.809
C793.322,339.913,792.426,340.809,791.322,340.809L791.322,340.809z"/>
<path opacity="0.5" fill="#FFFFFF" d="M782.443,331.097V9.711h-23.13v-7.71h32.008v336.807h-32.008v-7.711H782.443z"/>
<path d="M10.875,9.711v321.386h23.13v7.711H1.999V2.001h32.006v7.71H10.875z"/>
<path d="M99.988,111.595v16.264h0.463c4.338-6.191,9.563-10.998,15.684-14.406c6.117-3.402,13.129-5.11,21.027-5.11
c7.588,0,14.521,1.475,20.793,4.415c6.274,2.945,11.038,8.131,14.291,15.567c3.56-5.265,8.4-9.913,14.521-13.94
c6.117-4.025,13.358-6.042,21.724-6.042c6.351,0,12.234,0.776,17.66,2.325c5.418,1.549,10.065,4.027,13.938,7.434
c3.869,3.41,6.889,7.863,9.062,13.357c2.167,5.504,3.253,12.122,3.253,19.869v80.385H219.41v-68.074
c0-4.025-0.154-7.82-0.465-11.385c-0.313-3.56-1.161-6.656-2.555-9.293c-1.395-2.631-3.45-4.724-6.157-6.274
c-2.711-1.543-6.391-2.322-11.037-2.322s-8.403,0.896-11.269,2.671c-2.868,1.784-5.112,4.109-6.737,6.971
c-1.626,2.869-2.711,6.12-3.252,9.762c-0.545,3.638-0.814,7.318-0.814,11.035v66.91h-32.991v-67.375c0-3.562-0.081-7.087-0.23-10.57
c-0.158-3.487-0.814-6.7-1.978-9.645c-1.162-2.94-3.099-5.304-5.809-7.088c-2.711-1.775-6.699-2.671-11.965-2.671
c-1.551,0-3.603,0.349-6.156,1.048c-2.556,0.697-5.036,2.016-7.435,3.949c-2.404,1.938-4.454,4.726-6.158,8.363
c-1.705,3.642-2.556,8.402-2.556,14.287v69.701h-32.99V111.595H99.988z"/>
<path d="M273.544,129.255c3.405-5.113,7.744-9.215,13.012-12.316c5.264-3.097,11.186-5.303,17.771-6.621
c6.582-1.315,13.205-1.976,19.865-1.976c6.042,0,12.158,0.428,18.354,1.277c6.195,0.855,11.85,2.522,16.962,4.997
c5.111,2.477,9.292,5.926,12.546,10.338c3.253,4.414,4.879,10.262,4.879,17.543v62.494c0,5.428,0.31,10.611,0.931,15.567
c0.615,4.959,1.701,8.676,3.251,11.153H347.66c-0.621-1.86-1.126-3.755-1.511-5.693c-0.39-1.933-0.661-3.908-0.813-5.923
c-5.267,5.422-11.465,9.217-18.585,11.386c-7.127,2.163-14.407,3.251-21.842,3.251c-5.733,0-11.077-0.698-16.033-2.09
c-4.958-1.395-9.293-3.562-13.01-6.51c-3.718-2.938-6.622-6.656-8.713-11.147s-3.138-9.84-3.138-16.033
c0-6.813,1.199-12.43,3.604-16.84c2.399-4.417,5.495-7.939,9.295-10.575c3.793-2.632,8.129-4.607,13.01-5.923
c4.878-1.315,9.795-2.358,14.752-3.137c4.957-0.772,9.835-1.393,14.638-1.857c4.801-0.466,9.062-1.164,12.779-2.093
c3.718-0.929,6.658-2.282,8.829-4.065c2.165-1.781,3.172-4.375,3.02-7.785c0-3.56-0.58-6.389-1.742-8.479
c-1.161-2.09-2.711-3.719-4.646-4.88c-1.937-1.161-4.183-1.936-6.737-2.325c-2.557-0.382-5.309-0.58-8.248-0.58
c-6.506,0-11.617,1.395-15.335,4.183c-3.716,2.788-5.889,7.437-6.506,13.94h-32.991
C268.199,140.794,270.132,134.363,273.544,129.255z M338.713,175.838c-2.09,0.696-4.337,1.275-6.736,1.741
c-2.402,0.465-4.918,0.853-7.551,1.161c-2.635,0.313-5.268,0.698-7.899,1.163c-2.48,0.461-4.919,1.086-7.317,1.857
c-2.404,0.779-4.495,1.822-6.274,3.138c-1.784,1.317-3.216,2.985-4.3,4.994c-1.085,2.014-1.626,4.571-1.626,7.668
c0,2.94,0.541,5.422,1.626,7.431c1.084,2.017,2.558,3.604,4.416,4.765s4.025,1.976,6.507,2.438c2.475,0.466,5.031,0.698,7.665,0.698
c6.505,0,11.537-1.082,15.103-3.253c3.561-2.166,6.192-4.762,7.899-7.785c1.702-3.019,2.749-6.072,3.137-9.174
c0.384-3.097,0.58-5.576,0.58-7.434v-12.316C342.547,174.173,340.805,175.14,338.713,175.838z"/>
<path d="M463.825,111.595v22.072h-24.161v59.479c0,5.573,0.928,9.292,2.788,11.149c1.856,1.859,5.576,2.788,11.152,2.788
c1.859,0,3.638-0.076,5.343-0.232c1.703-0.152,3.33-0.388,4.878-0.696v25.557c-2.788,0.465-5.887,0.773-9.293,0.931
c-3.407,0.149-6.737,0.23-9.99,0.23c-5.111,0-9.953-0.35-14.521-1.048c-4.571-0.695-8.597-2.047-12.081-4.063
c-3.486-2.011-6.236-4.88-8.248-8.597c-2.016-3.714-3.021-8.595-3.021-14.639v-70.859h-19.98v-22.072h19.98V75.583h32.992v36.012
H463.825z"/>
<path d="M510.988,111.595V133.9h0.465c1.546-3.72,3.636-7.163,6.272-10.341c2.634-3.172,5.652-5.885,9.06-8.131
c3.405-2.242,7.047-3.985,10.923-5.228c3.868-1.237,7.898-1.859,12.081-1.859c2.168,0,4.566,0.39,7.202,1.163v30.67
c-1.551-0.312-3.41-0.584-5.576-0.814c-2.17-0.233-4.26-0.35-6.274-0.35c-6.041,0-11.152,1.01-15.332,3.021
c-4.182,2.014-7.55,4.761-10.107,8.247c-2.555,3.487-4.379,7.55-5.462,12.198c-1.083,4.645-1.625,9.682-1.625,15.102v54.133h-32.991
V111.595H510.988z"/>
<path d="M570.93,93.007V65.824h32.994v27.183H570.93z M603.924,111.595v120.117H570.93V111.595H603.924z"/>
<path d="M621.115,111.595h37.637l21.144,31.365l20.911-31.365h36.476l-39.496,56.226l44.377,63.892h-37.64l-25.093-37.87
l-25.094,37.87h-36.938l43.213-63.193L621.115,111.595z"/>
<path d="M782.443,331.097V9.711h-23.13v-7.71h32.008v336.807h-32.008v-7.711H782.443z"/>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -35,6 +35,7 @@ const INCLUDE_LANGS = [
{'value': 'ja', 'label': '日本語'},
{'value': 'kab', 'label': 'Taqbaylit'},
{'value': 'ko', 'label': '한국어'},
{'value': 'lo', 'label': 'ລາວ'},
{'value': 'lt', 'label': 'Lietuvių'},
{'value': 'lv', 'label': 'Latviešu'},
{'value': 'nb_NO', 'label': 'Norwegian Bokmål'},
@@ -232,8 +233,14 @@ function weblateToCounterpart(inTrs) {
if (keyParts.length === 2) {
let obj = outTrs[keyParts[0]];
if (obj === undefined) {
obj = {};
outTrs[keyParts[0]] = obj;
obj = outTrs[keyParts[0]] = {};
} else if (typeof obj === "string") {
// This is a transitional edge case if a string went from singular to pluralised and both still remain
// in the translation json file. Use the singular translation as `other` and merge pluralisation atop.
obj = outTrs[keyParts[0]] = {
"other": inTrs[key],
};
console.warn("Found entry in i18n file in both singular and pluralised form", keyParts[0]);
}
obj[keyParts[1]] = inTrs[key];
} else {

View File

@@ -1,7 +1,7 @@
#!/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.
@@ -23,9 +23,11 @@ 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))
@@ -57,10 +59,11 @@ def move_bundles(source, dest):
else:
renames[os.path.join(source, f)] = dst
for (src, dst) in renames.iteritems():
for (src, dst) in renames.items():
print ("Move %s -> %s" % (src, dst))
os.rename(src, dst)
class Deployer:
def __init__(self):
self.packages_path = "."
@@ -100,7 +103,7 @@ class Deployer:
print ("Extracted into: %s" % extracted_dir)
if self.symlink_paths:
for link_path, file_path in self.symlink_paths.iteritems():
for link_path, file_path in self.symlink_paths.items():
create_relative_symlink(
target=file_path,
linkname=os.path.join(extracted_dir, link_path)
@@ -139,6 +142,7 @@ class Deployer:
print ("Done")
return local_filename
if __name__ == "__main__":
parser = argparse.ArgumentParser("Deploy a Riot build on a web server.")
parser.add_argument(

View File

@@ -32,7 +32,6 @@ cd react-sdk
yarn link
yarn link matrix-js-sdk
yarn --network-timeout=100000 install
yarn reskindex
cd ../
echo "Setting up element-web with react-sdk and js-sdk packages"

View File

@@ -1,107 +0,0 @@
#!/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
yarn reskindex
popd
yarn link matrix-react-sdk
##############################
# Link the reskindex binary in place: if we used `yarn link`,
# Yarn would do this for us, but we don't because we'd have
# to define the Yarn binary prefix somewhere so it could put the
# intermediate symlinks there. Instead, we do it ourselves.
mkdir -p node_modules/.bin
ln -sfv ../matrix-react-sdk/scripts/reskindex.js node_modules/.bin/reskindex

78
scripts/fetchdep.sh Executable file
View File

@@ -0,0 +1,78 @@
#!/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

@@ -4,7 +4,7 @@
# these dependencies are git checkouts.
# Since the deps are fetched from git, we can rev-parse
REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD)
JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD)
REACT_SHA=$(git -C node_modules/matrix-react-sdk rev-parse --short=12 HEAD)
JSSDK_SHA=$(git -C node_modules/matrix-js-sdk rev-parse --short=12 HEAD)
VECTOR_SHA=$(git rev-parse --short=12 HEAD) # use the ACTUAL SHA rather than assume develop
echo $VECTOR_SHA-react-$REACT_SHA-js-$JSSDK_SHA

49
scripts/layered.sh Executable file
View File

@@ -0,0 +1,49 @@
#!/bin/bash
set -x
# Creates a layered environment with the full repo for the app and SDKs cloned
# and linked. This gives an element-web dev environment ready to build with
# matching branches of react-sdk's dependencies so that changes can be tested
# in element-web.
# Note that this style is different from the recommended developer setup: this
# file nests js-sdk and matrix-react-sdk inside element-web, while the local
# development setup places them all at the same level. We are nesting them here
# because some CI systems do not allow moving to a directory above the checkout
# for the primary repo (element-web in this case).
# Install dependencies, as we'll be using fetchdep.sh from matrix-react-sdk
yarn install --pure-lockfile
# Pass appropriate repo to fetchdep.sh
export PR_ORG=vector-im
export PR_REPO=element-web
# Set up the js-sdk first
node_modules/matrix-react-sdk/scripts/fetchdep.sh matrix-org matrix-js-sdk
pushd matrix-js-sdk
yarn link
yarn install --pure-lockfile
popd
# Also set up matrix-analytics-events so we get the latest from
# the main branch or a branch with matching name
node_modules/matrix-react-sdk/scripts/fetchdep.sh matrix-org matrix-analytics-events main
pushd matrix-analytics-events
yarn link
yarn install --pure-lockfile
popd
# Now set up the react-sdk
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 install --pure-lockfile
popd
# Link the layers into element-web
yarn link matrix-js-sdk
yarn link matrix-react-sdk

View File

@@ -1,45 +1,40 @@
#!/usr/bin/env python
#
# auto-deploy script for https://develop.element.io
#
# 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.
#
# 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.
# Requires the following python packages:
#
# - requests
# - flask
#
# - python-github-webhook
from __future__ import print_function
import json, requests, tarfile, argparse, os, errno
import argparse
import os
import errno
import time
import traceback
from urlparse import urljoin
import glob
import re
import shutil
import threading
from Queue import Queue
from flask import Flask, jsonify, request, abort
import glob
from io import BytesIO
from urllib.request import urlopen
from zipfile import ZipFile
from github_webhook import Webhook
from flask import Flask, abort
from deploy import Deployer, DeployException
app = Flask(__name__)
webhook = Webhook(app, endpoint="/")
deployer = None
arg_extract_path = None
arg_symlink = None
arg_webhook_token = None
arg_api_token = None
workQueue = Queue()
def create_symlink(source, linkname):
def create_symlink(source: str, linkname: str):
try:
os.symlink(source, linkname)
except OSError, e:
except OSError as e:
if e.errno == errno.EEXIST:
# atomic modification
os.symlink(source, linkname + ".tmp")
@@ -47,118 +42,43 @@ def create_symlink(source, 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)
@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")
@webhook.hook(event_type="workflow_run")
def on_deployment(payload: dict):
repository = payload.get("repository")
if repository is None:
abort(400, "No 'repository' specified")
return
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")
workflow = payload.get("workflow")
if repository is None:
abort(400, "No 'workflow' specified")
return
if event == 'ping':
print("Got ping request - responding")
return jsonify({'response': 'pong!'})
if event != 'build.finished':
print("Rejecting '%s' event")
abort(400, "Unrecognised event")
request_id = payload.get("requestID")
if request_id is None:
abort(400, "No 'request_id' specified")
return
build_obj = incoming_json.get("build")
if build_obj is None:
abort(400, "No 'build' object")
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")
return
build_url = build_obj.get('url')
if build_url is None:
abort(400, "build has no url")
if arg_github_workflow is not None and workflow != arg_github_workflow:
print("Denying poke for incorrect workflow: %s" % (workflow,))
abort(400, "Incorrect workflow")
return
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")
artifact_url = payload.get("data", {}).get("url")
if artifact_url is None:
abort(400, "No 'data.url' specified")
return
build_num = build_obj.get('number')
if build_num is None:
abort(400, "build has no number")
return
deploy_artifact(artifact_url, request_id)
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:
@@ -166,58 +86,42 @@ def deploy_buildkite_artifact(artifact, pipeline_name, build_num):
# 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, "%s-#%s" % (pipeline_name, build_num))
try:
extracted_dir = deploy_tarball(artifact_obj, build_dir)
except DeployException as e:
traceback.print_exc()
abort(400, e.message)
build_dir = os.path.join(arg_extract_path, "gha-%s" % (request_id,))
create_symlink(source=extracted_dir, linkname=arg_symlink)
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."
)
# We have already deployed this, nop
return
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)
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)
except DeployException as e:
traceback.print_exc()
abort(400, str(e))
finally:
if deployer.should_clean:
os.remove(os.path.join(build_dir, name))
if __name__ == "__main__":
parser = argparse.ArgumentParser("Runs a Vector redeployment server.")
parser = argparse.ArgumentParser("Runs an Element redeployment server.")
parser.add_argument(
"-p", "--port", dest="port", default=4000, type=int, help=(
"The port to listen on for requests from Jenkins."
"The port to listen on for redeployment requests."
)
)
parser.add_argument(
"-e", "--extract", dest="extract", default="./extracted", help=(
"-e", "--extract", dest="extract", default="./extracted", type=str, help=(
"The location to extract .tar.gz files to."
)
)
parser.add_argument(
"-b", "--bundles-dir", dest="bundles_dir", help=(
"-b", "--bundles-dir", dest="bundles_dir", type=str, 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'."
@@ -229,7 +133,7 @@ if __name__ == "__main__":
)
)
parser.add_argument(
"-s", "--symlink", dest="symlink", default="./latest", help=(
"-s", "--symlink", dest="symlink", default="./latest", type=str, 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."
@@ -238,71 +142,65 @@ if __name__ == "__main__":
# --include ../../config.json ./localhost.json homepages/*
parser.add_argument(
"--include", nargs='*', default='./config*.json', help=(
"--include", nargs='*', default='./config*.json', type=str, 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", help=(
"Don't start an HTTP listener. Instead download a build from Jenkins \
immediately."
"--test", dest="tarball_uri", type=str, help=(
"Don't start an HTTP listener. Instead download a build from this URL immediately."
),
)
parser.add_argument(
"--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."
"--webhook-token", dest="webhook_token", type=str, help=(
"Only accept pokes signed with this github token."
), 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 buildkite org
# and only accept builds / artifacts from a specific github org
parser.add_argument(
"--org", dest="buildkite_org", help=(
"Lock down to this buildkite org"
"--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"
)
)
args = parser.parse_args()
arg_extract_path = args.extract
arg_symlink = args.symlink
arg_webbook_token = args.webhook_token
arg_api_token = args.api_token
arg_buildkite_org = args.buildkite_org
arg_github_org = args.github_org
arg_github_workflow = args.github_workflow
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
for include in args.include:
for include in args.include.split(" "):
deployer.symlink_paths.update({ os.path.basename(pth): pth for pth in glob.iglob(include) })
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 "",
arg_symlink,
deployer.symlink_paths,
)
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,
)
fred = threading.Thread(target=worker_thread)
fred.daemon = True
fred.start()
app.run(port=args.port, debug=False)
)
app.run(port=args.port, debug=False)

View File

@@ -1,22 +0,0 @@
const path = require('path');
const child_process = require('child_process');
const moduleName = process.argv[2];
if (!moduleName) {
console.error("Expected module name");
process.exit(1);
}
const argString = process.argv.length > 3 ? process.argv.slice(3).join(" ") : "";
if (!argString) {
console.error("Expected an yarn argument string to use");
process.exit(1);
}
const modulePath = path.dirname(require.resolve(`${moduleName}/package.json`));
child_process.execSync("yarn " + argString, {
env: process.env,
cwd: modulePath,
stdio: ['inherit', 'inherit', 'inherit'],
});

14
sonar-project.properties Normal file
View File

@@ -0,0 +1,14 @@
sonar.projectKey=element-web
sonar.organization=new_vector_ltd_organization
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
sonar.sources=src,res
sonar.tests=test
sonar.exclusions=__mocks__,docs,element.io,nginx
sonar.typescript.tsconfigPath=./tsconfig.json
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.coverage.exclusions=test/**/*,res/**/*
sonar.testExecutionReportPaths=coverage/test-report.xml

View File

@@ -1,34 +0,0 @@
/*
Copyright 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2019 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 EmbeddedPage from 'matrix-react-sdk/src/components/structures/EmbeddedPage';
import sanitizeHtml from 'sanitize-html';
import { _t } from 'matrix-react-sdk/src/languageHandler';
export default class VectorEmbeddedPage extends EmbeddedPage {
static replaces = 'EmbeddedPage';
// we're overriding the base component here, for Element-specific tweaks
translate(s: string) {
s = sanitizeHtml(_t(s));
// ugly fix for https://github.com/vector-im/element-web/issues/4243
// eslint-disable-next-line max-len
s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noreferrer noopener"><img width="79" height="34" alt="Matrix" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>');
return s;
}
}

View File

@@ -44,6 +44,4 @@ const VectorAuthFooter = () => {
);
};
VectorAuthFooter.replaces = 'AuthFooter';
export default VectorAuthFooter;

View File

@@ -19,9 +19,7 @@ import React from 'react';
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
export default class VectorAuthHeaderLogo extends React.PureComponent {
static replaces = 'AuthHeaderLogo';
render() {
public render() {
const brandingConfig = SdkConfig.getObject("branding");
const logoUrl = brandingConfig?.get("auth_header_logo_url") ?? "themes/element/img/logos/element-logo.svg";

View File

@@ -15,16 +15,15 @@ limitations under the License.
*/
import React, { CSSProperties } from 'react';
import * as sdk from 'matrix-react-sdk/src/index';
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
export default class VectorAuthPage extends React.PureComponent {
static replaces = 'AuthPage';
import VectorAuthFooter from "./VectorAuthFooter";
static welcomeBackgroundUrl;
export default class VectorAuthPage extends React.PureComponent {
private static welcomeBackgroundUrl;
// cache the url as a static to prevent it changing without refreshing
static getWelcomeBackgroundUrl() {
private static getWelcomeBackgroundUrl() {
if (VectorAuthPage.welcomeBackgroundUrl) return VectorAuthPage.welcomeBackgroundUrl;
const brandingConfig = SdkConfig.getObject("branding");
@@ -43,9 +42,7 @@ export default class VectorAuthPage extends React.PureComponent {
return VectorAuthPage.welcomeBackgroundUrl;
}
render() {
const AuthFooter = sdk.getComponent('auth.AuthFooter');
public render() {
const pageStyle = {
background: `center/cover fixed url(${VectorAuthPage.getWelcomeBackgroundUrl()})`,
};
@@ -80,7 +77,7 @@ export default class VectorAuthPage extends React.PureComponent {
{ this.props.children }
</div>
</div>
<AuthFooter />
<VectorAuthFooter />
</div>
);
}

View File

@@ -1,15 +0,0 @@
/*
Copyright 2018 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.
*/

4
src/i18n/strings/bn.json Normal file
View File

@@ -0,0 +1,4 @@
{
"Dismiss": "সরাও",
"Open": "খোলা"
}

View File

@@ -1 +1,3 @@
{}
{
"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।"
}

View File

@@ -36,5 +36,6 @@
"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"
"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

@@ -36,5 +36,6 @@
"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"
"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

@@ -26,7 +26,7 @@
"Go to element.io": "Go to element.io",
"Failed to start": "Failed to start",
"Welcome to Element": "Welcome to Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralised, encrypted chat &amp; collaboration powered by [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo",
"Sign In": "Sign In",
"Create Account": "Create Account",
"Explore rooms": "Explore rooms"

View File

@@ -1,11 +1,9 @@
{
"Dismiss": "Rezigni",
"powered by Matrix": "povigita per Matrix",
"Unknown device": "Nekonata aparato",
"You need to be using HTTPS to place a screen-sharing call.": "Vi devas uzi HTTPS por ekranvidadi.",
"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",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Malcentra, ĉifrita babilado &amp; kunlaboro povigita per [matrix]",
"Sign In": "Saluti",
"Sign In": "Ensaluti",
"Create Account": "Krei konton",
"Explore rooms": "Esplori ĉambrojn",
"Unexpected error preparing the app. See console for details.": "Neatendita eraro okazis dum la preparado de la aplikaĵo. Rigardu la konzolon por detaloj.",
@@ -13,16 +11,13 @@
"Invalid configuration: no default server specified.": "Nevalida agordo: neniu implicita servilo estas specifita.",
"The message from the parser is: %(message)s": "La mesaĝo el la analizilo estas: %(message)s",
"Invalid JSON": "Nevalida JSON",
"Go to your browser to complete Sign In": "Iru al via foliumilo por fini la saluton",
"Open user settings": "Malfermi agordojn de uzanto",
"Go to your browser to complete Sign In": "Iru al via retumilo por finpretigi la ensaluton",
"Unable to load config file: please refresh the page to try again.": "Ne povas enlegi agordan dosieron: bonvolu reprovi per aktualigo de la paĝo.",
"Previous/next recently visited room or community": "Antaŭa/sekva freŝe vizitita ĉambro aŭ komunumo",
"Missing indexeddb worker script!": "Mankas fonskripto «indexeddb»!",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s labortabla (%(platformName)s)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Nesubtenata foliumilo",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Bonvolu instali foliumilon <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, aŭ <safariLink>Safari</safariLink>, por la plej bona sperto.",
"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.": "Vi povas daŭre uzadi vian nunan foliumilon, sed iuj (eĉ ĉiuj) funkcioj eble ne funkcios, kaj la aspekto de la aplikaĵo eble ne estos ĝusta.",
"Unsupported browser": "Nesubtenata retumilo",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Bonvolu instali retumilon <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, aŭ <safariLink>Safari</safariLink>, por la plej bona sperto.",
"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.": "Vi povas daŭre uzi vian nunan foliumilon, sed iuj (eĉ ĉiuj) funkcioj eble ne funkciu, kaj la aspekto de la aplikaĵo eble ne estu ĝusta.",
"I understand the risks and wish to continue": "Mi komprenas la riskon kaj volas pluiĝi",
"Go to element.io": "Iri al element.io",
"Failed to start": "Malsukcesis starti",
@@ -30,9 +25,9 @@
"Open": "Malfermi",
"Your Element is misconfigured": "Via Elemento estas misagordita",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Via agordaro de Elemento enhavas nevalidajn datumojn de JSON. Bonvolu korekti la problemon kaj aktualigi la paĝon.",
"Your browser can't run %(brand)s": "Via foliumilo ne povas ruli %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s uzas specialajn funkciojn de foliumilo, kiujn via nuna foliumilo ne subtenas.",
"Your browser can't run %(brand)s": "Via retumilo ne povas ruli %(brand)s",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s uzas specialajn funkciojn de retumilo, kiujn via nuna retumilo ne subtenas.",
"Powered by Matrix": "Povigata de Matrix",
"Use %(brand)s on mobile": "Uzi %(brand)s telefone",
"Switch to space by number": "Baskuli al aro laŭ numero"
"Use %(brand)s on mobile": "Uzi %(brand)s poŝtelefone",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Malcentralizita kaj ĉifrita babilejo; kunlaboro danke al $matrixLogo"
}

View File

@@ -34,5 +34,6 @@
"%(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"
"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

@@ -36,5 +36,6 @@
"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"
"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

@@ -36,5 +36,6 @@
"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é"
"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

@@ -36,5 +36,6 @@
"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"
"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

@@ -11,7 +11,7 @@
"Open user settings": "פתח הגדרות משתמש",
"Go to your browser to complete Sign In": "עבור לדפדפן להמשך ההתחברות",
"Explore rooms": "גלה חדרים",
"Create Account": "יצירת חשבון",
"Create Account": "משתמש חדש",
"Sign In": "התחברות",
"Previous/next recently visited room or community": "הבא\\קודם חדרים וקהילות שביקרתם לאחרונה",
"Open": "פתח",

View File

@@ -7,5 +7,28 @@
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "[मैट्रिक्स] द्वारा संचालित विकेंद्रीकृत, एन्क्रिप्टेड चैट और सहयोगिता",
"Sign In": "साइन करना",
"Create Account": "खाता बनाएं",
"Explore rooms": "रूम का अन्वेषण करें"
"Explore rooms": "रूम का अन्वेषण करें",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s का डेस्कटॉप (%(platformName)s)",
"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 में से कोई एक निर्दिष्ट कर सकता है।",
"Failed to start": "प्रारंभ करने में विफल",
"Go to element.io": "element.io पर जाएं",
"I understand the risks and wish to continue": "मैं जोखिमों को समझता हूं और जारी रखना चाहता हूं",
"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.": "आप अपने वर्तमान ब्राउज़र का उपयोग जारी रख सकते हैं, लेकिन हो सकता है कि कुछ या सभी सुविधाएं काम न करें और एप्लिकेशन का रंगरूप गलत हो सकता है।",
"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> इंस्टॉल करें।",
"%(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 का प्रयोग करें",
"Unsupported browser": "असमर्थित ब्राउज़र",
"Powered by Matrix": "मैट्रिक्स द्वारा संचालित",
"Go to your browser to complete Sign In": "साइन इन पूरा करने के लिए अपने ब्राउज़र पर जाएं",
"Open": "खुला",
"Download Completed": "डाउनलोड सम्पन्न हुआ",
"Unexpected error preparing the app. See console for details.": "ऐप्लिकेशन तैयार करने में अनपेक्षित गड़बड़ी हुई. विवरण के लिए कंसोल देखें।",
"Unable to load config file: please refresh the page to try again.": "कॉन्फ़िग फ़ाइल लोड करने में असमर्थ: कृपया पुन: प्रयास करने के लिए पृष्ठ को रीफ़्रेश करें।",
"Invalid JSON": "अमान्य JSON",
"The message from the parser is: %(message)s": "पार्सर का संदेश है: %(message)s",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "आपके एलीमेंट कॉन्फ़िगरेशन में अमान्य JSON है. कृपया समस्या को ठीक करें और पृष्ठ को पुनः लोड करें।",
"Your Element is misconfigured": "आपका तत्व गलत कॉन्फ़िगर किया गया है",
"Invalid configuration: no default server specified.": "अमान्य कॉन्फ़िगरेशन: कोई डिफ़ॉल्ट सर्वर निर्दिष्ट नहीं है।"
}

View File

@@ -36,5 +36,6 @@
"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"
"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"
}

16
src/i18n/strings/hy.json Normal file
View File

@@ -0,0 +1,16 @@
{
"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",
"Your browser can't run %(brand)s": "Ձեր բրաուզերը չի թողարկում %(brand)s",
"Unsupported browser": "Չհամապատասխանող բրաուզեր",
"Dismiss": "Հեռացնել",
"Open": "Բացել",
"Unable to load config file: please refresh the page to try again.": "Ֆայլի ներմուծման սխալ․ խնդրում ենք թարմացնել էջը և նորից փորձել։",
"Invalid JSON": "Չաշխատող JSON",
"Your Element is misconfigured": "Ձեր Element֊ը սխալ է կարգավորված"
}

View File

@@ -36,5 +36,6 @@
"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"
"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

@@ -1,40 +1,33 @@
{
"powered by Matrix": "keyrt með Matrix",
"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.",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Dulritað dreifvinnsluspjall og samvinnutól keyrt með [matrix]",
"Open": "Opna",
"Unsupported browser": "Óstuddur vafri",
"Your browser can't run %(brand)s": "Vafri þinn geta ekki keyrt upp %(brand)s",
"Your browser can't run %(brand)s": "Vafrinn þinn getur ekki keyrt %(brand)s",
"Sign In": "Skrá inn",
"Create Account": "Búa til notandaaðgang",
"Explore rooms": "Kanna spjallrásir",
"Missing indexeddb worker script!": "Að vanta indexeddb vinnumaður tölvuhandrit!",
"The message from the parser is: %(message)s": "Skilaboðið frá þáttaranum er %(message)s",
"Invalid JSON": "Ógilt JSON",
"Download Completed": "Niðurhali lokið.",
"Download Completed": "Niðurhali lokið",
"%(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.": "vinsamlegast setja upp <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eða <safariLink>Safari</safariLink> fyrir besta reynsluna.",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Þú ættir að setja upp <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eða <safariLink>Safari</safariLink> til að fá sem besta útkomu.",
"I understand the risks and wish to continue": "Ég skil áhættuna og óska að halda áfram",
"Go to element.io": "Farðu á element.io",
"Go to element.io": "Fara á element.io",
"Unexpected error preparing the app. See console for details.": "Óvænt villa við undirbúning forritsins. Sjá nánar á stjórnskjá.",
"Failed to start": "Mistókst að ræsa",
"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.": "Þú getur haldið áfram að nota núverandi vafra, en sumar eða allir eiginleikar virka ekki og útlit og tilfinning forritsins geta verið röng.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s notar háþróaða vafraeiginleika sem eru ekki studdir af núverandi vafra þínum.",
"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.": "Þú getur haldið áfram að nota núverandi vafra, en sumir eða allir eiginleikar virka mögulega ekki rétt, auk þess sem útlit og hegðun forritsins geta verið röng.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s notar háþróaða vafraeiginleika sem eru ekki studdir af vafranum þínum.",
"Powered by Matrix": "Keyrt með Matrix",
"Go to your browser to complete Sign In": "Farðu í vafrann þinn til að ljúka innskráningu",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop fyrir vinnutölvur (%(platformName)s)",
"Previous/next recently visited room or community": "Fyrra/næsta nýlega heimsótt herbergi eða samfélag",
"Open user settings": "Opna notandastillingar",
"Unable to load config file: please refresh the page to try again.": "Ekki er hægt að hlaða stillingaskrána: endurnýjaðu síðuna til að reyna aftur.",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element-stillingar þínar innihalda ógilt JSON. Leiðréttu vandamálið og endurlestu síðuna.",
"Your Element is misconfigured": "Element-tilvikið þitt er rangt stillt",
"Invalid configuration: no default server specified.": "Ógild uppsetning: enginn sjálfgefinn vefþjónn tilgreindur.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ógild uppsetning: getur aðeins tilgreint eitt af default_server_config, default_server_name eða default_hs_url.",
"Use %(brand)s on mobile": "Nota %(brand)s í síma",
"Next recently visited room or community": "Næsta nýlega heimsótt rými eða samfélag",
"Previous recently visited room or community": "Fyrra nýlega heimsótt rými eða samfélag",
"Switch to space by number": "Skipta yfir í rými með númeri"
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Dreifstýrt, dulritað spjall og samskipti keyrt með $matrixLogo"
}

View File

@@ -36,5 +36,6 @@
"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"
"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

@@ -1,3 +1,33 @@
{
"Open": "ເປີດ"
"Open": "ເປີດ",
"Explore rooms": "ສຳຫຼວດບັນດາຫ້ອງ",
"Create Account": "ສ້າງບັນຊີ",
"Sign In": "ເຂົ້າສູ່ລະບົບ",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "ການສົນທະນາແບບເຂົ້າລະຫັດ ແລະກະຈ່າຍການຄຸ້ມຄອງ &amp; ການຮ່ວມມື້ ແລະສະໜັບສະໜູນໂດຍ $matrixLogo",
"Welcome to Element": "ຍິນດີຕ້ອນຮັບ",
"Failed to start": "ບໍ່ສາມາດເປີດໄດ້",
"Go to element.io": "ໄປຫາ element.io",
"I understand the risks and wish to continue": "ຂ້າພະເຈົ້າເຂົ້າໃຈຄວາມສ່ຽງ ແລະຢາກສືບຕໍ່",
"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.": "ທ່ານສາມາດສືບຕໍ່ນຳໃຊ້ບຣາວເຊີປັດຈຸບັນຂອງເຈົ້າໄດ້, ແຕ່ບາງຄຸນສົມບັດ ຫຼື ທັງໝົດອາດຈະບໍ່ເຮັດວຽກ ແລະ ລັກສະນະ ແລະ ຄວາມຮູ້ສຶກຂອງແອັບພລິເຄຊັນອາດບໍ່ຖືກຕ້ອງ.",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "ກະລຸນາຕິດຕັ້ງ <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> ສຳລັບປະສົບການທີ່ດີທີ່ສຸດ.",
"%(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 ໄດ້",
"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": "ໄປທີ່ໜ້າເວັບຂອງທ່ານເພື່ອເຂົ້າສູ່ລະບົບ",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s ຕັ້ງໂຕະ (%(platformName)s)",
"Dismiss": "ຍົກເລີກ",
"Download Completed": "ດາວໂຫຼດສຳເລັດແລ້ວ",
"Unexpected error preparing the app. See console for details.": "ເກີດຄວາມຜິດພາດທີ່ບໍ່ຄາດຄິດໃນການກະກຽມແອັບຯ. ເບິ່ງ console ສໍາລັບລາຍລະອຽດ.",
"Unable to load config file: please refresh the page to try again.": "ບໍ່ສາມາດໂຫຼດໄຟລ໌ config ໄດ້: ກະລຸນາໂຫຼດໜ້ານີ້ຄືນໃໝ່ເພື່ອລອງອີກຄັ້ງ.",
"Invalid JSON": "JSON ບໍ່ຖືກຕ້ອງ",
"The message from the parser is: %(message)s": "ຂໍ້ຄວາມຈາກຕົວປ່ຽນແມ່ນ: %(message)s",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "ການຕັ້ງຄ່າແອັບ Element ຂອງທ່ານມີຄ່າ JSON ທີ່ບໍ່ຖືກຕ້ອງ. ກະລຸນາແກ້ໄຂບັນຫາ ແລະໂຫຼດໜ້ານີ້ຄືນໃໝ່.",
"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."
}

View File

@@ -1 +1,33 @@
{}
{
"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> इंस्टॉल करें।",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s उन्नत ब्राउज़र सुविधाओं का उपयोग करते हैं जो आपके वर्तमान ब्राउज़र द्वारा समर्थित नहीं हैं।",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s का डेस्कटॉप (%(platformName)s)",
"Sign In": "साइन करना",
"Explore rooms": "रूम का अन्वेषण करें",
"Create Account": "खाता बनाएं",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "विकेन्द्रीकृत, एन्क्रिप्टेड च्याट र $matrixLogo द्वारा संचालित सहयोग",
"Welcome to Element": "Element में आपका स्वागत है",
"Failed to start": "प्रारंभ करने में विफल",
"Go to element.io": "element.io पर जाएं",
"I understand the risks and wish to continue": "मैं जोखिमों को समझता हूं और जारी रखना चाहता हूं",
"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.": "आप अपने वर्तमान ब्राउज़र का उपयोग जारी रख सकते हैं, लेकिन हो सकता है कि कुछ या सभी सुविधाएं काम न करें और एप्लिकेशन का रंगरूप गलत हो सकता है।",
"Your browser can't run %(brand)s": "आपका ब्राउज़र %(brand)s को नहीं चला सकता",
"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": "खारिज",
"Open": "खुला",
"Download Completed": "डाउनलोड सम्पन्न हुआ",
"Unexpected error preparing the app. See console for details.": "ऐप्लिकेशन तैयार करने में अनपेक्षित गड़बड़ी हुई. विवरण के लिए कंसोल देखें।",
"Unable to load config file: please refresh the page to try again.": "कॉन्फ़िग फ़ाइल लोड करने में असमर्थ: कृपया पुन: प्रयास करने के लिए पृष्ठ को रीफ़्रेश करें।",
"Invalid JSON": "अमान्य JSON",
"The message from the parser is: %(message)s": "पार्सर का संदेश है: %(message)s",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "आपके एलीमेंट कॉन्फ़िगरेशन में अमान्य JSON है. कृपया समस्या को ठीक करें और पृष्ठ को पुनः लोड करें।",
"Your Element is misconfigured": "आपका तत्व गलत कॉन्फ़िगर किया गया है",
"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, या default_hs_url में से कोई एक निर्दिष्ट कर सकता है।"
}

View File

@@ -7,7 +7,7 @@
"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 verkennen",
"Explore rooms": "Kamers ontdekken",
"Unexpected error preparing the app. See console for details.": "Er is een onverwachte fout opgetreden bij het voorbereiden van de app. Zie de console voor details.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuratiefout: kan slechts één van default_server_config, default_server_name, of default_hs_url opgeven.",
"Invalid configuration: no default server specified.": "Configuratie ongeldig: geen standaardserver opgegeven.",
@@ -36,5 +36,6 @@
"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"
"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,8 @@
{
"Dismiss": "Dispensar",
"powered by Matrix": "oferecido por Matrix",
"Unknown device": "Dispositivo desconhecido",
"You need to be using HTTPS to place a screen-sharing call.": "Você precisa estar usando HTTPS para começar uma chamada de compartilhamento de tela.",
"Welcome to Element": "Boas-vindas a Element",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat &amp; colaboração descentralizados e encriptados powered by [matrix]",
"Sign In": "Fazer signin",
"Create Account": "Criar Conta",
"Explore rooms": "Explorar salas",
@@ -15,7 +13,6 @@
"Invalid configuration: no default server specified.": "Configuração inválida: nenhum servidor default especificado.",
"Unable to load config file: please refresh the page to try again.": "Incapaz de carregar arquivo de config: por favor atualize a página para tentar de novo.",
"Download Completed": "Download Completado",
"Open user settings": "Abrir configurações de usuária(o)",
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
"Unsupported browser": "Browser insuportado",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor instale <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, ou <safariLink>Safari</safariLink> para a melhor experiência.",
@@ -23,9 +20,7 @@
"I understand the risks and wish to continue": "Eu entendo os riscos e desejo continuar",
"Go to element.io": "Ir para element.io",
"Failed to start": "Falha para iniciar",
"Missing indexeddb worker script!": "Worker script indexeddb faltando!",
"Open": "Abrir",
"Previous/next recently visited room or community": "Anterior/próxima sala ou comunidade visitada recentemente",
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
"Go to your browser to complete Sign In": "Vá para seu browser para completar Sign In",
"Your Element is misconfigured": "Seu Element está malconfigurado",
@@ -34,7 +29,5 @@
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funcionalidade de browser avançada que não é suportada por seu browser atual.",
"Powered by Matrix": "Powered by Matrix",
"Use %(brand)s on mobile": "Usar %(brand)s em celular",
"Switch to space by number": "Trocar para espaço por número",
"Next recently visited room or community": "Próxima sala ou comunidade recentemente visitada",
"Previous recently visited room or community": "Anterior sala ou comunidade recentemente visitada"
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Chat descentralizado e encriptado & colaboração, powered by $matrixLogo"
}

View File

@@ -12,7 +12,7 @@
"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.": "Неверная конфигурация: сервер по умолчанию не указан.",
"The message from the parser is: %(message)s": "Сообщение из парсера: %(message)s",
"Invalid JSON": "Нерабочий JSON",
"Invalid JSON": "Неверный JSON",
"Go to your browser to complete Sign In": "Перейдите в браузер для завершения входа",
"Open user settings": "Открыть настройки пользователя",
"Missing indexeddb worker script!": "Отсутствует скрипт воркера для indexeddb!",
@@ -36,5 +36,6 @@
"Use %(brand)s on mobile": "Воспользуйтесь %(brand)s на мобильном телефоне",
"Switch to space by number": "Переключение на пространство по номеру",
"Next recently visited room or community": "Следующая недавно посещенная комната или сообщество",
"Previous recently visited room or community": "Предыдущая недавно посещенная комната или сообщество"
"Previous recently visited room or community": "Предыдущая недавно посещенная комната или сообщество",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Децентрализованное, зашифрованное общение и сотрудничество на основе $matrixLogo"
}

View File

@@ -36,5 +36,6 @@
"Use %(brand)s on mobile": "Používať %(brand)s pri mobilných zariadeniach",
"Switch to space by number": "Prepnúť do priestoru podľa čísla",
"Next recently visited room or community": "Ďalšia nedávno navštívená miestnosť alebo komunita",
"Previous recently visited room or community": "Predchádzajúca nedávno navštívená miestnosť alebo komunita"
"Previous recently visited room or community": "Predchádzajúca nedávno navštívená miestnosť alebo komunita",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Decentralizované, šifrované konverzácie a spolupráca na platforme $matrixLogo"
}

View File

@@ -36,5 +36,6 @@
"Use %(brand)s on mobile": "Përdor %(brand)s në celular",
"Switch to space by number": "Kalo te hapësira me numrin",
"Next recently visited room or community": "Dhomë ose bashkësi e vizituar më parë pasuese",
"Previous recently visited room or community": "Dhomë ose bashkësi e vizituar më parë e mëparshme"
"Previous recently visited room or community": "Dhomë ose bashkësi e vizituar më parë e mëparshme",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Fjalosje &amp; bashkëpunim i decentralizuar, i fshehtëzuar, bazuar në $matrixLogo"
}

View File

@@ -36,5 +36,6 @@
"Use %(brand)s on mobile": "Använd %(brand)s på mobilen",
"Switch to space by number": "Byt till utrymme med nummer",
"Previous recently visited room or community": "Tidigare nyligen besökta rum eller gemenskap",
"Next recently visited room or community": "Nästa nyligen besökta rum eller gemenskap"
"Next recently visited room or community": "Nästa nyligen besökta rum eller gemenskap",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Decentraliserad krypterad chatt &amp; samarbete som drivs av $matrixLogo"
}

View File

@@ -35,5 +35,6 @@
"Missing indexeddb worker script!": "Indexeddb worker kodu eksik!",
"Use %(brand)s on mobile": "Mobilde %(brand)s kullan",
"Switch to space by number": "Sayı ile belirtilen alana geç",
"Previous recently visited room or community": "En son ziyaret edilen oda veya topluluk"
"Previous recently visited room or community": "En son ziyaret edilen oda veya topluluk",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "$matrixLogo tarafından merkeziyetsiz, şifrelenmiş sohbet &amp; iş birliği"
}

View File

@@ -36,5 +36,6 @@
"Use %(brand)s on mobile": "Користуйтеся %(brand)s на мобільному",
"Switch to space by number": "Перейдіть до простору за номером",
"Next recently visited room or community": "Наступна нещодавно відвідана кімната або спільнота",
"Previous recently visited room or community": "Попередня нещодавно відвідана кімната або спільнота"
"Previous recently visited room or community": "Попередня нещодавно відвідана кімната або спільнота",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Децентралізована, зашифрована бесіда та співпраця на основі $matrixLogo"
}

View File

@@ -1 +1,6 @@
{}
{
"Create Account": "Ro'yxatdan o'tish",
"Sign In": "Kirish",
"Dismiss": "Bekor qilish",
"Open": "Ochiq"
}

View File

@@ -1,6 +1,6 @@
{
"Unknown device": "Thiết bị không xác định",
"You need to be using HTTPS to place a screen-sharing call.": "Bạn phải sử dụng mã hóa HTTPS để thực hiện chia sẻ màn hình khi gọi.",
"You need to be using HTTPS to place a screen-sharing call.": "Bạn cần sử dụng giao thức HTTPS để thực hiện một cuộc gọi có chia sẻ màn hình.",
"Dismiss": "Bỏ qua",
"powered by Matrix": "tài trợ bởi Matrix",
"Welcome to Element": "Chào mừng tới Element",
@@ -14,9 +14,9 @@
"Create Account": "Tạo tài khoản",
"Explore rooms": "Khám phá phòng chat",
"Download Completed": "Tải xuống hoàn tất",
"Go to element.io": "Mở element.io",
"Go to element.io": "Đi đến element.io",
"I understand the risks and wish to continue": "Tôi hiểu các rủi ro và muốn tiếp tục",
"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.": "Bạn có thể tiếp tục sử dụng trình duyệt hiện tại của bạn, nhưng một số tính năng có thể không hoạt động và trải nghiệm ứng dụng có thể sẽ không được tốt.",
"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.": "Bạn có thể tiếp tục sử dụng trình duyệt hiện tại, tuy nhiên một số hoặc tất cả tính năng có thể sẽ không hoạt động và trải nghiệm ứng dụng có thể sẽ không được tốt.",
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Hãy cài đặt <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, hoặc <safariLink>Safari</safariLink> để có trải nghiệm tốt nhất.",
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s sử dụng một số tính năng nâng cao mà trình duyệt của bạn không thể đáp ứng.",
"Your browser can't run %(brand)s": "Trình duyệt của bạn không thể chạy %(brand)s",
@@ -34,5 +34,6 @@
"Missing indexeddb worker script!": "Thiếu tệp lệnh làm việc của indexeddb!",
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Thiết lập Element của bạn chứa JSON không hợp lệ. Vui lòng sửa vấn đề và tải lại trang.",
"Your Element is misconfigured": "Element của bạn bị thiết lập sai",
"Switch to space by number": "Chuyển sang Space bằng số"
"Switch to space by number": "Chuyển sang Space bằng số",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "Dịch vụ chat &amp; liên lạc đã được mã hóa, phi tập trung. Được cung cấp bởi $matrixLogo"
}

View File

@@ -36,5 +36,6 @@
"Use %(brand)s on mobile": "在行動裝置上使用 %(brand)s",
"Switch to space by number": "依數字切換至空間",
"Next recently visited room or community": "下一個近期造訪過的聊天室或社群",
"Previous recently visited room or community": "前一個近期造訪過的聊天室或社群"
"Previous recently visited room or community": "前一個近期造訪過的聊天室或社群",
"Decentralised, encrypted chat &amp; collaboration powered by $matrixLogo": "去中心化、加密的聊天與協作,威力本源 $matrixLogo"
}

View File

@@ -18,8 +18,10 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
// To ensure we load the browser-request version
import "matrix-js-sdk"; // eslint-disable-line no-restricted-imports
import React from 'react';
import * as sdk from 'matrix-react-sdk/src/index';
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
import { _td, newTranslatableError } from 'matrix-react-sdk/src/languageHandler';
import AutoDiscoveryUtils from 'matrix-react-sdk/src/utils/AutoDiscoveryUtils';
@@ -30,6 +32,7 @@ import { IConfigOptions } from "matrix-react-sdk/src/IConfigOptions";
import { logger } from "matrix-js-sdk/src/logger";
import { createClient } from "matrix-js-sdk/src/matrix";
import { SnakedObject } from "matrix-react-sdk/src/utils/SnakedObject";
import MatrixChat from "matrix-react-sdk/src/components/structures/MatrixChat";
import { parseQs } from './url_utils';
import VectorBasePlatform from "./platform/VectorBasePlatform";
@@ -133,7 +136,6 @@ export async function loadApp(fragParams: {}) {
const defaultDeviceName = snakedConfig.get("default_device_display_name")
?? platform.getDefaultDeviceDisplayName();
const MatrixChat = sdk.getComponent('structures.MatrixChat');
return <MatrixChat
onNewScreen={onNewScreen}
makeRegistrationUrl={makeRegistrationUrl}
@@ -147,7 +149,7 @@ export async function loadApp(fragParams: {}) {
/>;
}
async function verifyServerConfig() {
async function verifyServerConfig(): Promise<IConfigOptions> {
let validatedConfig;
try {
logger.log("Verifying homeserver configuration");

View File

@@ -110,7 +110,6 @@ async function start() {
preparePlatform,
loadOlm,
loadConfig,
loadSkin,
loadLanguage,
loadTheme,
loadApp,
@@ -160,10 +159,9 @@ async function start() {
const loadLanguagePromise = loadLanguage();
// as quickly as we possibly can, set a default theme...
const loadThemePromise = loadTheme();
const loadSkinPromise = loadSkin();
// await things settling so that any errors we have to render have features like i18n running
await settled(loadSkinPromise, loadThemePromise, loadLanguagePromise);
await settled(loadThemePromise, loadLanguagePromise);
let acceptBrowser = supportedBrowser;
if (!acceptBrowser && window.localStorage) {
@@ -211,7 +209,6 @@ async function start() {
// assert things started successfully
// ##################################
await loadOlmPromise;
await loadSkinPromise;
await loadThemePromise;
await loadLanguagePromise;

View File

@@ -127,27 +127,6 @@ export async function loadLanguage() {
}
}
export async function loadSkin() {
// Ensure the skin is the very first thing to load for the react-sdk. We don't even want to reference
// the SDK until we have to in imports.
logger.log("Loading skin...");
// load these async so that its code is not executed immediately and we can catch any exceptions
const [sdk, skin] = await Promise.all([
import(
/* webpackChunkName: "matrix-react-sdk" */
/* webpackPreload: true */
"matrix-react-sdk"),
import(
/* webpackChunkName: "element-web-component-index" */
/* webpackPreload: true */
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore - this module is generated so may fail lint
"../component-index"),
]);
sdk.loadSkin(skin);
logger.log("Skin loaded!");
}
export async function loadTheme() {
setTheme();
}

View File

@@ -56,6 +56,10 @@ body, html {
position: absolute;
height: 100%;
width: 100%;
// Hidden by default to avoid flashing the prejoin screen at the user when
// we're supposed to skip it anyways
visibility: hidden;
}
.joinConferenceFloating {

View File

@@ -51,11 +51,14 @@ let roomId: string;
let openIdToken: IOpenIDCredentials;
let roomName: string;
let startAudioOnly: boolean;
let isVideoChannel: boolean;
let widgetApi: WidgetApi;
let meetApi: any; // JitsiMeetExternalAPI
let skipOurWelcomeScreen = false;
const ack = (ev: CustomEvent<IWidgetApiRequest>) => widgetApi.transport.reply(ev.detail, {});
(async function() {
try {
// Queue a config.json lookup asap, so we can use it later on. We want this to be concurrent with
@@ -71,7 +74,7 @@ let skipOurWelcomeScreen = false;
if (!optional && vals.length !== 1) {
throw new Error(`Expected singular ${name} in query string`);
}
return <string>vals[0];
return vals[0];
};
// If we have these params, expect a widget API to be available (ie. to be in an iframe
@@ -118,22 +121,20 @@ let skipOurWelcomeScreen = false;
roomId = qsParam('roomId', true);
roomName = qsParam('roomName', true);
startAudioOnly = qsParam('isAudioOnly', true) === "true";
isVideoChannel = qsParam('isVideoChannel', true) === "true";
// We've reached the point where we have to wait for the config, so do that then parse it.
const instanceConfig = new SnakedObject<IConfigOptions>((await configPromise) ?? <IConfigOptions>{});
const jitsiConfig = instanceConfig.get("jitsi_widget") ?? {};
skipOurWelcomeScreen = (new SnakedObject<IConfigOptions["jitsi_widget"]>(jitsiConfig))
.get("skip_built_in_welcome_screen") || false;
.get("skip_built_in_welcome_screen") ?? false;
// If we're meant to skip our screen, skip to the part where we show Jitsi instead of us.
// Either reveal the prejoin screen, or skip straight to Jitsi depending on the config.
// We don't set up the call yet though as this might lead to failure without the widget API.
if (skipOurWelcomeScreen) {
toggleConferenceVisibility(true);
}
toggleConferenceVisibility(skipOurWelcomeScreen);
if (widgetApi) {
await readyPromise;
await widgetApi.setAlwaysOnScreen(false); // start off as detachable from the screen
// See https://github.com/matrix-org/prosody-mod-auth-matrix-user-verification
if (jitsiAuth === JITSI_OPENIDTOKEN_JWT_AUTH) {
@@ -142,12 +143,58 @@ let skipOurWelcomeScreen = false;
logger.log("Got OpenID Connect token");
}
// TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/element-web/issues/12795)
widgetApi.on(`action:${ElementWidgetActions.JoinCall}`,
(ev: CustomEvent<IWidgetApiRequest>) => {
const { audioDevice, videoDevice } = ev.detail.data;
joinConference(audioDevice as string, videoDevice as string);
ack(ev);
},
);
widgetApi.on(`action:${ElementWidgetActions.HangupCall}`,
(ev: CustomEvent<IWidgetApiRequest>) => {
if (meetApi) meetApi.executeCommand('hangup');
widgetApi.transport.reply(ev.detail, {}); // ack
meetApi?.executeCommand('hangup');
ack(ev);
},
);
widgetApi.on(`action:${ElementWidgetActions.ForceHangupCall}`,
(ev: CustomEvent<IWidgetApiRequest>) => {
meetApi?.dispose();
notifyHangup();
meetApi = null;
closeConference();
ack(ev);
},
);
widgetApi.on(`action:${ElementWidgetActions.MuteAudio}`,
async (ev: CustomEvent<IWidgetApiRequest>) => {
ack(ev);
if (meetApi && !await meetApi.isAudioMuted()) {
meetApi.executeCommand('toggleAudio');
}
},
);
widgetApi.on(`action:${ElementWidgetActions.UnmuteAudio}`,
async (ev: CustomEvent<IWidgetApiRequest>) => {
ack(ev);
if (meetApi && await meetApi.isAudioMuted()) {
meetApi.executeCommand('toggleAudio');
}
},
);
widgetApi.on(`action:${ElementWidgetActions.MuteVideo}`,
async (ev: CustomEvent<IWidgetApiRequest>) => {
ack(ev);
if (meetApi && !await meetApi.isVideoMuted()) {
meetApi.executeCommand('toggleVideo');
}
},
);
widgetApi.on(`action:${ElementWidgetActions.UnmuteVideo}`,
async (ev: CustomEvent<IWidgetApiRequest>) => {
ack(ev);
if (meetApi && await meetApi.isVideoMuted()) {
meetApi.executeCommand('toggleVideo');
}
},
);
widgetApi.on(`action:${ElementWidgetActions.StartLiveStream}`,
@@ -160,7 +207,7 @@ let skipOurWelcomeScreen = false;
//rtmpStreamKey: ev.detail.data.rtmpStreamKey,
youtubeStreamKey: ev.detail.data.rtmpStreamKey,
});
widgetApi.transport.reply(ev.detail, {}); // ack
ack(ev);
} else {
widgetApi.transport.reply(ev.detail, { error: { message: "Conference not joined" } });
}
@@ -174,6 +221,13 @@ let skipOurWelcomeScreen = false;
}
enableJoinButton(); // always enable the button
// Inform the client that we're ready to receive events
try {
await widgetApi?.transport.send(ElementWidgetActions.WidgetReady, {});
} catch (e) {
logger.error(e);
}
} catch (e) {
logger.error("Error setting up Jitsi widget", e);
document.getElementById("widgetActionContainer").innerText = "Failed to load Jitsi widget";
@@ -196,7 +250,9 @@ function switchVisibleContainers() {
function toggleConferenceVisibility(inConference: boolean) {
document.getElementById("jitsiContainer").style.visibility = inConference ? 'unset' : 'hidden';
document.getElementById("joinButtonContainer").style.visibility = inConference ? 'hidden' : 'unset';
// Video rooms have a separate UI for joining, so they should never show our join button
document.getElementById("joinButtonContainer").style.visibility =
(inConference || isVideoChannel) ? 'hidden' : 'unset';
}
function skipToJitsiSplashScreen() {
@@ -244,7 +300,29 @@ function createJWTToken() {
);
}
function joinConference() { // event handler bound in HTML
async function notifyHangup(errorMessage?: string) {
if (widgetApi) {
// We send the hangup event before setAlwaysOnScreen, because the latter
// can cause the receiving side to instantly stop listening.
try {
await widgetApi.transport.send(ElementWidgetActions.HangupCall, { errorMessage });
} finally {
await widgetApi.setAlwaysOnScreen(false);
}
}
}
function closeConference() {
switchVisibleContainers();
document.getElementById("jitsiContainer").innerHTML = "";
if (skipOurWelcomeScreen) {
skipToJitsiSplashScreen();
}
}
// event handler bound in HTML
function joinConference(audioDevice?: string, videoDevice?: string) {
let jwt;
if (jitsiAuth === JITSI_OPENIDTOKEN_JWT_AUTH) {
if (!openIdToken?.access_token) { // eslint-disable-line camelcase
@@ -263,11 +341,20 @@ function joinConference() { // event handler bound in HTML
"they mention 'external_api' or 'jitsi' in the stack. They're just Jitsi Meet trying to parse " +
"our fragment values and not recognizing the options.",
);
const options = {
width: "100%",
height: "100%",
parentNode: document.querySelector("#jitsiContainer"),
roomName: conferenceId,
devices: {
audioInput: audioDevice,
videoInput: videoDevice,
},
userInfo: {
displayName,
email: userId,
},
interfaceConfigOverwrite: {
SHOW_JITSI_WATERMARK: false,
SHOW_WATERMARK_FOR_GUESTS: false,
@@ -275,41 +362,97 @@ function joinConference() { // event handler bound in HTML
VIDEO_LAYOUT_FIT: "height",
},
configOverwrite: {
subject: roomName,
startAudioOnly,
},
startWithAudioMuted: audioDevice == null,
startWithVideoMuted: videoDevice == null,
// Request some log levels for inclusion in rageshakes
// Ideally we would capture all possible log levels, but this can
// cause Jitsi Meet to try to post various circular data structures
// back over the iframe API, and therefore end up crashing
// https://github.com/jitsi/jitsi-meet/issues/11585
apiLogLevels: ["warn", "error"],
} as any,
jwt: jwt,
};
// Video channel widgets need some more tailored config options
if (isVideoChannel) {
// Ensure that we skip Jitsi Meet's native prejoin screen, for
// deployments that have it enabled
options.configOverwrite.prejoinConfig = { enabled: false };
// Use a simplified set of toolbar buttons
options.configOverwrite.toolbarButtons = [
"microphone", "camera", "desktop", "tileview", "hangup",
];
// Hide all top bar elements
options.configOverwrite.conferenceInfo = { autoHide: [] };
}
meetApi = new JitsiMeetExternalAPI(jitsiDomain, options);
if (displayName) meetApi.executeCommand("displayName", displayName);
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
if (userId) meetApi.executeCommand("email", userId);
if (roomName) meetApi.executeCommand("subject", roomName);
// fires once when user joins the conference
// (regardless of video on or off)
meetApi.on("videoConferenceJoined", () => {
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
if (widgetApi) {
// ignored promise because we don't care if it works
// noinspection JSIgnoredPromiseFromCall
widgetApi.setAlwaysOnScreen(true);
widgetApi.transport.send(ElementWidgetActions.JoinCall, {});
}
// Video rooms should start in tile mode
if (isVideoChannel) meetApi.executeCommand("setTileView", true);
});
meetApi.on("readyToClose", () => {
switchVisibleContainers();
if (widgetApi) {
// ignored promise because we don't care if it works
// noinspection JSIgnoredPromiseFromCall
widgetApi.setAlwaysOnScreen(false);
}
document.getElementById("jitsiContainer").innerHTML = "";
meetApi.on("videoConferenceLeft", () => {
notifyHangup();
meetApi = null;
});
if (skipOurWelcomeScreen) {
skipToJitsiSplashScreen();
meetApi.on("readyToClose", closeConference);
meetApi.on("errorOccurred", ({ error }) => {
if (error.isFatal) {
// We got disconnected. Since Jitsi Meet might send us back to the
// prejoin screen, we're forced to act as if we hung up entirely.
notifyHangup(error.message);
meetApi = null;
closeConference();
}
});
meetApi.on("audioMuteStatusChanged", ({ muted }) => {
const action = muted ? ElementWidgetActions.MuteAudio : ElementWidgetActions.UnmuteAudio;
widgetApi?.transport.send(action, {});
});
meetApi.on("videoMuteStatusChanged", ({ muted }) => {
if (muted) {
// Jitsi Meet always sends a "video muted" event directly before
// hanging up, which we need to ignore by padding the timeout here,
// otherwise the React SDK will mistakenly think the user turned off
// their video by hand
setTimeout(() => {
if (meetApi) widgetApi?.transport.send(ElementWidgetActions.MuteVideo, {});
}, 200);
} else {
widgetApi?.transport.send(ElementWidgetActions.UnmuteVideo, {});
}
});
["videoConferenceJoined", "participantJoined", "participantLeft"].forEach(event => {
meetApi.on(event, () => {
widgetApi?.transport.send(ElementWidgetActions.CallParticipants, {
participants: meetApi.getParticipantsInfo(),
});
});
});
// Patch logs into rageshakes
meetApi.on("log", ({ logLevel, args }) =>
(parent as unknown as typeof global).mx_rage_logger?.log(logLevel, ...args),
);
}

File diff suppressed because one or more lines are too long

View File

@@ -17,7 +17,7 @@ function renderConfigError(message: string): void {
const toHide = document.getElementsByClassName("mx_HomePage_container");
const errorContainers = document.getElementsByClassName(
"mx_HomePage_errorContainer",
) as HTMLCollectionOf<HTMLDialogElement>;
) as HTMLCollectionOf<HTMLDivElement>;
for (const e of toHide) {
// We have to clear the content because .style.display='none'; doesn't work

View File

@@ -414,6 +414,18 @@ export default class ElectronPlatform extends VectorBasePlatform {
return this.ipcCall('setMinimizeToTrayEnabled', enabled);
}
public supportsTogglingHardwareAcceleration(): boolean {
return true;
}
public async getHardwareAccelerationEnabled(): Promise<boolean> {
return this.ipcCall('getHardwareAccelerationEnabled');
}
public async setHardwareAccelerationEnabled(enabled: boolean): Promise<void> {
return this.ipcCall('setHardwareAccelerationEnabled', enabled);
}
async canSelfUpdate(): Promise<boolean> {
const feedUrl = await this.ipcCall('getUpdateFeedUrl');
return Boolean(feedUrl);

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