Compare commits

...

352 Commits

Author SHA1 Message Date
RiotRobot 0cfdc7b66a v1.5.15 2020-04-01 15:28:24 +01:00
RiotRobot 7fb6c1e117 Prepare changelog for v1.5.15 2020-04-01 15:28:24 +01:00
RiotRobot 97586aa5c3 v1.5.15 2020-04-01 15:10:52 +01:00
RiotRobot 5f5d46eb11 Upgrade matrix-react-sdk to 2.3.1 2020-04-01 15:08:57 +01:00
David Baker 511d18abec Merge pull request #12980 from vector-im/dbkr/jitsi_fix_popout_rel
Fix popout support for jitsi widgets
2020-04-01 13:59:48 +01:00
David Baker 24fe98a78c Make widget API use optional
So we can work when popped out into a browser
2020-04-01 13:36:57 +01:00
David Baker 51c675c6fe Give the jitsi wrapper its own external api script 2020-04-01 13:36:51 +01:00
RiotRobot 413b26d71b v1.5.14 2020-03-30 13:48:40 +01:00
RiotRobot 45ff2fdcde Prepare changelog for v1.5.14 2020-03-30 13:48:39 +01:00
RiotRobot 5bd155c294 v1.5.14 2020-03-30 13:45:32 +01:00
RiotRobot 51f4327ce1 Upgrade matrix-react-sdk to 2.3.0 2020-03-30 13:45:21 +01:00
RiotRobot 37cebf38cc Upgrade matrix-js-sdk to 5.2.0 2020-03-30 13:44:42 +01:00
RiotRobot 0a83f9c763 v1.5.14-rc.1 2020-03-26 13:31:03 +00:00
RiotRobot f5c5c1b991 Prepare changelog for v1.5.14-rc.1 2020-03-26 13:31:03 +00:00
RiotRobot bfcb46c4fd v1.5.14-rc.1 2020-03-26 13:28:13 +00:00
RiotRobot 5b35d6e570 Upgrade matrix-react-sdk to 2.3.0-rc.1 2020-03-26 13:28:04 +00:00
RiotRobot 9269d9b669 Upgrade matrix-js-sdk to 5.2.0-rc.1 2020-03-26 13:27:40 +00:00
J. Ryan Stinnett ec32abbb89 Merge pull request #12890 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-03-26 12:14:15 +00:00
Weblate c1884a26aa Merge branch 'origin/develop' into Weblate. 2020-03-26 12:03:29 +00:00
Michael Telatynski 1d109bb067 Merge pull request #12869 from vector-im/t3chguy/app_load_tweaks
App load tweaks
2020-03-26 12:03:23 +00:00
Weblate 35e443975d Merge branch 'origin/develop' into Weblate. 2020-03-26 11:43:07 +00:00
Szimszon 1963270d64 Translated using Weblate (Hungarian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2020-03-26 11:43:06 +00:00
Tirifto 3072bbb0d7 Translated using Weblate (Esperanto)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2020-03-26 11:43:06 +00:00
J. Ryan Stinnett 1697cdc5a1 Merge pull request #12730 from vector-im/jryans/review-policy
Add review policy doc
2020-03-26 11:43:00 +00:00
J. Ryan Stinnett da249cbc40 Merge remote-tracking branch 'origin/develop' into jryans/review-policy 2020-03-26 11:34:29 +00:00
J. Ryan Stinnett 5b94d8bbd7 Add line about UI for network activity 2020-03-26 11:28:51 +00:00
Weblate 8549755fd5 Merge branch 'origin/develop' into Weblate. 2020-03-25 15:25:17 +00:00
David Baker 5c51063070 Merge pull request #12875 from vector-im/dbkr/fix_artifact_search
Fix artifact searching in redeployer
2020-03-25 15:25:12 +00:00
David Baker 758d021f97 Merge remote-tracking branch 'origin/develop' into dbkr/fix_artifact_search 2020-03-25 15:18:20 +00:00
David Baker fea600ba0a Fix artifact searching in redeployer
Indenting fail
2020-03-25 15:12:53 +00:00
Michael Telatynski fd385f8450 simplify loadConfig
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:37:28 +00:00
Michael Telatynski 92d8ee355d merge initial-load.ts into init.ts as its no longer used by Jitsi
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:32:37 +00:00
Michael Telatynski 1f94b25d25 Fix copyrights
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:28:07 +00:00
Michael Telatynski 8929cd9c08 Merge branches 'develop' and 't3chguy/app_load_tweaks' of github.com:vector-im/riot-web into t3chguy/app_load_tweaks 2020-03-25 14:26:48 +00:00
Weblate 24d85c5cd7 Merge branch 'origin/develop' into Weblate. 2020-03-25 14:26:12 +00:00
Ege 4b7cf489c8 Translated using Weblate (Turkish)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-25 14:26:12 +00:00
roket1428 990a96b56d Translated using Weblate (Turkish)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-25 14:26:12 +00:00
Ganzo DG cb23da12cb Translated using Weblate (Mongolian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/mn/
2020-03-25 14:26:11 +00:00
Travis Ralston dec2f2a39e Merge pull request #12845 from vector-im/travis/config-wrapper
Fix Jitsi wrapper being large by getting the config from elsewhere
2020-03-25 08:26:06 -06:00
Michael Telatynski 6315907585 Typescript stuff.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 14:07:22 +00:00
Michael Telatynski 6fb9fc4e6f move loadLanguage to init.ts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 13:55:25 +00:00
Michael Telatynski df2b966acd move loadOlm to init.ts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 13:54:02 +00:00
Michael Telatynski b09b47543b Merge branches 'develop' and 't3chguy/app_load_tweaks' of github.com:vector-im/riot-web into t3chguy/app_load_tweaks 2020-03-25 12:45:10 +00:00
Michael Telatynski a808d26764 Enable webpack reuseExistingChunk
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 12:41:33 +00:00
Michael Telatynski e669c681e2 Fetch both config.json-s at the same time, first one fails 99% of the time
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-25 12:39:42 +00:00
Weblate 4d983f037e Merge branch 'origin/develop' into Weblate. 2020-03-24 16:41:35 +00:00
Michael Telatynski c10732736c Merge pull request #12832 from vector-im/t3chguy/webpack-stats
Add webpack stats which will be used by CI and stored to artifacts
2020-03-24 16:41:30 +00:00
Travis Ralston bde5679d11 Ask for Riot config over postMessage for the Jitsi widget
Fixes https://github.com/vector-im/riot-web/issues/12839 by not using the app load order that doesn't detect the right platform anyways.
2020-03-24 09:54:15 -06:00
Weblate 783f3c6955 Merge branch 'origin/develop' into Weblate. 2020-03-24 15:15:39 +00:00
Travis Ralston 4de93a8cdd Merge pull request #12842 from vector-im/revert-12836-travis/jitsi-wrapper
Revert "Remove useless app preloading from Jitsi widget wrapper"
2020-03-24 09:15:34 -06:00
Travis Ralston 4087ba0c5c Revert "Remove useless app preloading from Jitsi widget wrapper" 2020-03-24 09:14:59 -06:00
Weblate cd399f0284 Merge branch 'origin/develop' into Weblate. 2020-03-24 14:54:59 +00:00
roket1428 b41d318e62 Translated using Weblate (Turkish)
Currently translated at 96.0% (24 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-24 14:54:59 +00:00
random 97243e9c59 Translated using Weblate (Italian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2020-03-24 14:54:58 +00:00
Nathan Follens 3aee541cb9 Translated using Weblate (Dutch)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2020-03-24 14:54:58 +00:00
Travis Ralston da455c2a14 Merge pull request #12836 from vector-im/travis/jitsi-wrapper
Remove useless app preloading from Jitsi widget wrapper
2020-03-24 08:54:52 -06:00
Wilco Baan Hofman 679331323a Translated using Weblate (Dutch)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2020-03-24 09:00:37 +00:00
Travis Ralston 350a52b44e Remove useless app preloading from Jitsi widget wrapper
We should always have conference information, and if we don't then the widget is invalid.
2020-03-23 10:38:10 -06:00
Michael Telatynski 0620da4351 Add webpack stats which will be used by CI and stored to artifacts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-23 12:07:26 +00:00
David Baker c4bece1fd5 Merge pull request #12829 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-03-23 10:07:32 +00:00
Tentarial 080076e3e4 Translated using Weblate (German)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2020-03-23 09:55:16 +00:00
Kévin C f4ef7ba7e1 Translated using Weblate (French)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/fr/
2020-03-23 09:55:16 +00:00
Jeff Huang ffb7126582 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hant/
2020-03-23 09:55:16 +00:00
Slavi Pantaleev e22ade38f9 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/bg/
2020-03-23 09:55:16 +00:00
Osoitz ae9c02b456 Translated using Weblate (Basque)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eu/
2020-03-23 09:55:15 +00:00
Weblate 9539c14f2f Merge branch 'origin/develop' into Weblate. 2020-03-20 11:53:08 +00:00
Besnik Bleta a560d3586a Translated using Weblate (Albanian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sq/
2020-03-20 11:53:08 +00:00
J. Ryan Stinnett ffd155a6aa Merge pull request #12799 from vector-im/jryans/docker-version-release
Fix version for Docker builds
2020-03-20 11:53:02 +00:00
Weblate fbf4437159 Merge branch 'origin/develop' into Weblate. 2020-03-20 10:45:16 +00:00
Michael Telatynski f5ac675379 Merge pull request #12800 from vector-im/t3chguy/shortcuts2
Register Mac electron specific Cmd+, shortcut to User Settings
2020-03-20 10:45:07 +00:00
Michael Telatynski 3d266cb237 Register Mac electron specific Cmd+, shortcut to User Settings
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-19 23:42:10 +00:00
J. Ryan Stinnett 4afe7a73c4 Fix version for Docker builds
This (should) fix the version script for Docker builds by testing the branch
with a regex instead of single char glob.

Fixes https://github.com/vector-im/riot-web/issues/12777
2020-03-19 21:00:37 +00:00
Weblate f377dfcad4 Merge branch 'origin/develop' into Weblate. 2020-03-19 17:52:28 +00:00
Travis Ralston 775e1fc4ae Merge pull request #12780 from vector-im/travis/wrapped-jitsi
Use a local widget wrapper for Jitsi calls
2020-03-19 11:52:22 -06:00
Travis Ralston 09e26d0882 Misc case changes, comment updates 2020-03-19 11:47:43 -06:00
Weblate acfeee3258 Merge branch 'origin/develop' into Weblate. 2020-03-19 11:01:28 +00:00
Michael Telatynski 2b751d2ca6 Merge pull request #12786 from vector-im/t3chguy/patch-2
Delete shortcuts.md
2020-03-19 11:01:22 +00:00
Michael Telatynski 9055d0b8b5 Delete shortcuts.md
The in-app keyboard shortcuts view has more.
https://github.com/matrix-org/matrix-react-sdk/pull/4231
2020-03-19 10:52:48 +00:00
Travis Ralston e1eb16ce46 Use a local widget wrapper for Jitsi calls
Effectively fixes https://github.com/vector-im/riot-web/issues/11074
Effectively fixes https://github.com/vector-im/riot-web/issues/7112
Fixes https://github.com/vector-im/riot-web/issues/6930
Fixes Jitsi widgets not working for guests (https://github.com/vector-im/riot-web/issues/8933)
Fixes https://github.com/vector-im/riot-web/issues/5048

Previously we were relying on an integration manager to be defined, functional, and alive in order to join Jitsi calls. This commit changes this so we aren't reliant on an integration manager for Jitsi calls at all, and gives people the option of choosing a Jitsi server via the config.json.

This side is just the wrapper/shell: the logic is mostly in the react-sdk (to be linked via PRs). This layer simply has an HTML file exported that can be used to render a Jitsi widget, and the react-sdk constructs a URL to access it locally. This is similar to how the mobile apps handle Jitsi widgets: instead of iframing the widget URL directly into the app, they pull apart the widget information and natively render it. We're effectively doing the same here by parsing the widget options and using our local wrapper instead of whatever happens to be defined in the widget state event.

Integration managers should still continue to offer a widget URL for Jitsi widgets as this is what the spec requires.

A large part of this is based upon Dimension's handling of Jitsi and widgets in general: a license has been granted to allow Riot (and therefore the react-sdk) to use the code and be inspired by it.
2020-03-18 15:48:02 -06:00
Weblate 6b959b4a76 Merge branch 'origin/develop' into Weblate. 2020-03-18 14:04:05 +00:00
Michael Telatynski 7296b704a8 Merge pull request #12756 from vector-im/t3chguy/gemini
Remove remainders of gemini-scrollbar and react-gemini-scrollbar
2020-03-18 14:03:59 +00:00
Weblate f02a74a449 Merge branch 'origin/develop' into Weblate. 2020-03-18 11:43:43 +00:00
Elwyn Malethan 3a8a5febe9 Translated using Weblate (Welsh)
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/cy/
2020-03-18 11:43:42 +00:00
Pedro Silva a0fbae0971 Translated using Weblate (Portuguese)
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/pt/
2020-03-18 11:43:42 +00:00
J. Ryan Stinnett 3b8a34917f Merge pull request #12762 from jaredsmith/patch-1
Update electron to v7.1.14
2020-03-18 11:43:37 +00:00
J. Ryan Stinnett 5808ea2ba1 Add notes about chatting with the team 2020-03-18 11:18:29 +00:00
J. Ryan Stinnett e348546e59 Reformat 2020-03-18 10:59:46 +00:00
J. Ryan Stinnett 34f3671c09 Add notes on review request handling 2020-03-18 10:59:33 +00:00
J. Ryan Stinnett 3989f41985 Clarify merge options 2020-03-18 10:53:48 +00:00
J. Ryan Stinnett bd8b3a9046 Move multi-repo linking to workflow section 2020-03-18 10:21:28 +00:00
J. Ryan Stinnett 1aecc3d7e5 Add multi-repo PR linking
Co-Authored-By: Travis Ralston <travpc@gmail.com>
2020-03-18 10:18:41 +00:00
Alexis a366c68c38 Translated using Weblate (Portuguese)
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/pt/
2020-03-17 23:32:14 +00:00
Pedro Silva 93059366ab Translated using Weblate (Portuguese)
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/pt/
2020-03-17 23:32:14 +00:00
Jared Smith df9069090f Update electron to v7.1.14
Update dependency to electron version 7.1.4 to resolve issue where riot-web
has troubles syncing messages, and throws a "**CRASHING**:seccomp-bpf
failure in syscall 0230" error.  

See https://github.com/electron/electron/issues/22291 for more details.
2020-03-17 10:51:39 -04:00
Weblate 77c5d55d38 Merge branch 'origin/develop' into Weblate. 2020-03-17 14:39:19 +00:00
RiotRobot a9fbf2f968 Reset matrix-react-sdk back to develop branch 2020-03-17 14:39:09 +00:00
RiotRobot 25a3449ad2 Reset matrix-js-sdk back to develop branch 2020-03-17 14:38:58 +00:00
Weblate 96c7765f5a Merge branch 'origin/develop' into Weblate. 2020-03-17 14:37:53 +00:00
RiotRobot b01c6e67fd Merge branch 'master' into develop 2020-03-17 14:37:28 +00:00
RiotRobot c4f3d39d42 v1.5.13 2020-03-17 14:31:49 +00:00
RiotRobot c84a01310f Prepare changelog for v1.5.13 2020-03-17 14:31:49 +00:00
RiotRobot 61bf0d5447 v1.5.13 2020-03-17 14:29:28 +00:00
RiotRobot 8002bc66d7 Upgrade matrix-react-sdk to 2.2.3 2020-03-17 14:29:06 +00:00
RiotRobot c3553a2649 Upgrade matrix-js-sdk to 5.1.1 2020-03-17 14:28:23 +00:00
Weblate 6854f2d7e8 Merge branch 'origin/develop' into Weblate. 2020-03-17 11:16:54 +00:00
Michael Telatynski 5913e3830b Merge pull request #12735 from vector-im/t3chguy/url
Add url tests to Modernizr
2020-03-17 11:16:48 +00:00
Michael Telatynski 368d26af34 update yarn lock a little more forcibly
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-17 10:36:26 +00:00
Weblate ebf4e03019 Merge branch 'origin/develop' into Weblate. 2020-03-17 10:32:39 +00:00
catborise 3e94b7d911 Translated using Weblate (Turkish)
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/tr/
2020-03-17 10:32:39 +00:00
Mejans 1fda6eb5ab Translated using Weblate (Occitan)
Currently translated at 83.3% (20 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/oc/
2020-03-17 10:32:39 +00:00
Michael Telatynski 8cef591c57 Remove remainders of gemini-scrollbar and react-gemini-scrollbar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-17 10:31:46 +00:00
Damir Jelić 31faa4753c Merge branch 'poljar/delete-events' into develop 2020-03-17 10:17:21 +01:00
Mejans fe27939394 Added translation using Weblate (Occitan) 2020-03-16 20:06:50 +00:00
Travis Ralston 4155973b8a Merge pull request #12744 from vector-im/dependabot/npm_and_yarn/electron_app/minimist-1.2.2
Bump minimist from 1.2.0 to 1.2.2 in /electron_app
2020-03-16 09:55:42 -06:00
dependabot[bot] 5949c432fa Bump minimist from 1.2.0 to 1.2.2 in /electron_app
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.2.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-16 04:12:25 +00:00
Michael Telatynski eba63ce9ab Add url tests to Modernizr
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-03-14 00:13:47 +00:00
J. Ryan Stinnett 0b772ca50a Tweak issue assigning
Co-Authored-By: Travis Ralston <travpc@gmail.com>
2020-03-13 16:48:03 +00:00
J. Ryan Stinnett d930d14735 Add review policy doc
This documents various attributes of our overall review policy from code,
design, and product perspectives.

Fixes https://github.com/vector-im/riot-web/issues/12614
2020-03-13 16:39:29 +00:00
Travis Ralston 8e2eab21ae Merge pull request #12731 from vector-im/travis/theme-poc
Add docs and flag for custom theme support
2020-03-13 09:48:03 -06:00
Travis Ralston 98bd951366 Add docs and flag for custom theme support 2020-03-13 09:34:16 -06:00
Travis Ralston 7c8363c85e Merge pull request #12716 from vector-im/travis/ts-2
Declare jsx in tsconfig for IDEs
2020-03-13 09:25:16 -06:00
Travis Ralston b419afad40 Declare jsx in tsconfig for IDEs 2020-03-12 13:37:28 -06:00
Travis Ralston 139bf536e4 Merge pull request #12713 from vector-im/travis/yarn-cleanup
Remove stuff that yarn install doesn't think we need
2020-03-12 10:58:28 -06:00
Travis Ralston e110c8ed9b Remove stuff that yarn install doesn't think we need 2020-03-12 10:47:34 -06:00
Damir Jelić 20a89d67cb ElectronPlatform: Add support to remove events from the event index. 2020-03-12 11:51:34 +01:00
David Baker ce9a964956 Merge pull request #12691 from vector-im/dbkr/yarn_upgrade_20200311
yarn upgrade
2020-03-12 09:45:45 +00:00
Travis Ralston 296e7011e5 Merge pull request #12696 from vector-im/travis/typescript-2
Support TypeScript for React components
2020-03-11 18:36:41 -06:00
Travis Ralston 798d4dabc0 Supply --jsx react to tsc 2020-03-11 18:25:19 -06:00
Travis Ralston f44694ad44 Support TypeScript for React components
Same treatment as https://github.com/matrix-org/matrix-react-sdk/pull/4203
2020-03-11 18:19:03 -06:00
RiotRobot d4a578542f v1.5.13-rc.1 2020-03-11 17:38:21 +00:00
RiotRobot 3dadc2d1d6 Prepare changelog for v1.5.13-rc.1 2020-03-11 17:38:21 +00:00
RiotRobot 149098921f v1.5.13-rc.1 2020-03-11 17:36:48 +00:00
RiotRobot 34817a0044 js-sdk & react-sdk rc.1 2020-03-11 17:36:18 +00:00
David Baker e18157d5a0 yarn upgrade 2020-03-11 14:56:13 +00:00
David Baker 87e32baefa Merge pull request #12688 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-03-11 14:24:40 +00:00
Weblate 789c52a9e1 Merge branch 'origin/develop' into Weblate. 2020-03-10 15:27:15 +00:00
Travis Ralston 32aa897ef8 Merge pull request #12670 from vector-im/travis/fix-docker-version
Fix Docker image version for develop builds
2020-03-10 09:27:08 -06:00
random b7384a9a56 Translated using Weblate (Italian)
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/it/
2020-03-10 14:26:04 +00:00
Tirifto 6ec5dfc5f6 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/
2020-03-10 14:26:04 +00:00
Travis Ralston b0f71bc990 Fix Docker image version for develop builds
Turns out it helps to use the right syntax.

Fixes https://github.com/vector-im/riot-web/issues/12009
2020-03-09 19:57:52 -06:00
catborise ecdfe24fa8 Translated using Weblate (Turkish)
Currently translated at 95.8% (23 of 24 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/tr/
2020-03-08 10:25:55 +00:00
Walter 0688641554 Translated using Weblate (Russian)
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/ru/
2020-03-08 10:25:55 +00:00
MamasLT 38644d9d30 Translated using Weblate (Lithuanian)
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/lt/
2020-03-08 10:25:55 +00:00
Tentarial a751dd63fa Translated using Weblate (German)
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/de/
2020-03-08 10:25:54 +00:00
Osoitz 7da915b1b0 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/
2020-03-08 10:25:54 +00:00
Weblate c20028782c Merge branch 'origin/develop' into Weblate. 2020-03-05 17:05:23 +00:00
Szimszon e2de059a78 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/
2020-03-05 17:05:22 +00:00
Jeff Huang a16faa2610 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/
2020-03-05 17:05:22 +00:00
Travis Ralston 71f2f0e7c9 Merge pull request #12612 from Pestdoktor/docker-cleanup
docker: optimize custom sdk builds
2020-03-05 10:05:15 -07:00
Jonas Fentker f5bd5a345e docker: download required branch only 2020-03-04 23:14:42 +01:00
Weblate 3ffce87d3a Merge branch 'origin/develop' into Weblate. 2020-03-04 13:08:34 +00:00
Nathan Follens 207677f1af 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/
2020-03-04 13:08:34 +00:00
Kévin C d67d640ef9 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/
2020-03-04 13:08:34 +00:00
Nathan Follens 60e5b5f94e 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/
2020-03-04 13:08:34 +00:00
Besnik Bleta 959a6e91a0 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/
2020-03-04 13:08:33 +00:00
RiotRobot 872a7a74fb Reset matrix-react-sdk back to develop branch 2020-03-04 13:07:59 +00:00
RiotRobot 4548831ac5 Reset matrix-js-sdk back to develop branch 2020-03-04 13:07:45 +00:00
RiotRobot d88f9ed2c0 Merge branch 'master' into develop 2020-03-04 13:06:43 +00:00
RiotRobot 6e68c106f7 v1.5.12 2020-03-04 12:58:03 +00:00
RiotRobot 2507073c20 Prepare changelog for v1.5.12 2020-03-04 12:58:03 +00:00
RiotRobot 096831c9df v1.5.12 2020-03-04 12:01:38 +00:00
RiotRobot c26396d693 Upgrade matrix-react-sdk to 2.2.1 2020-03-04 12:01:31 +00:00
RiotRobot b52b0f525f Log packages when checking version 2020-03-04 12:00:37 +00:00
Weblate 39ee5d77bd Merge branch 'origin/develop' into Weblate. 2020-03-03 22:27:52 +00:00
Michael Telatynski 48c8f16a4c Merge pull request #12590 from vector-im/t3chguy/sso
riot-desktop open SSO in browser so user doesn't have to auth twice
2020-03-03 22:27:46 +00:00
J. Ryan Stinnett adc329c67f Revert "Upgrade to Electron 8.0.2"
This reverts commit 9b9d585af0.
2020-03-03 13:21:49 -07:00
J. Ryan Stinnett 2a5438d636 Revert "Remove will-navigate comment after Electron fix"
This reverts commit 749d7e8e4c.
2020-03-03 13:20:12 -07:00
Michael Telatynski 706834939f Revert "Remove will-navigate as we expect it to be broken like pre-8.0.2"
This reverts commit fb656ce8bd.
2020-03-03 13:20:03 -07:00
tctovsli 4525ead1df Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nn/
2020-03-02 20:25:33 +00:00
tctovsli 1f42f33102 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nb_NO/
2020-03-02 20:25:33 +00:00
forteller 0e3e1f3a9d Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nb_NO/
2020-03-02 20:25:33 +00:00
Szimszon 4399af4189 Translated using Weblate (Hungarian)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2020-03-02 20:25:33 +00:00
Tentarial 2514f11471 Translated using Weblate (German)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/de/
2020-03-02 20:25:33 +00:00
Michal Stanke 0546c74b3b Translated using Weblate (Czech)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/cs/
2020-03-02 20:25:33 +00:00
ctr 340b6bf0d2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/zh_Hans/
2020-03-02 20:25:33 +00:00
Michael Telatynski bb6afd7c30 backport riot-desktop implementation into riot-web 2020-03-02 20:16:41 +00:00
Michael Telatynski 09ed0e781a Update copy for SSO modal 2020-03-02 20:04:31 +00:00
RiotRobot 94ceb5a46b Reset SDKs back to develop branch 2020-03-02 17:57:08 +00:00
RiotRobot d077165858 Merge branch 'master' into develop 2020-03-02 17:55:04 +00:00
RiotRobot 43b70bf720 v1.5.11 2020-03-02 17:51:01 +00:00
RiotRobot 0c4048484e Prepare changelog for v1.5.11 2020-03-02 17:51:00 +00:00
RiotRobot 8710f7d196 v1.5.11 2020-03-02 17:47:58 +00:00
RiotRobot 620414187f Upgrade matrix-react-sdk to 2.2.0 2020-03-02 17:47:53 +00:00
RiotRobot e71dcacd2d Upgrade matrix-js-sdk to 5.1.0 2020-03-02 17:47:32 +00:00
Michael Telatynski 178c61dbf7 fix typo 2020-03-02 15:01:06 +00:00
Michael Telatynski c197661be0 riot-desktop open SSO in browser so user doesn't have to auth twice 2020-03-02 14:59:55 +00:00
Michael Telatynski fb656ce8bd Remove will-navigate as we expect it to be broken like pre-8.0.2 2020-03-02 13:08:04 +00:00
J. Ryan Stinnett 749d7e8e4c Remove will-navigate comment after Electron fix
Electron 8.0.2 and later (which we're now using) resolves this issue with
`will-navigate`.
2020-03-02 13:07:49 +00:00
Michael Telatynski e238fead7c Merge pull request #12585 from vector-im/t3chguy/sso
Fix SSO flows for electron 8.0.2 by re-breaking will-navigate
2020-03-02 12:56:41 +00:00
Michael Telatynski 0d9be8c255 Remove will-navigate as we expect it to be broken like pre-8.0.2 2020-03-02 11:09:06 +00:00
Travis Ralston 0e37aa9f69 Merge pull request #12563 from krkk/noscript
index.html: Place noscript on top of the page
2020-02-28 13:43:17 -07:00
Travis Ralston 22bc98c8bc Merge branch 'develop' into noscript 2020-02-28 13:34:39 -07:00
J. Ryan Stinnett 769c8b1f27 Merge pull request #12561 from vector-im/jryans/elec-will-nav
Remove will-navigate comment after Electron fix
2020-02-28 18:02:55 +00:00
J. Ryan Stinnett 1043b0eb11 Remove will-navigate comment after Electron fix
Electron 8.0.2 and later (which we're now using) resolves this issue with
`will-navigate`.
2020-02-28 11:42:08 +00:00
J. Ryan Stinnett 6bc79ad54a Merge pull request #12552 from vector-im/jryans/safari-e2e-idb
Update loading test for JS SDK IDB change
2020-02-27 16:48:16 +00:00
J. Ryan Stinnett c70bfe1f91 Update loading test for JS SDK IDB change
Part of https://github.com/vector-im/riot-web/issues/12207
2020-02-27 14:57:52 +00:00
J. Ryan Stinnett a4512ffa6d Merge pull request #12528 from vector-im/jryans/upgrade-deps-2020-02-26
Upgrade deps
2020-02-27 11:24:45 +00:00
J. Ryan Stinnett bb5aa94707 Upgrade deps 2020-02-26 15:04:38 +00:00
RiotRobot 03f63397ff v1.5.11-rc.1 2020-02-26 14:37:19 +00:00
RiotRobot b29a3721d2 Prepare changelog for v1.5.11-rc.1 2020-02-26 14:37:19 +00:00
RiotRobot 00244d5428 v1.5.11-rc.1 2020-02-26 14:35:20 +00:00
RiotRobot a4d01a5f04 Upgrade matrix-react-sdk to 2.2.0-rc.1 2020-02-26 14:34:56 +00:00
RiotRobot 4fced076b7 Upgrade matrix-js-sdk to 5.1.0-rc.1 2020-02-26 14:33:57 +00:00
J. Ryan Stinnett 9b9d585af0 Upgrade to Electron 8.0.2 2020-02-26 13:44:07 +00:00
J. Ryan Stinnett 76430a9c77 Merge pull request #12523 from vector-im/jryans/relax-windows-signing
Change Windows signing to warning when missing token
2020-02-26 13:31:48 +00:00
Michael Telatynski dacbc4dc6d Merge pull request #12524 from vector-im/t3chguy/eval
Modernizr remove t3st/es6/contains
2020-02-26 12:23:34 +00:00
Michael Telatynski 7c84e406ac Modernizr remove t3st/es6/contains
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-26 12:16:35 +00:00
J. Ryan Stinnett 096a828e44 Change Windows signing to warning when missing token
This allows Windows builds to complete when the singing token is not present.
2020-02-26 11:54:20 +00:00
Michael Telatynski 4916ed0870 Merge pull request #12519 from vector-im/t3chguy/eval
Switch out any eval-using Modernizr rules
2020-02-26 11:36:58 +00:00
J. Ryan Stinnett d7893e1d58 Merge pull request #12522 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-02-26 11:33:18 +00:00
Nils J. Haugen 22dc0ba772 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nn/
2020-02-26 11:31:36 +00:00
Michael Telatynski 37e17133bc Switch out any eval-using Modernizr rules
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-26 10:24:10 +00:00
Michael Telatynski cf52ccad67 Merge pull request #12487 from vector-im/t3chguy/spellcheck
Notify electron of language changes
2020-02-26 09:52:30 +00:00
J. Ryan Stinnett 81578fc3cf Merge pull request #12503 from vector-im/jryans/relax-notarisation-check
Relax macOS notarisation check to print a warning
2020-02-25 13:30:09 +00:00
J. Ryan Stinnett bdb395aa41 Change to banner style 2020-02-25 12:05:36 +00:00
J. Ryan Stinnett 420537a64d Relax macOS notarisation check to print a warning
This makes it a bit more friendly to build macOS Electron builds without a
notarisation config set up by only warning when it is missing.
2020-02-25 11:44:33 +00:00
Michael Telatynski af0b57bcda make BasePlatform::setLanguage sync, handle promises internally
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-25 10:57:41 +00:00
J. Ryan Stinnett 9d1dbf4ce9 Merge pull request #12486 from vector-im/jryans/clarify-desktop-browsers
Clarify supported tier means desktop OSes
2020-02-24 17:27:31 +00:00
Michael Telatynski 5117efaf98 Notify electron of language changes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-24 17:14:23 +00:00
J. Ryan Stinnett b8766d5fb4 Clarify supported tier means desktop OSes
This clarifies that the "supported" tier is for browser and the official app on
desktop OSes only.

Fixes https://github.com/vector-im/riot-web/issues/12421
2020-02-24 16:52:30 +00:00
Michael Telatynski 421cd41279 Merge pull request #12477 from vector-im/t3chguy/fix_downloading
Use noreferrer in addition to noopener for edge case browsers
2020-02-24 13:37:50 +00:00
J. Ryan Stinnett f98ca56b5e Merge pull request #12466 from vector-im/jryans/a11y-editor-keyboard
Document start / end composer shortcuts
2020-02-24 12:02:13 +00:00
David Baker e3cbcc8fbd Merge pull request #12480 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-02-24 11:53:38 +00:00
Balázs Meskó 37c4da5614 Translated using Weblate (Hungarian)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2020-02-24 11:34:36 +00:00
Michael Telatynski af17ca11c7 Use noreferrer in addition to noopener for edge case browsers
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-23 22:14:30 +00:00
Karol Kosek b571ff766c index.html: Place noscript on top of the page
Before this change, you had to scroll down to see the noscript element.
This change places the noscript element on top of the page making sure
that a user will see this message when site is loaded without JavaScript.

Signed-off-by: Karol Kosek <krkk@krkk.ct8.pl>
2020-02-22 21:14:01 +01:00
J. Ryan Stinnett 9fb807772b Document start / end composer shortcuts
This documents shortcuts for jumping to the start / end of the composer
contents.

Part of https://github.com/vector-im/riot-web/issues/12438
Depends on https://github.com/matrix-org/matrix-react-sdk/pull/4108
2020-02-21 19:00:47 +00:00
Weblate aa56edddd8 Merge branch 'origin/develop' into Weblate. 2020-02-21 17:34:06 +00:00
David Baker 65687dfd6f Merge pull request #12464 from vector-im/dbkr/move_bk_pipelines
Remove buildkite pipeline
2020-02-21 17:33:59 +00:00
David Baker 67eb261ddb Remove buildkite pipeline
Now moved to the pipelines repo
2020-02-21 17:20:58 +00:00
jakobrs 5fcb67d646 Translated using Weblate (Norwegian Bokmål)
Currently translated at 91.3% (21 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nb_NO/
2020-02-20 21:24:48 +00:00
J. Ryan Stinnett 82652de078 Merge pull request #12435 from vector-im/jryans/rm-release-exec
Remove exec so release script continues
2020-02-20 13:37:50 +00:00
J. Ryan Stinnett 106ed43f36 Remove exec so release script continues
We now want to do post-processing after the JS SDK release script, so we can't
use `exec` here.
2020-02-20 12:10:26 +00:00
J. Ryan Stinnett de71e36843 Reset matrix-react-sdk back to develop branch 2020-02-20 12:01:58 +00:00
J. Ryan Stinnett 120d36d70b Reset matrix-js-sdk back to develop branch 2020-02-20 12:01:58 +00:00
Michael Telatynski d6587b9094 Merge pull request #12425 from vector-im/t3chguy/persist
Use Persistent Storage where possible
2020-02-20 11:56:59 +00:00
Michael Telatynski 5cc0cef06c Use Persistent Storage where possible
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-20 00:38:09 +00:00
RiotRobot eb66d62f1a v1.5.10 2020-02-19 16:23:51 +00:00
RiotRobot aba70979ba Prepare changelog for v1.5.10 2020-02-19 16:23:51 +00:00
RiotRobot 3147624df2 v1.5.10 2020-02-19 16:21:35 +00:00
RiotRobot dafb2f01b1 released react-sdk & js-sdk 2020-02-19 16:20:44 +00:00
Michael Telatynski 2c572bbe1e Merge pull request #12292 from vector-im/t3chguy/usercontent
Get rid of dependence on usercontent.riot.im
2020-02-19 13:00:02 +00:00
Michael Telatynski 44ec8198e5 Merge branches 'develop' and 't3chguy/usercontent' of github.com:vector-im/riot-web into t3chguy/usercontent
 Conflicts:
	README.md
2020-02-19 12:51:34 +00:00
David Baker 5ac9902384 Switch back to develop deps 2020-02-17 14:15:21 +00:00
RiotRobot 5e44d174e8 Merge branch 'master' into develop 2020-02-17 13:44:59 +00:00
RiotRobot a5d5e2800c v1.5.9 2020-02-17 13:42:37 +00:00
RiotRobot b225367e0d Prepare changelog for v1.5.9 2020-02-17 13:42:36 +00:00
RiotRobot 38cd6a0d0c v1.5.9 2020-02-17 13:40:07 +00:00
RiotRobot 9b5655c1fa Released js-sdk & react-sdk 2020-02-17 13:39:24 +00:00
J. Ryan Stinnett 7168bdd6dc Merge pull request #12377 from vector-im/jryans/experimental-support-tier
Add experimental support tier
2020-02-17 12:40:58 +00:00
J. Ryan Stinnett e482d69034 Merge pull request #12374 from vector-im/jryans/release-tag-tweaks
Automate SDK dep upgrades for release
2020-02-17 12:34:54 +00:00
J. Ryan Stinnett e1eb354c1c Add experimental support tier
This updates and rewrites the supported environments portion of the README. It
also adds a new experimental support tier to clarify how we'll handle things
like installed PWAs and mobile web.
2020-02-14 18:04:54 +00:00
J. Ryan Stinnett 585d40f4c1 Reset SDK deps back to develop after a release
This automates the (frequently forgotten) step of resetting SDK deps back to the
develop branch after merging the release to develop.
2020-02-14 12:21:54 +00:00
J. Ryan Stinnett a26bd6ef94 Add auto-upgrade support for SDK deps
This automates the SDK upgrade step of the release process.
2020-02-14 11:43:08 +00:00
J. Ryan Stinnett aa95dcc0cb Check the next tag when looking for the latest version 2020-02-14 11:04:39 +00:00
RiotRobot 08c149ed66 v1.5.9-rc.1 2020-02-13 17:56:15 +00:00
RiotRobot 9dd89dff6a Prepare changelog for v1.5.9-rc.1 2020-02-13 17:56:14 +00:00
RiotRobot 49ece1cbf9 v1.5.9-rc.1 2020-02-13 17:53:36 +00:00
RiotRobot 35204416bf Upgrade JS SDK to 5.0.0-rc.1 and React SDK to 2.1.0-rc.2 2020-02-13 17:50:29 +00:00
Michael Telatynski 56f9149e84 update webpack paths
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-13 17:00:17 +00:00
Michael Telatynski 7664eb27c4 Move bulk to react-sdk and reference it from riot-web land
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-13 16:58:28 +00:00
Michael Telatynski 22d0d1029e update README
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-13 16:55:23 +00:00
Michael Telatynski b7ed7a1dd7 Update comments and such
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-13 16:53:45 +00:00
Michael Telatynski 2645e6f525 Merge branches 'develop' and 't3chguy/usercontent' of github.com:vector-im/riot-web into t3chguy/usercontent 2020-02-13 16:36:11 +00:00
J. Ryan Stinnett 036348cd60 Electron 8.0.0 crashes on macOS, reverting to 7.1.12 2020-02-13 15:24:59 +00:00
J. Ryan Stinnett 51f2afb7b7 Add allow-jit entitlement from electron-builder defaults 2020-02-13 15:02:22 +00:00
J. Ryan Stinnett 2c0968e40e Return to default deb after install script
Upstream electron-builder now contains the SUID sandbox change.

See also https://github.com/electron-userland/electron-builder/pull/4163
2020-02-13 14:52:44 +00:00
J. Ryan Stinnett 3eb5eb1d21 Upgrade electron-builder 2020-02-13 14:50:19 +00:00
J. Ryan Stinnett 4a1b9d8ea4 Upgrade to Electron 8.0.0 2020-02-13 14:45:42 +00:00
J. Ryan Stinnett 1a84836fd0 Merge pull request #12354 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-02-13 14:35:02 +00:00
Weblate 2e2d90f335 Merge branch 'origin/develop' into Weblate. 2020-02-10 19:18:54 +00:00
Michael Telatynski b3fb496212 Merge pull request #12310 from MattWThomas/patch-1
Add top left menu shortcut
2020-02-10 19:18:48 +00:00
Matthew Thomas a24959319d Add top left menu shortcut
Add <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>`</kbd>
2020-02-10 12:59:35 -06:00
MozillaKab e923f935ea Added translation using Weblate (Kabyle) 2020-02-09 03:24:46 +00:00
Michael Telatynski 0c62db3615 revert webpack changes 2020-02-07 22:09:41 +00:00
Michael Telatynski d39d89de83 revert modernizr change 2020-02-07 22:08:57 +00:00
Michael Telatynski 98773df76e Get rid of dependence on usercontent.riot.im 2020-02-07 22:07:30 +00:00
Michael Telatynski 54f7347da5 Merge pull request #12272 from vector-im/t3chguy/m1
Remove modernizr rules for features on which we only soft depend
2020-02-06 21:22:40 +00:00
Michael Telatynski 95f749ccd9 Remove modernizr rules for features on which we only soft depend
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-06 18:01:53 +00:00
Michael Telatynski eb62972aed Merge pull request #12258 from vector-im/t3chguy/csp
Embed CSP meta tag and stop using script-src unsafe-inline
2020-02-06 12:15:17 +00:00
Michael Telatynski 3a5a904afb Update src/vector/index.html
Co-Authored-By: J. Ryan Stinnett <jryans@gmail.com>
2020-02-06 11:54:05 +00:00
Michael Telatynski 7d68c2c465 re-add child-src as the common ancestor of worker-src and frame-src for backwards compat and split onto multiple lines for readability
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-02-06 11:52:21 +00:00
Michael Telatynski 074a3cfaaf fix font-src of CSP 2020-02-06 10:17:38 +00:00
Michael Telatynski 2b5e028cbe add comment 2020-02-05 16:37:19 +00:00
Michael Telatynski ec20e1ece2 Embed CSP meta tag and stop using script-src unsafe-inline 2020-02-05 16:35:23 +00:00
Travis Ralston b107da09fa Merge pull request #12251 from vector-im/jaywink/add-contribute-json
Add contribute.json
2020-02-05 15:21:07 +00:00
Jason Robinson 9534a25270 Fix contribute.json location as per spec
Signed-off-by: Jason Robinson <jasonr@matrix.org>
2020-02-05 16:28:44 +02:00
Michael Telatynski f7e5613f30 Merge pull request #12232 from vector-im/t3chguy/modernizr
Improve Browser checks
2020-02-05 14:15:01 +00:00
Michael Telatynski 7d49078f22 Change them to Modernizr tests and add more rules 2020-02-05 14:05:46 +00:00
Jason Robinson 3abe61e13b Add contribute.json
This document is required for example for all Mozilla websites
and makes sense for Riot to also describe itself - see
https://www.contributejson.org/

Signed-off-by: Jason Robinson <jasonr@matrix.org>
2020-02-05 15:25:09 +02:00
Michael Telatynski 032efafe2e Rejig things around to catch Promises not being a thing at all 2020-02-04 13:35:05 +00:00
Michael Telatynski 087bcf0ae6 fix declaration order 2020-02-04 11:11:06 +00:00
Michael Telatynski cdc1202bbe Add custom browser checks outside of Modernizr 2020-02-04 11:08:52 +00:00
Michael Telatynski bceca49cdc Update vendored modernizr 2020-02-04 11:00:47 +00:00
Matthew Hodgson c3e6a30789 Merge branch 'develop' of git+ssh://github.com/vector-im/riot-web into develop 2020-01-31 15:22:44 +00:00
Matthew Hodgson 87913e6c98 yarn electron nowadays does yarn build already 2020-01-31 15:22:16 +00:00
J. Ryan Stinnett 00fa5aad85 Enable padlock flag by default 2020-01-31 14:31:13 +00:00
J. Ryan Stinnett 2818de4d4a Merge pull request #12173 from vector-im/jryans/padlock-flag
Document padlock flag
2020-01-31 13:44:04 +00:00
J. Ryan Stinnett e9f8700d6b Document padlock flag 2020-01-31 13:36:16 +00:00
Matthew Hodgson d8b059452c fix rogue ` 2020-01-31 13:04:00 +00:00
J. Ryan Stinnett 98b8ba2650 Merge pull request #12126 from vector-im/t3chguy/develop_cs
Enable cross-signing on /develop
2020-01-29 16:37:52 +00:00
Michael Telatynski 37d924731d Enable cross-signing on /develop 2020-01-29 11:47:34 +00:00
Travis Ralston 4affaaf309 Merge pull request #12110 from vector-im/travis/legacy-decorators
Switch back to legacy decorators
2020-01-28 16:54:10 +00:00
Travis Ralston d3d6e4ae77 Switch back to legacy decorators
For https://github.com/matrix-org/matrix-react-sdk/pull/3961
2020-01-28 16:46:02 +00:00
Travis Ralston daf6aaaf30 Merge pull request #12102 from vector-im/travis/babel-skinning
Update babel targets
2020-01-28 14:50:25 +00:00
Travis Ralston d50b52cdc5 Try to fix Jest 2020-01-28 14:31:09 +00:00
Travis Ralston cff4ad9e82 Remove legacy and stop using deprecated things 2020-01-28 14:21:26 +00:00
Travis Ralston e3e7a47aea Update babel targets 2020-01-28 12:48:27 +00:00
J. Ryan Stinnett c30f901716 Merge pull request #12076 from vector-im/jryans/fetch-deps-lint
Install deps for linting
2020-01-27 16:13:10 +00:00
J. Ryan Stinnett 0ad0cbeb35 Install deps for linting 2020-01-27 16:05:41 +00:00
J. Ryan Stinnett 8ca6c2c433 Flip SDKs back to develop 2020-01-27 16:01:12 +00:00
RiotRobot 9782599c69 Merge branch 'master' into develop 2020-01-27 12:02:44 +00:00
David Baker 59d3bd2746 Merge pull request #12062 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate
2020-01-27 10:07:37 +00:00
Weblate 1bbb104600 Merge branch 'origin/develop' into Weblate. 2020-01-24 22:47:37 +00:00
J. Ryan Stinnett 9c258f9da9 Merge pull request #12049 from vector-im/jryans/webpack-minimal
Change to minimal Webpack output
2020-01-24 22:47:32 +00:00
J. Ryan Stinnett 4c4f885f25 Change to minimal Webpack output
This changes Webpack to only output errors, warnings, or new compilations.
This has the effect of hiding the massive list of modules. The giant list was
actually _hiding_ warnings because they appear first and scroll off the
terminal.
2020-01-24 22:34:15 +00:00
Weblate fb32d41b3e Merge branch 'origin/develop' into Weblate. 2020-01-24 15:57:42 +00:00
Travis Ralston 2445f19431 Merge pull request #12015 from vector-im/travis/user-lists-labs
Remove docs for new invite dialog labs feature
2020-01-24 08:57:36 -07:00
Damir Jelić 7aff020d4d Merge branch 'poljar/seshat-ui' into develop 2020-01-24 14:40:54 +01:00
Weblate 192f2b8892 Merge branch 'origin/develop' into Weblate. 2020-01-24 13:40:37 +00:00
Weblate 3d804665da Merge branch 'origin/develop' into Weblate. 2020-01-24 13:39:07 +00:00
Damir Jelić c0558f3527 Merge branch 'poljar/seshat-filepanel' into develop 2020-01-24 14:38:20 +01:00
Balázs Meskó d6a5d701fe Translated using Weblate (Hungarian)
Currently translated at 100.0% (23 of 23 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hu/
2020-01-24 10:23:08 +00:00
Travis Ralston a34507f6e1 Remove DMs flag from the config too 2020-01-23 17:15:53 -07:00
Travis Ralston 8b08ba05c2 Remove docs for new invite dialog labs feature
It's the default now: https://github.com/matrix-org/matrix-react-sdk/pull/3906
2020-01-22 21:16:18 -07:00
Travis Ralston 9ee7febd9b Merge pull request #12008 from vector-im/travis/more-legal
Fix the remainder of the cookie links
2020-01-22 20:29:41 -07:00
Travis Ralston 47d88d6b79 Fix the remainder of the cookie links
Fixes https://github.com/vector-im/riot-web/issues/10362

Per https://github.com/vector-im/riot-web/pull/11998#issuecomment-577329852
2020-01-22 11:55:09 -07:00
J. Ryan Stinnett d7e47841e5 Merge pull request #12001 from vector-im/jryans/bash-docker
Use bash in Docker scripts
2020-01-22 17:48:57 +00:00
J. Ryan Stinnett b6963d0e5c Use bash in Docker scripts
Our Docker scripts use Bash-style conditionals that aren't supported by the
default Debian shell.
2020-01-22 17:45:22 +00:00
Travis Ralston 1b8ea4b6d7 Merge pull request #11999 from vector-im/travis/develop-docker
Use debian to build the Docker image
2020-01-22 10:04:01 -07:00
Travis Ralston 51a97571a0 Use debian to build the Docker image
Fixes not having certain OS capabilities to build some packages.
2020-01-22 09:08:05 -07:00
Michael Telatynski 1d53fc41ea Merge pull request #11998 from vector-im/t3chguy/update_config
Update cookie policy urls on /app and /develop config.json
2020-01-22 15:58:13 +00:00
Michael Telatynski 0798945109 Update cookie policy urls on /app and /develop config.json 2020-01-22 15:49:00 +00:00
Michael Telatynski 8d769dafca Merge pull request #11996 from vector-im/t3chguy/buildkite
BuildKite: Only deploy to /develop if everything else passed
2020-01-22 15:25:15 +00:00
Michael Telatynski 5d95a3ef7e Only deploy to /develop if everything else passed 2020-01-22 15:04:31 +00:00
J. Ryan Stinnett 0f24950466 Merge pull request #11995 from vector-im/jryans/extra-report-content
Add docs for admin report content message
2020-01-22 14:25:52 +00:00
J. Ryan Stinnett fe15d3b7c1 Add docs for admin report content message
Part of https://github.com/vector-im/riot-web/issues/11992
2020-01-22 14:18:29 +00:00
Travis Ralston 3036bab1c6 Merge pull request #11959 from vector-im/travis/fix-skinning
Load as little as possible in index.js for the skinner
2020-01-21 09:33:15 -07:00
Damir Jelić e1e3bba290 ElectronPlatform: Replace the indexSize method with the getStats method. 2020-01-21 13:35:29 +01:00
Damir Jelić e556bb242f ElectronPlatform: Add the indexSize method. 2020-01-21 13:35:29 +01:00
David Baker 18bdbe13b4 Merge pull request #11956 from vector-im/travis/steal-daves-webpack
Fix webpack config (by stealing Dave's config)
2020-01-21 10:23:15 +00:00
David Baker 6835f6054b path.resolve does joining too so path.join is redundant 2020-01-21 10:16:32 +00:00
Travis Ralston 99e1ff9477 Load as little as possible in index.js for the skinner
Imports are optimized to be concurrent/async by webpack, which means that when the old index.js referenced the Lifecycle from the react-sdk it caused the app to explode. This is because in another branch the Lifecycle references a class member of a skinnable component, leading to the skinner complaining that the skin hasn't been loaded.

To work around this, we've shoved all the app stuff to a new app.js file, leaving just the skinning and some early bootstrap work in the index.js
2020-01-20 19:52:11 -07:00
Travis Ralston 932c221548 Fix webpack config (by stealing Dave's config)
Without doing something like this it's hard to use `yarn link`ed resources.
2020-01-20 18:10:06 -07:00
Travis Ralston 3e324f6544 Merge pull request #11954 from vector-im/travis/fix/tests/jest-resolve
Force Jest to resolve the js-sdk and react-sdk to src directories
2020-01-20 14:38:16 -07:00
Travis Ralston 5b575d5627 Force Jest to resolve the js-sdk and react-sdk to src directories 2020-01-20 14:28:29 -07:00
David Baker be64e86cc3 Merge pull request #11949 from vector-im/dbkr/fix_webpack_build_fix
Fix build to not babel modules inside js/react sdk
2020-01-20 18:31:06 +00:00
David Baker 42743c3ead Third try at fixing build 2020-01-20 18:20:41 +00:00
David Baker 5d8d5d70d0 Fix build to not babel modules inside js/react sdk
Adds 'src' to react-sdk & js-sdk babel test path so we don't run node
modules inside js & react sdk through babel
2020-01-20 18:00:38 +00:00
David Baker 4c699d8001 Merge pull request #11944 from vector-im/dbkr/fix_build_webpack
Fix webpack to babel js-sdk & react-sdk but no other deps
2020-01-20 17:19:59 +00:00
David Baker 922ed597d6 Fix webpack to babel js-sdk & react-sdk but no other deps
This was happening implicitly in our dev setups and the CI build
because of the comment on the last line.
2020-01-20 16:55:07 +00:00
Damir Jelić a2e256b4c9 ElectronPlatform: Add the ability to load file events from the event index. 2020-01-17 10:11:57 +01:00
76 changed files with 3196 additions and 2391 deletions
-77
View File
@@ -1,77 +0,0 @@
steps:
- label: ":eslint: JS Lint"
command:
- "yarn install"
- "yarn lint:js"
plugins:
- docker#v3.0.1:
image: "node:12"
# This layer doesn't have a TypeScript linter. This comment is to remind TravisR to fix that.
# - label: ":eslint: TS Lint"
# command:
# - "echo '--- Install js-sdk'"
# - "./scripts/ci/install-deps.sh"
# - "yarn lint:ts"
# plugins:
# - docker#v3.0.1:
# image: "node:12"
- label: ":eslint: Types Lint"
command:
- "yarn install"
- "yarn lint:types"
plugins:
- docker#v3.0.1:
image: "node:12"
- label: "🛠 Build"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "echo '+++ Building Project'"
- "yarn build"
plugins:
- docker#v3.0.1:
image: "node:12"
- label: ":jest: Tests"
agents:
# We use a medium sized instance instead of the normal small ones because
# webpack loves to gorge itself on resources.
queue: "medium"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "yarn build:genfiles" # We have to build the app to make sure the autogenned files are present
- "echo '+++ Running Tests'"
- "yarn test"
plugins:
- docker#v3.0.1:
image: "node:10"
- label: ":hammer: Package"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "echo '+++ Packaging'"
- "./scripts/ci_package.sh"
branches: "develop"
artifact_paths: "dist/riot-*.tar.gz"
plugins:
- docker#v3.0.1:
image: "node:10"
- label: "🌐 i18n"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "echo '+++ Testing i18n output'"
- "yarn diff-i18n"
plugins:
- docker#v3.0.1:
image: "node:10"
+1
View File
@@ -21,3 +21,4 @@ electron/pub
/config.local*.json
/src/component-index.js
/.tmp
/webpack-stats.json
+25 -4
View File
@@ -5,12 +5,33 @@
"setClasses"
],
"feature-detects": [
"test/css/animations",
"test/css/displaytable",
"test/css/filters",
"test/css/flexbox",
"test/es5/specification",
"test/css/objectfit",
"test/storage/localstorage",
"test/workers/webworkers",
"test/indexeddb"
"test/es5/date",
"test/es5/function",
"test/es5/object",
"test/es5/undefined",
"test/es6/array",
"test/es6/collections",
"test/es6/promises",
"test/es6/string",
"test/svg",
"test/svg/asimg",
"test/svg/filters",
"test/url/parser",
"test/url/urlsearchparams",
"test/cors",
"test/iframe/sandbox",
"test/json",
"test/network/fetch",
"test/storage/localstorage"
]
}
+227
View File
@@ -1,3 +1,230 @@
Changes in [1.5.15](https://github.com/vector-im/riot-web/releases/tag/v1.5.15) (2020-04-01)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.14...v1.5.15)
## Security notice
The `jitsi.html` widget wrapper introduced in Riot 1.5.14 could be used to extract user data by tricking the user into adding a custom widget or opening a link in the browser used to run Riot. Jitsi widgets created through Riot UI do not pose a risk and do not need to be recreated.
It is important to purge any copies of Riot 1.5.14 so that the vulnerable `jitsi.html` wrapper from that version is no longer accessible.
## All changes
* Upgrade React SDK to 2.3.1 for Jitsi fixes
* Fix popout support for jitsi widgets
[\#12980](https://github.com/vector-im/riot-web/pull/12980)
Changes in [1.5.14](https://github.com/vector-im/riot-web/releases/tag/v1.5.14) (2020-03-30)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.14-rc.1...v1.5.14)
* Upgrade JS SDK to 5.2.0 and React SDK to 2.3.0
Changes in [1.5.14-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.14-rc.1) (2020-03-26)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.13...v1.5.14-rc.1)
* Upgrade JS SDK to 5.2.0-rc.1 and React SDK to 2.3.0-rc.1
* Update from Weblate
[\#12890](https://github.com/vector-im/riot-web/pull/12890)
* App load tweaks
[\#12869](https://github.com/vector-im/riot-web/pull/12869)
* Add review policy doc
[\#12730](https://github.com/vector-im/riot-web/pull/12730)
* Fix artifact searching in redeployer
[\#12875](https://github.com/vector-im/riot-web/pull/12875)
* Fix Jitsi wrapper being large by getting the config from elsewhere
[\#12845](https://github.com/vector-im/riot-web/pull/12845)
* Add webpack stats which will be used by CI and stored to artifacts
[\#12832](https://github.com/vector-im/riot-web/pull/12832)
* Revert "Remove useless app preloading from Jitsi widget wrapper"
[\#12842](https://github.com/vector-im/riot-web/pull/12842)
* Remove useless app preloading from Jitsi widget wrapper
[\#12836](https://github.com/vector-im/riot-web/pull/12836)
* Update from Weblate
[\#12829](https://github.com/vector-im/riot-web/pull/12829)
* Fix version for Docker builds
[\#12799](https://github.com/vector-im/riot-web/pull/12799)
* Register Mac electron specific Cmd+, shortcut to User Settings
[\#12800](https://github.com/vector-im/riot-web/pull/12800)
* Use a local widget wrapper for Jitsi calls
[\#12780](https://github.com/vector-im/riot-web/pull/12780)
* Delete shortcuts.md
[\#12786](https://github.com/vector-im/riot-web/pull/12786)
* Remove remainders of gemini-scrollbar and react-gemini-scrollbar
[\#12756](https://github.com/vector-im/riot-web/pull/12756)
* Update electron to v7.1.14
[\#12762](https://github.com/vector-im/riot-web/pull/12762)
* Add url tests to Modernizr
[\#12735](https://github.com/vector-im/riot-web/pull/12735)
* ElectronPlatform: Add support to remove events from the event index.
[\#12703](https://github.com/vector-im/riot-web/pull/12703)
* Bump minimist from 1.2.0 to 1.2.2 in /electron_app
[\#12744](https://github.com/vector-im/riot-web/pull/12744)
* Add docs and flag for custom theme support
[\#12731](https://github.com/vector-im/riot-web/pull/12731)
* Declare jsx in tsconfig for IDEs
[\#12716](https://github.com/vector-im/riot-web/pull/12716)
* Remove stuff that yarn install doesn't think we need
[\#12713](https://github.com/vector-im/riot-web/pull/12713)
* yarn upgrade
[\#12691](https://github.com/vector-im/riot-web/pull/12691)
* Support TypeScript for React components
[\#12696](https://github.com/vector-im/riot-web/pull/12696)
Changes in [1.5.13](https://github.com/vector-im/riot-web/releases/tag/v1.5.13) (2020-03-17)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.13-rc.1...v1.5.13)
* Upgrade to JS SDK 5.1.1 and React SDK 2.2.3
Changes in [1.5.13-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.13-rc.1) (2020-03-11)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.12...v1.5.13-rc.1)
* Update from Weblate
[\#12688](https://github.com/vector-im/riot-web/pull/12688)
* Fix Docker image version for develop builds
[\#12670](https://github.com/vector-im/riot-web/pull/12670)
* docker: optimize custom sdk builds
[\#12612](https://github.com/vector-im/riot-web/pull/12612)
* riot-desktop open SSO in browser so user doesn't have to auth twice
[\#12590](https://github.com/vector-im/riot-web/pull/12590)
* Fix SSO flows for electron 8.0.2 by re-breaking will-navigate
[\#12585](https://github.com/vector-im/riot-web/pull/12585)
* index.html: Place noscript on top of the page
[\#12563](https://github.com/vector-im/riot-web/pull/12563)
* Remove will-navigate comment after Electron fix
[\#12561](https://github.com/vector-im/riot-web/pull/12561)
* Update loading test for JS SDK IDB change
[\#12552](https://github.com/vector-im/riot-web/pull/12552)
* Upgrade deps
[\#12528](https://github.com/vector-im/riot-web/pull/12528)
Changes in [1.5.12](https://github.com/vector-im/riot-web/releases/tag/v1.5.12) (2020-03-04)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.11...v1.5.12)
* Upgrade to React SDK 2.2.1
* Revert to Electron 7.1.12 to fix Arch Linux tray icon
* Fix image download links so they open in a new tab
Changes in [1.5.11](https://github.com/vector-im/riot-web/releases/tag/v1.5.11) (2020-03-02)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.11-rc.1...v1.5.11)
* Upgrade to JS SDK 5.1.0 and React SDK 2.2.0
* Fix SSO flows for Electron 8.0.2 by disabling will-navigate
[\#12585](https://github.com/vector-im/riot-web/pull/12585)
Changes in [1.5.11-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.11-rc.1) (2020-02-26)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.10...v1.5.11-rc.1)
* Upgrade to JS SDK 5.1.0-rc.1 and React SDK 2.2.0-rc.1
* Change Windows signing to warning when missing token
[\#12523](https://github.com/vector-im/riot-web/pull/12523)
* Modernizr remove t3st/es6/contains
[\#12524](https://github.com/vector-im/riot-web/pull/12524)
* Switch out any eval-using Modernizr rules
[\#12519](https://github.com/vector-im/riot-web/pull/12519)
* Update from Weblate
[\#12522](https://github.com/vector-im/riot-web/pull/12522)
* Notify electron of language changes
[\#12487](https://github.com/vector-im/riot-web/pull/12487)
* Relax macOS notarisation check to print a warning
[\#12503](https://github.com/vector-im/riot-web/pull/12503)
* Clarify supported tier means desktop OSes
[\#12486](https://github.com/vector-im/riot-web/pull/12486)
* Use noreferrer in addition to noopener for edge case browsers
[\#12477](https://github.com/vector-im/riot-web/pull/12477)
* Document start / end composer shortcuts
[\#12466](https://github.com/vector-im/riot-web/pull/12466)
* Update from Weblate
[\#12480](https://github.com/vector-im/riot-web/pull/12480)
* Remove buildkite pipeline
[\#12464](https://github.com/vector-im/riot-web/pull/12464)
* Remove exec so release script continues
[\#12435](https://github.com/vector-im/riot-web/pull/12435)
* Use Persistent Storage where possible
[\#12425](https://github.com/vector-im/riot-web/pull/12425)
Changes in [1.5.10](https://github.com/vector-im/riot-web/releases/tag/v1.5.10) (2020-02-19)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.9...v1.5.10)
* Get rid of dependence on usercontent.riot.im
[\#12292](https://github.com/vector-im/riot-web/pull/12292)
* Add experimental support tier
[\#12377](https://github.com/vector-im/riot-web/pull/12377)
Changes in [1.5.9](https://github.com/vector-im/riot-web/releases/tag/v1.5.9) (2020-02-17)
==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.9-rc.1...v1.5.9)
* Automate SDK dep upgrades for release
[\#12374](https://github.com/vector-im/riot-web/pull/12374)
Changes in [1.5.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.9-rc.1) (2020-02-13)
====================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.8...v1.5.9-rc.1)
* Upgrade JS SDK to 5.0.0-rc.1 and React SDK 2.1.0-rc.2
* Update from Weblate
[\#12354](https://github.com/vector-im/riot-web/pull/12354)
* Add top left menu shortcut
[\#12310](https://github.com/vector-im/riot-web/pull/12310)
* Remove modernizr rules for features on which we only soft depend
[\#12272](https://github.com/vector-im/riot-web/pull/12272)
* Embed CSP meta tag and stop using script-src unsafe-inline
[\#12258](https://github.com/vector-im/riot-web/pull/12258)
* Add contribute.json
[\#12251](https://github.com/vector-im/riot-web/pull/12251)
* Improve Browser checks
[\#12232](https://github.com/vector-im/riot-web/pull/12232)
* Document padlock flag
[\#12173](https://github.com/vector-im/riot-web/pull/12173)
* Enable cross-signing on /develop
[\#12126](https://github.com/vector-im/riot-web/pull/12126)
* Switch back to legacy decorators
[\#12110](https://github.com/vector-im/riot-web/pull/12110)
* Update babel targets
[\#12102](https://github.com/vector-im/riot-web/pull/12102)
* Install deps for linting
[\#12076](https://github.com/vector-im/riot-web/pull/12076)
* Update from Weblate
[\#12062](https://github.com/vector-im/riot-web/pull/12062)
* Change to minimal Webpack output
[\#12049](https://github.com/vector-im/riot-web/pull/12049)
* Remove docs for new invite dialog labs feature
[\#12015](https://github.com/vector-im/riot-web/pull/12015)
* ElectronPlatform: Add the indexSize method.
[\#11529](https://github.com/vector-im/riot-web/pull/11529)
* ElectronPlatform: Add the ability to load file events from the event index
[\#11907](https://github.com/vector-im/riot-web/pull/11907)
* Fix the remainder of the cookie links
[\#12008](https://github.com/vector-im/riot-web/pull/12008)
* Use bash in Docker scripts
[\#12001](https://github.com/vector-im/riot-web/pull/12001)
* Use debian to build the Docker image
[\#11999](https://github.com/vector-im/riot-web/pull/11999)
* Update cookie policy urls on /app and /develop config.json
[\#11998](https://github.com/vector-im/riot-web/pull/11998)
* BuildKite: Only deploy to /develop if everything else passed
[\#11996](https://github.com/vector-im/riot-web/pull/11996)
* Add docs for admin report content message
[\#11995](https://github.com/vector-im/riot-web/pull/11995)
* Load as little as possible in index.js for the skinner
[\#11959](https://github.com/vector-im/riot-web/pull/11959)
* Fix webpack config (by stealing Dave's config)
[\#11956](https://github.com/vector-im/riot-web/pull/11956)
* Force Jest to resolve the js-sdk and react-sdk to src directories
[\#11954](https://github.com/vector-im/riot-web/pull/11954)
* Fix build to not babel modules inside js/react sdk
[\#11949](https://github.com/vector-im/riot-web/pull/11949)
* Fix webpack to babel js-sdk & react-sdk but no other deps
[\#11944](https://github.com/vector-im/riot-web/pull/11944)
Changes in [1.5.8](https://github.com/vector-im/riot-web/releases/tag/v1.5.8) (2020-01-27)
==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.8-rc.2...v1.5.8)
+4 -4
View File
@@ -1,5 +1,5 @@
# Builder
FROM node:10-alpine as builder
FROM node:10 as builder
# Support custom branches of the react-sdk and js-sdk. This also helps us build
# images of riot-web develop.
@@ -9,12 +9,12 @@ ARG REACT_SDK_BRANCH="master"
ARG JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git"
ARG JS_SDK_BRANCH="master"
RUN apk add --no-cache git dos2unix
RUN apt-get update && apt-get install -y git dos2unix
WORKDIR /src
COPY . /src
RUN dos2unix /src/scripts/docker-link-repos.sh && sh /src/scripts/docker-link-repos.sh
RUN dos2unix /src/scripts/docker-link-repos.sh && bash /src/scripts/docker-link-repos.sh
RUN yarn --network-timeout=100000 install
RUN yarn build
@@ -22,7 +22,7 @@ RUN yarn build
RUN cp /src/config.sample.json /src/webapp/config.json
# Ensure we populate the version file
RUN dos2unix /src/scripts/docker-write-version.sh && sh /src/scripts/docker-write-version.sh
RUN dos2unix /src/scripts/docker-write-version.sh && bash /src/scripts/docker-write-version.sh
# App
+29 -14
View File
@@ -1,12 +1,31 @@
Riot
====
Riot (formerly known as Vector) is a Matrix web client built using the [Matrix React SDK](https://github.com/matrix-org/matrix-react-sdk).
Riot (formerly known as Vector) is a Matrix web client built using the [Matrix
React SDK](https://github.com/matrix-org/matrix-react-sdk).
Riot is officially supported on the web in the last 2 major versions of Chrome, Firefox, and Safari. For Riot on Desktop (electron),
only the officially published app is supported. Other browsers and packages may work, however official support is not provided.
For accessing Riot on an Android or iOS device, check out [riot-android](https://github.com/vector-im/riot-android)
and [riot-ios](https://github.com/vector-im/riot-ios) - riot-web does not support mobile devices.
Supported Environments
======================
Riot has several tiers of support for different environments:
* Supported
* Definition: Issues **actively triaged**, regressions **block** the release
* Last 2 major versions of Chrome, Firefox, and Safari on desktop OSes
* Latest release of official Riot Desktop app on desktop OSes
* Desktop OSes means macOS, Windows, and Linux versions for desktop devices
that are actively supported by the OS vendor and receive security updates
* Experimental
* Definition: Issues **accepted**, regressions **do not block** the release
* Riot as an installed PWA via current stable version of Chrome, Firefox, and Safari
* Mobile web for current stable version of Chrome, Firefox, and Safari on Android, iOS, and iPadOS
* Not supported
* Definition: Issues only affecting unsupported environments are **closed**
* Everything else
For accessing Riot on an Android or iOS device, we currently recommend the
native apps [riot-android](https://github.com/vector-im/riot-android)
and [riot-ios](https://github.com/vector-im/riot-ios).
Getting Started
===============
@@ -52,15 +71,6 @@ We have put some coarse mitigations into place to try to protect against this
situation, but it's still not good practice to do it in the first place. See
https://github.com/vector-im/riot-web/issues/1977 for more details.
The same applies for end-to-end encrypted content, but since this is decrypted
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.
https://github.com/vector-im/riot-web/issues/6173 tracks progress on replacing
this with something better.
Building From Source
====================
@@ -213,6 +223,11 @@ Before attempting to develop on Riot you **must** read the [developer guide
for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk), which
also defines the design, architecture and style for Riot too.
Before starting work on a feature, it's best to ensure your plan aligns well
with our vision for Riot. Please chat with the team in
[#riot-dev:matrix.org](https://matrix.to/#/#riot-dev:matrix.org) before you
start so we can ensure it's something we'd be willing to merge.
You should also familiarise yourself with the ["Here be Dragons" guide
](https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM)
to the tame & not-so-tame dragons (gotchas) which exist in the codebase.
+21 -23
View File
@@ -1,25 +1,23 @@
module.exports = {
"sourceMaps": true,
"presets": [
["@babel/preset-env", {
"targets": {
"browsers": [
"last 2 versions"
]
}
}],
"@babel/preset-typescript",
"@babel/preset-flow",
"@babel/preset-react"
],
"plugins": [
["@babel/plugin-proposal-decorators", {"legacy": true}],
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-transform-flow-comments",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-runtime"
]
"sourceMaps": true,
"presets": [
["@babel/preset-env", {
"targets": [
"last 2 Chrome versions", "last 2 Firefox versions", "last 2 Safari versions"
],
}],
"@babel/preset-typescript",
"@babel/preset-flow",
"@babel/preset-react"
],
"plugins": [
["@babel/plugin-proposal-decorators", {legacy: true}],
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-transform-flow-comments",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-runtime"
]
};
+3 -1
View File
@@ -22,7 +22,6 @@
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/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,
@@ -52,5 +51,8 @@
},
"settingDefaults": {
"breadcrumbs": true
},
"jitsi": {
"preferredDomain": "jitsi.riot.im"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"name": "Riot",
"description": "A glossy Matrix collaboration client for the web.",
"repository": {
"url": "https://github.com/vector-im/riot-web",
"license": "Apache License 2.0"
},
"bugs": {
"list": "https://github.com/vector-im/riot-web/issues",
"report": "https://github.com/vector-im/riot-web/issues/new/choose"
},
"keywords": [
"chat",
"riot",
"matrix"
]
}
+9 -6
View File
@@ -37,6 +37,10 @@ For a good example, see https://riot.im/develop/config.json.
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. `reportEvent`: Configures the dialog for reporting content to the homeserver
admin.
1. `adminMessageMD`: An extra message to show on the reporting dialog to
mention homeserver-specific policies. Accepts Markdown.
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.
@@ -53,11 +57,6 @@ For a good example, see https://riot.im/develop/config.json.
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:
@@ -83,8 +82,12 @@ For a good example, see https://riot.im/develop/config.json.
default homeserver when signing up or logging in.
1. `permalinkPrefix`: Used to change the URL that Riot generates permalinks with.
By default, this is "https://matrix.to" to generate matrix.to (spec) permalinks.
Set this to your Riot instance URL if you run an unfederated server (eg:
Set this to your Riot instance URL if you run an unfederated server (eg:
"https://riot.example.org").
1. `jitsi`: Used to change the default conference options.
1. `preferredDomain`: The domain name of the preferred Jitsi instance. Defaults
to `jitsi.riot.im`. This is used whenever a user clicks on the voice/video
call buttons - integration managers may use a different domain.
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
+14 -6
View File
@@ -82,12 +82,6 @@ that downloads, stores, and indexes room messages for E2E encrypted rooms.
The existing search will transparently work for encrypted rooms just like it
does for non-encrypted.
## New invite dialog (`feature_ftue_dms`)
An improved dialog for inviting users. This replaces both the DM creation dialog
and the 'invite user' dialog, using your recent DMs as a suggestion for who to chat
with.
## Bridge info tab (`feature_bridge_state`)
Adds a "Bridge Info" tab to the Room Settings dialog, if a compatible bridge is
@@ -99,3 +93,17 @@ tab as the single source of truth just yet.
This adds a presence indicator in the room list next to DM rooms where the other
person is online.
## Show padlocks on invite only rooms (`feature_invite_only_padlocks`)
This adds padlocks to room list tiles and room header for invite only rooms.
This feature flag (unlike most) is enabled by default.
## Custom themes (`feature_custom_themes`)
Custom themes are possible through Riot's [theme support](./theming.md), though
normally these themes need to be defined in the config for Riot. This labs flag
adds an ability for end users to add themes themselves by using a URL to the JSON
theme definition.
For some sample themes, check out [aaronraimist/riot-web-themes](https://github.com/aaronraimist/riot-web-themes).
+1 -2
View File
@@ -47,7 +47,7 @@ Again from the `electron_app/` directory:
Recompiling Seshat itself can be done like so:
yarn run electron-build-env -- --electron 6.1.1 -- neon build matrix-seshat --release`
yarn run electron-build-env -- --electron 6.1.1 -- neon build matrix-seshat --release
Please make sure to include all the `--` as well as the `--release` command line
switch at the end. Modify your electron version accordingly depending on the
@@ -56,6 +56,5 @@ version that is installed on your system.
After this is done the Electron version of Riot can be run from the main folder
as usual using:
yarn build
yarn electron
+82
View File
@@ -0,0 +1,82 @@
# Review Guidelines
The following summarises review guidelines that we follow for pull requests in
Riot Web and other supporting repos. These are just guidelines (not strict
rules) and may be updated over time.
## Code Review
When reviewing code, here are some things we look for and also things we avoid:
### We review for
* Correctness
* Performance
* Accessibility
* Security
* Comments and documentation where needed
* Sharing knowledge of different areas among the team
* Ensuring it's something we're comfortable maintaining for the long term
* Progress indicators and local echo where appropriate with network activity
### We should avoid
* Style nits that are already handled by the linter
* Dramatically increasing scope
### Good practices
* Use empathetic language
* See also [Mindful Communication in Code
Reviews](https://kickstarter.engineering/a-guide-to-mindful-communication-in-code-reviews-48aab5282e5e)
and [How to Do Code Reviews Like a Human](https://mtlynch.io/human-code-reviews-1/)
* Authors should prefer smaller commits for easier reviewing and bisection
* Reviewers should be explicit about required versus optional changes
* Reviews are conversations and the PR author should feel comfortable
discussing and pushing back on changes before making them
* Core team should lead by example through their tone and language
* Take the time to thank and point out good code changes
* Using softer language like "please" and "what do you think?" goes a long way
towards making others feel like colleagues working towards a common goal
### Workflow
* Authors should request review from riot-web team by default (if someone on the
team is clearly the expert in an area, a direct review request to them may be
more appropriate)
* Reviewers should remove the team review request and request review from
themselves when starting a review to avoid double review
* Authors should link to other layers of their PR in their PR before requesting
review. Reviewers might be coming from different places and could miss other
required PRs.
* Avoid force pushing to a PR after first round of review
* Use the GitHub default of merge commits when landing (avoid alternate options
like squash or rebase)
* PR author merges after review (assuming they have write access)
* Assign issues only when in progress to indicate to others what can be picked
up
## Design and Product Review
We want to ensure that all changes to Riot fit with our design and product
vision. We often request review from those teams so they can provide their
perspective.
In more detail, our usual process for changes that affect the UI or alter user
functionality is:
* For changes that will go live when merged, always flag Design and Product
teams as appropriate
* For changes guarded by a feature flag, Design and Product review is not
required (though may still be useful) since we can continue tweaking
As it can be difficult to review design work from looking at just the changed
files in a PR, authors should be prepared for Design and / or Product teams to
request a link to an ad-hoc build of Riot (hosted anywhere) that can be used for
the review. In the future, we [hope to automate
this](https://github.com/vector-im/riot-web/issues/12624) for every PR.
Before starting work on a feature, it's best to ensure your plan aligns well
with our vision for Riot. Please chat with the team in
[#riot-dev:matrix.org](https://matrix.to/#/#riot-dev:matrix.org) before you
start so we can ensure it's something we'd be willing to merge.
-13
View File
@@ -1,13 +0,0 @@
# Keyboard Shortcuts
The modifier is <kbd>Ctrl</kbd> on Windows & Linux and <kbd>⌘</kbd> on Mac.
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>m</kbd> - toggle markdown
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>d</kbd> - toggle mic mute
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>e</kbd> - toggle video on/off
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>k</kbd> - jump to named room
- <kbd>↑</kbd>/<kbd>↓</kbd> - navigate old messages to edit when the composer is in focus
- <kbd>↑</kbd>/<kbd>↓</kbd> - next/prev room when focus in room list
- <kbd>Alt</kbd>+<kbd>↑</kbd>/<kbd>↓</kbd> - resend previous messages when the composer is in focus
- <kbd>PageUp</kbd>/<kbd>PageDown</kbd> - scroll timeline up/down
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>Home</kbd>/<kbd>End</kbd> - jump to timeline start/end
@@ -9,6 +9,9 @@
Latest electron-builder does, but it appears to be causing issues:
(https://github.com/electron-userland/electron-builder/issues/4390)
-->
<!-- https://github.com/electron/electron-notarize#prerequisites -->
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<!-- https://github.com/electron-userland/electron-builder/issues/3940 -->
@@ -1,14 +0,0 @@
#!/bin/bash
# Link to the binary
ln -sf '/opt/${productFilename}/${executable}' '/usr/bin/${executable}'
# SUID chrome-sandbox for Electron 5+
# Remove this entire file (after-install.tpl) and remove the reference in
# package.json once this change has been upstreamed so we go back to the copy
# from upstream.
# https://github.com/electron-userland/electron-builder/pull/4163
chmod 4755 '/opt/${productFilename}/chrome-sandbox' || true
update-mime-database /usr/share/mime || true
update-desktop-database /usr/share/applications || true
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
"version": "1.5.8",
"version": "1.5.15",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"dependencies": {
+1 -1
View File
@@ -22,7 +22,7 @@
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1,
"policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy"
"policyUrl": "https://matrix.org/legal/riot-im-cookie-policy"
},
"phasedRollOut": {
"feature_lazyloading": {
+28
View File
@@ -35,6 +35,7 @@ const tray = require('./tray');
const vectorMenu = require('./vectormenu');
const webContentsHandler = require('./webcontents-handler');
const updater = require('./updater');
const protocolInit = require('./protocol');
const windowStateKeeper = require('electron-window-state');
const Store = require('electron-store');
@@ -346,6 +347,18 @@ ipcMain.on('seshat', async function(ev, payload) {
}
break;
case 'getStats':
if (eventIndex === null) ret = 0;
else {
try {
ret = await eventIndex.getStats();
} catch (e) {
sendError(payload.id, e);
return;
}
}
break;
case 'removeCrawlerCheckpoint':
if (eventIndex === null) ret = false;
else {
@@ -370,6 +383,18 @@ ipcMain.on('seshat', async function(ev, payload) {
}
break;
case 'loadFileEvents':
if (eventIndex === null) ret = [];
else {
try {
ret = await eventIndex.loadFileEvents(args[0]);
} catch (e) {
sendError(payload.id, e);
return;
}
}
break;
case 'loadCheckpoints':
if (eventIndex === null) ret = [];
else {
@@ -403,6 +428,9 @@ if (!gotLock) {
app.exit();
}
// do this after we know we are the primary instance of the app
protocolInit();
const launcher = new AutoLaunch({
name: vectorConfig.brand || 'Riot',
isHidden: true,
+53
View File
@@ -0,0 +1,53 @@
/*
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const {app} = require('electron');
const processUrl = (url) => {
if (!global.mainWindow) return;
console.log("Handling link: ", url);
global.mainWindow.loadURL(url.replace("riot://", "vector://"));
};
module.exports = () => {
// get all args except `hidden` as it'd mean the app would not get focused
// XXX: passing args to protocol handlers only works on Windows,
// so unpackaged deep-linking and --profile passing won't work on Mac/Linux
const args = process.argv.slice(1).filter(arg => arg !== "--hidden" && arg !== "-hidden");
if (app.isPackaged) {
app.setAsDefaultProtocolClient('riot', process.execPath, args);
} else if (process.platform === 'win32') { // on Mac/Linux this would just cause the electron binary to open
// special handler for running without being packaged, e.g `electron .` by passing our app path to electron
app.setAsDefaultProtocolClient('riot', process.execPath, [app.getAppPath(), ...args]);
}
if (process.platform === 'darwin') {
// Protocol handler for macos
app.on('open-url', function(ev, url) {
ev.preventDefault();
processUrl(url);
});
} else {
// Protocol handler for win32/Linux
app.on('second-instance', (ev, commandLine) => {
const url = commandLine[commandLine.length - 1];
if (!url.startsWith("riot://")) return;
processUrl(url);
});
}
};
+5
View File
@@ -40,6 +40,11 @@ const template = [
{ role: 'zoomin', accelerator: 'CommandOrControl+=' },
{ role: 'zoomout' },
{ type: 'separator' },
{
label: 'Preferences',
accelerator: 'Command+,', // Mac-only accelerator
click() { global.mainWindow.webContents.send('preferences'); },
},
{ role: 'togglefullscreen' },
{ role: 'toggledevtools' },
],
+4 -13
View File
@@ -174,19 +174,10 @@ function onEditableContextMenu(ev, params) {
module.exports = (webContents) => {
webContents.on('new-window', onWindowOrNavigate);
// XXX: The below now does absolutely nothing because of
// https://github.com/electron/electron/issues/8841
// Whilst this isn't a security issue since without
// node integration and with the sandbox, it should be
// no worse than opening the site in Chrome, it obviously
// means the user has to restart Riot to make it usable
// again (often unintuitive because it minimises to the
// system tray). We therefore need to be vigilant about
// putting target="_blank" on links in Riot (although
// we should generally be doing this anyway since links
// navigating you away from Riot in the browser is
// also annoying).
webContents.on('will-navigate', onWindowOrNavigate);
webContents.on('will-navigate', (ev, target) => {
if (target.startsWith("vector://")) return;
return onWindowOrNavigate(ev, target);
});
webContents.on('context-menu', function(ev, params) {
if (params.linkURL || params.srcURL) {
+3 -3
View File
@@ -500,9 +500,9 @@ minimist@0.0.8:
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
version "1.2.2"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.2.tgz#b00a00230a1108c48c169e69a291aafda3aacd63"
integrity sha512-rIqbOrKb8GJmx/5bc2M0QchhUouMXSpd1RTclXsB41JdL+VtnojfaJR+h7F9k18/4kHUsBFgk80Uk+q569vjPA==
mkdirp@0.5.1, mkdirp@^0.5.1:
version "0.5.1"
+33 -20
View File
@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "electron_app/src/electron-main.js",
"version": "1.5.8",
"version": "1.5.15",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -24,7 +24,8 @@
"LICENSE",
"README.md",
"AUTHORS.rst",
"package.json"
"package.json",
"contribute.json"
],
"style": "bundle.css",
"scripts": {
@@ -36,38 +37,39 @@
"reskindex:watch-react": "node scripts/yarn-sub.js matrix-react-sdk reskindex:watch",
"clean": "rimraf lib webapp electron_app/dist",
"build": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle",
"build-stats": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle-stats",
"build:jitsi": "curl -s https://jitsi.riot.im/libs/external_api.min.js > ./webapp/jitsi_external_api.min.js",
"build:res": "node scripts/copy-res.js",
"build:genfiles": "yarn reskindex && yarn build:res",
"build:genfiles": "yarn reskindex && yarn build:res && yarn build:jitsi",
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
"build:compile": "babel -d lib --verbose --extensions \".ts,.js\" src",
"build:compile": "babel -d lib --verbose --extensions \".ts,.js,.tsx\" src",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production",
"build:bundle-stats": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production --json > webpack-stats.json",
"build:electron": "yarn build && yarn install:electron && electron-builder -wml --ia32 --x64",
"build:electron:linux": "yarn build && electron-builder -l --x64",
"build:electron:macos": "yarn build && electron-builder -m --x64",
"build:electron:windows": "yarn build && electron-builder -w --ia32 --x64",
"build:types": "tsc --emitDeclarationOnly",
"build:types": "tsc --emitDeclarationOnly --jsx react",
"install:electron": "electron-builder install-app-deps",
"dist": "scripts/package.sh",
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,riot-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js\"",
"start:res": "node scripts/copy-res.js -w",
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w",
"start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development",
"electron": "yarn build && yarn install:electron && electron .",
"lint": "yarn lint:types && yarn lint:ts && yarn lint:js && yarn lint:style",
"lint:js": "eslint src",
"lint:ts": "echo 'We don't actually have a typescript linter at this layer because tslint is being removed from our stack. Presumably your TS is fine.'",
"lint:types": "tsc --noEmit",
"lint:types": "tsc --noEmit --jsx react",
"lint:style": "stylelint 'res/css/**/*.scss'",
"test": "jest"
},
"dependencies": {
"browser-request": "^0.3.3",
"favico.js": "^0.3.10",
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#91e1e566",
"gfm.css": "^1.1.2",
"highlight.js": "^9.13.1",
"matrix-js-sdk": "4.0.0",
"matrix-react-sdk": "2.0.0",
"modernizr": "^3.6.0",
"matrix-js-sdk": "5.2.0",
"matrix-react-sdk": "2.3.1",
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz",
"postcss-easings": "^2.0.0",
"prop-types": "^15.7.2",
@@ -94,7 +96,7 @@
"@babel/preset-typescript": "^7.7.4",
"@babel/register": "^7.7.4",
"@babel/runtime": "^7.7.6",
"@types/react": "^16.9.17",
"@types/react": "16.9",
"@types/react-dom": "^16.9.4",
"autoprefixer": "^9.7.3",
"babel-eslint": "^10.0.3",
@@ -106,8 +108,8 @@
"cpx": "^1.3.2",
"cross-env": "^6.0.3",
"css-loader": "^3.3.2",
"electron-builder": "^21.2.0",
"electron-builder-squirrel-windows": "^21.2.0",
"electron-builder": "^22.3.2",
"electron-builder-squirrel-windows": "^22.3.2",
"electron-devtools-installer": "^2.2.4",
"electron-notarize": "^0.2.0",
"eslint": "^5.8.0",
@@ -131,6 +133,7 @@
"mini-css-extract-plugin": "^0.8.0",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
"modernizr": "^3.6.0",
"optimize-css-assets-webpack-plugin": "^5.0.3",
"postcss-extend": "^1.0.5",
"postcss-import": "^12.0.1",
@@ -152,7 +155,7 @@
},
"build": {
"appId": "im.riot.app",
"electronVersion": "7.1.9",
"electronVersion": "7.1.14",
"files": [
"node_modules/**",
"src/**"
@@ -172,9 +175,6 @@
"StartupWMClass": "riot"
}
},
"deb": {
"afterInstall": "electron_app/build/linux/after-install.tpl"
},
"mac": {
"category": "public.app-category.social-networking",
"darkModeSupport": true
@@ -190,9 +190,20 @@
"output": "electron_app/dist",
"app": "electron_app"
},
"afterSign": "scripts/electron_afterSign.js"
"afterSign": "scripts/electron_afterSign.js",
"protocols": [
{
"name": "riot",
"schemes": [
"riot"
]
}
]
},
"jest": {
"modulePathIgnorePatterns": [
"<rootDir>/electron_app"
],
"testEnvironment": "jest-environment-jsdom-fourteen",
"testMatch": [
"<rootDir>/test/**/*-test.js"
@@ -205,7 +216,9 @@
"\\$webapp/i18n/languages.json": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/languages.json",
"^browser-request$": "<rootDir>/node_modules/matrix-react-sdk/__mocks__/browser-request.js",
"^react$": "<rootDir>/node_modules/react",
"^react-dom$": "<rootDir>/node_modules/react-dom"
"^react-dom$": "<rootDir>/node_modules/react-dom",
"^matrix-js-sdk$": "<rootDir>/node_modules/matrix-js-sdk/src",
"^matrix-react-sdk$": "<rootDir>/node_modules/matrix-react-sdk/src"
},
"transformIgnorePatterns": [
"/node_modules/(?!matrix-js-sdk).+$",
+37 -8
View File
@@ -20,30 +20,59 @@ cd `dirname $0`
for i in matrix-js-sdk matrix-react-sdk
do
echo "Checking version of $i..."
depver=`cat package.json | jq -r .dependencies[\"$i\"]`
latestver=`yarn info -s $i version`
latestver=`yarn info -s $i dist-tags.next`
if [ "$depver" != "$latestver" ]
then
echo "The latest version of $i is $latestver but package.json depends on $depver"
echo -n "Type 'Yes' to continue anyway: "
echo "The latest version of $i is $latestver but package.json depends on $depver."
echo -n "Type 'u' to auto-upgrade, 'c' to continue anyway, or 'a' to abort:"
read resp
if [ "$resp" != "Yes" ]
if [ "$resp" != "u" ] && [ "$resp" != "c" ]
then
echo "OK, never mind."
echo "Aborting."
exit 1
fi
if [ "$resp" == "u" ]
then
echo "Upgrading $i to $latestver..."
yarn add -E $i@$latestver
git add -u
# The `-e` flag opens the editor and gives you a chance to check
# the upgrade for correctness.
git commit -m "Upgrade $i to $latestver" -e
fi
fi
done
# bump Electron's package.json first
release="${1#v}"
tag="v${release}"
echo "electron yarn version"
prerelease=0
# We check if this build is a prerelease by looking to
# see if the version has a hyphen in it. Crude,
# but semver doesn't support postreleases so anything
# with a hyphen is a prerelease.
echo $release | grep -q '-' && prerelease=1
# bump Electron's package.json first
echo "electron yarn version"
cd electron_app
yarn version --no-git-tag-version --new-version "$release"
git commit package.json -m "$tag"
cd ..
exec ./node_modules/matrix-js-sdk/release.sh -u vector-im -z "$orig_args"
./node_modules/matrix-js-sdk/release.sh -u vector-im -z "$orig_args"
if [ $prerelease -eq 0 ]
then
# For a release, reset SDK deps back to the `develop` branch.
for i in matrix-js-sdk matrix-react-sdk
do
echo "Resetting $i to develop branch..."
yarn add github:matrix-org/$i#develop
git add -u
git commit -m "Reset $i back to develop branch"
done
git push origin develop
fi
+2 -2
View File
@@ -18,7 +18,7 @@
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1,
"policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy"
"policyUrl": "https://matrix.org/legal/riot-im-cookie-policy"
},
"roomDirectory": {
"servers": [
@@ -35,7 +35,7 @@
"text": "Privacy Policy"
},
{
"url": "https://matrix.org/docs/guides/riot_im_cookie_policy",
"url": "https://matrix.org/legal/riot-im-cookie-policy",
"text": "Cookie Policy"
}
]
+6 -5
View File
@@ -20,17 +20,18 @@
"feature_many_integration_managers": "labs",
"feature_mjolnir": "labs",
"feature_dm_verification": "labs",
"feature_cross_signing": "labs",
"feature_cross_signing": "enable",
"feature_invite_only_padlocks": "enable",
"feature_event_indexing": "disable",
"feature_ftue_dms": "labs",
"feature_bridge_state": "labs",
"feature_presence_in_room_list": "labs"
"feature_presence_in_room_list": "labs",
"feature_custom_themes": "labs"
},
"welcomeUserId": "@riot-bot:matrix.org",
"piwik": {
"url": "https://piwik.riot.im/",
"siteId": 1,
"policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy"
"policyUrl": "https://matrix.org/legal/riot-im-cookie-policy"
},
"roomDirectory": {
"servers": [
@@ -47,7 +48,7 @@
"text": "Privacy Policy"
},
{
"url": "https://matrix.org/docs/guides/riot_im_cookie_policy",
"url": "https://matrix.org/legal/riot-im-cookie-policy",
"text": "Cookie Policy"
}
]
+1
View File
@@ -66,6 +66,7 @@ const COPY_LIST = [
["node_modules/matrix-react-sdk/res/media/**", "webapp/media"],
["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
["./config.json", "webapp", { directwatch: 1 }],
["contribute.json", "webapp"],
];
const parseArgs = require('minimist');
+3 -5
View File
@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
set -ex
@@ -20,17 +20,15 @@ then
fi
echo "Linking js-sdk"
git clone $JS_SDK_REPO js-sdk
git clone --depth 1 --branch $JS_SDK_BRANCH $JS_SDK_REPO js-sdk
cd js-sdk
git checkout $JS_SDK_BRANCH
yarn link
yarn --network-timeout=100000 install
cd ../
echo "Linking react-sdk"
git clone $REACT_SDK_REPO react-sdk
git clone --depth 1 --branch $REACT_SDK_BRANCH $REACT_SDK_REPO react-sdk
cd react-sdk
git checkout $REACT_SDK_BRANCH
yarn link
yarn link matrix-js-sdk
yarn --network-timeout=100000 install
+1 -1
View File
@@ -11,7 +11,7 @@ DIST_VERSION=$TAG
# a few SHAs rather than a version.
# Docker Hub doesn't always check out the tag and sometimes checks out the branch, so we should look
# for an appropriately tagged branch as well (heads/v1.2.3).
if [ $BRANCH != 'HEAD' && $BRANCH != 'heads/v*' ]
if [[ $BRANCH != HEAD && ! $BRANCH =~ heads/v.+ ]]
then
REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD)
JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD)
+7 -1
View File
@@ -10,7 +10,13 @@ exports.default = async function(context) {
// from the keychain, so we need to get it from the environment.
const userId = process.env.NOTARIZE_APPLE_ID;
if (userId === undefined) {
throw new Error("User ID not found. Set NOTARIZE_APPLE_ID.");
console.warn(
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
"! Skipping macOS notarisation. !\n" +
"! User ID not found, set NOTARIZE_APPLE_ID. !\n" +
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
);
return;
}
console.log("Notarising macOS app. This may be some time.");
+24 -16
View File
@@ -8,23 +8,31 @@ exports.default = async function(options) {
const appOutDir = path.dirname(inPath);
// get the token passphrase from the keychain
const tokenPassphrase = await new Promise((resolve, reject) => {
execFile(
'security',
['find-generic-password', '-s', 'riot_signing_token', '-w'],
{},
(err, stdout) => {
if (err) {
console.error("Couldn't find signing token in keychain", err);
// electron-builder seems to print '[object Object]' on the
// console whether you reject with an Error or a string...
reject(err);
} else {
resolve(stdout.trim());
}
},
let tokenPassphrase;
try {
tokenPassphrase = await new Promise((resolve, reject) => {
execFile(
'security',
['find-generic-password', '-s', 'riot_signing_token', '-w'],
{},
(err, stdout) => {
if (err) {
reject(err);
} else {
resolve(stdout.trim());
}
},
);
});
} catch (err) {
console.warn(
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
"! Skipping Windows signing. !\n" +
"! Signing token not found in keychain. !\n" +
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
);
});
return;
}
return new Promise((resolve, reject) => {
let cmdLine = 'osslsigncode sign ';
+3 -3
View File
@@ -133,9 +133,9 @@ def on_receive_buildkite_poke():
for artifact in artifacts_array:
if re.match(r"dist/.*.tar.gz", artifact['path']):
artifact_to_deploy = artifact
if artifact_to_deploy is None:
print("No suitable artifacts found")
return jsonify({})
if artifact_to_deploy is None:
print("No suitable artifacts found")
return jsonify({})
# double paranoia check: make sure the artifact is on the right org too
if required_api_prefix is not None and not artifact_to_deploy['url'].startswith(required_api_prefix):
+22
View File
@@ -0,0 +1,22 @@
/*
Copyright 2020 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
interface Window {
Olm: {
init: () => Promise<void>;
};
mxSendRageshake: (text: string, withLogs?: boolean) => void;
}
@@ -29,7 +29,7 @@ export default class VectorEmbeddedPage extends EmbeddedPage {
translate(s) {
s = sanitizeHtml(_t(s));
// ugly fix for https://github.com/vector-im/riot-web/issues/4243
s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noopener"><img width="79" height="34" alt="[matrix]" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>');
s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noreferrer noopener"><img width="79" height="34" alt="[matrix]" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>');
return s;
}
}
@@ -34,7 +34,7 @@ const VectorAuthFooter = () => {
const authFooterLinks = [];
for (const linkEntry of links) {
authFooterLinks.push(
<a href={linkEntry.url} key={linkEntry.text} target="_blank" rel="noopener">
<a href={linkEntry.url} key={linkEntry.text} target="_blank" rel="noreferrer noopener">
{linkEntry.text}
</a>,
);
@@ -43,7 +43,7 @@ const VectorAuthFooter = () => {
return (
<div className="mx_AuthFooter">
{authFooterLinks}
<a href="https://matrix.org" target="_blank" rel="noopener">{ _t('powered by Matrix') }</a>
<a href="https://matrix.org" target="_blank" rel="noreferrer noopener">{ _t('powered by Matrix') }</a>
</div>
);
};
+3 -1
View File
@@ -21,5 +21,7 @@
"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"
"Invalid JSON": "Невалиден JSON",
"Open user settings": "Отвори потребителските настройки",
"Go to your browser to complete Sign In": "Отидете в браузъра за да завършите влизането"
}
+7 -7
View File
@@ -4,22 +4,22 @@
"You need to be using HTTPS to place a screen-sharing call.": "Pro uskutečnění hovoru se sdílením obrazovky musíte používat HTTPS.",
"Chat with Riot Bot": "Konverzovat s Riot Botem",
"Dismiss": "Zahodit",
"powered by Matrix": "poháněno Matrixem",
"Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s",
"powered by Matrix": "používá protokol Matrix",
"Riot Desktop on %(platformName)s": "Riot Desktop pro %(platformName)s",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s přes %(browserName)s na %(osName)s",
"Custom Server Options": "Vlastní serverové volby",
"Custom Server Options": "Vlastní nastavení serveru",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráce na platformě [matrix]",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Ve vlastních serverových volbách si můžete nastavit použití vlastního domovského serveru. To Vám umožní používat Riot s existujícím Matrix účtem na jiném serveru.",
"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.": "Ve vlastním nastavení serveru můžete nastavit použití vlastního domovského serveru. To vám umožní používat Riot s existujícím Matrix účtem na jiném serveru.",
"Sign In": "Přihlásit se",
"Create Account": "Vytvořit účet",
"Need help?": "Chcete pomoct?",
"Explore rooms": "Prohlížet místnosti",
"Need help?": "Potřebujete pomoc?",
"Explore rooms": "Procházet místnosti",
"Room Directory": "Adresář místností",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfigurace Riotu obsahuje neplatný JSON. Opravte prosím tento problém a obnovte stránku.",
"The message from the parser is: %(message)s": "Zpráva z parseru je: %(message)s",
"Invalid JSON": "Neplatný JSON",
"Your Riot is misconfigured": "Riot je špatně nakonfigurován",
"Unexpected error preparing the app. See console for details.": "Neočekávaná chyba při přípravě aplikace. V konzoli je více informací.",
"Unexpected error preparing the app. See console for details.": "Neočekávaná chyba při přípravě aplikace. Podrobnosti najdete v konzoli.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neplatná konfigurace: je možné specifikovat pouze jednu volbu z default_server_config, default_server_name, nebo default_hs_url.",
"Invalid configuration: no default server specified.": "Neplatná konfigurace: není zadán výchozí server."
}
+2 -1
View File
@@ -21,5 +21,6 @@
"Need help?": "Angen cymorth?",
"Chat with Riot Bot": "Sgwrsio gyda Riot Bot",
"Explore rooms": "Archwilio Ystafelloedd",
"Room Directory": "Cyfeiriadur Ystafelloedd"
"Room Directory": "Cyfeiriadur Ystafelloedd",
"Go to your browser to complete Sign In": "Ewch i'ch porwr i gwblhau Mewngofnodi"
}
+6 -4
View File
@@ -9,11 +9,11 @@
"Welcome to Riot.im": "Willkommen bei Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- &amp; Kollaborationslösung unterstützt von [matrix]",
"Chat with Riot Bot": "Chatte mit dem Riot Bot",
"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 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 benutzerdefinierte Server-Optionen nutzen, um dich an anderen Matrix Servern anzumelden, indem du eine andere Heimserver-URL angibst. Dies erlaubt dir, Riot mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.",
"Sign In": "Anmelden",
"Create Account": "Konto erstellen",
"Create Account": "Account erstellen",
"Need help?": "Brauchst du Hilfe?",
"Explore rooms": "Räume erkunden",
"Explore rooms": "Erkunde Räume",
"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.",
@@ -21,5 +21,7 @@
"Your Riot is misconfigured": "Dein Riot ist falsch konfiguriert",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Riot Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.",
"The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s",
"Invalid JSON": "Ungültiges JSON"
"Invalid JSON": "Ungültiges JSON",
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen",
"Open user settings": "Öffne Nutzer-Einstellungen"
}
+2
View File
@@ -6,7 +6,9 @@
"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.",
"Open user settings": "Open user settings",
"Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s",
"Go to your browser to complete Sign In": "Go to your browser to complete Sign In",
"Unknown device": "Unknown device",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
+3 -1
View File
@@ -21,5 +21,7 @@
"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"
"Invalid JSON": "Nevalida JSON",
"Go to your browser to complete Sign In": "Iru al via foliumilo por fini la saluton",
"Open user settings": "Malfermi agordojn de uzanto"
}
+3 -1
View File
@@ -21,5 +21,7 @@
"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"
"Invalid JSON": "JSON baliogabea",
"Go to your browser to complete Sign In": "Joan zure nabigatzailera izena ematen bukatzeko",
"Open user settings": "Ireki erabiltzailearen ezarpenak"
}
+3 -1
View File
@@ -21,5 +21,7 @@
"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"
"Invalid JSON": "JSON non valide",
"Go to your browser to complete Sign In": "Utilisez votre navigateur pour terminer la connexion",
"Open user settings": "Ouvrir les paramètres utilisateur"
}
+7 -5
View File
@@ -1,25 +1,27 @@
{
"Custom Server Options": "Egyedi szerverbeállítások",
"Dismiss": "Eltüntet",
"Dismiss": "Eltüntetés",
"powered by Matrix": "Matrix hajtja",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren",
"Riot Desktop on %(platformName)s": "Riot Desktop itt: %(platformName)s",
"Unknown device": "Ismeretlen készülék",
"Unknown device": "Ismeretlen eszköz",
"You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnod.",
"Welcome to Riot.im": "Üdvözöl a Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon",
"Chat with Riot Bot": "Csevegés a Riot Robottal",
"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.": "Használhatod az egyedi szerver beállítást más Matrix szerverre való belépéshez, azzal, hogy megadod a Matrix szerver URL-jét. Ezzel a Riot-ot használhatod más Matrix szerveren lévő fiókkal.",
"Sign In": "Bejelentkezés",
"Create Account": "Fiók készítés",
"Create Account": "Fiók létrehozása",
"Need help?": "Segíthetünk?",
"Explore rooms": "Szobák felderítése",
"Room Directory": "Szoba lista",
"Room Directory": "Szobalista",
"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.",
"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"
"Invalid JSON": "Érvénytelen JSON",
"Go to your browser to complete Sign In": "A böngészőben fejezd be a bejelentkezést",
"Open user settings": "Felhasználói beállítások megnyitása"
}
+3 -1
View File
@@ -21,5 +21,7 @@
"Your Riot is misconfigured": "Il tuo Riot è configurato male",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "La tua configurazione di Riot contiene un JSON non valido. Correggi il problema e ricarica la pagina.",
"The message from the parser is: %(message)s": "Il messaggio dal parser è: %(message)s",
"Invalid JSON": "JSON non valido"
"Invalid JSON": "JSON non valido",
"Go to your browser to complete Sign In": "Vai nel tuo browser per completare l'accesso",
"Open user settings": "Apri impostazioni utente"
}
+1
View File
@@ -0,0 +1 @@
{}
+3 -2
View File
@@ -2,7 +2,7 @@
"Unknown device": "Nežinomas įrenginys",
"powered by Matrix": "veikia su Matrix",
"Welcome to Riot.im": "Sveiki atvykę į Riot.im",
"Chat with Riot Bot": "Kalbėtis su Riot botu",
"Chat with Riot Bot": "Kalbėtis su Riot Botu",
"Riot Desktop on %(platformName)s": "Riot Desktop, naudojant %(platformName)s",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s, naudojant %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "Norint skambinti naudojant ekrano vaizdo dalijimosi funkciją, jūs turite naudoti HTTPS.",
@@ -21,5 +21,6 @@
"Unexpected error preparing the app. See console for details.": "Netikėta klaida ruošiant programą. Norėdami sužinoti daugiau detalių, žiūrėkite konsolę.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Klaidinga konfigūracija: galima nurodyti tik vieną iš default_server_config, default_server_name, arba default_hs_url.",
"Invalid configuration: no default server specified.": "Klaidinga konfigūracija: nenurodytas numatytasis serveris.",
"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.": "Jūs galite naudoti pasirinktinius serverio nustatymus, kad prisijungtumėte prie kitų Matrix serverių, nurodydami kito serverio URL. Tai leidžia jums naudotis Riot su esama Matrix paskyra kitame serveryje."
"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.": "Jūs galite naudoti pasirinktinius serverio nustatymus, kad prisijungtumėte prie kitų Matrix serverių, nurodydami kito serverio URL. Tai leidžia jums naudotis Riot su esama Matrix paskyra kitame serveryje.",
"Go to your browser to complete Sign In": "Norėdami užbaigti prisijungimą, eikite į naršyklę"
}
+3 -1
View File
@@ -21,5 +21,7 @@
"Need help?": "Тусламж хэрэгтэй юу?",
"Chat with Riot Bot": "Риот боттой чатлах",
"Explore rooms": "Өрөөнүүд үзэх",
"Room Directory": "Өрөөний директор"
"Room Directory": "Өрөөний директор",
"Open user settings": "Хэрэглэгчийн тохиргоо нээх",
"Go to your browser to complete Sign In": "Бүрэн нэвтрэхийн тулд вэб хөтөч рүү шилжинэ үү"
}
+8 -3
View File
@@ -7,14 +7,19 @@
"You need to be using HTTPS to place a screen-sharing call.": "Du er nødt til å bruke HTTPS for å ha en samtale med skjermdeling.",
"Dismiss": "Avvis",
"Welcome to Riot.im": "Velkommen til Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Desentralisert, kryptert chat &amp; sammabeid drevet av [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Desentralisert, kryptert chat &amp; samarbeid drevet av [matrix]",
"Chat with Riot Bot": "Chat med Riot Bot",
"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 kan bruke instillinger for «egendefinert tjener» til å logge inn på andre Matrix tjenere ved å spesifisere en annen URL. Dette lar deg bruke Riot med en eksisterende Matrix konto på en annen hjemmetjener.",
"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 kan bruke instillinger for «egendefinert tjener» til å logge inn på andre Matrix-tjenere ved å spesifisere en annen URL. Dette lar deg bruke Riot med en eksisterende Matrix-konto på en annen hjemmetjener.",
"Sign In": "Logg inn",
"Create Account": "Lag konto",
"Need help?": "Trenger du hjelp?",
"Room Directory": "Alle rom",
"Explore rooms": "Se alle rom",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din inneholder ugyldig JSON. Vennligst fiks problemet og oppdater siden.",
"The message from the parser is: %(message)s": "Meldingen fra parseren er: %(message)s"
"The message from the parser is: %(message)s": "Meldingen fra parseren er: %(message)s",
"Invalid JSON": "Ugyldig JSON",
"Your Riot is misconfigured": "Riot er feilkonfigurert",
"Invalid configuration: no default server specified.": "Ugyldig konfigurasjon: ingen standardserver spesifisert.",
"Unexpected error preparing the app. See console for details.": "Uventet feil oppsto mens appen ble gjort klar. Se konsollen for detaljer.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfigurasjon: Spesifiser kun en av følgende: default_server_config, default_server_name eller default_hs_url."
}
+3 -1
View File
@@ -21,5 +21,7 @@
"Your Riot is misconfigured": "Uw Riot is onjuist 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": "De ontleder meldt: %(message)s",
"Invalid JSON": "Ongeldige JSON"
"Invalid JSON": "Ongeldige JSON",
"Go to your browser to complete Sign In": "Ga naar uw browser om de aanmelding te voltooien",
"Open user settings": "Open de gebruikersinstellingen"
}
+3 -3
View File
@@ -2,7 +2,7 @@
"Riot Desktop on %(platformName)s": "Riot på Skrivebord for %(platformName)s",
"Unknown device": "Ukjend eining",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s gjennom %(browserName)s på %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "Du må bruka HTTPS for å ha ei samtale med skjermdeling.",
"You need to be using HTTPS to place a screen-sharing call.": "Du må bruka HTTPS for å ha ein samtale med skjermdeling.",
"Dismiss": "Avvis",
"powered by Matrix": "Matrixdriven",
"Welcome to Riot.im": "Velkomen til Riot.im",
@@ -11,12 +11,12 @@
"Custom Server Options": "Tilpassa tenar-innstillingar",
"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 kan nytta dei eigendefinerte tenarinstillingane for å logga inn på andre Matrix-tenarar ved å uppgje ein annan heimtenar-URL. Dette lèt deg bruka Riot med ein Matrix-konto som allereie finst på ein annan heimtenar.",
"Sign In": "Logg inn",
"Create Account": "Lag brukar",
"Create Account": "Opprett konto",
"Need help?": "Treng du hjelp?",
"Explore rooms": "Utforsk romma",
"Room Directory": "Romkatalog",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din har ugyldig JSON-kode. Korriger dette og last inn sida på nytt.",
"The message from the parser is: %(message)s": "Meldingen frå kodetolkaren er: %(message)s",
"The message from the parser is: %(message)s": "Meldinga frå kodetolkaren er: %(message)s",
"Invalid JSON": "Ugyldig JSON",
"Your Riot is misconfigured": "Riot-klienten din er feilkonfiguert",
"Unexpected error preparing the app. See console for details.": "Uventa feil under lasting av programmet. Sjå konsollen for detaljar.",
+22
View File
@@ -0,0 +1,22 @@
{
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Vòstra configuracion Riot conten de JSON invalid. Mercés de corregir lo problèma e dactualizar la pagina.",
"The message from the parser is: %(message)s": "Lo messatge de lanalisaire es: %(message)s",
"Invalid JSON": "Invalid JSON",
"Your Riot is misconfigured": "Vòstre Riot es mal configurat",
"Unexpected error preparing the app. See console for details.": "Error inesperada en preparant laplicacion. Vejatz la consòla pels detalhs.",
"Riot Desktop on %(platformName)s": "Riot Desktop sus %(platformName)s",
"Go to your browser to complete Sign In": "Anatz al navegador per acabar la connexion",
"Unknown device": "Periferic desconegut",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s sus %(osName)s",
"powered by Matrix": "propulsat per Matrix",
"Custom Server Options": "Opcions de servidor personalizat",
"Dismiss": "Refusar",
"Welcome to Riot.im": "La benvenguda a Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Messatjariá chifrada, descentralizada e collaborativa propulsada per [matrix]",
"Sign In": "Se connectar",
"Create Account": "Crear un compte",
"Need help?": "Besonh dajuda?",
"Chat with Riot Bot": "Charrar amb lo robòt Riot",
"Explore rooms": "Percórrer las salas",
"Room Directory": "Annuari de las sala"
}
+12 -11
View File
@@ -1,25 +1,26 @@
{
"Custom Server Options": "Opções para Servidor Personalizado",
"Custom Server Options": "Opções do Servidor Personalizado",
"Dismiss": "Descartar",
"powered by Matrix": "rodando a partir do Matrix",
"powered by Matrix": "powered by Matrix",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s",
"Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s",
"Riot Desktop on %(platformName)s": "Riot Desktop em %(platformName)s",
"Unknown device": "Dispositivo desconhecido",
"You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã.",
"Welcome to Riot.im": "Bem-vindo ao Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, encriptado &amp; colaborativo alimentado por [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, encriptado &amp; colaborativo powered by [matrix]",
"Chat with Riot Bot": "Falar com o Bot do Riot",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A sua configuração do RIOT contém JSON inválido. Por favor corriga o erro e recarregue a página.",
"The message from the parser is: %(message)s": "A mensagem do analisador é: %(message)s",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A sua configuração do Riot contém JSON inválido. Por favor corrija o erro e recarregue a página.",
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
"Invalid JSON": "JSON inválido",
"Your Riot is misconfigured": "A sua configuração do RIOT está incorrecta.",
"Your Riot is misconfigured": "Existe um erro na configuração do Riot",
"Unexpected error preparing the app. See console for details.": "Erro inesperado na preparação da aplicação. Veja a consola para mais detalhes.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuração inválida: só pode especificar uma das default_server_config, default_server_name,\nor default_hs_url.",
"Invalid configuration: no default server specified.": "Configuração inválida: não existe especificação de servidor padrão.",
"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.": "Pode usar as opções de custom server, para iniciar sessão noutros servidores Matrix.org, especificando o URL do homeserver diferente. Isto autoriza-lo-á a usar RIOT com a sua conta Matrix num servidor diferente",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuração inválida: só pode especificar uma das default_server_config, default_server_name, ou default_hs_url.",
"Invalid configuration: no default server specified.": "Configuração inválida: servidor padrão não especificado.",
"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.": "Pode usar as opções de servidor personalizado, para iniciar sessão noutros servidores Matrix, especificando o URL do homeserver diferente. Isto autoriza-lo-á a usar Riot com a sua conta Matrix num servidor diferente.",
"Sign In": "Iniciar sessão",
"Create Account": "Criar conta",
"Need help?": "Ajuda?",
"Explore rooms": "Explorar rooms",
"Room Directory": "Diretório de rooms"
"Room Directory": "Diretório de rooms",
"Go to your browser to complete Sign In": "Abra o seu navegador para completar o inicio de sessão"
}
+2 -1
View File
@@ -21,5 +21,6 @@
"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"
"Invalid JSON": "Нерабочий JSON",
"Go to your browser to complete Sign In": "Перейдите в браузер для завершения входа"
}
+3 -1
View File
@@ -21,5 +21,7 @@
"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"
"Invalid JSON": "JSON i pavlefshëm",
"Go to your browser to complete Sign In": "Që të plotësoni Hyrjen, kaloni te shfletuesi juaj",
"Open user settings": "Hapni rregullime përdoruesi"
}
+7 -5
View File
@@ -2,7 +2,7 @@
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)s işletim sisteminde %(browserName)s ile %(appName)s",
"Custom Server Options": "Özelleştirilebilir Sunucu Seçenekleri",
"Dismiss": "Kapat",
"powered by Matrix": "Matrix tarafından destekleniyor",
"powered by Matrix": "Matrix'den besleniyor",
"Riot Desktop on %(platformName)s": "%(platformName)s platformunda Riot Masaüstü",
"Unknown device": "Bilinmeyen aygıt",
"You need to be using HTTPS to place a screen-sharing call.": "Ekran paylaşımlı arama yapmak için HTTPS kullanıyor olmalısınız.",
@@ -11,15 +11,17 @@
"Chat with Riot Bot": "Riot Bot ile Sohbet Et",
"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.": "Özel sunucu seçenekleri kullanıp farklı bir anamakine URL'si belirleyerek diğer Matrix sunucularına giriş yapabilirsin. Bu Riot'u varolan bir Matrix hesabı ile farklı anamakine de kullanmanı sağlar.",
"Sign In": "Giriş Yap",
"Create Account": "Kayıt Ol",
"Create Account": "Hesap Oluştur",
"Need help?": "Yardıma mı ihtiyacın var?",
"Explore rooms": "Odaları keşfet",
"Room Directory": "Oda Dizini",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot yapılandırmanız geçersiz JSON ifadesi içermektedir. Lütfen problemi düzeltin ve sayfayı yenileyin.",
"Invalid JSON": "Geçersiz JSON",
"Your Riot is misconfigured": "Rioutunuz hatalı yapılandırılmış",
"Unexpected error preparing the app. See console for details.": "Uygulamayı hazırlarken beklenmeyen hata oluştu. Lütfen detaylar için konsola bakınız.",
"Your Riot is misconfigured": "Riot hatalı ayarlanmış",
"Unexpected error preparing the app. See console for details.": "Uygulama hazırlanırken beklenmeyen bir hata oldu. Detaylar için konsola bakın.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Geçersiz yapılandırma: default_server_config, default_server_name, yada default_hs_url den sadece birisi seçilebilir.",
"Invalid configuration: no default server specified.": "Geçersiz yapılandırma: varsayılan sunucu seçilmemiş.",
"The message from the parser is: %(message)s": "Ayrıştırıcıdan gelen mesaj: %(message)s"
"The message from the parser is: %(message)s": "Ayrıştırıcıdan gelen mesaj: %(message)s",
"Go to your browser to complete Sign In": "Oturum açmayı tamamlamak için tarayıcınıza gidin",
"Open user settings": "Kullanıcı ayarlarını aç"
}
+2 -1
View File
@@ -21,5 +21,6 @@
"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-configuroasje 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"
"Invalid JSON": "Oungeldigen JSON",
"Go to your browser to complete Sign In": "Goa noa je browser voe danmeldienge te voltooin"
}
+1 -1
View File
@@ -7,7 +7,7 @@
"Unknown device": "未知设备",
"You need to be using HTTPS to place a screen-sharing call.": "您需要使用 HTTPS 以进行共享屏幕通话。",
"Welcome to Riot.im": "欢迎来到 Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "去中心化加密聊天 &amp; 由 [matrix] 驱动",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "去中心化加密聊天与协作,由 [matrix] 驱动",
"Chat with Riot Bot": "与 Riot 机器人聊天",
"Sign In": "登入",
"Create Account": "创建帐号",
+3 -1
View File
@@ -21,5 +21,7 @@
"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"
"Invalid JSON": "無效的 JSON",
"Go to your browser to complete Sign In": "到您的瀏覽器完成登入",
"Open user settings": "開啟使用者設定"
}
+398
View File
@@ -0,0 +1,398 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2018, 2019 New Vector Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import React from 'react';
// add React and ReactPerf to the global namespace, to make them easier to
// access via the console
global.React = React;
import ReactDOM from 'react-dom';
import * as sdk from 'matrix-react-sdk';
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
import * as VectorConferenceHandler from 'matrix-react-sdk/src/VectorConferenceHandler';
import {_t, _td, newTranslatableError} from 'matrix-react-sdk/src/languageHandler';
import AutoDiscoveryUtils from 'matrix-react-sdk/src/utils/AutoDiscoveryUtils';
import {AutoDiscovery} from "matrix-js-sdk/src/autodiscovery";
import * as Lifecycle from "matrix-react-sdk/src/Lifecycle";
import url from 'url';
import {parseQs, parseQsFromFragment} from './url_utils';
import {MatrixClientPeg} from 'matrix-react-sdk/src/MatrixClientPeg';
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
import {setTheme} from "matrix-react-sdk/src/theme";
import CallHandler from 'matrix-react-sdk/src/CallHandler';
import {loadConfig, preparePlatform, loadLanguage, loadOlm} from "./init";
let lastLocationHashSet = null;
function checkBrowserFeatures() {
if (!window.Modernizr) {
console.error("Cannot check features - Modernizr global is missing.");
return false;
}
// custom checks atop Modernizr because it doesn't have ES2018/ES2019 checks in it for some features we depend on,
// Modernizr requires rules to be lowercase with no punctuation:
// ES2018: http://www.ecma-international.org/ecma-262/9.0/#sec-promise.prototype.finally
window.Modernizr.addTest("promiseprototypefinally", () =>
window.Promise && window.Promise.prototype && typeof window.Promise.prototype.finally === "function");
// ES2019: http://www.ecma-international.org/ecma-262/10.0/#sec-object.fromentries
window.Modernizr.addTest("objectfromentries", () =>
window.Object && typeof window.Object.fromEntries === "function");
const featureList = Object.keys(window.Modernizr);
let featureComplete = true;
for (let i = 0; i < featureList.length; i++) {
if (window.Modernizr[featureList[i]] === undefined) {
console.error(
"Looked for feature '%s' but Modernizr has no results for this. " +
"Has it been configured correctly?", featureList[i],
);
return false;
}
if (window.Modernizr[featureList[i]] === false) {
console.error("Browser missing feature: '%s'", featureList[i]);
// toggle flag rather than return early so we log all missing features rather than just the first.
featureComplete = false;
}
}
return featureComplete;
}
// Parse the given window.location and return parameters that can be used when calling
// MatrixChat.showScreen(screen, params)
function getScreenFromLocation(location) {
const fragparts = parseQsFromFragment(location);
return {
screen: fragparts.location.substring(1),
params: fragparts.params,
};
}
// Here, we do some crude URL analysis to allow
// deep-linking.
function routeUrl(location) {
if (!window.matrixChat) return;
console.log("Routing URL ", location.href);
const s = getScreenFromLocation(location);
window.matrixChat.showScreen(s.screen, s.params);
}
function onHashChange(ev) {
if (decodeURIComponent(window.location.hash) === lastLocationHashSet) {
// we just set this: no need to route it!
return;
}
routeUrl(window.location);
}
// This will be called whenever the SDK changes screens,
// so a web page can update the URL bar appropriately.
function onNewScreen(screen) {
console.log("newscreen "+screen);
const hash = '#/' + screen;
lastLocationHashSet = hash;
window.location.hash = hash;
}
// We use this to work out what URL the SDK should
// pass through when registering to allow the user to
// click back to the client having registered.
// It's up to us to recognise if we're loaded with
// this URL and tell MatrixClient to resume registration.
//
// If we're in electron, we should never pass through a file:// URL otherwise
// the identity server will try to 302 the browser to it, which breaks horribly.
// so in that instance, hardcode to use riot.im/app for now instead.
function makeRegistrationUrl(params) {
let url;
if (window.location.protocol === "vector:") {
url = 'https://riot.im/app/#/register';
} else {
url = (
window.location.protocol + '//' +
window.location.host +
window.location.pathname +
'#/register'
);
}
const keys = Object.keys(params);
for (let i = 0; i < keys.length; ++i) {
if (i === 0) {
url += '?';
} else {
url += '&';
}
const k = keys[i];
url += k + '=' + encodeURIComponent(params[k]);
}
return url;
}
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
// clear them.
const parsedUrl = url.parse(window.location.href);
parsedUrl.search = "";
const formatted = url.format(parsedUrl);
console.log("Redirecting to " + formatted + " to drop loginToken " +
"from queryparams");
window.location.href = formatted;
}
export async function loadApp() {
// XXX: the way we pass the path to the worker script from webpack via html in body's dataset is a hack
// but alternatives seem to require changing the interface to passing Workers to js-sdk
const vectorIndexeddbWorkerScript = document.body.dataset.vectorIndexeddbWorkerScript;
if (!vectorIndexeddbWorkerScript) {
// If this is missing, something has probably gone wrong with
// the bundling. The js-sdk will just fall back to accessing
// indexeddb directly with no worker script, but we want to
// make sure the indexeddb script is present, so fail hard.
throw new Error("Missing indexeddb worker script!");
}
MatrixClientPeg.setIndexedDbWorkerScript(vectorIndexeddbWorkerScript);
CallHandler.setConferenceHandler(VectorConferenceHandler);
window.addEventListener('hashchange', onHashChange);
await loadOlm();
// set the platform for react sdk
preparePlatform();
const platform = PlatformPeg.get();
// Load the config from the platform
const configError = await loadConfig();
// Load language after loading config.json so that settingsDefaults.language can be applied
await loadLanguage();
const fragparts = parseQsFromFragment(window.location);
const params = parseQs(window.location);
// don't try to redirect to the native apps if we're
// verifying a 3pid (but after we've loaded the config)
// or if the user is following a deep link
// (https://github.com/vector-im/riot-web/issues/7378)
const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;
if (!preventRedirect) {
const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
const isAndroid = /Android/.test(navigator.userAgent);
if (isIos || isAndroid) {
if (document.cookie.indexOf("riot_mobile_redirect_to_guide=false") === -1) {
window.location = "mobile_guide/";
return;
}
}
}
// as quickly as we possibly can, set a default theme...
await setTheme();
// Now that we've loaded the theme (CSS), display the config syntax error if needed.
if (configError && configError.err && configError.err instanceof SyntaxError) {
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();
const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser');
const urlWithoutQuery = window.location.protocol + '//' + window.location.host + window.location.pathname;
console.log("Vector starting at " + urlWithoutQuery);
if (configError) {
window.matrixChat = ReactDOM.render(<div className="error">
Unable to load config file: please refresh the page to try again.
</div>, document.getElementById('matrixchat'));
} else if (validBrowser || acceptInvalidBrowser) {
platform.startUpdater();
// 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={!SdkConfig.get().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
const CompatibilityPage = sdk.getComponent("structures.CompatibilityPage");
window.matrixChat = ReactDOM.render(
<CompatibilityPage onAccept={function() {
if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true);
console.log("User accepts the compatibility risks.");
loadApp();
}} />,
document.getElementById('matrixchat'),
);
}
}
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();
}
@@ -1,5 +1,5 @@
/*
Copyright 2018 New Vector Ltd
Copyright 2018, 2020 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,22 +18,25 @@ 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 = '';
export async function getVectorConfig(relativeLocation: string='') {
if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';
const specificConfigPromise = getConfig(`${relativeLocation}config.${document.domain}.json`);
const generalConfigPromise = getConfig(relativeLocation + "config.json");
try {
const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);
const configJson = await specificConfigPromise;
// 404s succeed with an empty json config, so check that there are keys
if (Object.keys(configJson).length === 0) {
throw new Error(); // throw to enter the catch
}
return configJson;
} catch (e) {
return await getConfig(relativeLocation + "config.json");
return await generalConfigPromise;
}
}
function getConfig(configJsonFilename) {
function getConfig(configJsonFilename: string): Promise<{}> {
return new Promise(function(resolve, reject) {
request(
{ method: "GET", url: configJsonFilename, qs: { cachebuster: Date.now() } },
+17 -10
View File
@@ -22,6 +22,21 @@
<meta name="msapplication-config" content="<%= require('../../res/vector-icons/browserconfig.xml') %>">
<meta name="theme-color" content="#ffffff">
<meta property="og:image" content="<%= htmlWebpackPlugin.options.vars.og_image_url %>" />
<meta http-equiv="Content-Security-Policy" content="
default-src 'none';
style-src 'self' 'unsafe-inline';
script-src 'self' 'unsafe-eval' https://www.recaptcha.net https://www.gstatic.com;
img-src * blob: data:;
connect-src *;
font-src 'self' data:;
media-src * blob: data:;
child-src * blob: data:;
worker-src 'self';
frame-src * blob: data:;
form-action 'self';
object-src 'self';
manifest-src 'self';
">
<% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) {
var file = htmlWebpackPlugin.files.css[i];
var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/);
@@ -34,18 +49,10 @@
<% }
} %>
</head>
<body style="height: 100%;">
<section id="matrixchat" style="height: 100%; overflow: auto;"></section>
<body style="height: 100%;" data-vector-indexeddb-worker-script="<%= htmlWebpackPlugin.files.chunks['indexeddb-worker'].entry %>">
<noscript>Sorry, Riot requires JavaScript to be enabled.</noscript> <!-- TODO: Translate this? -->
<script>
window.vector_indexeddb_worker_script = '<%= htmlWebpackPlugin.files.chunks['indexeddb-worker'].entry %>';
</script>
<section id="matrixchat" style="height: 100%; overflow: auto;"></section>
<script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js');
}
</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;"/>
<img src="<%= require('matrix-react-sdk/res/img/feather-customised/warning-triangle.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
+18 -458
View File
@@ -3,6 +3,7 @@ Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2018, 2019 New Vector Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,468 +21,27 @@ limitations under the License.
// Require common CSS here; this will make webpack process it into bundle.css.
// Our own CSS (which is themed) is imported via separate webpack entry points
// in webpack.config.js
require('gemini-scrollbar/gemini-scrollbar.css');
require('gfm.css/gfm.css');
require('highlight.js/styles/github.css');
import olmWasmPath from 'olm/olm.wasm';
// These are things that can run before the skin loads - be careful not to reference the react-sdk though.
import './rageshakesetup';
import React from 'react';
// add React and ReactPerf to the global namespace, to make them easier to
// access via the console
global.React = React;
import './modernizr';
import ReactDOM from 'react-dom';
// load service worker if available on this platform
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js');
}
// Ensure the skin is the very first thing to load for the react-sdk. We don't even want to reference
// the SDK until we have to in imports.
console.log("Loading skin...");
import * as sdk from 'matrix-react-sdk';
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
sdk.loadSkin(require('../component-index'));
import * as VectorConferenceHandler from 'matrix-react-sdk/src/VectorConferenceHandler';
import * as languageHandler from 'matrix-react-sdk/src/languageHandler';
import {_t, _td, newTranslatableError} from 'matrix-react-sdk/src/languageHandler';
import AutoDiscoveryUtils from 'matrix-react-sdk/src/utils/AutoDiscoveryUtils';
import {AutoDiscovery} from "matrix-js-sdk/src/autodiscovery";
import * as Lifecycle from "matrix-react-sdk/src/Lifecycle";
import * as skin from "../component-index";
sdk.loadSkin(skin);
console.log("Skin loaded!");
import url from 'url';
import {parseQs, parseQsFromFragment} from './url_utils';
import ElectronPlatform from './platform/ElectronPlatform';
import WebPlatform from './platform/WebPlatform';
import {MatrixClientPeg} from 'matrix-react-sdk/src/MatrixClientPeg';
import SettingsStore from "matrix-react-sdk/src/settings/SettingsStore";
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
import {setTheme} from "matrix-react-sdk/src/theme";
import Olm from 'olm';
import CallHandler from 'matrix-react-sdk/src/CallHandler';
let lastLocationHashSet = null;
function checkBrowserFeatures(featureList) {
if (!window.Modernizr) {
console.error("Cannot check features - Modernizr global is missing.");
return false;
}
let featureComplete = true;
for (let i = 0; i < featureList.length; i++) {
if (window.Modernizr[featureList[i]] === undefined) {
console.error(
"Looked for feature '%s' but Modernizr has no results for this. " +
"Has it been configured correctly?", featureList[i],
);
return false;
}
if (window.Modernizr[featureList[i]] === false) {
console.error("Browser missing feature: '%s'", featureList[i]);
// toggle flag rather than return early so we log all missing features
// rather than just the first.
featureComplete = false;
}
}
return featureComplete;
}
// Parse the given window.location and return parameters that can be used when calling
// MatrixChat.showScreen(screen, params)
function getScreenFromLocation(location) {
const fragparts = parseQsFromFragment(location);
return {
screen: fragparts.location.substring(1),
params: fragparts.params,
};
}
// Here, we do some crude URL analysis to allow
// deep-linking.
function routeUrl(location) {
if (!window.matrixChat) return;
console.log("Routing URL ", location.href);
const s = getScreenFromLocation(location);
window.matrixChat.showScreen(s.screen, s.params);
}
function onHashChange(ev) {
if (decodeURIComponent(window.location.hash) === lastLocationHashSet) {
// we just set this: no need to route it!
return;
}
routeUrl(window.location);
}
// This will be called whenever the SDK changes screens,
// so a web page can update the URL bar appropriately.
function onNewScreen(screen) {
console.log("newscreen "+screen);
const hash = '#/' + screen;
lastLocationHashSet = hash;
window.location.hash = hash;
}
// We use this to work out what URL the SDK should
// pass through when registering to allow the user to
// click back to the client having registered.
// It's up to us to recognise if we're loaded with
// this URL and tell MatrixClient to resume registration.
//
// If we're in electron, we should never pass through a file:// URL otherwise
// the identity server will try to 302 the browser to it, which breaks horribly.
// so in that instance, hardcode to use riot.im/app for now instead.
function makeRegistrationUrl(params) {
let url;
if (window.location.protocol === "vector:") {
url = 'https://riot.im/app/#/register';
} else {
url = (
window.location.protocol + '//' +
window.location.host +
window.location.pathname +
'#/register'
);
}
const keys = Object.keys(params);
for (let i = 0; i < keys.length; ++i) {
if (i === 0) {
url += '?';
} else {
url += '&';
}
const k = keys[i];
url += k + '=' + encodeURIComponent(params[k]);
}
return url;
}
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
// clear them.
const parsedUrl = url.parse(window.location.href);
parsedUrl.search = "";
const formatted = url.format(parsedUrl);
console.log("Redirecting to " + formatted + " to drop loginToken " +
"from queryparams");
window.location.href = formatted;
}
async function loadApp() {
if (window.vector_indexeddb_worker_script === undefined) {
// If this is missing, something has probably gone wrong with
// the bundling. The js-sdk will just fall back to accessing
// indexeddb directly with no worker script, but we want to
// make sure the indexeddb script is present, so fail hard.
throw new Error("Missing indexeddb worker script!");
}
MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script);
CallHandler.setConferenceHandler(VectorConferenceHandler);
window.addEventListener('hashchange', onHashChange);
await loadOlm();
// set the platform for react sdk
if (window.ipcRenderer) {
console.log("Using Electron platform");
const plaf = new ElectronPlatform();
PlatformPeg.set(plaf);
} else {
console.log("Using Web platform");
PlatformPeg.set(new WebPlatform());
}
const platform = PlatformPeg.get();
let configJson;
let configError;
let configSyntaxError = false;
try {
configJson = await platform.getConfig();
} catch (e) {
configError = e;
if (e && e.err && e.err instanceof SyntaxError) {
console.error("SyntaxError loading config:", e);
configSyntaxError = true;
configJson = {}; // to prevent errors between here and loading CSS for the error box
}
}
// XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure
// granular settings are loaded correctly and to avoid duplicating the override logic for the theme.
SdkConfig.put(configJson);
// Load language after loading config.json so that settingsDefaults.language can be applied
await loadLanguage();
const fragparts = parseQsFromFragment(window.location);
const params = parseQs(window.location);
// don't try to redirect to the native apps if we're
// verifying a 3pid (but after we've loaded the config)
// or if the user is following a deep link
// (https://github.com/vector-im/riot-web/issues/7378)
const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;
if (!preventRedirect) {
const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
const isAndroid = /Android/.test(navigator.userAgent);
if (isIos || isAndroid) {
if (document.cookie.indexOf("riot_mobile_redirect_to_guide=false") === -1) {
window.location = "mobile_guide/";
return;
}
}
}
// as quickly as we possibly can, set a default theme...
await setTheme();
// 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",
]);
const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser');
const urlWithoutQuery = window.location.protocol + '//' + window.location.host + window.location.pathname;
console.log("Vector starting at " + urlWithoutQuery);
if (configError) {
window.matrixChat = ReactDOM.render(<div className="error">
Unable to load config file: please refresh the page to try again.
</div>, document.getElementById('matrixchat'));
} else if (validBrowser || acceptInvalidBrowser) {
platform.startUpdater();
// 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
const CompatibilityPage = sdk.getComponent("structures.CompatibilityPage");
window.matrixChat = ReactDOM.render(
<CompatibilityPage onAccept={function() {
if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true);
console.log("User accepts the compatibility risks.");
loadApp();
}} />,
document.getElementById('matrixchat'),
);
}
}
function loadOlm() {
/* Load Olm. We try the WebAssembly version first, and then the legacy,
* asm.js version if that fails. For this reason we need to wait for this
* to finish before continuing to load the rest of the app. In future
* we could somehow pass a promise down to react-sdk and have it wait on
* that so olm can be loading in parallel with the rest of the app.
*
* We also need to tell the Olm js to look for its wasm file at the same
* level as index.html. It really should be in the same place as the js,
* ie. in the bundle directory, but as far as I can tell this is
* completely impossible with webpack. We do, however, use a hashed
* filename to avoid caching issues.
*/
return Olm.init({
locateFile: () => olmWasmPath,
}).then(() => {
console.log("Using WebAssembly Olm");
}).catch((e) => {
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
s.onload = resolve;
s.onerror = reject;
document.body.appendChild(s);
}).then(() => {
// Init window.Olm, ie. the one just loaded by the script tag,
// not 'Olm' which is still the failed wasm version.
return window.Olm.init();
}).then(() => {
console.log("Using legacy Olm");
}).catch((e) => {
console.log("Both WebAssembly and asm.js Olm failed!", e);
});
});
}
async function loadLanguage() {
const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true);
let langs = [];
if (!prefLang) {
languageHandler.getLanguagesFromBrowser().forEach((l) => {
langs.push(...languageHandler.getNormalizedLanguageKeys(l));
});
} else {
langs = [prefLang];
}
try {
await languageHandler.setLanguage(langs);
document.documentElement.setAttribute("lang", languageHandler.getCurrentLanguage());
} catch (e) {
console.error("Unable to set language", e);
}
}
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();
// Finally, load the app. All of the other react-sdk imports are in this file which causes the skinner to
// run on the components. We use `require` here to make sure webpack doesn't optimize this into an async
// import and thus running before the skin can load.
require("./app").loadApp();
+114
View File
@@ -0,0 +1,114 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2018, 2019, 2020 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.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// @ts-ignore
import olmWasmPath from "olm/olm.wasm";
import Olm from 'olm';
import * as languageHandler from 'matrix-react-sdk/src/languageHandler';
import SettingsStore from "matrix-react-sdk/src/settings/SettingsStore";
import ElectronPlatform from "./platform/ElectronPlatform";
import WebPlatform from "./platform/WebPlatform";
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
export function preparePlatform() {
if ((<any>window).ipcRenderer) {
console.log("Using Electron platform");
const plaf = new ElectronPlatform();
PlatformPeg.set(plaf);
} else {
console.log("Using Web platform");
PlatformPeg.set(new WebPlatform());
}
}
export async function loadConfig(): Promise<Error | void> {
const platform = PlatformPeg.get();
let configJson;
try {
configJson = await platform.getConfig();
} catch (e) {
return e;
} finally {
// XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure
// granular settings are loaded correctly and to avoid duplicating the override logic for the theme.
//
// Note: this isn't called twice for some wrappers, like the Jitsi wrapper.
SdkConfig.put(configJson || {});
}
}
export function loadOlm(): Promise<void> {
/* Load Olm. We try the WebAssembly version first, and then the legacy,
* asm.js version if that fails. For this reason we need to wait for this
* to finish before continuing to load the rest of the app. In future
* we could somehow pass a promise down to react-sdk and have it wait on
* that so olm can be loading in parallel with the rest of the app.
*
* We also need to tell the Olm js to look for its wasm file at the same
* level as index.html. It really should be in the same place as the js,
* ie. in the bundle directory, but as far as I can tell this is
* completely impossible with webpack. We do, however, use a hashed
* filename to avoid caching issues.
*/
return Olm.init({
locateFile: () => olmWasmPath,
}).then(() => {
console.log("Using WebAssembly Olm");
}).catch((e) => {
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
s.onload = resolve;
s.onerror = reject;
document.body.appendChild(s);
}).then(() => {
// Init window.Olm, ie. the one just loaded by the script tag,
// not 'Olm' which is still the failed wasm version.
return window.Olm.init();
}).then(() => {
console.log("Using legacy Olm");
}).catch((e) => {
console.log("Both WebAssembly and asm.js Olm failed!", e);
});
});
}
export async function loadLanguage() {
const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true);
let langs = [];
if (!prefLang) {
languageHandler.getLanguagesFromBrowser().forEach((l) => {
langs.push(...languageHandler.getNormalizedLanguageKeys(l));
});
} else {
langs = [prefLang];
}
try {
await languageHandler.setLanguage(langs);
document.documentElement.setAttribute("lang", languageHandler.getCurrentLanguage());
} catch (e) {
console.error("Unable to set language", e);
}
}
+21
View File
@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jitsi Widget</title>
</head>
<body>
<div id="jitsiContainer"><!-- the js will put the conference here --></div>
<div id="joinButtonContainer">
<div class="joinConferenceFloating">
<div class="joinConferencePrompt">
<!-- TODO: i18n -->
<h2>Jitsi Video Conference</h2>
<button type="button" id="joinButton">Join Conference</button>
</div>
</div>
</div>
<!-- This script is not webpacked, and the script is downloaded at build time -->
<script src="./jitsi_external_api.min.js"></script>
</body>
</html>
+75
View File
@@ -0,0 +1,75 @@
/*
Copyright 2020 New Vector Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// TODO: Match the user's theme: https://github.com/vector-im/riot-web/issues/12794
@font-face {
font-family: 'Nunito';
font-style: normal;
font-weight: 400;
src: url('~matrix-react-sdk/res/fonts/Nunito/Nunito-Regular.ttf') format('truetype');
}
body {
font-family: Nunito, Arial, Helvetica, sans-serif;
background-color: #181b21;
color: #edf3ff;
}
body, html {
padding: 0;
margin: 0;
}
#jitsiContainer {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
#joinButtonContainer {
display: table;
position: absolute;
height: 100%;
width: 100%;
}
.joinConferenceFloating {
display: table-cell;
vertical-align: middle;
}
.joinConferencePrompt {
margin-left: auto;
margin-right: auto;
width: 90%;
text-align: center;
}
#joinButton {
// A mix of AccessibleButton styles
cursor: pointer;
padding: 7px 18px;
text-align: center;
border-radius: 4px;
display: inline-block;
font-size: 14px;
color: #ffffff;
background-color: #03b381;
border: 0;
}
+124
View File
@@ -0,0 +1,124 @@
/*
Copyright 2020 New Vector Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// We have to trick webpack into loading our CSS for us.
require("./index.scss");
import * as qs from 'querystring';
import { Capability, WidgetApi } from "matrix-react-sdk/src/widgets/WidgetApi";
// Dev note: we use raw JS without many dependencies to reduce bundle size.
// We do not need all of React to render a Jitsi conference.
declare var JitsiMeetExternalAPI: any;
let inConference = false;
// Jitsi params
let jitsiDomain: string;
let conferenceId: string;
let displayName: string;
let avatarUrl: string;
let userId: string;
let widgetApi: WidgetApi;
(async function () {
try {
// The widget's options are encoded into the fragment to avoid leaking info to the server. The widget
// spec on the other hand requires the widgetId and parentUrl to show up in the regular query string.
const widgetQuery = qs.parse(window.location.hash.substring(1));
const query = Object.assign({}, qs.parse(window.location.search.substring(1)), widgetQuery);
const qsParam = (name: string, optional = false): string => {
if (!optional && (!query[name] || typeof (query[name]) !== 'string')) {
throw new Error(`Expected singular ${name} in query string`);
}
return <string>query[name];
};
// If we have these params, expect a widget API to be available (ie. to be in an iframe
// inside a matrix client). Otherwise, assume we're on our own, eg. have been popped
// out into a browser.
const parentUrl = qsParam('parentUrl', true);
const widgetId = qsParam('widgetId', true);
// Set this up as early as possible because Riot will be hitting it almost immediately.
if (parentUrl && widgetId) {
widgetApi = new WidgetApi(qsParam('parentUrl'), qsParam('widgetId'), [
Capability.AlwaysOnScreen,
]);
widgetApi.expectingExplicitReady = true;
}
// Populate the Jitsi params now
jitsiDomain = qsParam('conferenceDomain');
conferenceId = qsParam('conferenceId');
displayName = qsParam('displayName', true);
avatarUrl = qsParam('avatarUrl', true); // http not mxc
userId = qsParam('userId');
if (widgetApi) {
await widgetApi.waitReady();
await widgetApi.setAlwaysOnScreen(false); // start off as detachable from the screen
}
// TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/riot-web/issues/12795)
document.getElementById("joinButton").onclick = () => joinConference();
} catch (e) {
console.error("Error setting up Jitsi widget", e);
document.getElementById("jitsiContainer").innerText = "Failed to load Jitsi widget";
switchVisibleContainers();
}
})();
function switchVisibleContainers() {
inConference = !inConference;
document.getElementById("jitsiContainer").style.visibility = inConference ? 'unset' : 'hidden';
document.getElementById("joinButtonContainer").style.visibility = inConference ? 'hidden' : 'unset';
}
function joinConference() { // event handler bound in HTML
switchVisibleContainers();
// noinspection JSIgnoredPromiseFromCall
if (widgetApi) widgetApi.setAlwaysOnScreen(true); // ignored promise because we don't care if it works
const meetApi = new JitsiMeetExternalAPI(jitsiDomain, {
width: "100%",
height: "100%",
parentNode: document.querySelector("#jitsiContainer"),
roomName: conferenceId,
interfaceConfigOverwrite: {
SHOW_JITSI_WATERMARK: false,
SHOW_WATERMARK_FOR_GUESTS: false,
MAIN_TOOLBAR_BUTTONS: [],
VIDEO_LAYOUT_FIT: "height",
},
});
if (displayName) meetApi.executeCommand("displayName", displayName);
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
if (userId) meetApi.executeCommand("email", userId);
meetApi.on("readyToClose", () => {
switchVisibleContainers();
// noinspection JSIgnoredPromiseFromCall
if (widgetApi) widgetApi.setAlwaysOnScreen(false); // ignored promise because we don't care if it works
document.getElementById("jitsiContainer").innerHTML = "";
});
}
File diff suppressed because one or more lines are too long
+60 -13
View File
@@ -5,6 +5,7 @@ Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -22,10 +23,29 @@ limitations under the License.
import VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';
import BaseEventIndexManager from 'matrix-react-sdk/src/indexing/BaseEventIndexManager';
import dis from 'matrix-react-sdk/src/dispatcher';
import { _t } from 'matrix-react-sdk/src/languageHandler';
import { _t, _td } from 'matrix-react-sdk/src/languageHandler';
import * as rageshake from 'matrix-react-sdk/src/rageshake/rageshake';
import {MatrixClient} from "matrix-js-sdk";
import Modal from "matrix-react-sdk/src/Modal";
import InfoDialog from "matrix-react-sdk/src/components/views/dialogs/InfoDialog";
import Spinner from "matrix-react-sdk/src/components/views/elements/Spinner";
import {Categories, Modifiers, registerShortcut} from "matrix-react-sdk/src/accessibility/KeyboardShortcuts";
import {Key} from "matrix-react-sdk/src/Keyboard";
import React from "react";
const ipcRenderer = window.ipcRenderer;
const isMac = navigator.platform.toUpperCase().includes('MAC');
// register Mac specific shortcuts
if (isMac) {
registerShortcut(Categories.NAVIGATION, {
keybinds: [{
modifiers: [Modifiers.COMMAND],
key: Key.COMMA,
}],
description: _td("Open user settings"),
});
}
function platformFriendlyName(): string {
// used to use window.process but the same info is available here
@@ -116,6 +136,10 @@ class SeshatIndexManager extends BaseEventIndexManager {
return this._ipcCall('addEventToIndex', ev, profile);
}
async deleteEvent(eventId: string): Promise<boolean> {
return this._ipcCall('deleteEvent', eventId);
}
async isEventIndexEmpty(): Promise<boolean> {
return this._ipcCall('isEventIndexEmpty');
}
@@ -144,6 +168,10 @@ class SeshatIndexManager extends BaseEventIndexManager {
return this._ipcCall('removeCrawlerCheckpoint', checkpoint);
}
async loadFileEvents(args): Promise<[EventAndProfile]> {
return this._ipcCall('loadFileEvents', args);
}
async loadCheckpoints(): Promise<[CrawlerCheckpoint]> {
return this._ipcCall('loadCheckpoints');
}
@@ -152,6 +180,10 @@ class SeshatIndexManager extends BaseEventIndexManager {
return this._ipcCall('closeEventIndex');
}
async getStats(): Promise<> {
return this._ipcCall('getStats');
}
async deleteEventIndex(): Promise<> {
return this._ipcCall('deleteEventIndex');
}
@@ -190,18 +222,12 @@ export default class ElectronPlatform extends VectorBasePlatform {
ipcRenderer.on('ipcReply', this._onIpcReply.bind(this));
ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this));
ipcRenderer.on('preferences', () => {
dis.dispatch({ action: 'view_user_settings' });
});
this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
this._tryPersistStorage();
}
async _tryPersistStorage() {
if (navigator.storage && navigator.storage.persist) {
const granted = await navigator.storage.persist();
const persisted = await navigator.storage.persisted();
console.log("Storage persist request granted: " + granted + " persisted: " + persisted);
}
}
async getConfig(): Promise<{}> {
@@ -293,7 +319,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
supportsAutoHideMenuBar(): boolean {
// This is irelevant on Mac as Menu bars don't live in the app window
return !navigator.platform.toUpperCase().includes('MAC');
return !isMac;
}
async getAutoHideMenuBarEnabled(): boolean {
@@ -306,7 +332,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
supportsMinimizeToTray(): boolean {
// Things other than Mac support tray icons
return !navigator.platform.toUpperCase().includes('MAC');
return !isMac;
}
async getMinimizeToTrayEnabled(): boolean {
@@ -387,4 +413,25 @@ export default class ElectronPlatform extends VectorBasePlatform {
getEventIndexingManager(): BaseEventIndexManager | null {
return this.eventIndexManager;
}
setLanguage(preferredLangs: string[]) {
this._ipcCall('setLanguage', preferredLangs).catch(error => {
console.log("Failed to send setLanguage IPC to Electron");
console.error(error);
});
}
getSSOCallbackUrl(hsUrl: string, isUrl: string): URL {
const url = super.getSSOCallbackUrl(hsUrl, isUrl);
url.protocol = "riot";
return url;
}
startSingleSignOn(mxClient: MatrixClient, loginType: "sso" | "cas") {
super.startSingleSignOn(mxClient, loginType); // this will get intercepted by electron-main will-navigate
Modal.createTrackedDialog('Electron', 'SSO', InfoDialog, {
title: _t("Go to your browser to complete Sign In"),
description: <Spinner />,
});
}
}
@@ -50,7 +50,7 @@ function initRageshake() {
initRageshake();
global.mxSendRageshake = function(text, withLogs) {
window.mxSendRageshake = function(text: string, withLogs?: boolean) {
if (withLogs === undefined) withLogs = true;
if (!text || !text.trim()) {
console.error("Cannot send a rageshake without a message - please tell us what went wrong");
+3 -3
View File
@@ -1,5 +1,5 @@
/*
Copyright 2018 New Vector Ltd
Copyright 2018, 2020 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@ import * as qs from 'querystring';
// so we're re-using query string like format
//
// returns {location, params}
export function parseQsFromFragment(location) {
export function parseQsFromFragment(location: Location) {
// if we have a fragment, it will start with '#', which we need to drop.
// (if we don't, this will return '').
const fragment = location.hash.substring(1);
@@ -41,6 +41,6 @@ export function parseQsFromFragment(location) {
return result;
}
export function parseQs(location) {
export function parseQs(location: Location) {
return qs.parse(location.search.substring(1));
}
+1 -1
View File
@@ -307,7 +307,7 @@ describe('loading:', function() {
indexedDB,
"matrix-js-sdk:crypto",
);
await cryptoStore._connect();
await cryptoStore.startup();
});
it('shows the last known room by default', function() {
+5 -2
View File
@@ -9,11 +9,14 @@
"sourceMap": false,
"outDir": "./lib",
"declaration": true,
"jsx": "react",
"types": [
"node"
"node",
"react"
]
},
"include": [
"./src/**/*.ts"
"./src/**/*.ts",
"./src/**/*.tsx"
]
}
+29 -6
View File
@@ -34,6 +34,8 @@ module.exports = (env, argv) => {
"bundle": "./src/vector/index.js",
"indexeddb-worker": "./src/vector/indexeddb-worker.js",
"mobileguide": "./src/vector/mobile_guide/index.js",
"jitsi": "./src/vector/jitsi/index.ts",
"usercontent": "./node_modules/matrix-react-sdk/src/usercontent/index.js",
// CSS themes
"theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
@@ -54,6 +56,9 @@ module.exports = (env, argv) => {
enforce: true,
// Do not add `chunks: 'all'` here because you'll break the app entry point.
},
default: {
reuseExistingChunk: true,
},
},
},
@@ -81,7 +86,7 @@ module.exports = (env, argv) => {
aliasFields: ['matrix_src_browser', 'browser'],
// We need to specify that TS can be resolved without an extension
extensions: ['.js', '.json', '.ts'],
extensions: ['.js', '.json', '.ts', '.tsx'],
alias: {
// alias any requires to the react module to the one in our path,
// otherwise we tend to get the react source included twice when
@@ -91,6 +96,9 @@ module.exports = (env, argv) => {
// same goes for js-sdk - we don't need two copies.
"matrix-js-sdk": path.resolve(__dirname, 'node_modules/matrix-js-sdk'),
// and prop-types and sanitize-html
"prop-types": path.resolve(__dirname, 'node_modules/prop-types'),
"sanitize-html": path.resolve(__dirname, 'node_modules/sanitize-html'),
// Define a variable so the i18n stuff can load
"$webapp": path.resolve(__dirname, 'webapp'),
@@ -302,13 +310,21 @@ module.exports = (env, argv) => {
// HtmlWebpackPlugin will screw up our formatting like the names
// of the themes and which chunks we actually care about.
inject: false,
excludeChunks: ['mobileguide'],
excludeChunks: ['mobileguide', 'usercontent', 'jitsi'],
minify: argv.mode === 'production',
vars: {
og_image_url: og_image_url,
},
}),
// This is the jitsi widget wrapper (embedded, so isolated stack)
new HtmlWebpackPlugin({
template: './src/vector/jitsi/index.html',
filename: 'jitsi.html',
minify: argv.mode === 'production',
chunks: ['jitsi'],
}),
// This is the mobile guide's entry point (separate for faster mobile loading)
new HtmlWebpackPlugin({
template: './src/vector/mobile_guide/index.html',
@@ -316,6 +332,14 @@ module.exports = (env, argv) => {
minify: argv.mode === 'production',
chunks: ['mobileguide'],
}),
// This is the usercontent sandbox's entry point (separate for iframing)
new HtmlWebpackPlugin({
template: './node_modules/matrix-react-sdk/src/usercontent/index.html',
filename: 'usercontent/index.html',
minify: argv.mode === 'production',
chunks: ['usercontent'],
}),
],
output: {
@@ -337,10 +361,9 @@ module.exports = (env, argv) => {
// serve unwebpacked assets from webapp.
contentBase: './webapp',
stats: {
// don't fill the console up with a mahoosive list of modules
chunks: false,
},
// Only output errors, warnings, or new compilations.
// This hides the massive list of modules.
stats: 'minimal',
// hot module replacement doesn't work (I think we'd need react-hot-reload?)
// so webpack-dev-server reloads the page on every update which is quite
+1533 -1589
View File
File diff suppressed because it is too large Load Diff