From 93da07866928ec9c90bda4f2a7e8bb3b91fddce9 Mon Sep 17 00:00:00 2001 From: rugk Date: Thu, 15 Feb 2018 02:17:37 +0100 Subject: [PATCH 001/767] Clarify that HTTPS is not just needed for VoIP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …but for basic security. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1da20632..2ebb0162 100644 --- a/README.md +++ b/README.md @@ -24,9 +24,9 @@ released version of Riot: Releases are signed by PGP, and can be checked against the public key at https://riot.im/packages/keys/riot.asc -Note that Chrome does not allow microphone or webcam access for sites served -over http (except localhost), so for working VoIP you will need to serve Riot -over https. +Note that for the security of your chats will need to serve Riot +over HTTPS. Mayor browsers also do not allow you to use VoIP/video +chats over HTTP, as WebRTC is only usable over HTTPS. ### Installation Steps for Debian Stretch 1. Add the repository to your sources.list using either of the following two options: From b9eab9fe290a550a26bbccfcf0075ded4594d4dd Mon Sep 17 00:00:00 2001 From: rugk Date: Thu, 15 Feb 2018 13:31:31 +0100 Subject: [PATCH 002/767] Prevent referrers from being sent Fix https://github.com/vector-im/riot-web/issues/6147 --- src/vector/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vector/index.html b/src/vector/index.html index 8568d96a..ec1b2025 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -13,6 +13,7 @@ + From cfed0cbd0dffcca2a6d1806cd1bcf40ebd05ee08 Mon Sep 17 00:00:00 2001 From: rugk Date: Mon, 5 Mar 2018 21:37:07 +0100 Subject: [PATCH 003/767] Mention localhost --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2ebb0162..39fec395 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ at https://riot.im/packages/keys/riot.asc Note that for the security of your chats will need to serve Riot over HTTPS. Mayor browsers also do not allow you to use VoIP/video chats over HTTP, as WebRTC is only usable over HTTPS. +An exception of this is localhost, which usually is alos trusted in +browsers. ### Installation Steps for Debian Stretch 1. Add the repository to your sources.list using either of the following two options: From 3c3fd7cf2a3823ae131b81c113be9d38943bbb02 Mon Sep 17 00:00:00 2001 From: rugk Date: Mon, 5 Mar 2018 21:47:28 +0100 Subject: [PATCH 004/767] Remove typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 39fec395..9fab4047 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ at https://riot.im/packages/keys/riot.asc Note that for the security of your chats will need to serve Riot over HTTPS. Mayor browsers also do not allow you to use VoIP/video chats over HTTP, as WebRTC is only usable over HTTPS. -An exception of this is localhost, which usually is alos trusted in +An exception of this is localhost, which usually is trusted in browsers. ### Installation Steps for Debian Stretch From 6437b490a6d3f3c758945f32fd2861dbf6dc17cf Mon Sep 17 00:00:00 2001 From: rugk Date: Wed, 21 Mar 2018 16:18:08 +0100 Subject: [PATCH 005/767] Fix another typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9fab4047..501f91b1 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Releases are signed by PGP, and can be checked against the public key at https://riot.im/packages/keys/riot.asc Note that for the security of your chats will need to serve Riot -over HTTPS. Mayor browsers also do not allow you to use VoIP/video +over HTTPS. Major browsers also do not allow you to use VoIP/video chats over HTTP, as WebRTC is only usable over HTTPS. An exception of this is localhost, which usually is trusted in browsers. From f9551ddff54bfe042cbe77b8f0172d87cc220e87 Mon Sep 17 00:00:00 2001 From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com> Date: Fri, 15 Feb 2019 12:43:47 +0000 Subject: [PATCH 006/767] Add note in README about self-hosted riot installs requiring custom riot headers. Copy the list of headers from the current matrix.org list --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 10fef736..1d49a56b 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ released version of Riot: 1. Download the latest version from https://github.com/vector-im/riot-web/releases 1. Untar the tarball on your web server 1. Move (or symlink) the `riot-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 below for details. 1. Enter the URL into your browser and log into Riot! @@ -416,3 +417,17 @@ community engagement * hacktoberfest * bounty? - proposal to be included in a bounty programme * bounty - included in Status Open Bounty + +== Caching requirements == + +Riot requires the following URLs not to be cached if you are serving riot from your own webserver: +``` +/config.*.json +/i18n +/home +/sites +/index.html +``` + + + From 8b598e55659482d7c976229ed37ac1d5c767f28d Mon Sep 17 00:00:00 2001 From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com> Date: Fri, 15 Feb 2019 12:49:26 +0000 Subject: [PATCH 007/767] Update README.md Fix formatting --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1d49a56b..a7e370a0 100644 --- a/README.md +++ b/README.md @@ -418,9 +418,9 @@ community engagement * bounty? - proposal to be included in a bounty programme * bounty - included in Status Open Bounty -== Caching requirements == +## Caching requirements -Riot requires the following URLs not to be cached if you are serving riot from your own webserver: +Riot requires the following URLs not to be cached, when if you are serving riot from your own webserver: ``` /config.*.json /i18n From f1531d2b12638127cbd8fcd1de2e72fa8342ea40 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Fri, 31 May 2019 14:52:29 +0200 Subject: [PATCH 008/767] add settingDefaults to sample config --- config.sample.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config.sample.json b/config.sample.json index db1d25d1..cc6cb194 100644 --- a/config.sample.json +++ b/config.sample.json @@ -41,5 +41,6 @@ }, "enable_presence_by_hs_url": { "https://matrix.org": false - } + }, + "settingDefaults": {} } From 974da9947cdaea1e64f13868c23492418c413fd7 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 12 Jun 2019 12:10:37 +0100 Subject: [PATCH 009/767] js-sdk & react-sdk rc.1 --- package.json | 4 ++-- yarn.lock | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 96458d7b..2a2f892c 100644 --- a/package.json +++ b/package.json @@ -73,8 +73,8 @@ "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279", "gfm.css": "^1.1.2", "highlight.js": "^9.13.1", - "matrix-js-sdk": "2.0.0", - "matrix-react-sdk": "1.2.1", + "matrix-js-sdk": "2.0.1-rc.1", + "matrix-react-sdk": "1.2.2-rc.1", "modernizr": "^3.6.0", "olm": "https://packages.matrix.org/npm/olm/olm-3.1.0.tgz", "prop-types": "^15.6.2", diff --git a/yarn.lock b/yarn.lock index a29e6480..8519d24a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5728,10 +5728,10 @@ math-random@^1.0.1: resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== -matrix-js-sdk@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-2.0.0.tgz#1bbca0170c190a42eeda739f52f2995b446225ee" - integrity sha512-2/NV9hepV8QnX3xl1oaS7VS9tqsBKqCh9/pp+dAYFMA1A5PJACMFjE2M1KnW3JvHH+uDvag4fa7rraMwwGOK+A== +matrix-js-sdk@2.0.1-rc.1: + version "2.0.1-rc.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-2.0.1-rc.1.tgz#2590d6741d74af6b047e362eeea1b9a76c9c2143" + integrity sha512-t4EIK3xLiGdo8HrQeXYO58iw1e/959gidMvKfup8Pw8PJbRRQWXTe4DD0/Qytzq/zgbrx+1L4NxxceOzzwiwiw== dependencies: another-json "^0.2.0" babel-runtime "^6.26.0" @@ -5752,10 +5752,10 @@ matrix-mock-request@^1.2.3: bluebird "^3.5.0" expect "^1.20.2" -matrix-react-sdk@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.2.1.tgz#18eb0fc54f4c12a6f2ab15f0920c891d12d55981" - integrity sha512-5uiwOsVTJ6uwWKzlK1Q7o95L8s+gmm5wpAXywCduCYODjINLb3d66rToLxYCsznd/qO4aAUvLT3xPSXt97ha9Q== +matrix-react-sdk@1.2.2-rc.1: + version "1.2.2-rc.1" + resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.2.2-rc.1.tgz#b1644b007b2f41261a424d34625bfdd4e822a802" + integrity sha512-d66X8xbcGqAijx8gFbLh2+8jaA3Q124nTf+BfjHQQP3wuOuC5+n/cN/ZX/HBnwEOAzo3b1hsyxtSSqTDIDdgmg== dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" babel-runtime "^6.26.0" @@ -5782,7 +5782,7 @@ matrix-react-sdk@1.2.1: linkifyjs "^2.1.6" lodash "^4.13.1" lolex "2.3.2" - matrix-js-sdk "2.0.0" + matrix-js-sdk "2.0.1-rc.1" optimist "^0.6.1" pako "^1.0.5" png-chunks-extract "^1.0.0" From b75138370207cd11f6473bcadd45355406d31eec Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 12 Jun 2019 12:11:12 +0100 Subject: [PATCH 010/767] v1.2.2-rc.1 --- electron_app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron_app/package.json b/electron_app/package.json index b6107559..4f6baf50 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "1.2.1", + "version": "1.2.2-rc.1", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "dependencies": { From a413621efcbd26b98bbb71cfbf63fa72acb02daa Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 12 Jun 2019 12:12:16 +0100 Subject: [PATCH 011/767] Prepare changelog for v1.2.2-rc.1 --- CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ba57244..5e8973bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,40 @@ +Changes in [1.2.2-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.2-rc.1) (2019-06-12) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.1...v1.2.2-rc.1) + + * Update from Weblate + [\#10012](https://github.com/vector-im/riot-web/pull/10012) + * Add funding details for GitHub sponsor button + [\#9982](https://github.com/vector-im/riot-web/pull/9982) + * Do not fail on server liveliness checks during startup + [\#9960](https://github.com/vector-im/riot-web/pull/9960) + * Hide guest functions on the welcome page if not logged in + [\#9957](https://github.com/vector-im/riot-web/pull/9957) + * Add Albanian and West Flemish languages + [\#9953](https://github.com/vector-im/riot-web/pull/9953) + * Update from Weblate + [\#9951](https://github.com/vector-im/riot-web/pull/9951) + * Add docs for defaultCountryCode + [\#9927](https://github.com/vector-im/riot-web/pull/9927) + * Use the user's pre-existing HS when config validation fails + [\#9892](https://github.com/vector-im/riot-web/pull/9892) + * Low bandwidth mode + [\#9909](https://github.com/vector-im/riot-web/pull/9909) + * Fix Twemoji loading on Windows dev machines + [\#9869](https://github.com/vector-im/riot-web/pull/9869) + * Base Docker image on nginx:alpine, not the larger nginx:latest + [\#9848](https://github.com/vector-im/riot-web/pull/9848) + * Validate homeserver configuration prior to loading the app + [\#9779](https://github.com/vector-im/riot-web/pull/9779) + * Show resolved homeserver configuration on the mobile guide + [\#9726](https://github.com/vector-im/riot-web/pull/9726) + * Flag the validated config as the default config + [\#9721](https://github.com/vector-im/riot-web/pull/9721) + * Clarify comment on is_url and hs_url handling + [\#9719](https://github.com/vector-im/riot-web/pull/9719) + * Validate default homeserver config before loading the app + [\#9496](https://github.com/vector-im/riot-web/pull/9496) + Changes in [1.2.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.1) (2019-05-31) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.0...v1.2.1) From 9af5aea687853a78754a14ec27416e72b41c5133 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 12 Jun 2019 12:12:17 +0100 Subject: [PATCH 012/767] v1.2.2-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2a2f892c..cea7c695 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron_app/src/electron-main.js", - "version": "1.2.1", + "version": "1.2.2-rc.1", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { From 446a4b16ee8208e62a3d4ec83237ea4f4b069d6b Mon Sep 17 00:00:00 2001 From: Osoitz Date: Thu, 13 Jun 2019 09:15:48 +0000 Subject: [PATCH 013/767] Translated using Weblate (Basque) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eu/ --- src/i18n/strings/eu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index b7c84ece..861caebc 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -45,5 +45,6 @@ "Room Directory": "Gelen direktorioa", "Unexpected error preparing the app. See console for details.": "Ustekabeko errorea aplikazioa prestatzean. Ikusi xehetasunak kontsolan.", "Your Riot is misconfigured": "Zure Riot gaizki konfiguratuta dago", - "Invalid configuration: no default server specified.": "Konfigurazio baliogabea: Ez da lehenetsitako zerbitzaririk zehaztu." + "Invalid configuration: no default server specified.": "Konfigurazio baliogabea: Ez da lehenetsitako zerbitzaririk zehaztu.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Konfigurazio baliogabea: default_server_config, default_server_name, edo default_hs_url bat bakarra zehaztu daiteke." } From fefa2ee03663fb7f46c3881925ac0dc7c5cb0699 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Fri, 14 Jun 2019 05:45:35 +0000 Subject: [PATCH 014/767] Translated using Weblate (Bulgarian) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bg/ --- src/i18n/strings/bg.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index 39137d86..cee258d2 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -46,5 +46,6 @@ "Unexpected error preparing the app. See console for details.": "Неочаквана грешка при подготвянето на приложението. Вижте конзолата за подробности.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Невалидна конфигурация: може да е указано само едно от: default_server_config, default_server_name, или default_hs_url.", "Invalid configuration: no default server specified.": "Невалидна конфигурация: не е указан сървър по подразбиране.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Тази инсталация на Riot изглежда няма валидна конфигурация за сървър. Ако сте администраторът, моля поправете грешката по-долу" + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Тази инсталация на Riot изглежда няма валидна конфигурация за сървър. Ако сте администраторът, моля поправете грешката по-долу", + "Your Riot is misconfigured": "Riot не е конфигуриран правилно" } From 36cebd565aae4fed90733b006bd2a3594daa8120 Mon Sep 17 00:00:00 2001 From: random Date: Wed, 12 Jun 2019 10:19:14 +0000 Subject: [PATCH 015/767] Translated using Weblate (Italian) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/ --- src/i18n/strings/it.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index e015ddab..92cd58ab 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -46,5 +46,6 @@ "Unexpected error preparing the app. See console for details.": "Errore inaspettato preparando l'app. Vedi la console per i dettagli.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configurazione non valida: specificare solo uno di default_server_config, default_server_name, o default_hs_url.", "Invalid configuration: no default server specified.": "Configurazione non valida: nessun server predefinito specificato.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Questa installazione di Riot sembra avere una configurazione server non valida. Se sei l'amministratore, correggi l'errore sottostante" + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Questa installazione di Riot sembra avere una configurazione server non valida. Se sei l'amministratore, correggi l'errore sottostante", + "Your Riot is misconfigured": "Il tuo Riot è configurato male" } From a36013f2e02f80d2f8f70f1c9bca4672c1479462 Mon Sep 17 00:00:00 2001 From: Vitaly Lipatov Date: Sat, 15 Jun 2019 07:40:48 +0000 Subject: [PATCH 016/767] Translated using Weblate (Russian) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/ --- src/i18n/strings/ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 58781df0..37d2e073 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1,5 +1,5 @@ { - "Custom Server Options": "Выбор другого сервера", + "Custom Server Options": "Параметры другого сервера", "Dismiss": "Отклонить", "powered by Matrix": "основано на Matrix", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s с %(browserName)s на %(osName)s", @@ -47,5 +47,5 @@ "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.": "Неверная конфигурация: сервер по умолчанию не указан.", "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Эта установка Riot, кажется, имеет неверную конфигурацию сервера. Если вы являетесь администратором, пожалуйста, исправьте ошибку ниже", - "Your Riot is misconfigured": "Твой Riot неправильно настроен" + "Your Riot is misconfigured": "Ваш Riot неправильно настроен" } From f1a6651f0480283d41d4f3512fa86d9d70a7f1e9 Mon Sep 17 00:00:00 2001 From: Le Dang Trung Date: Fri, 14 Jun 2019 08:01:01 +0000 Subject: [PATCH 017/767] Translated using Weblate (Vietnamese) Currently translated at 57.1% (12 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/vi/ --- src/i18n/strings/vi.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json index 58ceb1ad..602d0e83 100644 --- a/src/i18n/strings/vi.json +++ b/src/i18n/strings/vi.json @@ -16,5 +16,7 @@ "Get started with some tips from Riot Bot!": "Bắt đầu với các hướng dẫn từ Riot Bot!", "General discussion about Matrix and Riot": "Thảo luận chung về Matrix và Riot", "Discussion of all things Matrix!": "Thào luận về mọi vấn đề liên quan đến Matrix!", - "Riot/Web & Desktop chat": "Riot/Web & Desktop chat" + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Unexpected error preparing the app. See console for details.": "Lỗi xảy ra trong lúc chuẩn bị app. Xem console log để biết chi tiết.", + "Your Riot is misconfigured": "Riot của bạn bị cấu hình sai" } From c90cc096a168c9346bcae777684820c5fc324e6d Mon Sep 17 00:00:00 2001 From: Nathan Follens Date: Fri, 14 Jun 2019 09:42:09 +0000 Subject: [PATCH 018/767] Translated using Weblate (West Flemish) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/vls/ --- src/i18n/strings/vls.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/vls.json b/src/i18n/strings/vls.json index 285e5409..feb48305 100644 --- a/src/i18n/strings/vls.json +++ b/src/i18n/strings/vls.json @@ -1,7 +1,7 @@ { - "Unexpected error preparing the app. See console for details.": "’t Es een onverwachte fout ipgetreedn by ’t voorbereiden van den app. Bekykt de console vo details.", + "Unexpected error preparing the app. See console for details.": "’t Is een onverwachte foute ipgetreedn by ’t voorbereidn van den app. Bekykt de console vo details.", "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "De serverconfiguroatie van deze Riot-instantie lykt oungeldig. A je gy den beheerder zyt, gelieve ton de foute hierounder te corrigeern", - "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Oungeldige configuroatie: kun slechts één van default_server_config, default_server_name, of default_hs_url ipgeevn.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Oungeldige configuroatie: ku moar één van default_server_config, default_server_name, of default_hs_url ipgeevn.", "Invalid configuration: no default server specified.": "Oungeldige configuroatie: geen standoardserver ipgegeevn.", "Riot Desktop on %(platformName)s": "Riot Desktop ip %(platformName)s", "Unknown device": "Ounbekend toestel", @@ -9,16 +9,16 @@ "You need to be using HTTPS to place a screen-sharing call.": "Je moet HTTPS gebruukn vo een iproep me schermdeeln te kunn startn.", "powered by Matrix": "meuglik gemakt deur Matrix", "Custom Server Options": "Angepaste serverinstelliengn", - "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Je kut d’angepaste serverinstelliengn gebruukn vo jen an te melden by andere Matrix-servers, deur een andere thuusserver-URL in te geevn. Dit laat je toe van Riot te gebruukn met e bestoande Matrix-account by een andere thuusserver.", - "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kut ook een angepaste identiteitsserver instelln, ma je goa geen gebruukers kunn uutnodign via e-mail, of zelve via e-mail uutgenodigd wirden.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Je kut d’angepaste serverinstelliengn gebruukn vo jen eigen an te melden by andere Matrix-servers, deur een andere thuusserver-URL in te geevn. Dit lat je toe van Riot te gebruukn met e bestoande Matrix-account by een andere thuusserver.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kut ook een angepasten identiteitsserver instelln, ma je goa geen gebruukers kunn uutnodign via e-mail, of zelve via e-mail uutgenodigd wirden.", "Dismiss": "Afwyzn", "Welcome to Riot.im": "Welgekommn by Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentraliseerd en versleuteld chattn & soamenwerkn meuglijk gemakt deur [matrix]", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentraliseerd en versleuteld chattn & soamenwerkn meuglik gemakt deur [matrix]", "Sign In": "Anmeldn", "Create Account": "Account anmoakn", "Need help?": "Hulp nodig?", "Chat with Riot Bot": "Chattn me Riot-robot", "Explore rooms": "Gesprekkn ountdekkn", - "Room Directory": "Gesprekscatalogus", + "Room Directory": "Gesprekscataloog", "Your Riot is misconfigured": "Je Riot is verkeerd geconfigureerd gewist" } From 9e5712594c62fe60b20285c3f8ba80ae2fcf5e4b Mon Sep 17 00:00:00 2001 From: BenjaminVettori Date: Sun, 16 Jun 2019 21:49:05 +0000 Subject: [PATCH 019/767] Translated using Weblate (German) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/ --- src/i18n/strings/de_DE.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 63d165c3..b7b0f5fb 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -46,5 +46,6 @@ "Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe Konsole für Details.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ungültige Konfiguration: Es kann nur eine der Optionen default_server_config, default_server_name oder default_hs_url angegeben werden.", "Invalid configuration: no default server specified.": "Ungültige Konfiguration: Es wurde kein Standardserver angegeben.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Diese Installation von Riot scheint eine ungültige Serverkonfiguration zu haben. Wenn Sie der Administrator sind, korrigieren Sie bitte den folgenden Fehler" + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Diese Installation von Riot scheint eine ungültige Serverkonfiguration zu haben. Wenn Sie der Administrator sind, korrigieren Sie bitte den folgenden Fehler", + "Your Riot is misconfigured": "Dein Riot ist falsch konfiguriert" } From f10e7ac224393ec5e18e996abd73a0558d05945d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 18 Jun 2019 13:59:13 +0100 Subject: [PATCH 020/767] Fix reference to main window when setting Electron window icon This fixes the fallback path which sets the Electron window icon to the default icon in case there's no data URI based icon coming content. This is true immediately after startup, for example. Part of https://github.com/vector-im/riot-web/issues/9897 --- electron_app/src/tray.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index bd07d7d4..61e05972 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -65,7 +65,7 @@ exports.create = function(config) { global.mainWindow.webContents.on('page-favicon-updated', async function(ev, favicons) { if (!favicons || favicons.length <= 0 || !favicons[0].startsWith('data:')) { if (lastFavicon !== null) { - win.setIcon(defaultIcon); + global.mainWindow.setIcon(defaultIcon); trayIcon.setImage(defaultIcon); lastFavicon = null; } From 589aa19246b18051c59fa84b6242bf3be7178097 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 18 Jun 2019 15:57:30 +0100 Subject: [PATCH 021/767] js-sdk & react-sdk rc.2 --- package.json | 4 ++-- yarn.lock | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index cea7c695..152d7fad 100644 --- a/package.json +++ b/package.json @@ -73,8 +73,8 @@ "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279", "gfm.css": "^1.1.2", "highlight.js": "^9.13.1", - "matrix-js-sdk": "2.0.1-rc.1", - "matrix-react-sdk": "1.2.2-rc.1", + "matrix-js-sdk": "2.0.1-rc.2", + "matrix-react-sdk": "1.2.2-rc.2", "modernizr": "^3.6.0", "olm": "https://packages.matrix.org/npm/olm/olm-3.1.0.tgz", "prop-types": "^15.6.2", diff --git a/yarn.lock b/yarn.lock index 8519d24a..706a6325 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5728,10 +5728,10 @@ math-random@^1.0.1: resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== -matrix-js-sdk@2.0.1-rc.1: - version "2.0.1-rc.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-2.0.1-rc.1.tgz#2590d6741d74af6b047e362eeea1b9a76c9c2143" - integrity sha512-t4EIK3xLiGdo8HrQeXYO58iw1e/959gidMvKfup8Pw8PJbRRQWXTe4DD0/Qytzq/zgbrx+1L4NxxceOzzwiwiw== +matrix-js-sdk@2.0.1-rc.2: + version "2.0.1-rc.2" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-2.0.1-rc.2.tgz#6a00e4264f7e27a6f71a25ee9cbd935fbfbbf759" + integrity sha512-mq93SfeI9cc+BPfjNQKNzdLmq7l3BgFos8fhMt9ToLJB/wEg4xJXU0Nc8+31dDd65IDa4tGSyyCL4mRtpT6Nmw== dependencies: another-json "^0.2.0" babel-runtime "^6.26.0" @@ -5752,10 +5752,10 @@ matrix-mock-request@^1.2.3: bluebird "^3.5.0" expect "^1.20.2" -matrix-react-sdk@1.2.2-rc.1: - version "1.2.2-rc.1" - resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.2.2-rc.1.tgz#b1644b007b2f41261a424d34625bfdd4e822a802" - integrity sha512-d66X8xbcGqAijx8gFbLh2+8jaA3Q124nTf+BfjHQQP3wuOuC5+n/cN/ZX/HBnwEOAzo3b1hsyxtSSqTDIDdgmg== +matrix-react-sdk@1.2.2-rc.2: + version "1.2.2-rc.2" + resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.2.2-rc.2.tgz#2735ef99265cdf89e95b491cf403822c626180eb" + integrity sha512-uvc4pwj0B2FJs83pJ2mhxOUNluZ3oZrx8XQAi0u/N1grVCNQH3bsR1+0ftiHRntt54sq/j8wVGfxkuFgyXlhZA== dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" babel-runtime "^6.26.0" @@ -5782,7 +5782,7 @@ matrix-react-sdk@1.2.2-rc.1: linkifyjs "^2.1.6" lodash "^4.13.1" lolex "2.3.2" - matrix-js-sdk "2.0.1-rc.1" + matrix-js-sdk "2.0.1-rc.2" optimist "^0.6.1" pako "^1.0.5" png-chunks-extract "^1.0.0" From a86f1e8a900b3dfe27ba42341466d0e3604f4a87 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 18 Jun 2019 15:58:36 +0100 Subject: [PATCH 022/767] v1.2.2-rc.2 --- electron_app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron_app/package.json b/electron_app/package.json index 4f6baf50..5bce6fd3 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "1.2.2-rc.1", + "version": "1.2.2-rc.2", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "dependencies": { From 290a99ba85a82e4a25c2a4d66d55b2ee3cc5033e Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 18 Jun 2019 16:02:21 +0100 Subject: [PATCH 023/767] Prepare changelog for v1.2.2-rc.2 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e8973bf..248d894a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +Changes in [1.2.2-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.2.2-rc.2) (2019-06-18) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.2-rc.1...v1.2.2-rc.2) + + * Update to react-sdk and js-sdk rc.2 for registration fixes, + redaction local echo fix and removing unnecessary calls + to the integration manager. + Changes in [1.2.2-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.2-rc.1) (2019-06-12) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.1...v1.2.2-rc.1) From db77d91500274b99c1730e7304d2fcacb98059e6 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 18 Jun 2019 16:02:21 +0100 Subject: [PATCH 024/767] v1.2.2-rc.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 152d7fad..4ecf5d23 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron_app/src/electron-main.js", - "version": "1.2.2-rc.1", + "version": "1.2.2-rc.2", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { From 292427c275cfad9458be23b3326fd18d9437c387 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 18 Jun 2019 16:12:38 +0100 Subject: [PATCH 025/767] Move default Electron icons outside asar Electron doesn't seem to want to load icons from within `asar`s, so this changes the default icons (used for window and tray) so that they are just regular files on disk and updates the reference to match. Part of https://github.com/vector-im/riot-web/issues/9897 --- electron_app/src/electron-main.js | 5 ++++- package.json | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js index 9c75123f..8b837cae 100644 --- a/electron_app/src/electron-main.js +++ b/electron_app/src/electron-main.js @@ -295,7 +295,10 @@ app.on('ready', () => { console.log('No update_base_url is defined: auto update is disabled'); } - const iconPath = `${__dirname}/../img/riot.${process.platform === 'win32' ? 'ico' : 'png'}`; + // It's important to call `path.join` so we don't end up with the packaged + // asar in the final path. + const iconFile = `riot.${process.platform === 'win32' ? 'ico' : 'png'}`; + const iconPath = path.join(__dirname, "..", "..", "img", iconFile); // Load the previous window state with fallback to defaults const mainWindowState = windowStateKeeper({ diff --git a/package.json b/package.json index 96458d7b..531f5d4a 100644 --- a/package.json +++ b/package.json @@ -156,10 +156,10 @@ "electronVersion": "4.2.4", "files": [ "node_modules/**", - "src/**", - "img/**" + "src/**" ], "extraResources": [ + { "from": "electron_app/img", "to": "img" }, "webapp/**/*", "origin_migrator/**/*" ], From f3bfb082803809690062adac23c9324171923cfd Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 18 Jun 2019 16:19:26 +0100 Subject: [PATCH 026/767] Update Electron's runtime PNG icon to match others This runtime PNG icon (the default window and tray icon) was not updated to remove the white background when we last changed the branding. This copies a 265 px PNG from elsewhere to ensure it matches. Part of https://github.com/vector-im/riot-web/issues/9897 --- electron_app/img/riot.png | Bin 5710 -> 13098 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/electron_app/img/riot.png b/electron_app/img/riot.png index aacfc1a8a50c135e64a02f73fe580a38a522f88d..f52d02c88bb0a6b3ce833bc232a744f4c1a6cf73 100644 GIT binary patch literal 13098 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 PegVizDoNCd83q3jy*SgA literal 5710 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 WpB+0H-F+a40jjUGlxh_%-~AtDrUaG% From 48b6f8c954a9e202fcdce306d5fb7c9bf4afd9d5 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 19 Jun 2019 15:55:02 +0100 Subject: [PATCH 027/767] Released js-sdk & react-sdk --- package.json | 4 ++-- yarn.lock | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 4ecf5d23..6eba7b6f 100644 --- a/package.json +++ b/package.json @@ -73,8 +73,8 @@ "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279", "gfm.css": "^1.1.2", "highlight.js": "^9.13.1", - "matrix-js-sdk": "2.0.1-rc.2", - "matrix-react-sdk": "1.2.2-rc.2", + "matrix-js-sdk": "2.0.1", + "matrix-react-sdk": "1.2.2", "modernizr": "^3.6.0", "olm": "https://packages.matrix.org/npm/olm/olm-3.1.0.tgz", "prop-types": "^15.6.2", diff --git a/yarn.lock b/yarn.lock index 706a6325..155b7175 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5728,10 +5728,10 @@ math-random@^1.0.1: resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== -matrix-js-sdk@2.0.1-rc.2: - version "2.0.1-rc.2" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-2.0.1-rc.2.tgz#6a00e4264f7e27a6f71a25ee9cbd935fbfbbf759" - integrity sha512-mq93SfeI9cc+BPfjNQKNzdLmq7l3BgFos8fhMt9ToLJB/wEg4xJXU0Nc8+31dDd65IDa4tGSyyCL4mRtpT6Nmw== +matrix-js-sdk@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-2.0.1.tgz#e9691c7fc142793aa8cd79e92d45698bcc5da8c4" + integrity sha512-+yj9fBdIE65v1+46TL/eLQGohtNZGBEtOD1n3nTAVBMogyVb2bpUWnqTli0ghiOCG9MKq7tWi+G4bDBTABxuxA== dependencies: another-json "^0.2.0" babel-runtime "^6.26.0" @@ -5752,10 +5752,10 @@ matrix-mock-request@^1.2.3: bluebird "^3.5.0" expect "^1.20.2" -matrix-react-sdk@1.2.2-rc.2: - version "1.2.2-rc.2" - resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.2.2-rc.2.tgz#2735ef99265cdf89e95b491cf403822c626180eb" - integrity sha512-uvc4pwj0B2FJs83pJ2mhxOUNluZ3oZrx8XQAi0u/N1grVCNQH3bsR1+0ftiHRntt54sq/j8wVGfxkuFgyXlhZA== +matrix-react-sdk@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-1.2.2.tgz#09e9eae3ec3b9ef324934b69275066c667fa8a1b" + integrity sha512-K7cBzturO5+4jWWnqtuqfqHrZXuq6ckyWY/UxbNbCdsvRsO4UZz7tGBy9QSEMKhiHkqkgCaOWfSjgFgjFmCrjQ== dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" babel-runtime "^6.26.0" @@ -5782,7 +5782,7 @@ matrix-react-sdk@1.2.2-rc.2: linkifyjs "^2.1.6" lodash "^4.13.1" lolex "2.3.2" - matrix-js-sdk "2.0.1-rc.2" + matrix-js-sdk "2.0.1" optimist "^0.6.1" pako "^1.0.5" png-chunks-extract "^1.0.0" From 80262314f3889c99c56f279959817cb61eabdfa3 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 19 Jun 2019 15:59:10 +0100 Subject: [PATCH 028/767] v1.2.2 --- electron_app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron_app/package.json b/electron_app/package.json index 5bce6fd3..7c348b88 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "1.2.2-rc.2", + "version": "1.2.2", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "dependencies": { From 5f7ee3f4ee103197f75f902dec0522bc51a80e89 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 19 Jun 2019 16:00:42 +0100 Subject: [PATCH 029/767] Prepare changelog for v1.2.2 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 248d894a..411627cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +Changes in [1.2.2](https://github.com/vector-im/riot-web/releases/tag/v1.2.2) (2019-06-19) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.2-rc.2...v1.2.2) + + No changes since rc.2 + Changes in [1.2.2-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.2.2-rc.2) (2019-06-18) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.2-rc.1...v1.2.2-rc.2) From 672cf1a46ed84766a5d772169d50afacba23286d Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 19 Jun 2019 16:00:42 +0100 Subject: [PATCH 030/767] v1.2.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6eba7b6f..51b90533 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron_app/src/electron-main.js", - "version": "1.2.2-rc.2", + "version": "1.2.2", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { From 470f6a8cbc9b6587f173f0bf85bf214c6e9667b2 Mon Sep 17 00:00:00 2001 From: Tuomas Hietala Date: Wed, 19 Jun 2019 12:28:30 +0000 Subject: [PATCH 031/767] Translated using Weblate (Finnish) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fi/ --- src/i18n/strings/fi.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index afc0bbdf..953a47c3 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -41,5 +41,9 @@ "Create Account": "Luo tili", "Need help?": "Tarvitsetko apua?", "Explore rooms": "Etsi huoneita", - "Room Directory": "Huoneluettelo" + "Room Directory": "Huoneluettelo", + "Unexpected error preparing the app. See console for details.": "Odottamaton virhe sovellusta valmisteltaessa. Katso konsolista lisätietoja.", + "Your Riot is misconfigured": "Riotin asetukset ovat pielessä", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Virheellinen asetus. Vain yhden seuraavista voi määrittää: default_server_config, default_server_name, tai default_hs_url.", + "Invalid configuration: no default server specified.": "Virheellinen asetus: oletuspalvelinta ei ole määritetty." } From 0fb17c91d8b023c71c250ceed4905070f468aed5 Mon Sep 17 00:00:00 2001 From: Tirifto Date: Tue, 25 Jun 2019 11:00:09 +0000 Subject: [PATCH 032/767] Translated using Weblate (Esperanto) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/ --- src/i18n/strings/eo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 2c961b2e..8f838867 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -36,7 +36,7 @@ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s je %(osName)s", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.
Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.

Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem.", "Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot", - "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas ankaŭ agordi propran identigan servilon, sed vi ne eblos inviti uzantojn per retpoŝtadresoj, nek eblos esti invitita per retpoŝtadreso.", + "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas ankaŭ agordi propran identigan servilon, sed vi ne eblos inviti uzantojn per retpoŝtadresoj, nek tiel invitiĝi.", "Sign In": "Saluti", "Create Account": "Krei konton", "Need help?": "Ĉu vi bezonas helpon?", From c84ef8bdb552f2f0e5b35ae5d34a8a3648a216b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8B=E3=82=8C=E3=81=8E?= Date: Mon, 24 Jun 2019 13:24:17 +0000 Subject: [PATCH 033/767] Translated using Weblate (Japanese) Currently translated at 81.0% (17 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ja/ --- src/i18n/strings/ja.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index b916254d..022f721c 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -7,7 +7,7 @@ "Custom Server Options": "カスタムサーバのオプション", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "他のホームサーバのURLを指定することで、他のMatrixサーバにサインインするためにカスタムサーバのオプションを利用できます。
これにより、他のホームサーバ上で既存のMatrixアカウントを用いてRiotを利用できます。

