Compare commits

..

202 Commits

Author SHA1 Message Date
RiotRobot
6546108307 v1.2.3 2019-07-08 11:12:04 +01:00
RiotRobot
4a33c0af6e Prepare changelog for v1.2.3 2019-07-08 11:12:03 +01:00
RiotRobot
a53d7edc7f v1.2.3 2019-07-08 11:10:31 +01:00
RiotRobot
090b2dbd30 Upgrade to JS SDK 2.1.0 and React SDK 1.3.0 2019-07-08 10:58:13 +01:00
RiotRobot
6e502478e3 v1.2.3-rc.1 2019-07-03 17:48:55 +01:00
RiotRobot
72052b913f Prepare changelog for v1.2.3-rc.1 2019-07-03 17:48:55 +01:00
RiotRobot
1ce8f3844b v1.2.3-rc.1 2019-07-03 17:47:41 +01:00
RiotRobot
751316f388 Upgrade to JS SDK 2.1.0-rc.1 and React SDK 1.3.0-rc.1 2019-07-03 17:25:05 +01:00
J. Ryan Stinnett
e1282081bf Merge pull request #10247 from vector-im/jryans/update-base-url
Change update URL to match new host
2019-07-03 16:28:21 +01:00
J. Ryan Stinnett
ba5cae554c Upgrade electron-builder, electron-builder-squirrel-windows to latest 2019-07-03 16:06:12 +01:00
J. Ryan Stinnett
ea665da391 Upgrade to Electron 4.2.6 2019-07-03 15:53:23 +01:00
J. Ryan Stinnett
c9bd1b8510 Change update URL to match new host 2019-07-03 15:47:52 +01:00
David Baker
9de26ed062 Merge pull request #10219 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2019-07-01 10:40:32 +01:00
Benjamin
8956661eb7 Translated using Weblate (Esperanto)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2019-06-30 14:29:43 +00:00
Benjamin
325a083e89 Translated using Weblate (English (United States))
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/en_US/
2019-06-30 14:29:43 +00:00
Jeff Huang
5918f757cd Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2019-06-30 14:29:43 +00:00
Weblate
75e426978c Merge branch 'origin/develop' into Weblate. 2019-06-28 17:09:38 +00:00
Nathan Follens
2ea640cee3 Translated using Weblate (West Flemish)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/vls/
2019-06-28 17:09:38 +00:00
Szimszon
d52ccc0500 Translated using Weblate (Hungarian)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2019-06-28 17:09:38 +00:00
Kévin C
63e76e109f Translated using Weblate (French)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2019-06-28 17:09:38 +00:00
Nathan Follens
c8009487ab Translated using Weblate (Dutch)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2019-06-28 17:09:38 +00:00
Osoitz
271be70806 Translated using Weblate (Basque)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eu/
2019-06-28 17:09:37 +00:00
Besnik Bleta
56a65d95e3 Translated using Weblate (Albanian)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sq/
2019-06-28 17:09:37 +00:00
J. Ryan Stinnett
0e9e7612a4 Merge pull request #10195 from vector-im/jryans/config-docs
Extract configuration docs to separate file
2019-06-28 18:09:32 +01:00
J. Ryan Stinnett
b93388f504 Restore config.json section for old Riot
Riot includes a link to the config.json section of the README, so let's restore
it (at least for a while) keep that link working.
2019-06-28 13:50:54 +01:00
Weblate
cdda490fc7 Merge branch 'origin/develop' into Weblate. 2019-06-27 23:24:48 +00:00
Travis Ralston
9d14f92c01 Merge pull request #10197 from vector-im/t3chguy/preload_warning.svg
Add e2e/warning.svg to preload
2019-06-27 17:24:44 -06:00
Weblate
3a966add42 Merge branch 'origin/develop' into Weblate. 2019-06-27 23:22:56 +00:00
Tuomas Hietala
8fc125c5b5 Translated using Weblate (Finnish)
Currently translated at 100.0% (24 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fi/
2019-06-27 23:22:56 +00:00
Travis Ralston
2e241fda2c Merge pull request #10196 from vector-im/t3chguy/fix_vector_links
Fix Electron vector: links
2019-06-27 17:22:51 -06:00
Weblate
846257957e Merge branch 'origin/develop' into Weblate. 2019-06-27 20:09:52 +00:00
Travis Ralston
975f177a23 Merge pull request #10193 from vector-im/travis/syntax-error
Display a red box of anger for config syntax errors
2019-06-27 14:09:47 -06:00
Michael Telatynski
575f013bc9 Add e2e/warning.svg to preload
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-27 20:59:11 +01:00
Michael Telatynski
320f3198ea Fix Electron vector: links
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-27 20:33:15 +01:00
Travis Ralston
e49583f8e0 Copy from toml 2019-06-27 12:09:58 -06:00
J. Ryan Stinnett
73d801cb1d 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
2019-06-27 19:08:33 +01:00
Travis Ralston
67664365bd Display a red box of anger for config syntax errors
Fixes https://github.com/vector-im/riot-web/issues/9519
2019-06-27 11:47:29 -06:00
Weblate
8530adc782 Merge branch 'origin/develop' into Weblate. 2019-06-27 12:49:07 +00:00
pebles
2c45299b6a 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/
2019-06-27 12:49:06 +00:00
Benjamin
97f031c623 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/
2019-06-27 12:49:06 +00:00
Michael Telatynski
2111db73a7 Merge pull request #10181 from vector-im/t3chguy/electron_config_via_plaf
Move config-getting to VectorBasePlatform
2019-06-27 13:49:00 +01:00
Michael Telatynski
01a78feb41 unexport getConfig, it was never imported externally 2019-06-27 11:17:56 +01:00
Michael Telatynski
a70f6de2e4 cleanup
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-26 21:11:27 +01:00
Michael Telatynski
dbd198ec07 delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-06-26 21:10:28 +01:00
Michael Telatynski
974797648f 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>
2019-06-26 21:08:04 +01:00
あかれぎ
c84ef8bdb5 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/
2019-06-26 11:29:28 +00:00
Tirifto
0fb17c91d8 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/
2019-06-26 11:29:28 +00:00
David Baker
fceb05e646 Merge pull request #10124 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2019-06-20 11:00:34 +01:00
Weblate
c0e81e7808 Merge branch 'origin/develop' into Weblate. 2019-06-19 15:04:21 +00:00
Tuomas Hietala
470f6a8cbc 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/
2019-06-19 15:04:20 +00:00
RiotRobot
6f1ce750bf Merge branch 'master' into develop 2019-06-19 16:03:22 +01:00
RiotRobot
672cf1a46e v1.2.2 2019-06-19 16:00:42 +01:00
RiotRobot
5f7ee3f4ee Prepare changelog for v1.2.2 2019-06-19 16:00:42 +01:00
RiotRobot
80262314f3 v1.2.2 2019-06-19 15:59:10 +01:00
RiotRobot
48b6f8c954 Released js-sdk & react-sdk 2019-06-19 15:55:02 +01:00
J. Ryan Stinnett
b7a19c6d16 Merge pull request #10097 from vector-im/jryans/linux-icons
Fix default Electron window and tray icons
2019-06-18 17:35:34 +01:00
Weblate
cece9a5028 Merge branch 'origin/develop' into Weblate. 2019-06-18 16:35:30 +00:00
J. Ryan Stinnett
f3bfb08280 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
2019-06-18 16:59:04 +01:00
J. Ryan Stinnett
292427c275 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
2019-06-18 16:58:43 +01:00
RiotRobot
db77d91500 v1.2.2-rc.2 2019-06-18 16:02:21 +01:00
RiotRobot
290a99ba85 Prepare changelog for v1.2.2-rc.2 2019-06-18 16:02:21 +01:00
RiotRobot
a86f1e8a90 v1.2.2-rc.2 2019-06-18 15:58:36 +01:00
RiotRobot
589aa19246 js-sdk & react-sdk rc.2 2019-06-18 15:57:30 +01:00
J. Ryan Stinnett
f10e7ac224 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
2019-06-18 14:31:19 +01:00
BenjaminVettori
9e5712594c 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/
2019-06-17 22:29:00 +00:00
Nathan Follens
c90cc096a1 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/
2019-06-16 08:28:56 +00:00
Le Dang Trung
f1a6651f04 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/
2019-06-16 08:28:56 +00:00
Vitaly Lipatov
a36013f2e0 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/
2019-06-16 08:28:55 +00:00
random
36cebd565a 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/
2019-06-16 08:28:55 +00:00
Slavi Pantaleev
fefa2ee036 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/
2019-06-16 08:28:55 +00:00
Osoitz
446a4b16ee 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/
2019-06-16 08:28:55 +00:00
RiotRobot
9af5aea687 v1.2.2-rc.1 2019-06-12 12:12:17 +01:00
RiotRobot
a413621efc Prepare changelog for v1.2.2-rc.1 2019-06-12 12:12:16 +01:00
RiotRobot
b751383702 v1.2.2-rc.1 2019-06-12 12:11:12 +01:00
RiotRobot
974da9947c js-sdk & react-sdk rc.1 2019-06-12 12:10:37 +01:00
Weblate
3b557c273f Merge branch 'origin/develop' into Weblate. 2019-06-11 13:06:33 +00:00
David Baker
8458aa7978 Merge pull request #10012 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2019-06-11 14:06:29 +01:00
Weblate
d5cdfe62d5 Merge branch 'origin/develop' into Weblate. 2019-06-11 13:03:19 +00:00
David Baker
dfb7c163a0 electron 4.2.4 2019-06-11 14:03:05 +01:00
Walter
504133fa1b 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/
2019-06-11 12:06:04 +00:00
Tirifto
7a8f2cf8cd 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/
2019-06-11 12:06:04 +00:00
Osoitz
9554a39a77 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/
2019-06-11 12:06:04 +00:00
Besnik Bleta
bea7eff017 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/
2019-06-09 11:06:01 +00:00
Weblate
3f6aef16eb Merge branch 'origin/develop' into Weblate. 2019-06-07 19:43:22 +00:00
Nathan Follens
662d21d1aa 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/
2019-06-07 19:43:22 +00:00
Szimszon
10b2156b12 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/
2019-06-07 19:43:22 +00:00
Kévin C
96870367cf 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/
2019-06-07 19:43:22 +00:00
Nathan Follens
f414030e87 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/
2019-06-07 19:43:22 +00:00
Jeff Huang
4d6534bfe7 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/
2019-06-07 19:43:22 +00:00
J. Ryan Stinnett
a00bceaff7 Merge pull request #9982 from vector-im/jryans/funding
Add funding details for GitHub sponsor button
2019-06-07 20:43:18 +01:00
Weblate
5ef2f185ad Merge branch 'origin/develop' into Weblate. 2019-06-07 13:43:56 +00:00
Travis Ralston
f5e5ad9670 Merge pull request #9960 from vector-im/travis/fail-fast-but-not-too-fast
Do not fail on server liveliness checks during startup
2019-06-07 07:43:51 -06:00
J. Ryan Stinnett
1d316044a7 Add funding details for GitHub sponsor button 2019-06-07 11:44:26 +01:00
Edgars Voroboks
d3dc6f42d1 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/
2019-06-06 07:19:38 +00:00
Mani Farone
9ca7d1bf56 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/
2019-06-06 07:19:38 +00:00
Slavi Pantaleev
f40226459b 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/
2019-06-06 07:19:38 +00:00
Travis Ralston
490595cb35 Use new copy for big red box 2019-06-05 11:32:33 -06:00
Travis Ralston
c68a621a71 Fix tests for liveliness checks 2019-06-05 09:53:22 -06:00
Travis Ralston
8ec1c1c29a Merge pull request #9957 from vector-im/travis/no-button-guest
Hide guest functions on the welcome page if not logged in
2019-06-05 07:24:09 -06:00
Travis Ralston
42be1d633c 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
2019-06-04 23:44:33 -06:00
Travis Ralston
608efaaae3 Hide guest functions on the welcome page if not logged in
Fixes https://github.com/vector-im/riot-web/issues/9546
2019-06-04 16:04:49 -06:00
J. Ryan Stinnett
428960aff2 Merge pull request #9953 from vector-im/jryans/add-langs-2019-06
Add Albanian and West Flemish languages
2019-06-04 18:04:43 +01:00
J. Ryan Stinnett
aaceaf097c Add Albanian language 2019-06-04 17:45:59 +01:00
J. Ryan Stinnett
1c42ee1a30 Add West Flemish language 2019-06-04 17:43:28 +01:00
J. Ryan Stinnett
352e5918b6 Merge pull request #9951 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2019-06-04 17:32:18 +01:00
Nathan Follens
858229aaf8 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/
2019-06-04 16:31:07 +00:00
Nathan Follens
7c3d3319c1 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/
2019-06-04 14:19:36 +00:00
Marco Cafolla
30307a8ae2 Translated using Weblate (Scots)
Currently translated at 4.8% (1 of 21 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sco/
2019-06-04 14:19:36 +00:00
Walter
a7d06eee2d 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/
2019-06-04 14:19:35 +00:00
random
10affe0d9c 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/
2019-06-04 14:19:35 +00:00
Walter
6549ce57e6 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/
2019-06-04 14:19:35 +00:00
Nathan Follens
dd636c1654 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/
2019-06-04 14:19:35 +00:00
Jeff Huang
4c43f7d102 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/
2019-06-04 14:19:35 +00:00
Besnik Bleta
6ea8c95c8c 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/
2019-06-04 14:19:35 +00:00
Nathan Follens
5cf6cef49d Added translation using Weblate (West Flemish) 2019-06-03 10:22:59 +00:00
Marco Cafolla
786e9bafc8 Added translation using Weblate (Scots) 2019-06-02 00:25:01 +00:00
Weblate
51f92b1eb4 Merge branch 'origin/develop' into Weblate. 2019-06-01 18:11:30 +00:00
Szimszon
261bbea934 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/
2019-06-01 18:11:30 +00:00
Kévin C
a4b5c233b7 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/
2019-06-01 18:11:30 +00:00
Travis Ralston
29eeb1eaf3 Merge pull request #9927 from vector-im/travis/default-country-code
Add docs for defaultCountryCode
2019-06-01 12:11:26 -06:00
Travis Ralston
cafae31827 Add docs for defaultCountryCode 2019-05-31 21:23:58 -06:00
Weblate
a38e5bde3a Merge branch 'origin/develop' into Weblate. 2019-05-31 17:03:43 +00:00
Travis Ralston
1459bfe7be Merge pull request #9892 from vector-im/travis/check-login-for-config
Use the user's pre-existing HS when config validation fails
2019-05-31 11:03:38 -06:00
Travis Ralston
81ec75f81d Change warning message 2019-05-31 10:44:20 -06:00
Weblate
86515e6814 Merge branch 'origin/develop' into Weblate. 2019-05-31 11:02:14 +00:00
RiotRobot
ada47d476c Merge branch 'master' into develop 2019-05-31 12:02:00 +01:00
RiotRobot
7446799e4b v1.2.1 2019-05-31 11:59:31 +01:00
RiotRobot
947e5ab582 Prepare changelog for v1.2.1 2019-05-31 11:59:31 +01:00
RiotRobot
6b93053a80 v1.2.1 2019-05-31 11:53:34 +01:00
RiotRobot
7c03bd128b Upgrade JS SDK to 2.0.0 and React SDK to 1.2.1 2019-05-31 11:52:42 +01:00
Weblate
b62c1277e5 Merge branch 'origin/develop' into Weblate. 2019-05-31 08:57:05 +00:00
Jeff Huang
688d73b143 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2019-05-31 08:57:05 +00:00
J. Ryan Stinnett
f4192e4f9d Merge pull request #9909 from vector-im/matthew/low_bandwidth
Low bandwidth mode
2019-05-31 09:56:59 +01:00
Travis Ralston
c5461b4509 Don't try and render null avatars in desktop notifications
as much fun as http://localhost:8080/null is to see
2019-05-30 20:04:16 -06:00
Travis Ralston
98f2d865b9 Add 'showLabsSettings' flag to docs+sample config 2019-05-30 20:03:42 -06:00
IevgenVovk
bba3fc01c9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/uk/
2019-05-30 20:19:28 +00:00
Walter
ed065fa43d Translated using Weblate (German)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2019-05-30 20:19:28 +00:00
Travis Ralston
52c3ff02ae appease the linter 2019-05-29 12:12:12 -06:00
Travis Ralston
48a634bff4 Use the user's pre-existing HS when config validation fails
Only applies if the user appears to be logged in. If the user is not logged in, we scream loudly.

This is a temporary measure for https://github.com/vector-im/riot-web/issues/9828

Fixes https://github.com/vector-im/riot-web/issues/9835
2019-05-29 12:07:31 -06:00
Weblate
bf7d059472 Merge branch 'origin/develop' into Weblate. 2019-05-29 15:27:56 +00:00
Walter
3e5bd82434 Translated using Weblate (Russian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2019-05-29 15:27:56 +00:00
RiotRobot
fcf8e246cf Merge branch 'master' into develop 2019-05-29 16:27:46 +01:00
RiotRobot
2af3d20a71 v1.2.0 2019-05-29 16:23:52 +01:00
RiotRobot
fde9a7a7ba Prepare changelog for v1.2.0 2019-05-29 16:23:52 +01:00
RiotRobot
d6fb0bc24f v1.2.0 2019-05-29 16:19:59 +01:00
RiotRobot
f4b1e3307d Upgrade SDKs to 1.2.0 2019-05-29 16:14:25 +01:00
Weblate
306479a77f Merge branch 'origin/develop' into Weblate. 2019-05-28 17:25:42 +00:00
Nathan Follens
bc264ceaaf Translated using Weblate (Dutch)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2019-05-28 17:25:42 +00:00
J. Ryan Stinnett
53d8341886 Merge pull request #9869 from vector-im/jryans/twemoji-windows
Fix Twemoji loading on Windows dev machines
2019-05-28 18:25:38 +01:00
J. Ryan Stinnett
95d36c1f29 Fix Twemoji loading on Windows dev machines
This corrects our path handling on Windows development machines for
paths referenced in JS and HTML files. Both images and fonts (like
Twemoji) were afflicted (with Windows-style backslash path delimiters),
but browsers seems to tolerate them in the `src` attribute of images, so
we didn't notice that variant before.
2019-05-28 14:31:42 +01:00
Weblate
ba14b27e9a Merge branch 'origin/develop' into Weblate. 2019-05-27 17:41:23 +00:00
Walter
d5dc7334a1 Translated using Weblate (Russian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ru/
2019-05-27 17:41:22 +00:00
Travis Ralston
982416b3f7 Merge pull request #9848 from spantaleev/make-docker-image-smaller
Base Docker image on nginx:alpine, not the larger nginx:latest
2019-05-27 11:41:18 -06:00
Besnik Bleta
a11ae18577 Translated using Weblate (Albanian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sq/
2019-05-27 12:19:23 +00:00
Slavi Pantaleev
4e63e3b0de Base Docker image on nginx:alpine, not the larger nginx:latest
`nginx:latest` is based on Debian Stretch and is listed as being 45MB,
while `nginx:alpine` is based on Alpine 3.9 and is just 7MB.

Basing the riot-web Docker image on `nginx:alpine` should
make it 38MB smaller compared to the current situation.

The nginx version seems to be "latest mainline" on both (currently 1.15.12),
judging by each Dockerfile:
- e5123eea0d/mainline/stretch/Dockerfile
- e5123eea0d/mainline/alpine/Dockerfile
2019-05-27 11:57:37 +03:00
random
7ea1193015 Translated using Weblate (Italian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2019-05-26 07:19:22 +00:00
Szimszon
5b69e7268e Translated using Weblate (Hungarian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2019-05-26 07:19:22 +00:00
Kévin C
1e61918d1c Translated using Weblate (French)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2019-05-26 07:19:22 +00:00
Tirifto
ee67cf7d49 Translated using Weblate (Esperanto)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2019-05-26 07:19:22 +00:00
wonx
58f20b4fe5 Translated using Weblate (Catalan)
Currently translated at 90.0% (18 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ca/
2019-05-26 07:19:22 +00:00
Mani Farone
9525989560 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bg/
2019-05-26 07:19:22 +00:00
Slavi Pantaleev
c600f328a1 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (20 of 20 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bg/
2019-05-26 07:19:22 +00:00
J. Ryan Stinnett
28ffca1f84 Ignore /electron_app/pub 2019-05-24 11:34:03 +01:00
J. Ryan Stinnett
e129db4978 Upgrade electron-builder 2019-05-24 11:29:02 +01:00
J. Ryan Stinnett
734d8a8151 Clarify Electron steps 2019-05-24 11:28:12 +01:00
Travis Ralston
afdaca0515 Merge pull request #9779 from vector-im/travis/feature/wellknown2
Validate homeserver configuration prior to loading the app
2019-05-23 10:56:19 -06:00
RiotRobot
52b2dbec85 v1.2.0-rc.1 2019-05-23 17:41:20 +01:00
RiotRobot
aa10d7aeed Prepare changelog for v1.2.0-rc.1 2019-05-23 17:41:20 +01:00
RiotRobot
7f7b3e747c v1.2.0-rc.1 2019-05-23 17:40:08 +01:00
RiotRobot
59fa374491 Upgrade SDKs to 1.2.0-rc.1 2019-05-23 17:39:03 +01:00
Travis Ralston
26d8056755 Merge branch 'develop' into travis/feature/wellknown2 2019-05-22 23:06:09 -06:00
Travis Ralston
b772bc75a9 Update copyright 2019-05-22 22:57:39 -06:00
David Baker
001b7fb799 electron 4.2.2 2019-05-22 12:51:41 +01:00
David Baker
260f819e38 Merge pull request #9802 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2019-05-22 12:45:41 +01:00
Weblate
6306bc0c90 Merge branch 'origin/develop' into Weblate. 2019-05-21 12:27:12 +00:00
Weblate
6ac035f0b1 Merge branch 'origin/develop' into Weblate. 2019-05-21 10:33:16 +00:00
Travis Ralston
fa9d2a81a3 Merge branch 'develop' into travis/feature/wellknown2 2019-05-20 19:48:54 -06:00
Weblate
c203d3356b Merge branch 'origin/develop' into Weblate. 2019-05-19 15:09:55 +00:00
Karol Kosek
d617d8ebb3 Translated using Weblate (Polish)
Currently translated at 89.5% (17 of 19 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pl/
2019-05-19 15:09:55 +00:00
Edgars Voroboks
43d2c3bbc8 Translated using Weblate (Latvian)
Currently translated at 100.0% (19 of 19 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/lv/
2019-05-19 15:09:55 +00:00
Filip Š
b54a53d1ac Translated using Weblate (Slovenian)
Currently translated at 100.0% (19 of 19 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sl/
2019-05-18 14:15:56 +00:00
Tuomas Hietala
bdb0f5e81c Translated using Weblate (Finnish)
Currently translated at 100.0% (19 of 19 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fi/
2019-05-18 14:15:55 +00:00
Fendo
29398a0ab5 Translated using Weblate (Esperanto)
Currently translated at 100.0% (19 of 19 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2019-05-18 14:15:55 +00:00
Travis Ralston
7a65dc96cd Merge pull request #9726 from vector-im/travis/wk/mobileguide
Show resolved homeserver configuration on the mobile guide
2019-05-17 11:01:42 -06:00
Travis Ralston
1ac5df3cd0 Merge branch 'develop' into travis/feature/wellknown2 2019-05-16 12:58:09 -06:00
Travis Ralston
39d1293350 Merge pull request #9721 from vector-im/travis/wk/fallback_hs
Flag the validated config as the default config
2019-05-16 12:47:01 -06:00
Travis Ralston
51f56719c0 Merge pull request #9719 from vector-im/travis/wk/clarify_is_hs_url
Clarify comment on is_url and hs_url handling
2019-05-16 08:41:34 -06:00
Travis Ralston
22cc33eb15 Do a simple .well-known lookup for default_server_name for mobile guide 2019-05-14 17:57:04 -06:00
Travis Ralston
559416dcae Show most homeserver options on the mobile guide
This doesn't cover default_server_name because that pulls in a questionable amount of JS.

See https://github.com/vector-im/riot-web/issues/9290
2019-05-14 17:00:06 -06:00
Travis Ralston
68a7550080 Flag the validated config as the default config
For use in the rest of the app.

See https://github.com/vector-im/riot-web/issues/9290
2019-05-14 13:12:34 -06:00
Travis Ralston
7f5589c01b Clarify comment on is_url and hs_url handling
We don't actually need to do anything because the app transparently handles this.

See https://github.com/vector-im/riot-web/issues/9290
2019-05-14 12:53:13 -06:00
Travis Ralston
886828caa8 Merge pull request #9496 from vector-im/travis/guests/block-ui
Validate default homeserver config before loading the app
2019-05-10 11:20:33 -06:00
Travis Ralston
fc5c93ab5f Fix unit tests for new login
Supply a server config to the component and adjust the wait logic to be less of a race. The Login component will noop onPasswordLogin if it is "busy", and it is busy when it requests the login flows.
2019-05-03 16:27:41 -06:00
Travis Ralston
a5092dc763 Fix tests to use new server config options 2019-05-03 11:06:32 -06:00
Travis Ralston
bf97fd67b4 Handle cases of no default server 2019-05-03 11:06:32 -06:00
Travis Ralston
45caa8baab Add a couple notes 2019-05-03 11:06:32 -06:00
Travis Ralston
ab6ba0e0d8 Add some clarity to the config options 2019-05-03 11:06:32 -06:00
Travis Ralston
e7bf643d8b Don't repackage the ValidatedDiscoveryConfig
It's usable as-is, and we can add things to it when we need to (ie: integrations).
2019-05-03 11:06:32 -06:00
Travis Ralston
c8caf6797d Move bulk of discovery processing to react-sdk 2019-05-03 11:06:32 -06:00
Travis Ralston
51941eae49 Add note to self 2019-05-03 11:06:32 -06:00
Travis Ralston
5445632026 Use new js-sdk properties for getting discovery errors
Requires https://github.com/matrix-org/matrix-js-sdk/pull/899
2019-05-03 11:06:32 -06:00
Travis Ralston
f08491cee8 Validate default homeserver config before loading the app
Implements the process described here: https://github.com/vector-im/riot-web/issues/9290#issuecomment-481966910

The expectation is that later layers (like the react-sdk) will make use of the `validated_discovery_config` option instead of interpreting the config themselves.

We intentionally block the UI from loading here to avoid races between discovery and the app loading.
2019-05-03 11:06:32 -06:00
52 changed files with 1359 additions and 595 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
patreon: matrixdotorg
liberapay: matrixdotorg

1
.gitignore vendored
View File

@@ -6,6 +6,7 @@
/node_modules
/electron_app/node_modules
/electron_app/dist
/electron_app/pub
/packages/
/webapp
/.npmrc

View File

@@ -1,3 +1,119 @@
Changes in [1.2.3](https://github.com/vector-im/riot-web/releases/tag/v1.2.3) (2019-07-08)
==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.3-rc.1...v1.2.3)
* Upgrade to React SDK 1.3.0 and JS SDK 2.1.0
* JS SDK 2.1.0 includes a fix for an exception whilst syncing
Changes in [1.2.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.3-rc.1) (2019-07-03)
====================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.2...v1.2.3-rc.1)
* Change update URL to match new host
[\#10247](https://github.com/vector-im/riot-web/pull/10247)
* Update from Weblate
[\#10219](https://github.com/vector-im/riot-web/pull/10219)
* Extract configuration docs to separate file
[\#10195](https://github.com/vector-im/riot-web/pull/10195)
* Add e2e/warning.svg to preload
[\#10197](https://github.com/vector-im/riot-web/pull/10197)
* Fix Electron vector: links
[\#10196](https://github.com/vector-im/riot-web/pull/10196)
* Display a red box of anger for config syntax errors
[\#10193](https://github.com/vector-im/riot-web/pull/10193)
* Move config-getting to VectorBasePlatform
[\#10181](https://github.com/vector-im/riot-web/pull/10181)
* Update from Weblate
[\#10124](https://github.com/vector-im/riot-web/pull/10124)
* Fix default Electron window and tray icons
[\#10097](https://github.com/vector-im/riot-web/pull/10097)
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)
* 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)
* 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)
* Upgrade JS SDK to 2.0.0 and React SDK to 1.2.1 to fix key backup and native emoji height
Changes in [1.2.0](https://github.com/vector-im/riot-web/releases/tag/v1.2.0) (2019-05-29)
==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.2.0-rc.1...v1.2.0)
* Upgrade to JS SDK v1.2.0 and React SDK v1.2.0 to fix some regressions
Changes in [1.2.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.2.0-rc.1) (2019-05-23)
====================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.2...v1.2.0-rc.1)
* Update from Weblate
[\#9802](https://github.com/vector-im/riot-web/pull/9802)
* remove emojione
[\#9766](https://github.com/vector-im/riot-web/pull/9766)
* Make Dockerfile work for develop and other branches
[\#9736](https://github.com/vector-im/riot-web/pull/9736)
* add description of new labs feature for message editing
[\#9728](https://github.com/vector-im/riot-web/pull/9728)
* Remove karma junit output
[\#9628](https://github.com/vector-im/riot-web/pull/9628)
* yarn upgrade
[\#9626](https://github.com/vector-im/riot-web/pull/9626)
* Respond quickly to buildkite pokes
[\#9617](https://github.com/vector-im/riot-web/pull/9617)
* Delay creating the `Favico` instance
[\#9616](https://github.com/vector-im/riot-web/pull/9616)
* Add reactions feature to config sample
[\#9598](https://github.com/vector-im/riot-web/pull/9598)
Changes in [1.1.2](https://github.com/vector-im/riot-web/releases/tag/v1.1.2) (2019-05-15)
==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.1.1...v1.1.2)

View File

@@ -23,7 +23,7 @@ RUN cp /src/config.sample.json /src/webapp/config.json
# App
FROM nginx:latest
FROM nginx:alpine
COPY --from=builder /src/webapp /app

131
README.md
View File

@@ -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,94 +101,10 @@ 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_name` sets the default server name to use for authentication.
This will trigger Riot to ask
`https://<server_name>/.well-known/matrix/client` for the homeserver and
identity server URLs to use. This is the recommended approach for setting a
default server. However, it is also possible to use the following to directly
configure each of the URLs:
* `default_hs_url` sets the default homeserver URL.
* `default_is_url` sets the default identity server URL (this is the server used
for verifying third party identifiers like email addresses). If this is blank,
registering with an email address, adding an email address to your account,
or inviting users via email address will not work. Matrix identity servers are
very simple web services which map third party identifiers (currently only email
addresses) to matrix IDs: see http://matrix.org/docs/spec/identity_service/unstable.html
for more details. Currently the only public matrix identity servers are https://matrix.org
and https://vector.im. In the future, identity servers will be decentralised.
* Riot will report an error if you accidentally configure both `default_server_name` _and_ `default_hs_url` since it's unclear which should take priority.
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.
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.
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
========================
Riot can also be run as a desktop app, wrapped in electron. You can download a
Riot can also be run as a desktop app, wrapped in Electron. You can download a
pre-built version from https://riot.im/download/desktop/ or, if you prefer,
build it yourself.
@@ -196,13 +112,13 @@ To build it yourself, follow the instructions below.
1. Follow the instructions in 'Building From Source' above, but run
`yarn build` instead of `yarn dist` (since we don't need the tarball).
2. Install electron and run it:
2. Install Electron and run it:
```bash
yarn electron
```
To build packages, use electron-builder. This is configured to output:
To build packages, use `electron-builder`. This is configured to output:
* `dmg` + `zip` for macOS
* `exe` + `nupkg` for Windows
* `deb` for Linux
@@ -214,22 +130,20 @@ for dependencies required for building packages for various platforms.
The only platform that can build packages for all three platforms is macOS:
```bash
brew install wine --without-x11
brew install mono
brew install gnu-tar
yarn install
yarn build:electron
```
For other packages, use electron-builder manually. For example, to build a package
for 64 bit Linux:
For other packages, use `electron-builder` manually. For example, to build a
package for 64 bit Linux:
1. Follow the instructions in 'Building From Source' above
2. `node_modules/.bin/build -l --x64`
All electron packages go into `electron_app/dist/`
All Electron packages go into `electron_app/dist/`
Many thanks to @aviraldg for the initial work on the electron integration.
Many thanks to @aviraldg for the initial work on the Electron integration.
Other options for running as a desktop app:
* @asdf:matrix.org points out that you can use nativefier and it just works(tm)
@@ -239,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
===================
@@ -289,6 +192,12 @@ docker build -t vectorim/riot-web:develop \
.
```
config.json
===========
Riot supports a variety of settings to configure default servers, behaviour, themes, etc.
See the [configuration docs](docs/config.md) for more details.
Labs Features
=============

View File

@@ -1,6 +1,14 @@
{
"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix.org",
"server_name": "matrix.org"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},
"disable_identity_server": false,
"disable_custom_urls": false,
"disable_guests": false,
"disable_login_language_selector": false,
@@ -10,6 +18,8 @@
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_jitsi_widget_url": "https://scalar.vector.im/api/widgets/jitsi.html",
"bug_report_endpoint_url": "https://riot.im/bugreports/submit",
"defaultCountryCode": "GB",
"showLabsSettings": false,
"features": {
"feature_groups": "labs",
"feature_pinning": "labs",

111
docs/config.md Normal file
View File

@@ -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://<server_name>/.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`.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
"version": "1.1.2",
"version": "1.2.3",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"dependencies": {

View File

@@ -1,5 +1,5 @@
{
"update_base_url": "https://riot.im/download/desktop/update/",
"update_base_url": "https://packages.riot.im/desktop/update/",
"default_hs_url": "https://matrix.org",
"default_is_url": "https://vector.im",
"brand": "Riot",

View File

@@ -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,
@@ -295,7 +298,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({

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "electron_app/src/electron-main.js",
"version": "1.1.2",
"version": "1.2.3",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -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": "1.1.0",
"matrix-react-sdk": "1.1.2",
"matrix-js-sdk": "2.1.0",
"matrix-react-sdk": "1.3.0",
"modernizr": "^3.6.0",
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.0.tgz",
"prop-types": "^15.6.2",
@@ -107,8 +107,8 @@
"cpx": "^1.3.2",
"cross-env": "^4.0.0",
"css-loader": "^2.1.0",
"electron-builder": "^20.38.5",
"electron-builder-squirrel-windows": "^20.38.5",
"electron-builder": "^20.44.4",
"electron-builder-squirrel-windows": "^21.0.6",
"electron-devtools-installer": "^2.2.4",
"eslint": "^5.8.0",
"eslint-config-google": "^0.7.1",
@@ -153,13 +153,16 @@
},
"build": {
"appId": "im.riot.app",
"electronVersion": "4.1.5",
"electronVersion": "4.2.6",
"files": [
"node_modules/**",
"src/**",
"img/**"
"src/**"
],
"extraResources": [
{
"from": "electron_app/img",
"to": "img"
},
"webapp/**/*",
"origin_migrator/**/*"
],

View File

@@ -149,6 +149,15 @@ h1::after {
background-image: url('welcome/images/icon-room-directory.svg');
}
/*
.mx_WelcomePage_loggedIn is applied by EmbeddedPage from the Welcome component
If it is set on the page, we should show the buttons. Otherwise, we have to assume
we don't have an account and should hide them. No account == no guest account either.
*/
.mx_WelcomePage:not(.mx_WelcomePage_loggedIn) .mx_WelcomePage_guestFunctions {
display: none;
}
</style>
<div class="mx_Parent">
@@ -169,9 +178,9 @@ h1::after {
<!-- The comments below are meant to be used by Ansible as a quick way
to strip out the marked content when desired.
See https://github.com/vector-im/riot-web/issues/8622.
TODO: Convert to config option if possible. -->
TODO: Strip out these comments and rely on the guest flag -->
<!-- BEGIN Ansible: Remove these lines when guest access is disabled -->
<div class="mx_ButtonRow">
<div class="mx_ButtonRow mx_WelcomePage_guestFunctions">
<div>
<div class="mx_ButtonWrapperText">_t("Need help?")</div>
<a href="#/user/@riot-bot:matrix.org?action=chat" class="mx_ButtonParent mx_SecondaryButton mx_Button_iconHelp">

View File

@@ -38,11 +38,13 @@ const INCLUDE_LANGS = [
{'value': 'pt_BR', 'label': 'Português do Brasil'},
{'value': 'ru', 'label': 'Русский'},
{'value': 'sk', 'label': 'Slovenčina'},
{'value': 'sq', 'label': 'Shqip'},
{'value': 'sr', 'label': 'српски'},
{'value': 'sv', 'label': 'Svenska'},
{'value': 'te', 'label': 'తెలుగు'},
{'value': 'th', 'label': 'ไทย'},
{'value': 'tr', 'label': 'Türk'},
{'value': 'vls', 'label': 'West-Vlaams'},
{'value': 'zh_Hans', 'label': '简体中文'}, // simplified chinese
{'value': 'zh_Hant', 'label': '繁體中文'}, // traditional chinese
];

View File

@@ -9,7 +9,7 @@
"Dismiss": "Затвори",
"powered by Matrix": "базирано на Matrix",
"Welcome to Riot.im": "Добре дошли в Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Децентрализиран, шифрован чат и колаборация базирани на [matrix]",
"Decentralised, encrypted chat &amp; 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,10 +37,15 @@
"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 акаунт принадлежащ към друг сървър.",
"Sign In": "Вход",
"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?": "Нужда от помощ?",
"Explore rooms": "Открий стаи",
"Room Directory": "Директория със стаи"
"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.": "Невалидна конфигурация: не е указан сървър по подразбиране.",
"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 не е конфигуриран правилно"
}

View File

@@ -42,5 +42,6 @@
"Room Directory": "Directori de sales",
"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.": "Podeu emprar les opcions personalitzades del servidor per iniciar la sessió en altres servidors de Matrix especificant un URL de servidor personal diferent. Això us permet emprar el Riot amb un compte de Matrix existent en un servidor personal diferent.",
"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.": "També podeu establir un servidor d'identitat personalitzat, però no podreu convidar usuaris o ser convidats vosaltres mateixos per adreça de correu electrònic.",
"Sign In": "Inicia la sessió"
"Sign In": "Inicia la sessió",
"Invalid configuration: no default server specified.": "Configuració no vàlida: no s'ha especificat cap servidor per defecte."
}

View File

@@ -37,10 +37,15 @@
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>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.": "Die benutzerdefinierten Server-Einstellungen kannst du verwenden, um dich auf anderen Matrix-Servern anzumelden, indem du eine abweichende Heimserver-URL eingibst.<br/>Somit ist es möglich, Riot mit einem bereits bestehendem Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden.<br/><br/>Außerdem kannst du einen benutzerdefinierten Identitätsserver eingeben. Allerdings kannst du in diesem Fall Benutzer nicht mehr per E-Mail-Adresse einladen und auch selbst nicht mehr per E-Mail-Adresse eingeladen werden.",
"Co-ordination for Riot translators": "Koordination für Riot-Übersetzer",
"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.": "Du kannst die erweiterte Serveroption nutzen um dich an einem anderen Matrixserver anzumelden, indem du eine andere Heimserver-URL angibst. Dies erlaubt dir, Riot mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.",
"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.": "Du kannst auch einen anderen Identitätsserver einstellen, allerdings kannst du dann andere Benutzer nicht mehr per E-Mail-Adresse einladen, ebenso wirst du selbst nicht mehr per E-Mail-Adresse eingeladen werden können.",
"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.": "Sie können auch einen benutzerdefinierten Identitätsserver festlegen, aber Sie können keine Benutzer per E-Mail-Adresse einladen oder selbst per E-Mail-Adresse eingeladen werden.",
"Sign In": "Anmelden",
"Create Account": "Konto erstellen",
"Need help?": "Brauchst du Hilfe?",
"Explore rooms": "Räume erkunden",
"Room Directory": "Raumverzeichnis"
"Room Directory": "Raumverzeichnis",
"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",
"Your Riot is misconfigured": "Dein Riot ist falsch konfiguriert"
}

View File

@@ -1,4 +1,11 @@
{
"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.",
"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",
"Unknown device": "Unknown device",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s",
@@ -15,7 +22,5 @@
"Need help?": "Need help?",
"Chat with Riot Bot": "Chat with Riot Bot",
"Explore rooms": "Explore rooms",
"Room Directory": "Room Directory",
"Search the room directory": "Search the room directory",
"Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!"
"Room Directory": "Room Directory"
}

View File

@@ -42,5 +42,12 @@
"Create Account": "Create Account",
"Need help?": "Need help?",
"Explore rooms": "Explore rooms",
"Room Directory": "Room Directory"
"Room Directory": "Room Directory",
"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.",
"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."
}

View File

@@ -36,10 +36,18 @@
"%(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.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>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.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>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.",
"Sign In": "Saluti",
"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": "Ensaluti",
"Create Account": "Krei konton",
"Need help?": "Ĉu vi bezonas helpon?",
"Explore rooms": "Esplori ĉambrojn",
"Room Directory": "Ĉambra dosierujo"
"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 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",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Viaj Riot-agordoj enhavas nevalidan JSON-on. Bonvolu korekti la problemon kaj reŝarĝi la paĝon.",
"The message from the parser is: %(message)s": "La mesaĝo el la analizilo estas: %(message)s",
"Invalid JSON": "Nevalida JSON"
}

View File

@@ -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 &amp; collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas &amp; colaboración con el poder de [matrix]",
"Decentralised, encrypted chat &amp; 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."
}

View File

@@ -42,5 +42,12 @@
"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.",
"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.",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Zure Riot konfigurazioak baliogabeko JSON kodea du. Zuzendu arazoa eta kargatu orria berriro.",
"The message from the parser is: %(message)s": "Prozesatzailearen mezua hau da: %(message)s",
"Invalid JSON": "JSON baliogabea"
}

View File

@@ -28,7 +28,7 @@
"Dev chat for the Riot/Web dev team": "Kehittäjäkeskustelu Riot/Web kehitystiimille",
"Dev chat for the Dendrite dev team": "Kehittäjäkeskustelu Dendrite kehitystiimille",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrixissa on olemassa monia huoneita, jotka on linkitetty olemassa oleviin verkkoihin (Slack, IRC, Gitter yms.). Tutustu hakemistoon!",
"powered by Matrix": "Matrix",
"powered by Matrix": "moottorina Matrix",
"Riot is not supported on mobile web. Install the app?": "Riot ei tue laitettasi. Asenna mobiilisovellus?",
"Design and implementation of E2E in Matrix": "Matrix päästä-päähän salauksen suunnittelu ja implementointi",
"Contributing code to Matrix and Riot": "Osallistu kehitystyöhön",
@@ -37,9 +37,16 @@
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>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.": "Voit käyttää edistyksellisiä asetuksia kirjautuaksesi muille Matrix palvelimille, määrittelemällä kotipalvelimen URL-osoitteen.<br/>Tämän avulla voit käyttää Riot:ia olemassa olevalla toisen Matrix palvelimen käyttäjätilillä.<br/><br/>Voit myös asettaa valinnaisen identiteettipalvelimen, mutta et voi kutsua käyttäjiä sähköpostiosoitteella tai tulla kutsutuksi.",
"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.": "Voit käyttää mukautettuja palvelinasetuksia kirjautuaksesi muihin Matrix-palvelimiin. Tämä mahdollistaa Riotin käyttämisen toisella kotipalvelimella olevalla Matrix-tilillä.",
"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.": "Voit myös määrittää toisen identiteettipalvelimen, mutta et voi kutsua muita käyttäjiä sähköpostin perusteella tai saada itse kutsua sähköpostin perusteella.",
"Sign In": "Kirjaudu sisään",
"Sign In": "Kirjaudu",
"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.",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-asetuksissasi on virheellistä JSONia. Korjaa ongelma ja lataa sivu uudelleen.",
"The message from the parser is: %(message)s": "Viesti jäsentimeltä: %(message)s",
"Invalid JSON": "Virheellinen JSON"
}

View File

@@ -42,5 +42,13 @@
"Create Account": "Créer un compte",
"Need help?": "Besoin d'aide ?",
"Explore rooms": "Explorer les salons",
"Room Directory": "Répertoire de salons"
"Room Directory": "Répertoire de salons",
"Unexpected error preparing the app. See console for details.": "Une erreur inattendue est survenue pendant la préparation de lapplication. 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 quun 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 ladministrateur, corrigez lerreur ci-dessous",
"Your Riot is misconfigured": "Votre Riot est mal configuré",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Votre configuration de Riot contient du JSON non valide. Corrigez ce problème et rechargez la page.",
"The message from the parser is: %(message)s": "Le message de lanalyseur est : %(message)s",
"Invalid JSON": "JSON non valide"
}

View File

@@ -42,5 +42,13 @@
"Create Account": "Fiók készítés",
"Need help?": "Segíthetünk?",
"Explore rooms": "Szobák felfedezése",
"Room Directory": "Szoba lista"
"Room Directory": "Szoba lista",
"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",
"Your Riot is misconfigured": "A Riotod hibásan van beállítva",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A Riot beállításod érvénytelen JSON szöveget tartalmaz. Kérlek javítsd és töltsd újra az oldalt.",
"The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s",
"Invalid JSON": "Érvénytelen JSON"
}

View File

@@ -42,5 +42,10 @@
"Create Account": "Crea account",
"Need help?": "Serve aiuto?",
"Explore rooms": "Esplora stanze",
"Room Directory": "Elenco stanze"
"Room Directory": "Elenco stanze",
"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",
"Your Riot is misconfigured": "Il tuo Riot è configurato male"
}

View File

@@ -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.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>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サーバにサインインするためにカスタムサーバのオプションを利用できます。<br/>これにより、他のホームサーバ上で既存のMatrixアカウントを用いてRiotを利用できます。<br/><br/>カスタムアイデンティティサーバを立てることもできますが、メールアドレスでユーザを招待する、または自身が招待されることはできません。",
"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 &amp; 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": "部屋のディレクトリー"
}

View File

@@ -34,5 +34,16 @@
"Dev chat for the Riot/Web dev team": "Riot/Web izstrādātāju komandas čats",
"Dev chat for the Dendrite dev team": "Dendrite izstrādatāju komandas čats",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix-ā pastāv daudzas neatkarīgas un/vai eksistējošiem tīmekļa resursiem (Slack, IRC, Gitter u.tml.) piesaistītas istabas. Ieskaties katalogā!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>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.": "Tu vari lietot \"custom\" servera opcijas, lai ielogotos citos Matrix serveros, norādot citu Bāzes servera URL.<br> Tas atļaus tev lietot Riot ar esošo Matrix kontu uz cita Bāzes servera.<br/><br/>Tu arī vari uzstādīt atsevišķu Identitāšu serveri, taču tad Tev nebūs iespēju uzaicināt lietotājus, izmantojot epasta adresi, vai pašam tikt uzaicinātam, izmantojot epasta adresi."
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>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.": "Tu vari lietot \"custom\" servera opcijas, lai ielogotos citos Matrix serveros, norādot citu Bāzes servera URL.<br> Tas atļaus tev lietot Riot ar esošo Matrix kontu uz cita Bāzes servera.<br/><br/>Tu arī vari uzstādīt atsevišķu Identitāšu serveri, taču tad Tev nebūs iespēju uzaicināt lietotājus, izmantojot epasta adresi, vai pašam tikt uzaicinātam, izmantojot epasta adresi.",
"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.": "Varat izmantot pielāgotās servera opcijas, lai pierakstītos citos Matrix serveros, norādot citu mājas servera URL. Tas ļauj jums izmantot Riot ar esošu Matrix kontu citā mājas 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.": "Varat arī iestatīt pielāgotu identitātes serveri, bet jūs nevarēsiet uzaicināt lietotājus izmantojot e-pasta adresi, kā arī tikt uzaicināts pēc e-pasta adreses.",
"Sign In": "Ienākt",
"Create Account": "Izveidot kontu",
"Need help?": "Nepieciešama palīdzība?",
"Explore rooms": "Atklāt istabas",
"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."
}

View File

@@ -41,6 +41,14 @@
"Sign In": "Aanmelden",
"Create Account": "Account aanmaken",
"Need help?": "Hulp nodig?",
"Explore rooms": "Kamers ontdekken",
"Room Directory": "Gesprekscatalogus"
"Explore rooms": "Gesprekken ontdekken",
"Room Directory": "Gesprekscatalogus",
"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",
"Your Riot is misconfigured": "Uw Riot is verkeerd geconfigureerd",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Uw Riot-configuratie bevat ongeldige JSON. Corrigeer het probleem en herlaad de pagina.",
"The message from the parser is: %(message)s": "Het bericht van de verwerker is: %(message)s",
"Invalid JSON": "Ongeldige JSON"
}

View File

@@ -39,5 +39,6 @@
"Create Account": "Stwórz konto",
"Sign In": "Zaloguj",
"Need help?": "Potrzebujesz pomocy?",
"Room Directory": "Katalog pokojów"
"Room Directory": "Katalog pokojów",
"Explore rooms": "Przeglądaj pokoje"
}

View File

@@ -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",
@@ -38,9 +38,14 @@
"Co-ordination for Riot translators": "Координационный чат для переводчиков Riot",
"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 серверы, указав другой URL.\nЭто позволит использовать Riot с учетной записью Matrix, существующей на другом сервере.",
"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.": "Также можно изменить сервер идентификации, но без возможности приглашать (или быть приглашённым) по адресу электронной почты.",
"Sign In": "Вход",
"Sign In": "Войти в систему",
"Create Account": "Создать аккаунт",
"Need help?": "Помочь?",
"Room Directory": "Каталог комнат",
"Explore rooms": "Исследовать комнаты"
"Explore rooms": "Исследовать комнаты",
"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, кажется, имеет неверную конфигурацию сервера. Если вы являетесь администратором, пожалуйста, исправьте ошибку ниже",
"Your Riot is misconfigured": "Ваш Riot неправильно настроен"
}

View File

@@ -0,0 +1,3 @@
{
"Unexpected error preparing the app. See console for details.": "Unexpectit error came up gittin the app set up. See the console? Mair details ur thare."
}

View File

@@ -1 +1,21 @@
{}
{
"Riot Desktop on %(platformName)s": "Namizni Riot za %(platformName)s",
"Unknown device": "Neznana naprava",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s s %(browserName)s na %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "Za klic s skupno rabo zaslona potrebujete HTTPS.",
"powered by Matrix": "poganja Matrix",
"Custom Server Options": "Možnosti strežnika po meri",
"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.": "Možnosti strežnika po meri lahko uporabite za prijavo v druge Matrix strežnike, s tem da podate drug URL domačega strežnika. To vam omogoča, da uporabljate Riot z obstoječim Matrix računom na drugem strežniku.",
"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.": "Nastavite lahko tudi strežnik za identiteto po meri, vendar ne boste mogli povabiti uporabnikov prek e-pošte, prav tako pa vas ne bodo mogli povabiti drugi.",
"Dismiss": "Opusti",
"Welcome to Riot.im": "Dobrodošli v Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizirano šifrirano sporočanje &amp; sodelovanje s pomočjo [matrix]",
"Sign In": "Prijava",
"Create Account": "Registracija",
"Need help?": "Potrebujete pomoč?",
"Chat with Riot Bot": "Klepetajte z Riot Botom",
"Explore rooms": "Raziščite sobe",
"Room Directory": "Imenik sob",
"Search the room directory": "Preiščite imenik sob",
"Get started with some tips from Riot Bot!": "Začnite z nekaterimi nasveti Riot Bota!"
}

View File

@@ -42,5 +42,13 @@
"Create Account": "Krijoni Llogari",
"Need help?": "Ju duhet ndihmë?",
"Explore rooms": "Eksploroni dhoma",
"Room Directory": "Listë Dhomash"
"Room Directory": "Listë Dhomash",
"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ë",
"Your Riot is misconfigured": "Riot-i juaj është i keqformësuar",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Formësimi juaj i Riot-it përmban JSON. Ju lutemi, ndreqeni problemin dhe ringarkoni faqen.",
"The message from the parser is: %(message)s": "Mesazhi prej procesit është: %(message)s",
"Invalid JSON": "JSON i pavlefshëm"
}

View File

@@ -37,10 +37,13 @@
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>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.": "Ви можете використовувати параметри користувача сервера для входа на другі сервера Matrix, вказав другий URL-адресу домашнього сервера. <br/>Це дозволяє використовувати Riot з обліковим записом Matrix який існує на другому домашньому сервері.<br/><br/>Окрім цього, можливо встановити ідентифікаційний сервер користувача, але ви не зможете запросити других користувачів та бути запрошенному використовуючи адресу електронної пошти.",
"Co-ordination for Riot translators": "Координаційний чат для перекладачів Riot",
"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 сервери, вказавши інший URL. Це дозволить використовувати Riot з наявним обліковим записом Matrix на іншому сервері.",
"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 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.": "Ви також можете встановити власний сервер ідентифікації, але Ви не зможете запрошувати користувачів (або бути запрошеним самому) за адресою електронної пошти.",
"Need help?": "Допомогти?",
"Sign In": "Вхід",
"Create Account": "Створити аккаунт",
"Explore rooms": "Дослідити кімнати",
"Room Directory": "Каталог кімнат"
"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.": "Невірна конфігурація: не вказано сервер за замовчуванням."
}

View File

@@ -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 &amp; Desktop chat": "Riot/Web &amp; Desktop chat"
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; 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"
}

27
src/i18n/strings/vls.json Normal file
View File

@@ -0,0 +1,27 @@
{
"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: 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",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s ip %(osName)s",
"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 dangepaste 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 &amp; collaboration powered by [matrix]": "Gedecentraliseerd en versleuteld chattn &amp; 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": "Gesprekscataloog",
"Your Riot is misconfigured": "Je Riot is verkeerd geconfigureerd gewist",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Je Riot-configuroatie bevat oungeldigen JSON. Corrigeer t probleem en herload t blad.",
"The message from the parser is: %(message)s": "t Bericht van de verwerker is: %(message)s",
"Invalid JSON": "Oungeldigen JSON"
}

View File

@@ -42,5 +42,13 @@
"Create Account": "建立帳號",
"Need help?": "需要協助?",
"Explore rooms": "探索聊天室",
"Room Directory": "聊天室目錄"
"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.": "無效設定:未指定預設的伺服器。",
"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 configuration contains invalid JSON. Please correct the problem and reload the page.": "您的 Riot 包含無效的 JSON。請修正問題並重新整理頁面。",
"The message from the parser is: %(message)s": "從解析器而來的訊息為:%(message)s",
"Invalid JSON": "無效的 JSON"
}

View File

@@ -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 += '/';
@@ -37,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});
}
},
);
});

View File

@@ -41,6 +41,7 @@
</script>
<script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script>
<img src="<%= require('matrix-react-sdk/res/img/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
<img src="<%= require('matrix-react-sdk/res/img/e2e/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
<audio id="messageAudio">
<source src="media/message.ogg" type="audio/ogg" />
<source src="media/message.mp3" type="audio/mpeg" />

View File

@@ -1,7 +1,8 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2018 New Vector 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.
@@ -43,8 +44,11 @@ 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';
import {AutoDiscovery} from "matrix-js-sdk/lib/autodiscovery";
import * as Lifecycle from "matrix-react-sdk/lib/Lifecycle";
import url from 'url';
@@ -62,8 +66,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
@@ -115,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;
}
@@ -155,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 += '&';
@@ -166,38 +168,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
@@ -248,14 +218,21 @@ 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;
let configSyntaxError = false;
try {
configJson = await getVectorConfig();
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
@@ -325,6 +302,33 @@ async function loadApp() {
}
}
// Now that we've loaded the theme (CSS), display the config syntax error if needed.
if (configSyntaxError) {
const errorMessage = (
<div>
<p>
{_t(
"Your Riot configuration contains invalid JSON. Please correct the problem " +
"and reload the page.",
)}
</p>
<p>
{_t(
"The message from the parser is: %(message)s",
{message: configError.err.message || _t("Invalid JSON")},
)}
</p>
</div>
);
const GenericErrorPage = sdk.getComponent("structures.GenericErrorPage");
window.matrixChat = ReactDOM.render(
<GenericErrorPage message={errorMessage} title={_t("Your Riot is misconfigured")} />,
document.getElementById('matrixchat'),
);
return;
}
const validBrowser = checkBrowserFeatures([
"displaytable", "flexbox", "es5object", "es5function", "localstorage",
"objectfit", "indexeddb", "webworkers",
@@ -338,25 +342,40 @@ async function loadApp() {
Unable to load config file: please refresh the page to try again.
</div>, document.getElementById('matrixchat'));
} else if (validBrowser || acceptInvalidBrowser) {
const platform = PlatformPeg.get();
platform.startUpdater();
const MatrixChat = sdk.getComponent('structures.MatrixChat');
window.matrixChat = ReactDOM.render(
<MatrixChat
onNewScreen={onNewScreen}
makeRegistrationUrl={makeRegistrationUrl}
ConferenceHandler={VectorConferenceHandler}
config={configJson}
realQueryParams={params}
startingFragmentQueryParams={fragparts.params}
enableGuest={!configJson.disable_guests}
onTokenLoginCompleted={onTokenLoginCompleted}
initialScreenAfterLogin={getScreenFromLocation(window.location)}
defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}
/>,
document.getElementById('matrixchat'),
);
// Don't bother loading the app until the config is verified
verifyServerConfig().then((newConfig) => {
const MatrixChat = sdk.getComponent('structures.MatrixChat');
window.matrixChat = ReactDOM.render(
<MatrixChat
onNewScreen={onNewScreen}
makeRegistrationUrl={makeRegistrationUrl}
ConferenceHandler={VectorConferenceHandler}
config={newConfig}
realQueryParams={params}
startingFragmentQueryParams={fragparts.params}
enableGuest={!configJson.disable_guests}
onTokenLoginCompleted={onTokenLoginCompleted}
initialScreenAfterLogin={getScreenFromLocation(window.location)}
defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}
/>,
document.getElementById('matrixchat'),
);
}).catch(err => {
console.error(err);
let errorMessage = err.translatedMessage
|| _t("Unexpected error preparing the app. See console for details.");
errorMessage = <span>{errorMessage}</span>;
// Like the compatibility page, AWOOOOOGA at the user
const GenericErrorPage = sdk.getComponent("structures.GenericErrorPage");
window.matrixChat = ReactDOM.render(
<GenericErrorPage message={errorMessage} title={_t("Your Riot is misconfigured")} />,
document.getElementById('matrixchat'),
);
});
} else {
console.error("Browser is missing required features.");
// take to a different landing page to AWOOOOOGA at the user
@@ -390,7 +409,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
@@ -428,4 +447,99 @@ async function loadLanguage() {
}
}
async function verifyServerConfig() {
let validatedConfig;
try {
console.log("Verifying homeserver configuration");
// Note: the query string may include is_url and hs_url - we only respect these in the
// 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'];
const hsUrl = config['default_hs_url'];
const isUrl = config['default_is_url'];
const incompatibleOptions = [wkConfig, serverName, hsUrl].filter(i => !!i);
if (incompatibleOptions.length > 1) {
// noinspection ExceptionCaughtLocallyJS
throw newTranslatableError(_td(
"Invalid configuration: can only specify one of default_server_config, default_server_name, " +
"or default_hs_url.",
));
}
if (incompatibleOptions.length < 1) {
// noinspection ExceptionCaughtLocallyJS
throw newTranslatableError(_td("Invalid configuration: no default server specified."));
}
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": {
"base_url": hsUrl,
},
};
if (isUrl) {
wkConfig["m.identity_server"] = {
"base_url": isUrl,
};
}
}
let discoveryResult = null;
if (wkConfig) {
console.log("Config uses a default_server_config - validating object");
discoveryResult = await AutoDiscovery.fromDiscoveryConfig(wkConfig);
}
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, true);
} catch (e) {
const {hsUrl, isUrl, userId} = Lifecycle.getLocalStorageSessionVars();
if (hsUrl && userId) {
console.error(e);
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, true);
} else {
// the user is not logged in, so scream
throw e;
}
}
validatedConfig.isDefault = true;
// Just in case we ever have to debug this
console.log("Using homeserver config:", validatedConfig);
// Add the newly built config to the actual config for use by the app
console.log("Updating SdkConfig with validated discovery information");
SdkConfig.add({"validated_server_config": validatedConfig});
return SdkConfig.get();
}
loadApp();

