diff --git a/CHANGELOG.md b/CHANGELOG.md index ba5de1758..778ee0493 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 a07e48709..10fef7360 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 a50eaf7d2..4208438d5 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 d74e97e73..eba95ecf4 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 8f8ff94ee..1305b7dd9 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 54149b1ae..9c52d6695 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 def4ec5ee..7435c1b5b 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 6fe144ea1..f484995e7 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 563e6d5ed..f52d02c88 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 9cd225d40..fcbcbc495 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 328a723c9..801e1504d 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 20a7a6cff..4a86e56ef 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 eb48c2c91..8a998989f 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 8f8ff94ee..1305b7dd9 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 85e9f8ca7..aacfc1a8a 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 8d8814055..63250c9ae 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 14f91a526..ce35cf7c8 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 d566de515..152361696 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 d982aa242..ae666a455 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 ab504339e..2bacb6e25 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 e5c56cdac..36b84f89f 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 7d50470a2..000000000 --- a/res/home-status.html +++ /dev/null @@ -1,192 +0,0 @@ - - -
-
-
-

Welcome to Status Community Chat, powered by Riot.

-

For contributors, developers and Ethereum-enthusiasts who care about the movement for decentralization.

-
-
- -
-

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 934e491ec..000000000 --- a/res/home.html +++ /dev/null @@ -1,292 +0,0 @@ - - -
-
- -
-

_t("Welcome to Riot.im")

-

_t("Decentralised, encrypted chat & collaboration powered by [matrix]")

-
-
-
-
-
-

_t("Search the room directory")

- - - - - _t("Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!") - -
-
-
-
-

_t("Chat with Riot Bot")

- - - - - _t("Get started with some tips from 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 a5f70e5e4..000000000 --- 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 6b3a55e7b..000000000 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 1d96bd84a..000000000 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 1d96bd84a..000000000 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 a2bda4bc6..000000000 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 ed45f11ce..000000000 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 f2e150563..000000000 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 de1ea60d5..000000000 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 5f611d12a..000000000 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 fa54f00cb..000000000 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 fa54f00cb..000000000 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 fa2bec8e3..000000000 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 9efd4a3c2..000000000 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 ff8b21ad1..000000000 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 6a0c598fe..000000000 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 2ae95836e..000000000 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 4daa2e4ef..000000000 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 ee0f85589..000000000 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 98b77802d..000000000 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 98b790f9a..000000000 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 000000000..4779c9d7c 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 768679da6..000000000 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 a806c3bfd..000000000 --- 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 f9cc92f13..000000000 --- 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 7f81dacd7..000000000 --- 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 307868e60..000000000 --- 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 2653d7c9c..000000000 --- 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 000000000..2b4334616 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 000000000..ce50d65d4 --- /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 000000000..66651582d 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 000000000..8a7956cc6 --- /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 297608b89..000000000 --- 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 757f62309..000000000 --- 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 d71b489a4..000000000 --- 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 aa5522f60..000000000 --- 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 6cbc25925..000000000 --- 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 e7d6e869b..000000000 --- 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 cbfaa6257..000000000 --- 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 5ebd96e84..000000000 --- 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 687272742..000000000 --- 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 d01cfa52d..000000000 --- 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 b4f659004..000000000 --- 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 d7900145e..000000000 --- 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 defbcc4bc..000000000 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 daeb0b078..000000000 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 45df23c04..000000000 --- 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 f675a3302..000000000 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 b63eeae13..000000000 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 68e4a77a5..000000000 --- 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 b8e33d41f..000000000 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 30c8cf18d..5dbbd0ff1 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 560e20ad8..93a4e9c8a 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 ee41772f4..344157fe5 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 9cd225d40..70115c65c 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 d9de0c571..e61b36e24 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 eb48c2c91..3a32b6c83 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 e07fa4375..019780fd9 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 826509131..4979a63e4 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 30c8cf18d..5dbbd0ff1 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 5bc63546c..6aac26012 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 85e9f8ca7..aacfc1a8a 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 253c3db70..e52c99c60 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 192a34675..edaecda6b 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 d9de0c571..e61b36e24 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 b94716457..1432fee38 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 85e9f8ca7..aacfc1a8a 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 85e9f8ca7..aacfc1a8a 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 def4ec5ee..c9b0f23e2 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 c999923ac..48bf1dc89 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 eb48c2c91..ea21306c0 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 8f8ff94ee..619b51aaa 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 30c8cf18d..5dbbd0ff1 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 5b8fca8a4..da0c101c9 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 d809f00a0..c627adc2a 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 ec62f8ee9..e96300293 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 820a909e2..c4f306c5f 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 000000000..ba368b317 --- /dev/null +++ b/res/welcome.html @@ -0,0 +1,190 @@ + + +
+ + + +

_t("Welcome to Riot.im")

+

_t("Decentralised, encrypted chat & collaboration powered by [matrix]")

+
+ + + +
+
+
_t("Need help?")
+ +
_t("Chat with Riot Bot")
+
+
+
+
_t("Explore rooms")
+ +
_t("Room Directory")
+
+
+
+ +
+
diff --git a/res/welcome/images/icon-create-account.svg b/res/welcome/images/icon-create-account.svg new file mode 100644 index 000000000..c9d25f2fa --- /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 000000000..dc96f8e0c --- /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 000000000..6f888611f --- /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 000000000..584b2f0ad --- /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 000000000..79039b70d --- /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 5c7dfbb5e..13adcab25 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 e41fa88f3..cde96bc41 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 bd68d9c2c..bffb6b00e 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 57eda6ebd..b748088ad 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 a2e5fe05e..ab093135a 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\]/, '[matrix]'); + s = s.replace(/\[matrix\]/, '[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 5fa423608..646748538 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') } +
+ 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 babd90d6c..0161fc3ff 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 ( -
-
- Riot -
+
+ Riot
); - }, -}); + } +} diff --git a/src/components/views/auth/VectorAuthPage.js b/src/components/views/auth/VectorAuthPage.js new file mode 100644 index 000000000..bae685b95 --- /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 c60ff6da2..b817cc3fe 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/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index a20b33132..6e600cfc8 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 5b4eae421..16b29fcb8 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 43ed448a7..7840d776c 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 82972adf4..aba990541 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, '/'); +}