カスタムアイデンティティサーバを立てることもできますが、メールアドレスでユーザを招待する、または自身が招待されることはできません。", "Dismiss": "やめる", - "powered by Matrix": "Matrixによって動作しています", + "powered by Matrix": "Matrix の支援により活動しています。", "Riot Desktop on %(platformName)s": "%(platformName)s向けデスクトップ版Riot", "You need to be using HTTPS to place a screen-sharing call.": "画面共有通話を行うにはHTTPS通信を使う必要があります。", "Decentralised, encrypted chat & collaboration powered by [matrix]": "分散型の、暗号化された会話とコラボレーション。[matrix]で動作しています", @@ -35,5 +35,13 @@ "Contributing code to Matrix and Riot": "MatrixとRiotにコードを提供する", "Dev chat for the Riot/Web dev team": "Riot/Web開発者チームのための開発者チャット", "Dev chat for the Dendrite dev team": "Dendrite開発者チームのための開発者チャット", - "Co-ordination for Riot translators": "Riot 翻訳者による共同作業" + "Co-ordination for Riot translators": "Riot 翻訳者による共同作業", + "Unexpected error preparing the app. See console for details.": "アプリケーションの準備中に予期しないエラーが発生しました。詳細はコンソールを参照してください。", + "Your Riot is misconfigured": "あなたの Riot は間違って設定されています。", + "Invalid configuration: no default server specified.": "不正な設定です:デフォルトのサーバーが設定されていません。", + "Sign In": "サインイン", + "Create Account": "アカウントを作成する", + "Need help?": "助けが必要ですか?", + "Explore rooms": "部屋を探索する", + "Room Directory": "部屋のディレクトリー" } From 974797648f3e631a49955e4a6aa5c03afe17d3d2 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 26 Jun 2019 21:08:04 +0100 Subject: [PATCH 034/767] Move config-getting to VectorBasePlatform in Electron get config via IPC from main process which has access to the "local" config.json override file and can make people happy :D Remove bunch of duplicated code, and move comments around to put them in the right place Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/electron-main.js | 5 ++- src/vector/getconfig.js | 4 ++- src/vector/index.js | 42 +++-------------------- src/vector/platform/ElectronPlatform.js | 5 +++ src/vector/platform/VectorBasePlatform.js | 6 ++++ 5 files changed, 22 insertions(+), 40 deletions(-) diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js index 8b837cae..4c6f584c 100644 --- a/electron_app/src/electron-main.js +++ b/electron_app/src/electron-main.js @@ -1,8 +1,8 @@ /* Copyright 2016 Aviral Dasgupta Copyright 2016 OpenMarket Ltd -Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> Copyright 2018 New Vector Ltd +Copyright 2017, 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -173,6 +173,9 @@ ipcMain.on('ipcCall', async function(ev, payload) { await migrateFromOldOrigin(); migratingOrigin = false; break; + case 'getConfig': + ret = vectorConfig; + break; default: mainWindow.webContents.send('ipcReply', { id: payload.id, diff --git a/src/vector/getconfig.js b/src/vector/getconfig.js index 239ba806..0febfbd1 100644 --- a/src/vector/getconfig.js +++ b/src/vector/getconfig.js @@ -17,6 +17,8 @@ limitations under the License. import Promise from 'bluebird'; import request from 'browser-request'; +// Load the config file. First try to load up a domain-specific config of the +// form "config.$domain.json" and if that fails, fall back to config.json. export async function getVectorConfig(relativeLocation) { if (relativeLocation === undefined) relativeLocation = ''; if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/'; @@ -32,7 +34,7 @@ export async function getVectorConfig(relativeLocation) { } } -function getConfig(configJsonFilename) { +export function getConfig(configJsonFilename) { return new Promise(function(resolve, reject) { request( { method: "GET", url: configJsonFilename }, diff --git a/src/vector/index.js b/src/vector/index.js index 597b3f37..f77bf971 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -2,6 +2,7 @@ Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd Copyright 2018, 2019 New Vector Ltd +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -66,8 +67,6 @@ import Olm from 'olm'; import CallHandler from 'matrix-react-sdk/lib/CallHandler'; -import {getVectorConfig} from './getconfig'; - let lastLocationHashSet = null; // Disable warnings for now: we use deprecated bluebird functions @@ -170,38 +169,6 @@ function makeRegistrationUrl(params) { return url; } -export function getConfig(configJsonFilename) { - return new Promise(function(resolve, reject) { - request( - { method: "GET", url: configJsonFilename }, - (err, response, body) => { - if (err || response.status < 200 || response.status >= 300) { - // Lack of a config isn't an error, we should - // just use the defaults. - // Also treat a blank config as no config, assuming - // the status code is 0, because we don't get 404s - // from file: URIs so this is the only way we can - // not fail if the file doesn't exist when loading - // from a file:// URI. - if (response) { - if (response.status == 404 || (response.status == 0 && body == '')) { - resolve({}); - } - } - reject({err: err, response: response}); - return; - } - - // We parse the JSON ourselves rather than use the JSON - // parameter, since this throws a parse error on empty - // which breaks if there's no config.json and we're - // loading from the filesystem (see above). - resolve(JSON.parse(body)); - }, - ); - }); -} - function onTokenLoginCompleted() { // if we did a token login, we're now left with the token, hs and is // url as query params in the url; a little nasty but let's redirect to @@ -252,12 +219,12 @@ async function loadApp() { PlatformPeg.set(new WebPlatform()); } - // Load the config file. First try to load up a domain-specific config of the - // form "config.$domain.json" and if that fails, fall back to config.json. + const platform = PlatformPeg.get(); + let configJson; let configError; try { - configJson = await getVectorConfig(); + configJson = await platform.getConfig(); } catch (e) { configError = e; } @@ -342,7 +309,6 @@ async function loadApp() { Unable to load config file: please refresh the page to try again. , document.getElementById('matrixchat')); } else if (validBrowser || acceptInvalidBrowser) { - const platform = PlatformPeg.get(); platform.startUpdater(); // Don't bother loading the app until the config is verified diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 04f472d6..387403a6 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -4,6 +4,7 @@ Copyright 2016 Aviral Dasgupta Copyright 2016 OpenMarket Ltd Copyright 2018 New Vector Ltd +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -101,6 +102,10 @@ export default class ElectronPlatform extends VectorBasePlatform { this.stopUpdateCheck = this.stopUpdateCheck.bind(this); } + async getConfig(): Promise<{}> { + return this._ipcCall('getConfig'); + } + async onUpdateDownloaded(ev, updateInfo) { dis.dispatch({ action: 'new_version', diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js index c10c0acc..f24031f7 100644 --- a/src/vector/platform/VectorBasePlatform.js +++ b/src/vector/platform/VectorBasePlatform.js @@ -4,6 +4,7 @@ Copyright 2016 Aviral Dasgupta Copyright 2016 OpenMarket Ltd Copyright 2018 New Vector Ltd +Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -21,6 +22,7 @@ limitations under the License. import BasePlatform from 'matrix-react-sdk/lib/BasePlatform'; import { _t } from 'matrix-react-sdk/lib/languageHandler'; import dis from 'matrix-react-sdk/lib/dispatcher'; +import {getVectorConfig} from "../getconfig"; import Favico from 'favico.js'; @@ -44,6 +46,10 @@ export default class VectorBasePlatform extends BasePlatform { this.stopUpdateCheck = this.stopUpdateCheck.bind(this); } + async getConfig(): Promise<{}> { + return getVectorConfig(); + } + getHumanReadableName(): string { return 'Vector Base Platform'; // no translation required: only used for analytics } From dbd198ec076413921eb8fbf4b20baff3bf7a4edb Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 26 Jun 2019 21:10:28 +0100 Subject: [PATCH 035/767] delint Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/vector/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index f77bf971..82b4c887 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -44,7 +44,6 @@ import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; sdk.loadSkin(require('../component-index')); import VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandler'; import Promise from 'bluebird'; -import request from 'browser-request'; import * as languageHandler from 'matrix-react-sdk/lib/languageHandler'; import {_t, _td, newTranslatableError} from 'matrix-react-sdk/lib/languageHandler'; import AutoDiscoveryUtils from 'matrix-react-sdk/lib/utils/AutoDiscoveryUtils'; From a70f6de2e402eb402b6b2303e6a6f7a173a97c80 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 26 Jun 2019 21:11:27 +0100 Subject: [PATCH 036/767] cleanup Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/vector/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 82b4c887..92702788 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -117,7 +117,7 @@ function routeUrl(location) { } function onHashChange(ev) { - if (decodeURIComponent(window.location.hash) == lastLocationHashSet) { + if (decodeURIComponent(window.location.hash) === lastLocationHashSet) { // we just set this: no need to route it! return; } @@ -157,7 +157,7 @@ function makeRegistrationUrl(params) { const keys = Object.keys(params); for (let i = 0; i < keys.length; ++i) { - if (i == 0) { + if (i === 0) { url += '?'; } else { url += '&'; @@ -375,7 +375,7 @@ function loadOlm() { }).then(() => { console.log("Using WebAssembly Olm"); }).catch((e) => { - console.log("Failed to load Olm: trying legacy version"); + console.log("Failed to load Olm: trying legacy version", e); return new Promise((resolve, reject) => { const s = document.createElement('script'); s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too From 01a78feb41596e1306bc9b6c52b1e502a40d2bd4 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 27 Jun 2019 11:17:56 +0100 Subject: [PATCH 037/767] unexport getConfig, it was never imported externally --- src/vector/getconfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/getconfig.js b/src/vector/getconfig.js index 0febfbd1..8c57986b 100644 --- a/src/vector/getconfig.js +++ b/src/vector/getconfig.js @@ -34,7 +34,7 @@ export async function getVectorConfig(relativeLocation) { } } -export function getConfig(configJsonFilename) { +function getConfig(configJsonFilename) { return new Promise(function(resolve, reject) { request( { method: "GET", url: configJsonFilename }, From 97f031c623ec7c030ac8751c1bb9326179810121 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Thu, 27 Jun 2019 04:21:29 +0000 Subject: [PATCH 038/767] Translated using Weblate (Esperanto) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/ --- src/i18n/strings/eo.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 8f838867..e4ad0710 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -37,13 +37,13 @@ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.
Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.

Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem.", "Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot", "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas ankaŭ agordi propran identigan servilon, sed vi ne eblos inviti uzantojn per retpoŝtadresoj, nek tiel invitiĝi.", - "Sign In": "Saluti", + "Sign In": "Ensaluti", "Create Account": "Krei konton", "Need help?": "Ĉu vi bezonas helpon?", "Explore rooms": "Esplori ĉambrojn", "Room Directory": "Ĉambra dosierujo", - "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Vi povas uzi proprajn servilajn elekteblojn por saluti aliajn servilojn de Matrix, donante alian hejmeservilan URL-on. Tio povigos vin uzi programon Riot kun jama konto de Matrix en alia hejmservilo.", - "Unexpected error preparing the app. See console for details.": "Neatendida eraro okazis dum preparad de la aplikaĵo. Detalojn trovu en konzolo.", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Vi povas uzi proprajn servilajn elekteblojn por ensaluti al aliaj serviloj de Matrix per doni alian hejmeservilan URL-on. Tio povigos vin uzi Riot kun jama konto de Matrix en alia hejmservilo.", + "Unexpected error preparing the app. See console for details.": "Neatendita eraro okazis dum la preparado de la aplikaĵo. Rigardu la konzolon por detaloj.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Nevalida agordo: vi povas specifi nur unu elekteblon el « default_server_config », « default_server_name », aŭ « default_hs_url ».", "Invalid configuration: no default server specified.": "Nevalida agordo: neniu implicita servilo estas specifita.", "Your Riot is misconfigured": "Via kliento Riot estas misagordita" From 2c45299b6a30280dd02e48f581262ff94406402c Mon Sep 17 00:00:00 2001 From: pebles Date: Thu, 27 Jun 2019 10:47:19 +0000 Subject: [PATCH 039/767] Translated using Weblate (Spanish) Currently translated at 100.0% (21 of 21 strings) Translation: Riot Web/riot-web Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/es/ --- src/i18n/strings/es.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 3c949426..387a1910 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -8,7 +8,7 @@ "Riot is not supported on mobile web. Install the app?": "Riot no está soportado en navegadores Web móviles. ¿Quieres instalar la aplicación?", "You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.", "Welcome to Riot.im": "Bienvenido a Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas & colaboración con el poder de [matrix]", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas y colaboración con el poder de [matrix]", "Search the room directory": "Buscar en el directorio de salas", "Chat with Riot Bot": "Hablar con Riot Bot", "Get started with some tips from Riot Bot!": "¡Comenzar con algunos consejos de Riot Bot!", @@ -42,5 +42,9 @@ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "También puedes definir un servidor de identidad personalizado, pero no podrás invitar a usuarios o ser inivitado usando direcciones de correo.", "Explore rooms": "Explorar salas", "Room Directory": "Directorio de salas", - "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Puedes usar la opción de servidor personalizado para iniciar sesión en otros servidores Matrix, especificando la dirección URL del servidor. Esto te permite usar una cuenta Matrix en un servidor diferente." + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Puedes usar la opción de servidor personalizado para iniciar sesión en otros servidores Matrix, especificando la dirección URL del servidor. Esto te permite usar una cuenta Matrix en un servidor diferente.", + "Unexpected error preparing the app. See console for details.": "Error inesperado preparando la aplicación. Vea la consola para más detalles.", + "Your Riot is misconfigured": "Riot tiene un error de configuración", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración errónea: sólo puede especificar uno de default_server_config, default_server_name, o default_hs_url.", + "Invalid configuration: no default server specified.": "Configuración errónea: no se ha especificado servidor." } From 67664365bd9d1807bb5cf2a0e2879f5e66e633fc Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 27 Jun 2019 11:47:29 -0600 Subject: [PATCH 040/767] Display a red box of anger for config syntax errors Fixes https://github.com/vector-im/riot-web/issues/9519 --- src/i18n/strings/en_EN.json | 4 +++- src/vector/getconfig.js | 42 ++++++++++++++++++++----------------- src/vector/index.js | 23 ++++++++++++++++++++ 3 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2718b8e4..f09f6209 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,6 +1,8 @@ { - "Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.", + "Your Riot configuration has invalid JSON in it. Please correct the problem and reload the page. The message from the parser is: %(message)s": "Your Riot configuration has invalid JSON in it. Please correct the problem and reload the page. The message from the parser is: %(message)s", + "Invalid JSON": "Invalid JSON", "Your Riot is misconfigured": "Your Riot is misconfigured", + "Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.", "Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.", "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", diff --git a/src/vector/getconfig.js b/src/vector/getconfig.js index 8c57986b..392b32fe 100644 --- a/src/vector/getconfig.js +++ b/src/vector/getconfig.js @@ -39,28 +39,32 @@ function getConfig(configJsonFilename) { request( { method: "GET", url: configJsonFilename }, (err, response, body) => { - if (err || response.status < 200 || response.status >= 300) { - // Lack of a config isn't an error, we should - // just use the defaults. - // Also treat a blank config as no config, assuming - // the status code is 0, because we don't get 404s - // from file: URIs so this is the only way we can - // not fail if the file doesn't exist when loading - // from a file:// URI. - if (response) { - if (response.status == 404 || (response.status == 0 && body == '')) { - resolve({}); + try { + if (err || response.status < 200 || response.status >= 300) { + // Lack of a config isn't an error, we should + // just use the defaults. + // Also treat a blank config as no config, assuming + // the status code is 0, because we don't get 404s + // from file: URIs so this is the only way we can + // not fail if the file doesn't exist when loading + // from a file:// URI. + if (response) { + if (response.status == 404 || (response.status == 0 && body == '')) { + resolve({}); + } } + reject({err: err, response: response}); + return; } - reject({err: err, response: response}); - return; - } - // We parse the JSON ourselves rather than use the JSON - // parameter, since this throws a parse error on empty - // which breaks if there's no config.json and we're - // loading from the filesystem (see above). - resolve(JSON.parse(body)); + // We parse the JSON ourselves rather than use the JSON + // parameter, since this throws a parse error on empty + // which breaks if there's no config.json and we're + // loading from the filesystem (see above). + resolve(JSON.parse(body)); + } catch (e) { + reject({err: e}); + } }, ); }); diff --git a/src/vector/index.js b/src/vector/index.js index 92702788..29399b70 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -222,10 +222,17 @@ async function loadApp() { let configJson; let configError; + let configSyntaxError = false; try { configJson = await platform.getConfig(); } catch (e) { configError = e; + + if (e && e.err && e.err instanceof SyntaxError) { + console.error("SyntaxError loading config:", e); + configSyntaxError = true; + configJson = {}; // to prevent errors between here and loading CSS for the error box + } } // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure @@ -295,6 +302,22 @@ async function loadApp() { } } + // Now that we've loaded the theme (CSS), display the config syntax error if needed. + if (configSyntaxError) { + const errorMessage = _t( + "Your Riot configuration has invalid JSON in it. Please correct the problem and reload the page. " + + "The message from the parser is: %(message)s", + {message: configError.err.message || _t("Invalid JSON")}, + ); + + const GenericErrorPage = sdk.getComponent("structures.GenericErrorPage"); + window.matrixChat = ReactDOM.render( + , + document.getElementById('matrixchat'), + ); + return; + } + const validBrowser = checkBrowserFeatures([ "displaytable", "flexbox", "es5object", "es5function", "localstorage", "objectfit", "indexeddb", "webworkers", From 73d801cb1d63c06afa54e74d7eb8716217c5a668 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 27 Jun 2019 19:04:06 +0100 Subject: [PATCH 041/767] Extract configuration docs to separate file The main README is very busy with too much information in one file. This attempts to clean up one portion by moving configuration docs to a separate file. Fixes https://github.com/vector-im/riot-web/issues/9965 --- README.md | 120 +++---------------------------------------------- docs/config.md | 111 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 113 deletions(-) create mode 100644 docs/config.md diff --git a/README.md b/README.md index dba59fd7..ac795f8f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ released version of Riot: 1. Untar the tarball on your web server 1. Move (or symlink) the `riot-x.x.x` directory to an appropriate name 1. If desired, copy `config.sample.json` to `config.json` and edit it - as desired. See below for details. + as desired. See the [configuration docs](docs/config.md) for details. 1. Enter the URL into your browser and log into Riot! Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located @@ -52,9 +52,9 @@ on the client, Riot needs a way to supply the decrypted content from a separate origin to the one Riot is hosted on. This currently done with a 'cross origin renderer' which is a small piece of javascript hosted on a different domain. To avoid all Riot installs needing one of these to be set up, riot.im hosts -one on usercontent.riot.im which is used by default. See 'config.json' if you'd -like to host your own. https://github.com/vector-im/riot-web/issues/6173 tracks -progress on replacing this with something better. +one on usercontent.riot.im which is used by default. +https://github.com/vector-im/riot-web/issues/6173 tracks progress on replacing +this with something better. Building From Source ==================== @@ -91,7 +91,7 @@ guide](https://yarnpkg.com/docs/install/) if you do not have it already. develop branch. (Note that we don't reference the develop versions in git directly due to https://github.com/npm/npm/issues/3055.) 1. Configure the app by copying `config.sample.json` to `config.json` and - modifying it (see below for details). + modifying it. See the [configuration docs](docs/config.md) for details. 1. `yarn dist` to build a tarball to deploy. Untaring this file will give a version-specific directory containing all the files that need to go on your web server. @@ -101,101 +101,6 @@ which will build all the necessary files into the `webapp` directory. The versio will not appear in Settings without using the dist script. You can then mount the `webapp` directory on your webserver to actually serve up the app, which is entirely static content. -config.json -=========== - -You can configure the app by copying `config.sample.json` to -`config.json` and customising it: - -For a good example, see https://riot.im/develop/config.json. - -1. `default_server_config` sets the default homeserver and identity server URL for - Riot to use. The object is the same as returned by [https:///.well-known/matrix/client](https://matrix.org/docs/spec/client_server/latest.html#get-well-known-matrix-client), - with added support for a `server_name` under the `m.homeserver` section to display - a custom homeserver name. Alternatively, the config can contain a `default_server_name` - instead which is where Riot will go to get that same object, although this option is - deprecated - see the `.well-known` link above for more information on using this option. - Note that the `default_server_name` is used to get a complete server configuration - whereas the `server_name` in the `default_server_config` is for display purposes only. - * *Note*: The URLs can also be individually specified as `default_hs_url` and - `default_is_url`, however these are deprecated. They are maintained for backwards - compatibility with older configurations. `default_is_url` is respected only - if `default_hs_url` is used. - * The identity server is used for verifying third party identifiers like emails - and phone numbers. It is not used to store your password or account information. - If not provided, the identity server defaults to vector.im unless `disable_identity_server` - is set to true in the config. Currently the only two public identity servers - are https://matrix.org and https://vector.im, however in future identity servers - will be decentralised. - * Riot will fail to load if a mix of `default_server_config`, `default_server_name`, or - `default_hs_url` is specified. When multiple sources are specified, it is unclear - which should take priority and therefore the application cannot continue. -1. `features`: Lookup of optional features that may be `enable`d, `disable`d, or exposed to the user - in the `labs` section of settings. The available optional experimental features vary from - release to release. Some of the available features are described in the Labs Feature section - of this README. -1. `showLabsSettings`: Shows the "labs" tab of user settings even when no `features` are enabled - or present. Useful for getting at settings which may be otherwise hidden. -1. `brand`: String to pass to your homeserver when configuring email notifications, to let the - homeserver know what email template to use when talking to you. -1. `branding`: Configures various branding and logo details, such as: - 1. `welcomeBackgroundUrl`: An image to use as a wallpaper outside the app - during authentication flows - 1. `authHeaderLogoUrl`: An logo image that is shown in the header during - authentication flows - 1. `authFooterLinks`: a list of links to show in the authentication page footer: - `[{"text": "Link text", "url": "https://link.target"}, {"text": "Other link", ...}]` -1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations - server is not Riot and normally not your homeserver either. The integration server settings - may be left blank to disable integrations. -1. `integrations_rest_url`: URL to the REST interface for the integrations server. -1. `integrations_widgets_urls`: list of URLs to the REST interface for the widget integrations server. -1. `bug_report_endpoint_url`: endpoint to send bug reports to (must be running a - https://github.com/matrix-org/rageshake server). Bug reports are sent when a user clicks - "Send Logs" within the application. Bug reports can be disabled by leaving the - `bug_report_endpoint_url` out of your config file. -1. `roomDirectory`: config for the public room directory. This section is optional. -1. `roomDirectory.servers`: List of other homeservers' directories to include in the drop - down list. Optional. -1. `default_theme`: name of theme to use by default (e.g. 'light') -1. `update_base_url` (electron app only): HTTPS URL to a web server to download - updates from. This should be the path to the directory containing `macos` - and `win32` (for update packages, not installer packages). -1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display - encrypted file attachments. This MUST be hosted on a completely separate domain to - anything else since it is used to isolate the privileges of file attachments to this - domain. Default: `https://usercontent.riot.im/v1.html`. This needs to contain v1.html from - https://github.com/matrix-org/usercontent/blob/master/v1.html -1. `piwik`: Analytics can be disabled by setting `piwik: false` or by leaving the piwik config - option out of your config file. If you want to enable analytics, set `piwik` to be an object - containing the following properties: - 1. `url`: The URL of the Piwik instance to use for collecting analytics - 1. `whitelistedHSUrls`: a list of HS URLs to not redact from the analytics - 1. `whitelistedISUrls`: a list of IS URLs to not redact from the analytics - 1. `siteId`: The Piwik Site ID to use when sending analytics to the Piwik server configured above -1. `welcomeUserId`: the user ID of a bot to invite whenever users register that can give them a tour -1. `embeddedPages`: Configures the pages displayed in portions of Riot that - embed static files, such as: - 1. `welcomeUrl`: Initial content shown on the outside of the app when not - logged in. Defaults to `welcome.html` supplied with Riot. - 1. `homeUrl`: Content shown on the inside of the app when a specific room is - not selected. By default, no home page is configured. If one is set, a - button to access it will be shown in the top left menu. -1. `defaultCountryCode`: The ISO 3166 alpha2 country code to use when showing - country selectors, like the phone number input on the registration page. - Defaults to `GB` if the given code is unknown or not provided. - - -Note that `index.html` also has an og:image meta tag that is set to an image -hosted on riot.im. This is the image used if links to your copy of Riot -appear in some websites like Facebook, and indeed Riot itself. This has to be -static in the HTML and an absolute URL (and HTTP rather than HTTPS), so it's -not possible for this to be an option in config.json. If you'd like to change -it, you can build Riot as above, but run -`RIOT_OG_IMAGE_URL="http://example.com/logo.png" yarn build`. -Alternatively, you can edit the `og:image` meta tag in `index.html` directly -each time you download a new version of Riot. - Running as a Desktop app ======================== @@ -248,19 +153,8 @@ yarn global add nativefier nativefier https://riot.im/app/ ``` -Desktop app configuration -========================= - -To run multiple instances of the desktop app for different accounts, you can launch the executable with the `--profile` argument followed by a unique identifier, e.g `riot-web --profile Work` for it to run a separate profile and not interfere with the default one. - -Alternatively, a custom location for the profile data can be specified using the `--profile-dir` flag followed by the desired path. - -To change the config.json for the desktop app, create a config file which will be used to override values in the config which ships in the package: -+ `%APPDATA%\$NAME\config.json` on Windows -+ `$XDG_CONFIG_HOME\$NAME\config.json` or `~/.config/$NAME/config.json` on Linux -+ `~Library/Application Support/$NAME/config.json` on macOS - -In the paths above, `$NAME` is typically `Riot`, unless you use `--profile $PROFILE` in which case it becomes `Riot-$PROFILE`. +The [configuration docs](docs/config.md#desktop-app-configuration) show how to +override the desktop app's default settings if desired. Running from Docker =================== diff --git a/docs/config.md b/docs/config.md new file mode 100644 index 00000000..e6878911 --- /dev/null +++ b/docs/config.md @@ -0,0 +1,111 @@ +Configuration +============= + +You can configure the app by copying `config.sample.json` to +`config.json` and customising it: + +For a good example, see https://riot.im/develop/config.json. + +1. `default_server_config` sets the default homeserver and identity server URL for + Riot to use. The object is the same as returned by [https:///.well-known/matrix/client](https://matrix.org/docs/spec/client_server/latest.html#get-well-known-matrix-client), + with added support for a `server_name` under the `m.homeserver` section to display + a custom homeserver name. Alternatively, the config can contain a `default_server_name` + instead which is where Riot will go to get that same object, although this option is + deprecated - see the `.well-known` link above for more information on using this option. + Note that the `default_server_name` is used to get a complete server configuration + whereas the `server_name` in the `default_server_config` is for display purposes only. + * *Note*: The URLs can also be individually specified as `default_hs_url` and + `default_is_url`, however these are deprecated. They are maintained for backwards + compatibility with older configurations. `default_is_url` is respected only + if `default_hs_url` is used. + * The identity server is used for verifying third party identifiers like emails + and phone numbers. It is not used to store your password or account information. + If not provided, the identity server defaults to vector.im unless `disable_identity_server` + is set to true in the config. Currently the only two public identity servers + are https://matrix.org and https://vector.im, however in future identity servers + will be decentralised. + * Riot will fail to load if a mix of `default_server_config`, `default_server_name`, or + `default_hs_url` is specified. When multiple sources are specified, it is unclear + which should take priority and therefore the application cannot continue. +1. `features`: Lookup of optional features that may be `enable`d, `disable`d, or exposed to the user + in the `labs` section of settings. The available optional experimental features vary from + release to release. Some of the available features are described in the Labs Feature section + of this README. +1. `showLabsSettings`: Shows the "labs" tab of user settings even when no `features` are enabled + or present. Useful for getting at settings which may be otherwise hidden. +1. `brand`: String to pass to your homeserver when configuring email notifications, to let the + homeserver know what email template to use when talking to you. +1. `branding`: Configures various branding and logo details, such as: + 1. `welcomeBackgroundUrl`: An image to use as a wallpaper outside the app + during authentication flows + 1. `authHeaderLogoUrl`: An logo image that is shown in the header during + authentication flows + 1. `authFooterLinks`: a list of links to show in the authentication page footer: + `[{"text": "Link text", "url": "https://link.target"}, {"text": "Other link", ...}]` +1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations + server is not Riot and normally not your homeserver either. The integration server settings + may be left blank to disable integrations. +1. `integrations_rest_url`: URL to the REST interface for the integrations server. +1. `integrations_widgets_urls`: list of URLs to the REST interface for the widget integrations server. +1. `bug_report_endpoint_url`: endpoint to send bug reports to (must be running a + https://github.com/matrix-org/rageshake server). Bug reports are sent when a user clicks + "Send Logs" within the application. Bug reports can be disabled by leaving the + `bug_report_endpoint_url` out of your config file. +1. `roomDirectory`: config for the public room directory. This section is optional. +1. `roomDirectory.servers`: List of other homeservers' directories to include in the drop + down list. Optional. +1. `default_theme`: name of theme to use by default (e.g. 'light') +1. `update_base_url` (electron app only): HTTPS URL to a web server to download + updates from. This should be the path to the directory containing `macos` + and `win32` (for update packages, not installer packages). +1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display + encrypted file attachments. This MUST be hosted on a completely separate domain to + anything else since it is used to isolate the privileges of file attachments to this + domain. Default: `https://usercontent.riot.im/v1.html`. This needs to contain v1.html from + https://github.com/matrix-org/usercontent/blob/master/v1.html +1. `piwik`: Analytics can be disabled by setting `piwik: false` or by leaving the piwik config + option out of your config file. If you want to enable analytics, set `piwik` to be an object + containing the following properties: + 1. `url`: The URL of the Piwik instance to use for collecting analytics + 1. `whitelistedHSUrls`: a list of HS URLs to not redact from the analytics + 1. `whitelistedISUrls`: a list of IS URLs to not redact from the analytics + 1. `siteId`: The Piwik Site ID to use when sending analytics to the Piwik server configured above +1. `welcomeUserId`: the user ID of a bot to invite whenever users register that can give them a tour +1. `embeddedPages`: Configures the pages displayed in portions of Riot that + embed static files, such as: + 1. `welcomeUrl`: Initial content shown on the outside of the app when not + logged in. Defaults to `welcome.html` supplied with Riot. + 1. `homeUrl`: Content shown on the inside of the app when a specific room is + not selected. By default, no home page is configured. If one is set, a + button to access it will be shown in the top left menu. +1. `defaultCountryCode`: The ISO 3166 alpha2 country code to use when showing + country selectors, like the phone number input on the registration page. + Defaults to `GB` if the given code is unknown or not provided. + +Note that `index.html` also has an og:image meta tag that is set to an image +hosted on riot.im. This is the image used if links to your copy of Riot +appear in some websites like Facebook, and indeed Riot itself. This has to be +static in the HTML and an absolute URL (and HTTP rather than HTTPS), so it's +not possible for this to be an option in config.json. If you'd like to change +it, you can build Riot, but run +`RIOT_OG_IMAGE_URL="http://example.com/logo.png" yarn build`. +Alternatively, you can edit the `og:image` meta tag in `index.html` directly +each time you download a new version of Riot. + +Desktop app configuration +========================= + +To run multiple instances of the desktop app for different accounts, you can +launch the executable with the `--profile` argument followed by a unique +identifier, e.g `riot-web --profile Work` for it to run a separate profile and +not interfere with the default one. + +Alternatively, a custom location for the profile data can be specified using the +`--profile-dir` flag followed by the desired path. + ++ `%APPDATA%\$NAME\config.json` on Windows ++ `$XDG_CONFIG_HOME\$NAME\config.json` or `~/.config/$NAME/config.json` on Linux ++ `~Library/Application Support/$NAME/config.json` on macOS + +In the paths above, `$NAME` is typically `Riot`, unless you use `--profile +$PROFILE` in which case it becomes `Riot-$PROFILE`. From e49583f8e05d36d73ba3ea803220f13b9aa1ae21 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 27 Jun 2019 12:09:58 -0600 Subject: [PATCH 042/767] Copy from toml --- src/i18n/strings/en_EN.json | 3 ++- src/vector/index.js | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index f09f6209..8fc45a29 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,5 +1,6 @@ { - "Your Riot configuration has invalid JSON in it. Please correct the problem and reload the page. The message from the parser is: %(message)s": "Your Riot configuration has invalid JSON in it. Please correct the problem and reload the page. The message from the parser is: %(message)s", + "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.", + "The message from the parser is: %(message)s": "The message from the parser is: %(message)s", "Invalid JSON": "Invalid JSON", "Your Riot is misconfigured": "Your Riot is misconfigured", "Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.", diff --git a/src/vector/index.js b/src/vector/index.js index 29399b70..52379257 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -304,10 +304,21 @@ async function loadApp() { // Now that we've loaded the theme (CSS), display the config syntax error if needed. if (configSyntaxError) { - const errorMessage = _t( - "Your Riot configuration has invalid JSON in it. Please correct the problem and reload the page. " + - "The message from the parser is: %(message)s", - {message: configError.err.message || _t("Invalid JSON")}, + const errorMessage = ( +
+