View File

@@ -4,6 +4,11 @@
<style type="text/css">
/* By default, hide the custom IS stuff - enabled in JS */
#custom_is, #is_url {
display: none;
}
body {
background: #c5e0f7;
background: -moz-linear-gradient(top, #c5e0f7 0%, #ffffff 100%);
@@ -109,6 +114,14 @@ body {
margin: 20px;
}
.mx_HomePage_errorContainer {
display: none; /* shown in JS if needed */
margin: 20px;
border: 1px solid red;
background-color: #ffb9b9;
padding: 5px;
}
.mx_HomePage_container h1,
.mx_HomePage_container h2,
.mx_HomePage_container h3,
@@ -152,6 +165,10 @@ body {
<body>
<div class="mx_HomePage_errorContainer">
<!-- populated by JS if needed -->
</div>
<div class="mx_HomePage_container">
<div class="mx_HomePage_col mx_HomePage_header">
<a href="https://riot.im">
@@ -365,7 +382,9 @@ body {
<p>Launch the app, and enable <strong>Use custom server options (advanced)</strong>.</p>
<p class="mx_Spacer">In the homeserver field, enter:</p>
<p><strong id="hs_url"></strong></p>
<p class="mx_Spacer"><em>Note: You shouldn&apos;t need to modify the identity server field, which by default is set to https://vector.im.</em></p>
<p class="mx_Spacer" id="default_is"><em>Note: You shouldn&apos;t need to modify the identity server field, which by default is set to https://vector.im.</em></p>
<p class="mx_Spacer" id="custom_is">In the identity server field, enter:</p>
<p><strong id="is_url"></strong></p>
</div>
</div>
</div>

View File

@@ -6,19 +6,102 @@ function onBackToRiotClick() {
window.location.href = '../';
}
// NEVER pass user-controlled content to this function! Hardcoded strings only please.
function renderConfigError(message) {
const contactMsg = "If this is unexpected, please contact your system administrator " +
"or technical support representative.";
message = `<h2>Error loading Riot</h2><p>${message}</p><p>${contactMsg}</p>`;
const toHide = document.getElementsByClassName("mx_HomePage_container");
const errorContainers = document.getElementsByClassName("mx_HomePage_errorContainer");
for (const e of toHide) {
// We have to clear the content because .style.display='none'; doesn't work
// due to an !important in the CSS.
e.innerHTML = '';
}
for (const e of errorContainers) {
e.style.display = 'block';
e.innerHTML = message;
}
}
async function initPage() {
document.getElementById('back_to_riot_button').onclick = onBackToRiotClick;
const config = await getVectorConfig('..');
let hsUrl;
if (config && config['default_hs_url']) {
hsUrl = config['default_hs_url'];
let config = await getVectorConfig('..');
// We manually parse the config similar to how validateServerConfig works because
// calling that function pulls in roughly 4mb of JS we don't use.
const wkConfig = config['default_server_config']; // overwritten later under some conditions
const serverName = config['default_server_name'];
const defaultHsUrl = config['default_hs_url'];
const defaultIsUrl = config['default_is_url'];
const incompatibleOptions = [wkConfig, serverName, defaultHsUrl].filter(i => !!i);
if (incompatibleOptions.length > 1) {
return renderConfigError(
"Invalid configuration: can only specify one of default_server_config, default_server_name, " +
"or default_hs_url.",
);
}
if (incompatibleOptions.length < 1) {
return renderConfigError("Invalid configuration: no default server specified.");
}
let hsUrl = '';
let isUrl = '';
if (wkConfig && wkConfig['m.homeserver']) {
hsUrl = wkConfig['m.homeserver']['base_url'];
if (wkConfig['m.identity_server']) {
isUrl = wkConfig['m.identity_server']['base_url'];
}
}
if (serverName) {
// We also do our own minimal .well-known validation to avoid pulling in the js-sdk
try {
const result = await fetch(`https://${serverName}/.well-known/matrix/client`);
const wkConfig = await result.json();
if (wkConfig && wkConfig['m.homeserver']) {
hsUrl = wkConfig['m.homeserver']['base_url'];
if (wkConfig['m.identity_server']) {
isUrl = wkConfig['m.identity_server']['base_url'];
}
}
} catch (e) {
console.error(e);
return renderConfigError("Unable to fetch homeserver configuration");
}
}
if (defaultHsUrl) {
hsUrl = defaultHsUrl;
isUrl = defaultIsUrl;
}
if (!hsUrl) {
return renderConfigError("Unable to locate homeserver");
}
if (hsUrl && !hsUrl.endsWith('/')) hsUrl += '/';
if (hsUrl && hsUrl !== 'https://matrix.org/') {
if (isUrl && !isUrl.endsWith('/')) isUrl += '/';
if (hsUrl !== 'https://matrix.org/') {
document.getElementById('step2_container').style.display = 'block';
document.getElementById('hs_url').innerHTML = hsUrl;
document.getElementById('hs_url').innerText = hsUrl;
document.getElementById('step_login_header').innerHTML= 'Step 3: Register or Log in';
if (isUrl && isUrl !== "https://vector.im/") {
document.getElementById('default_is').style.display = 'none';
document.getElementById('custom_is').style.display = 'block';
document.getElementById('is_url').style.display = 'block';
document.getElementById('is_url').innerText = isUrl;
}
}
}

View File

@@ -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',
@@ -141,14 +146,12 @@ export default class ElectronPlatform extends VectorBasePlatform {
}
// Notifications in Electron use the HTML5 notification API
const notification = new global.Notification(
title,
{
body: msg,
icon: avatarUrl,
silent: true, // we play our own sounds
},
);
const notifBody = {
body: msg,
silent: true, // we play our own sounds
};
if (avatarUrl) notifBody['icon'] = avatarUrl;
const notification = new global.Notification(title, notifBody);
notification.onclick = () => {
dis.dispatch({

View File

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

View File

@@ -76,15 +76,13 @@ export default class WebPlatform extends VectorBasePlatform {
}
displayNotification(title: string, msg: string, avatarUrl: string, room: Object) {
const notification = new global.Notification(
title,
{
body: msg,
icon: avatarUrl,
tag: "vector",
silent: true, // we play our own sounds
},
);
const notifBody = {
body: msg,
tag: "vector",
silent: true, // we play our own sounds
};
if (avatarUrl) notifBody['icon'] = avatarUrl;
const notification = new global.Notification(title, notifBody);
notification.onclick = function() {
dis.dispatch({

View File

@@ -37,6 +37,8 @@ const ReactDOM = require('react-dom');
const ReactTestUtils = require('react-addons-test-utils');
const expect = require('expect');
import Promise from 'bluebird';
import {makeType} from "matrix-react-sdk/lib/utils/TypeUtils";
import {ValidatedServerConfig} from "matrix-react-sdk/lib/utils/AutoDiscoveryUtils";
const test_utils = require('../test-utils');
const MockHttpBackend = require('matrix-mock-request');
@@ -96,8 +98,20 @@ describe('joining a room', function() {
PlatformPeg.set(new WebPlatform());
const config = {
validated_server_config: makeType(ValidatedServerConfig, {
hsUrl: HS_URL,
hsName: "TEST_ENVIRONMENT",
hsNameIsDifferent: false, // yes, we lie
isUrl: IS_URL,
identityEnabled: true,
}),
};
const mc = (
<MatrixChat config={{}}
<MatrixChat
config={config}
serverConfig={config.validated_server_config}
makeRegistrationUrl={()=>{throw new Error("unimplemented");}}
initialScreenAfterLogin={{
screen: 'directory',

View File

@@ -39,6 +39,8 @@ import dis from 'matrix-react-sdk/lib/dispatcher';
import * as test_utils from '../test-utils';
import MockHttpBackend from 'matrix-mock-request';
import {parseQs, parseQsFromFragment} from '../../src/vector/url_utils';
import {makeType} from "matrix-react-sdk/lib/utils/TypeUtils";
import {ValidatedServerConfig} from "matrix-react-sdk/lib/utils/AutoDiscoveryUtils";
const DEFAULT_HS_URL='http://my_server';
const DEFAULT_IS_URL='http://my_is';
@@ -146,6 +148,13 @@ describe('loading:', function() {
const config = Object.assign({
default_hs_url: DEFAULT_HS_URL,
default_is_url: DEFAULT_IS_URL,
validated_server_config: makeType(ValidatedServerConfig, {
hsUrl: DEFAULT_HS_URL,
hsName: "TEST_ENVIRONMENT",
hsNameIsDifferent: false, // yes, we lie
isUrl: DEFAULT_IS_URL,
identityEnabled: true,
}),
embeddedPages: {
homeUrl: 'data:text/html;charset=utf-8;base64,PGh0bWw+PC9odG1sPg==',
},
@@ -160,6 +169,7 @@ describe('loading:', function() {
<MatrixChat
onNewScreen={onNewScreen}
config={config}
serverConfig={config.validated_server_config}
realQueryParams={params}
startingFragmentQueryParams={fragParts.params}
enableGuest={true}
@@ -230,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
@@ -267,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 <Login> component
ReactTestUtils.findRenderedComponentWithType(
@@ -275,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;
}
@@ -377,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 <Login> component
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.auth.Login'),
@@ -385,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;
}
@@ -395,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
@@ -616,11 +652,21 @@ describe('loading:', function() {
// check that we have a Login component, send a 'user:pass' login,
// and await the HTTP requests.
function completeLogin(matrixChat) {
async function completeLogin(matrixChat) {
// we expect a single <Login> component
const login = ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.auth.Login'));
// When we switch to the login component, it'll hit the login endpoint
// for proof of life and to get flows. We'll only give it one option.
httpBackend.when('GET', '/login')
.respond(200, {"flows": [{"type": "m.login.password"}]});
httpBackend.flush(); // We already would have tried the GET /login request
// Give the component some time to finish processing the login flows before
// continuing.
await Promise.delay(100);
httpBackend.when('POST', '/login').check(function(req) {
expect(req.data.type).toEqual('m.login.password');
expect(req.data.identifier.type).toEqual('m.id.user');

View File

@@ -18,10 +18,6 @@ module.exports = {
// CSS themes
"theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
"theme-dark": "./node_modules/matrix-react-sdk/res/themes/dark/css/dark.scss",
// twemoji fonts which need to be dynamically loaded
"twemoji-colr": "./node_modules/matrix-react-sdk/res/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2",
"twemoji-sbix": "./node_modules/matrix-react-sdk/res/fonts/Twemoji_Mozilla/TwemojiMozilla-sbix.woff2",
},
module: {
rules: [
@@ -80,16 +76,7 @@ module.exports = {
// lifetime for assets while still delivering changes quickly.
oneOf: [
{
// allow runtime loading of twemoji (at the expense of cachebusting).
resource: /TwemojiMozilla.*\.woff2$/,
loader: 'file-loader',
options: {
name: 'fonts/[name].[ext]',
outputPath: getImgOutputPath,
},
},
{
// Images referenced in CSS files
// Assets referenced in CSS files
issuer: /\.(scss|css)$/,
loader: 'file-loader',
options: {
@@ -105,11 +92,15 @@ module.exports = {
},
},
{
// Images referenced in HTML and JS files
// Assets referenced in HTML and JS files
loader: 'file-loader',
options: {
name: '[name].[hash:7].[ext]',
outputPath: getImgOutputPath,
publicPath: function(url, resourcePath) {
const outputPath = getImgOutputPath(url, resourcePath);
return toPublicPath(outputPath);
},
},
},
],

748
yarn.lock

File diff suppressed because it is too large Load Diff