From 045b0b9889772e8b5687a44ceb4795a481fc60c9 Mon Sep 17 00:00:00 2001 From: kaiyou Date: Tue, 4 Dec 2018 16:00:16 +0100 Subject: [PATCH 001/249] Add a two-stages Dockerfile for building Riot --- Dockerfile | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..a76d7362 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +# Builder +FROM node:alpine as builder + +COPY . /src + +WORKDIR /src + +RUN apk add --no-cache git \ + && npm install \ + && npm run build + + +# App +FROM nginx:latest + +COPY --from=builder /src/webapp /app +COPY config.sample.json /app/config.json + +RUN rm -rf /usr/share/nginx/html \ + && ln -s /app /usr/share/nginx/html From e47fae034a84f5eb6c3b6e2f02124b8d792765b3 Mon Sep 17 00:00:00 2001 From: kaiyou Date: Thu, 6 Dec 2018 10:00:20 +0100 Subject: [PATCH 002/249] Add some layers to cache installed dependencies at build time --- Dockerfile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a76d7362..bb312ab1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,15 @@ # Builder FROM node:alpine as builder -COPY . /src +RUN apk add --no-cache git WORKDIR /src -RUN apk add --no-cache git \ - && npm install \ - && npm run build +COPY package.json /src/package.json +RUN npm install + +COPY . /src +RUN npm run build # App From b6da3146927d1c2c64f6ebcafe29da4766b35877 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 8 Apr 2019 16:15:05 +0200 Subject: [PATCH 003/249] bump js-sdk to 1.0.4 and react-sdk to 1.0.7 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 630edfd6..310ce57a 100644 --- a/package.json +++ b/package.json @@ -70,8 +70,8 @@ "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279", "gfm.css": "^1.1.2", "highlight.js": "^9.13.1", - "matrix-js-sdk": "1.0.3", - "matrix-react-sdk": "1.0.6", + "matrix-js-sdk": "1.0.4", + "matrix-react-sdk": "1.0.7", "modernizr": "^3.6.0", "olm": "https://matrix.org/packages/npm/olm/olm-3.1.0-pre1.tgz", "prop-types": "^15.6.2", From 659c29cf779f40fe60bda36d94174e9eed054dfa Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 8 Apr 2019 16:16:46 +0200 Subject: [PATCH 004/249] v1.0.7 --- 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 c51a7abb..ee6a40e5 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.0.6", + "version": "1.0.7", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "dependencies": { From 44258ffa4b9ca01f1cfdbbe7d40e0ddd8d591147 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 8 Apr 2019 16:18:21 +0200 Subject: [PATCH 005/249] Prepare changelog for v1.0.7 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90a4cf98..ba13e505 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +Changes in [1.0.7](https://github.com/vector-im/riot-web/releases/tag/v1.0.7) (2019-04-08) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.6...v1.0.7) + + * Hotfix: bump js-sdk to 1.0.4, see https://github.com/matrix-org/matrix-js-sdk/releases/tag/v1.0.4 + Changes in [1.0.6](https://github.com/vector-im/riot-web/releases/tag/v1.0.6) (2019-04-01) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.6-rc.1...v1.0.6) From f76b30af15b60f90a35d7c273fe868209e906a83 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Mon, 8 Apr 2019 16:18:22 +0200 Subject: [PATCH 006/249] v1.0.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 310ce57a..eed4fd2c 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.0.6", + "version": "1.0.7", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { From 8a48d9e86b471ad9d2700eb8fd40bc63c35ddf19 Mon Sep 17 00:00:00 2001 From: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> Date: Mon, 8 Apr 2019 17:11:58 +0100 Subject: [PATCH 007/249] Remove vector-electron-desktop from README The repo (https://github.com/iskrisis/vector-electron-desktop) very clearly states not to use it anymore. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 24c3f8c8..e64c7a74 100644 --- a/README.md +++ b/README.md @@ -238,7 +238,6 @@ All electron packages go into `electron_app/dist/` Many thanks to @aviraldg for the initial work on the electron integration. Other options for running as a desktop app: - * https://github.com/krisak/vector-electron-desktop * @asdf:matrix.org points out that you can use nativefier and it just works(tm) ```bash From 527dc1982e70ecb0f32b3760b8e90912eecccd49 Mon Sep 17 00:00:00 2001 From: Nad Chishtie Date: Tue, 9 Apr 2019 16:40:04 +0200 Subject: [PATCH 008/249] Updated branding. --- src/vector/mobile_guide/index.html | 70 ++++++++++-------------------- 1 file changed, 22 insertions(+), 48 deletions(-) diff --git a/src/vector/mobile_guide/index.html b/src/vector/mobile_guide/index.html index 64068cff..af461d5f 100644 --- a/src/vector/mobile_guide/index.html +++ b/src/vector/mobile_guide/index.html @@ -3,6 +3,11 @@ From c70a2925a8b3c9f8d644862a61a1e9458c4bee41 Mon Sep 17 00:00:00 2001 From: Nad Chishtie Date: Tue, 9 Apr 2019 17:05:41 +0200 Subject: [PATCH 010/249] More responsive styling. --- src/vector/mobile_guide/index.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vector/mobile_guide/index.html b/src/vector/mobile_guide/index.html index b4c65b3b..e5efc721 100644 --- a/src/vector/mobile_guide/index.html +++ b/src/vector/mobile_guide/index.html @@ -1,3 +1,5 @@ + +
@@ -169,9 +178,9 @@ h1::after { + TODO: Strip out these comments and rely on the guest flag --> -
+
_t("Need help?")
From 42be1d633c8639d24024d634891306e620beff35 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 4 Jun 2019 23:44:33 -0600 Subject: [PATCH 157/249] Do not fail on server liveliness checks during startup Also warn about deprecated config option usage. See https://github.com/vector-im/riot-web/issues/9828 --- README.md | 8 ++++---- src/vector/index.js | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cf86f37f..dba59fd7 100644 --- a/README.md +++ b/README.md @@ -113,10 +113,10 @@ For a good example, see https://riot.im/develop/config.json. 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 - see the `.well-known` - link above for more information. 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. + 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 diff --git a/src/vector/index.js b/src/vector/index.js index ad490267..6ca06b31 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -465,6 +465,11 @@ async function verifyServerConfig() { // context of email validation. Because we don't respect them otherwise, we do not need // to parse or consider them here. + // Note: Although we throw all 3 possible configuration options through a .well-known-style + // verification, we do not care if the servers are online at this point. We do moderately + // care if they are syntactically correct though, so we shove them through the .well-known + // validators for that purpose. + const config = SdkConfig.get(); let wkConfig = config['default_server_config']; // overwritten later under some conditions const serverName = config['default_server_name']; @@ -486,6 +491,10 @@ async function verifyServerConfig() { if (hsUrl) { console.log("Config uses a default_hs_url - constructing a default_server_config using this information"); + console.warn( + "DEPRECATED CONFIG OPTION: In the future, default_hs_url will not be accepted. Please use " + + "default_server_config instead.", + ); wkConfig = { "m.homeserver": { @@ -507,10 +516,14 @@ async function verifyServerConfig() { if (serverName) { console.log("Config uses a default_server_name - doing .well-known lookup"); + console.warn( + "DEPRECATED CONFIG OPTION: In the future, default_server_name will not be accepted. Please " + + "use default_server_config instead.", + ); discoveryResult = await AutoDiscovery.findClientConfig(serverName); } - validatedConfig = AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, discoveryResult); + validatedConfig = AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, discoveryResult, true); } catch (e) { const {hsUrl, isUrl, userId} = Lifecycle.getLocalStorageSessionVars(); if (hsUrl && userId) { @@ -518,7 +531,7 @@ async function verifyServerConfig() { console.warn("A session was found - suppressing config error and using the session's homeserver"); console.log("Using pre-existing hsUrl and isUrl: ", {hsUrl, isUrl}); - validatedConfig = await AutoDiscoveryUtils.validateServerConfigWithStaticUrls(hsUrl, isUrl); + validatedConfig = await AutoDiscoveryUtils.validateServerConfigWithStaticUrls(hsUrl, isUrl, true); } else { // the user is not logged in, so scream throw e; From c68a621a715b047c0bdf8886dc24f5cc359a02fe Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 5 Jun 2019 09:53:22 -0600 Subject: [PATCH 158/249] Fix tests for liveliness checks --- test/app-tests/loading.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index 8e7a7807..0450d9fc 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -240,6 +240,10 @@ describe('loading:', function() { uriFragment: "#/room/!room:id", }); + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + Promise.delay(1).then(() => { // at this point, we're trying to do a guest registration; // we expect a spinner @@ -277,6 +281,10 @@ describe('loading:', function() { uriFragment: "#/login", }); + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + return awaitLoginComponent(matrixChat).then(() => { // we expect a single component ReactTestUtils.findRenderedComponentWithType( @@ -285,8 +293,13 @@ describe('loading:', function() { // the only outstanding request should be a GET /login // (in particular there should be no /register request for // guest registration). + const allowedRequests = [ + "/_matrix/client/r0/login", + "/versions", + "/api/v1", + ]; for (const req of httpBackend.requests) { - if (req.method === 'GET' && req.path.endsWith('/_matrix/client/r0/login')) { + if (req.method === 'GET' && allowedRequests.find(p => req.path.endsWith(p))) { continue; } @@ -387,6 +400,10 @@ describe('loading:', function() { }); it('shows a login view', function() { + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + // we expect a single component ReactTestUtils.findRenderedComponentWithType( matrixChat, sdk.getComponent('structures.auth.Login'), @@ -395,8 +412,13 @@ describe('loading:', function() { // the only outstanding request should be a GET /login // (in particular there should be no /register request for // guest registration, nor /sync, etc). + const allowedRequests = [ + "/_matrix/client/r0/login", + "/versions", + "/api/v1", + ]; for (const req of httpBackend.requests) { - if (req.method === 'GET' && req.path.endsWith('/_matrix/client/r0/login')) { + if (req.method === 'GET' && allowedRequests.find(p => req.path.endsWith(p))) { continue; } @@ -405,6 +427,10 @@ describe('loading:', function() { }); it('shows the homepage after login', function() { + // Pass the liveliness checks + httpBackend.when("GET", "/versions").respond(200, {versions: ["r0.4.0"]}); + httpBackend.when("GET", "/api/v1").respond(200, {}); + return completeLogin(matrixChat).then(() => { // we should see a home page, even though we previously had // a stored mx_last_room_id From 490595cb35880a3ed39087fdf52eeba838d0dddf Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 5 Jun 2019 11:32:33 -0600 Subject: [PATCH 159/249] Use new copy for big red box --- src/i18n/strings/en_EN.json | 2 +- src/vector/index.js | 12 ++---------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 7f09a09f..2718b8e4 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,6 +1,6 @@ { "Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below", + "Your Riot is misconfigured": "Your Riot is misconfigured", "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/index.js b/src/vector/index.js index 6ca06b31..597b3f37 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -368,20 +368,12 @@ async function loadApp() { let errorMessage = err.translatedMessage || _t("Unexpected error preparing the app. See console for details."); - errorMessage = - {_t( - "This installation of Riot seems to have an invalid server configuration. " + - "If you are the administrator, please correct the error below", - )} -
-
- {errorMessage} -
; + errorMessage = {errorMessage}; // Like the compatibility page, AWOOOOOGA at the user const GenericErrorPage = sdk.getComponent("structures.GenericErrorPage"); window.matrixChat = ReactDOM.render( - , + , document.getElementById('matrixchat'), ); }); From f40226459b427c3472cfc540d2bb90556a609c16 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Tue, 4 Jun 2019 17:48:58 +0000 Subject: [PATCH 160/249] 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 d381a4a4..00e03eee 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -45,5 +45,6 @@ "Room Directory": "Директория със стаи", "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.": "Невалидна конфигурация: не е указан сървър по подразбиране." + "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 изглежда няма валидна конфигурация за сървър. Ако сте администраторът, моля поправете грешката по-долу" } From 9ca7d1bf56f1febbaf49a89503862cd36e59ee40 Mon Sep 17 00:00:00 2001 From: Mani Farone Date: Wed, 5 Jun 2019 06:20:30 +0000 Subject: [PATCH 161/249] 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index 00e03eee..39137d86 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -9,7 +9,7 @@ "Dismiss": "Затвори", "powered by Matrix": "базирано на Matrix", "Welcome to Riot.im": "Добре дошли в Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализиран, шифрован чат и колаборация базирани на [matrix]", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализиран, шифрован чат и съвместна работа, базирани на [matrix]", "Search the room directory": "Търсене в директорията със стаи", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix съществуват много стаи, свързани към вече съществуващи мрежи (Slack, IRC, Gitter и т.н.) или независими такива. Разгледайте директорията!", "Chat with Riot Bot": "Чати с Riot Bot", @@ -37,7 +37,7 @@ "Dev chat for the Dendrite dev team": "Чат за разработващия екип на Dendrite", "Co-ordination for Riot translators": "Координация за преводачи на 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.": "Може да настроите и собствен сървър за самоличност, но така няма да можете да каните потребители по имейл адрес или да бъдете поканени посредством вашия имейл адрес.", - "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.": "Може да използвате настройките за собствен сървър за да влезете в друг Matrix сървър, чрез указване на адреса му. Това Ви позволява да използвате Riot със съществуващ Matrix акаунт принадлежащ към друг сървър.", + "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.": "Може да използвате настройките за собствен сървър за да влезете в друг Matrix сървър, чрез указване на адреса му. Това ви позволява да използвате Riot със съществуващ Matrix акаунт, принадлежащ към друг сървър.", "Sign In": "Вписване", "Create Account": "Създай акаунт", "Need help?": "Нужда от помощ?", From d3dc6f42d1b758775b2c0a6b0c033b9dd99a9f08 Mon Sep 17 00:00:00 2001 From: Edgars Voroboks Date: Tue, 4 Jun 2019 18:26:14 +0000 Subject: [PATCH 162/249] Translated using Weblate (Latvian) 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/lv/ --- src/i18n/strings/lv.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 37c31462..afeb7743 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -41,5 +41,9 @@ "Create Account": "Izveidot kontu", "Need help?": "Nepieciešama palīdzība?", "Explore rooms": "Atklāt istabas", - "Room Directory": "Istabu Katalogs" + "Room Directory": "Istabu Katalogs", + "Unexpected error preparing the app. See console for details.": "Negaidīta kļūda, sagatavojot lietotni. Sīkāku informāciju skatiet konsolē.", + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Šai Riot instalācijai ir nekorekta servera konfigurācija. Ja esat administrators, lūdzu, izlabojiet tālāk norādīto kļūdu", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Nederīga konfigurācija: var norādīt tikai vienu no default_server_config, default_server_name, vai default_hs_url.", + "Invalid configuration: no default server specified.": "Nekorekta konfigurācija: nav norādīts noklusējuma serveris." } From 1d316044a78739e045b0ca2e52ac6eaa15ab4d52 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 7 Jun 2019 11:44:26 +0100 Subject: [PATCH 163/249] Add funding details for GitHub sponsor button --- .github/FUNDING.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..afc29f01 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +patreon: matrixdotorg +liberapay: matrixdotorg From 4d6534bfe73d0938a3236117c922ead6df7fad80 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Fri, 7 Jun 2019 13:46:51 +0000 Subject: [PATCH 164/249] Translated using Weblate (Chinese (Traditional)) 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/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index cb654182..86f31cb6 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.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 f414030e87993202cfe86b847cc82ec6c37bf996 Mon Sep 17 00:00:00 2001 From: Nathan Follens Date: Fri, 7 Jun 2019 16:01:47 +0000 Subject: [PATCH 165/249] Translated using Weblate (Dutch) 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/nl/ --- src/i18n/strings/nl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index adfe750f..648e1696 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -46,5 +46,6 @@ "Unexpected error preparing the app. See console for details.": "Er is een onverwachte fout opgetreden bij het voorbereiden van de app. Bekijk de console voor details.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ongeldige configuratie: kan slechts één van default_server_config, default_server_name, of default_hs_url opgeven.", "Invalid configuration: no default server specified.": "Ongeldige configuratie: geen standaardserver opgegeven.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "De serverconfiguratie van deze Riot-instantie lijkt ongeldig. Als u de beheerder bent, gelieve dan de fout hieronder te corrigeren" + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "De serverconfiguratie van deze Riot-instantie lijkt ongeldig. Als u de beheerder bent, gelieve dan de fout hieronder te corrigeren", + "Your Riot is misconfigured": "Uw Riot is verkeerd geconfigureerd" } From 96870367cf87f33cdd1aebd5ddd3b5af4f1a6cb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Fri, 7 Jun 2019 16:17:35 +0000 Subject: [PATCH 166/249] Translated using Weblate (French) 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/fr/ --- src/i18n/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 3efe9db5..f0921c2c 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -46,5 +46,6 @@ "Unexpected error preparing the app. See console for details.": "Une erreur inattendue est survenue pendant la préparation de l’application. Consultez la console pour avoir des détails.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuration invalide : il ne faut spécifier qu’un des trois champs entre default_server_config, default_server_name et default_hs_url.", "Invalid configuration: no default server specified.": "Configuration invalide : aucun serveur par défaut spécifié.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Cette installation de Riot semble avoir une configuration de serveur non valide. Si vous êtes l’administrateur, corrigez l’erreur ci-dessous" + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Cette installation de Riot semble avoir une configuration de serveur non valide. Si vous êtes l’administrateur, corrigez l’erreur ci-dessous", + "Your Riot is misconfigured": "Votre Riot est mal configuré" } From 10b2156b1269d38ca9ff89acd166fc13fdc1f83f Mon Sep 17 00:00:00 2001 From: Szimszon Date: Fri, 7 Jun 2019 14:39:16 +0000 Subject: [PATCH 167/249] Translated using Weblate (Hungarian) 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/hu/ --- src/i18n/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index b22e7c91..20191226 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -46,5 +46,6 @@ "Unexpected error preparing the app. See console for details.": "Váratlan hiba történt az alkalmazás előkészítésénél. A részletekért nézd meg a konzolt.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Érvénytelen konfiguráció: csak egyet lehet megadni a default_server_config, default_server_name és default_hs_url közül.", "Invalid configuration: no default server specified.": "Érvénytelen konfiguráció: nincs megadva alapértelmezett szerver.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "A telepített Riotnak úgy tűnik hibás a szerver beállítása. Ha te vagy az adminisztrátor, kérlek javítsd az alábbi hibát" + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "A telepített Riotnak úgy tűnik hibás a szerver beállítása. Ha te vagy az adminisztrátor, kérlek javítsd az alábbi hibát", + "Your Riot is misconfigured": "A Riotod hibásan van beállítva" } From 662d21d1aadd068af37299998c00091f21428f1f Mon Sep 17 00:00:00 2001 From: Nathan Follens Date: Fri, 7 Jun 2019 16:02:02 +0000 Subject: [PATCH 168/249] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/vls.json b/src/i18n/strings/vls.json index 9ee493bb..285e5409 100644 --- a/src/i18n/strings/vls.json +++ b/src/i18n/strings/vls.json @@ -19,5 +19,6 @@ "Need help?": "Hulp nodig?", "Chat with Riot Bot": "Chattn me Riot-robot", "Explore rooms": "Gesprekkn ountdekkn", - "Room Directory": "Gesprekscatalogus" + "Room Directory": "Gesprekscatalogus", + "Your Riot is misconfigured": "Je Riot is verkeerd geconfigureerd gewist" } From bea7eff017ced4209dd5941c3cf4b572b05ca316 Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Sat, 8 Jun 2019 10:25:19 +0000 Subject: [PATCH 169/249] Translated using Weblate (Albanian) 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/sq/ --- src/i18n/strings/sq.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 281b8142..2970fb6a 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -46,5 +46,6 @@ "Unexpected error preparing the app. See console for details.": "Gabim i papritur gjatë përgatitjes së aplikacionit. Për hollësi, shihni konsolën.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Formësim i pavlefshëm: mund të caktohet vetëm një prej default_server_config, default_server_name, ose default_hs_url.", "Invalid configuration: no default server specified.": "Formësim i pavlefshëm: s’është caktuar shërbyes parazgjedhje.", - "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Ky instalim i Riot-it duket se ka një formësim të pavlefshëm për shërbyesin. Nëse jeni një përgjegjës, ju lutemi, ndreqni gabimin më poshtë" + "This installation of Riot seems to have an invalid server configuration. If you are the administrator, please correct the error below": "Ky instalim i Riot-it duket se ka një formësim të pavlefshëm për shërbyesin. Nëse jeni një përgjegjës, ju lutemi, ndreqni gabimin më poshtë", + "Your Riot is misconfigured": "Riot-i juaj është i keqformësuar" } From 9554a39a77b543c906eda6ce1ef03ad25eb67b44 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Mon, 10 Jun 2019 06:29:11 +0000 Subject: [PATCH 170/249] Translated using Weblate (Basque) Currently translated at 95.2% (20 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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 7b42bd41..b7c84ece 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -42,5 +42,8 @@ "Create Account": "Sortu kontua", "Need help?": "Laguntza behar?", "Explore rooms": "Arakatu gelak", - "Room Directory": "Gelen direktorioa" + "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." } From 7a8f2cf8cd73e682e7c3a8c8fc221587b6131b1f Mon Sep 17 00:00:00 2001 From: Tirifto Date: Mon, 10 Jun 2019 11:20:21 +0000 Subject: [PATCH 171/249] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index cde6da07..2c961b2e 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -45,5 +45,6 @@ "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.", "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." + "Invalid configuration: no default server specified.": "Nevalida agordo: neniu implicita servilo estas specifita.", + "Your Riot is misconfigured": "Via kliento Riot estas misagordita" } From 504133fa1b53b26c6b9bf161481f7ccec3b04b06 Mon Sep 17 00:00:00 2001 From: Walter Date: Sun, 9 Jun 2019 18:24:05 +0000 Subject: [PATCH 172/249] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index fabd907d..58781df0 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.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 dfb7c163a0b6ba6066d79bbb5200a58753b15c24 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 11 Jun 2019 14:03:05 +0100 Subject: [PATCH 173/249] electron 4.2.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4ca8682a..96458d7b 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ }, "build": { "appId": "im.riot.app", - "electronVersion": "4.2.2", + "electronVersion": "4.2.4", "files": [ "node_modules/**", "src/**", From 974da9947cdaea1e64f13868c23492418c413fd7 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 12 Jun 2019 12:10:37 +0100 Subject: [PATCH 174/249] 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 175/249] 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 176/249] 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 177/249] 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 178/249] 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 179/249] 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 180/249] 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 181/249] 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 182/249] 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 183/249] 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 184/249] 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 185/249] 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 186/249] 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 187/249] 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 188/249] 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 189/249] 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 190/249] 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 191/249] 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 192/249] 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 193/249] 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 194/249] 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 195/249] 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 196/249] 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 197/249] 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 198/249] 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 199/249] 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 200/249] 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 201/249] 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 202/249] 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 203/249] 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 204/249] 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 205/249] 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 206/249] 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 207/249] 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 208/249] 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 209/249] 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 @@ +