diff --git a/CHANGELOG.md b/CHANGELOG.md
index ba5de17582..778ee0493f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,108 @@
+Changes in [1.0.0](https://github.com/vector-im/riot-web/releases/tag/v1.0.0) (2019-02-14)
+==========================================================================================
+[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.0-rc.2...v1.0.0)
+
+ * Add snipping lines to welcome page without guests
+ [\#8634](https://github.com/vector-im/riot-web/pull/8634)
+ * Add home page to fix loading tests
+ [\#8625](https://github.com/vector-im/riot-web/pull/8625)
+
+Changes in [1.0.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.0.0-rc.2) (2019-02-14)
+====================================================================================================
+[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.0.0-rc.1...v1.0.0-rc.2)
+
+ * Update from Weblate.
+ [\#8615](https://github.com/vector-im/riot-web/pull/8615)
+ * Replace favicon assets to ones with transparent backgrounds
+ [\#8600](https://github.com/vector-im/riot-web/pull/8600)
+ * Refreshed icons
+ [\#8594](https://github.com/vector-im/riot-web/pull/8594)
+ * Fix order of fetch-develop-deps / npm install
+ [\#8566](https://github.com/vector-im/riot-web/pull/8566)
+ * Revive building dark theme
+ [\#8540](https://github.com/vector-im/riot-web/pull/8540)
+ * Update from Weblate.
+ [\#8546](https://github.com/vector-im/riot-web/pull/8546)
+ * Repair app loading tests after welcome page
+ [\#8525](https://github.com/vector-im/riot-web/pull/8525)
+ * Support configurable welcome background and logo
+ [\#8528](https://github.com/vector-im/riot-web/pull/8528)
+ * Update from Weblate.
+ [\#8518](https://github.com/vector-im/riot-web/pull/8518)
+ * Document `embeddedPages` configuration
+ [\#8514](https://github.com/vector-im/riot-web/pull/8514)
+ * README.md : Syntax Coloring
+ [\#8502](https://github.com/vector-im/riot-web/pull/8502)
+
+Changes in [1.0.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.0.0-rc.1) (2019-02-08)
+====================================================================================================
+[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.9...v1.0.0-rc.1)
+
+ * Update from Weblate.
+ [\#8475](https://github.com/vector-im/riot-web/pull/8475)
+ * Add configurable welcome page
+ [\#8466](https://github.com/vector-im/riot-web/pull/8466)
+ * fix app tests after force enabling lazy loading + removing feature flag
+ [\#8464](https://github.com/vector-im/riot-web/pull/8464)
+ * Allow Electron to zoom with CommandOrControl+=
+ [\#8381](https://github.com/vector-im/riot-web/pull/8381)
+ * Hide sign in / create account for logged in users
+ [\#8368](https://github.com/vector-im/riot-web/pull/8368)
+ * Fix home page link target
+ [\#8365](https://github.com/vector-im/riot-web/pull/8365)
+ * Add auth background image and update Riot logo
+ [\#8364](https://github.com/vector-im/riot-web/pull/8364)
+ * New homepage
+ [\#8363](https://github.com/vector-im/riot-web/pull/8363)
+ * Spell homeserver correctly
+ [\#8358](https://github.com/vector-im/riot-web/pull/8358)
+ * Merge redesign into develop
+ [\#8321](https://github.com/vector-im/riot-web/pull/8321)
+ * Disable room directory test because it doesn't work
+ [\#8318](https://github.com/vector-im/riot-web/pull/8318)
+ * Tweak auth overflow on Windows and Linux
+ [\#8307](https://github.com/vector-im/riot-web/pull/8307)
+ * Clean up Custom Server Help dialog
+ [\#8296](https://github.com/vector-im/riot-web/pull/8296)
+ * Cache-bust olm.wasm
+ [\#8283](https://github.com/vector-im/riot-web/pull/8283)
+ * Completely disable other themes for now (#8277)
+ [\#8280](https://github.com/vector-im/riot-web/pull/8280)
+ * Remove support for team servers
+ [\#8271](https://github.com/vector-im/riot-web/pull/8271)
+ * Add target="_blank" to footer links
+ [\#8248](https://github.com/vector-im/riot-web/pull/8248)
+ * Fix device names on desktop
+ [\#8241](https://github.com/vector-im/riot-web/pull/8241)
+ * Fix literal </> in notifications
+ [\#8238](https://github.com/vector-im/riot-web/pull/8238)
+ * Fix registration nextLink on desktop
+ [\#8239](https://github.com/vector-im/riot-web/pull/8239)
+ * Add returns to fetch-develop-deps
+ [\#8233](https://github.com/vector-im/riot-web/pull/8233)
+ * Update electron builder
+ [\#8231](https://github.com/vector-im/riot-web/pull/8231)
+ * Try fetching more branches for PRs
+ [\#8225](https://github.com/vector-im/riot-web/pull/8225)
+ * Use content hashing for font and image URLs
+ [\#8159](https://github.com/vector-im/riot-web/pull/8159)
+ * Develop->Experimental
+ [\#8156](https://github.com/vector-im/riot-web/pull/8156)
+ * Update from Weblate.
+ [\#8150](https://github.com/vector-im/riot-web/pull/8150)
+ * Correct the copying of e-mail addresses in the electron app
+ [\#8124](https://github.com/vector-im/riot-web/pull/8124)
+ * Start documenting keyboard shortcuts
+ [\#7165](https://github.com/vector-im/riot-web/pull/7165)
+ * Update issue templates
+ [\#7948](https://github.com/vector-im/riot-web/pull/7948)
+ * Added new colour var to all themes
+ [\#7927](https://github.com/vector-im/riot-web/pull/7927)
+ * Redesign: apply changes from dharma theme to status theme
+ [\#7541](https://github.com/vector-im/riot-web/pull/7541)
+ * Redesign: ignore setting and always show dharma theme for now
+ [\#7540](https://github.com/vector-im/riot-web/pull/7540)
+
Changes in [0.17.9](https://github.com/vector-im/riot-web/releases/tag/v0.17.9) (2019-01-22)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.9-rc.1...v0.17.9)
diff --git a/README.md b/README.md
index a07e48709c..10fef7360e 100644
--- a/README.md
+++ b/README.md
@@ -1,28 +1,27 @@
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).
Getting Started
===============
-The easiest way to test Riot is to just use the hosted copy at
-https://riot.im/app. The develop branch is continuously deployed by Jenkins at
-https://riot.im/develop for those who like living dangerously.
+The easiest way to test Riot is to just use the hosted copy at https://riot.im/app.
+The `develop` branch is continuously deployed by Jenkins at https://riot.im/develop
+for those who like living dangerously.
To host your own copy of Riot, the quickest bet is to use a pre-built
released version of Riot:
1. Download the latest version from https://github.com/vector-im/riot-web/releases
1. Untar the tarball on your web server
-1. Move (or symlink) the riot-x.x.x directory to an appropriate name
+1. Move (or symlink) the `riot-x.x.x` directory to an appropriate name
1. If desired, copy `config.sample.json` to `config.json` and edit it
as desired. See below for details.
1. Enter the URL into your browser and log into Riot!
Releases are signed by PGP, and can be checked against the public key
-at https://riot.im/packages/keys/riot.asc
+at https://riot.im/packages/keys/riot.asc .
Note that Chrome does not allow microphone or webcam access for sites served
over http (except localhost), so for working VoIP you will need to serve Riot
@@ -69,16 +68,22 @@ to build.
is at least v5.x).
1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`.
1. Switch to the riot-web directory: `cd riot-web`.
+1. Install the prerequisites: `npm install`.
1. If you're using the `develop` branch then it is recommended to set up a proper
development environment ("Setting up a dev environment" below) however one can
install the develop versions of the dependencies instead:
- ```
+ ```bash
scripts/fetch-develop.deps.sh
```
+ Note that running `npm install` will undo the symlinks put in place by
+ `scripts/fetch-develop.deps.sh` so you should run `npm install` first, or
+ run `npm link matrix-js-sdk` and `npm link matrix-react-sdk` after running
+ `npm install`.
+
Whenever you git pull on riot-web you will also probably need to force an update
to these dependencies - the simplest way is to re-run the script, but you can also
manually update and rebuild them:
- ```
+ ```bash
cd matrix-js-sdk
git pull
npm install # re-run to pull in any new dependencies
@@ -94,18 +99,16 @@ to build.
Or just use https://riot.im/develop - the continuous integration release of the
develop branch. (Note that we don't reference the develop versions in git directly
due to https://github.com/npm/npm/issues/3055.)
-1. Install the prerequisites: `npm install`.
1. Configure the app by copying `config.sample.json` to `config.json` and
modifying it (see below for details).
1. `npm run dist` to build a tarball to deploy. Untaring this file will give
a version-specific directory containing all the files that need to go on your
web server.
-Note that `npm run dist` is not supported on Windows, so Windows users can run `npm
-run build`, which will build all the necessary files into the `webapp`
-directory. The version of Riot will not appear in Settings without
-using the dist script. You can then mount the `webapp` directory on your
-webserver to actually serve up the app, which is entirely static content.
+Note that `npm run dist` is not supported on Windows, so Windows users can run `npm run build`,
+which will build all the necessary files into the `webapp` directory. The version of Riot
+will not appear in Settings without using the dist script. You can then mount the
+`webapp` directory on your webserver to actually serve up the app, which is entirely static content.
config.json
===========
@@ -129,8 +132,13 @@ For a good example, see https://riot.im/develop/config.json
release to release.
1. `brand`: String to pass to your homeserver when configuring email notifications, to let the
homeserver know what email template to use when talking to you.
+1. `branding`: Configures various branding and logo details, such as:
+ 1. `welcomeBackgroundUrl`: An image to use as a wallpaper outside the app
+ during authentication flows
+ 1. `authHeaderLogoUrl`: An logo image that is shown in the header during
+ authentication flows
1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations
- server is not Riot and normally not your Home Server either. The integration server settings
+ server is not Riot and normally not your homeserver either. The integration server settings
may be left blank to disable integrations.
1. `integrations_rest_url`: URL to the REST interface for the integrations server.
1. `integrations_widgets_urls`: list of URLs to the REST interface for the widget integrations server.
@@ -157,9 +165,14 @@ For a good example, see https://riot.im/develop/config.json
1. `whitelistedHSUrls`: a list of HS URLs to not redact from the analytics
1. `whitelistedISUrls`: a list of IS URLs to not redact from the analytics
1. `siteId`: The Piwik Site ID to use when sending analytics to the Piwik server configured above
-1. `teamServerConfig`, `teamTokenMap`, `referralBaseUrl`: an obsolete precursor to communities
- with referral tracking; please ignore it.
1. `welcomeUserId`: the user ID of a bot to invite whenever users register that can give them a tour
+1. `embeddedPages`: Configures the pages displayed in portions of Riot that
+ embed static files, such as:
+ 1. `welcomeUrl`: Initial content shown on the outside of the app when not
+ logged in. Defaults to `welcome.html` supplied with Riot.
+ 1. `homeUrl`: Content shown on the inside of the app when a specific room is
+ not selected. By default, no home page is configured. If one is set, a
+ button to access it will be shown in the top left menu.
Note that `index.html` also has an og:image meta tag that is set to an image
@@ -185,15 +198,15 @@ To run as a desktop app:
`npm run build` instead of `npm run dist` (since we don't need the tarball).
2. Install electron and run it:
- ```
+ ```bash
npm install electron
npm run electron
```
To build packages, use electron-builder. This is configured to output:
- * dmg + zip for macOS
- * exe + nupkg for Windows
- * deb for Linux
+ * `dmg` + `zip` for macOS
+ * `exe` + `nupkg` for Windows
+ * `deb` for Linux
But this can be customised by editing the `build` section of package.json
as per https://github.com/electron-userland/electron-builder/wiki/Options
@@ -201,7 +214,7 @@ See https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Bu
for dependencies required for building packages for various platforms.
The only platform that can build packages for all three platforms is macOS:
-```
+```bash
brew install wine --without-x11
brew install mono
brew install gnu-tar
@@ -215,7 +228,7 @@ for 64 bit Linux:
1. Follow the instructions in 'Building From Source' above
2. `node_modules/.bin/build -l --x64`
-All electron packages go into `electron/dist/`
+All electron packages go into `electron_app/dist/`
Many thanks to @aviraldg for the initial work on the electron integration.
@@ -223,7 +236,7 @@ Other options for running as a desktop app:
* https://github.com/krisak/vector-electron-desktop
* @asdf:matrix.org points out that you can use nativefier and it just works(tm)
-```
+```bash
sudo npm install nativefier -g
nativefier https://riot.im/app/
```
@@ -231,13 +244,13 @@ nativefier https://riot.im/app/
Development
===========
-Before attempting to develop on Riot you **must** read the developer guide
-for `matrix-react-sdk` at https://github.com/matrix-org/matrix-react-sdk, which
+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.
-You should also familiarise yourself with the "Here be Dragons" guide to the
-tame & not-so-tame dragons (gotchas) which exist in the codebase:
-https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM
+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.
The idea of Riot is to be a relatively lightweight "skin" of customisations on
top of the underlying `matrix-react-sdk`. `matrix-react-sdk` provides both the
@@ -262,46 +275,57 @@ having to manually rebuild each time.
First clone and build `matrix-js-sdk`:
-1. `git clone https://github.com/matrix-org/matrix-js-sdk.git`
-1. `pushd matrix-js-sdk`
-1. `git checkout develop`
-1. `npm install`
-1. `npm install source-map-loader` # because webpack is made of fail (https://github.com/webpack/webpack/issues/1472)
-1. `popd`
+``` bash
+git clone https://github.com/matrix-org/matrix-js-sdk.git
+pushd matrix-js-sdk
+git checkout develop
+npm install
+npm install source-map-loader # because webpack is made of fail
+# see https://github.com/webpack/webpack/issues/1472
+popd
+```
Then similarly with `matrix-react-sdk`:
-1. `git clone https://github.com/matrix-org/matrix-react-sdk.git`
-1. `pushd matrix-react-sdk`
-1. `git checkout develop`
-1. `npm link ../matrix-js-sdk`
-1. `popd`
+```bash
+git clone https://github.com/matrix-org/matrix-react-sdk.git
+pushd matrix-react-sdk
+git checkout develop
+npm link ../matrix-js-sdk
+popd
+```
Finally, build and start Riot itself:
-1. `git clone https://github.com/vector-im/riot-web.git`
-1. `cd riot-web`
-1. `git checkout develop`
-1. `npm install`
-1. `npm link ../matrix-js-sdk`
-1. `npm link ../matrix-react-sdk`
-1. `npm start`
-1. Wait a few seconds for the initial build to finish; you should see something like:
- ```
- Hash: b0af76309dd56d7275c8
- Version: webpack 1.12.14
- Time: 14533ms
- Asset Size Chunks Chunk Names
- bundle.js 4.2 MB 0 [emitted] main
- bundle.css 91.5 kB 0 [emitted] main
- bundle.js.map 5.29 MB 0 [emitted] main
- bundle.css.map 116 kB 0 [emitted] main
- + 1013 hidden modules
- ```
+```bash
+git clone https://github.com/vector-im/riot-web.git
+cd riot-web
+git checkout develop
+npm install
+npm link ../matrix-js-sdk
+npm link ../matrix-react-sdk
+npm start
+```
+
+Wait a few seconds for the initial build to finish; you should see something like:
+```
+Hash: b0af76309dd56d7275c8
+Version: webpack 1.12.14
+Time: 14533ms
+ Asset Size Chunks Chunk Names
+ bundle.js 4.2 MB 0 [emitted] main
+ bundle.css 91.5 kB 0 [emitted] main
+ bundle.js.map 5.29 MB 0 [emitted] main
+bundle.css.map 116 kB 0 [emitted] main
+ + 1013 hidden modules
+```
Remember, the command will not terminate since it runs the web server
and rebuilds source files when they change. This development server also
disables caching, so do NOT use it in production.
-1. Open http://127.0.0.1:8080/ in your browser to see your newly built Riot.
+
+Open http://127.0.0.1:8080/ in your browser to see your newly built Riot.
+
+___
When you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be
automatically picked up by webpack and built.
diff --git a/config.sample.json b/config.sample.json
index a50eaf7d26..4208438d53 100644
--- a/config.sample.json
+++ b/config.sample.json
@@ -15,7 +15,6 @@
"feature_pinning": "labs"
},
"default_federate": true,
- "welcomePageUrl": "home.html",
"default_theme": "light",
"roomDirectory": {
"servers": [
diff --git a/electron_app/build/icon.icns b/electron_app/build/icon.icns
index d74e97e738..eba95ecf4f 100644
Binary files a/electron_app/build/icon.icns and b/electron_app/build/icon.icns differ
diff --git a/electron_app/build/icon.ico b/electron_app/build/icon.ico
index 8f8ff94eea..1305b7dd9a 100644
Binary files a/electron_app/build/icon.ico and b/electron_app/build/icon.ico differ
diff --git a/electron_app/build/icons/128x128.png b/electron_app/build/icons/128x128.png
index 54149b1ae2..9c52d6695b 100644
Binary files a/electron_app/build/icons/128x128.png and b/electron_app/build/icons/128x128.png differ
diff --git a/electron_app/build/icons/16x16.png b/electron_app/build/icons/16x16.png
index def4ec5eee..7435c1b5be 100644
Binary files a/electron_app/build/icons/16x16.png and b/electron_app/build/icons/16x16.png differ
diff --git a/electron_app/build/icons/24x24.png b/electron_app/build/icons/24x24.png
index 6fe144ea13..f484995e72 100644
Binary files a/electron_app/build/icons/24x24.png and b/electron_app/build/icons/24x24.png differ
diff --git a/electron_app/build/icons/256x256.png b/electron_app/build/icons/256x256.png
index 563e6d5edc..f52d02c88b 100644
Binary files a/electron_app/build/icons/256x256.png and b/electron_app/build/icons/256x256.png differ
diff --git a/electron_app/build/icons/48x48.png b/electron_app/build/icons/48x48.png
index 9cd225d402..fcbcbc495f 100644
Binary files a/electron_app/build/icons/48x48.png and b/electron_app/build/icons/48x48.png differ
diff --git a/electron_app/build/icons/512x512.png b/electron_app/build/icons/512x512.png
index 328a723c97..801e1504db 100644
Binary files a/electron_app/build/icons/512x512.png and b/electron_app/build/icons/512x512.png differ
diff --git a/electron_app/build/icons/64x64.png b/electron_app/build/icons/64x64.png
index 20a7a6cff3..4a86e56efe 100644
Binary files a/electron_app/build/icons/64x64.png and b/electron_app/build/icons/64x64.png differ
diff --git a/electron_app/build/icons/96x96.png b/electron_app/build/icons/96x96.png
index eb48c2c91e..8a998989fe 100644
Binary files a/electron_app/build/icons/96x96.png and b/electron_app/build/icons/96x96.png differ
diff --git a/electron_app/img/riot.ico b/electron_app/img/riot.ico
index 8f8ff94eea..1305b7dd9a 100644
Binary files a/electron_app/img/riot.ico and b/electron_app/img/riot.ico differ
diff --git a/electron_app/img/riot.png b/electron_app/img/riot.png
index 85e9f8ca74..aacfc1a8a5 100644
Binary files a/electron_app/img/riot.png and b/electron_app/img/riot.png differ
diff --git a/electron_app/package.json b/electron_app/package.json
index 8d88140551..63250c9ae6 100644
--- a/electron_app/package.json
+++ b/electron_app/package.json
@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
- "version": "0.17.9",
+ "version": "1.0.0",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"dependencies": {
diff --git a/electron_app/src/vectormenu.js b/electron_app/src/vectormenu.js
index 14f91a5268..ce35cf7c83 100644
--- a/electron_app/src/vectormenu.js
+++ b/electron_app/src/vectormenu.js
@@ -37,7 +37,7 @@ const template = [
submenu: [
{ type: 'separator' },
{ role: 'resetzoom' },
- { role: 'zoomin' },
+ { role: 'zoomin', accelerator: 'CommandOrControl+=' },
{ role: 'zoomout' },
{ type: 'separator' },
{ role: 'togglefullscreen' },
diff --git a/electron_app/src/webcontents-handler.js b/electron_app/src/webcontents-handler.js
index d566de515a..152361696e 100644
--- a/electron_app/src/webcontents-handler.js
+++ b/electron_app/src/webcontents-handler.js
@@ -1,10 +1,12 @@
const {clipboard, nativeImage, Menu, MenuItem, shell} = require('electron');
const url = require('url');
+const MAILTO_PREFIX = "mailto:";
+
const PERMITTED_URL_SCHEMES = [
'http:',
'https:',
- 'mailto:',
+ MAILTO_PREFIX,
];
function safeOpenURL(target) {
@@ -47,7 +49,7 @@ function onLinkContextMenu(ev, params) {
if (params.mediaType && params.mediaType === 'image' && !url.startsWith('file://')) {
popupMenu.append(new MenuItem({
- label: 'Copy Image',
+ label: 'Copy image',
click() {
if (url.startsWith('data:')) {
clipboard.writeImage(nativeImage.createFromDataURL(url));
@@ -58,14 +60,24 @@ function onLinkContextMenu(ev, params) {
}));
}
- // No point offerring to copy a blob: URL either
+ // No point offering to copy a blob: URL either
if (!url.startsWith('blob:')) {
- popupMenu.append(new MenuItem({
- label: 'Copy Link Address',
- click() {
- clipboard.writeText(url);
- },
- }));
+ // Special-case e-mail URLs to strip the `mailto:` like modern browsers do
+ if (url.startsWith(MAILTO_PREFIX)) {
+ popupMenu.append(new MenuItem({
+ label: 'Copy email address',
+ click() {
+ clipboard.writeText(url.substr(MAILTO_PREFIX.length));
+ },
+ }));
+ } else {
+ popupMenu.append(new MenuItem({
+ label: 'Copy link address',
+ click() {
+ clipboard.writeText(url);
+ },
+ }));
+ }
}
// popup() requires an options object even for no options
popupMenu.popup({});
@@ -117,6 +129,18 @@ 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('context-menu', function(ev, params) {
diff --git a/karma.conf.js b/karma.conf.js
index d982aa2421..ae666a455b 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -78,7 +78,7 @@ module.exports = function (config) {
watched: false, included: false, served: true, nocache: false,
},
{
- pattern: 'res/themes/**',
+ pattern: 'res/**',
watched: false, included: false, served: true, nocache: false,
},
],
@@ -87,6 +87,8 @@ module.exports = function (config) {
// redirect img links to the karma server. See above.
"/img/": "/base/node_modules/matrix-react-sdk/res/img/",
"/themes/": "/base/res/themes/",
+ "/welcome.html": "/base/res/welcome.html",
+ "/welcome/": "/base/res/welcome/",
},
// preprocess matching files before serving them to the browser
diff --git a/package-lock.json b/package-lock.json
index ab504339e3..2bacb6e259 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "riot-web",
- "version": "0.17.3",
+ "version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -11,9 +11,9 @@
"dev": true
},
"7zip-bin": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.0.2.tgz",
- "integrity": "sha512-XtGk+IF57pr852UK1AhQJXqmm1WmSgS5uISL+LPs0z/iAxXouMvdlLJrHPeukP6gd7yR2rDTMSMkHNODgwIq7A==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.1.0.tgz",
+ "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==",
"dev": true
},
"7zip-bin-linux": {
@@ -114,9 +114,9 @@
}
},
"@babel/runtime": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz",
- "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz",
+ "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==",
"requires": {
"regenerator-runtime": "^0.12.0"
},
@@ -591,51 +591,97 @@
}
},
"app-builder-bin": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.1.4.tgz",
- "integrity": "sha512-i5ZfZtnAQqVZXpFYpvkQK/V0p9RwJjCW7X3CRcyDrnR3p1mQRoRTMSfPrtGTo1ens7kTfzk2S2i0QXq+gEplLg==",
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.3.tgz",
+ "integrity": "sha512-JL8C41e6yGIchFsHP/q15aGNedAaUakLhkV6ER0Yxafx08sRnlDnlkAkEIKjX7edg/4i7swpGa6CBv1zX9GgCA==",
"dev": true
},
"app-builder-lib": {
- "version": "20.29.0",
- "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.29.0.tgz",
- "integrity": "sha512-pXIHWNdeQ+jqI5xv4L274YZo2AOSotXsH9/Q83+qgiAa62F/PIWgcd0LWWa//CD929+FrRFEgBq9sagh9uUTHw==",
+ "version": "20.38.5",
+ "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.38.5.tgz",
+ "integrity": "sha512-vVgM9d9twwlhr+8vNAJOAD9dyVBRk7reuVa1BE1OmvaHb1M+fS8KpvcDKVdBqX9KDHy7zSc57mnIcHgax4/XMA==",
"dev": true,
"requires": {
- "7zip-bin": "~4.0.2",
- "app-builder-bin": "2.1.4",
+ "7zip-bin": "~4.1.0",
+ "app-builder-bin": "2.6.3",
"async-exit-hook": "^2.0.1",
- "bluebird-lst": "^1.0.5",
- "builder-util": "7.0.0",
- "builder-util-runtime": "5.0.0",
+ "bluebird-lst": "^1.0.6",
+ "builder-util": "9.6.2",
+ "builder-util-runtime": "8.1.1",
"chromium-pickle-js": "^0.2.0",
- "debug": "^4.1.0",
+ "debug": "^4.1.1",
"ejs": "^2.6.1",
"electron-osx-sign": "0.4.11",
- "electron-publish": "20.29.0",
- "fs-extra-p": "^4.6.1",
+ "electron-publish": "20.38.5",
+ "fs-extra-p": "^7.0.0",
"hosted-git-info": "^2.7.1",
- "is-ci": "^1.2.1",
- "isbinaryfile": "^3.0.3",
- "js-yaml": "^3.12.0",
+ "is-ci": "^2.0.0",
+ "isbinaryfile": "^4.0.0",
+ "js-yaml": "^3.12.1",
"lazy-val": "^1.0.3",
"minimatch": "^3.0.4",
"normalize-package-data": "^2.4.0",
"plist": "^3.0.1",
- "read-config-file": "3.1.2",
+ "read-config-file": "3.2.1",
"sanitize-filename": "^1.6.1",
"semver": "^5.6.0",
- "temp-file": "^3.1.3"
+ "temp-file": "^3.3.2"
},
"dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "dev": true
+ },
"debug": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
- "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
+ },
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
+ "isbinaryfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.0.tgz",
+ "integrity": "sha512-RBtmso6l2mCaEsUvXngMTIjg3oheXo0MgYzzfT6sk44RYggPnm9fT+cQJAmzRnJIxPHXg9FZglqDJGW28dvcqA==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
+ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
}
}
},
@@ -1491,8 +1537,7 @@
"babel-plugin-syntax-dynamic-import": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
- "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=",
- "dev": true
+ "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo="
},
"babel-plugin-syntax-exponentiation-operator": {
"version": "6.13.0",
@@ -2193,6 +2238,14 @@
}
}
},
+ "base-x": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.5.tgz",
+ "integrity": "sha512-C3picSgzPSLE+jW3tcBzJoGwitOtazb5B+5YmAxZm2ybmTi9LNgAtDO/jjVEBZwHoXmDBZ9m/IELj3elJVRBcA==",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
"base64-arraybuffer": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
@@ -2284,12 +2337,12 @@
"integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg=="
},
"bluebird-lst": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.5.tgz",
- "integrity": "sha512-Ey0bDNys5qpYPhZ/oQ9vOEvD0TYQDTILMXWP2iGfvMg7rSDde+oV4aQQgqRH+CvBFNz2BSDQnPGMUl6LKBUUQA==",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.6.tgz",
+ "integrity": "sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ==",
"dev": true,
"requires": {
- "bluebird": "^3.5.1"
+ "bluebird": "^3.5.2"
}
},
"bluebird-lst-c": {
@@ -2553,6 +2606,14 @@
"electron-to-chromium": "^1.2.7"
}
},
+ "bs58": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz",
+ "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=",
+ "requires": {
+ "base-x": "^3.0.2"
+ }
+ },
"buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz",
@@ -2610,64 +2671,113 @@
"dev": true
},
"builder-util": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-7.0.0.tgz",
- "integrity": "sha512-GnszunK4uX1F8XP4U01m47VME0UQo97wM1i8h77j6+7V0xMz8faL9BHdv2O8/iOZ8HjfKSRJ+1v7RHohF6H0lA==",
+ "version": "9.6.2",
+ "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.6.2.tgz",
+ "integrity": "sha512-cWl/0/Q851lesMmXp1IjreeAX1QAWA9e+iU2IT61oh+CvMYJnDwao2m9ZCHammdw2zllrwWu4fOC3gvsb/yOCw==",
"dev": true,
"requires": {
- "7zip-bin": "~4.0.2",
- "app-builder-bin": "2.1.4",
- "bluebird-lst": "^1.0.5",
- "builder-util-runtime": "^5.0.0",
- "chalk": "^2.4.1",
- "debug": "^4.1.0",
- "fs-extra-p": "^4.6.1",
- "is-ci": "^1.2.1",
- "js-yaml": "^3.12.0",
- "lazy-val": "^1.0.3",
- "semver": "^5.6.0",
- "source-map-support": "^0.5.9",
+ "7zip-bin": "~4.1.0",
+ "app-builder-bin": "2.6.3",
+ "bluebird-lst": "^1.0.6",
+ "builder-util-runtime": "^8.1.1",
+ "chalk": "^2.4.2",
+ "debug": "^4.1.1",
+ "fs-extra-p": "^7.0.0",
+ "is-ci": "^2.0.0",
+ "js-yaml": "^3.12.1",
+ "source-map-support": "^0.5.10",
"stat-mode": "^0.2.2",
- "temp-file": "^3.1.3"
+ "temp-file": "^3.3.2"
},
"dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "dev": true
+ },
"debug": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
- "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
+ "js-yaml": {
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
+ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"source-map-support": {
- "version": "0.5.9",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
- "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
+ "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
}
}
},
"builder-util-runtime": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-5.0.0.tgz",
- "integrity": "sha512-mTyLqmzdPzavKQNAfxcGu6kqaDiPCtFKJG+nNO9SYfL6lY7VgTUW+45iXhowc5ElmPj0eSTDaIGlScxVMwFUEA==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.1.1.tgz",
+ "integrity": "sha512-+ieS4PMB33vVE2S3ZNWBEQJ1zKmAs/agrBdh7XadE1lKLjrH4aXYuOh9OOGdxqIRldhlhNBaF+yKMMEFOdNVig==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.5",
- "debug": "^4.1.0",
- "fs-extra-p": "^4.6.1",
+ "bluebird-lst": "^1.0.6",
+ "debug": "^4.1.1",
+ "fs-extra-p": "^7.0.0",
"sax": "^1.2.4"
},
"dependencies": {
"debug": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
- "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
@@ -3290,11 +3400,6 @@
"wrap-ansi": "^2.0.0"
}
},
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
- },
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -4098,6 +4203,105 @@
"integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
"dev": true
},
+ "css-loader": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.0.tgz",
+ "integrity": "sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.0.0",
+ "loader-utils": "^1.2.1",
+ "lodash": "^4.17.11",
+ "postcss": "^7.0.6",
+ "postcss-modules-extract-imports": "^2.0.0",
+ "postcss-modules-local-by-default": "^2.0.3",
+ "postcss-modules-scope": "^2.0.0",
+ "postcss-modules-values": "^2.0.0",
+ "postcss-value-parser": "^3.3.0",
+ "schema-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^2.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "postcss": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz",
+ "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"css-select": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
@@ -4122,12 +4326,42 @@
}
}
},
+ "css-selector-tokenizer": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
+ "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^0.1.0",
+ "fastparse": "^1.1.1",
+ "regexpu-core": "^1.0.0"
+ },
+ "dependencies": {
+ "regexpu-core": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
+ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.2.1",
+ "regjsgen": "^0.2.0",
+ "regjsparser": "^0.1.4"
+ }
+ }
+ }
+ },
"css-what": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz",
"integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==",
"dev": true
},
+ "cssesc": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
+ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
+ "dev": true
+ },
"custom-event": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
@@ -4360,19 +4594,46 @@
"integrity": "sha1-zl15f5fib4vnvv9T99xA4cGp7Ew="
},
"dmg-builder": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.0.0.tgz",
- "integrity": "sha512-nGeCoIctKP48QhohyQ6Uxx754XKyfVa5nx8YK6STIxTXoGTDWR/dwy8m4iCkM77//sd2wMdP9KYsUDuPxtbpLA==",
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.5.4.tgz",
+ "integrity": "sha512-EaEkF8weXez3iAwgYffjcYfumauUh5x+BggMgn/IuihNIA5/WfzRAUR4wMq9aII2zwArlw+rIrX6ZHKbmtkQmA==",
"dev": true,
"requires": {
- "app-builder-lib": "~20.29.0",
- "bluebird-lst": "^1.0.5",
- "builder-util": "~7.0.0",
- "fs-extra-p": "^4.6.1",
+ "app-builder-lib": "~20.38.5",
+ "bluebird-lst": "^1.0.6",
+ "builder-util": "~9.6.2",
+ "fs-extra-p": "^7.0.0",
"iconv-lite": "^0.4.24",
- "js-yaml": "^3.12.0",
+ "js-yaml": "^3.12.1",
"parse-color": "^1.0.0",
"sanitize-filename": "^1.6.1"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "js-yaml": {
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
+ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ }
}
},
"dns-equal": {
@@ -4484,9 +4745,9 @@
}
},
"dotenv": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz",
- "integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
+ "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==",
"dev": true
},
"dotenv-expand": {
@@ -4568,24 +4829,24 @@
"dev": true
},
"electron-builder": {
- "version": "20.29.0",
- "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.29.0.tgz",
- "integrity": "sha512-i1v5dD0u8tu5rq8Nq3DohEj/Gm7WKSysvlbeb5oCvmJ0YslbsQm/Iq6SGLTmJbXlYp3hoL3djuBaWC+oM2hagw==",
+ "version": "20.38.5",
+ "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.38.5.tgz",
+ "integrity": "sha512-p88IDHhH2J4hA6KwRBJY+OfVZuFtFIShY3Uh/TwYAfbX0v1RhKZytuGdO8sty2zcWxDYX74xDBv+X9oN6qEIRQ==",
"dev": true,
"requires": {
- "app-builder-lib": "20.29.0",
- "bluebird-lst": "^1.0.5",
- "builder-util": "7.0.0",
- "builder-util-runtime": "5.0.0",
- "chalk": "^2.4.1",
- "dmg-builder": "6.0.0",
- "fs-extra-p": "^4.6.1",
- "is-ci": "^1.2.1",
+ "app-builder-lib": "20.38.5",
+ "bluebird-lst": "^1.0.6",
+ "builder-util": "9.6.2",
+ "builder-util-runtime": "8.1.1",
+ "chalk": "^2.4.2",
+ "dmg-builder": "6.5.4",
+ "fs-extra-p": "^7.0.0",
+ "is-ci": "^2.0.0",
"lazy-val": "^1.0.3",
- "read-config-file": "3.1.2",
+ "read-config-file": "3.2.1",
"sanitize-filename": "^1.6.1",
"update-notifier": "^2.5.0",
- "yargs": "^12.0.2"
+ "yargs": "^12.0.5"
},
"dependencies": {
"ansi-regex": {
@@ -4595,9 +4856,26 @@
"dev": true
},
"camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
"dev": true
},
"cliui": {
@@ -4611,13 +4889,19 @@
"wrap-ansi": "^2.0.0"
}
},
- "decamelize": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
- "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"dev": true,
"requires": {
- "xregexp": "4.0.0"
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
}
},
"find-up": {
@@ -4629,12 +4913,30 @@
"locate-path": "^3.0.0"
}
},
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
"invert-kv": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
"dev": true
},
+ "is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^2.0.0"
+ }
+ },
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
@@ -4661,20 +4963,20 @@
}
},
"os-locale": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
- "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
"dev": true,
"requires": {
- "execa": "^0.10.0",
+ "execa": "^1.0.0",
"lcid": "^2.0.0",
"mem": "^4.0.0"
}
},
"p-limit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
- "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
+ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
"dev": true,
"requires": {
"p-try": "^2.0.0"
@@ -4701,6 +5003,16 @@
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
@@ -4727,13 +5039,13 @@
"dev": true
},
"yargs": {
- "version": "12.0.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
- "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
"dev": true,
"requires": {
"cliui": "^4.0.0",
- "decamelize": "^2.0.0",
+ "decamelize": "^1.2.0",
"find-up": "^3.0.0",
"get-caller-file": "^1.0.1",
"os-locale": "^3.0.0",
@@ -4743,16 +5055,17 @@
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1 || ^4.0.0",
- "yargs-parser": "^10.1.0"
+ "yargs-parser": "^11.1.1"
}
},
"yargs-parser": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
- "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
"dev": true,
"requires": {
- "camelcase": "^4.1.0"
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
}
}
}
@@ -4813,7 +5126,7 @@
},
"ms": {
"version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
"integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
"dev": true
}
@@ -4951,7 +5264,7 @@
},
"ms": {
"version": "0.7.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "resolved": "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
"integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
"dev": true
},
@@ -5007,18 +5320,37 @@
}
},
"electron-publish": {
- "version": "20.29.0",
- "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.29.0.tgz",
- "integrity": "sha512-Kc5u5YaJLcGWPrp3bFk8NdrYk5gNVG4lZqbAIZnYNPuOLMCNgUk4UqrONO6iuAE6x/vWOoovszf1gGIT7G01UA==",
+ "version": "20.38.5",
+ "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.38.5.tgz",
+ "integrity": "sha512-EhdPm6t0nKDfa0r3KjV1kSFcz03VrzgJRv7v5nHkkpQZB6OSmDNlHq7k66NBwQhPK3i4CK+uvehljZAP28vbCA==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.5",
- "builder-util": "~7.0.0",
- "builder-util-runtime": "^5.0.0",
- "chalk": "^2.4.1",
- "fs-extra-p": "^4.6.1",
+ "bluebird-lst": "^1.0.6",
+ "builder-util": "~9.6.2",
+ "builder-util-runtime": "^8.1.1",
+ "chalk": "^2.4.2",
+ "fs-extra-p": "^7.0.0",
"lazy-val": "^1.0.3",
- "mime": "^2.3.1"
+ "mime": "^2.4.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "mime": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
+ "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+ "dev": true
+ }
}
},
"electron-to-chromium": {
@@ -5472,7 +5804,7 @@
},
"events": {
"version": "1.1.1",
- "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
"dev": true
},
@@ -5744,11 +6076,6 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
- "fast-extend": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-0.0.2.tgz",
- "integrity": "sha1-9exCz0C5Rg9SGmOH37Ut7u1nHb0="
- },
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
@@ -5760,6 +6087,12 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
+ "fastparse": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
+ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
+ "dev": true
+ },
"favico.js": {
"version": "0.3.10",
"resolved": "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz",
@@ -5827,9 +6160,32 @@
"object-assign": "^4.0.1"
}
},
+ "file-loader": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz",
+ "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.0.2",
+ "schema-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
"file-saver": {
"version": "1.3.8",
- "resolved": "http://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz",
+ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-1.3.8.tgz",
"integrity": "sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg=="
},
"filename-regex": {
@@ -5992,7 +6348,7 @@
},
"fbjs": {
"version": "0.1.0-alpha.7",
- "resolved": "http://registry.npmjs.org/fbjs/-/fbjs-0.1.0-alpha.7.tgz",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.1.0-alpha.7.tgz",
"integrity": "sha1-rUMIuPIy+zxzYDNJ6nJdHpw5Mjw=",
"requires": {
"core-js": "^1.0.0",
@@ -6002,7 +6358,7 @@
},
"whatwg-fetch": {
"version": "0.9.0",
- "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz",
"integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA="
}
}
@@ -6167,19 +6523,19 @@
}
},
"fs-extra-p": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-4.6.1.tgz",
- "integrity": "sha512-IsTMbUS0svZKZTvqF4vDS9c/L7Mw9n8nZQWWeSzAGacOSe+8CzowhUN0tdZEZFIJNP5HC7L9j3MMikz/G4hDeQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.0.tgz",
+ "integrity": "sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.5",
- "fs-extra": "^6.0.1"
+ "bluebird-lst": "^1.0.6",
+ "fs-extra": "^7.0.0"
},
"dependencies": {
"fs-extra": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
- "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -6189,11 +6545,6 @@
}
}
},
- "fs-monkey": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz",
- "integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw=="
- },
"fs-readdir-recursive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
@@ -6921,7 +7272,7 @@
},
"got": {
"version": "6.7.1",
- "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
@@ -6961,34 +7312,24 @@
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
- "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"requires": {
- "ajv": "^5.3.0",
+ "ajv": "^6.5.5",
"har-schema": "^2.0.0"
},
"dependencies": {
"ajv": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz",
+ "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==",
"requires": {
- "co": "^4.6.0",
- "fast-deep-equal": "^1.0.0",
+ "fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.3.0"
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
}
- },
- "fast-deep-equal": {
- "version": "1.1.0",
- "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
- },
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
}
}
},
@@ -7139,9 +7480,9 @@
}
},
"hoist-non-react-statics": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.0.1.tgz",
- "integrity": "sha512-1kXwPsOi0OGQIZNVMPvgWJ9tSnGMiMfJdihqEzrPEXlHOBh9AAHXX/QYmAJTXztnz/K+PQ8ryCb4eGaN6HlGbQ==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.2.1.tgz",
+ "integrity": "sha512-TFsu3TV3YLY+zFTZDrN8L2DTFanObwmBLpWvJs1qfUuEQ5bTAdFcwfx2T/bsCXfM9QHSLvjfP+nihEl0yvozxw==",
"requires": {
"react-is": "^16.3.2"
}
@@ -7632,6 +7973,65 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
+ "icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+ "dev": true
+ },
+ "icss-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.0.0.tgz",
+ "integrity": "sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz",
+ "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"ieee754": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
@@ -8510,7 +8910,7 @@
"dependencies": {
"lodash": {
"version": "3.10.1",
- "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
"dev": true
},
@@ -8683,27 +9083,27 @@
},
"dependencies": {
"react": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/react/-/react-16.6.0.tgz",
- "integrity": "sha512-zJPnx/jKtuOEXCbQ9BKaxDMxR0001/hzxXwYxG8septeyYGfsgAei6NgfbVgOhbY1WOP2o3VPs/E9HaN+9hV3Q==",
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.7.0.tgz",
+ "integrity": "sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==",
"optional": true,
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
- "scheduler": "^0.10.0"
+ "scheduler": "^0.12.0"
}
},
"react-dom": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.6.0.tgz",
- "integrity": "sha512-Stm2D9dXEUUAQdvpvhvFj/DEXwC2PAL/RwEMhoN4dvvD2ikTlJegEXf97xryg88VIAU22ZAP7n842l+9BTz6+w==",
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz",
+ "integrity": "sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==",
"optional": true,
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
- "scheduler": "^0.10.0"
+ "scheduler": "^0.12.0"
}
}
}
@@ -8910,16 +9310,17 @@
"dev": true
},
"matrix-js-sdk": {
- "version": "github:matrix-org/matrix-js-sdk#604af1ac8c180dcdddb761485eb03fad382bd06d",
- "from": "github:matrix-org/matrix-js-sdk#develop",
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.14.2.tgz",
+ "integrity": "sha512-6Wvzv3fKjlmNz/tqGlvBy2RouqyK8VfR2elXaJlFpPnSOiE6+CNeF8vJZC7Ch4e+/W3LDnpG6IIVZ55iMEULyg==",
"requires": {
"another-json": "^0.2.0",
"babel-runtime": "^6.26.0",
"bluebird": "^3.5.0",
"browser-request": "^0.3.3",
+ "bs58": "^4.0.1",
"content-type": "^1.0.2",
"loglevel": "1.6.1",
- "memfs": "^2.10.1",
"qs": "^6.5.2",
"request": "^2.88.0"
}
@@ -8935,9 +9336,11 @@
}
},
"matrix-react-sdk": {
- "version": "github:matrix-org/matrix-react-sdk#0bd1d6b778f9fc89e0f7e75557f8e7acf576be92",
- "from": "github:matrix-org/matrix-react-sdk#develop",
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/matrix-react-sdk/-/matrix-react-sdk-0.14.7.tgz",
+ "integrity": "sha512-CbgX/OxdjvRKQ8TPzeJH0RD3kAMPk8lFxzmfgSzR9gWQ0bdXeBT6iadWQLe9dujjBviU1rMDl+Wy8NYgd8FmdQ==",
"requires": {
+ "babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-runtime": "^6.26.0",
"bluebird": "^3.5.0",
"blueimp-canvas-to-blob": "^3.5.0",
@@ -8959,7 +9362,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
- "memfs": "^2.10.1",
+ "matrix-js-sdk": "0.14.2",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
@@ -8976,27 +9379,14 @@
"slate-react": "^0.18.10",
"text-encoding-utf-8": "^1.0.1",
"url": "^0.11.0",
- "whatwg-fetch": "^1.1.1"
+ "whatwg-fetch": "^1.1.1",
+ "zxcvbn": "^4.4.2"
},
"dependencies": {
"gemini-scrollbar": {
"version": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b",
"from": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b"
},
- "matrix-js-sdk": {
- "version": "github:matrix-org/matrix-js-sdk#604af1ac8c180dcdddb761485eb03fad382bd06d",
- "from": "github:matrix-org/matrix-js-sdk#604af1ac8c180dcdddb761485eb03fad382bd06d",
- "requires": {
- "another-json": "^0.2.0",
- "babel-runtime": "^6.26.0",
- "bluebird": "^3.5.0",
- "browser-request": "^0.3.3",
- "content-type": "^1.0.2",
- "loglevel": "1.6.1",
- "memfs": "^2.10.1",
- "request": "^2.88.0"
- }
- },
"react-gemini-scrollbar": {
"version": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9",
"from": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9",
@@ -9023,7 +9413,7 @@
},
"whatwg-fetch": {
"version": "1.1.1",
- "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz",
"integrity": "sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk="
}
}
@@ -9071,18 +9461,9 @@
"p-is-promise": "^1.1.0"
}
},
- "memfs": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-2.10.1.tgz",
- "integrity": "sha512-CXfNuf6TeF4ByYJ/cAxVcR2y58Q511soYd6JhXAJVPYp+9kIbkJZ+FZUw8fQCcNn5+XUNJ38CdjX0gpeUt5ITA==",
- "requires": {
- "fast-extend": "0.0.2",
- "fs-monkey": "^0.3.3"
- }
- },
"memoize-one": {
"version": "3.1.1",
- "resolved": "http://registry.npmjs.org/memoize-one/-/memoize-one-3.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-3.1.1.tgz",
"integrity": "sha512-YqVh744GsMlZu6xkhGslPSqSurOv6P+kLN2J3ysBZfagLcL5FdRK/0UpgLoL8hwjjEvvAVkjJZyFP+1T6p1vgA=="
},
"memory-fs": {
@@ -9728,12 +10109,6 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true
},
- "olm": {
- "version": "3.0.0",
- "resolved": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz",
- "integrity": "sha512-gAJC+uQfDIJDtj7tNBu6qXA3Ldw4OXCshVCZNPMl1E9CTBD7Hj063IjFGVF6NBw6+nOYQDgMgQkoBtk5GyCyBw==",
- "optional": true
- },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -10393,6 +10768,222 @@
}
}
},
+ "postcss-modules-extract-imports": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+ "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz",
+ "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.4.tgz",
+ "integrity": "sha512-WvuSaTKXUqYJbnT7R3YrsNrHv/C5vRfr5VglS4bFOk0MYT4CLBfc/xgExA+x2RftlYgiBDvWmVs191Xv8S8gZQ==",
+ "dev": true,
+ "requires": {
+ "css-selector-tokenizer": "^0.7.0",
+ "postcss": "^7.0.6",
+ "postcss-value-parser": "^3.3.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz",
+ "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz",
+ "integrity": "sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg==",
+ "dev": true,
+ "requires": {
+ "css-selector-tokenizer": "^0.7.0",
+ "postcss": "^7.0.6"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz",
+ "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-modules-values": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz",
+ "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==",
+ "dev": true,
+ "requires": {
+ "icss-replace-symbols": "^1.1.0",
+ "postcss": "^7.0.6"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz",
+ "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"postcss-nested": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-3.0.0.tgz",
@@ -10607,9 +11198,9 @@
"dev": true
},
"psl": {
- "version": "1.1.29",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
- "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
+ "version": "1.1.31",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
+ "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
},
"public-encrypt": {
"version": "4.0.3",
@@ -10693,9 +11284,9 @@
"dev": true
},
"raf": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz",
- "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"requires": {
"performance-now": "^2.1.0"
}
@@ -10778,12 +11369,6 @@
}
}
},
- "raw-loader": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
- "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
- "dev": true
- },
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -10863,9 +11448,9 @@
"integrity": "sha1-Aj1vObsVyXwHHp5g0A0TbqxfoLQ="
},
"react-is": {
- "version": "16.6.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.6.0.tgz",
- "integrity": "sha512-q8U7k0Fi7oxF1HvQgyBjPwDXeMplEsArnKt2iYhuIF86+GBbgLHdAmokL3XUFjTd7Q363OSNG55FOGUdONVn1g=="
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.7.0.tgz",
+ "integrity": "sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g=="
},
"react-lifecycles-compat": {
"version": "3.0.4",
@@ -10890,12 +11475,12 @@
}
},
"react-redux": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.0.tgz",
- "integrity": "sha512-CRMpEx8+ccpoVxQrQDkG1obExNYpj6dZ1Ni7lUNFB9wcxOhy02tIqpFo4IUXc0kYvCGMu6ABj9A4imEX2VGZJQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.1.tgz",
+ "integrity": "sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg==",
"requires": {
"@babel/runtime": "^7.1.2",
- "hoist-non-react-statics": "^3.0.0",
+ "hoist-non-react-statics": "^3.1.0",
"invariant": "^2.2.4",
"loose-envify": "^1.1.0",
"prop-types": "^15.6.1",
@@ -10913,30 +11498,67 @@
}
},
"read-config-file": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.1.2.tgz",
- "integrity": "sha512-QCATYzlYHvmWps/W/eP7rcKuhYRYZg5XKeXFxSJRIXvn+KSw1+Ntz2et1aBz5TrEpawGrxWZ7zBipj+/v0xwWQ==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.1.tgz",
+ "integrity": "sha512-yW4hZZXdNN+Paij5JVAiTv1lUsAN5QRBU5NqotQqwYdVkUczSmDzm66VLu0eojiZt2zFeYptTFDAYlalDGuHdA==",
"dev": true,
"requires": {
- "ajv": "^6.5.2",
+ "ajv": "^6.7.0",
"ajv-keywords": "^3.2.0",
- "bluebird-lst": "^1.0.5",
- "dotenv": "^6.0.0",
+ "bluebird-lst": "^1.0.6",
+ "dotenv": "^6.2.0",
"dotenv-expand": "^4.2.0",
- "fs-extra-p": "^4.6.1",
- "js-yaml": "^3.12.0",
- "json5": "^1.0.1",
+ "fs-extra-p": "^7.0.0",
+ "js-yaml": "^3.12.1",
+ "json5": "^2.1.0",
"lazy-val": "^1.0.3"
},
"dependencies": {
+ "ajv": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz",
+ "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "js-yaml": {
+ "version": "3.12.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz",
+ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"json5": {
- "version": "1.0.1",
- "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+ "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
}
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
}
}
},
@@ -11577,9 +12199,9 @@
"integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc="
},
"resize-observer-polyfill": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz",
- "integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg=="
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
},
"resolve": {
"version": "1.8.1",
@@ -11710,7 +12332,7 @@
},
"safe-regex": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
@@ -11755,9 +12377,9 @@
"dev": true
},
"scheduler": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.10.0.tgz",
- "integrity": "sha512-+TSTVTCBAA3h8Anei3haDc1IRwMeDmtI/y/o3iBe3Mjl2vwYF9DtPDt929HyRmV/e7au7CLu8sc4C4W0VOs29w==",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.12.0.tgz",
+ "integrity": "sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw==",
"optional": true,
"requires": {
"loose-envify": "^1.1.0",
@@ -12010,17 +12632,17 @@
}
},
"slate-base64-serializer": {
- "version": "0.2.77",
- "resolved": "https://registry.npmjs.org/slate-base64-serializer/-/slate-base64-serializer-0.2.77.tgz",
- "integrity": "sha512-EZ5XpKf7l2mYIzbB0rdExAZ5FPgm252hmDtR5wTBY5m79ekw/xc016HxJrlg0HufMQKcRsQtuEhBRrwyLiWuag==",
+ "version": "0.2.94",
+ "resolved": "https://registry.npmjs.org/slate-base64-serializer/-/slate-base64-serializer-0.2.94.tgz",
+ "integrity": "sha512-jltk0PwOS1lu/TRHTN/qW67+VSXlbX1d0GottPloKjYwHBbH47GVT/G+hmkOdrGXzV7P6220BvQwN8Xq2RaJ5A==",
"requires": {
"isomorphic-base64": "^1.0.2"
}
},
"slate-dev-environment": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/slate-dev-environment/-/slate-dev-environment-0.2.0.tgz",
- "integrity": "sha512-xxh3ThUSHYDwRUaywRQeOySJFI1kU4mYw9uDUbjk3VTpt0BHCFufHkCU5f22U8HyP7b2nDVFwfyXg1Q0o+Ksag==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/slate-dev-environment/-/slate-dev-environment-0.2.1.tgz",
+ "integrity": "sha512-mPWPKnL9ptWV7ndNoJIi4URIKNpoSDUh+v7o/0ecMBS4sJLW1EY4VTZyhK3Dy829hcsXYmtXSzhdmQBvPEid6Q==",
"requires": {
"is-in-browser": "^1.1.3"
}
@@ -12036,12 +12658,12 @@
"integrity": "sha512-QdXa+qmOG46VrTfnzn2gUVzs1WiO3Q+zCv3XomzMNGdgAJjCgHBs3jaeQD845h15loS3OJ181gCNAkB3dby6Hw=="
},
"slate-hotkeys": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/slate-hotkeys/-/slate-hotkeys-0.2.7.tgz",
- "integrity": "sha512-k6iaR24w15CSM24jbi6My4WD2ePw4Byn8x3ARz3UtKrfSEO4F8Er/aPxegLhBujNE9u041uBMGeua44rlhemkw==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/slate-hotkeys/-/slate-hotkeys-0.2.8.tgz",
+ "integrity": "sha512-9d8hkXYGcuPMPxC3LvdhXZQGWMs0LISe3uKGp1dHandPNxffqxDHcgTJSYtUDyxM4Dve4eJByJQ4oBbYawUGDw==",
"requires": {
"is-hotkey": "0.1.4",
- "slate-dev-environment": "^0.2.0"
+ "slate-dev-environment": "^0.2.1"
}
},
"slate-html-serializer": {
@@ -12054,9 +12676,9 @@
}
},
"slate-plain-serializer": {
- "version": "0.6.16",
- "resolved": "https://registry.npmjs.org/slate-plain-serializer/-/slate-plain-serializer-0.6.16.tgz",
- "integrity": "sha512-swQAe2ehGhsJWSOyGsmLWs/JSya5k8ipwOHpW1fy1hb1sU8BnU/0y9PMxGPCbpUugbSCFURmm6MPlj04Tc1/sg=="
+ "version": "0.6.33",
+ "resolved": "https://registry.npmjs.org/slate-plain-serializer/-/slate-plain-serializer-0.6.33.tgz",
+ "integrity": "sha512-dkbWQvB9FA/qN3HfkQ++xksaBHZsa6NCBG42OV70Y2wLSjN7Ym8NzQMR4bb5i67kL+ko+TXJ0Qg2sNiOEATCNQ=="
},
"slate-prop-types": {
"version": "0.4.67",
@@ -12085,9 +12707,9 @@
},
"dependencies": {
"memoize-one": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.2.tgz",
- "integrity": "sha512-ucx2DmXTeZTsS4GPPUZCbULAN7kdPT1G+H49Y34JjbQ5ESc6OGhVxKvb1iKhr9v19ZB9OtnHwNnhUnNR/7Wteg=="
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz",
+ "integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw=="
}
}
},
@@ -12554,9 +13176,9 @@
}
},
"sprintf-js": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz",
- "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw="
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
},
"srcset": {
"version": "1.0.0",
@@ -12568,9 +13190,9 @@
}
},
"sshpk": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz",
- "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==",
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz",
+ "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==",
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
@@ -12898,15 +13520,14 @@
}
},
"temp-file": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.1.3.tgz",
- "integrity": "sha512-oz2J77loDE9sGrlRTqBzwbsUvoBD2BpyXeaRPKyGwBIwaamSs2jdqAfhutw7Tch9llr1u8E2ruoug09rNPa3PA==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz",
+ "integrity": "sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ==",
"dev": true,
"requires": {
"async-exit-hook": "^2.0.1",
- "bluebird-lst": "^1.0.5",
- "fs-extra-p": "^4.6.1",
- "lazy-val": "^1.0.3"
+ "bluebird-lst": "^1.0.6",
+ "fs-extra-p": "^7.0.0"
}
},
"term-size": {
@@ -14576,9 +15197,9 @@
}
},
"write-file-atomic": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
- "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
+ "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
@@ -14605,7 +15226,7 @@
},
"xmlbuilder": {
"version": "9.0.7",
- "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
"dev": true
},
@@ -14705,6 +15326,11 @@
}
}
}
+ },
+ "zxcvbn": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz",
+ "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA="
}
}
}
diff --git a/package.json b/package.json
index e5c56cdac8..36b84f89fb 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "electron_app/src/electron-main.js",
- "version": "0.17.9",
+ "version": "1.0.0",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -33,8 +33,8 @@
"build:res": "node scripts/copy-res.js",
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
"build:compile": "npm run reskindex && babel --source-maps -d lib src",
- "build:bundle": "cross-env NODE_ENV=production webpack-cli -p --progress --bail --mode production",
- "build:bundle:dev": "webpack-cli --progress --bail --mode development",
+ "build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production",
+ "build:bundle:dev": "webpack --progress --bail --mode development",
"build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64",
"build:react-sdk": "node scripts/npm-sub.js matrix-react-sdk run build",
"build:js-sdk": "node scripts/npm-sub.js matrix-js-sdk run start:init",
@@ -70,8 +70,8 @@
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279",
"gfm.css": "^1.1.2",
"highlight.js": "^9.13.1",
- "matrix-js-sdk": "0.14.3",
- "matrix-react-sdk": "0.14.8",
+ "matrix-js-sdk": "1.0.0",
+ "matrix-react-sdk": "1.0.0",
"modernizr": "^3.6.0",
"prop-types": "^15.6.2",
"react": "^15.6.0",
@@ -100,8 +100,9 @@
"concurrently": "^4.0.1",
"cpx": "^1.3.2",
"cross-env": "^4.0.0",
- "electron-builder": "^20.29.0",
- "electron-builder-squirrel-windows": "^11.6.1",
+ "css-loader": "^2.1.0",
+ "electron-builder": "^20.38.5",
+ "electron-builder-squirrel-windows": "^20.38.5",
"electron-devtools-installer": "^2.2.4",
"emojione": "^2.2.7",
"eslint": "^5.8.0",
@@ -110,6 +111,7 @@
"eslint-plugin-flowtype": "^2.50.3",
"eslint-plugin-react": "^7.11.1",
"expect": "^1.16.0",
+ "file-loader": "^3.0.1",
"fs-extra": "^0.30.0",
"html-webpack-plugin": "^3.2.0",
"json-loader": "^0.5.3",
@@ -136,7 +138,6 @@
"postcss-scss": "^1.0.6",
"postcss-simple-vars": "^4.1.0",
"postcss-strip-inline-comments": "^0.1.5",
- "raw-loader": "^0.5.1",
"react-addons-perf": "^15.4.0",
"react-addons-test-utils": "^15.6.0",
"rimraf": "^2.4.3",
@@ -146,11 +147,11 @@
"webpack-dev-server": "^3.1.10"
},
"optionalDependencies": {
- "olm": "https://matrix.org/packages/npm/olm/olm-3.0.0.tgz"
+ "olm": "https://matrix.org/packages/npm/olm/olm-3.1.0-pre1.tgz"
},
"build": {
"appId": "im.riot.app",
- "electronVersion": "4.0.1",
+ "electronVersion": "4.0.4",
"files": [
"node_modules/**",
"src/**",
diff --git a/res/home-status.html b/res/home-status.html
deleted file mode 100644
index 7d50470a22..0000000000
--- a/res/home-status.html
+++ /dev/null
@@ -1,192 +0,0 @@
-
-
-
-
-
-
-
Our rooms
-
Please abide by the channels discussion categories and remain on topic to the specific category details listed.
-
Before posting please refer to our Code of Conduct
-
-
-
-
-
-
#announcements
-
Company wide announcements.
-
Join
-
-
-
-
#introductions
-
Newcomer introductions.
-
Join
-
-
-
-
#general
-
General discussions of Status.
-
Join
-
-
-
-
#dev-status
-
Contributing to our codebase? Building a DApp or a chatbot? We're here to help.
-
Join
-
-
-
-
#news-articles
-
Share news, articles related to Ethereum or projects you're excited about
-
Join
-
-
-
- Interested in market and cryptocurrency type discussions?
-
-
Join Telegram
-
-
diff --git a/res/home.html b/res/home.html
deleted file mode 100644
index 934e491ecd..0000000000
--- a/res/home.html
+++ /dev/null
@@ -1,292 +0,0 @@
-
-
-
-
-
-
-
-
_t("Search the room directory")
-
-
-
-
-
-
-
-
-
_t("Chat with Riot Bot")
-
-
-
-
-
-
-
-
-
_t("General discussion about Matrix and Riot")
-
-
-
-
-
- Matrix HQ
-
-
_t("Discussion of all things Matrix!")
-
-
-
-
- Riot
-
-
_t("Riot/Web & Desktop chat")
-
-
-
-
- #riot-ios
-
-
_t("Riot/iOS & matrix-ios-sdk chat")
-
-
-
-
- #riot-android
-
-
_t("Riot/Android & matrix-android-sdk chat")
-
-
-
-
_t("Matrix technical discussions")
-
_t("Running Matrix services")
-
-
-
-
-
- Synapse Support Community
-
-
_t("Community-run support for Synapse")
-
-
-
-
- #dendrite:matrix.org
-
-
_t("Admin support for Dendrite")
-
-
-
-
- Synapse Homeowners
-
-
_t("Announcements about Synapse releases")
-
-
-
-
- IRC Matrix Bridges
-
-
_t("Support for those using and running matrix-appservice-irc")
-
-
-
-
_t("Building services on Matrix")
-
-
-
-
-
- #matrix-dev:matrix.org
-
-
_t("Support for those using the Matrix spec")
-
-
-
-
- End-to-end crypto in Matrix
-
-
_t("Design and implementation of E2E in Matrix")
-
-
-
-
- #vr:matrix.org
-
-
_t("Implementing VR services with Matrix")
-
-
-
-
- #webrtc:matrix.org
-
-
_t("Implementing VoIP services with Matrix")
-
-
-
-
- Matrix Identity
-
-
_t("Discussion of the Identity Service API")
-
-
-
-
- Matrix Bridging
-
-
_t("Support for those using, running and writing other bridges")
-
-
-
-
_t("Contributing code to Matrix and Riot")
-
-
-
-
-
- #riot-dev
-
-
_t("Dev chat for the Riot/Web dev team")
-
-
-
-
- #dendrite-dev
-
-
_t("Dev chat for the Dendrite dev team")
-
-
-
-
- Riot Translations
-
-
_t("Co-ordination for Riot translators")
-
-
-
diff --git a/res/home/images/logo.svg b/res/home/images/logo.svg
deleted file mode 100644
index a5f70e5e4c..0000000000
--- a/res/home/images/logo.svg
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-New_logo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/res/home/rooms/bridging.png b/res/home/rooms/bridging.png
deleted file mode 100644
index 6b3a55e7bb..0000000000
Binary files a/res/home/rooms/bridging.png and /dev/null differ
diff --git a/res/home/rooms/dendrite-dev.png b/res/home/rooms/dendrite-dev.png
deleted file mode 100644
index 1d96bd84a7..0000000000
Binary files a/res/home/rooms/dendrite-dev.png and /dev/null differ
diff --git a/res/home/rooms/dendrite.png b/res/home/rooms/dendrite.png
deleted file mode 100644
index 1d96bd84a7..0000000000
Binary files a/res/home/rooms/dendrite.png and /dev/null differ
diff --git a/res/home/rooms/e2e.png b/res/home/rooms/e2e.png
deleted file mode 100644
index a2bda4bc68..0000000000
Binary files a/res/home/rooms/e2e.png and /dev/null differ
diff --git a/res/home/rooms/homeowners.png b/res/home/rooms/homeowners.png
deleted file mode 100644
index ed45f11ceb..0000000000
Binary files a/res/home/rooms/homeowners.png and /dev/null differ
diff --git a/res/home/rooms/identity.jpg b/res/home/rooms/identity.jpg
deleted file mode 100644
index f2e1505634..0000000000
Binary files a/res/home/rooms/identity.jpg and /dev/null differ
diff --git a/res/home/rooms/identity.png b/res/home/rooms/identity.png
deleted file mode 100644
index de1ea60d54..0000000000
Binary files a/res/home/rooms/identity.png and /dev/null differ
diff --git a/res/home/rooms/irc.png b/res/home/rooms/irc.png
deleted file mode 100644
index 5f611d12a4..0000000000
Binary files a/res/home/rooms/irc.png and /dev/null differ
diff --git a/res/home/rooms/matrix-dev.png b/res/home/rooms/matrix-dev.png
deleted file mode 100644
index fa54f00cb2..0000000000
Binary files a/res/home/rooms/matrix-dev.png and /dev/null differ
diff --git a/res/home/rooms/matrix.png b/res/home/rooms/matrix.png
deleted file mode 100644
index fa54f00cb2..0000000000
Binary files a/res/home/rooms/matrix.png and /dev/null differ
diff --git a/res/home/rooms/riot-android.png b/res/home/rooms/riot-android.png
deleted file mode 100644
index fa2bec8e3e..0000000000
Binary files a/res/home/rooms/riot-android.png and /dev/null differ
diff --git a/res/home/rooms/riot-bot.png b/res/home/rooms/riot-bot.png
deleted file mode 100644
index 9efd4a3c21..0000000000
Binary files a/res/home/rooms/riot-bot.png and /dev/null differ
diff --git a/res/home/rooms/riot-dev.png b/res/home/rooms/riot-dev.png
deleted file mode 100644
index ff8b21ad1a..0000000000
Binary files a/res/home/rooms/riot-dev.png and /dev/null differ
diff --git a/res/home/rooms/riot-ios.png b/res/home/rooms/riot-ios.png
deleted file mode 100644
index 6a0c598fe5..0000000000
Binary files a/res/home/rooms/riot-ios.png and /dev/null differ
diff --git a/res/home/rooms/riot-translations.png b/res/home/rooms/riot-translations.png
deleted file mode 100644
index 2ae95836e7..0000000000
Binary files a/res/home/rooms/riot-translations.png and /dev/null differ
diff --git a/res/home/rooms/riot.png b/res/home/rooms/riot.png
deleted file mode 100644
index 4daa2e4ef7..0000000000
Binary files a/res/home/rooms/riot.png and /dev/null differ
diff --git a/res/home/rooms/synapse.png b/res/home/rooms/synapse.png
deleted file mode 100644
index ee0f855895..0000000000
Binary files a/res/home/rooms/synapse.png and /dev/null differ
diff --git a/res/home/rooms/vr.png b/res/home/rooms/vr.png
deleted file mode 100644
index 98b77802df..0000000000
Binary files a/res/home/rooms/vr.png and /dev/null differ
diff --git a/res/home/rooms/webrtc.png b/res/home/rooms/webrtc.png
deleted file mode 100644
index 98b790f9ae..0000000000
Binary files a/res/home/rooms/webrtc.png and /dev/null differ
diff --git a/res/themes/riot/img/backgrounds/valley.jpg b/res/themes/riot/img/backgrounds/valley.jpg
new file mode 100644
index 0000000000..4779c9d7cf
Binary files /dev/null and b/res/themes/riot/img/backgrounds/valley.jpg differ
diff --git a/res/themes/riot/img/logos/riot-im-logo-1.png b/res/themes/riot/img/logos/riot-im-logo-1.png
deleted file mode 100644
index 768679da66..0000000000
Binary files a/res/themes/riot/img/logos/riot-im-logo-1.png and /dev/null differ
diff --git a/res/themes/riot/img/logos/riot-im-logo-1.svg b/res/themes/riot/img/logos/riot-im-logo-1.svg
deleted file mode 100644
index a806c3bfda..0000000000
--- a/res/themes/riot/img/logos/riot-im-logo-1.svg
+++ /dev/null
@@ -1,158 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-im-logo-2.svg b/res/themes/riot/img/logos/riot-im-logo-2.svg
deleted file mode 100644
index f9cc92f13b..0000000000
--- a/res/themes/riot/img/logos/riot-im-logo-2.svg
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-im-logo-3.svg b/res/themes/riot/img/logos/riot-im-logo-3.svg
deleted file mode 100644
index 7f81dacd72..0000000000
--- a/res/themes/riot/img/logos/riot-im-logo-3.svg
+++ /dev/null
@@ -1,173 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-im-logo-4.svg b/res/themes/riot/img/logos/riot-im-logo-4.svg
deleted file mode 100644
index 307868e604..0000000000
--- a/res/themes/riot/img/logos/riot-im-logo-4.svg
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-im-logo-5.svg b/res/themes/riot/img/logos/riot-im-logo-5.svg
deleted file mode 100644
index 2653d7c9c8..0000000000
--- a/res/themes/riot/img/logos/riot-im-logo-5.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-im-logo-black-text.png b/res/themes/riot/img/logos/riot-im-logo-black-text.png
new file mode 100644
index 0000000000..2b4334616e
Binary files /dev/null and b/res/themes/riot/img/logos/riot-im-logo-black-text.png differ
diff --git a/res/themes/riot/img/logos/riot-im-logo-black-text.svg b/res/themes/riot/img/logos/riot-im-logo-black-text.svg
new file mode 100644
index 0000000000..ce50d65d49
--- /dev/null
+++ b/res/themes/riot/img/logos/riot-im-logo-black-text.svg
@@ -0,0 +1,17 @@
+
+
+
+ alt black logotype
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-im-logo.png b/res/themes/riot/img/logos/riot-im-logo.png
new file mode 100644
index 0000000000..66651582de
Binary files /dev/null and b/res/themes/riot/img/logos/riot-im-logo.png differ
diff --git a/res/themes/riot/img/logos/riot-im-logo.svg b/res/themes/riot/img/logos/riot-im-logo.svg
new file mode 100644
index 0000000000..8a7956cc65
--- /dev/null
+++ b/res/themes/riot/img/logos/riot-im-logo.svg
@@ -0,0 +1,17 @@
+
+
+
+ animatedLogo-0
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-logo-1.svg b/res/themes/riot/img/logos/riot-logo-1.svg
deleted file mode 100644
index 297608b899..0000000000
--- a/res/themes/riot/img/logos/riot-logo-1.svg
+++ /dev/null
@@ -1 +0,0 @@
-Asset 4
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-logo-2.svg b/res/themes/riot/img/logos/riot-logo-2.svg
deleted file mode 100644
index 757f62309e..0000000000
--- a/res/themes/riot/img/logos/riot-logo-2.svg
+++ /dev/null
@@ -1 +0,0 @@
-Asset 2
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-logo-3.svg b/res/themes/riot/img/logos/riot-logo-3.svg
deleted file mode 100644
index d71b489a44..0000000000
--- a/res/themes/riot/img/logos/riot-logo-3.svg
+++ /dev/null
@@ -1 +0,0 @@
-Asset 5
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-logo-4.svg b/res/themes/riot/img/logos/riot-logo-4.svg
deleted file mode 100644
index aa5522f609..0000000000
--- a/res/themes/riot/img/logos/riot-logo-4.svg
+++ /dev/null
@@ -1 +0,0 @@
-Asset 3
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-logo-5.svg b/res/themes/riot/img/logos/riot-logo-5.svg
deleted file mode 100644
index 6cbc259257..0000000000
--- a/res/themes/riot/img/logos/riot-logo-5.svg
+++ /dev/null
@@ -1 +0,0 @@
-Asset 1
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-logo-bw.svg b/res/themes/riot/img/logos/riot-logo-bw.svg
deleted file mode 100644
index e7d6e869ba..0000000000
--- a/res/themes/riot/img/logos/riot-logo-bw.svg
+++ /dev/null
@@ -1 +0,0 @@
-Asset 6
\ No newline at end of file
diff --git a/res/themes/riot/img/logos/riot-logo.svg b/res/themes/riot/img/logos/riot-logo.svg
deleted file mode 100644
index cbfaa62577..0000000000
--- a/res/themes/riot/img/logos/riot-logo.svg
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/res/themes/riot/img/logos/riot.im logo.svg b/res/themes/riot/img/logos/riot.im logo.svg
deleted file mode 100644
index 5ebd96e84b..0000000000
--- a/res/themes/riot/img/logos/riot.im logo.svg
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
-image/svg+xml
\ No newline at end of file
diff --git a/res/themes/status/css/_StatusLogin.scss b/res/themes/status/css/_StatusLogin.scss
deleted file mode 100644
index 6872727423..0000000000
--- a/res/themes/status/css/_StatusLogin.scss
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
-Copyright 2017 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.
-*/
-
-// overrides for mx_Login* specific to Status.
-// Ideally this would be all Status prefixes for a Status specific version of the component
-// but given we're not doing Status as a dedicated 'skin' yet...
-
-.mx_StatusLogin {
-
- width: 100%;
- height: 100%;
-
- display: flex;
- align-items: center;
- justify-content: center;
-
- overflow: auto;
-
- .mx_StatusLogin_brand {
- position: absolute;
- top: 30px;
- left: 30px;
- }
-
- .mx_StatusLogin_content {
- margin: auto;
- }
-
- .mx_StatusLogin_header {
- text-align: center;
- margin-top: 70px;
- margin-bottom: 50px;
- }
-
- .mx_StatusLogin_header h1 {
- font-size: 29px;
- margin-bottom: 3px;
- }
-
- .mx_StatusLogin_subtitle {
- font-size: 18px;
- }
-
- .mx_StatusLogin_subtitle a {
- color: $riot-link-color;
- }
-
- .mx_StatusLogin_footer {
- margin-top: 30px;
- margin-bottom: 30px;
- text-align: center;
- font-size: 16px;
- color: $footer-color;
- }
-
- .mx_StatusLogin_footer p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
- }
-
- .mx_StatusLogin_footer_cta {
- color: $callout-color;
- font-family: $header-font-family;
- letter-spacing: 1px;
- font-size: 13px;
- text-transform: uppercase;
- opacity: 1.0;
- transition: opacity .2s ease;
- }
-
- .mx_StatusLogin_footer_cta:hover {
- opacity: 0.5;
- text-decoration: none;
- }
-
- // overrides of .mx_Login
-
- .mx_Login_box {
- width: 330px;
- min-height: initial;
- padding-top: 40px;
- padding-bottom: 20px;
- padding-left: 10px;
- padding-right: 10px;
- border-radius: 8px;
- color: $form-fg-color;
- font-size: 16px;
- line-height: 25px;
- background-color: $form-bg-color;
- background-image: url(../../themes/status/img/dot.svg);
- box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16);
- position: relative;
- text-align: center;
- }
-
- .mx_Login_logo {
- background-color: #fff;
- width: 74px;
- height: 74px;
- border-radius: 37px;
- box-shadow: 0px 5px 16px 0px rgba(0,0,0,0.2);
- position: absolute;
- top: -36px;
- left: 50%;
- margin-left: -36px;
- }
-
- .mx_Login_logo img {
- width: 36px;
- height: 36px;
- padding: 19px;
- }
-
- .mx_Login_box h2 {
- text-align: center;
- color: $form-fg-color;
- font-size: 25px;
- margin-bottom: 24px;
- }
-
- .mx_Login_field {
- width: 260px;
- height: 27px;
- padding: 8px 20px 10px 20px;
- border-radius: 10px;
- text-align: left;
- border: 1px solid transparent;
- background-color: $form-field-bg-color;
- color: $form-field-fg-color;
- font-weight: 300;
- font-size: 15px;
- margin-bottom: 14px;
- transition: background-color .2s ease;
- }
-
- .mx_Login_field:focus {
- border: 1px solid transparent;
- background-color: $form-field-bg-hover-color;
- }
-
- .mx_Login_field::-webkit-input-placeholder {
- font-family: $font-family;
- color: $form-field-fg-color;
- opacity: 0.6;
- }
-
- .mx_Login_field::-moz-placeholder {
- font-family: $font-family;
- color: $form-field-fg-color;
- opacity: 0.6;
- }
-
- .mx_Login_field_disabled {
- opacity: 0.3;
- }
-
- .mx_Login_prompt {
- font-size: 16px;
- }
-
- .mx_Login_submit {
- min-width: 200px;
- width: auto;
- margin-top: 13px;
- margin-bottom: 10px;
- }
-
- .mx_Login_submit:disabled {
- opacity: 0.3;
- }
-
- .mx_Login_create {
- margin-top: 10px;
- display: block;
- text-align: center;
- width: 100%;
- font-size: 15px;
- opacity: 1.0;
- }
-
- .mx_Login_create:link,
- .mx_Login_create:hover,
- .mx_Login_create:visited
- {
- color: $form-fg-color;
- }
-
- .mx_Login_forgot {
- display: block;
- font-size: 15px;
- }
-
- .mx_Login_forgot:link,
- .mx_Login_forgot:hover,
- .mx_Login_forgot:visited
- {
- color: $form-fg-color;
- }
-
- .mx_Login_error {
- color: $warning-color;
- font-size: 18px;
- width: 300px;
- height: 44px;
- display: flex;
- justify-content: center;
- align-items: center;
- margin: auto;
- text-align: center;
- margin-top: 12px;
- margin-bottom: 16px;
- }
-
- .mx_Login_smallError {
- font-size: 13px;
- line-height: initial;
- }
-
-}
diff --git a/res/themes/status/css/_status.scss b/res/themes/status/css/_status.scss
deleted file mode 100644
index d01cfa52d8..0000000000
--- a/res/themes/status/css/_status.scss
+++ /dev/null
@@ -1,293 +0,0 @@
-@font-face {
- font-family:PostGrotesk-Medium;
- src:url('https://status.im/fonts/PostGrotesk-Medium.eot');
- src:url('https://status.im/fonts/PostGrotesk-Medium.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Medium.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium') format("svg");
- font-weight: 400;
- font-style: normal;
-}
-
-@font-face {
- font-family:PostGrotesk-Book;
- src:url('https://status.im/fonts/PostGrotesk-Book.eot');
- src:url('https://status.im/fonts/PostGrotesk-Book.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Book.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Book.svg#PostGrotesk-Book') format("svg");
- font-weight: 400;
- font-style: normal;
-}
-
-// We deliberately prioritise Arial over Helvetica here due to diacritic problems (see _base.scss)
-// N.B. that the status.im website uses:
-// font-family:PostGrotesk-Book,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
-// ...but can't be bothered to work out how the apple fonts & segoe interact, so keepingn it simple for now.
-
-$font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif;
-
-// typical text (dark-on-white in light skin)
-$primary-fg-color: #70808D;
-$primary-bg-color: #EEF2F5;
-
-// ***** Start of Status theme specifics ******
-$header-color: #49555F;
-$header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif;
-
-$footer-color: #8D99A4;
-
-$riot-link-color: #A26988;
-
-a {
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-h1,h2,h3,h4,h5 {
- color: $header-color;
- font-family: $header-font-family;
- font-weight: 400 ! important;
-}
-
-$callout-color: #4360DF; // or #4957b8 from status.im homepage
-
-$form-bg-color: $callout-color;
-$form-fg-color: #ffffff;
-
-$form-field-bg-color: rgba(244, 242, 247, 0.12);
-$form-field-bg-hover-color: rgba(255, 255, 255, 0.2);
-$form-field-fg-color: #ffffff;
-
-// ***** End of Status theme specifics ******
-
-
-// used for dialog box text
-$light-fg-color: #747474;
-
-// used for focusing form controls
-$focus-bg-color: #dddddd;
-
-// button UI (white-on-green in light skin)
-$accent-fg-color: #ffffff;
-$accent-color: #6CC1F6;
-$accent-color-50pct: #6CC1F67F;
-$accent-hover-color: #84cfff;
-
-$selection-fg-color: $primary-bg-color;
-
-$focus-brightness: 125%;
-
-// red warning colour
-$warning-color: #F69E98;
-$warning-bg-color: #DF2A8B;
-$info-bg-color: #2A9EDF;
-$mention-user-pill-bg-color: #ff0064;
-$other-user-pill-bg-color: rgba(0, 0, 0, 0.1);
-
-$group-alert-color: #774f7e;
-
-$preview-bar-bg-color: #f7f7f7;
-
-// left-panel style muted accent color
-$secondary-accent-color: #586C7B;
-$tertiary-accent-color: #DBEBF6;
-
-// stop the tinter trying to change the secondary accent color
-// by overriding the key to something untintable
-// XXX: this is a bit of a hack.
-#mx_theme_secondaryAccentColor {
- color: #c0ffee ! important;
-}
-
-#mx_theme_tertiaryAccentColor {
- color: #c0ffee ! important;
-}
-
-// used by RoomDirectory permissions
-$plinth-bg-color: $secondary-accent-color;
-
-// used by RoomDropTarget
-$droptarget-bg-color: rgba(255,255,255,0.5);
-
-// used by AddressSelector
-$selected-color: #eaf5f0;
-
-// selected for hoverover & selected event tiles
-$event-selected-color: #f7f7f7;
-
-// used for the hairline dividers in RoomView
-$primary-hairline-color: #e5e5e5;
-
-// used for the border of input text fields
-$input-border-color: #c9cfd4;
-
-// apart from login forms, which have stronger border
-$strong-input-border-color: #c7c7c7;
-
-// used for UserSettings EditableText
-$input-underline-color: rgba(151, 151, 151, 0.5);
-$input-fg-color: rgba(74, 74, 74, 0.9);
-
-// context menus
-$menu-border-color: rgba(187, 187, 187, 0.5);
-$menu-bg-color: #f6f6f6;
-
-$avatar-initial-color: #ffffff;
-$avatar-bg-color: transparent;
-
-$h3-color: #3d3b39;
-
-$dialog-background-bg-color: #e9e9e9;
-$lightbox-background-bg-color: #000;
-
-$greyed-fg-color: #888;
-
-$neutral-badge-color: #dbdbdb;
-
-$preview-widget-bar-color: #ddd;
-$preview-widget-fg-color: $greyed-fg-color;
-
-$blockquote-bar-color: #ddd;
-$blockquote-fg-color: #777;
-
-$settings-grey-fg-color: #a2a2a2;
-
-$voip-decline-color: #f48080;
-$voip-accept-color: #80f480;
-
-$rte-bg-color: #e9e9e9;
-$rte-code-bg-color: rgba(0, 0, 0, 0.04);
-$rte-room-pill-color: #aaa;
-
-// ********************
-
-$roomtile-name-color: #ffffff;
-$roomtile-selected-bg-color: #465561;
-$roomtile-focused-bg-color: #6d8597;
-
-$roomsublist-background: rgba(0, 0, 0, 0.2);
-$roomsublist-label-fg-color: #ffffff;
-$roomsublist-label-bg-color: $secondary-accent-color;
-$roomsublist-chevron-color: #ffffff;
-
-$panel-divider-color: rgba(0, 0, 0, 0.2);
-
-// ********************
-
-$widget-menu-bar-bg-color: #f7f7f7;
-
-// ********************
-
-// event tile lifecycle
-$event-encrypting-color: #abddbc;
-$event-sending-color: #ddd;
-$event-notsent-color: #f44;
-
-// event redaction
-$event-redacted-fg-color: #e2e2e2;
-$event-redacted-border-color: #cccccc;
-
-// event timestamp
-$event-timestamp-color: #acacac;
-
-$edit-button-url: "../../img/icon_context_message.svg";
-$copy-button-url: "../../img/icon_copy_message.svg";
-
-// e2e
-$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color
-$e2e-unverified-color: #e8bf37;
-$e2e-warning-color: #ba6363;
-
-/*** ImageView ***/
-$lightbox-bg-color: #454545;
-$lightbox-fg-color: #ffffff;
-$lightbox-border-color: #ffffff;
-
-// unused?
-$progressbar-color: #000;
-
-@define-mixin mx_DialogButton {
- /* align images in buttons (eg spinners) */
- vertical-align: middle;
- border-radius: 8px;
- border: 1px solid rgba(199, 206, 209, 0.12);
- background-color: $accent-color;
- font-size: 13px;
- font-family: $header-font-family;
- text-transform: uppercase;
- letter-spacing: 1px;
- color: $accent-fg-color;
- cursor: pointer;
- outline: none;
- padding: 14px;
- box-sizing: border-box;
- padding-left: 1.5em;
- padding-right: 1.5em;
- display: inline-block;
- transition: background-color .2s ease;
-}
-
-@define-mixin mx_DialogButton_hover {
- background-color: $accent-hover-color;
-}
-
-@define-mixin mx_DialogButton_small {
- @mixin mx_DialogButton;
- height: auto;
- padding-top: 7px;
- padding-bottom: 7px;
- padding-left: 1em;
- padding-right: 1em;
-}
-
-.mx_RoomSubList_label {
- font-size: 13px;
- font-family: $header-font-family;
- letter-spacing: 1px;
-}
-
-// FIXME: all these ! importants are horrid - we should instead go and define
-// variables or something.
-.mx_SearchBox_search {
- color: #fff ! important;
-}
-
-.mx_SearchBox_search::-webkit-input-placeholder {
- color: rgba(255, 255, 255, 0.6) ! important;
-}
-
-.mx_SearchBox_search::-moz-placeholder {
- color: rgba(255, 255, 255, 0.6) ! important;
-}
-
-.mx_RoomList_emptySubListTip,
-.mx_RoomDropTarget {
- font-size: 14px ! important;
- border: 1.5px dashed rgba(0,0,0,0.2) ! important;
- color: #fff ! important;
- background-color: transparent ! important;
- border-radius: 6px ! important;
- margin-left: 6px ! important;
- margin-right: 6px ! important;
- margin-top: 8px ! important;
- margin-bottom: 7px ! important;
- padding: 8px ! important;
-}
-
-.mx_RoomDirectory_perm {
- font-family: $header-font-family ! important;
- background-color: #fff ! important;
-}
-
-.mx_RoomTile_badge,
-.mx_RoomSubList_badge {
- height: 12px ! important;
- padding-top: 1px ! important;
- padding-bottom: 1px ! important;
-}
-
-.mx_RoomSubList_chevron {
- top: 8px ! important;
-}
-
-.mx_MemberInfo .mx_RoomTile_name {
- color: $primary-fg-color ! important;
-}
diff --git a/res/themes/status/css/status.scss b/res/themes/status/css/status.scss
deleted file mode 100644
index b4f6590040..0000000000
--- a/res/themes/status/css/status.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-@import "../../../../node_modules/matrix-react-sdk/res/themes/light/css/_base.scss";
-@import "_status.scss";
-@import "../../../../node_modules/matrix-react-sdk/res/css/_components.scss";
-@import "_StatusLogin.scss";
diff --git a/res/themes/status/fonts/README b/res/themes/status/fonts/README
deleted file mode 100644
index d7900145ed..0000000000
--- a/res/themes/status/fonts/README
+++ /dev/null
@@ -1 +0,0 @@
-We link out to status.im for fonts, although ideally we'd put them here.
diff --git a/res/themes/status/img/a.png b/res/themes/status/img/a.png
deleted file mode 100644
index defbcc4bcd..0000000000
Binary files a/res/themes/status/img/a.png and /dev/null differ
diff --git a/res/themes/status/img/d.png b/res/themes/status/img/d.png
deleted file mode 100644
index daeb0b0785..0000000000
Binary files a/res/themes/status/img/d.png and /dev/null differ
diff --git a/res/themes/status/img/dot.svg b/res/themes/status/img/dot.svg
deleted file mode 100644
index 45df23c049..0000000000
--- a/res/themes/status/img/dot.svg
+++ /dev/null
@@ -1 +0,0 @@
-Artboard
\ No newline at end of file
diff --git a/res/themes/status/img/g.png b/res/themes/status/img/g.png
deleted file mode 100644
index f675a33022..0000000000
Binary files a/res/themes/status/img/g.png and /dev/null differ
diff --git a/res/themes/status/img/i.png b/res/themes/status/img/i.png
deleted file mode 100644
index b63eeae13b..0000000000
Binary files a/res/themes/status/img/i.png and /dev/null differ
diff --git a/res/themes/status/img/logo.svg b/res/themes/status/img/logo.svg
deleted file mode 100644
index 68e4a77a5c..0000000000
--- a/res/themes/status/img/logo.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- Status logo
- Created with Sketch.
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/themes/status/img/n.png b/res/themes/status/img/n.png
deleted file mode 100644
index b8e33d41f7..0000000000
Binary files a/res/themes/status/img/n.png and /dev/null differ
diff --git a/res/vector-icons/android-chrome-144x144.png b/res/vector-icons/android-chrome-144x144.png
index 30c8cf18dc..5dbbd0ff11 100644
Binary files a/res/vector-icons/android-chrome-144x144.png and b/res/vector-icons/android-chrome-144x144.png differ
diff --git a/res/vector-icons/android-chrome-192x192.png b/res/vector-icons/android-chrome-192x192.png
index 560e20ad8c..93a4e9c8ad 100644
Binary files a/res/vector-icons/android-chrome-192x192.png and b/res/vector-icons/android-chrome-192x192.png differ
diff --git a/res/vector-icons/android-chrome-36x36.png b/res/vector-icons/android-chrome-36x36.png
index ee41772f4d..344157fe50 100644
Binary files a/res/vector-icons/android-chrome-36x36.png and b/res/vector-icons/android-chrome-36x36.png differ
diff --git a/res/vector-icons/android-chrome-48x48.png b/res/vector-icons/android-chrome-48x48.png
index 9cd225d402..70115c65c1 100644
Binary files a/res/vector-icons/android-chrome-48x48.png and b/res/vector-icons/android-chrome-48x48.png differ
diff --git a/res/vector-icons/android-chrome-72x72.png b/res/vector-icons/android-chrome-72x72.png
index d9de0c5715..e61b36e248 100644
Binary files a/res/vector-icons/android-chrome-72x72.png and b/res/vector-icons/android-chrome-72x72.png differ
diff --git a/res/vector-icons/android-chrome-96x96.png b/res/vector-icons/android-chrome-96x96.png
index eb48c2c91e..3a32b6c839 100644
Binary files a/res/vector-icons/android-chrome-96x96.png and b/res/vector-icons/android-chrome-96x96.png differ
diff --git a/res/vector-icons/apple-touch-icon-114x114.png b/res/vector-icons/apple-touch-icon-114x114.png
index e07fa43752..019780fd95 100644
Binary files a/res/vector-icons/apple-touch-icon-114x114.png and b/res/vector-icons/apple-touch-icon-114x114.png differ
diff --git a/res/vector-icons/apple-touch-icon-120x120.png b/res/vector-icons/apple-touch-icon-120x120.png
index 8265091318..4979a63e4e 100644
Binary files a/res/vector-icons/apple-touch-icon-120x120.png and b/res/vector-icons/apple-touch-icon-120x120.png differ
diff --git a/res/vector-icons/apple-touch-icon-144x144.png b/res/vector-icons/apple-touch-icon-144x144.png
index 30c8cf18dc..5dbbd0ff11 100644
Binary files a/res/vector-icons/apple-touch-icon-144x144.png and b/res/vector-icons/apple-touch-icon-144x144.png differ
diff --git a/res/vector-icons/apple-touch-icon-152x152.png b/res/vector-icons/apple-touch-icon-152x152.png
index 5bc63546c8..6aac26012f 100644
Binary files a/res/vector-icons/apple-touch-icon-152x152.png and b/res/vector-icons/apple-touch-icon-152x152.png differ
diff --git a/res/vector-icons/apple-touch-icon-180x180.png b/res/vector-icons/apple-touch-icon-180x180.png
index 85e9f8ca74..aacfc1a8a5 100644
Binary files a/res/vector-icons/apple-touch-icon-180x180.png and b/res/vector-icons/apple-touch-icon-180x180.png differ
diff --git a/res/vector-icons/apple-touch-icon-57x57.png b/res/vector-icons/apple-touch-icon-57x57.png
index 253c3db70a..e52c99c609 100644
Binary files a/res/vector-icons/apple-touch-icon-57x57.png and b/res/vector-icons/apple-touch-icon-57x57.png differ
diff --git a/res/vector-icons/apple-touch-icon-60x60.png b/res/vector-icons/apple-touch-icon-60x60.png
index 192a34675b..edaecda6b6 100644
Binary files a/res/vector-icons/apple-touch-icon-60x60.png and b/res/vector-icons/apple-touch-icon-60x60.png differ
diff --git a/res/vector-icons/apple-touch-icon-72x72.png b/res/vector-icons/apple-touch-icon-72x72.png
index d9de0c5715..e61b36e248 100644
Binary files a/res/vector-icons/apple-touch-icon-72x72.png and b/res/vector-icons/apple-touch-icon-72x72.png differ
diff --git a/res/vector-icons/apple-touch-icon-76x76.png b/res/vector-icons/apple-touch-icon-76x76.png
index b94716457b..1432fee38f 100644
Binary files a/res/vector-icons/apple-touch-icon-76x76.png and b/res/vector-icons/apple-touch-icon-76x76.png differ
diff --git a/res/vector-icons/apple-touch-icon-precomposed.png b/res/vector-icons/apple-touch-icon-precomposed.png
index 85e9f8ca74..aacfc1a8a5 100644
Binary files a/res/vector-icons/apple-touch-icon-precomposed.png and b/res/vector-icons/apple-touch-icon-precomposed.png differ
diff --git a/res/vector-icons/apple-touch-icon.png b/res/vector-icons/apple-touch-icon.png
index 85e9f8ca74..aacfc1a8a5 100644
Binary files a/res/vector-icons/apple-touch-icon.png and b/res/vector-icons/apple-touch-icon.png differ
diff --git a/res/vector-icons/favicon-16x16.png b/res/vector-icons/favicon-16x16.png
index def4ec5eee..c9b0f23e29 100644
Binary files a/res/vector-icons/favicon-16x16.png and b/res/vector-icons/favicon-16x16.png differ
diff --git a/res/vector-icons/favicon-32x32.png b/res/vector-icons/favicon-32x32.png
index c999923ac1..48bf1dc890 100644
Binary files a/res/vector-icons/favicon-32x32.png and b/res/vector-icons/favicon-32x32.png differ
diff --git a/res/vector-icons/favicon-96x96.png b/res/vector-icons/favicon-96x96.png
index eb48c2c91e..ea21306c0d 100644
Binary files a/res/vector-icons/favicon-96x96.png and b/res/vector-icons/favicon-96x96.png differ
diff --git a/res/vector-icons/favicon.ico b/res/vector-icons/favicon.ico
index 8f8ff94eea..619b51aaad 100644
Binary files a/res/vector-icons/favicon.ico and b/res/vector-icons/favicon.ico differ
diff --git a/res/vector-icons/mstile-144x144.png b/res/vector-icons/mstile-144x144.png
index 30c8cf18dc..5dbbd0ff11 100644
Binary files a/res/vector-icons/mstile-144x144.png and b/res/vector-icons/mstile-144x144.png differ
diff --git a/res/vector-icons/mstile-150x150.png b/res/vector-icons/mstile-150x150.png
index 5b8fca8a48..da0c101c94 100644
Binary files a/res/vector-icons/mstile-150x150.png and b/res/vector-icons/mstile-150x150.png differ
diff --git a/res/vector-icons/mstile-310x150.png b/res/vector-icons/mstile-310x150.png
index d809f00a05..c627adc2a1 100644
Binary files a/res/vector-icons/mstile-310x150.png and b/res/vector-icons/mstile-310x150.png differ
diff --git a/res/vector-icons/mstile-310x310.png b/res/vector-icons/mstile-310x310.png
index ec62f8ee9d..e96300293e 100644
Binary files a/res/vector-icons/mstile-310x310.png and b/res/vector-icons/mstile-310x310.png differ
diff --git a/res/vector-icons/mstile-70x70.png b/res/vector-icons/mstile-70x70.png
index 820a909e21..c4f306c5ff 100644
Binary files a/res/vector-icons/mstile-70x70.png and b/res/vector-icons/mstile-70x70.png differ
diff --git a/res/welcome.html b/res/welcome.html
new file mode 100644
index 0000000000..ba368b317b
--- /dev/null
+++ b/res/welcome.html
@@ -0,0 +1,190 @@
+
+
+
diff --git a/res/welcome/images/icon-create-account.svg b/res/welcome/images/icon-create-account.svg
new file mode 100644
index 0000000000..c9d25f2fa9
--- /dev/null
+++ b/res/welcome/images/icon-create-account.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/welcome/images/icon-help.svg b/res/welcome/images/icon-help.svg
new file mode 100644
index 0000000000..dc96f8e0cf
--- /dev/null
+++ b/res/welcome/images/icon-help.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/welcome/images/icon-room-directory.svg b/res/welcome/images/icon-room-directory.svg
new file mode 100644
index 0000000000..6f888611f1
--- /dev/null
+++ b/res/welcome/images/icon-room-directory.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/welcome/images/icon-sign-in.svg b/res/welcome/images/icon-sign-in.svg
new file mode 100644
index 0000000000..584b2f0add
--- /dev/null
+++ b/res/welcome/images/icon-sign-in.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/welcome/images/logo.svg b/res/welcome/images/logo.svg
new file mode 100644
index 0000000000..79039b70d0
--- /dev/null
+++ b/res/welcome/images/logo.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/home/images/matrix.svg b/res/welcome/images/matrix.svg
similarity index 99%
rename from res/home/images/matrix.svg
rename to res/welcome/images/matrix.svg
index 5c7dfbb5e3..13adcab25a 100644
--- a/res/home/images/matrix.svg
+++ b/res/welcome/images/matrix.svg
@@ -1,153 +1,153 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/scripts/copy-res.js b/scripts/copy-res.js
index e41fa88f3c..cde96bc419 100755
--- a/scripts/copy-res.js
+++ b/scripts/copy-res.js
@@ -50,18 +50,13 @@ const INCLUDE_LANGS = [
// "dest/b/...".
const COPY_LIST = [
["res/manifest.json", "webapp"],
- ["res/home.html", "webapp"],
- ["res/home-status.html", "webapp"],
- ["res/home/**", "webapp/home"],
- ["res/vector-icons/**", "webapp/vector-icons"],
- ["node_modules/matrix-react-sdk/res/{fonts,img,themes,media}/**", "webapp"],
+ ["res/welcome.html", "webapp"],
+ ["res/welcome/**", "webapp/welcome"],
["res/themes/**", "webapp/themes"],
+ ["res/vector-icons/**", "webapp/vector-icons"],
+ ["node_modules/matrix-react-sdk/res/media/**", "webapp/media"],
["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"],
["node_modules/emojione/assets/png/*", "webapp/emojione/png/"],
- // XXX: This is tied quite heavily to the matching olm.js so it really should be
- // in the bundle dir with the js to avoid caching issues giving us wasm that
- // doesn't match our js, but I cannot find any way to get webpack to do this.
- ["node_modules/olm/olm.wasm", "webapp", { directwatch: 1 }],
["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
["./config.json", "webapp", { directwatch: 1 }],
];
diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh
index bd68d9c2cc..bffb6b00ec 100755
--- a/scripts/electron-package.sh
+++ b/scripts/electron-package.sh
@@ -104,10 +104,12 @@ cp $distdir/*.dmg "$pubdir/install/macos/"
# Windows installers go to the dist dir because they need signing
mkdir -p "$pubdir/install/win32/ia32/"
-cp $distdir/win-ia32/*.exe "$projdir/electron_app/dist/unsigned/"
+mkdir -p "$projdir/electron_app/dist/unsigned/ia32/"
+cp $distdir/squirrel-windows-ia32/*.exe "$projdir/electron_app/dist/unsigned/ia32/"
mkdir -p "$pubdir/install/win32/x64/"
-cp $distdir/win/*.exe "$projdir/electron_app/dist/unsigned/"
+mkdir -p "$projdir/electron_app/dist/unsigned/x64/"
+cp $distdir/squirrel-windows/*.exe "$projdir/electron_app/dist/unsigned/x64/"
# Packages for auto-update
mkdir -p "$pubdir/update/macos"
@@ -115,12 +117,12 @@ cp $distdir/*-mac.zip "$pubdir/update/macos/"
echo "$vername" > "$pubdir/update/macos/latest"
mkdir -p "$pubdir/update/win32/ia32/"
-cp $distdir/win-ia32/*.nupkg "$pubdir/update/win32/ia32/"
-cp $distdir/win-ia32/RELEASES "$pubdir/update/win32/ia32/"
+cp $distdir/squirrel-windows-ia32/*.nupkg "$pubdir/update/win32/ia32/"
+cp $distdir/squirrel-windows-ia32/RELEASES "$pubdir/update/win32/ia32/"
mkdir -p "$pubdir/update/win32/x64/"
-cp $distdir/win/*.nupkg "$pubdir/update/win32/x64/"
-cp $distdir/win/RELEASES "$pubdir/update/win32/x64/"
+cp $distdir/squirrel-windows/*.nupkg "$pubdir/update/win32/x64/"
+cp $distdir/squirrel-windows/RELEASES "$pubdir/update/win32/x64/"
# Move the debs to the main project dir's dist folder
cp $distdir/*.deb "$projdir/electron_app/dist/"
diff --git a/scripts/fetch-develop.deps.sh b/scripts/fetch-develop.deps.sh
index 57eda6ebd9..b748088adb 100755
--- a/scripts/fetch-develop.deps.sh
+++ b/scripts/fetch-develop.deps.sh
@@ -9,45 +9,49 @@
set -e
GIT_CLONE_ARGS=("$@")
-
-# Look in the many different CI env vars for which branch we're
-# building
-if [[ "$TRAVIS" == true ]]; then
- curbranch="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
-else
- # ghprbSourceBranch for jenkins github pull request builder
- # GIT_BRANCH for other jenkins builds
- curbranch="${ghprbSourceBranch:-$GIT_BRANCH}"
- # Otherwise look at the actual branch we're on
- if [ -z "$curbranch" ]
- then
- curbranch=`git rev-parse --abbrev-ref HEAD`
- fi
-fi
-
-# Chop 'origin' off the start as jenkins ends up using
-# branches on the origin, but this doesn't work if we
-# specify the branch when cloning.
-curbranch=${curbranch#origin/}
-
-echo "Determined branch to be $curbranch"
+[ -z "$defbranch" ] && defbranch="develop"
# clone a specific branch of a github repo
function clone() {
org=$1
repo=$2
branch=$3
- git clone https://github.com/$org/$repo.git $repo --branch $branch \
- "${GIT_CLONE_ARGS[@]}"
+
+ # Chop 'origin' off the start as jenkins ends up using
+ # branches on the origin, but this doesn't work if we
+ # specify the branch when cloning.
+ branch=${branch#origin/}
+
+ if [ -n "$branch" ]
+ then
+ echo "Trying to use $org/$repo#$branch"
+ git clone https://github.com/$org/$repo.git $repo --branch $branch \
+ "${GIT_CLONE_ARGS[@]}"
+ return $?
+ fi
+ return 1
}
function dodep() {
org=$1
repo=$2
rm -rf $repo
- clone $org $repo $curbranch || {
- [ "$curbranch" != 'develop' ] && clone $org $repo develop
- } || return $?
+
+ # Try the PR author's branch in case it exists on the deps as well.
+ # Try the target branch of the push or PR.
+ # Use the default branch as the last resort.
+ if [[ "$TRAVIS" == true ]]; then
+ clone $org $repo $TRAVIS_PULL_REQUEST_BRANCH ||
+ clone $org $repo $TRAVIS_BRANCH ||
+ clone $org $repo $defbranch ||
+ return $?
+ else
+ clone $org $repo $ghprbSourceBranch ||
+ clone $org $repo $GIT_BRANCH ||
+ clone $org $repo `git rev-parse --abbrev-ref HEAD` ||
+ clone $org $repo $defbranch ||
+ return $?
+ fi
echo "$repo set to branch "`git -C "$repo" rev-parse --abbrev-ref HEAD`
diff --git a/src/components/structures/VectorHomePage.js b/src/components/structures/VectorEmbeddedPage.js
similarity index 75%
rename from src/components/structures/VectorHomePage.js
rename to src/components/structures/VectorEmbeddedPage.js
index a2e5fe05ea..ab093135a8 100644
--- a/src/components/structures/VectorHomePage.js
+++ b/src/components/structures/VectorEmbeddedPage.js
@@ -1,6 +1,7 @@
/*
Copyright 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
+Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,22 +18,18 @@ limitations under the License.
'use strict';
-import HomePage from 'matrix-react-sdk/lib/components/structures/HomePage';
+import EmbeddedPage from 'matrix-react-sdk/lib/components/structures/EmbeddedPage';
import sanitizeHtml from 'sanitize-html';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
-class VectorHomePage extends HomePage {
- static displayName = 'VectorHomePage';
- static replaces = 'HomePage';
+export default class VectorEmbeddedPage extends EmbeddedPage {
+ static replaces = 'EmbeddedPage';
// we're overriding the base component here, for Riot-specific tweaks
translate(s) {
s = sanitizeHtml(_t(s));
// ugly fix for https://github.com/vector-im/riot-web/issues/4243
- s = s.replace(/Riot\.im/, 'Riot.im ');
- s = s.replace(/\[matrix\]/, ' ');
+ s = s.replace(/\[matrix\]/, ' ');
return s;
}
}
-
-module.exports = VectorHomePage;
diff --git a/src/components/views/login/VectorLoginFooter.js b/src/components/views/auth/VectorAuthFooter.js
similarity index 50%
rename from src/components/views/login/VectorLoginFooter.js
rename to src/components/views/auth/VectorAuthFooter.js
index 5fa423608c..6467485387 100644
--- a/src/components/views/login/VectorLoginFooter.js
+++ b/src/components/views/auth/VectorAuthFooter.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,25 +19,20 @@ limitations under the License.
const React = require('react');
import { _t } from 'matrix-react-sdk/lib/languageHandler';
-import SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore';
module.exports = React.createClass({
- displayName: 'VectorLoginFooter',
+ displayName: 'VectorAuthFooter',
statics: {
- replaces: 'LoginFooter',
+ replaces: 'AuthFooter',
},
render: function() {
- // FIXME: replace this with a proper Status skin
- // ...except then we wouldn't be able to switch to the Status theme at runtime.
- if (SettingsStore.getValue("theme") === 'status') return
;
-
return (
-
-
blog ·
-
twitter ·
-
github ·
-
{ _t('powered by Matrix') }
+
);
},
diff --git a/src/components/views/login/VectorLoginHeader.js b/src/components/views/auth/VectorAuthHeaderLogo.js
similarity index 54%
rename from src/components/views/login/VectorLoginHeader.js
rename to src/components/views/auth/VectorAuthHeaderLogo.js
index babd90d6cd..0161fc3ffb 100644
--- a/src/components/views/login/VectorLoginHeader.js
+++ b/src/components/views/auth/VectorAuthHeaderLogo.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,26 +19,26 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
+import SdkConfig from 'matrix-react-sdk/lib/SdkConfig';
-const i = [1, 2, 3, 4, 5][Math.floor(Math.random() * 5)];
-const DEFAULT_LOGO_URI = "themes/riot/img/logos/riot-im-logo-" + i + ".svg";
+export default class VectorAuthHeaderLogo extends React.PureComponent {
+ static replaces = 'AuthHeaderLogo'
-module.exports = React.createClass({
- displayName: 'VectorLoginHeader',
- statics: {
- replaces: 'LoginHeader',
- },
- propTypes: {
+ static propTypes = {
icon: PropTypes.string,
- },
+ }
+
+ render() {
+ const brandingConfig = SdkConfig.get().branding;
+ let logoUrl = "themes/riot/img/logos/riot-im-logo-black-text.svg";
+ if (brandingConfig && brandingConfig.authHeaderLogoUrl) {
+ logoUrl = brandingConfig.authHeaderLogoUrl;
+ }
- render: function() {
return (
-
-
-
-
+
+
);
- },
-});
+ }
+}
diff --git a/src/components/views/auth/VectorAuthPage.js b/src/components/views/auth/VectorAuthPage.js
new file mode 100644
index 0000000000..bae685b951
--- /dev/null
+++ b/src/components/views/auth/VectorAuthPage.js
@@ -0,0 +1,73 @@
+/*
+Copyright 2019 New Vector Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+'use strict';
+
+import React from 'react';
+import sdk from 'matrix-react-sdk/lib/index';
+import SdkConfig from 'matrix-react-sdk/lib/SdkConfig';
+
+export default class VectorAuthPage extends React.PureComponent {
+ static replaces = 'AuthPage'
+
+ render() {
+ const AuthFooter = sdk.getComponent('auth.AuthFooter');
+
+ const brandingConfig = SdkConfig.get().branding;
+ let backgroundUrl = "themes/riot/img/backgrounds/valley.jpg";
+ if (brandingConfig && brandingConfig.welcomeBackgroundUrl) {
+ backgroundUrl = brandingConfig.welcomeBackgroundUrl;
+ }
+
+ const pageStyle = {
+ background: `center/cover fixed url(${backgroundUrl})`,
+ };
+
+ const modalStyle = {
+ position: 'relative',
+ background: 'initial',
+ };
+
+ const blurStyle = {
+ position: 'absolute',
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0,
+ filter: 'blur(10px)',
+ background: pageStyle.background,
+ };
+
+ const modalContentStyle = {
+ display: 'flex',
+ zIndex: 1,
+ background: 'rgba(255, 255, 255, 0.59)',
+ borderRadius: '4px',
+ };
+
+ return (
+
+
+
+
+ { this.props.children }
+
+
+
+
+ );
+ }
+}
diff --git a/src/components/views/login/VectorCustomServerDialog.js b/src/components/views/auth/VectorCustomServerDialog.js
similarity index 67%
rename from src/components/views/login/VectorCustomServerDialog.js
rename to src/components/views/auth/VectorCustomServerDialog.js
index c60ff6da27..b817cc3feb 100644
--- a/src/components/views/login/VectorCustomServerDialog.js
+++ b/src/components/views/auth/VectorCustomServerDialog.js
@@ -16,9 +16,12 @@ limitations under the License.
*/
const React = require("react");
-const sanitizeHtml = require("sanitize-html");
import { _t } from 'matrix-react-sdk/lib/languageHandler';
+/**
+ * This is identical to `CustomServerDialog` except for replacing "this app"
+ * with "Riot".
+ */
module.exports = React.createClass({
displayName: 'VectorCustomServerDialog',
statics: {
@@ -32,13 +35,17 @@ module.exports = React.createClass({
{ _t('Custom Server Options') }
-
This allows "+
- "you to use Riot with an existing Matrix account on a different home "+
- "server.
You can also set a custom identity server but you won't "+
- "be able to invite users by email address, or be invited by email address yourself.",
- ))}} />
+
{_t(
+ "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.",
+ )}
+
{_t(
+ "You can also set a custom identity server, but you won't be " +
+ "able to invite users by email address, or be invited by email " +
+ "address yourself.",
+ )}
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 24233360e0..fdf6a83517 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -12,7 +12,7 @@
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализиран, шифрован чат и колаборация базирани на [matrix]",
"Search the room directory": "Търсене в директорията със стаи",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix съществуват много стаи, свързани към вече съществуващи мрежи (Slack, IRC, Gitter и т.н.) или независими такива. Разгледайте директорията!",
- "Chat with Riot Bot": "Чат с Riot Bot",
+ "Chat with Riot Bot": "Чати с Riot Bot",
"Get started with some tips from Riot Bot!": "Започнете с някои съвети от Riot Bot!",
"General discussion about Matrix and Riot": "Обща дискусия относно Matrix и Riot",
"Discussion of all things Matrix!": "Дискусия за всичко свързано с Matrix!",
@@ -35,5 +35,12 @@
"Contributing code to Matrix and Riot": "Допринасяне с код към Matrix и Riot",
"Dev chat for the Riot/Web dev team": "Чат за разработващия екип на Riot/Web",
"Dev chat for the Dendrite dev team": "Чат за разработващия екип на Dendrite",
- "Co-ordination for Riot translators": "Координация за преводачи на Riot"
+ "Co-ordination for Riot translators": "Координация за преводачи на Riot",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Може да настроите и собствен сървър за самоличност, но така няма да можете да каните потребители по имейл адрес или да бъдете поканени посредством вашия имейл адрес.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Може да използвате настройките за собствен сървър за да влезете в друг Matrix сървър, чрез указване на адреса му. Това Ви позволява да използвате Riot със съществуващ Matrix акаунт принадлежащ към друг сървър.",
+ "Sign In": "Вход",
+ "Create Account": "Създай акаунт",
+ "Need help?": "Нужда от помощ?",
+ "Explore rooms": "Открий стаи",
+ "Room Directory": "Директория със стаи"
}
diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json
index d450f16621..ea3ecf2988 100644
--- a/src/i18n/strings/ca.json
+++ b/src/i18n/strings/ca.json
@@ -5,7 +5,7 @@
"Unknown device": "Dispositiu desconegut",
"Welcome to Riot.im": "Us donem la benvinguda a Riot.im",
"Chat with Riot Bot": "Conversa amb el Bot de Riot",
- "Riot is not supported on mobile web. Install the app?": "Riot no és compatible amb la web per a mòbils. Voleu instal·lar l'aplicació per a mòbils?",
+ "Riot is not supported on mobile web. Install the app?": "El Riot no és compatible amb la web per a mòbils. Voleu instal·lar l'aplicació per a mòbils?",
"Riot Desktop on %(platformName)s": "Riot d'escriptori per a %(platformName)s",
"You need to be using HTTPS to place a screen-sharing call.": "Heu d'utilitzar HTTPS per poder fer una trucada amb pantalla compartida.",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Podeu utilitzar opcions de servidor personalitzades per iniciar sessió en altres servidors Matrix especificant una URL diferent a la del servidor principal. Això us permet utilitzar Riot amb un compte de Matrix existent en un servidor d'origen diferent. També podeu establir un servidor d'identitat personalitzat, però no podreu convidar o ser convidat per correu electrònic.",
@@ -21,18 +21,19 @@
"Riot/Android & matrix-android-sdk chat": "Riot/Android & Xat matrix-android-sdk",
"Matrix technical discussions": "Debats tècnics sobre Matrix",
"Running Matrix services": "Serveis de Matrix en marxa",
- "Community-run support for Synapse": "Suport de la comunitat per a Synapse",
- "Admin support for Dendrite": "Suport dels administrador per a Dendrite",
+ "Community-run support for Synapse": "Suport comunitari per a Synapse",
+ "Admin support for Dendrite": "Suport dels administradors per a Dendrite",
"Announcements about Synapse releases": "Anuncis sobre llançaments de Synapse",
"Support for those using and running matrix-appservice-irc": "Suport per a aquells que utilitzen i executen matrix-appservice-irc",
- "Building services on Matrix": "Construir serveis a Matrix",
- "Support for those using the Matrix spec": "Suport per a aquells que utilitzen l'especificació Matrix",
+ "Building services on Matrix": "Construcció de serveis a Matrix",
+ "Support for those using the Matrix spec": "Suport per a aquells que utilitzen l'especificació de Matrix",
"Design and implementation of E2E in Matrix": "Disseny i implementació de l'E2E a Matrix",
"Implementing VR services with Matrix": "Implementació de serveis VR amb Matrix",
"Implementing VoIP services with Matrix": "Implementació de serveis VoIP amb Matrix",
- "Discussion of the Identity Service API": "Debat sobre l'API Identity Service",
+ "Discussion of the Identity Service API": "Discussió sobre l'API Identity Service",
"Support for those using, running and writing other bridges": "Suport per a aquells que utilitzen, executen i escriuen altres ponts",
- "Contributing code to Matrix and Riot": "Contribuir amb codi a Matrix i Riot",
- "Dev chat for the Riot/Web dev team": "Xat de l'equip de desenvolupadors Riot/Web per a desenvolupadors",
- "Dev chat for the Dendrite dev team": "Xat de l'equip Dendrite per a desenvolupadors"
+ "Contributing code to Matrix and Riot": "Contribuir codi a Matrix i Riot",
+ "Dev chat for the Riot/Web dev team": "Xat de l'equip de desenvolupadors Riot/Web",
+ "Dev chat for the Dendrite dev team": "Xat de l'equip Dendrite per a desenvolupadors",
+ "Co-ordination for Riot translators": "Coordinació dels traductors del Riot"
}
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index c9c4f76737..4c0f71c250 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -10,7 +10,7 @@
"Welcome to Riot.im": "Willkommen bei Riot.im",
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- & Kollaborationslösung unterstützt von [matrix]",
"Search the room directory": "Raum-Verzeichnis durchsuchen",
- "Chat with Riot Bot": "Mit dem Riot-Bot chatten",
+ "Chat with Riot Bot": "Chatte mit dem Riot Bot",
"Get started with some tips from Riot Bot!": "Lass Dir vom Riot-Bot eine Einführung geben!",
"Discussion of all things Matrix!": "\"Diskussion über alle Dinge\"-Matrix!",
"Riot/Web & Desktop chat": "Riot/Web & Desktop-Chat",
@@ -35,5 +35,12 @@
"Dev chat for the Dendrite dev team": "Entwickler-Chat für das Dendrite-Entwickler-Team",
"General discussion about Matrix and Riot": "Allgemeine Diskussion über Matrix und Riot",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Die benutzerdefinierten Server-Einstellungen kannst du verwenden, um dich auf anderen Matrix-Servern anzumelden, indem du eine abweichende Heimserver-URL eingibst. Somit ist es möglich, Riot mit einem bereits bestehendem Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden. Außerdem kannst du einen benutzerdefinierten Identitätsserver eingeben. Allerdings kannst du in diesem Fall Benutzer nicht mehr per E-Mail-Adresse einladen und auch selbst nicht mehr per E-Mail-Adresse eingeladen werden.",
- "Co-ordination for Riot translators": "Koordination für Riot-Übersetzer"
+ "Co-ordination for Riot translators": "Koordination für Riot-Übersetzer",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kannst die erweiterte Serveroption nutzen um dich an einem anderen Matrixserver anzumelden, indem du eine andere Heimserver-URL angibst. Dies erlaubt dir, Riot mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kannst auch einen anderen Identitätsserver setzen. Dieser hat einen anderen Wissensstand als der Standardserver, weswegen es beim Einladen oder Eingeladen werden mittels E-Mail-Adresse Probleme geben kann.",
+ "Sign In": "Anmelden",
+ "Create Account": "Konto erstellen",
+ "Need help?": "Braucht du Hilfe?",
+ "Explore rooms": "Räume erkunden",
+ "Room Directory": "Raumverzeichnis"
}
diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json
index b34c3b1174..2fb6d6eb17 100644
--- a/src/i18n/strings/el.json
+++ b/src/i18n/strings/el.json
@@ -6,13 +6,13 @@
"Unknown device": "Άγνωστη συσκευή",
"You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για το διαμοιρασμό της επιφάνειας εργασίας μέσω κλήσης.",
"Riot is not supported on mobile web. Install the app?": "Το Riot δεν υποστηρίζεται από περιηγητές κινητών. Θέλετε να εγκαταστήσετε την εφαρμογή;",
- "powered by Matrix": "βασισμένο στο Matrix",
+ "powered by Matrix": "με τη βοήθεια του Matrix",
"Welcome to Riot.im": "Καλώς ήλθατε στο Riot.im",
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Αποκεντρωμένη, κρυπτογραφημένη συνομιλία & συνεργασία με τη βοήθεια του [matrix]",
- "Search the room directory": "Αναζήτηση του ευρετηρίου δωματίων",
+ "Search the room directory": "Αναζήτηση στο ευρετήριο δωματίων",
"Chat with Riot Bot": "Συνομιλία με το Riot Bot",
"Get started with some tips from Riot Bot!": "Ξεκινήστε με μερικές συμβουλές από το Riot Bot!",
- "General discussion about Matrix and Riot": "Γενική συζήτηση σχετικά με Matrix και Riot",
+ "General discussion about Matrix and Riot": "Γενική συζήτηση σχετικά με το Matrix και το Riot",
"Discussion of all things Matrix!": "Συζήτηση για όλα τα πράγματα του Matrix!",
"Riot/Web & Desktop chat": "Συζήτηση για το Riot/Web & Desktop",
"Riot/iOS & matrix-ios-sdk chat": "Συζήτηση για το Riot/iOS & matrix-ios-sdk",
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 9641f0dd71..9c467cfc2f 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -1,39 +1,21 @@
{
- "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?",
"Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s",
"Unknown device": "Unknown device",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
- "Custom Server Options": "Custom Server Options",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.",
- "Dismiss": "Dismiss",
"powered by Matrix": "powered by Matrix",
+ "Custom Server Options": "Custom Server Options",
+ "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.": "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.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.",
+ "Dismiss": "Dismiss",
"Welcome to Riot.im": "Welcome to Riot.im",
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]",
- "Search the room directory": "Search the room directory",
- "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!",
+ "Sign In": "Sign In",
+ "Create Account": "Create Account",
+ "Need help?": "Need help?",
"Chat with Riot Bot": "Chat with Riot Bot",
- "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!",
- "General discussion about Matrix and Riot": "General discussion about Matrix and Riot",
- "Discussion of all things Matrix!": "Discussion of all things Matrix!",
- "Riot/Web & Desktop chat": "Riot/Web & Desktop chat",
- "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat",
- "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat",
- "Matrix technical discussions": "Matrix technical discussions",
- "Running Matrix services": "Running Matrix services",
- "Community-run support for Synapse": "Community-run support for Synapse",
- "Admin support for Dendrite": "Admin support for Dendrite",
- "Announcements about Synapse releases": "Announcements about Synapse releases",
- "Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc",
- "Building services on Matrix": "Building services on Matrix",
- "Support for those using the Matrix spec": "Support for those using the Matrix spec",
- "Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix",
- "Implementing VR services with Matrix": "Implementing VR services with Matrix",
- "Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix",
- "Discussion of the Identity Service API": "Discussion of the Identity Service API",
- "Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges",
- "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot",
- "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team",
- "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team",
- "Co-ordination for Riot translators": "Co-ordination for Riot translators"
+ "Explore rooms": "Explore rooms",
+ "Room Directory": "Room Directory",
+ "Search the room directory": "Search the room directory",
+ "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!"
}
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index bd9edc8a95..7b42bd410a 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -35,5 +35,12 @@
"Dev chat for the Dendrite dev team": "Dendrite garapen taldearen txata",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Badauden sareetara lotutako gela ugari daude Matrixen (Slack, IRC, Gitter eta abar), baita independienteak. Begiratu direktorioa!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Zerbitzari pertsonalizatuaren aukerak erabili ditzakezu beste Matrix zerbitzarietan saioa hasteko, han beste hasiera-zerbitzari baten URLa sartuz. Horrela Riot aurretik duzun kontu batekin erabili dezakezu beste hasiera-zerbitzari batean. Identitate-zerbitzari pertsonalizatu bat ezarri dezakezu ere, baina orduan ezin izango dituzu erabiltzaileak e-mail helbidea erabiliz gonbidatu, edo ezin izan izango zaituzte zu e-mail helbidea erabiliz gonbidatu.",
- "Co-ordination for Riot translators": "Riot itzultzaileen koordinazioa"
+ "Co-ordination for Riot translators": "Riot itzultzaileen koordinazioa",
+ "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.": "Zerbitzari pertsonalizatuaren aukera erabili dezakezu bestelako Matrix zerbitzari batera konektatzeko, bere URL-a adierazita. Honek Riot beste zerbitzari batean duzun Matrix kontuarekin erabiltzea ahalbidetzen dizu.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Identitate zerbitzari pertsonalizatu bat ere ezarri dezakezu, baina orduan ezin izango dituzu erabiltzaileak e-mail helbidearen bidez gonbidatu, edo ezin izango zaituzte e-mail helbidearen bidez zu gonbidatu.",
+ "Sign In": "Hasi saioa",
+ "Create Account": "Sortu kontua",
+ "Need help?": "Laguntza behar?",
+ "Explore rooms": "Arakatu gelak",
+ "Room Directory": "Gelen direktorioa"
}
diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json
index ad99f01fba..27222c8d0f 100644
--- a/src/i18n/strings/fi.json
+++ b/src/i18n/strings/fi.json
@@ -34,5 +34,12 @@
"Contributing code to Matrix and Riot": "Osallistu kehitystyöhön",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s %(osName)s",
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Salattua ja vikasietoista viestintää Matrix -teknologialla",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit käyttää edistyksellisiä asetuksia kirjautuaksesi muille Matrix palvelimille, määrittelemällä kotipalvelimen URL-osoitteen. Tämän avulla voit käyttää Riot:ia olemassa olevalla toisen Matrix palvelimen käyttäjätilillä. Voit myös asettaa valinnaisen identiteettipalvelimen, mutta et voi kutsua käyttäjiä sähköpostiosoitteella tai tulla kutsutuksi."
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit käyttää edistyksellisiä asetuksia kirjautuaksesi muille Matrix palvelimille, määrittelemällä kotipalvelimen URL-osoitteen. Tämän avulla voit käyttää Riot:ia olemassa olevalla toisen Matrix palvelimen käyttäjätilillä. Voit myös asettaa valinnaisen identiteettipalvelimen, mutta et voi kutsua käyttäjiä sähköpostiosoitteella tai tulla kutsutuksi.",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Voit käyttää mukautettuja palvelinasetuksia kirjautuaksesi muihin Matrix-palvelimiin määrittämällä toisen kotipalvelimen osoitteen. Tämä mahdollistaa Riotin käyttämisen toisella palvelimella olevalla Matrix-tunnuksella.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit myös määrittää toisen identiteettipalvelimen, mutta et voi kutsua muita käyttäjiä sähköpostin perusteella, eivätkä se voi kutsua sinua.",
+ "Sign In": "Kirjaudu sisään",
+ "Create Account": "Luo tunnus",
+ "Need help?": "Tarvitsetko apua?",
+ "Explore rooms": "Etsi huoneita",
+ "Room Directory": "Huonehakemisto"
}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 3bdf9466e4..b7401ea434 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -8,7 +8,7 @@
"Unknown device": "Appareil inconnu",
"You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel avec partage d’écran.",
"Welcome to Riot.im": "Bienvenue sur Riot.im",
- "Chat with Riot Bot": "Discussion avec Riot Bot",
+ "Chat with Riot Bot": "Discuter avec le bot Riot",
"Search the room directory": "Rechercher dans le répertoire de salons",
"Get started with some tips from Riot Bot!": "Démarrer avec quelques astuces de Riot Bot !",
"Riot/Android & matrix-android-sdk chat": "Discussions sur Riot/Android & matrix-android-sdk",
@@ -35,5 +35,12 @@
"Dev chat for the Dendrite dev team": "Discussion pour l'équipe de développeurs de Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "De nombreux salons existent déjà dans Matrix, liés à des réseaux existants (Slack, IRC, Gitter etc) ou indépendants. Jetez un œil au répertoire !",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vous pouvez utiliser les options de serveur personnalisé pour vous connecter à d'autres serveurs Matrix en précisant un serveur d'accueil différent. Cela vous permet d'utiliser Riot avec un compte Matrix existant sur un autre serveur d'accueil. Vous pouvez aussi renseigner un serveur d'identité personnalisé mais vous ne pourrez pas inviter d'utilisateurs avec leur adresse e-mail, ou être invité avec votre adresse e-mail.",
- "Co-ordination for Riot translators": "Coordination des traducteurs de Riot"
+ "Co-ordination for Riot translators": "Coordination des traducteurs de Riot",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Vous pouvez utiliser les options de serveur personnalisé pour vous connecter à d'autres serveurs Matrix en renseignant l'URL d'un autre serveur d'accueil. Cela vous permet d'utiliser Riot avec un compte Matrix existant sur un serveur d'accueil différent.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Vous pouvez aussi renseigner un serveur d'identité personnalisé, mais vous ne pourrez pas inviter d'utilisateurs avec leur adresse e-mail, ou être vous-même invité avec votre adresse e-mail.",
+ "Sign In": "Se connecter",
+ "Create Account": "Créer un compte",
+ "Need help?": "Besoin d'aide ?",
+ "Explore rooms": "Explorer les salons",
+ "Room Directory": "Répertoire de salons"
}
diff --git a/src/i18n/strings/hi.json b/src/i18n/strings/hi.json
index e6d735db8d..82b716bd00 100644
--- a/src/i18n/strings/hi.json
+++ b/src/i18n/strings/hi.json
@@ -10,7 +10,7 @@
"powered by Matrix": "मैट्रिक्स द्वारा संचालित",
"Welcome to Riot.im": "Riot.im में आपका स्वागत है",
"Decentralised, encrypted chat & collaboration powered by [matrix]": "[मैट्रिक्स] द्वारा संचालित विकेंद्रीकृत, एन्क्रिप्टेड चैट और सहयोगिता",
- "Search the room directory": "रूम डायरेक्टरी को खोजें",
+ "Search the room directory": "रूम डायरेक्टरी में खोजें",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "मौजूदा नेटवर्क से जुड़े मैट्रिक्स में बहुत से कमरे पहले से मौजूद हैं (स्लैक, आईआरसी, गिटर इत्यादि) या स्वतंत्र। डायरेक्टरी देखें!",
"Chat with Riot Bot": "रायट बॉट के साथ चैट करें",
"Get started with some tips from Riot Bot!": "रायट बॉट से कुछ सुझावों के साथ शुरू करें!",
diff --git a/src/i18n/strings/hr.json b/src/i18n/strings/hr.json
new file mode 100644
index 0000000000..c03a82905f
--- /dev/null
+++ b/src/i18n/strings/hr.json
@@ -0,0 +1,39 @@
+{
+ "Riot is not supported on mobile web. Install the app?": "Riot nije podržan na mobilnom pregledniku. Instalirati aplikaciju?",
+ "Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s",
+ "Unknown device": "Nepoznati uređaj",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s preko %(browserName)s na %(osName)s",
+ "You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS kako biste pokrenuli poziv s dijeljenjem ekrana.",
+ "Custom Server Options": "Prilagođene opcije poslužitelja",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Možete koristiti prilagođene opcije poslužitelja za prijavu na ostale Matrix poslužitelje, navodeći drugačiji URL za Kućni poslužitelj. Ovo vam omogućuje da koristite Riot s postojećim Matrix računom na različitom kućnom poslužitelju. Također možete postaviti prilagođeni poslužitelj identiteta, ali u tom slučaju nećete moći pozivati korisnike preko njihove email adrese, niti sami biti pozvani preko vase email adrese.",
+ "Dismiss": "Odbaci",
+ "powered by Matrix": "powered by Matrix",
+ "Welcome to Riot.im": "Dobrodošli u Riot.im",
+ "Chat with Riot Bot": "Razgovor s Riot Botom",
+ "Get started with some tips from Riot Bot!": "Krenite s par savjeta od Riot Bota!",
+ "General discussion about Matrix and Riot": "Opća rasprava o Matrixu i Riotu",
+ "Discussion of all things Matrix!": "Rasprava o svemu vezanome za Matrix!",
+ "Riot/Web & Desktop chat": "Riot/Web & Desktop chat",
+ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat",
+ "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat",
+ "Matrix technical discussions": "Tehničke rasprave o Matrixu",
+ "Running Matrix services": "Pokretanje Matrix usluga",
+ "Community-run support for Synapse": "Podrška zajednice za Synapse",
+ "Admin support for Dendrite": "Administratorska podrška za Dendrite",
+ "Announcements about Synapse releases": "Obavijesti o izdanjima Synapsea",
+ "Support for those using and running matrix-appservice-irc": "Podrška onima koji koriste i pokreću matrix-appservice-irc",
+ "Building services on Matrix": "Razvoj usluga na Matrixu",
+ "Support for those using the Matrix spec": "Podrška onima koji koriste Matrix spec",
+ "Design and implementation of E2E in Matrix": "Dizajn i implementacija E2E u Matrixu",
+ "Implementing VR services with Matrix": "Implementiranje VR usluga s Matrixom",
+ "Implementing VoIP services with Matrix": "Implementiranje VoIP usluga s Matrixom",
+ "Discussion of the Identity Service API": "Rasprava vezana za Identity Service API",
+ "Support for those using, running and writing other bridges": "Podrška onima koji koriste, pokreću i pišu ostale mostove",
+ "Contributing code to Matrix and Riot": "Doprinos kodu Matrixa i Riota",
+ "Dev chat for the Riot/Web dev team": "Dev chat za Riot/Web dev tim",
+ "Dev chat for the Dendrite dev team": "Dev chat za Dendrite dev team",
+ "Co-ordination for Riot translators": "Koordinacija Riot prevoditelja",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirani, enkriptirani chat & kolaboracija powered by [matrix]",
+ "Search the room directory": "Pretražite imenik soba",
+ "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Veliki broj soba već postoji na Matrixu, povezanih s postojećim mrežama (Slack, IRC, Gitter itd) ili nezavisnih. Zavirite u imenik!"
+}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index ad20927eec..3d58c10b4d 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -35,5 +35,12 @@
"Dev chat for the Dendrite dev team": "Csevegés a Dendrite fejlesztői csapatával fejlesztőknek",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Már sok szoba van a Matrixon: más hálózatokkal (Slack, IRC, Gitter stb.) összekapcsolt és függetlenek szobák is. Nézd meg a szobajegyzéket!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bejelentkezhetsz más Matrix szerverre is az egyedi szerverbeállításoknál megadott Matrix szerver URL-jével. Így használhatod a Riotot egy már máshol meglévő Matrix fiókkal is. Beállíthatsz egyéni identitásszervert is, de akkor nem tudsz más felhasználókat e-mail címmel meghívni, illetve ők sem tudnak téged.",
- "Co-ordination for Riot translators": "Koordináció Riot fordítók számára"
+ "Co-ordination for Riot translators": "Koordináció Riot fordítók számára",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Más azonosítási szervert is használhatsz, de akkor nem tudsz másokat e-mail cím alapján meghívni és téged sem fognak tudni.",
+ "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",
+ "Need help?": "Segíthetünk?",
+ "Explore rooms": "Szobák felfedezése",
+ "Room Directory": "Szoba lista"
}
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index f563819e87..6b54fe22b2 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -29,7 +29,7 @@
"Support for those using, running and writing other bridges": "Supporto per chi usa, amministra e scrive altri ponti (bridge)",
"Contributing code to Matrix and Riot": "Contributi di codice per Matrix e Riot",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s tramite %(browserName)s su %(osName)s",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat criptate e decentralizzate & collaborazione offerta da [matrix]",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat criptate, decentralizzate e collaborazioni offerte da [matrix]",
"Discussion of all things Matrix!": "Discussione su tutto riguardo Matrix!",
"Dev chat for the Riot/Web dev team": "Chat per gli sviluppatori di Riot/Web",
"Dev chat for the Dendrite dev team": "Chat per gli sviluppatori di Dendrite",
diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json
index 44f2bf2f95..5019066afd 100644
--- a/src/i18n/strings/nb_NO.json
+++ b/src/i18n/strings/nb_NO.json
@@ -12,5 +12,21 @@
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & sammabeid drevet av [matrix]",
"Search the room directory": "Søk i romutvalget",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Allerede finnes det alskens rom i Matrix, sammenkoblet til eksisterende nettverk (Slack, IRC, Gitter osv.) eller selvstendig. Dersom De formoder, kan De kikke på utvalget!",
- "Chat with Riot Bot": "Nettprat med Riot Bot"
+ "Chat with Riot Bot": "Nettprat 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 egendefinert tjener instillingen for å logge inn på andre Matrix tjenere ved å spesifisere enn annen hjemmetrjener URL. Dette lar deg bruke Riot med en eksisterende Matrix konto på en annen hjemmetjener.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan også stille inn en egen idendtitetstjener, men du kommer ikke til å kunne invitere andre brukere med e-post, eller bli invitert med e-post selv.",
+ "Get started with some tips from Riot Bot!": "Kom i gang med noen tips fra Riot Bot!",
+ "General discussion about Matrix and Riot": "Generelle diskusjoner om Matrix og Riot",
+ "Discussion of all things Matrix!": "Diskusjoner om alt Matrix!",
+ "Riot/Web & Desktop chat": "Riot/Web- & Skrivebordsprat",
+ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk",
+ "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk",
+ "Matrix technical discussions": "Tekniske Matrix-diskusjoner",
+ "Running Matrix services": "Kjør Matrix servicer",
+ "Community-run support for Synapse": "Samfunnsholdt hjelpetjeneste for Synapse",
+ "Admin support for Dendrite": "Administrator hjelp for Dendrite",
+ "Announcements about Synapse releases": "Kunngjøring om Synapse utgivelser",
+ "Sign In": "Logg inn",
+ "Create Account": "Lag konto",
+ "Need help?": "Trenger du hjelp?"
}
diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json
index a94e77e599..a07747ba57 100644
--- a/src/i18n/strings/nn.json
+++ b/src/i18n/strings/nn.json
@@ -7,16 +7,16 @@
"Dismiss": "Avvis",
"powered by Matrix": "Matrixdriven",
"Welcome to Riot.im": "Velkomen til Riot.im",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & samarbeid driven av [matrix]",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & samarbeid drive av [matrix]",
"Search the room directory": "Søk i romutvalet",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Det finst allereie massevis av rom på Matrix, anten lenkja til nettverk som allereie finst (Slack, IRC, Gitter osv.) eller uavhengige. Tak ein titt på utvalet!",
"Chat with Riot Bot": "Nettprat med Riot Bot",
"Get started with some tips from Riot Bot!": "Kom i gang med nokre råd frå Riot Bot!",
"General discussion about Matrix and Riot": "Allmenn meiningsutveksling om Matrix og Riot",
"Discussion of all things Matrix!": "Meiningsutveksling om alt som gjeld Matrix!",
- "Riot/Web & Desktop chat": "Riot/Web & Skrivebordsprat",
- "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk-prat",
- "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk-prat",
+ "Riot/Web & Desktop chat": "Riot/Web og Skrivebord",
+ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS og matrix-ios-sdk",
+ "Riot/Android & matrix-android-sdk chat": "Riot/Android og matrix-android-sdk",
"Matrix technical discussions": "Teknisk meiningsutveksling om Matrix",
"Running Matrix services": "Å køyra Matrix-tenestar",
"Community-run support for Synapse": "Samfunnsdriven støtte for Synapse",
@@ -35,5 +35,12 @@
"Dev chat for the Dendrite dev team": "Utviklar-prat for Dendrite-utviklargruppa",
"Co-ordination for Riot translators": "Samordning for Riot-omsetjare",
"Custom Server Options": "Eigentenar-innstillingar",
- "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan bruka eigentenarinnstillingar til å logga inn på andre Matrixtenarar ved å oppgje ein annan Heimtenar-URL. Dette gjer at du kan bruka Riot med ein Matrixbrukar som allereie finst på ein annan heimtenar. Du kan òg setja ein eigen identitetstenar men du kjem i so fall ikkje til å kunna byda brukare inn med epost, eller å sjølv verta boden inn med epost."
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan bruka eigentenarinnstillingar til å logga inn på andre Matrixtenarar ved å oppgje ein annan Heimtenar-URL. Dette gjer at du kan bruka Riot med ein Matrixbrukar som allereie finst på ein annan heimtenar. Du kan òg setja ein eigen identitetstenar men du kjem i so fall ikkje til å kunna byda brukare inn med epost, eller å sjølv verta boden inn med epost.",
+ "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.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan òg velja ein eigendefinert identitetstenar, men då kjem du ikkje til å innvitere brukarar gjennom e-post, eller verta invitert med e-post sjølv.",
+ "Sign In": "Logg inn",
+ "Create Account": "Lag brukar",
+ "Need help?": "Treng du hjelp?",
+ "Explore rooms": "Vert kjend med romma",
+ "Room Directory": "Romutval"
}
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index b182eeb894..85d9a5dd8a 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -35,5 +35,9 @@
"Dev chat for the Dendrite dev team": "Czat deweloperów zespołu Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix ma wiele, już działających pokoi, połączonych z istniejącymi sieciami, takimi jak Slack, IRC lub Gitter, a także wiele zupełnie niezależnych. Możesz przejrzeć je wszystkie w spisie pokoi!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Możesz skorzystać z opcji niestandardowego serwera, aby zalogować się na inne serwery Matrix, podając inny adres URL serwera domowego. Pozwala to na używanie Riot z istniejącym kontem Matrix na innym serwerze domowym. Możesz również ustawić niestandardowy serwer tożsamości, ale nie będziesz w stanie zapraszać użytkowników przez adres e-mail ani otrzymywać zaproszeń na adres e-mail.",
- "Co-ordination for Riot translators": "Koordynacja tłumaczy Riot"
+ "Co-ordination for Riot translators": "Koordynacja tłumaczy Riot",
+ "Create Account": "Stwórz konto",
+ "Sign In": "Zaloguj",
+ "Need help?": "Potrzebujesz pomocy?",
+ "Room Directory": "Katalog pokojów"
}
diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json
index db6de1436d..f122a4d5ff 100644
--- a/src/i18n/strings/pt.json
+++ b/src/i18n/strings/pt.json
@@ -23,7 +23,7 @@
"Admin support for Dendrite": "Suporte de administração para o Dendrite",
"Announcements about Synapse releases": "Anúncios acerca de lançamentos do Synapse",
"Support for those using and running matrix-appservice-irc": "Suporte para aqueles a correr e a utilizar o matrix-appservice-irc",
- "Building services on Matrix": "Construir serviços no Matrix",
+ "Building services on Matrix": "Construindo serviços no Matrix",
"Support for those using the Matrix spec": "Suporte para os utilizadores da especificação do Matrix",
"Design and implementation of E2E in Matrix": "Design e implementação de encriptação ponto-a-ponto (E2E) no Matrix",
"Implementing VR services with Matrix": "Implementar serviços de realidade virtual (VR) com o Matrix",
@@ -33,5 +33,7 @@
"Contributing code to Matrix and Riot": "Contribuir código para o Matrix e para o Riot",
"Dev chat for the Riot/Web dev team": "Conversa de desenvolvimento para a equipa do Riot/Web",
"Dev chat for the Dendrite dev team": "Conversa de desenvolvimento para a equipa do Dendrite",
- "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Já existem muitas salas no Matrix, ligadas a redes já existentes (Slack, IRC, Gitter, etc) ou independentes. Dê uma vista de olhos no diretório!"
+ "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Já existem muitas salas no Matrix, ligadas a redes já existentes (Slack, IRC, Gitter, etc) ou independentes. Dê uma vista de olhos no diretório!",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Você pode usar as opções de servidor personalizado para entrar em outros servidores Matrix, especificando um diferente URL de servidor doméstico. Isto permite que você utilize Riot com uma conta Matrix existente em um servidor doméstico diferente. Você também pode definir um servidor de identidade personalizado, porém não poderá convidar usuários por endereço de e-mail nem ser convidado por endereço de e-mail.",
+ "Co-ordination for Riot translators": "Coordenação para tradutores do Riot"
}
diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json
index afdfc1604b..e9dea2bd99 100644
--- a/src/i18n/strings/pt_BR.json
+++ b/src/i18n/strings/pt_BR.json
@@ -1,10 +1,10 @@
{
"Custom Server Options": "Opções para Servidor Personalizado",
"Dismiss": "Descartar",
- "powered by Matrix": "rodando a partir do Matrix",
+ "powered by Matrix": "oferecido por 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 is not supported on mobile web. Install the app?": "Riot versão web não é suportado a partir de celular. Quer instalar o app para celular?",
+ "Riot is not supported on mobile web. Install the app?": "Riot não funciona em navegador de smartphone. Quer instalar o aplicativo?",
"Unknown device": "Dispositivo desconhecido",
"You need to be using HTTPS to place a screen-sharing call.": "Você precisa estar usando HTTPS para poder iniciar uma chamada com compartilhamento de tela.",
"Welcome to Riot.im": "Seja bem-vinda(o) a Riot.im",
@@ -19,7 +19,7 @@
"Matrix technical discussions": "Discussões técnicas do Matrix",
"Running Matrix services": "Rodando serviços Matrix",
"Community-run support for Synapse": "Apoio ao Synapse gerido pela comunidade",
- "Admin support for Dendrite": "Suporte de administração para Dendrite",
+ "Admin support for Dendrite": "Suporte administrativo para o Dendrite",
"Announcements about Synapse releases": "Anúncios sobre lançamentos do Synapse",
"Support for those using and running matrix-appservice-irc": "Apoio para as pessoas usando e rodando matrix-appservice-irc",
"Building services on Matrix": "Construindo serviços no Matrix",
@@ -33,7 +33,7 @@
"Dev chat for the Riot/Web dev team": "Chat de desenvolvimento para o time devel do Riot/Web",
"Dev chat for the Dendrite dev team": "Chat de desenvolvimento para o time devel do Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muitas salas já existem no Matrix, algumas independentes, e outras relacionadas a redes existentes (tais como Slack, IRC, Gitter, entre outras). Dê uma olhada na lista de salas públicas!",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo impulsionado por [matrix]",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo oferecido por [matrix]",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Você pode usar as opções customizadas de servidor para conectar-se a outros servidores Matrix ao especificar uma outra URL de Servidor de Base (homeserver). Isso permite que você use o Riot com uma conta Matrix existente em outro servidor de base. Você também pode definir um servidor de identidade customizado, mas neste caso você não poderá convidar outras pesoas por endereço de email, ou ser convidada/o pelo seu endereço de email.",
"Co-ordination for Riot translators": "Coordenação para tradutores Riot"
}
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index 95242e83b8..0e473bf6e2 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -1,32 +1,32 @@
{
"Custom Server Options": "Выбор другого сервера",
"Dismiss": "Отклонить",
- "powered by Matrix": "Основано на Matrix",
+ "powered by Matrix": "основано на Matrix",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s с %(browserName)s на %(osName)s",
"Riot Desktop on %(platformName)s": "Riot Desktop на %(platformName)s",
"Riot is not supported on mobile web. Install the app?": "Веб-сайт Riot не адаптирован для мобильных устройств. Установить приложение?",
"Unknown device": "Неизвестное устройство",
"You need to be using HTTPS to place a screen-sharing call.": "Для трансляции рабочего стола требуется использование HTTPS.",
- "Welcome to Riot.im": "Добро пожаловать на Riot.im",
- "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализованный, зашифрованный чат и совместное рабочее пространство на основе [matrix]",
+ "Welcome to Riot.im": "Добро пожаловать в Riot.im",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализованный, шифрованный чат и совместное рабочее пространство на основе [matrix]",
"Search the room directory": "Поиск в каталоге комнат",
- "Chat with Riot Bot": "Пообщаться с ботом Riot",
+ "Chat with Riot Bot": "Чат с ботом Riot",
"Get started with some tips from Riot Bot!": "Начните с советов от бота Riot!",
"General discussion about Matrix and Riot": "Общие разговоры о Matrix и Riot",
"Discussion of all things Matrix!": "Разговоры обо всем, что связано с Matrix!",
"Riot/Web & Desktop chat": "Чат о Riot/Web и Desktop",
- "Matrix technical discussions": "Технические разговоры о Matrix",
- "Running Matrix services": "Запуск и обслуживание своих серверов Matrix",
- "Community-run support for Synapse": "Поддержка Synapse от сообщества",
- "Admin support for Dendrite": "Поддержка администраторов Dendrite",
+ "Matrix technical discussions": "Технические обсуждения Matrix",
+ "Running Matrix services": "Запуск Matrix сервисов",
+ "Community-run support for Synapse": "Общественная поддержка Synapse",
+ "Admin support for Dendrite": "Административная поддержка Dendrite",
"Building services on Matrix": "Разработка сервисов на основе Matrix",
- "Implementing VoIP services with Matrix": "Реализация VoIP-служб на основе Matrix",
+ "Implementing VoIP services with Matrix": "Реализация VoIP сервисов на основе Matrix",
"Riot/iOS & matrix-ios-sdk chat": "Чат о Riot/iOS и matrix-ios-sdk",
"Riot/Android & matrix-android-sdk chat": "Чат о Riot/Android и matrix-android-sdk",
- "Announcements about Synapse releases": "Объявления о релизах Synapse",
+ "Announcements about Synapse releases": "Уведомление о релизах Synapse",
"Support for those using and running matrix-appservice-irc": "Поддержка пользователей и администраторов matrix-appservice-irc",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix существует множество комнат, как связанных с другими сетями (Slack, IRC, Gitter и пр.), так и самостоятельных. Загляните в каталог!",
- "Support for those using the Matrix spec": "Поддержка по вопросам спецификации Matrix",
+ "Support for those using the Matrix spec": "Поддержка по спецификации Matrix",
"Design and implementation of E2E in Matrix": "Разработка и внедрение сквозного шифрования в Matrix",
"Implementing VR services with Matrix": "Реализация сервисов виртуальной реальности (VR) на основе Matrix",
"Discussion of the Identity Service API": "Обсуждение API серверов идентификации",
@@ -35,5 +35,12 @@
"Dev chat for the Riot/Web dev team": "Чат для команды разработчиков Riot/Web",
"Dev chat for the Dendrite dev team": "Чат для команды разработчиков Dendrite",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Вы можете войти на другой сервер Matrix, указав его URL-адрес. Это позволяет использовать Riot с учетной записью Matrix на другом сервере. Кроме того, можно выбрать другой сервер идентификации, однако в таком случае вы не сможете приглашать пользователей или быть приглашенным по адресу электронной почты.",
- "Co-ordination for Riot translators": "Координационный чат для переводчиков Riot"
+ "Co-ordination for Riot translators": "Координационный чат для переводчиков Riot",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Вы можете изменить параметры для входа на другие Matrix серверы, указав другой URL.\nЭто позволит использовать Riot с учетной записью Matrix, существующей на другом сервере.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Также можно изменить сервер идентификации, но без возможности приглашать (или быть приглашённым) по адресу электронной почты.",
+ "Sign In": "Вход",
+ "Create Account": "Создать аккаунт",
+ "Need help?": "Помочь?",
+ "Room Directory": "Каталог комнат",
+ "Explore rooms": "Исследовать комнаты"
}
diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json
index 134585b385..22862b5809 100644
--- a/src/i18n/strings/sq.json
+++ b/src/i18n/strings/sq.json
@@ -35,5 +35,12 @@
"Contributing code to Matrix and Riot": "Kontribut me kod te Matrix dhe te Riot",
"Dev chat for the Riot/Web dev team": "Fjalosje mbi zhvillimin, për ekipin e zhvilluesve të Riot/Web-i",
"Dev chat for the Dendrite dev team": "Fjalosje mbi zhvillimi, për ekipin e zhvilluesve të Dendrite-it",
- "Co-ordination for Riot translators": "Bashkërendim për përkthyes të Riot-it"
+ "Co-ordination for Riot translators": "Bashkërendim për përkthyes të Riot-it",
+ "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.": "Mund të përdorni mundësitë mbi shërbyes vetjak, për të bërë hyrjen në shërbyes të tjerë Matrix, duke dhënë një tjetër URL shërbyesi Home. Kjo ju lejon ta përdorni këtë aplikacion në një tjetër shërbyes Home, me një llogari ekzistuese Matrix.",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Mundeni edhe të caktoni një shërbyes vetjak identitetesh, por s’do të jeni në gjendje të ftoni përdorues përmes adresash email, ose të ftoheni ju vetë përmes adrese email.",
+ "Sign In": "Hyni",
+ "Create Account": "Krijoni Llogari",
+ "Need help?": "Ju duhet ndihmë?",
+ "Explore rooms": "Eksploroni dhoma",
+ "Room Directory": "Listë Dhomash"
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 44fa9818d0..69d5561aad 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -35,5 +35,7 @@
"Admin support for Dendrite": "Hjälp för administratörer av Dendrite",
"Building services on Matrix": "Bygga tjänster med Matrix",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan använda anpassade serverinställningar för att logga in på andra Matrix-servrar genom att ange en annan hemserver-URL. Du kan då använda Riot med ett befintligt Matrix-konto på en annan hemserver. Du kan också ange en anpassad identitetsserver men kommer då inte kunna bjuda in användare med epostadress, eller själv bli inbjuden med epostadress.",
- "Co-ordination for Riot translators": "Koordination för Riot-översättare"
+ "Co-ordination for Riot translators": "Koordination för Riot-översättare",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan använda en egen identitetsserver, men då kan du inte bjuda in användare via epostadress eller själv bjudas in med din epostadress.",
+ "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.": "Under anpassade serverinställningar kan du logga in på andra Matrixservrar genom att ange en egen hemserveradress. På så sätt kan du använda Riot med ett Matrixkonto du redan har på en annan hemserver."
}
diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json
new file mode 100644
index 0000000000..58ceb1add2
--- /dev/null
+++ b/src/i18n/strings/vi.json
@@ -0,0 +1,20 @@
+{
+ "Riot is not supported on mobile web. Install the app?": "Riot không được hỗ trợ trên mobile web. Hãy cài app?",
+ "Riot Desktop on %(platformName)s": "Riot Desktop trên %(platformName)s",
+ "Unknown device": "Thiết bị không được nhận biết",
+ "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s với %(browserName)s trên %(osName)s",
+ "You need to be using HTTPS to place a screen-sharing call.": "Bạn phải sử dụng HTTPS để dùng chức năng chia sẻ màn hình.",
+ "Custom Server Options": "Các lựa chọn máy chủ",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bạn có thể sử dụng các máy chủ khác để đăng nhập vào Matrix bằng cách khai báo đường dẫn Home server. Cách này cho phép bạn sử dụng tài khoản hiện tại trên một Home server khác. Bạn cũng có thể chọn một Server định danh nhưng bạn không thể mời người dùng khác qua email.",
+ "Dismiss": "Bỏ qua",
+ "powered by Matrix": "tài trợ bởi Matrix",
+ "Welcome to Riot.im": "Chào mừng tới Riot.im",
+ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat phân tán, mã hóa & giao tiếp được tài trợ bởi [matrix]",
+ "Search the room directory": "Tìm trong danh sách phòng",
+ "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Rất nhiều phòng đã có sẵn trong Matrix, liên kết với các hệ thống mạng xã hội khác (Slack, IRC, Gitter,...) hoặc hoạt động độc lập. Hãy kiểm tra!",
+ "Chat with Riot Bot": "Chat với Riot Bot",
+ "Get started with some tips from Riot Bot!": "Bắt đầu với các hướng dẫn từ Riot Bot!",
+ "General discussion about Matrix and Riot": "Thảo luận chung về Matrix và Riot",
+ "Discussion of all things Matrix!": "Thào luận về mọi vấn đề liên quan đến Matrix!",
+ "Riot/Web & Desktop chat": "Riot/Web & Desktop chat"
+}
diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json
index 863c22457e..0e65cb60ca 100644
--- a/src/i18n/strings/zh_Hans.json
+++ b/src/i18n/strings/zh_Hans.json
@@ -35,5 +35,11 @@
"Dev chat for the Dendrite dev team": "Dendrite 的开发团队的开发讨论",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有许多聊天室,连接到已有的网络(Slack、IRC 与 Gitter 等)或独立的网络,请查看目录!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "你可以修改主服务器 URL 以登录其他的 Matrix 服务器。 这样,你就可以使用你在其他 Matrix 服务器上的账号。 你也可以修改身份认证服务器,但你可能因此无法使用电子邮件地址来邀请其他用户,或者被其他用户通过电子邮件邀请。",
- "Co-ordination for Riot translators": "Riot 翻译人员的合作讨论"
+ "Co-ordination for Riot translators": "Riot 翻译人员的合作讨论",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "您也可以自定义身份服务器,但是您将不能用电子邮箱地址邀请他人或被邀请。",
+ "Sign In": "登入",
+ "Create Account": "创建帐号",
+ "Need help?": "需要帮助?",
+ "Explore rooms": "探索房间",
+ "Room Directory": "房间目录"
}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 8670b7b2af..9e28f840ee 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -35,5 +35,12 @@
"Dev chat for the Dendrite dev team": "Dendrite 開發團隊的開發聊天室",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有許多聊天室,連結到已有的網路(Slack、IRC 與 Gitter 等等)或是獨立的網路。來看看聊天室目錄吧!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL. This allows you to use Riot with an existing Matrix account on a different home server. You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "您可以使用自訂的伺服器選項,並指定不同的家伺服器 URL 來登入其他的 Matrix 伺服器。 這讓您可以在不同的伺服器上以既有的 Matrix 帳號使用 Riot。 您也可以設定一個自訂的識別伺服器,但您可能無法透過電子郵件地址來邀請使用者,或是讓別人透過電子郵件邀請您。",
- "Co-ordination for Riot translators": "Riot 翻譯的協作"
+ "Co-ordination for Riot translators": "Riot 翻譯的協作",
+ "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "您可以以使用自訂伺服器選項指定不同的家伺服器 URL 以登入其他 Matrix 伺服器。這讓您可以在不同的家伺服器上使用既有的 Matrix 帳號登入 Riot。",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "您也可以設定自訂的身份識別伺服器,但您無法透過電子郵件地址邀請使用者,或是被邀請。",
+ "Sign In": "登入",
+ "Create Account": "建立帳號",
+ "Need help?": "需要協助?",
+ "Explore rooms": "探索聊天室",
+ "Room Directory": "聊天室目錄"
}
diff --git a/src/vector/index.html b/src/vector/index.html
index a5f3af9b81..5451ec5232 100644
--- a/src/vector/index.html
+++ b/src/vector/index.html
@@ -34,13 +34,13 @@
} %>
-
+
Sorry, Riot requires JavaScript to be enabled.
-
+
diff --git a/src/vector/index.js b/src/vector/index.js
index dcc6f2ab9e..6a70b76719 100644
--- a/src/vector/index.js
+++ b/src/vector/index.js
@@ -24,6 +24,8 @@ require('gfm.css/gfm.css');
require('highlight.js/styles/github.css');
require('draft-js/dist/Draft.css');
+import olmWasmPath from 'olm/olm.wasm';
+
import './rageshakesetup';
import React from 'react';
@@ -140,7 +142,7 @@ function onNewScreen(screen) {
// so in that instance, hardcode to use riot.im/app for now instead.
function makeRegistrationUrl(params) {
let url;
- if (window.location.protocol === "file:") {
+ if (window.location.protocol === "vector:") {
url = 'https://riot.im/app/#/register';
} else {
url = (
@@ -379,18 +381,19 @@ function loadOlm() {
*
* 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, to avoid caching issues, but as far as I
- * can tell this is completely impossible with webpack.
+ * 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: () => 'olm.wasm',
+ locateFile: () => olmWasmPath,
}).then(() => {
console.log("Using WebAssembly Olm");
}).catch((e) => {
console.log("Failed to load Olm: trying legacy version");
return new Promise((resolve, reject) => {
const s = document.createElement('script');
- s.src = 'olm_legacy.js';
+ s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too
s.onload = resolve;
s.onerror = reject;
document.body.appendChild(s);
diff --git a/src/vector/mobile_guide/index.html b/src/vector/mobile_guide/index.html
index 433d5b7e5a..64068cff28 100644
--- a/src/vector/mobile_guide/index.html
+++ b/src/vector/mobile_guide/index.html
@@ -364,9 +364,9 @@ body {
Launch the app, and enable Use custom server options (advanced) .
- In the Home Server field, enter:
+ In the homeserver field, enter:
- Note: You shouldn't need to modify the Identity Server field, which by default is set to https://vector.im.
+ Note: You shouldn't need to modify the identity server field, which by default is set to https://vector.im.
diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js
index a20b331321..6e600cfc85 100644
--- a/src/vector/platform/ElectronPlatform.js
+++ b/src/vector/platform/ElectronPlatform.js
@@ -28,17 +28,17 @@ const ipcRenderer = window.ipcRenderer;
function platformFriendlyName(): string {
// used to use window.process but the same info is available here
- if (navigator.userAgent.indexOf('Macintosh')) {
+ if (navigator.userAgent.includes('Macintosh')) {
return 'macOS';
- } else if (navigator.userAgent.indexOf('FreeBSD')) {
+ } else if (navigator.userAgent.includes('FreeBSD')) {
return 'FreeBSD';
- } else if (navigator.userAgent.indexOf('OpenBSD')) {
+ } else if (navigator.userAgent.includes('OpenBSD')) {
return 'OpenBSD';
- } else if (navigator.userAgent.indexOf('SunOS')) {
+ } else if (navigator.userAgent.includes('SunOS')) {
return 'SunOS';
- } else if (navigator.userAgent.indexOf('Windows')) {
+ } else if (navigator.userAgent.includes('Windows')) {
return 'Windows';
- } else if (navigator.userAgent.indexOf('Linux')) {
+ } else if (navigator.userAgent.includes('Linux')) {
return 'Linux';
} else {
return 'Unknown';
@@ -136,7 +136,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
// maybe we should pass basic styling (italics, bold, underline) through from MD
// we only have to strip out < and > as the spec doesn't include anything about things like &
// so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done.
- if (navigator.userAgent.indexOf('Linux')) {
+ if (navigator.userAgent.includes('Linux')) {
msg = msg.replace(//g, '>');
}
diff --git a/test/app-tests/joining.js b/test/app-tests/joining.js
index 5b4eae4213..16b29fcb84 100644
--- a/test/app-tests/joining.js
+++ b/test/app-tests/joining.js
@@ -71,7 +71,13 @@ describe('joining a room', function() {
}
});
- it('should not get stuck at a spinner', function() {
+ // TODO: Re-enable test
+ // The test is currently disabled because the room directory now resides in a dialog,
+ // which is not accessible from the MatrixChat component anymore. Convincing react that
+ // the dialog does exist and is under a different tree is incredibly difficult though,
+ // so for now the test has been disabled. We should revisit this test when someone has
+ // the time to kill to figure this out. Problem area is highlighted within the test.
+ xit('should not get stuck at a spinner', function() {
const ROOM_ALIAS = '#alias:localhost';
const ROOM_ID = '!id:localhost';
@@ -118,8 +124,19 @@ describe('joining a room', function() {
}).then(() => {
console.log(`${Date.now()} App made requests for directory view; switching to a room.`);
+ // TODO: Make this look in the right spot for the directory dialog.
+ // See the comment block at the top of the test for a bit more information. The short
+ // story here is that the RoomDirectory does not exist under matrixChat anymore, or even
+ // the parentDiv we have access to. Asking React to find the RoomDirectory as a child of
+ // the document results in it complaining that you didn't give it a component tree to
+ // search in. When you do get a reference to the component tree based off the document
+ // root and ask it to search, it races and can't find the component in time. To top it
+ // all off, MatrixReactTestUtils can't find the element in time either even with a very
+ // high number of attempts. Assuming we can get a reference to the RoomDirectory in a
+ // dialog, the rest of the test should be fine.
const roomDir = ReactTestUtils.findRenderedComponentWithType(
- matrixChat, RoomDirectory);
+ matrixChat, RoomDirectory,
+ );
// enter an alias in the input, and simulate enter
const input = ReactTestUtils.findRenderedDOMComponentWithTag(
diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js
index 43ed448a7d..7840d776cd 100644
--- a/test/app-tests/loading.js
+++ b/test/app-tests/loading.js
@@ -149,6 +149,9 @@ describe('loading:', function() {
const config = Object.assign({
default_hs_url: DEFAULT_HS_URL,
default_is_url: DEFAULT_IS_URL,
+ embeddedPages: {
+ homeUrl: 'data:text/html;charset=utf-8;base64,PGh0bWw+PC9odG1sPg==',
+ },
}, opts.config || {});
PlatformPeg.set(new WebPlatform());
@@ -172,12 +175,23 @@ describe('loading:', function() {
// http requests until we do.
//
// returns a promise resolving to the received request
- async function expectAndAwaitSync(response) {
- response = response || {};
+ async function expectAndAwaitSync(opts) {
let syncRequest = null;
+ const isGuest = opts && opts.isGuest;
+ if (!isGuest) {
+ httpBackend.when('GET', '/_matrix/client/versions')
+ .respond(200, {
+ "versions": ["r0.3.0"],
+ "unstable_features": {
+ "m.lazy_load_members": true
+ }
+ });
+ // the call to create the LL filter
+ httpBackend.when('POST', '/filter').respond(200, { filter_id: 'llfid' });
+ }
httpBackend.when('GET', '/sync')
.check((r) => {syncRequest = r;})
- .respond(200, response);
+ .respond(200, {});
for (let attempts = 10; attempts > 0; attempts--) {
console.log(Date.now() + " waiting for /sync");
@@ -190,7 +204,7 @@ describe('loading:', function() {
}
describe("Clean load with no stored credentials:", function() {
- it('gives a login panel by default', function(done) {
+ it('gives a welcome page by default', function(done) {
loadApp();
Promise.delay(1).then(() => {
@@ -205,9 +219,9 @@ describe('loading:', function() {
return httpBackend.flush();
}).then(() => {
// Wait for another trip around the event loop for the UI to update
- return awaitLoginComponent(matrixChat);
+ return awaitWelcomeComponent(matrixChat);
}).then(() => {
- expect(windowLocation.hash).toEqual("#/login");
+ expect(windowLocation.hash).toEqual("#/welcome");
}).done(done, done);
});
@@ -229,6 +243,8 @@ describe('loading:', function() {
}).then(() => {
// Wait for another trip around the event loop for the UI to update
return Promise.delay(10);
+ }).then(() => {
+ return moveFromWelcomeToLogin(matrixChat);
}).then(() => {
return completeLogin(matrixChat);
}).then(() => {
@@ -254,7 +270,7 @@ describe('loading:', function() {
return awaitLoginComponent(matrixChat).then(() => {
// we expect a single component
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.login.Login'));
+ matrixChat, sdk.getComponent('structures.auth.Login'));
// the only outstanding request should be a GET /login
// (in particular there should be no /register request for
@@ -270,7 +286,7 @@ describe('loading:', function() {
}).then(() => {
// once the sync completes, we should have a room view
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
+ matrixChat, sdk.getComponent('structures.EmbeddedPage'));
expect(windowLocation.hash).toEqual("#/home");
});
});
@@ -318,7 +334,7 @@ describe('loading:', function() {
// once the sync completes, we should have a home page
httpBackend.verifyNoOutstandingExpectation();
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
+ matrixChat, sdk.getComponent('structures.EmbeddedPage'));
expect(windowLocation.hash).toEqual("#/home");
}).done(done, done);
});
@@ -343,40 +359,6 @@ describe('loading:', function() {
}).done(done, done);
});
- it("logs in correctly with a Riot Team Server", function() {
- sdk.setFetch(httpBackend.fetchFn); // XXX: ought to restore this!
-
- httpBackend.when('GET', '/pushrules').respond(200, {});
- httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' });
-
- loadApp({
- config: {
- teamServerConfig: {
- teamServerURL: 'http://my_team_server',
- },
- },
- });
-
- return Promise.delay(1).then(() => {
- // we expect a loading spinner while we log into the RTS
- assertAtLoadingSpinner(matrixChat);
-
- httpBackend.when('GET', 'my_team_server/login').respond(200, {
- team_token: 'nom',
- });
- return httpBackend.flush();
- }).then(() => {
- return awaitSyncingSpinner(matrixChat);
- }).then(() => {
- // we got a sync spinner - let the sync complete
- return expectAndAwaitSync();
- }).then(() => {
- // once the sync completes, we should have a home page
- ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
- });
- });
-
describe('/#/login link:', function() {
beforeEach(function() {
loadApp({
@@ -390,7 +372,7 @@ describe('loading:', function() {
it('shows a login view', function() {
// we expect a single component
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.login.Login'),
+ matrixChat, sdk.getComponent('structures.auth.Login'),
);
// the only outstanding request should be a GET /login
@@ -410,7 +392,7 @@ describe('loading:', function() {
// we should see a home page, even though we previously had
// a stored mx_last_room_id
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
+ matrixChat, sdk.getComponent('structures.EmbeddedPage'));
expect(windowLocation.hash).toEqual("#/home");
});
});
@@ -418,7 +400,7 @@ describe('loading:', function() {
});
describe('Guest auto-registration:', function() {
- it('shows a home page by default', function(done) {
+ it('shows a welcome page by default', function(done) {
loadApp();
Promise.delay(1).then(() => {
@@ -438,13 +420,13 @@ describe('loading:', function() {
return awaitSyncingSpinner(matrixChat);
}).then(() => {
// we got a sync spinner - let the sync complete
- return expectAndAwaitSync();
+ return expectAndAwaitSync({isGuest: true});
}).then(() => {
- // once the sync completes, we should have a home page
+ // once the sync completes, we should have a welcome page
httpBackend.verifyNoOutstandingExpectation();
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
- expect(windowLocation.hash).toEqual("#/home");
+ matrixChat, sdk.getComponent('auth.Welcome'));
+ expect(windowLocation.hash).toEqual("#/welcome");
}).done(done, done);
});
@@ -468,15 +450,15 @@ describe('loading:', function() {
}).then(() => {
return awaitSyncingSpinner(matrixChat);
}).then(() => {
- return expectAndAwaitSync();
+ return expectAndAwaitSync({isGuest: true});
}).then((req) => {
expect(req.path).toStartWith(DEFAULT_HS_URL);
- // once the sync completes, we should have a home page
+ // once the sync completes, we should have a welcome page
httpBackend.verifyNoOutstandingExpectation();
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
- expect(windowLocation.hash).toEqual("#/home");
+ matrixChat, sdk.getComponent('auth.Welcome'));
+ expect(windowLocation.hash).toEqual("#/welcome");
expect(MatrixClientPeg.get().baseUrl).toEqual(DEFAULT_HS_URL);
expect(MatrixClientPeg.get().idBaseUrl).toEqual(DEFAULT_IS_URL);
}).done(done, done);
@@ -502,7 +484,7 @@ describe('loading:', function() {
}).then(() => {
return awaitSyncingSpinner(matrixChat);
}).then(() => {
- return expectAndAwaitSync();
+ return expectAndAwaitSync({isGuest: true});
}).then(() => {
// once the sync completes, we should have a room view
return awaitRoomView(matrixChat);
@@ -532,7 +514,7 @@ describe('loading:', function() {
}).then(() => {
// once the sync completes, we should have a home page
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
+ matrixChat, sdk.getComponent('structures.EmbeddedPage'));
// we simulate a click on the 'login' button by firing off
// the relevant dispatch.
@@ -554,7 +536,7 @@ describe('loading:', function() {
// we expect a single component
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.login.Login'),
+ matrixChat, sdk.getComponent('structures.auth.Login'),
);
});
@@ -562,7 +544,7 @@ describe('loading:', function() {
// ILAG renders this obsolete. I think.
it('should allow us to return to the app', function() {
const login = ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.login.Login')
+ matrixChat, sdk.getComponent('structures.auth.Login')
);
const linkText = 'Return to app';
@@ -579,7 +561,7 @@ describe('loading:', function() {
return Promise.delay(1).then(() => {
// we should be straight back into the home page
ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.HomePage'));
+ matrixChat, sdk.getComponent('structures.EmbeddedPage'));
});
});
*/
@@ -630,7 +612,7 @@ describe('loading:', function() {
function completeLogin(matrixChat) {
// we expect a single component
const login = ReactTestUtils.findRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.login.Login'));
+ matrixChat, sdk.getComponent('structures.auth.Login'));
httpBackend.when('POST', '/login').check(function(req) {
expect(req.data.type).toEqual('m.login.password');
@@ -698,8 +680,6 @@ function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) {
console.log(Date.now() + " Awaiting sync spinner: load complete.");
- // state looks good, check the rendered output
- assertAtSyncingSpinner(matrixChat);
return Promise.resolve();
}
@@ -743,6 +723,19 @@ function awaitRoomView(matrixChat, retryLimit, retryCount) {
function awaitLoginComponent(matrixChat, attempts) {
return MatrixReactTestUtils.waitForRenderedComponentWithType(
- matrixChat, sdk.getComponent('structures.login.Login'), attempts,
+ matrixChat, sdk.getComponent('structures.auth.Login'), attempts,
);
}
+
+function awaitWelcomeComponent(matrixChat, attempts) {
+ return MatrixReactTestUtils.waitForRenderedComponentWithType(
+ matrixChat, sdk.getComponent('auth.Welcome'), attempts,
+ );
+}
+
+function moveFromWelcomeToLogin(matrixChat) {
+ ReactTestUtils.findRenderedComponentWithType(
+ matrixChat, sdk.getComponent('auth.Welcome'));
+ dis.dispatch({ action: 'start_login' });
+ return awaitLoginComponent(matrixChat);
+}
diff --git a/webpack.config.js b/webpack.config.js
index 82972adf44..aba990541b 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -4,7 +4,7 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
let og_image_url = process.env.RIOT_OG_IMAGE_URL;
-if (!og_image_url) og_image_url = 'https://riot.im/app/themes/riot/img/logos/riot-im-logo-1.png';
+if (!og_image_url) og_image_url = 'https://riot.im/app/themes/riot/img/logos/riot-im-logo-black-text.png';
module.exports = {
entry: {
@@ -16,34 +16,40 @@ module.exports = {
"mobileguide": "./src/vector/mobile_guide/index.js",
// CSS themes
- "theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
- "theme-dark": "./node_modules/matrix-react-sdk/res/themes/dark/css/dark.scss",
- "theme-status": "./res/themes/status/css/status.scss",
+ "theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
+ "theme-dark": "./node_modules/matrix-react-sdk/res/themes/dark/css/dark.scss",
},
module: {
rules: [
{ enforce: 'pre', test: /\.js$/, use: "source-map-loader", exclude: /node_modules/, },
{ test: /\.js$/, use: "babel-loader", include: path.resolve(__dirname, 'src') },
+ {
+ test: /\.wasm$/,
+ loader: "file-loader",
+ type: "javascript/auto", // https://github.com/webpack/webpack/issues/6725
+ options: {
+ name: '[name].[hash:7].[ext]',
+ outputPath: '.',
+ },
+ },
{
test: /\.scss$/,
// 1. postcss-loader turns the SCSS into normal CSS.
- // 2. raw-loader turns the CSS into a javascript module
- // whose default export is a string containing the CSS.
- // (raw-loader is similar to css-loader, but the latter
- // would also drag in the imgs and fonts that our CSS refers to
- // as webpack inputs.)
+ // 2. css-loader turns the CSS into a JS module whose default
+ // export is a string containing the CSS, while also adding
+ // the images and fonts from CSS as Webpack inputs.
// 3. ExtractTextPlugin turns that string into a separate asset.
use: ExtractTextPlugin.extract({
use: [
- "raw-loader",
+ "css-loader",
{
loader: 'postcss-loader',
options: {
config: {
- path: './postcss.config.js'
- }
- }
- }
+ path: './postcss.config.js',
+ },
+ },
+ },
],
}),
},
@@ -51,10 +57,40 @@ module.exports = {
// this works similarly to the scss case, without postcss.
test: /\.css$/,
use: ExtractTextPlugin.extract({
- use: "raw-loader"
+ use: "css-loader",
}),
},
-
+ {
+ test: /\.(gif|png|svg|ttf)$/,
+ // Use a content-based hash in the name so that we can set a long cache
+ // lifetime for assets while still delivering changes quickly.
+ oneOf: [
+ {
+ // Images referenced in CSS files
+ issuer: /\.(scss|css)$/,
+ loader: 'file-loader',
+ options: {
+ name: '[name].[hash:7].[ext]',
+ outputPath: getImgOutputPath,
+ publicPath: function(url, resourcePath) {
+ // CSS image usages end up in the `bundles/[hash]` output
+ // directory, so we adjust the final path to navigate up
+ // twice.
+ const outputPath = getImgOutputPath(url, resourcePath);
+ return toPublicPath(path.join("../..", outputPath));
+ },
+ },
+ },
+ {
+ // Images referenced in HTML and JS files
+ loader: 'file-loader',
+ options: {
+ name: '[name].[hash:7].[ext]',
+ outputPath: getImgOutputPath,
+ },
+ },
+ ],
+ },
],
noParse: [
// for cross platform compatibility use [\\\/] as the path separator
@@ -74,14 +110,13 @@ module.exports = {
output: {
path: path.join(__dirname, "webapp"),
- // the generated js (and CSS, from the ExtractTextPlugin) are put in a
+ // The generated JS (and CSS, from the ExtractTextPlugin) are put in a
// unique subdirectory for the build. There will only be one such
// 'bundle' directory in the generated tarball; however, hosting
// servers can collect 'bundles' from multiple versions into one
// directory and symlink it into place - this allows users who loaded
// an older version of the application to continue to access webpack
// chunks even after the app is redeployed.
- //
filename: "bundles/[hash]/[name].js",
chunkFilename: "bundles/[hash]/[name].js",
devtoolModuleFilenameTemplate: function(info) {
@@ -157,3 +192,27 @@ module.exports = {
inline: false,
},
};
+
+/**
+ * Merge assets found via CSS and imports into a single tree, while also preserving
+ * directories under `res`.
+ *
+ * @param {string} url The adjusted name of the file, such as `warning.1234567.svg`.
+ * @param {string} resourcePath The absolute path to the source file with unmodified name.
+ * @return {string} The returned paths will look like `img/warning.1234567.svg`.
+ */
+function getImgOutputPath(url, resourcePath) {
+ const prefix = /^.*[/\\]res[/\\]/;
+ const outputDir = path.dirname(resourcePath).replace(prefix, "");
+ return path.join(outputDir, path.basename(url));
+}
+
+/**
+ * Convert path to public path format, which always uses forward slashes, since it will
+ * be placed directly into things like CSS files.
+ *
+ * @param {string} path Some path to a file.
+ */
+function toPublicPath(path) {
+ return path.replace(/\\/g, '/');
+}