+ {_t( + "Your Riot configuration contains invalid JSON. Please correct the problem " + + "and reload the page.", + )} +

+

+ {_t( + "The message from the parser is: %(message)s", + {message: configError.err.message || _t("Invalid JSON")}, + )} +

+
); const GenericErrorPage = sdk.getComponent("structures.GenericErrorPage"); From 320f3198eac55ee1597a435d1374d8fd19c98b74 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 27 Jun 2019 20:33:15 +0100 Subject: [PATCH 043/767] Fix Electron vector: links Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/webcontents-handler.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/electron_app/src/webcontents-handler.js b/electron_app/src/webcontents-handler.js index 4bfb7876..2880cf37 100644 --- a/electron_app/src/webcontents-handler.js +++ b/electron_app/src/webcontents-handler.js @@ -36,7 +36,11 @@ function onWindowOrNavigate(ev, target) { } function onLinkContextMenu(ev, params) { - const url = params.linkURL || params.srcURL; + let url = params.linkURL || params.srcURL; + + if (url.startsWith('vector://vector/webapp')) { + url = "https://riot.im/app/" + url.substring(23); + } const popupMenu = new Menu(); // No point trying to open blob: URLs in an external browser: it ain't gonna work. From 575f013bc9e34f1280b227103450558f09dcd072 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 27 Jun 2019 20:59:11 +0100 Subject: [PATCH 044/767] Add e2e/warning.svg to preload Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/vector/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vector/index.html b/src/vector/index.html index f24007c9..40134a5b 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -41,6 +41,7 @@ +