From 70d383fb1bfb65516d52e209354434a78e267ef7 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Sun, 13 Nov 2016 23:06:57 +0000 Subject: [PATCH 001/243] Fix changelog dialog to read new version format Remove the 'vector' from the start of the version (otherwise the tarballs are called vector-vector-[...].tar.gz). The jenkins script already creates these files, so update accordingly. --- src/components/views/dialogs/ChangelogDialog.js | 5 +++-- src/components/views/globals/NewVersionBar.js | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/views/dialogs/ChangelogDialog.js b/src/components/views/dialogs/ChangelogDialog.js index 6bc6de60..d14d8dc2 100644 --- a/src/components/views/dialogs/ChangelogDialog.js +++ b/src/components/views/dialogs/ChangelogDialog.js @@ -31,9 +31,10 @@ export default class ChangelogDialog extends React.Component { const version = this.props.newVersion.split('-'); const version2 = this.props.version.split('-'); if(version == null || version2 == null) return; + // parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version] for(let i=0; i<REPOS.length; i++) { - const oldVersion = version2[2*i+1]; - const newVersion = version[2*i+1]; + const oldVersion = version2[2*i]; + const newVersion = version[2*i]; request(`https://api.github.com/repos/${REPOS[i]}/compare/${oldVersion}...${newVersion}`, (a, b, body) => { if(body == null) return; this.setState({[REPOS[i]]: JSON.parse(body).commits}); diff --git a/src/components/views/globals/NewVersionBar.js b/src/components/views/globals/NewVersionBar.js index 36d6bc71..3e03be72 100644 --- a/src/components/views/globals/NewVersionBar.js +++ b/src/components/views/globals/NewVersionBar.js @@ -23,11 +23,11 @@ import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; /** * Check a version string is compatible with the Changelog - * dialog + * dialog ([vectorversion]-react-[react-sdk-version]-js-[js-sdk-version]) */ function checkVersion(ver) { const parts = ver.split('-'); - return parts[0] == 'vector' && parts[2] == 'react' && parts[4] == 'js'; + return parts.length == 5 && parts[1] == 'react' && parts[3] == 'js'; } export default React.createClass({ From 81d70a921df18ac86291a95b3b95f725668647c7 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Wed, 16 Nov 2016 23:10:51 +0000 Subject: [PATCH 002/243] Add a 'View decrypted source' button --- src/components/structures/ViewSource.js | 6 +++--- .../views/context_menus/MessageContextMenu.js | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/components/structures/ViewSource.js b/src/components/structures/ViewSource.js index 1dbc5319..a0e198ce 100644 --- a/src/components/structures/ViewSource.js +++ b/src/components/structures/ViewSource.js @@ -22,7 +22,8 @@ module.exports = React.createClass({ displayName: 'ViewSource', propTypes: { - onFinished: React.PropTypes.func.isRequired + content: React.PropTypes.object.isRequired, + onFinished: React.PropTypes.func.isRequired, }, componentDidMount: function() { @@ -45,10 +46,9 @@ module.exports = React.createClass({ return ( <div className="mx_ViewSource"> <pre> - {JSON.stringify(this.props.mxEvent.event, null, 2)} + {JSON.stringify(this.props.content, null, 2)} </pre> </div> ); } }); - diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index 7786b9bd..4b62b87e 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -47,7 +47,16 @@ module.exports = React.createClass({ onViewSourceClick: function() { var ViewSource = sdk.getComponent('structures.ViewSource'); Modal.createDialog(ViewSource, { - mxEvent: this.props.mxEvent + content: this.props.mxEvent.event, + }, 'mx_Dialog_viewsource'); + if (this.props.onFinished) this.props.onFinished(); + }, + + onViewClearSourceClick: function() { + var ViewSource = sdk.getComponent('structures.ViewSource'); + Modal.createDialog(ViewSource, { + // FIXME: _clearEvent is private + content: this.props.mxEvent._clearEvent, }, 'mx_Dialog_viewsource'); if (this.props.onFinished) this.props.onFinished(); }, @@ -97,6 +106,7 @@ module.exports = React.createClass({ var eventStatus = this.props.mxEvent.status; var resendButton; var viewSourceButton; + var viewClearSourceButton; var redactButton; var cancelButton; var permalinkButton; @@ -133,6 +143,14 @@ module.exports = React.createClass({ </div> ); + if (this.props.mxEvent.getType() !== this.props.mxEvent.getWireType()) { + viewClearSourceButton = ( + <div className="mx_MessageContextMenu_field" onClick={this.onViewClearSourceClick}> + View Decrypted Source + </div> + ); + } + if (this.props.eventTileOps) { if (this.props.eventTileOps.isWidgetHidden()) { unhidePreviewButton = ( @@ -174,6 +192,7 @@ module.exports = React.createClass({ {redactButton} {cancelButton} {viewSourceButton} + {viewClearSourceButton} {unhidePreviewButton} {permalinkButton} {UserSettingsStore.isFeatureEnabled('rich_text_editor') ? quoteButton : null} From 5d02c72687c7007c2914a6afb09e9b52af5aefab Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 17 Nov 2016 10:34:12 +0000 Subject: [PATCH 003/243] Bump to react 15.4 Add dependencies on react 15.4. Some of the things we pull in from matrix-react-sdk won't work properly against 15.2 / 15.0. --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 173b9e1d..9ef377a9 100644 --- a/package.json +++ b/package.json @@ -70,10 +70,10 @@ "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", "modernizr": "^3.1.0", "q": "^1.4.1", - "react": "^15.2.1", + "react": "^15.4.0", "react-dnd": "^2.1.4", "react-dnd-html5-backend": "^2.1.2", - "react-dom": "^15.2.1", + "react-dom": "^15.4.0", "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef", "sanitize-html": "^1.11.1", "ua-parser-js": "^0.7.10", @@ -115,8 +115,8 @@ "mocha": "^2.4.5", "parallelshell": "^1.2.0", "phantomjs-prebuilt": "^2.1.7", - "react-addons-perf": "^15.0", - "react-addons-test-utils": "^15.0.1", + "react-addons-perf": "^15.4.0", + "react-addons-test-utils": "^15.4.0", "rimraf": "^2.4.3", "source-map-loader": "^0.1.5", "webpack": "^1.12.14", From 7577d2eb0570a396fe68036b7e865170516a5898 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 17 Nov 2016 10:51:09 +0000 Subject: [PATCH 004/243] s/var/const/ --- src/components/views/context_menus/MessageContextMenu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index 4b62b87e..e3640f77 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -53,7 +53,7 @@ module.exports = React.createClass({ }, onViewClearSourceClick: function() { - var ViewSource = sdk.getComponent('structures.ViewSource'); + const ViewSource = sdk.getComponent('structures.ViewSource'); Modal.createDialog(ViewSource, { // FIXME: _clearEvent is private content: this.props.mxEvent._clearEvent, From be90badc8dff9d452a631fd9da83bee1bb1a1e5d Mon Sep 17 00:00:00 2001 From: Mark Haines <mjark@negativecurvature.net> Date: Thu, 17 Nov 2016 11:36:46 +0000 Subject: [PATCH 005/243] Add css for the iframes for e2e attachments --- .../matrix-react-sdk/views/messages/MImageBody.css | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/MImageBody.css b/src/skins/vector/css/matrix-react-sdk/views/messages/MImageBody.css index 1134f2f6..003ef103 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/MImageBody.css +++ b/src/skins/vector/css/matrix-react-sdk/views/messages/MImageBody.css @@ -44,3 +44,17 @@ limitations under the License. vertical-align: middle; pointer-events: none; } + +/* Remove the border and padding for iframes for download links. */ +.mx_MImageBody_download iframe { + margin: 0px; + padding: 0px; + border: none; + width: 100%; + /* Set the height of the iframe to be 1 line of text. + * Iframes don't automatically size themselves to fit their content. + * So either we have to fix the height of the iframe using CSS or + * use javascript's cross-origin postMessage API to communicate how + * big the content of the iframe is. */ + height: 1.5em; +} From 646608bf8b6e824ef2ecc45d017831f7c4840a1e Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 17 Nov 2016 17:27:21 +0000 Subject: [PATCH 006/243] Add a cachebuster to /version --- src/vector/platform/WebPlatform.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index b5459aec..dec15869 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -128,8 +128,18 @@ export default class WebPlatform extends VectorBasePlatform { _getVersion() { const deferred = q.defer(); + + // We add a cachebuster to the request to make sure that we know about + // the most recent version on the origin server. That might not + // actually be the version we'd get on a reload (particularly in the + // presence of intermediate caching proxies), but still: we're trying + // to tell the user that there is a new version. request( - { method: "GET", url: "version" }, + { + method: "GET", + url: "version", + qs: { cachebuster: Date.now() }, + }, (err, response, body) => { if (err || response.status < 200 || response.status >= 300) { if (err == null) err = { status: response.status }; From 8b0390f354a7e079878c72f221784932fb603579 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <github@rvanderhoff.org.uk> Date: Fri, 18 Nov 2016 17:32:01 +0000 Subject: [PATCH 007/243] Fix a race which took us to the directory on load sometimes (#2602) Sometimes window.onload would run before loadApp had finished (specifically, if the browser had to wait for config.json to load). Avoid the race by moving all of the onload logic into loadApp. --- src/vector/index.js | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 9c9d48fa..0ced93d5 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -120,6 +120,8 @@ var lastLoadedScreen = null; // so a web page can update the URL bar appropriately. var onNewScreen = function(screen) { console.log("newscreen "+screen); + // just remember the most recent screen while we are loading, so that the + // user doesn't see the URL bar doing a dance if (!loaded) { lastLoadedScreen = screen; } else { @@ -156,19 +158,6 @@ function getDefaultDeviceDisplayName() { } window.addEventListener('hashchange', onHashChange); -window.onload = function() { - console.log("window.onload"); - if (!validBrowser) { - return; - } - UpdateChecker.start(); - routeUrl(window.location); - loaded = true; - if (lastLoadedScreen) { - onNewScreen(lastLoadedScreen); - lastLoadedScreen = null; - } -} function getConfig() { let deferred = q.defer(); @@ -259,6 +248,8 @@ async function loadApp() { Unable to load config file: please refresh the page to try again. </div>, document.getElementById('matrixchat')); } else if (validBrowser) { + UpdateChecker.start(); + var MatrixChat = sdk.getComponent('structures.MatrixChat'); window.matrixChat = ReactDOM.render( @@ -275,6 +266,15 @@ async function loadApp() { />, document.getElementById('matrixchat') ); + + routeUrl(window.location); + + // we didn't propagate screen changes to the URL bar while we were loading; do it now. + loaded = true; + if (lastLoadedScreen) { + onNewScreen(lastLoadedScreen); + lastLoadedScreen = null; + } } else { console.error("Browser is missing required features."); @@ -285,7 +285,6 @@ async function loadApp() { validBrowser = true; console.log("User accepts the compatibility risks."); loadApp(); - window.onload(); // still do the same code paths for compatible clients }} />, document.getElementById('matrixchat') ); From 67c882648f7ab6e94785acc1783951dd582d6493 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <github@rvanderhoff.org.uk> Date: Fri, 18 Nov 2016 17:52:44 +0000 Subject: [PATCH 008/243] Make sure we only pack one copy of react-dom (#2603) Fixes https://github.com/vector-im/vector-web/issues/2601 --- webpack.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index 4f350dd4..cad7b9a3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -57,7 +57,8 @@ module.exports = { alias: { // alias any requires to the react module to the one in our path, otherwise // we tend to get the react source included twice when using npm link. - react: path.resolve('./node_modules/react'), + "react": path.resolve('./node_modules/react'), + "react-dom": path.resolve('./node_modules/react-dom'), "react-addons-perf": path.resolve('./node_modules/react-addons-perf'), // same goes for js-sdk From 683ecb3326f22a118674701605e9b919f7593930 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 19 Nov 2016 02:04:31 +0200 Subject: [PATCH 009/243] Prepare changelog for v0.9.0 --- CHANGELOG.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12ebad99..31973282 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,48 @@ +Changes in [0.9.0](https://github.com/vector-im/vector-web/releases/tag/v0.9.0) (2016-11-19) +============================================================================================ +[Full Changelog](https://github.com/vector-im/vector-web/compare/v0.8.4...v0.9.0) + + * Add a cachebuster to /version + [\#2596](https://github.com/vector-im/vector-web/pull/2596) + * Add a 'View decrypted source' button + [\#2587](https://github.com/vector-im/vector-web/pull/2587) + * Fix changelog dialog to read new version format + [\#2577](https://github.com/vector-im/vector-web/pull/2577) + * Build all of the vector dir in the build process + [\#2558](https://github.com/vector-im/vector-web/pull/2558) + * Support for get_app_version + [\#2553](https://github.com/vector-im/vector-web/pull/2553) + * Add CSS for mlist truncation + [\#2565](https://github.com/vector-im/vector-web/pull/2565) + * Add menu option for `external_url` if present + [\#2560](https://github.com/vector-im/vector-web/pull/2560) + * Make auto-update configureable + [\#2555](https://github.com/vector-im/vector-web/pull/2555) + * Missed files electron windows fixes + [\#2556](https://github.com/vector-im/vector-web/pull/2556) + * Add some CSS for scalar error popup + [\#2554](https://github.com/vector-im/vector-web/pull/2554) + * Catch unhandled errors in the electron process + [\#2552](https://github.com/vector-im/vector-web/pull/2552) + * Slight grab-bag of fixes for electron on Windows + [\#2551](https://github.com/vector-im/vector-web/pull/2551) + * Electron app (take 3) + [\#2535](https://github.com/vector-im/vector-web/pull/2535) + * Use webpack-dev-server instead of http-server + [\#2542](https://github.com/vector-im/vector-web/pull/2542) + * Better support no-config when loading from file + [\#2541](https://github.com/vector-im/vector-web/pull/2541) + * Fix loading with no config from HTTP + [\#2540](https://github.com/vector-im/vector-web/pull/2540) + * Move 'new version' support into Platform + [\#2532](https://github.com/vector-im/vector-web/pull/2532) + * Add Notification support to the Web Platform + [\#2533](https://github.com/vector-im/vector-web/pull/2533) + * Use the defaults if given a blank config file + [\#2534](https://github.com/vector-im/vector-web/pull/2534) + * Implement Platforms + [\#2531](https://github.com/vector-im/vector-web/pull/2531) + hanges in [0.8.4](https://github.com/vector-im/vector-web/releases/tag/v0.8.4) (2016-11-04) ============================================================================================ [Full Changelog](https://github.com/vector-im/vector-web/compare/v0.8.4-rc.2...v0.8.4) From 5cd4f88b8c6dd5348a8414c0c9cb04d7e4ab8509 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 19 Nov 2016 02:04:32 +0200 Subject: [PATCH 010/243] v0.9.0 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9ef377a9..c1441cf4 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vector-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.8.4", + "version": "0.9.0", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { @@ -66,8 +66,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", - "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", + "matrix-js-sdk": "0.7.0", + "matrix-react-sdk": "0.8.0", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 9ce2adceef2851ed2b262c4ed54bfae3e58c1e2f Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Mon, 21 Nov 2016 10:40:35 +0000 Subject: [PATCH 011/243] Include config.sample.json in dist tarball Fixes https://github.com/vector-im/vector-web/issues/2607 --- scripts/package.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/package.sh b/scripts/package.sh index 05227e1b..5c1fdd5e 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -15,6 +15,11 @@ fi npm run clean npm run build$dev + +# include the sample config in the tarball. Arguably this should be done by +# `npm run build`, but it's just too painful. +cp config.sample.json webapp/ + mkdir -p dist cp -r webapp vector-$version echo $version > vector-$version/version From 10650d2cd1813d2a18d6e58c2d07507ec18e650b Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 22 Nov 2016 22:14:05 +0000 Subject: [PATCH 012/243] Unpin js-sdk and react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c1441cf4..509e0e94 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.0", - "matrix-react-sdk": "0.8.0", + "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", + "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 0df242e0e9ebd60b7d6877f0ae641d2da735ce86 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 24 Nov 2016 16:20:58 +0000 Subject: [PATCH 013/243] Add Freenode & Mozilla domains So the join button works for them --- config.sample.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config.sample.json b/config.sample.json index 49303769..a25bdb11 100644 --- a/config.sample.json +++ b/config.sample.json @@ -31,6 +31,8 @@ "nativePattern": "[^\\s]+/[^\\s]+$" }, "irc:freenode": { + "protocol": "irc", + "domain": "chat.freenode.net", "portalRoomPattern": "#freenode_.*:matrix.org", "name": "Freenode", "icon": "//matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", @@ -38,6 +40,8 @@ "nativePattern": "^#[^\\s]+$" }, "irc:mozilla": { + "protocol": "irc", + "domain": "irc.mozilla.org", "portalRoomPattern": "#mozilla_.*:matrix.org", "name": "Mozilla", "icon": "//matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", From c786980454f6648de45a8193f0ec08d41ed71c0f Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 24 Nov 2016 16:46:15 +0000 Subject: [PATCH 014/243] Move getDefaultDeviceName into the Platforms So we can have a sensible device name on Electron --- src/vector/index.js | 16 +-------------- src/vector/platform/ElectronPlatform.js | 25 +++++++++++++++++++++++ src/vector/platform/VectorBasePlatform.js | 8 ++++++++ src/vector/platform/WebPlatform.js | 15 ++++++++++++++ 4 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 0ced93d5..b791783b 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -54,7 +54,6 @@ var UpdateChecker = require("./updater"); var q = require('q'); var request = require('browser-request'); -import UAParser from 'ua-parser-js'; import url from 'url'; import {parseQs, parseQsFromFragment} from './url_utils'; @@ -144,19 +143,6 @@ var makeRegistrationUrl = function() { '#/register'; } - -function getDefaultDeviceDisplayName() { - // strip query-string and fragment from uri - let u = url.parse(window.location.href); - u.search = ""; - u.hash = ""; - let app_name = u.format(); - - let ua = new UAParser(); - return app_name + " via " + ua.getBrowser().name + - " on " + ua.getOS().name; -} - window.addEventListener('hashchange', onHashChange); function getConfig() { @@ -262,7 +248,7 @@ async function loadApp() { startingFragmentQueryParams={fragparts.params} enableGuest={true} onLoadCompleted={onLoadCompleted} - defaultDeviceDisplayName={getDefaultDeviceDisplayName()} + defaultDeviceDisplayName={PlatformPeg.get().getDefaultDeviceDisplayName()} />, document.getElementById('matrixchat') ); diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index c7455a71..3894896a 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -35,6 +35,27 @@ function onUpdateDownloaded(ev, releaseNotes, ver, date, updateURL) { }); } +function platformFriendlyName() { + console.log(window.process); + switch (window.process.platform) { + case 'darwin': + return 'macOS'; + case 'freebsd': + return 'FreeBSD'; + case 'openbsd': + return 'OpenBSD'; + case 'sunos': + return 'SunOS'; + case 'win32': + return 'Windows'; + default: + // Sorry, Linux users: you get lumped into here, + // but only because Linux's capitalisation is + // normal. We do care about you. + return window.process.platform[0].toUpperCase + window.process.platform.slice(1); + } +} + export default class ElectronPlatform extends VectorBasePlatform { setNotificationCount(count: number) { super.setNotificationCount(count); @@ -101,4 +122,8 @@ export default class ElectronPlatform extends VectorBasePlatform { // it should exit. electron.ipcRenderer.send('install_update'); } + + getDefaultDeviceDisplayName() { + return "Riot Desktop on " + platformFriendlyName(); + } } diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js index d2ed8c34..5240f3f5 100644 --- a/src/vector/platform/VectorBasePlatform.js +++ b/src/vector/platform/VectorBasePlatform.js @@ -39,4 +39,12 @@ export default class VectorBasePlatform extends BasePlatform { */ installUpdate() { } + + /** + * Get a sensible default display name for the + * device Vector is running on + */ + getDefaultDeviceDisplayName() { + return "Unknown device"; + } } diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index dec15869..9998f7c7 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -23,6 +23,9 @@ import request from 'browser-request'; import dis from 'matrix-react-sdk/lib/dispatcher.js'; import q from 'q'; +import url from 'url'; +import UAParser from 'ua-parser-js'; + export default class WebPlatform extends VectorBasePlatform { constructor() { super(); @@ -180,4 +183,16 @@ export default class WebPlatform extends VectorBasePlatform { installUpdate() { window.location.reload(); } + + getDefaultDeviceDisplayName() { + // strip query-string and fragment from uri + let u = url.parse(window.location.href); + u.search = ""; + u.hash = ""; + let app_name = u.format(); + + let ua = new UAParser(); + return app_name + " via " + ua.getBrowser().name + + " on " + ua.getOS().name; + } } From a870ea2389d4b9c38d5bd8ac3567b6ee34fcccda Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 24 Nov 2016 17:24:11 +0000 Subject: [PATCH 015/243] Add electron config Which has the update URL in it --- electron/config.json | 72 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 electron/config.json diff --git a/electron/config.json b/electron/config.json new file mode 100644 index 00000000..7bf4c4d8 --- /dev/null +++ b/electron/config.json @@ -0,0 +1,72 @@ +{ + "update_url": "https://riot.im/download/desktop/", + "default_hs_url": "https://matrix.org", + "default_is_url": "https://vector.im", + "brand": "Riot", + "integrations_ui_url": "https://scalar.vector.im/", + "integrations_rest_url": "https://scalar.vector.im/api", + "enableLabs": true, + "roomDirectory": { + "servers": [ + "matrix.org" + ], + "serverConfig": { + "matrix.org": { + "networks": [ + "_matrix", + "gitter", + "irc:freenode", + "irc:mozilla", + "irc:snoonet", + "irc:oftc" + ] + } + }, + "networks": { + "gitter": { + "protocol": "gitter", + "portalRoomPattern": "#gitter_.*:matrix.org", + "name": "Gitter", + "icon": "https://gitter.im/favicon.ico", + "example": "org/community", + "nativePattern": "[^\\s]+/[^\\s]+$" + }, + "irc:freenode": { + "protocol": "irc", + "domain": "chat.freenode.net", + "portalRoomPattern": "#freenode_.*:matrix.org", + "name": "Freenode", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + }, + "irc:mozilla": { + "protocol": "irc", + "domain": "chat.freenode.net", + "portalRoomPattern": "#mozilla_.*:matrix.org", + "name": "Mozilla", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + }, + "irc:snoonet": { + "protocol": "irc", + "domain": "ipv6-irc.snoonet.org", + "portalRoomPattern": "#_snoonet_.*:matrix.org", + "name": "Snoonet", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + }, + "irc:oftc": { + "protocol": "irc", + "domain": "irc.oftc.net", + "portalRoomPattern": "#_oftc_.*:matrix.org", + "name": "OFTC", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + } + } + } +} diff --git a/package.json b/package.json index 509e0e94..fde6fbaa 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "build -lwm", + "build:electron": "npm run clean && npm run build && cpx electron/config.json webapp/ && build -lwm", "build": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle:dev", "dist": "scripts/package.sh", From 693867f0746af51548f8932bc6113b74b8041abd Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 25 Nov 2016 19:57:08 +0000 Subject: [PATCH 016/243] Final bits to prepare electron distribtion: * Remove the config: nobody else wants our update URL so we'll keep it separately. Don't copy the config. * Script to yell at you if you've build a package with auto update turned off. * s/vector/webapp/ when looking for config * Use different update URLs for the various platforms --- scripts/check-electron.sh | 13 ++++++++++ scripts/electron-dist.sh | 54 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100755 scripts/check-electron.sh create mode 100755 scripts/electron-dist.sh diff --git a/scripts/check-electron.sh b/scripts/check-electron.sh new file mode 100755 index 00000000..82b24a6c --- /dev/null +++ b/scripts/check-electron.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +update_url=`jq .update_url webapp/config.json` +echo "***************************************************" +echo +if [ $? = 0 ]; then + echo "Built electron package with update url: $update_url" +else + echo "Built electron package with no update url" + echo "This build will not auto-update." +fi +echo +echo "***************************************************" diff --git a/scripts/electron-dist.sh b/scripts/electron-dist.sh new file mode 100755 index 00000000..36f60c9e --- /dev/null +++ b/scripts/electron-dist.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +set -e +set -x + +if [ $# = 0 ]; then + echo "Usage: $0 <target directory>" + echo "" + echo "Adds the build in electron/dist/ to a given Riot electron" + echo "download tree. If target directory is empty, create a new" + echo "download tree. This tree can be placed on a web server to" + echo "serve auto-updates (although auto-update for Mac requires" + echo "additional logic)." + exit +fi + +ver=`basename electron/dist/mac/*.dmg | cut -d '-' -f 2 | sed -e 's/\.dmg$//'` +dir=$1 + +echo "Copying files for version $ver to $dir" + +# Install packages: what the user downloads the first time, +# (DMGs for mac, exe installer for windows) +mkdir -p "$dir/install/macos" +cp electron/dist/mac/*.dmg "$dir/install/macos/" +echo "$ver" > "$dir/install/macos/latest" + +mkdir -p "$dir/install/win32/ia32" +cp electron/dist/win-ia32/*.exe "$dir/install/win32/ia32/" + +mkdir -p "$dir/install/win32/x64" +cp electron/dist/win/*.exe "$dir/install/win32/ia32/" + + +# Packages for auto-update. It would be nice if squirrel's +# auto update used the installer packages, but it doesn't +# for Reasons. zip for mac, nupkg for windows. +mkdir -p "$dir/update/macos" +cp electron/dist/mac/*.zip "$dir/update/macos/" +echo "$ver" > "$dir/update/macos/latest" + +mkdir -p "$dir/update/win32/ia32" +cp electron/dist/win-ia32/*.nupkg "$dir/update/win32/ia32/" +cat electron/dist/win-ia32/RELEASES >> "$dir/update/win32/ia32/RELEASES" +echo >> "$dir/update/win32/ia32/RELEASES" + +mkdir -p "$dir/update/win32/x64" +cp electron/dist/win/*.nupkg "$dir/update/win32/x64/" +cat electron/dist/win/RELEASES >> "$dir/update/win32/x64/RELEASES" +echo >> "$dir/update/win32/x64/RELEASES" + + +echo "All done!" +echo "$dir can now be copied to your web server." From 4073688ba618b8400c9f220791830eb41aa37281 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 25 Nov 2016 20:07:12 +0000 Subject: [PATCH 017/243] Missed an x64 --- scripts/electron-dist.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/electron-dist.sh b/scripts/electron-dist.sh index 36f60c9e..0e8efd56 100755 --- a/scripts/electron-dist.sh +++ b/scripts/electron-dist.sh @@ -29,7 +29,7 @@ mkdir -p "$dir/install/win32/ia32" cp electron/dist/win-ia32/*.exe "$dir/install/win32/ia32/" mkdir -p "$dir/install/win32/x64" -cp electron/dist/win/*.exe "$dir/install/win32/ia32/" +cp electron/dist/win/*.exe "$dir/install/win32/x64/" # Packages for auto-update. It would be nice if squirrel's From dfa7c3b72eb29fe8ab37a8231a625fd723e51a0f Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 25 Nov 2016 20:07:38 +0000 Subject: [PATCH 018/243] Animated install logo from Ben --- electron/build/install-spinner.gif | Bin 4460 -> 23967 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/electron/build/install-spinner.gif b/electron/build/install-spinner.gif index c4f832c34230af5d0267962c7e1d0fab4bab5dd0..4a89337be40cf202fe232bca49c1c0c84b278463 100644 GIT binary patch literal 23967 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 T>|@V>heO2~5&w^bLiPUwJMS@r literal 4460 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 From 97c0e2dfcd595f109e992157e7203dbccc821ac5 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 25 Nov 2016 20:08:05 +0000 Subject: [PATCH 019/243] Delete electron config from here It just has our update URL in it which only we care about --- electron/config.json | 72 -------------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 electron/config.json diff --git a/electron/config.json b/electron/config.json deleted file mode 100644 index 7bf4c4d8..00000000 --- a/electron/config.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "update_url": "https://riot.im/download/desktop/", - "default_hs_url": "https://matrix.org", - "default_is_url": "https://vector.im", - "brand": "Riot", - "integrations_ui_url": "https://scalar.vector.im/", - "integrations_rest_url": "https://scalar.vector.im/api", - "enableLabs": true, - "roomDirectory": { - "servers": [ - "matrix.org" - ], - "serverConfig": { - "matrix.org": { - "networks": [ - "_matrix", - "gitter", - "irc:freenode", - "irc:mozilla", - "irc:snoonet", - "irc:oftc" - ] - } - }, - "networks": { - "gitter": { - "protocol": "gitter", - "portalRoomPattern": "#gitter_.*:matrix.org", - "name": "Gitter", - "icon": "https://gitter.im/favicon.ico", - "example": "org/community", - "nativePattern": "[^\\s]+/[^\\s]+$" - }, - "irc:freenode": { - "protocol": "irc", - "domain": "chat.freenode.net", - "portalRoomPattern": "#freenode_.*:matrix.org", - "name": "Freenode", - "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - }, - "irc:mozilla": { - "protocol": "irc", - "domain": "chat.freenode.net", - "portalRoomPattern": "#mozilla_.*:matrix.org", - "name": "Mozilla", - "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - }, - "irc:snoonet": { - "protocol": "irc", - "domain": "ipv6-irc.snoonet.org", - "portalRoomPattern": "#_snoonet_.*:matrix.org", - "name": "Snoonet", - "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - }, - "irc:oftc": { - "protocol": "irc", - "domain": "irc.oftc.net", - "portalRoomPattern": "#_oftc_.*:matrix.org", - "name": "OFTC", - "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - } - } - } -} From c7635a362f0a096d56007343e01cb26b0e421f59 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 25 Nov 2016 20:08:45 +0000 Subject: [PATCH 020/243] Don't copy config, check update url --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fde6fbaa..3cb36125 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "npm run clean && npm run build && cpx electron/config.json webapp/ && build -lwm", + "build:electron": "rimraf electron/dist && npm run clean && npm run build && build -wm --ia32 --x64 && scripts/check-electron.sh", "build": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle:dev", "dist": "scripts/package.sh", From a1347e7bf1da37b00972e6c25e62b42803399d69 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 25 Nov 2016 20:09:21 +0000 Subject: [PATCH 021/243] Correct vector to webapp & platform update URLs --- electron/src/electron-main.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 18758eee..fe083930 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -30,7 +30,7 @@ const VectorMenu = require('./vectormenu'); let vectorConfig = {}; try { - vectorConfig = require('../../vector/config.json'); + vectorConfig = require('../../webapp/config.json'); } catch (e) { // it would be nice to check the error code here and bail if the config // is unparseable, but we get MODULE_NOT_FOUND in the case of a missing @@ -112,9 +112,11 @@ function startAutoUpdate(update_url) { // 204 No Content. On windows it takes a base path and looks for // files under that path. if (process.platform == 'darwin') { - electron.autoUpdater.setFeedURL(update_url); + // macos only has 64 bit + electron.autoUpdater.setFeedURL(update_url + 'macos/'); } else if (process.platform == 'win32') { - electron.autoUpdater.setFeedURL(update_url + 'win32/'); + // We split by 32/64 bit too: the builds are different and entirely separate + electron.autoUpdater.setFeedURL(update_url + 'win32/' + process.arch + '/'); } else { // Squirrel / electron only supports auto-update on these two platforms. // I'm not even going to try to guess which feed style they'd use if they From 55062c7ec547636270f318740fa7427475818c18 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 28 Nov 2016 16:37:43 +0000 Subject: [PATCH 022/243] Update to electron 1.4.8 Which uses a new enough build of chromium that it accepts our SSL certs. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fde6fbaa..c672af5c 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "build": { "appId": "im.riot.app", "category": "Network", - "electronVersion": "1.4.2", + "electronVersion": "1.4.8", "//asar=false": "https://github.com/electron-userland/electron-builder/issues/675", "asar": false, "dereference": true, From f20219754523080b187c7e577ac8bd592ad7f754 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 29 Nov 2016 18:49:23 +0000 Subject: [PATCH 023/243] CSS updates for s/block/blacklist for e2e CSS for https://github.com/matrix-org/matrix-react-sdk/pull/574 --- .../views/rooms/MemberDeviceInfo.css | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/MemberDeviceInfo.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/MemberDeviceInfo.css index 44cba9d1..53379ac4 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/MemberDeviceInfo.css +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/MemberDeviceInfo.css @@ -44,14 +44,23 @@ limitations under the License. border-bottom: 1px solid rgba(0,0,0,0.1); } -.mx_MemberDeviceInfo_block, -.mx_MemberDeviceInfo_unblock { +.mx_MemberDeviceInfo_blacklist, +.mx_MemberDeviceInfo_unblacklist { float: right; } +/* "Unblacklist" is too long for a regular button: make it wider and + reduce the padding. */ +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_blacklist, +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_unblacklist { + width: 8em; + padding-left: 1em; + padding-right: 1em; +} + .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified, -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blocked { +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { float: right; padding-left: 1em; } @@ -64,6 +73,6 @@ limitations under the License. color: #e8bf37; } -.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blocked { +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { color: #ba6363; } From 6a944d3e7dca1c7c7c99ac9cce67bbb77254cfc9 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 30 Nov 2016 18:09:51 +0000 Subject: [PATCH 024/243] Fix config location in some more places --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9d1fb48c..0bbac7a5 100644 --- a/README.md +++ b/README.md @@ -59,16 +59,16 @@ to build. 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 `vector` -directory. The version of Vector will not appear in Settings without -using the dist script. You can then mount the vector directory on your +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 =========== -You can configure the app by copying `vector/config.sample.json` to -`vector/config.json` and customising it: +You can configure the app by copying `config.sample.json` to +`config.json` and customising it: 1. `default_hs_url` is the default home server url. 1. `default_is_url` is the default identity server url (this is the server used From e3290c1117a47dbf7c6cf160c7c75420b9c46147 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 1 Dec 2016 11:35:26 +0000 Subject: [PATCH 025/243] Switch to new auto-update & add linux build * Remove squirrel hooks (the installing & uninstalling is now done by the, er, installer) * Switch to electron-auto-update * Shorten initial update delay because we no longer need to wait for squirrel to release a lock file * Change update URLs because windows is now one installer for both 32 & 64 bit. * Update electron-builder to 10 where NSIS is now the default target for Windows. * Add linux to the target list, building a deb. * Remove sqirrel-specific installation spinner * Remove redundant !**/* from files --- electron/build/install-spinner.gif | Bin 23967 -> 0 bytes electron/src/electron-main.js | 41 ++++++++++------------------- electron/src/squirrelhooks.js | 30 --------------------- package.json | 12 +++++---- 4 files changed, 21 insertions(+), 62 deletions(-) delete mode 100644 electron/build/install-spinner.gif delete mode 100644 electron/src/squirrelhooks.js diff --git a/electron/build/install-spinner.gif b/electron/build/install-spinner.gif deleted file mode 100644 index 4a89337be40cf202fe232bca49c1c0c84b278463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23967 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 T>|@V>heO2~5&w^bLiPUwJMS@r diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index fe083930..044eca56 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -17,13 +17,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Squirrel on windows starts the app with various flags -// as hooks to tell us when we've been installed/uninstalled -// etc. -const check_squirrel_hooks = require('./squirrelhooks'); -if (check_squirrel_hooks()) return; - const electron = require('electron'); + +// Auto updater from the 'electron-auto-updater' package for NSIS +// auto-update support (not the one that comes with electron). +const autoUpdater = require('electron-auto-updater').autoUpdater; const url = require('url'); const VectorMenu = require('./vectormenu'); @@ -45,7 +43,7 @@ const PERMITTED_URL_SCHEMES = [ ]; const UPDATE_POLL_INTERVAL_MS = 60 * 60 * 1000; -const INITIAL_UPDATE_DELAY_MS = 30 * 1000; +const INITIAL_UPDATE_DELAY_MS = 5 * 1000; let mainWindow = null; let appQuitting = false; @@ -90,12 +88,12 @@ function installUpdate() { // for some reason, quitAndInstall does not fire the // before-quit event, so we need to set the flag here. appQuitting = true; - electron.autoUpdater.quitAndInstall(); + autoUpdater.quitAndInstall(); } function pollForUpdates() { try { - electron.autoUpdater.checkForUpdates(); + autoUpdater.checkForUpdates(); } catch (e) { console.log("Couldn't check for update", e); } @@ -106,30 +104,19 @@ function startAutoUpdate(update_url) { update_url = update_url + '/'; } try { - // For reasons best known to Squirrel, the way it checks for updates - // is completely different between macOS and windows. On macOS, it - // hits a URL that either gives it a 200 with some json or - // 204 No Content. On windows it takes a base path and looks for - // files under that path. + // Since writing, the electron auto update process has changed from being + // completely different between platforms to being differently completely + // different. On Mac, we set the feed URL here. On Windows, it uses a + // yaml file bundled at build time from the 'publish' entry in the + // package.json. There is no autoupdate for Linux: it's expected that + // the distro will provide it. if (process.platform == 'darwin') { - // macos only has 64 bit - electron.autoUpdater.setFeedURL(update_url + 'macos/'); - } else if (process.platform == 'win32') { - // We split by 32/64 bit too: the builds are different and entirely separate - electron.autoUpdater.setFeedURL(update_url + 'win32/' + process.arch + '/'); - } else { - // Squirrel / electron only supports auto-update on these two platforms. - // I'm not even going to try to guess which feed style they'd use if they - // implemented it on Linux, or if it would be different again. - console.log("Auto update not supported on this platform"); + autoUpdater.setFeedURL(update_url + 'macos/'); } // We check for updates ourselves rather than using 'updater' because we need to // do it in the main process (and we don't really need to check every 10 minutes: // every hour should be just fine for a desktop app) // However, we still let the main window listen for the update events. - // We also wait a short time before checking for updates the first time because - // of squirrel on windows and it taking a small amount of time to release a - // lock file. setTimeout(pollForUpdates, INITIAL_UPDATE_DELAY_MS); setInterval(pollForUpdates, UPDATE_POLL_INTERVAL_MS); } catch (err) { diff --git a/electron/src/squirrelhooks.js b/electron/src/squirrelhooks.js deleted file mode 100644 index 10fb8d9e..00000000 --- a/electron/src/squirrelhooks.js +++ /dev/null @@ -1,30 +0,0 @@ -const path = require('path'); -const spawn = require('child_process').spawn; -const app = require('electron').app; - -function run_update_exe(args, done) { - const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe'); - spawn(updateExe, args, { - detached: true - }).on('close', done); -}; - -function check_squirrel_hooks() { - if (process.platform != 'win32') return false; - - const cmd = process.argv[1]; - const target = path.basename(process.execPath); - if (cmd === '--squirrel-install' || cmd === '--squirrel-updated') { - run_update_exe(['--createShortcut=' + target + ''], app.quit); - return true; - } else if (cmd === '--squirrel-uninstall') { - run_update_exe(['--removeShortcut=' + target + ''], app.quit); - return true; - } else if (cmd === '--squirrel-obsolete') { - app.quit(); - return true; - } - return false; -} - -module.exports = check_squirrel_hooks; diff --git a/package.json b/package.json index 54de856b..0f16ce71 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "rimraf electron/dist && npm run clean && npm run build && build -wm --ia32 --x64 && scripts/check-electron.sh", + "build:electron": "rimraf electron/dist && npm run clean && npm run build && build -wml --ia32 --x64 && scripts/check-electron.sh", "build": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle:dev", "dist": "scripts/package.sh", @@ -58,6 +58,7 @@ "browser-request": "^0.3.3", "classnames": "^2.1.2", "draft-js": "^0.8.1", + "electron-auto-updater": "^0.6.2", "extract-text-webpack-plugin": "^0.9.1", "favico.js": "^0.3.10", "filesize": "^3.1.2", @@ -97,7 +98,7 @@ "catw": "^1.0.1", "cpx": "^1.3.2", "css-raw-loader": "^0.1.1", - "electron-builder": "^7.23.2", + "electron-builder": "^10.4.1", "emojione": "^2.2.3", "expect": "^1.16.0", "fs-extra": "^0.30.0", @@ -134,14 +135,15 @@ "dereference": true, "//files": "We bundle everything, so we only need to include webapp/", "files": [ - "!**/*", "electron/src/**", "electron/img/**", + "node_modules/electron-auto-updater/**", "webapp/**", "package.json" ], - "squirrelWindows": { - "iconUrl": "https://riot.im/favicon.ico" + "linux": { + "target": "deb", + "maintainer": "support@riot.im" } }, "directories": { From 2930a94c791c0db13493f413ad4e487a7c6f63bd Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 1 Dec 2016 18:01:23 +0000 Subject: [PATCH 026/243] Change to update_base_url --- electron/src/electron-main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 044eca56..3fabd01b 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -111,7 +111,7 @@ function startAutoUpdate(update_url) { // package.json. There is no autoupdate for Linux: it's expected that // the distro will provide it. if (process.platform == 'darwin') { - autoUpdater.setFeedURL(update_url + 'macos/'); + autoUpdater.setFeedURL(update_base_url + 'update/macos/'); } // We check for updates ourselves rather than using 'updater' because we need to // do it in the main process (and we don't really need to check every 10 minutes: From 9f51e2c4075460a7b3882e59238576c28064a234 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 1 Dec 2016 19:33:42 +0000 Subject: [PATCH 027/243] Auto-update & build process with NSIS for windows Amalgamate the electron build packaging into one script. Use update_base_url so we can compute the actual URL in the script for windows (because we need to put it in the build) and at runtime for mac os. --- README.md | 3 + electron/src/electron-main.js | 27 ++++--- package.json | 2 +- scripts/check-electron.sh | 13 ---- scripts/electron-dist.sh | 54 -------------- scripts/electron-package.sh | 133 ++++++++++++++++++++++++++++++++++ 6 files changed, 154 insertions(+), 78 deletions(-) delete mode 100755 scripts/check-electron.sh delete mode 100755 scripts/electron-dist.sh create mode 100755 scripts/electron-package.sh diff --git a/README.md b/README.md index 9d1fb48c..1bccbca5 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,9 @@ You can configure the app by copying `vector/config.sample.json` to valid location on this network. This is used as a hint to the user to indicate when a valid location has been entered so it's not necessary for this to be exactly correct. Optional. +1. `update_base_url` (electron app only): HTTPS URL to a web server to download + updates from. This should be the path to the directory containing `install` + and `update`. Running as a Desktop app ======================== diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 3fabd01b..a8bdc7f9 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -99,9 +99,9 @@ function pollForUpdates() { } } -function startAutoUpdate(update_url) { - if (update_url.slice(-1) !== '/') { - update_url = update_url + '/'; +function startAutoUpdate() { + if (process.platform != 'darwin' && process.platform != 'win32') { + return; } try { // Since writing, the electron auto update process has changed from being @@ -111,7 +111,19 @@ function startAutoUpdate(update_url) { // package.json. There is no autoupdate for Linux: it's expected that // the distro will provide it. if (process.platform == 'darwin') { - autoUpdater.setFeedURL(update_base_url + 'update/macos/'); + const update_base_url = vectorConfig.update_base_url; + if (!update_base_url) { + console.log("No update_base_url: disabling auto-update"); + return; + } + if (update_base_url.slice(-1) !== '/') { + update_base_url = update_url + '/'; + } + const update_url = update_base_url + 'update/macos/tmp/'; + console.log("Starting auto update with URL: " + update_url); + autoUpdater.setFeedURL(update_url); + } else { + console.log("Starting auto update with baked-in URL"); } // We check for updates ourselves rather than using 'updater' because we need to // do it in the main process (and we don't really need to check every 10 minutes: @@ -138,12 +150,7 @@ process.on('uncaughtException', function (error) { electron.ipcMain.on('install_update', installUpdate); electron.app.on('ready', () => { - if (vectorConfig.update_url) { - console.log("Starting auto update with URL: " + vectorConfig.update_url); - startAutoUpdate(vectorConfig.update_url); - } else { - console.log("No update_url is defined: auto update is disabled"); - } + startAutoUpdate(); mainWindow = new electron.BrowserWindow({ icon: `${__dirname}/../img/riot.ico`, diff --git a/package.json b/package.json index 0f16ce71..2ffb5773 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "rimraf electron/dist && npm run clean && npm run build && build -wml --ia32 --x64 && scripts/check-electron.sh", + "build:electron": "rimraf electron/dist && npm run clean && npm run build && build -wml --ia32 --x64", "build": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle:dev", "dist": "scripts/package.sh", diff --git a/scripts/check-electron.sh b/scripts/check-electron.sh deleted file mode 100755 index 82b24a6c..00000000 --- a/scripts/check-electron.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -update_url=`jq .update_url webapp/config.json` -echo "***************************************************" -echo -if [ $? = 0 ]; then - echo "Built electron package with update url: $update_url" -else - echo "Built electron package with no update url" - echo "This build will not auto-update." -fi -echo -echo "***************************************************" diff --git a/scripts/electron-dist.sh b/scripts/electron-dist.sh deleted file mode 100755 index 0e8efd56..00000000 --- a/scripts/electron-dist.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -set -e -set -x - -if [ $# = 0 ]; then - echo "Usage: $0 <target directory>" - echo "" - echo "Adds the build in electron/dist/ to a given Riot electron" - echo "download tree. If target directory is empty, create a new" - echo "download tree. This tree can be placed on a web server to" - echo "serve auto-updates (although auto-update for Mac requires" - echo "additional logic)." - exit -fi - -ver=`basename electron/dist/mac/*.dmg | cut -d '-' -f 2 | sed -e 's/\.dmg$//'` -dir=$1 - -echo "Copying files for version $ver to $dir" - -# Install packages: what the user downloads the first time, -# (DMGs for mac, exe installer for windows) -mkdir -p "$dir/install/macos" -cp electron/dist/mac/*.dmg "$dir/install/macos/" -echo "$ver" > "$dir/install/macos/latest" - -mkdir -p "$dir/install/win32/ia32" -cp electron/dist/win-ia32/*.exe "$dir/install/win32/ia32/" - -mkdir -p "$dir/install/win32/x64" -cp electron/dist/win/*.exe "$dir/install/win32/x64/" - - -# Packages for auto-update. It would be nice if squirrel's -# auto update used the installer packages, but it doesn't -# for Reasons. zip for mac, nupkg for windows. -mkdir -p "$dir/update/macos" -cp electron/dist/mac/*.zip "$dir/update/macos/" -echo "$ver" > "$dir/update/macos/latest" - -mkdir -p "$dir/update/win32/ia32" -cp electron/dist/win-ia32/*.nupkg "$dir/update/win32/ia32/" -cat electron/dist/win-ia32/RELEASES >> "$dir/update/win32/ia32/RELEASES" -echo >> "$dir/update/win32/ia32/RELEASES" - -mkdir -p "$dir/update/win32/x64" -cp electron/dist/win/*.nupkg "$dir/update/win32/x64/" -cat electron/dist/win/RELEASES >> "$dir/update/win32/x64/RELEASES" -echo >> "$dir/update/win32/x64/RELEASES" - - -echo "All done!" -echo "$dir can now be copied to your web server." diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh new file mode 100755 index 00000000..8b1ccd4b --- /dev/null +++ b/scripts/electron-package.sh @@ -0,0 +1,133 @@ +#!/bin/bash + +set -e + +usage() { + echo "Usage: $0 -v <version> -c <config file> [-n]" + echo + echo "version: commit-ish to check out and build" + echo "config file: a path to a json config file to" + echo "ship with the build. In addition, update_base_url:" + echo "from this file is used to set up auto-update." + echo "-n: build with no config file." + echo + echo "Values may also be passed as environment variables" +} + +conffile= +version= +skipcfg=0 +while getopts "c:v:n" opt; do + case $opt in + c) + conffile=$OPTARG + ;; + v) + version=$OPTARG + ;; + n) + skipcfg=1 + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + usage + exit + ;; + esac +done + +if [ -z "$version" ]; then + echo "No version supplied" + usage + exit +fi + +if [ -z "$conffile" ] && [ "$skipcfg" = 0 ]; then + echo "No config file given. Use -c to supply a config file or" + echo "-n to build with no config file (and no auto update)." + exit +fi + +if [ -n "$conffile" ]; then + update_base_url=`jq -r .update_base_url $conffile` + + if [ -z "$update_base_url" ]; then + echo "No update URL supplied. Use update_base_url: null if you really" + echo "want a build with no auto-update." + usage + exit + fi + # Make sure the base URL ends in a slash if it doesn't already + update_base_url=`echo $update_base_url | sed -e 's#\([^\/]\)$#\1\/#'` +fi + +if [ ! -f package.json ]; then + echo "No package.json found. This script must be run from" + echo "the vector-web directory." + exit +fi + +echo "Building $version using Update base URL $update_base_url" + +projdir=`pwd` +builddir=`mktemp -d 2>/dev/null || mktemp -d -t 'buildtmp'` +pushd "$builddir" +git clone "$projdir" . +git checkout "$version" + +if [ -n "$conffile" ]; then + popd + cp "$conffile" "$builddir/" + pushd "$builddir" +fi + +if [ "$update_base_url" != "null" ]; then + # Inject a 'publish' configuration into the package.json. This is what + # electron-builder needs for auto-update on windows but we don't want to + # keep it in the package.json as we don't want everyone cloning the source + # and building it for themselves to get our auto-update URL. + update_url=$update_base_url/install/win32/ + jq '.build.publish.provider="generic"' package.json \ + | jq '.build.publish.url="$update_url"' \ + > package.json.tmp + mv package.json.tmp package.json +fi + +npm install +npm run build:electron + +popd + +distdir="$builddir/electron/dist" +pubdir="$projdir/electron/pub" +rm -r "$pubdir" || true +mkdir -p "$pubdir" + +# figure out what version this build is known as +# (since we could be building from a branch or indeed +# any commit-ish, not just a version tag) +vername=`python -c 'import yaml; import sys; print yaml.load(sys.stdin)["version"]' < $builddir/electron/dist/latest.yml` + +# Install packages: what the user downloads the first time, +# (DMGs for mac, exe installer for windows) +mkdir -p "$pubdir/install/macos" +cp $distdir/mac/*.dmg "$pubdir/install/macos/" + +mkdir -p "$pubdir/install/win32/" +cp $distdir/*.exe "$pubdir/install/win32/" +cp $distdir/latest.yml "$pubdir/install/win32/" + +# Packages for auto-update on mac (Windows (NSIS) uses the installer exe) +mkdir -p "$pubdir/update/macos" +cp $distdir/mac/*.zip "$pubdir/update/macos/" +echo "$ver" > "$pubdir/update/macos/latest" + +# Move the debs to the main project dir's dist folder +rm -r "$projdir/electron/dist" || true +mkdir -p "$projdir/electron/dist" +cp $distdir/*.deb "$projdir/electron/dist/" + +rm -rf "$builddir" + +echo "Riot Desktop $vername is ready to go in $pubdir: this directory can be hosted on your web server." +echo "deb archives are in electron/dist/ - these should be added into your debian repository" From 7871a3edb5aaf1822355ea9841434818eba93015 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 1 Dec 2016 19:43:04 +0000 Subject: [PATCH 028/243] Just rm dist in the clean step --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2ffb5773..e8377a0d 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "rimraf electron/dist && npm run clean && npm run build && build -wml --ia32 --x64", + "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", "build": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle:dev", "dist": "scripts/package.sh", @@ -47,7 +47,7 @@ "start:skins:css": "mkdirp build && catw \"src/skins/vector/css/**/*.css\" -o build/components.css", "start": "node scripts/babelcheck.js && parallelshell \"npm run start:emojione\" \"npm run start:res\" \"npm run start:config\" \"npm run start:js\" \"npm run start:skins:css\"", "start:prod": "parallelshell \"npm run start:emojione\" \"npm run start:js:prod\" \"npm run start:skins:css\"", - "clean": "rimraf build lib webapp", + "clean": "rimraf build lib webapp electron/dist", "prepublish": "npm run build:compile", "test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false", "test:multi": "karma start" From d0c2ab4cf10ef3700c69540467122174c6cfbcaa Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 2 Dec 2016 13:43:41 +0000 Subject: [PATCH 029/243] Document cross_origin_renderer_url --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 0bbac7a5..20812add 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,15 @@ You can configure the app by copying `config.sample.json` to valid location on this network. This is used as a hint to the user to indicate when a valid location has been entered so it's not necessary for this to be exactly correct. Optional. +1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display + encrypted file attachments. This MUST be hosted on a completely separate domain to + anything else since it is used to isolate the privileges of file attachments to this + domain. Default: `usercontent.riot.im`. The HTML this page needs to contain is: + ``` + <html><head><script> + window.onmessage=function(e){eval("("+e.data.code+")")(e)} + </script></head><body></body></html> + ``` Running as a Desktop app ======================== From f1998497f20acffa4ad8c7be8e4fe5d67e7652b7 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 2 Dec 2016 14:21:33 +0000 Subject: [PATCH 030/243] Put the riot.im config back in this repo --- electron/riot.im/README | 4 ++ electron/riot.im/config.json | 72 ++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 electron/riot.im/README create mode 100644 electron/riot.im/config.json diff --git a/electron/riot.im/README b/electron/riot.im/README new file mode 100644 index 00000000..09c21874 --- /dev/null +++ b/electron/riot.im/README @@ -0,0 +1,4 @@ +This directory contains the config file for the official riot.im distribution +of Riot Desktop. You probably do not want to build with this config unless +you're building the official riot.im distribution, or you'll find your builds +will replace themselves with the riot.im build. diff --git a/electron/riot.im/config.json b/electron/riot.im/config.json new file mode 100644 index 00000000..8ed2a3e8 --- /dev/null +++ b/electron/riot.im/config.json @@ -0,0 +1,72 @@ +{ + "update_base_url": "https://riot.im/download/desktop/", + "default_hs_url": "https://matrix.org", + "default_is_url": "https://vector.im", + "brand": "Riot", + "integrations_ui_url": "https://scalar.vector.im/", + "integrations_rest_url": "https://scalar.vector.im/api", + "enableLabs": true, + "roomDirectory": { + "servers": [ + "matrix.org" + ], + "serverConfig": { + "matrix.org": { + "networks": [ + "_matrix", + "gitter", + "irc:freenode", + "irc:mozilla", + "irc:snoonet", + "irc:oftc" + ] + } + }, + "networks": { + "gitter": { + "protocol": "gitter", + "portalRoomPattern": "#gitter_.*:matrix.org", + "name": "Gitter", + "icon": "https://gitter.im/favicon.ico", + "example": "org/community", + "nativePattern": "[^\\s]+/[^\\s]+$" + }, + "irc:freenode": { + "protocol": "irc", + "domain": "chat.freenode.net", + "portalRoomPattern": "#freenode_.*:matrix.org", + "name": "Freenode", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + }, + "irc:mozilla": { + "protocol": "irc", + "domain": "chat.freenode.net", + "portalRoomPattern": "#mozilla_.*:matrix.org", + "name": "Mozilla", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + }, + "irc:snoonet": { + "protocol": "irc", + "domain": "ipv6-irc.snoonet.org", + "portalRoomPattern": "#_snoonet_.*:matrix.org", + "name": "Snoonet", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + }, + "irc:oftc": { + "protocol": "irc", + "domain": "irc.oftc.net", + "portalRoomPattern": "#_oftc_.*:matrix.org", + "name": "OFTC", + "icon": "https://matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", + "example": "#channel", + "nativePattern": "^#[^\\s]+$" + } + } + } +} From 749d26c8f4a773c5dcb2ee6d4f9f99632327cd9f Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 2 Dec 2016 14:25:20 +0000 Subject: [PATCH 031/243] Link to the repo which it turns out is a thing --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 20812add..5df8b433 100644 --- a/README.md +++ b/README.md @@ -110,12 +110,8 @@ You can configure the app by copying `config.sample.json` to 1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display encrypted file attachments. This MUST be hosted on a completely separate domain to anything else since it is used to isolate the privileges of file attachments to this - domain. Default: `usercontent.riot.im`. The HTML this page needs to contain is: - ``` - <html><head><script> - window.onmessage=function(e){eval("("+e.data.code+")")(e)} - </script></head><body></body></html> - ``` + domain. Default: `usercontent.riot.im`. This needs to contain v1.html from + https://github.com/matrix-org/usercontent/blob/master/v1.html Running as a Desktop app ======================== From 72de35a2a11f1be25a10f8e40b4eca7dd3570e98 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 14:08:27 +0000 Subject: [PATCH 033/243] Switch back to Squirrel installer which it turns out is by far the lesser of two evils. * Auto-update works with a proxy * The update process is reasonably atomic & faster, rather than running the uninstaller then the installer, leaving you with a broken install if you shut down your machine at the wrong time * Gets the update URL the same way as on mac, rather than baking it into the app at build time from package.json. We don't want it in package.json because only our builds want our update URL. --- electron/src/electron-main.js | 62 +++++++++++++++++++---------------- package.json | 5 +-- scripts/electron-package.sh | 30 ++++++++--------- 3 files changed, 50 insertions(+), 47 deletions(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index a8bdc7f9..2ca0b9d3 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -17,11 +17,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -const electron = require('electron'); +// Squirrel on windows starts the app with various flags +// as hooks to tell us when we've been installed/uninstalled +// etc. +const check_squirrel_hooks = require('./squirrelhooks'); +if (check_squirrel_hooks()) return; -// Auto updater from the 'electron-auto-updater' package for NSIS -// auto-update support (not the one that comes with electron). -const autoUpdater = require('electron-auto-updater').autoUpdater; +const electron = require('electron'); const url = require('url'); const VectorMenu = require('./vectormenu'); @@ -43,7 +45,7 @@ const PERMITTED_URL_SCHEMES = [ ]; const UPDATE_POLL_INTERVAL_MS = 60 * 60 * 1000; -const INITIAL_UPDATE_DELAY_MS = 5 * 1000; +const INITIAL_UPDATE_DELAY_MS = 30 * 1000; let mainWindow = null; let appQuitting = false; @@ -88,47 +90,44 @@ function installUpdate() { // for some reason, quitAndInstall does not fire the // before-quit event, so we need to set the flag here. appQuitting = true; - autoUpdater.quitAndInstall(); + electron.autoUpdater.quitAndInstall(); } function pollForUpdates() { try { - autoUpdater.checkForUpdates(); + electron.autoUpdater.checkForUpdates(); } catch (e) { console.log("Couldn't check for update", e); } } -function startAutoUpdate() { - if (process.platform != 'darwin' && process.platform != 'win32') { - return; +function startAutoUpdate(update_base_url) { + if (update_base_url.slice(-1) !== '/') { + update_base_url = update_base_url + '/'; } try { - // Since writing, the electron auto update process has changed from being - // completely different between platforms to being differently completely - // different. On Mac, we set the feed URL here. On Windows, it uses a - // yaml file bundled at build time from the 'publish' entry in the - // package.json. There is no autoupdate for Linux: it's expected that - // the distro will provide it. + // For reasons best known to Squirrel, the way it checks for updates + // is completely different between macOS and windows. On macOS, it + // hits a URL that either gives it a 200 with some json or + // 204 No Content. On windows it takes a base path and looks for + // files under that path. if (process.platform == 'darwin') { - const update_base_url = vectorConfig.update_base_url; - if (!update_base_url) { - console.log("No update_base_url: disabling auto-update"); - return; - } - if (update_base_url.slice(-1) !== '/') { - update_base_url = update_url + '/'; - } - const update_url = update_base_url + 'update/macos/tmp/'; - console.log("Starting auto update with URL: " + update_url); - autoUpdater.setFeedURL(update_url); + electron.autoUpdater.setFeedURL(update_base_url + 'macos/'); + } else if (process.platform == 'win32') { + electron.autoUpdater.setFeedURL(update_base_url + 'win32/' + process.arch + '/'); } else { - console.log("Starting auto update with baked-in URL"); + // Squirrel / electron only supports auto-update on these two platforms. + // I'm not even going to try to guess which feed style they'd use if they + // implemented it on Linux, or if it would be different again. + console.log("Auto update not supported on this platform"); } // We check for updates ourselves rather than using 'updater' because we need to // do it in the main process (and we don't really need to check every 10 minutes: // every hour should be just fine for a desktop app) // However, we still let the main window listen for the update events. + // We also wait a short time before checking for updates the first time because + // of squirrel on windows and it taking a small amount of time to release a + // lock file. setTimeout(pollForUpdates, INITIAL_UPDATE_DELAY_MS); setInterval(pollForUpdates, UPDATE_POLL_INTERVAL_MS); } catch (err) { @@ -150,7 +149,12 @@ process.on('uncaughtException', function (error) { electron.ipcMain.on('install_update', installUpdate); electron.app.on('ready', () => { - startAutoUpdate(); + if (vectorConfig.update_base_url) { + console.log("Starting auto update with base URL: " + vectorConfig.update_base_url); + startAutoUpdate(vectorConfig.update_base_url); + } else { + console.log("No update_base_url is defined: auto update is disabled"); + } mainWindow = new electron.BrowserWindow({ icon: `${__dirname}/../img/riot.ico`, diff --git a/package.json b/package.json index e8377a0d..ea9d3203 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,6 @@ "browser-request": "^0.3.3", "classnames": "^2.1.2", "draft-js": "^0.8.1", - "electron-auto-updater": "^0.6.2", "extract-text-webpack-plugin": "^0.9.1", "favico.js": "^0.3.10", "filesize": "^3.1.2", @@ -137,13 +136,15 @@ "files": [ "electron/src/**", "electron/img/**", - "node_modules/electron-auto-updater/**", "webapp/**", "package.json" ], "linux": { "target": "deb", "maintainer": "support@riot.im" + }, + "win": { + "target": "squirrel" } }, "directories": { diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index 8b1ccd4b..5830c62d 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -81,18 +81,6 @@ if [ -n "$conffile" ]; then pushd "$builddir" fi -if [ "$update_base_url" != "null" ]; then - # Inject a 'publish' configuration into the package.json. This is what - # electron-builder needs for auto-update on windows but we don't want to - # keep it in the package.json as we don't want everyone cloning the source - # and building it for themselves to get our auto-update URL. - update_url=$update_base_url/install/win32/ - jq '.build.publish.provider="generic"' package.json \ - | jq '.build.publish.url="$update_url"' \ - > package.json.tmp - mv package.json.tmp package.json -fi - npm install npm run build:electron @@ -113,15 +101,25 @@ vername=`python -c 'import yaml; import sys; print yaml.load(sys.stdin)["version mkdir -p "$pubdir/install/macos" cp $distdir/mac/*.dmg "$pubdir/install/macos/" -mkdir -p "$pubdir/install/win32/" -cp $distdir/*.exe "$pubdir/install/win32/" -cp $distdir/latest.yml "$pubdir/install/win32/" +mkdir -p "$pubdir/install/win32/ia32/" +cp $distdir/win-ia32/*.exe "$pubdir/install/win32/ia32/" -# Packages for auto-update on mac (Windows (NSIS) uses the installer exe) +mkdir -p "$pubdir/install/win32/x64/" +cp $distdir/win/*.exe "$pubdir/install/win32/x64/" + +# Packages for auto-update mkdir -p "$pubdir/update/macos" cp $distdir/mac/*.zip "$pubdir/update/macos/" echo "$ver" > "$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/install/win32/ia32/" + +mkdir -p "$pubdir/update/win32/x64/" +cp $distdir/win/*.nupkg "$pubdir/update/win32/x64/" +cp $distdir/win/RELEASES "$pubdir/update/win32x64ia32/" + # Move the debs to the main project dir's dist folder rm -r "$projdir/electron/dist" || true mkdir -p "$projdir/electron/dist" From b613a742f53bb8498c42dec4fb872faf5a6d0011 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 14:17:22 +0000 Subject: [PATCH 034/243] Forgot to re-add squirrelhooks --- electron/src/squirrelhooks.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 electron/src/squirrelhooks.js diff --git a/electron/src/squirrelhooks.js b/electron/src/squirrelhooks.js new file mode 100644 index 00000000..10fb8d9e --- /dev/null +++ b/electron/src/squirrelhooks.js @@ -0,0 +1,30 @@ +const path = require('path'); +const spawn = require('child_process').spawn; +const app = require('electron').app; + +function run_update_exe(args, done) { + const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe'); + spawn(updateExe, args, { + detached: true + }).on('close', done); +}; + +function check_squirrel_hooks() { + if (process.platform != 'win32') return false; + + const cmd = process.argv[1]; + const target = path.basename(process.execPath); + if (cmd === '--squirrel-install' || cmd === '--squirrel-updated') { + run_update_exe(['--createShortcut=' + target + ''], app.quit); + return true; + } else if (cmd === '--squirrel-uninstall') { + run_update_exe(['--removeShortcut=' + target + ''], app.quit); + return true; + } else if (cmd === '--squirrel-obsolete') { + app.quit(); + return true; + } + return false; +} + +module.exports = check_squirrel_hooks; From 37b4734bbe0b1d26d33cd51c069614be57991c08 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 14:19:49 +0000 Subject: [PATCH 035/243] Also re-add installer spinner --- electron/build/install-spinner.gif | Bin 0 -> 4460 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 electron/build/install-spinner.gif diff --git a/electron/build/install-spinner.gif b/electron/build/install-spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4f832c34230af5d0267962c7e1d0fab4bab5dd0 GIT binary patch literal 4460 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 literal 0 HcmV?d00001 From 3d813e68e9e889a25351f82fe0b843e433bbcd51 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 14:20:26 +0000 Subject: [PATCH 036/243] gitignore electron/pub --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2e34b6c1..1f18d9a1 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ .DS_Store npm-debug.log electron/dist +electron/pub From ec959f005230158aaf87bcbe5d20868ccfeaa260 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 14:40:06 +0000 Subject: [PATCH 037/243] Update name & repo to reflect renamed repository Unsure whether we want to go through doing a complete s/vector/riot/ - I'm not sure there's a whole lot of point. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c672af5c..4f4a75cb 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "vector-web", + "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", "version": "0.9.0", @@ -7,7 +7,7 @@ "author": "Vector Creations Ltd.", "repository": { "type": "git", - "url": "https://github.com/vector-im/vector-web" + "url": "https://github.com/vector-im/riot-web" }, "license": "Apache-2.0", "files": [ From 189c8aca79e35d27313831fc3bf63a0529f11b3c Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 17:15:48 +0000 Subject: [PATCH 038/243] Remove redundant line getting version As there is no latest.yml now --- scripts/electron-package.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index 5830c62d..2d93bbe1 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -91,11 +91,6 @@ pubdir="$projdir/electron/pub" rm -r "$pubdir" || true mkdir -p "$pubdir" -# figure out what version this build is known as -# (since we could be building from a branch or indeed -# any commit-ish, not just a version tag) -vername=`python -c 'import yaml; import sys; print yaml.load(sys.stdin)["version"]' < $builddir/electron/dist/latest.yml` - # Install packages: what the user downloads the first time, # (DMGs for mac, exe installer for windows) mkdir -p "$pubdir/install/macos" @@ -127,5 +122,5 @@ cp $distdir/*.deb "$projdir/electron/dist/" rm -rf "$builddir" -echo "Riot Desktop $vername is ready to go in $pubdir: this directory can be hosted on your web server." +echo "Riot Desktop is ready to go in $pubdir: this directory can be hosted on your web server." echo "deb archives are in electron/dist/ - these should be added into your debian repository" From 987822bd5a390aae699fb2882fdaef2b0d26ddf4 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 17:27:30 +0000 Subject: [PATCH 039/243] typo in cp destination --- scripts/electron-package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index 2d93bbe1..c8dc92f9 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -113,7 +113,7 @@ cp $distdir/win-ia32/RELEASES "$pubdir/install/win32/ia32/" mkdir -p "$pubdir/update/win32/x64/" cp $distdir/win/*.nupkg "$pubdir/update/win32/x64/" -cp $distdir/win/RELEASES "$pubdir/update/win32x64ia32/" +cp $distdir/win/RELEASES "$pubdir/update/win32/x64/" # Move the debs to the main project dir's dist folder rm -r "$projdir/electron/dist" || true From 6934b7ed562a2c6b6676d4a3ce276f9961407323 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 17:53:06 +0000 Subject: [PATCH 040/243] released js-sdk & react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4fed9c8a..234ec094 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", - "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", + "matrix-js-sdk": "0.7.1-rc.1", + "matrix-react-sdk": "0.8.1-rc.1", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From ca6a3a2ad94694ac614de0db6fc19362eb10b643 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 18:02:03 +0000 Subject: [PATCH 041/243] Prepare changelog for v0.9.1-rc.1 --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31973282..c1914c2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ +Changes in [0.9.1-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.1-rc.1) (2016-12-05) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.0...v0.9.1-rc.1) + + * Final bits to prepare electron distribtion: + [\#2653](https://github.com/vector-im/riot-web/pull/2653) + * Update name & repo to reflect renamed repository + [\#2692](https://github.com/vector-im/riot-web/pull/2692) + * Document cross_origin_renderer_url + [\#2680](https://github.com/vector-im/riot-web/pull/2680) + * Add css for the iframes for e2e attachments + [\#2659](https://github.com/vector-im/riot-web/pull/2659) + * Fix config location in some more places + [\#2670](https://github.com/vector-im/riot-web/pull/2670) + * CSS updates for s/block/blacklist for e2e + [\#2662](https://github.com/vector-im/riot-web/pull/2662) + * Update to electron 1.4.8 + [\#2660](https://github.com/vector-im/riot-web/pull/2660) + * Add electron config + [\#2644](https://github.com/vector-im/riot-web/pull/2644) + * Move getDefaultDeviceName into the Platforms + [\#2643](https://github.com/vector-im/riot-web/pull/2643) + * Add Freenode & Mozilla domains + [\#2641](https://github.com/vector-im/riot-web/pull/2641) + * Include config.sample.json in dist tarball + [\#2614](https://github.com/vector-im/riot-web/pull/2614) + Changes in [0.9.0](https://github.com/vector-im/vector-web/releases/tag/v0.9.0) (2016-11-19) ============================================================================================ [Full Changelog](https://github.com/vector-im/vector-web/compare/v0.8.4...v0.9.0) From df5143c818761427e590aa18f161d115f211e300 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 5 Dec 2016 18:02:03 +0000 Subject: [PATCH 042/243] v0.9.1-rc.1 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 234ec094..e6d8fcf7 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.0", + "version": "0.9.1-rc.1", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { @@ -144,7 +144,7 @@ "maintainer": "support@riot.im" }, "win": { - "target": "squirrel" + "target": "squirrel" } }, "directories": { From 8d06b540916d4d6cdcc6e7f4f5c3f1f65d3e7ae8 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 6 Dec 2016 09:45:31 +0000 Subject: [PATCH 043/243] Only show window when ready Avoids it sitting there for a short period with no spinner while it parses the js. --- electron/src/electron-main.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 2ca0b9d3..57f4f66d 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -159,10 +159,14 @@ electron.app.on('ready', () => { mainWindow = new electron.BrowserWindow({ icon: `${__dirname}/../img/riot.ico`, width: 1024, height: 768, + show: false, }); mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`); electron.Menu.setApplicationMenu(VectorMenu); + mainWindow.once('ready-to-show', () => { + mainWindow.show(); + }); mainWindow.on('closed', () => { mainWindow = null; }); From 5fa0f62ccc948473f68a3e4790ece29adb97944a Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 6 Dec 2016 13:28:59 +0000 Subject: [PATCH 044/243] Fix clicking on notifications * Dismiss the notification when it's clicked * Accept the room object: we need it to view_room * Desktop app: Un-minimise when notification clicked * Desktop App: Set App User Model ID so notifications work on Windows 8! --- electron/src/electron-main.js | 6 ++++++ src/vector/platform/ElectronPlatform.js | 3 ++- src/vector/platform/WebPlatform.js | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 57f4f66d..788d4602 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -202,3 +202,9 @@ electron.app.on('activate', () => { electron.app.on('before-quit', () => { appQuitting = true; }); + +// Set the App User Model ID to match what the squirrel +// installer uses for the shortcut icon. +// This makes notifications work on windows 8.1 (and is +// a noop on other platforms). +electron.app.setAppUserModelId('com.squirrel.riot-web.Riot'); diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 3894896a..d6f4013a 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -79,7 +79,7 @@ export default class ElectronPlatform extends VectorBasePlatform { return true; } - displayNotification(title: string, msg: string, avatarUrl: string): Notification { + displayNotification(title: string, msg: string, avatarUrl: string, room: Object): Notification { // Notifications in Electron use the HTML5 notification API const notification = new global.Notification( title, @@ -97,6 +97,7 @@ export default class ElectronPlatform extends VectorBasePlatform { room_id: room.roomId }); global.focus(); + electron.remote.getCurrentWindow().restore(); }; return notification; diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index 9998f7c7..c4ed4d55 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -103,7 +103,7 @@ export default class WebPlatform extends VectorBasePlatform { return defer.promise; } - displayNotification(title: string, msg: string, avatarUrl: string) { + displayNotification(title: string, msg: string, avatarUrl: string, room: Object) { const notification = new global.Notification( title, { @@ -120,6 +120,7 @@ export default class WebPlatform extends VectorBasePlatform { room_id: room.roomId }); global.focus(); + notification.close(); }; // Chrome only dismisses notifications after 20s, which From d4ac5f829fc4b7436281cd24f0ef31cef09f308a Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 6 Dec 2016 16:04:46 +0000 Subject: [PATCH 045/243] react-sdk rc.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e6d8fcf7..bef21004 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", "matrix-js-sdk": "0.7.1-rc.1", - "matrix-react-sdk": "0.8.1-rc.1", + "matrix-react-sdk": "0.8.1-rc.2", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 0f47c9956c2cd56a4a6868f0c53c959c9ac56bf9 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 6 Dec 2016 16:06:14 +0000 Subject: [PATCH 046/243] Prepare changelog for v0.9.1-rc.2 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1914c2b..2cdba7ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +Changes in [0.9.1-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.9.1-rc.2) (2016-12-06) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.1-rc.1...v0.9.1-rc.2) + + * Fix clicking on notifications + [\#2700](https://github.com/vector-im/riot-web/pull/2700) + * Desktop app: Only show window when ready + [\#2697](https://github.com/vector-im/riot-web/pull/2697) + Changes in [0.9.1-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.1-rc.1) (2016-12-05) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.0...v0.9.1-rc.1) From a9fcf106abc93096d98f7a33f8dc38e44201a049 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 6 Dec 2016 16:06:15 +0000 Subject: [PATCH 047/243] v0.9.1-rc.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bef21004..f1c46b76 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.1-rc.1", + "version": "0.9.1-rc.2", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From ad79f67ab6d3b6cbea1605f9e123e017448cbf14 Mon Sep 17 00:00:00 2001 From: Hubert Chathi <hubert@uhoreg.ca> Date: Tue, 6 Dec 2016 17:59:17 -0500 Subject: [PATCH 048/243] Add missing brackets to call to toUpperCase --- src/vector/platform/ElectronPlatform.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index d6f4013a..3b41822b 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -52,7 +52,7 @@ function platformFriendlyName() { // Sorry, Linux users: you get lumped into here, // but only because Linux's capitalisation is // normal. We do care about you. - return window.process.platform[0].toUpperCase + window.process.platform.slice(1); + return window.process.platform[0].toUpperCase() + window.process.platform.slice(1); } } From 737f912abb3567f7318439d2dc275aecb6caea74 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 7 Dec 2016 11:19:51 +0000 Subject: [PATCH 049/243] Use a PNG for the icon on non-Windows MATE desktop env (and presumably other GNOMEs don't support ICOs, so use a PNG. Fixes https://github.com/vector-im/riot-web/issues/2705 --- electron/src/electron-main.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 788d4602..2b135a03 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -156,8 +156,12 @@ electron.app.on('ready', () => { console.log("No update_base_url is defined: auto update is disabled"); } + const icon_path = `${__dirname}/../img/riot.` + ( + process.platform == 'win32' ? 'ico' : 'png' + ); + mainWindow = new electron.BrowserWindow({ - icon: `${__dirname}/../img/riot.ico`, + icon: icon_path, width: 1024, height: 768, show: false, }); From 2b51cda6da95b93d47d536fcd86e2fa8f4d8719f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 7 Dec 2016 14:07:31 +0000 Subject: [PATCH 050/243] talk to jenkins via https for the /dev redeployer --- scripts/redeploy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/redeploy.py b/scripts/redeploy.py index 6e6e64aa..fddd5da9 100755 --- a/scripts/redeploy.py +++ b/scripts/redeploy.py @@ -127,7 +127,7 @@ def on_receive_jenkins_poke(): if __name__ == "__main__": parser = argparse.ArgumentParser("Runs a Vector redeployment server.") parser.add_argument( - "-j", "--jenkins", dest="jenkins", default="http://matrix.org/jenkins/", help=( + "-j", "--jenkins", dest="jenkins", default="https://matrix.org/jenkins/", help=( "The base URL of the Jenkins web server. This will be hit to get the\ built artifacts (the .gz file) for redeploying." ) From 5e8e6f4c8bb2a01de959b233e190cb363340d1d4 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 8 Dec 2016 11:40:33 +0000 Subject: [PATCH 051/243] Add icon missed from #2708 --- electron/img/riot.png | Bin 0 -> 14677 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 electron/img/riot.png diff --git a/electron/img/riot.png b/electron/img/riot.png new file mode 100644 index 0000000000000000000000000000000000000000..fe13aa99c3aac79efe1ce0e4dd549656f7e0451f GIT binary patch literal 14677 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 S$^gy`peU;*^X08Y#Qz7B`o*;X literal 0 HcmV?d00001 From 229693dd714c3cdb52ffc59ebe86f07b103221cb Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 8 Dec 2016 11:41:31 +0000 Subject: [PATCH 052/243] gitignore .npmrc (We now require a .npmrc in the riot-web dir to use the right account when releasing) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1f18d9a1..c28df64c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ /node_modules /packages/ /webapp +/.npmrc .DS_Store npm-debug.log electron/dist From e55845ac528194d92a4f43f40b7aadfff18b67d2 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 8 Dec 2016 16:21:37 +0000 Subject: [PATCH 053/243] Makeover! Also add script for generating the PNGs and add pre-rendered PNGs for the Linux electron build which means you don't need icns2png to build it and the Linux icons are straight from the SVG rather than resized bitmaps. --- electron/build/icon.icns | Bin 180819 -> 244823 bytes electron/build/icon.ico | Bin 21650 -> 90022 bytes electron/build/icons/128x128.png | Bin 0 -> 7348 bytes electron/build/icons/16x16.png | Bin 0 -> 673 bytes electron/build/icons/24x24.png | Bin 0 -> 1118 bytes electron/build/icons/256x256.png | Bin 0 -> 14743 bytes electron/build/icons/48x48.png | Bin 0 -> 2620 bytes electron/build/icons/512x512.png | Bin 0 -> 30435 bytes electron/build/icons/64x64.png | Bin 0 -> 3652 bytes electron/build/icons/96x96.png | Bin 0 -> 5628 bytes res/vector-icons/android-chrome-144x144.png | Bin 11585 -> 8265 bytes res/vector-icons/android-chrome-192x192.png | Bin 15761 -> 11002 bytes res/vector-icons/android-chrome-36x36.png | Bin 2814 -> 1880 bytes res/vector-icons/android-chrome-48x48.png | Bin 3789 -> 2620 bytes res/vector-icons/android-chrome-72x72.png | Bin 5571 -> 4175 bytes res/vector-icons/android-chrome-96x96.png | Bin 7536 -> 5628 bytes res/vector-icons/apple-touch-icon-114x114.png | Bin 8992 -> 6596 bytes res/vector-icons/apple-touch-icon-120x120.png | Bin 9531 -> 6872 bytes res/vector-icons/apple-touch-icon-144x144.png | Bin 11585 -> 8265 bytes res/vector-icons/apple-touch-icon-152x152.png | Bin 12185 -> 8751 bytes res/vector-icons/apple-touch-icon-180x180.png | Bin 14677 -> 10430 bytes res/vector-icons/apple-touch-icon-57x57.png | Bin 4464 -> 3272 bytes res/vector-icons/apple-touch-icon-60x60.png | Bin 4715 -> 3427 bytes res/vector-icons/apple-touch-icon-72x72.png | Bin 5571 -> 4175 bytes res/vector-icons/apple-touch-icon-76x76.png | Bin 5953 -> 4438 bytes .../apple-touch-icon-precomposed.png | Bin 14677 -> 10430 bytes res/vector-icons/apple-touch-icon.png | Bin 14677 -> 10430 bytes res/vector-icons/favicon-16x16.png | Bin 1343 -> 673 bytes res/vector-icons/favicon-32x32.png | Bin 2512 -> 1581 bytes res/vector-icons/favicon-96x96.png | Bin 7536 -> 5628 bytes res/vector-icons/favicon.ico | Bin 4286 -> 90022 bytes res/vector-icons/mstile-144x144.png | Bin 7541 -> 8265 bytes res/vector-icons/mstile-150x150.png | Bin 7635 -> 8575 bytes res/vector-icons/mstile-310x150.png | Bin 8213 -> 9067 bytes res/vector-icons/mstile-310x310.png | Bin 57648 -> 17902 bytes res/vector-icons/mstile-70x70.png | Bin 10149 -> 3999 bytes scripts/make-icons.sh | 93 ++++++++++++++++++ 37 files changed, 93 insertions(+) create mode 100644 electron/build/icons/128x128.png create mode 100644 electron/build/icons/16x16.png create mode 100644 electron/build/icons/24x24.png create mode 100644 electron/build/icons/256x256.png create mode 100644 electron/build/icons/48x48.png create mode 100644 electron/build/icons/512x512.png create mode 100644 electron/build/icons/64x64.png create mode 100644 electron/build/icons/96x96.png create mode 100755 scripts/make-icons.sh diff --git a/electron/build/icon.icns b/electron/build/icon.icns index 55c03d96cd21f61fbd5da9d659266a8324bb3754..d74e97e738eebf762f9183dd459e8c7287436d58 100644 GIT binary patch literal 244823 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⩔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� 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ℜ{n-2s! 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�d!%n@pw9$`)ZCF3e-8C9nWbl7 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 F|39V_ya@mR literal 180819 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ഃ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 ZgL})B$0x1deiGww?dWFrQEe}}{|nO~|11Ci diff --git a/electron/build/icon.ico b/electron/build/icon.ico index 8b681ffba3c1fbc6af4ad68fc41449ce017d9b53..a1a73e6cfdc4befddf4b5b9f1afb9429d24055d4 100644 GIT binary patch literal 90022 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 aIa1I|(;NR_{&n<De83DV+{(}@?f(N)0L3E! literal 21650 zcmaI7WmH>T7cCq-xEBrD;##D^U5dLDx1vRg1b26e7KauHPLa|A#kDvDiUlw3Ui1sk z``!EV!eAtWoUF6g+-uLJ2LM1q{67C60q6k!Ism{6#QPWxH3eKON-V@%+_#FdTF;+8 z{}G@gUU1euUI73)GH+$2bi5Z1;Sdj9-R1t%WAWy{r5HrM7`t?03|_Kny|HMo=Hw4> z<)n%YR^I`nvSUekU({*pb}sW=EQ=HoPYrW!A6zHB+!$#~3{wKLc8tHP`HTiWU&<L4 z8i)H8{30#Z`pKZSuOHQLd`n>!^~dq^Dg;hASH)mtY7ssX1zSqohPGBQiB4D)-fC@6 z{`iZu{55lLzAn;Nzxk_ef?!)0k5^ysX+&aCRApvM-hf?K(k-vJE#um3dg9})W*wK? zND(n=l=oQka!9A61$K46hKKql{wzp?{KZ40Ar;of7t=S4g>zKj26EAh{wxvt3fc|- zi1^p(erx$I#8>et?7bw3As8v4{_YnEa|$v)mD_6nlvo|m@-wYf@nq5dMDU*#Qf9T# zK0l>EvEx_9cA`RVsNaC^YhFb&-4Bk-t}@@PW_q(S`5$X0ZZKuJQDqy5QsiN713~zP z2AiJ(L>I4B)&*F_unX$%J`fbYPKk3xyIk@y`(7|Fb?BJ#V=wdMGJ(cz7K=;&&@b_| zV3x^eSJNMqHa}q#N9-`JU*V>z&f4QCvaMN0KXf|eKMb71tf*+{VmH7@DA;J>n$buk zgfW<?r-exByS0BTxoHY195FFw<hkjIpnc+^g&mrI+(|BsFWFtfgu0v5wq;I@)�c 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 Mnuf@?>b4R81I3T|A^-pY diff --git a/electron/build/icons/128x128.png b/electron/build/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..54149b1ae2bb1c34630a4978dd7936115ca3e25b GIT binary patch literal 7348 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 a2>w4Vw%njRv!0;<0000<MNUMnLSTZ!FD>l= literal 0 HcmV?d00001 diff --git a/electron/build/icons/16x16.png b/electron/build/icons/16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..def4ec5eee34eb864994e5b7f6034563f6ad12f3 GIT binary patch literal 673 zcmV;S0$%-zP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x0#->xK~y-6eUnW{ltCEBf6u({yPx9fb}-k3q#*3$R-^^h$&*(*L}Av! zLx)HVL4+2G$_ffPL=c1>qmT{}(WOq+#ZD<mC8T8wn(Mml$NMqUL3eXa`W^rC%x|7~ zh7r~o8oc#T=E{8{s6_V;qWc>F5X1yVXIH)A8yy5!)17A~*?<5HUA%pa+5B5$)>B(( z8rX-5TZpVxg~UNbOs23rknT8rw<1sgD#nrOW&q#dXUia901+W#JN))b(i}_P8Tl~Y zT_bRg)_=4c!qxqurYMn?7)k_7gt!$Z=N3tZ>nH_f;&$|2jld)$rPltvG@eM2=t_}1 zw~P94jF55&D+duFY}qWA^N0uuC%$v!-Q#uuyJE5vAsV|{a03r*3@cud=4d0@7&66W zlqf7wge(VzfY1g^R|T7~fN%3Zalhn9v?kHp6&gdJH7JFFTulcX@wAVg_gEbNjPW!p z@}1Pl-GmP`QVL2)Ag*H<C#y5qNGb4W2-T5)zliblT4-Ql;w%1AiG&j)=NIp%5B3+f z6r^I?P$JlIrzSV9X6flHi-pxGRDQVT6>2+h35+3myag*_)vnFu`878EymI=M0stlO z!&!M?+T-K@4#->{>>lm>uV9_mH%14}3Ow7C+e-AKo}MSxUx6hW0b@X;F-AbN22ggW zA6VEV+0#~<I#d+|#+oSvW$gtX1;31IJfq+f!1amYCDGEy+PA1)1fTh;;9AG2%wi#T z-ZlPGp!G_okiC>X+&fdL9(!@+m55vbvcQ5tdT+i=&jb7c_aE>Ewv+3A00000NkvXX Hu0mjf4VW>J literal 0 HcmV?d00001 diff --git a/electron/build/icons/24x24.png b/electron/build/icons/24x24.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe144ea13d65f90b075f89d3d8bbc13fe526bee GIT binary patch literal 1118 zcmV-k1flzhP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00006VoOIv0RI60 z0RN!9r;`8x1QSU_K~zYIm6TnGRAm^)fA2YG=FF!%v$M|Zy11G~-yc>65kePH5mK=b zdm|c@)kSobQW?}lL0J-F1SQdhNEewwMhVtU7luUHRpoBzuDj~)?Ck8$*ZG=r&ii(e zPV0`d>H{yl@ciHZ?|IMroJX)I-gsrtny?l8pr%{50Ge@I8uO8r2vb`uLn_(ur93MH zKOxnDcOHD^54wc7w0ZgQeP*JsURKp0y;zXCIm4P~Z@=u2jzAX%R_Ic8Ysw0|gRQ`S z>4QzrHI@R}r6t!pJC>RQG)JpcPS4Tw9h$yFqvcTc8cbLvDsG)s@jkICk=+{8Bfk`n zAINtFD2)x>uGy-(1WFPpNr)t>8x&$029r5v+<63o!DQbZQs?jszkL?DB0$SWX1W2g z16eZBWP8Q6C=K6Xyjh|@p2ZGabRp=8CO75%#P%x!%!m7akFD+aLPR$7FuTHLvRQ7g zl3OKiL|K;}V6rhwf1;New?-k6MMJ%YQth`jE^VZyRAK9ll#fjjp0V&FlKzc@$otX^ zrE-KywV_fe=Da$tTW28IOUbE{Gt=0<ODtjz6;B+zrwAu60|00-ofVr`(I3xnx;{fL zRbbAmQ*vrFe4B_CK>$wZvO1Y(+F4*_tcUaV9Qjy=S+`13H*rJvPOb!4F7mMqSu+Jd zwPjQFERu#vAVWZ42#r97#Ed8s+TC=`fcaJvJ8+TBfM)2?-<PA}HOQH1lvIQ$bfFQb z5TU4C7ogWnQJtLU!q=mC(>4h3Z_1Dy9>6tQq@yt`-yvzlsQDHsHG1i+*3DF0?1Ng% zV(k1B6Z`-C&m2I3HCn~~>H_Di3Wa!<vR5Y+iD89q`P5Y6#8m+RQQhFy%xZd0DU>HW z^35|f%wHWUZiC)viaD==Qey9+k&*DKfVgh9`+i}e-nEFzk5jZR*u?ZG^KSibUAOlx z&UXdekSetQ+@7`Bt^g&W_RSRI^V72u{i)){7wu~Tgi2C!s{o|#$`Kz*b%nHM9o&y6 zkG}iBmVcJ!mVJYWreo?6YQ9B$cn}d?M(%{$UVZZI&DRA0@MS<fa6WQ-<a)Bk>&r-m zQtFEx!^O)+_EiA@NVQPBf6JNOpYM8K!MDpO^IFI!*AG|}Mi6}-=sMa_JiYUY;=P>! zC8WAIF+-`4N&x}|C_%fg-#faiEQHt&{6Aiogb-}(0EC)6YlR-!Xo^W|j`8LU*=PzY zaL|O9SZuKS$Xnkl__XUKl-4;a#wHTSYc2bvCw<nX3JfJzq6<OAYmD15b)>_@OYRi# zS4Z`5?8EQg{J8^gXk;Wb4CAr$R%QQa?ObWBK0QCtnEf&o!9#oQ-exT|+H-8D)l$Zz k0uBQnumJ3f!|-C=zby&fX8FOv>Hq)$07*qoM6N<$f&)t&(f|Me literal 0 HcmV?d00001 diff --git a/electron/build/icons/256x256.png b/electron/build/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..563e6d5edc95a311527467d5b2a4c5d2b600ce47 GIT binary patch literal 14743 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 literal 0 HcmV?d00001 diff --git a/electron/build/icons/48x48.png b/electron/build/icons/48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd225d40238c5f2ecfc101793df154f3961c820 GIT binary patch literal 2620 zcmV-C3d8k@P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00006VoOIv0RI60 z0RN!9r;`8x3GqopK~!jgy_tE8T~!^&Kj+^2-hKOfv(I$eLR%?YSu~_AxCAuSgaC1Y z5CjSl5F&AbNFgH40~$k%Q9%s~Q9>~q1!GtOq8N!lz>t6x8Wzh^Iy0T=%)I@*yPxA9 zZ)Rwjw|0u(<R<T(<$HeLv;NNS2-@JL>wdagXx_at=WkRMKPC(z#6TGRxH#G=DbU+7 zEWieez`H136{u%4p+A}3cuA>ah6WHVjlcfRTjXBrR$SSzoZb^Ab>T{k;YiztBnn^p zIDwBs%_mzR{)`kmZa?Fa*SfZz76P_>Yx~WNS=&Brt1*mNh;`pxPjn#GQG*Jo`3^<5 zO3o?cN*_QeC3YH8ZOMLm^MTIIZz5pJ#oL!-*?aMn)(J^?MV$VtK7kO8`$H&!u4#lc z9a9gHFrsKepcLes6601Lzb<4-DRs%V(=U5^Ndj)X`i_UxgnfReBmm)yM-WFxJ8M)3 zQlTh)W|B-efmDj|+APy{5g-tPt8d$|`8S<#84Xjb{+XSb{ULhB43>ZLsHXY84De)t zEnSLkm6BJZ=+=lEMV80=SrP9is+;VqPU}jk`)+yh0d@Pv%YNIg-NsYIlId;*I61pz zepu5<g<}jwGOSIFa$@Ev`phJ?z~=4ZIMYs%{z#HF$zcQt5WoK6zjuDVUAv9fzy-It z*fP|O0PTbXp|1?KZ7d#&kPgM^kEGCrM%8zCuRMt>eTJhMmc{y*vWtvYX8<O3!#F8> z+Sg~AaW<SnB5hQa?Pj_WkQ_;pi8ijH6!<E@mOfSAqT<<1Sp`O7Jq$$B9G4ztPkE9_ zt3XIM7>cB+`8Ii{GVFW)9l({XI%N@lu>G#L{O9s(J2hSiIQfP%hz-Zvmi3in#ws#p z7YLN3*G#f9K7dpKZx+Y#WWcfMQ9_!*?!pI1B_*0X`S$gf?{37`a0K+z(-XmK<+ZBl zcO)RZF2h8u1f}MOs;+6o^e{bUg5g*Xy^$pEl=hQz$^aal7-Us)n74}Kj8$h?n;vB_ zl48;-Xh`jP;EG1PjTdoPli>?S(9QOKf;JdNeJMl9tF`>{PKEJWj@|ivjMrufX$EW4 zqeS!&Ij78wT_SFn^qL7OzD>!iF&N1(ceGrX{pX(&joNR#jRImg%)0Mw;H?K=#h$1x z&KD3rsTc2yDUKOfPBPT`3{Xl@^&O_|B2!iYJ8)T@7-4m4gg5g0n6Ps6m<dK=z2xTv ztxgUTHzHI#J1(Qv7l21P761?%igWb0Pv)Ih-zV{bLKFi^%0}-GbL{$KsPqJk*JkGo zgrZkzY&;MW2Jw(dA~ZzYiZE82VahHr9L>-lNiuDh$T<}TA}OMVNy)R2N|Fx6sdzRD zac0*7pnhs<YoZLCGDx49<n{bsG@%jCB&k@1gN#(XTb^pkW$Gc;B!?M{rm6TfrmQ>z zkre%r6w`KzqFZGkk|G_BQLE*t`VNWtkyYxXMx1R0ELPMyJ8GB=n5jkSR^TvWmw2~4 z#qsGC3`8;%+zHB_MLHbE&~z%k1wceI0dS>HIy~nj3bFdg2xtRSGw6>j76A2WHsh3V zq({s!7ldVq6V?oBzC)lSA+5f7crrjoM*s>MdIueOn}=G_W(Zoqm@_O;!NNeQId@%~ z+isLn3%{k3^%1ZCZP?j|F@+SZ=8;6r`}l{z@?B<}61vcd7-1aW1M2GnzzqTf0$tPb z{JLKi)(oVQ^CBA_GTjSMqUAa$xiwyQ_s*+9O*+U@fQV{{A(K`8L+EJCx)q@AR=d*2 zlO7R0i~yXV-T@)azzw{4>U~E>KobbT!rWJmr1Y;TYA?+ot>D8l8qBP#!lso>M~d{B z2|}8|lvO|h>2Tc@Df=}*5Hn0lUTwbm8%IQdpz#zE2v)`iaPk&!-1iFB)Z)WWNtoSr zfZUtYM7})2=!T;Rlw`^-AQ1GKNdhG)c@_!7B&6vS-8mk`vqwZgBkZ^GOxq=tC&}Hr z2me6pyMb~Q_FpEcEnC5CuZ1rI1|n%pJ;Z)1k5Y;rGl^7+vReZPf{=Ks5m(o{kZRET z70;sJR>(a+(bo6{9#8V-&i{}vmx=0Omc@JVrOyGYKv)aWXC}!x6@q$H;prcpcIo~` zJWHBFL(vRF2i*Z)-t`=v`LA^ZIS2h8Io4eCDKrFoDhCLZWJRJMfJrM?7mNH!GmgWW zLQ=_t7Z(72*~6K&y5@3UE>b-;M`@Ly>{;}gNqWOcCTscm?fBVk8!!J`v-({NP}Gn3 zJ*7iOR870xQZ3-^KfX@rs^ugyaaP0!sCYK}tvrB>)UIt+w`&1Iu?&G+9PRRZJoYix zEgb-|8o(1dR$sjaUk1EenM9#bf}6IriP&{5V8Cn=u!zERZv?wdbfOuYx64dEzmLL+ z8omrrsQb6A-~2P!+_K(btpO+S_-|=qQMx=i4$mB(0D!T__YfLfj_3{j-mq7G6Cv6J zHV?;{qwf2=(kD>zko53|UPQX9Xw0F!uEP7n#6;nx!Z)&Koz>BXwxolsKayfJ)^|u+ zd2@!{zkG?0XzLiN7%YqaJ$Ey(wUhFPH3A<+-l;HY6_~UNREHt;*^#AE-hAVE+0S)S z@Q4VQaY{_oW*0vDj3{E6xfDuGDem8L-u7hMf=g-TBk+_`o0L+Ulu(=W6O&gUgtG*` z)hMg!2|SM@ccm1_Z5t1b>u)(Xn*i=w0_&Aq&dENt<MHgn%?cdJ5m<yBk7a)jJh3Da z!96#eogHqL{jmz5?z~<F%r1eWU(>m}S?0$rfE|x!Cs16o6b=RF-*9&J)JAz9y8wV4 zk7plNf}KmC5JIQnlh^-606^U2T42xN))#^k8l^WAU@291oefbh;>!;&=kvdHQIGS; zdg0n4mV=OeC|glNyBr8wm1_ni8$YQx5g_)0!U<fWhKZqROxZ<>UX`kEGgg~L0Lf4U z1vt_L!TaruxbxAi&jUX`909-w9ScxGJ_#^mm(YdA%J?8s1-w(5<gMa3mhUhW>mhDL zC^!{-DG?oRm$3+2fmgb<Ucr+c3ozEd_k@C7({_onXORiVIX=CD(O4fNv0jczjj}A- ziz_|GYBK;8O$5K_#E|SmSvSzQ1nB1exhsAee{Gb}G{%;F@pmT#$QLvrQX{cm2F&z9 z@yq&Kzz5aYxfgbIMJI2%2V={*w_XbBfmSxmp(-@(^zDyqZFn<lS^1V1c5XoMFtA(` z8Zje`Py$Q3^9#8q;F{YuZho*E;}=Anck5*+bq~<^c}Fm&DebFwJht_vW*lup&EJ1@ zXFOU{R|`#iO(~8COyC_M)DxN)zB~Jwixyway1;ekY#TN3zas=^1FHZJcta>2jtYL2 eeJtB@cl#fvJyRArn4?qx0000<MNUMnLSTaHW7Jvz literal 0 HcmV?d00001 diff --git a/electron/build/icons/512x512.png b/electron/build/icons/512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..328a723c97e0f41b6c9035443b54ab52e15a4d46 GIT binary patch literal 30435 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 literal 0 HcmV?d00001 diff --git a/electron/build/icons/64x64.png b/electron/build/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..20a7a6cff341f7163a41130d2fdb1391a33ab302 GIT binary patch literal 3652 zcmV-K4!iM*P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00006VoOIv0RI60 z0RN!9r;`8x4f#n#K~#90&6|IWT-9~QKllBZ-?Ov3v+K3jHa50_f}u$R7#x}^1d$d9 zh!B}7LUs@|ZIT8MLi}hF+yT2Kc9TejDyono72ME<riJn&EowtSl_DIu5*UIZ2HR_U ze|Ue+@0s`Jy?6S@o0+xE&d*&NzN;s#=AL`bx#!(`?z!jOr|1BwR7xwCWA{>U?vSjr zPD&C~CQ9`fXlo;A7spUZvlEu5BLh+ZH6qA+p#Bfx)t#HS9as$0W>D=C-ha>TFR6^Z zhZ(2088_{cIL5U}R7hJA1*<p=>=DI3?7U*z;iY8UmH{66_G91mj@vtMr7ikEGQ^rY zHxfvO+Sf$D6%R)|%C1Gptx#~vh{(xQ4yb<?ot--`-}-+0%p0TSfWGsMzq!>JEBp*; zMR_Vh$uO7Pa|K4M`z7ItN3K$4*3OZ(3nv@H27aU)r5&lu{;b%w09qK}!7blUAoiqK zUZ5N1u}cRSyye`sXf>tK&@eQekZuyx%~O=CcrKIWG*jg)o_MvN-_wylPF?x6{oUvX ztqgF-Uq2~R_Sd^*jso*fSD_7bZa+;aVrH1WK#bl%6kYi~#qu1E6{g7A^%q|hrEc4K z#n$J$QL(wF$~#-SVOocPdbdbGGunPs^__SkWbGm&`AOcMJHlvj2FG&=Y6ctPD_9jB zsL@80$j`U$efrLBRBSi{?z?{H8eMmebi?#y#MdUc`0h<@(+gm`74lA*j9nmGDdJVv zzOFP@Mw29iJt!boDRC$_f$J{`4^dy;v3cvWo#@wa258DVrxQkvV9l00qE|prH%SKL ztcx$_;=VPki1ec?4Ocvl=BGGZ9dz6bv!Q3WwmdX6dHUhKPi^j0-h#OQ#?%)TywZ{O z3kitm#O_<)nocPU%^;wBC)gW^5;lVMcE@u#T9_ei=K%=oLC))0j-eUkDkVP1jw1*N zM|H7(FZJ0!nQceEhBH7s#@b=f3M!&wdrr&8aw`-nCFblr<E1$cWRCMrdW2~!ivWgZ zaBh5v;Ybotlw6C0*>PNPiJM_oM*6D)Imgw4f7`ZxjT-K{?(twGnl6jwH6m#XiAx7r z_LX%l=>(zTIasbk-YHS>+<IF`Gg%WGBx;5Mn6nBTDNG=OzYOBTpy0#oIN3@OKt$9R zc5dGKS}VCtx50-V{DJ4an{PW@UI-W5`Dyw$4tCT>1oBRqiP9{&N(lgk;+)t3$zTrv zCrW8Xi!%TWNBUVF?!$5`yqh_Oh@jxtk6yX$idM3kZiB|>`aHDm#~&ODqiqP2w)1T~ zMM|!PCxTKCH$$A)GtBz<3Jj$q2qXC^rpg%rhQhrhgK+@Hi*s16O;9%(3?={&*tGqP zJ=eC<(P-AF22AwJdvNz=Iv>5Rkn8$5lt0l?H>DH_Gs3b^FEKMjA`sz%#7aKQj#Kt3 z94}52&`c762&<!mWGh7~p3Cv#EbHUT844$uDrXS??_0osHIvu!$YxxVBz{p}M}t6t zaoqss>IjCWwe=|F&omJsZ5KG09c3gxiHH!?O*ZrlV`w@eFp{6d6%S1*mWO@km$eI& z92-+JNCYA^O|DPvduE{N_}UrF>a7<t_sS>}ua6)t4n;=PMBR`?J1@c|z2~AjSV4~G zQE*C3TUj!8kr^w8<yF`aA10t1oEsbBV0H{gTuzkc7>*<v2*o*3N@IH!W~?l$i~;(C zG17JcAmF<0^}y4OWVUr^SDIq&P3N=v+ZUr<6hj3*+Rf+>vg+D(ocF+GXy-*1;L;j~ zrjZClSs!1)y7+Q5rN~#x94$-%zQ?b<-N|wW$8%9Ak|Ez0%-RJ6=rN=9kQ$Mzo677& z!N7_L=9iZdQUTVM`>=BsN3CfpQCKxR#89}`_uBTU{l<zj6dikErd0?+Kr`qK#7G1p z^i~b=L3WH;D@QUICvJur4)>F>{qQ(#7a0h}={2K_GmGOnlpUL}5g=j&DL7?7u4*Q? ztF(>MATk`I_ktwGIT2KEb32w?n{1`n^vP99%vd=-%#Cv-Hwg%FGt5B9_v#a+IRL^& zkf8487&87eCu9ULs;5PN&=59iCs4KSu3tPpA5xx%j%L7O5ix@FRD+q*;R)oO5=F;i z*3J<v2N?_{7z*_=UCxkqN;u+SD2*O7!jzk-4_4ua#yO{i<y8Pbc&b8A4EC)B7R(@> zRRctgP&JfY7$R^uKTg^%GF{Fx7)lV(4T8E!*{x7?%Ji5K0-CS3E3O~(C`CXwzyaHJ z0MIqP&R03oFps$enad7yWlf+I^j8C!l3S_oIJGJ7RKw$dZqy}L#2>Jx=JN;u`bpc5 zQmUts%q30TE(Kii2dNbGK)p7o`9aQ~Pc&-r1M~ep0?%nA?-OMJ+jTfm^qpPY2&3@d za@qBF5VJb<YX>C-=&HIL@QqSSow+9&Nsw$KnTz%Ts`+{96wKNAy5l+>o(Ps_SKp*! zDC|d{#fpD2)Rji0nja|D45AzLH(qvq=NCB5NC3K_O*PVK(FTwXe1PM*^>s|%#e1)S zH&VpQI4Bp0>F6uN41a1R@ni@A#!7x(qc`9OH-gj?qH)s?ibMpfYLt-fZ+|r-0Yxr7 zbi9#HXJr>i2IE8xfBW-nkMwI}WPf!6shm7bfl2TVl^FToSuz)n5&fg(<RWF1Qmm-P z{29AYpWc0eC;&O9RQD56(=Wyp9SZ;j@1|6$VN&C)EP>uY3;;W8@!n6~q;S09lB^?r zV21ReIm|B)vG#Y*A)p(Gz*yBs1T=$~QA?1_r^y1EQBAD)OG1#>n#nn%Ga%>87i~P- z<M7|VMR}rwLXPF({CtAovemE_Cd#vQhqxlrkERrk=P*~z6ZQvvL(f@-It%f%Up5o5 z1U{fKKFE&O|94)V!tG@6HU5rp@Ts?0bI+$4chi6$P$jE_9WSQwM9@+71WC;xz>JXy zzS@lcqPM|z_5hi!;O@`2CTsvJWAWj?yaPx*ISLBPwVAg3WX)hWfuZRX9BV#ARy>p1 zcx%&B*pknHxEba%$y3wdM}PeRqu$~oM)yDg{hb2queyMMX5fi%D1QP0Or_Vi&GBMA z8}53dKhcWsSqX%)@6Rj=ANQ4MjI6)$9?4Hqa%@1cCbkS+X=LnTEh~(`Gdr)m?O-dO zi{AyRYhc#SQ>bn|r=u{ls0wx+ZrSDFPv0hb`<i-zWJS1_o<IawJdPEnYotYS^@rQx zxn#RQ$+0N0umL>FUGVpAkUN~F^ty(=+0P0ukMtw>c|yB-6c)wz{_3jRM%v-GXan>G zVnmIGXAJ-*dQ9Be<{6<*;Jh|V^8972Ip420j1^~UIY3bSr?Kf!+m)e38(?|3b;h`~ zvX|M}$;FDAhX=Xmk0JN2WYWzrQA*cZ4mp;yZAX*H?{qAg6LiFFSoiDM*f<H&Es7Hb ze)If(MhkTZJ1x4p{;@x}qv644AuO2>I8jP-V*X8>iZy~t7)Yl1Qt1@AH>NPx7-;K5 zV>(=yx_n#57pKlnKEO~I*YqzvUjgUE$%?zT_=nxz6I$}KK-3I#Zfw~{8$Jt%4k_l| z?5tGQ3Q}-Q=f6)p0(_;L{!2asbX3FpKO44OM6j=eyMyiHmIrQpWNSAa&*&03nxEom zVg4EO=IFU)RR{M|JApj$(9Nl}o%TAT2AHw3OqWl6vdca6O^GuhF5$WC*|OzXy*24P z&Pql|P;V-v9;fP`Pipep!X|Idi7m0H-(P3Fdmpg7-417`FrvJNcU<wcmrnla!5bgl z2<!uv)G3It^MRXEukL;!wXYrek1Z{}>&5NALDcp$z}i&8Q}=H9(ZV&j)9|s@1tOQp z4}t$#YQ6#&1xne++M)ee4UkHuJO#G{4MNE7A&R>nx-s>IR&*bGWoXxnsiR79*BM}~ zJovlR=TlAn+{bPJfL$-7{t@`u8DM>3v4@+Q5qu&H0HArnZ=z^e!RZzv%|ql*i~+v? z@?Xs1soR0YT}?d=3NCNf-jM-nCFoA-fxZx}tq!|i`paJek9WkpHHMotwlY8(!1er> zVrV|O?KvMYLajKdYxCvl8ingJ*RHlDr~e_K>rY@7V%e;*l>v?elstcMG1ITvdm<bw zOxKOzf7Im5i5q^!wpOkNFay%|+J53c?zWU@+n_;)wR4O%Yiw!&CA<odwhB<a#x@xC zuiH$Qv+SQa%>KC}^;=zGBT%o;rRU32AEYkZcC-_XcfGXzEu~nRC{fY0HrUhvqHF&I z{tb<pY6W&>B*{=HfdX8lUhj`pudQoJVS5f!<$4A9nQrtBe}*3buXoe;<ROUg(`E!M zPv#H5@$_@R&6-kN(6h4s6^HFP<STw%K4Jvxw>MnzIG7!))#s;eBeY@HWw&;5+q(YU z(px}R=VzsOZr2N`Tbj|d+y!*a{U&hS6XE^rC^J@$+H&X*#u*6p)CXU5EPk6AtqtB& z!X4cX9^i++_}&PLZ9vDB6$PWN&NteiYmJBZ?)elVF9R#VzlP#}(-S~LVYwADl_L2{ zspk0|P=CJT%B@d!s`x^9@Jo+;U6lNo_K)w!l&0OV>)*G(-HNd7<kWZe?OCBa@?+rU z7NiG6)VJFCT%{A-f5W4nL-U?g@H<V&M8Us_;_lrqq}uxCspIV2cYpQNCQVac1+D>B z10fWnBJ9%?|Ed*NKbN}t>ZL6JRIz2tv-(==z%7W}tY9;+45$Dj3SJe(GwmiqYWRQB Wm?wS4k}V7X0000<MNUMnLSTY<u>YO_ literal 0 HcmV?d00001 diff --git a/electron/build/icons/96x96.png b/electron/build/icons/96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..eb48c2c91e919f8308c9af3509422173105ca0bc GIT binary patch literal 5628 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 W375=kO9c!70000<MNUMnLSTZb2m0dx literal 0 HcmV?d00001 diff --git a/res/vector-icons/android-chrome-144x144.png b/res/vector-icons/android-chrome-144x144.png index 2a83f5216943004f4fe4517cc160f4becadc1ae3..30c8cf18dc56e12f06ab42e97d0989b84f1d6516 100644 GIT binary patch literal 8265 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 Hu0mjf1S1JS literal 11585 zcmZvC1yCGM^yUJKy96gJ9w2xiun=5>ySuwCF1xq{N$}tnU~v-MVH4afKyU~eTmyvL z-~X=a>Z)$4dS3N(fBoL{d(-pH>xt7)Q^3ce#sL5T_)3bhT1c7lUm?Oko?8~gACLlQ zFQqC405l}yK3bw9>nPq@3eteu3EBf>1!S$Lr3wH9vH}3mNC4n3@)C3(0D$lU0EZR; z05}T(pzz3T*AzoGU|1<D$RZ{3xR>b&LkesUMMG}@01b&imi}O?Cjfx+KuK0g$A9_H zYCtfV+`s2@eTX`1YASPz2l`I8>`oGnKSL}l2&Y(5hs?+DT-sC)bBDIq*-}cjF9+I= ziUX7-)|6t1#|r;76vB$)rEb^W5gMi<-!po9<o*tnuJrd_{Usjn)5-9dJse(D1=L0K zTc)bNb|!&TZabQ1P_DJ>1dYV+G`OuG^xBL~0_14Ohrm8A*=&KIq^_5_59@RGvy4hd z<K`9?hHX5l3Sfq#mP4!?Vf}(D)Ib*dlGCqRMHY(EJS74<>jk{CucEh{8ob99dCduo znemC3cDvpHU#7}90v)oj=Ih>zkYH`lF<Th6fKbMTqa?#ygh&eO<u)eEy#XkLgA6GS zm_b$y7N@IFw1y+lN6F26>_}3npC3^hW$kMxo+rN6ds_ygwHaI=EQc1nzavh$=thwZ z7Pi^?CEno_QqyHMVXM0=`$wG95bw{Tb}*;<OpT0~-{|yQ-CByB3$xLY3fcWWwD&Q& z{E{>YXeAs$01G2zl(QqjWcC8G4H+$`SED}9)XQ90zXFqGS_K2kd#XZaBuFQ07CTqM zXy0SX&o%iFncl?$H^@a2m!VNF?}(N|b4;l24#pKgDdjngM6nT~=S&ty+mV|Ccg-S1 zFz4+zB<#JvS`z+|+<Q)!<byL!0~9b6bPM9R3TMa)zc-}*<}xPEgwtP6l8(C-l-39q zkj_TeQ8?SOXSTR~*A140JaPEo0XLXXN$aO3l%c%ur=cff<=|K<{-^~|0z&3BY-^fN z?JG;}=OE4KIvyMI&tmOYL1zyGghQSn@sv29okeLj&dJj+kHarv{b?Pjbfib+G6s~C z&e15W)g$Fu%<!ky$xEyERaeG1mpW{<aOoRW@%yvEOdf-n^7-0oNW*$5-jsdTZ354r z1T(c!vZwQH(v>B-ARX!1rZg&Rl9#I`5LeNsurSuJku($P!oh8azat8N%ir9)S^l}> z{SV21U4p!8Xcw~hc!hZ;s)ENE)Ata{l$3Scxahl391PT>k}_f5kE0=EM8nxn>;86M zzA1(MTrLND*iv|*zuNBgu~sVGuHARCw?CL92-TVtB>4_gl0k5{C7ui$?%$#CdgxUU zy48bNJi>X23X~E?doxdr*dO|dOO{+&a5r`~G29<MNr~6aXHKGY?T*eNxMeBQIyug^ zH@+*rMtovBFWJlrBMoSceb{_4nVY6O8$^{^rDn7gse)ouzfnMw@xkXNDUkCSrE8SQ z`8rYFy21HFA7i#+%sy&-EEi1|cA__j^T#;09n&`$obS!Yu!I-N&YRY{Jxb*-C)VUF zxMo&{#CugQSez^=iZ2*ZK3+100+Y(Bi2bn(zG5Vb-MByY3J8|@{Z;(ha+p<A+aG4I zj+G-|;TavuXt{7+m)k+l<<Ys}&RRUkV_EAmUPhd(DJd3xm=-2gUwE}aM<T^|0wPTc znL}*4V#J6F_DqVR?w|$YilFbmk|?6Sq13!jjXe(T?e}*V1EUUBcMO%0FV~jk8?xii zV)DyFhBUM{*Aes!xj)4OPA1BdCf}FG2bnGNOpGKSytpI^V9tOvbHr>|`1_G-(Cui{ zFr{v82-a*VHxHagB%a(Pp<h(OuyvR)V-BZu_1rcFC(!_LBHJ$~imf|c1MSLu-qQ!( zaL=R2$VG8U;s&XTcU7D29rgEc8P>Il|K#AWk^4{=7Ct*ys}r?nV#~#NUf5X>z0t$) zNbe<dY`9!xG>syBDK!HKV<O_TrDO-<WUjJkE1*(#5J8&)N!5T}{h<WY(N&A5x1IT0 z?|T%xzku!JbT@G{eq4pEK4_{5a@oyhx6rPSt53UMB$LV?zHNOai?$Qc?qW8LJ{T)B zB;XVESWd!9Em!Ysz2}$Uh8ouH+%`|xYTRClsnfe|`+|jttsRrqO#JyZm^{Gy;@!5k z*32o-aV^+HPJ2^)jJSmyZ+a15amMVed_4YQK`D69LkohVuCWx%vZQU`0?m4|j|Tfn zji1EiLnbh{hFI~=GF1iYb;(E!odrp7ot*^nfSTT+Uh2bt8MgD}Wprbz95}{e0z<d1 zn3SpKReX=n>qy7{k+X%S3?3Z*RABIAcsKN@|AHh2+p0A<G6AF{>hmg?x;6TR+QMLX z?kjPNmcx|h=Tt0b9K|abp;jd9Untt`&+6(A0jnHidumNMm(r0u?4brnGtSMv4OFcB z%U?7fM{Td+s=(#9UbzPS+#Vtcw96qHU3Ug5KZ8Lr?ROP{TnG)Oh7>vl%(Yo6iPnON zk&!G>3uutT!t@9IrfB$fW$~k`XvbjZM8cu`ug$E3I?k=Xu4ED;GCs2fgrS!!BfwK7 z8rFhRaprHL`NzS)ezP;%xV~O$z7*Pd2G{3wpzM<nR<GcLrjz%Fp$FeqHv5pg^XP5g z`SX#S3skbj<2lK}PkQ)GI+sv`xymeA0^(Y*ZWNgV_B-Z<OHx^G&O2EN49&qyC*fN3 zd#s~7C5Y?_JtK)0sz6;q*e5OE)@Ij<{nzdx|F_3N^V1^<7pOb_!z~IlzXXkcSvA=^ z%;4Ijeo%+Naa<_!*nwR`uXaF)E77h6O`JJ<Ok!w=;A^0q`k*A6i?r~4q_x;p#zSqj zAQipH7r2^l5j&6MUzcsO?#^FqW~ns}C5CB4)_z@~G5MWJjIyQyH~1mE4$jq!*?75M z^vd$tbSvd*(cU0hJq}5whS!UKk$x2)yOUPd&O4UYG=qNQsgByp)*IhP3?eGkNTv1o zKe%|jGkT2h71`JSTaL|BuX(joedy8L!)j!~P|un;pd6C)Yt0-|j4Ky_LbB<F;RyM> z(n9_yRUi;c>tS+m1gb?DR4M7Mz_@UB+x&(^UP}Mi1(FX1xpfCgFZfX<)cz>}&)k3M z1n`-fNp<{;&~=NO=}|m+@#hsP*RTuY8ZadLBdZX~O4|qN`2&}|L|N%o^>gdZkaObO z*6M32+|PvCbVtER+hs|GNU2yOE=^r}v^~PNw5$|SrV)WUc)$zA#z80t18$0IU7xIs z+S*Zm)-~iuxYK$?(zQNv`uN{p*`gDYj#G8u-e5**f55n~wX3JM`TQz_28x9<r5p3r zl$RXjZluCaebM*kcEC_npgFD$ZvA99f}3*S{U)<X@{JYlNBC?cfo4ITEL3II%@)tV z{Yc-FX)0@6wo=W$qyEaD8TI~bfZ5~I_^P=^-u|SP88kT2<TC_+%BYq}9`c#UE9x=U zpEo-4#V9SW8J00i2#DLB{Tx29Gy;QCPg-n9e+Za;C&J0O9Z`x6mwD10!PPkblqI-e z+w17GLQ3=uT^swtdiOGkx8@aZc@$Ts_=cAwMIju4YSW^HgR&k%DE{to<(?`#a;%eK z7ro-F=5F@KxCPf-GcQFf<K)YMyJs8|&a2J-@M1#iBWe)~*ZD3lB8`}ko0`|UiLKyz z_2n}K*-jTlvxjLo>5~~!eP81Fz=w$q3F?!Ue2nQjmlE-nXReO}!hP}cYxY309adT) z=ZIjl&T(=0T2fUr2ph64UCi|I^WMwcCPC{;0VPPqvwQ%`#m$F_uhCMLp^pZa;uak5 z9OAn6|GE>E>{xu3JV@1is^%%;<p_;E$BI2~<Qdm3|H@vD(s=4~sPX<FT~v4Q{+(w! zzk+any6MK%<1&7TwxoDrlMRkWo^@oUntl-w$7?BL!d{3)@U{hG-M*Gek7<MZ9&Z@V zw46o?t^N(dOP$$VZ!ehm`^Gxsr~v6z@?CVrv5Y?sX!hHmy5H7D7mrqjSlYq-6@-fE zZlsNE5vpUQtar-&grf~9)^l`+-mp%&TstNrwU1BlmqHl;OWq<HiB6^~@T5!QxgOh? zAwK4a)3~$D8YvI0j{V`8AD}%4kxt-TGo~&ICHrX!@lI0Z>f~N@F^VTkG$z8hk;)Y% zh>BpPO?C{gSNfOWT8RC^TPjZ4DjfxI=3i7D`41aX)RGfDhZ8rD@UNGo=gENcxVh2h zf=VON@C?@$ru_89X_C$c&7c~;4Fp=^?{w}*dVPFSkw|TbfpHYeRN>w$>WvMR9Gt}$ zRlMl2C;SoA7GyE1A89s+-i`}&e(ifJv=#XQlTU3;#hW9H0f(U5e1rlKo(^9h5%9Qz zu^y})YIHISEsde@88`2d9CO3}^rR|v)z_chnpS{E+Bhb1-nKHVWAeu(X`Df%U75%U z>Rg)(ZCJBtAbBgW{7yN>o)c!H03eP!B#9KGSnwz|N_%nsq1cDfhOqLv{S>{BGeHSJ zo3@<Cy>iNm(&cB}B6@W6VUhH<GKo~@TpU4cOGC6^FUl?4v|GHQd<xsne0y;62VaNu z?HS)xq8u~PU(pB*W3lsG5FUbTDV5x#UA3m;iN0?$)5!PM7sa{BO!<bb{%tU=Me_a6 zf0Qr>5u7;rIolU@U6Jwn&~W-8<sGn<RCn<%KW@^m*{h&au&_{Z!`T}4h4(qOdqk^p zQrXL%V`ggpaIRKz8)AH`!dz)n;XEy8s03+f{<@u%=bO8H!myckTz?gUGUD_eT&E6b zKfQdh<*G;9!+G^rD&vD1u;zD8NvXaJRrh;-!M?wl+d@mY1a)r2f4WczCLNc`N@*w; z!8AiMAiejP?2?paw)VPw##px2Lj7Fs<=Bell)YZUZ5zee-6-{Swkyf;d(w_J2pvue zgi5xwvvghWG6yR@Z%1fsLYIq*lOFMwj!U2WW9WsPQ^bopo)o5y{VdkSAX3ZIX5a02 zu++4%=QIBv6d90Z46&PD%oMPTsEP0hgst`4Eroy-&Z4XDv95Zkw2wDiyDaqm|7J5y zw0~hewshzjhDdcXi!MbC`bx$Au;*>Sa<6&3IgK}mhKEO0RN>+EcMtd{NuG2xIX{&5 zPrS^V#myO*uK!Zr`CTIrwDocc1M$#E{zt0Q#CQHx<#FTnefK=mUGT@9k_dmrHFX&x z%pLjmh<n&}fmXyZ<Qjgz7L!M(o&U-SZ_xhD+D-_d+A&G0k&XBLmsw!P*-!4mp>AlL z=h8MjHFAwQvX3xuNj2N5p;}Ghl_{~Kfka=QV@*;9V5x05FW4D$e#sP)8^qB4JWMlS z6mfJ^Eb~`vD%XzUHy{dO4LIeCw+1c7hvs4=P0{jfu;8ScclZj5C<@0CT#&+1S}quy zU`fH!v_mf#Q(KC35*{;Opxf7}xY*!D=F+5=1RFDi8TMbw3mYh09qo7!<=HZA!D1V; z$1*O2a%wn;9QO0<TNUhFNBq}C)&#i9LjJmTH|)|eUExf%g`+#Bsg(28Ckw|HRuq0- z{{{H23OCi%qE9+?{08^omh}_XUTgqbsqd1D`by5h9)JARB?@i#54VGLuk}djV7fLm zseC~DGGu0g_h|eWQ34WplNpRYww$EEvN7t(AS&&tHiq{VOx9`oBwhl%&}aT8SX}tc zb*|&LReeSRrav9x%|Xe#*aRCAVratFvoK*!O)!>Cf`6{!2csZVLOPCHqN4v?Oux~1 z9f`<kWOs#4RQIB;KgP1v=%wUPxAm9z9q1qVT$|!8=lq~y#HCFQzLurH>X=x6e+7KE z)MMm>e(t_x_5rY@@-5A{ceyZ3#+WyF0((LJOyXoLeYSVZmo_5~RPN+#fa;UMK8MLC z9XcpPv_9n04!9oX8KnWQnj7yjrD#0JncNYna^s5`{6kl~Z>e3$OHcpEFxoRqOly6g zEkuS^g)p^=c+8dBxfmrMB1?gyAXzvjb$udMD4k9>Y*A@zk;QhDJfUTYL%fQLl>jmD zPE1=HTuK;vuzR7V5nv=4mX-tqd~S?;RahCE^@<1=h5<O{dB}Wt-hTe`+L+mfr3GcG z=$Oscls$*b#-YP=W6%YX*$9N2qvni%Nr{VI*umG0X~9hy*GtEioa5Am_;&!7Ty%3H zOZnggZWJJ7FpxrZ|LFdoPV?AZ8uLYeP;I_0r8OW?cG^F<C53WSss2L=*&hGjhOcal z%PvCb%&5URI&^EuPR8?g43lmekTZDD+s;3aSlsDBu^DNADn#B6)I=35(o4WyLL{ur z7z(20q1H&IlLeR>NQ=dqb;^@WsnxP(^xmknAEs8J0(*xIkk%MWHm|d_hR$Gac_u}4 zD*9Lmp7HSIJQbSS%#&aCid2?HXJBdyUij{J6)lstWs3ZjHqr4_`N<kf^T~AI|AiHK ze!yY_3gb(5+Ddic;B7a(tW05;MVzsr!cjj*3KPQ51-((}N6cSU3=Wz&XhdcOxN{Y? z@u_?R^OrIi`4HQ84qvFlM2oD<Pv+Bv<=|M~{4UinDy#Cn6TffK6^8+#gXKhKU9AQW zRJ4~*m*3w{fwSECU$iO-k(Iz~w^*rRCY%{VExj&>!i+i4up;L#w0PfXtlxZnLFS_9 zzpNPkm_y<w`1(v<;d%BLSI_tlgFMVYlK&4ZVfU@9HkIE97d=7n&?;n}Zp{vDs-CFV zg)b2es25yK@KG73b}?Bhu}^_eI9aNHV!LYK7g0l7eVaJdw>R2*GKE=z)u{Q_Kn1B# zb~h%9{Q>V_>|=(EJy=3TA^`k}HFv{d&z$Q56fCL4PcQ8=E<nGJo#H>b**CGfak_QL zj48F&F~5F(8=d<tkS^Gj;k1Ez#-DJk%16cwb!)wmoDOQ><!MpZ@YF%6Zc$X?>R!qL zGljz87Rr0C<0wI=M3{Fd{Ss%P6?74wR|q>P{|PX6dsgImziu_-TximhL~AC+_G<sB z!j&>8E6@#i71Yi58f`;h=DBB3V(5DsG?z1<sqVO;_Y>kR8j%_Sfd_fo@rxsn=gP<Y z3Gx))M}*=YzK4*|0q%2?N448_+1iAL2HU0)6P~}m*munhR*?jwpDQ#^<k&-xiFckB zC-rsVOCw74Wnbk?RK*Le89{3yhtu`64r|XVLeo{C`xVo=Rx{Ma^zVY-euD~#M}Ok; zztgA?mM855>^*JM`FCqE)=PFX{qP3bxK1ZdO47L5HIl$HUnbxM(Hp&axcRs*m-2Xi z0@PQZD!=0)ZUE7fn%C!<XRb9p(I=H!G4O`z>0utD>gYPaqzCL7^IVAZ4J&_PH=V3Y zussGkP(OqeR5-+*7o2=K#q2J}3;>nKq94mW<zJ!VLh0K+1*eQ7z6TRn&MRAgm#tXz zwKqZVJ9OH6pAHpm9GaWJn@|E`eohiTZ$G-C5HSB$FPNc}DmfO0@VTTLpG7>Rx2BsA zC5+EoiOnUhYj1r<872-Y<s|qfZ->t>xyE9)=UiA?y{n;F2Tp%MCZaDk$N<V-WtPF8 zoTkYgWN@iF{m=}&ac!OBFvDi?lRp)R3D07qnI`XW#vqqpV3=Ij27fWPKGAv6?}no5 zi`g1ULbOtiW`Yj6In5#MM*XC4N_BXM_4!-i8OM<0mS8CBRr~8c)Sx$0ENNjB67?_O z*Aq$JW0CS)%|6L4xSO?~7>ry~)Z^5D4)d5!!r4#X;n5Dgw#EI3zJy-U$nU`jL*H^t zl1vO$SP``b-TzxHG0lYDG&Ut_f-?ETQ+4vW-(yc_fga+;x+7W}mS||*`{XWL1{L0* zDd<~ApP?3D+`y{pxjJ#>&~_&DV^I+kvo9EuYWT5zRZoZ{F41HYMOL)wv9Gm!NzSqN zm3}NTQtWhm*rH4?Kg+GkGEhmGj1M@DqIRcuJ^Y0&xW4i%?~kXUe$tChMwDC$b`hER zNa@V@?j&vEz%O67J2TG|%8{d5j2Tc!LCLa3#9a5&lxYj>LC1AiSQZhi5j-jcm!@Ez zYQ*-H!mY8r3I~_pbZz_vT6O$Z^EJWdS4}(PN^c>09^}-@l4S=6UvwS5lJZ4?zaD8P zxi}4;)Km1|m))+PAfos5ax_34T0vlU?=AAB!i$fCcVF{Gplz5O|KZ4x>Vk>-$pxcK zgqRiFh@5@$k3&oUd;M`pRf6ekYc&lHR!KqHnNatAJQqbFEi7#xOK^q0ll2kku$Vn) z2s|z(m4nN0kR5;i5@*#NWx(WDSAst`ymlLWR}PBbjrj$jEpuFY{4yeI#Xv+qeyO5% zkn!*K@vSZ<P9v^H1#WZji6vVOgAn-b=rlpGxk%pb9jZ;(#{qd%QX*FkMOs#k2qxho zyFE11es!70AyU=;<#1ZYo5t)B0bwp;1I)jS)5D`CHQ<T1V^p%k5e&`mwikLQ&`9|~ z9!~<yCwy<9VXrv1+`Wc1I?3zToKz$19%Hx8#jJCp-IooqEg&n6X%*KuLki#ZUCQ}C z;5!bnaA(9R2-ok)&0GHS6E=1*2K}N%-%DP@a>Ymd<GMwQ0jyb(#8ir{@9Y`ZD+_7R z+LFrV4Jl7`$gH0FQON(o3ZxNG8N(Dxa1LwJ=SowAYA=G$8TgX|Lk~N-pU|l*k|5k2 zfGA;+^!wwep%&ccgNMF*HKp3$X!oD8hEe7Zq$QU=INZbiKSrcv1(sHQrJnOY7$UG| zN^uu}F+rsa6w|$MvFUwna9LVIhxF<8T7IIxnoDo;V5}RW2z<T2I!^i;m^773GQTN3 zlx!j=?(or0!7OIy*0;sO6m6RBlKk*VYK=ANYaG$RC%R|6ICSsD0KHNlb$Sao-Msz( zM$<_TVM<UhmB(py;|MkmBJs~<c++o2xR;FMJDg8cwS-b@B)7DTRk61&!fPci-2AtP zI1#$L<(^y0=;z9nwU}XbxV<{32g!Oy(t{#66o^OUx}$*so7Dzu8TayVQZ4^0-O&B+ z<C#Ja>h2ppu)Ho>$U=MQXPJ_9V~p?J=qUmpx3#t0N)9CZLvroy-h2J!y^lXMcuq8h zO6!_geDo_abdO&v%%rsc&aeT*pZ{~A6GvOlR|dK<%sC)vl2~pTXd<$59|{@sR9(V5 zJgoqk@~>YCPx1Y`Z?v}>Nk51P%P#{@pW0FsYV5MnV*l!Y;{-F{xoi!W#I4|1UGXUb z+H3TX7!)svtOs@7VIAVHwFzt~d%V2NU+8A$jR=%*vez(HUfu@Lo(7fc^tgnjAuUU< za#^8nG3ZmP7bkbl#zlB6o9!Nmf&DP94}Q%iWoVRp6o@_w5QW~0SEfDVIl(0VRijv@ z1^(Nl%9~*g@z>O!=UJrx&!iU$LIf!a2%9#nF@=7DVXH!+2hU0ZeQb1l4K@#2wz<xo z-o(u%B8d}OLHoT%syX9V$$gI4EL<sf7F(>zY)HD^WgM#Ubn$5Di-M!8nJb4Gppi4u z({~F&kX5m7u=JmVn*#PG3PZ=~*+`1kV0k5`?$U@ZInpLikV1SDg$)K|W1oqSXsFG) z;jBL#N3>_}_P>Xf!`Q@3oVD9VG)-34+<p!30$lVJW$L_&p0*}3G*2odQkAIbZQaK; z{KJ3WL`91U_vuu%J273zS0|6~oZ@<o0wnHb3xkTqw6$uLdj|Z{4>Pyx{u|esWswwL z?yFUuP%<=N$g@TTz-`IJ2OrS2>Z6+b`rU^>+NuTlHAJkzv^`{GkDGEy8DwUsq5KAs z!30G+I+w~{Vt1Xv%xhP=J}BTp-m<3^?b}(r_a=Pr#*O<r_?-%`U&nf0*nLK3UC>?d zk7tUavQ4wlhTTuyP7g7r7k9d9%b$}WS^pd|RTzmdzhE?%ggW%tzkmO5#USCT6Vkqy zgY@pIpcjf@uZJj4Ixfgv&Z_y@67*T@!O1{G*bf7u^RZ|Z^Ll3@l=w8<Iyo%e0mUYM zvnL3nNlY9Sb0f?lXD=#E?I5DNUF+J>tTl6ze3=&3@baEoTLf5sySR2-fd9{OB4;N@ zQhkk46EegB5{?M;Kt^tB>S-j4R1G_3D4rjHYsXLaauo08`GHF92O725RSAS|aLBA# z=GxKJ0lDxqBWM~~GNm`GJnJaEH;&ssv;WHg*$u0G!+8DRXUZKeP~m61(njsX^V4sr z31H<uPWQXD+eLi(Iai8{*u#fMoU!4=T%GVUua{*HdrR4s>NDm@vkEuQO-^HD#i*N! zh3?|oCWG*FP2b%N?b#_#@~09>JR2NHy}MS|6w?1s>IC7Jf~VtF40H6Y-a&}W4Y7lF zWi{xm@lnUi52Tiq`vWEm<5ulI8(K5>4%6<gXyxJJi5FJMBs%2$XSR%MnM&Vc!aGQt zX@)(V+@I!VZZukaPWdwlV@m;f<~Ng#rl7tCWVlkz@hP>X(yCST1lk)RHcJF<=^dXG z&+~)q)K$8-;`>M!PAobPd*NoR#=9hwO8wBI$caGV?y__3vJwUffufpCV1tVMH1>5+ zm;MW6gk?5-@ULk5-7AHBJ8E<HI2k71abee0CY68w?*(l^aU>-Y9<9;do9@UmuxZQX z6x0zBrtJSI7!R>Jqx$Zcdnt;%^H7)4pj)Q<wVem(CQDFTl=E3+Gk+}I?e>C)I;<A_ zg#+oI>JcMhtI7{Wq&sp8{>#s(w3AL^eGhMj{xRm9!k7uRb?BOL8m3a9QN1o-Nl9Np za<b_=3Jm`xaw<SNFYG7^M{12WzUb=328p1v#naGotrFPhSBWeY0JqSxWidmkWE#^2 zu(QzW2Kv=4|E9vX)80O)>Mx;p7(DIxI7LW|-Y1%%#Snh`dGrT&?c>K5!-9ycSF;Wi zb?Z~j7fhzG_0;pLq_N!-w#+)WMLkIAg%vVM+yDCL6W6Et1FR_5tz}9#;r8mKytQ{0 zka-1O9EV|yhnM^;z{br*MW4s*-0aa`$=s9hW;I9!?l`xkt}3M&FqS4unZzc{m}jho z(#x$b=+`18;#IbqHOG)viSDP~_fIt8yg1QsCw^_InR&iTKY3XX>Hz4zgEh`5g{shI zy$s1ZCQu-F8#MEPK^8`7ygr6<p5!8Hd^~#1q4@Mta`4%~n}AO-sU55jDaHMcRH}Q% zv83E6P*YUudsX&ZQaIQ;fu@TvqK(ld*9Wkgt&Wd`?y6g`>@rNT=kbaN%s%a3TsL)V z&>aSU#ZAEnoX5M2vUq?y7O2;qJuYq%BI`Jbq{P8J6NSy`Z}Gpb@G`66(2owAY;_0S zn<=Qy7fq}WFS!7&m(+km1>f`o2$Lopyc$|i$XelSG%J#=yMNvkF}e@wXO}TeovrJ~ z%ag?XC95Lv>3-#|*Rg77NJTXhs{L$8()*VRO=4kTg(xel{FLyq>~32$@_-U6CG?MY zMq}lVQYMj!z`ygVm@e%sPJTHoTU4W?*7Iw7!imREgJ~)I65_E*1w+PP%2zi6#IHv} z7=qNxk&9Lyw!@lhZZG4ZT>|Rwvy;Qc*iu1N+JeW;J<g7tl|V)35uG;WPG<KFtLc;Y z<cu}C_2+4IfAfX1fk>e{PsS!vxO&gXOua{Ex-6L-V$J-MZ@Rtw;Vw%QG8?VQU@YSL zyvfuXH+%cRUUMYp;PieJr~P?SVp~-54A%+Q#;#p~r$Cq!m7e6Nv5p9;s2#GVn;8`? zqEQlwh0|?D;(yk3^4~x=lp4E4v@g3Y{2*mz0jy;=A~Xr;2HQWFPyz~NujBL``5%F- z;2*P`0utU5-H)@r3@u4WQtA?>xUBk8-KpS|!h$hHyAEH>sND=w%c0Def?qJ8PWihP zF;@30`L($&mrb)nGj7VCNxnF!pB<(zThKG-yeC|Y6rZz+T~2o6`GG6@%Y*wUVWT#r z`ajarEWuJ!FqpU8QA!u;Gp3~W8t7%LFy96j>I&Pi+xl1^4-9Q@?{^=wp#ZIze_EIn z5O12ySK#y9pkIGA#q!Eu?LRY6nQOiycXj-Qywe|scR8JOe;SJ*QzW7i?-dyzO4gv! z=SCit(>M=5>aLh2TfW>)r6ey7nH+Wd-LoYr>kJ})jDWiA$t{B>pDJ&u{ECaVLpDK$ zmLVZ^hbFovJ-yQ2x3#P>pYMWtYQa-T_G=?rH>35=TH9UXw@l%7m>mZwW$B&H9(>uV zt`8PP*~Q^q`9MEPvCyFnDMmhIOWYsGzu8=V&LP68KBz$@G@92Pgf{|Fmn9O_g!u;C zH0aodkQ0H+SktiAJcsSYMiNn+Ig92@U)O4myt_%%G0|B8iuOUC=j!Z>(JNn+MpF$( z$9(omv`OC|2!!ZKTW=B(rnqii)d-2A4H_B+Mt5j(RgyIY$hb}M=qUR$cq53O74<od z8DMkJqq_%hWVX0o%4q9-db}WnyX(CeKx)6xm3^(SM~6sGI{zmF-_|ii#Wmt$i2f=p zDx~p09lX+oeqPERMzDl5)W6D}BZ%u=rslup*5zPq#s`Zt)`?ehgd?Z%ed+b3%6qz2 zdlpvef9IBfA=IEXjR1k^2CXDGxD(mINhJ11&kp2qpZE4lqe7S-UDXKDKIOPw<^Qz4 zM}}p-V%PW`W+?3tg%i5(x&cKUSbzSLu=@PRKd3q)KniB>N`edfGW;{K)a3{N^4`^J zYXx*1P2X0evm(BJhBN6$qB5sc>(DXUI6`d%&lTfs)#p9`H5RnxlRA@I7F()`lK4+O z;yRBmb2P?lKmpeAhd>5p(8u3cR_sNHMO{d4562(R$rqKk!zRJ|cXpUKA0LHnjC~ob zlHq7oJd)((#ga>}f>}VlK}_Pb!Z^Px2)w&X@y|Y}{t3G|rF5XQ-a}uY0-qHgnxrSm zf;tm)=*&V;W~MfNio&fU-+11HFp~$mm9a}oIX;PPYd^SAf1syx9=YiSzb#8ehS3`z z<_lRa-57myC=j(_Apg_z9`;TVi3;2@&#e$VhQ2LV;$cSk8u&XX-Okx+_cg77C`A>x z6S*xE59{uBIqnbCgXE@ITUxr_1m&wc=7kz7na+E1r+t&kZ>WrTpWhF{v!0=YaW5@U z=<MNmo>O8~UmNS9YnVfOVScOIurH8_H}jU#2|W_j)IW@DwGT#(jU*<2&Kcjx1DlJe z3UD1XQi{R)L&S=R1H;Je@ApxSJfYX<LsH_`El>EcDC=!G_;w^7O8uTxe|_u_Jh0A~ zxrRs?2L*G%r0RH@UUv|OiUigsLPhaC&26oUBO19Ep8aX&-P7_``82?KdZV{QFZ|Ht zMLq&0ds}Q<i(8rA-=+0Xc$cdtb8lfz{D-nZq;)qh(Nx1iNCj9wwjv5;h;aOyvzUO^ z!|x7VbmTs8sHH_w%}*5QPZQgAvaoR3m&ULpsp0Sz-55=-nq+$&r}gb*2CM;UQ4}H% zrv#*~3;^PWRMxVP=g9z)i=z!iGUxVELhv~bsQxzs0Q!R+|C|s7y?4J5xsRnc*Q6`& zuTUoaT-yM^7kS4^C-wP;VkxY?6PAc;UXZgeaOvW7ShT0h2IocJrzlhOS`QNONZ+14 z)fudm1iA!>^12`HiswVv-_67*bx39^IUiAFEx*UW@i{rRk_74hG;IXo(>2^!_Qwr~ z)b*?Elfls*$#1m{*X=vk?}e#D#|U2nfO=0+aBp@H=+u;%`Xb-`T`DpKwBF#~eyH)n z^f&*l_Nato%L`bqK^8ie!y6q4H#&2!2^0+%<Hwil3l&vW(^+FkMPd9RD#tc*@)@3* z-JMG;L4&y{%w$(uc~!JZXJJ&Wi$_uPP%x$PO%=flj+wxqFQsPB11wOKk`;`X<D+_c zRVHztv<>!S<DNwN<a3=lOd?A9$qUVCzX18d@K_15rpSmiW+WlixTCqTaY-UUWM#SE zpC?z4wjP$QyK-yhz22c^iXI9hlrJ8LoQ7d05LPBZq?E!)s0k1W)>GIeeZP`tqy5E| z|44m4bl8J?yf|-ZEf@l4pXblQ5(W$i-4F;_@mXpBRn_zN@;WT$nardp$%**lSVa?S z_p>p@Hs%n?zH#_KRQs6jNqHs@!2>Z5(Z4feSmNJ&N0Pghte&a~zfgZ`6cnB@`2o4} zodw6Yf%4^RMl*Vl#&xZ8V@X@F$+9_>o>hBLeQeIlWCXJd0xn6hs}Xq^90rs9jbsC` zO|$ouEM#p@zMCRFGlBlB<!f8+GQwc1zgmxqSC|+;a&gg4Wk`3AWPhchK~`*-PYD(& zD}L2}6x%BsBgsALyxbS*)7fuC($euxe^RFM(prlGGbma^gEo%)IreoKj|5*cdku(E z`hVQM<bB1u_mxv@R?AH#Y_5@~&fFp!@{1+|nKYu!@B)`nQ<ML_JBRV5p4cXAi*o#~ zk?N1{Mcn}tf~J267GfBC25YAIM%f!W5gJ<Fgg)1m7lV86w_c_;@mb3s=Q%hq|2q8M zA4B_3(PB+yr4c(RDQK=VHL3So`0CpYSw=H=1@@>c_n3e$$Sg+B(VPI>ya&#GNqQ?Y zD)He+o}Ev2bqyC5&DRO6PpPTH4c5A<nk)UffZ6`L<2O^o)bFICEMCUnT_1&}1jMgD z=a%dCgof!M7s5R+^&z92^E$-a^KIsvXm-Wk>1WBps5wVU5QAs%hWU};#H8jf7gRQX ziQd4@#+!$k{6|d4`IaQNDI)XR#)C|a7>%~ojQN(^d|m1vi5fC%`e$JnmUTC=eV4g2 zmnJ2pBc|uZz`g_uE`H6EJ{GeM55XhPAF-NpCL{wC(<W&Z3A&_u&AebmZ)Q?|g$tj~ z35j{mSQwq<z9#-s725R={@xfmu^alvS^38icdAD);@g|)hF5=t1nc?Mc4g`TPg^Z$ z)~FDx>4ti%Cs^M|{eYsRKo6dnu_ZBRTFnFl+IDH>qhhl_+>5w7?CXu}qhAdAQRbu6 zQ*IG^c-itKn9aFL$P@PVP;){n@8?29Y$0XsVNx%wGuYq4^&~?kCCj0yruTvMx057P z_=Ugua5l`Ib2%wmHeWb84)JS=mK1I9ZwCPLU!A-~(f0C%1#-nk%$cD-=@vXkT|5KU zSU(739GV6q{{&|7ku&hIvGlP8TYK3e1%RKIPl$_Ggo{r|hgSqFAOz+Y;^gH6^YX_2 z@^1To0Iu#fj&=e6AArFB22{1}6e9sr|7q~{wFg^SdfReAyc_{`jxM%f9v&VCcUM~; zTQ5gvCmsz)YafW0tv8RCqq`3aKd+0sy*pA^ySunUytt8Qn|Ue&<X`|LIW^f@X^Zgx E1=A$_a{vGU diff --git a/res/vector-icons/android-chrome-192x192.png b/res/vector-icons/android-chrome-192x192.png index 5794bdb0e48afa65075bd937ae19bd8f33b8b316..560e20ad8cdd2ae13374609541d890908b9434d5 100644 GIT binary patch literal 11002 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 X3&y1Fm|Q@MSpjlV%91tWrlJ1_X|-Ni literal 15761 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 ZA5V5TwDl~BJ{%c9K~`0!O3M7h{{dIvlxP3| diff --git a/res/vector-icons/android-chrome-36x36.png b/res/vector-icons/android-chrome-36x36.png index 17b6fe83b602a8fc3cf4e0182843d8e65025a8a1..ee41772f4df498245e3597ad8ef2efe26cb5889a 100644 GIT binary patch delta 1877 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 P00000NkvXXu0mjfwrP(> literal 2814 zcmZvec{J4D8^=GhAyJk>(wMI`+t?a0l)-2$F+*cZb`!%ejCEvcEQOLt3-yhWEZLPZ z$Wr!-WQnZF*b|X_#ppNR^ZV;}&hMV{+}C-Yd*AoD=bn3>^P~`Lal(Sqf&c&rTUuc4 zc~tn<MEH1fbvky82dJNkjS0`YwSU(O#`8g8_Bd0ZqE}{-=OBD6>}>!bMhO6zi2(4M z7h)~|K!g?mEO`O|Itu_KL;kL}GvY1qd0XSKJo3i2S;G|`_JvrugaH7Ar{LL}SZ^*b zR%nSeA^K1DJh<dcB*8n4SF_ce%!!9!d4~qx+Ss>ru3sm|rC0@thMTCJbe*u#xEs?S zqOR`J5FPZ6sH(Uj_|yMhVNi;9$NAgrmFu-otX<-fIoc$5M#%A3O)Dv6dvD_reLkvp z$1rzevX_qQvj}SZ=c^l?)L~!n31y<*aOHlM{J8~#pd)78itH)FeudjATJ0lx+jyD= z^ZJKYzt00Kqw=Ku%g5QDj!xbIM_bt{gG2IgF(nS?QMJE5?*0tuId}l7z?r&!o#~dZ zuG!g9Sm@X^F|tf9ODtmch-MeQ0$R!3YrkVNPK(<qysHcQzJXmkc6zV0lJ8}{7$jMl zqyEO^Q69ERK=pUh{lR7d(oXQC&xBCLg;p^YrWXzJTEk}QrNu^Tw{(?*D=2PU%DcLa zm&A=;T!1>B0}fwB%bBk+_}e<4$wMyU=g%~?4_`s`Gbjm8;_(pQdtK8wk^I>ZctZLF ziB!lHvA2IY7A~c4rb%InC(KK5Ea&`Cvf&Vf=j;HGJQSvrqiK}>92r0?g@`Gx>$m3E zdg;rG$*@J0JO0qUz=xTwsT`f;nRNkq*146ZDIH#($>o1)Zwqr$RPNNC;0BUT_~%@> zhLxL~%FeKJ&U%hSS8f8Q)MRHn#*}>8<_vz<vN*BT+4fpjKi#y8VRk#8v|I$!RH(E! zW6X*nAPT95_ciix&f2&<C{_u%4Z#ZR#43rmz`}dFeh99F#yjJWe?$a3C})C+14nRy zkb1!YRk8H_X}+%rY~y*xpKN!Cuk{9_<3)mTGI3jM0<=i?{8P{tU6)w##hG-XOT$x^ zjC5E9WxV$`t(0W(DF(G(#VCDPlV-gwsgnH$W5Lf&dY|%t?j(;{td?gsuPbB_7<tbJ zv_-!CI9**LXr$sNa=8(7M75?YSL#lN9otyBD2#9eboY-)bwQIF(ZJN^m#@eGhbU+A z{_eqkae+DYGl+E6p9rO@L?q&yj*~*mT@{lAH?wKV_)VXsOiVe!{fiGGnI<%Rl#uY- z2?YKsOVvhn8lK@e>i<|Pmpwl-{T|XdHv(o&a&}5$;2gMO?iMCeG-_Q%Kj!FgH>G%2 zr_7Ckl=*OD()rSUXEW|j9URd1NRz*=6y>n`Hr8dM?GQdA1`qOXIx8nAvt!e~q)X5% zqOvw~36s^h8ZKy!&V4JRc(hHgE)H6?vW6;d_l(%4+Gk>f`x%H_z6=%I$A`JYHbJJ^ z8|Q@<mg12P7yE^ylRRzXBQpL-4`+IwIug<lsO;H#3(u4eB1r5f;oKpjN;t3JKu_tx z#*$g4^kAPNn9YP^3uUaSOuneVAhQXXFxg?g*C)E}EbsMgZprQCb_Xtp@+%QNuXYs* z`Ld<D{181>Ixxhl*lkmmv(Su=aphoReqIh(dMf^v;xSw3T0vF|4CBvAHUA{t4sFU0 zv=5gwarr(j*95+F7au<=TQ&v5)<gBD2Jc(wCX?19gF&gz6SZ|m5-#7YUIFaKqna>A zwy@){-lTS~h4u9m>e(296yyeK1$54HqS5MjvK>tW9~XGL$+W|y=PgUL*Ca$qC7`5S z1o`gE>0bF3|84lA%dnDtzdtS-tSlE~jwcFZ>qj3Mn~a!s2A}*8567iR>|hh{u|3fw z+2o!j$2mx@wQ?xy9qp%RoCxRmR3PQxsahHILexI+OmB0EESUDV_^|*X1oc#SAG0xv zF4z#PVNsYo5DQtUb)x9XFp)SsH2WE5SHY$&Zd`S*wYJ42W^bvb(&DR}g~I|TQj7ZZ z9pQ}WKMP{9X|2_95Y3@`@$!>0Pb0y5a=8exgPE;YRaZV!0t*|y+?={W;Yx5?QU$#m ze#-Nq2Xh_<TYx5LIKKi&m&Vx{nH+wPsQnpSEYt&o>Az~qI2FG9qjGu<f<PC$r1IMi z9DP{yBr=I5M`(7RR(ZDR+DEVV;wKf=JE{X=7lPQf;CZ&mD3fsETfm#`C4m;$$cxXF z8+*^>JLK50HLdtw=VF~}qu;JTtF5iRvM;u~J3MAwTD~(oJCZesD}&44ca=>yxpYh6 z{*7T3NJO%Z;~a=iJXspKRn}Q#WU9Du5{*uQi+oxf(c4%i)E2sBhe4fh?QGgl0T~*r zoQo*<;bSzi3OJ5Y*@;W#dvRHExdktUIhOb2olvpcSa9|7Dn`_&IQTXFX#IG?=*Zj_ zx8QR9>%Jg|MbBJAjO4c^HOG9PB#R=s`AdgnlE3BLd(XRAII5KQacUSz*DCB@l#da2 zM5@ep7-hjwuZ*n_ah9I0<kt7(3o7pULg?>?=K_s{C#<aT*`17v!G{cqr}KWh{@tmK z@|$_q4G(knB5p_994OKpJk0OdP!^)}VqV=9QG9TjFLNI@RG?XcNO&KDOjs`tJO~rH z7g5%+Yd?~UyK^O^cn0T|hT5tbrXG7z1P6_G_(4r))w~ve-3{6MPAEDhgY{_Ykkw*) z)S$RlH4%L(F+Q+t1!QQI)6072&@ROdJx<VvtVhkdo+e{3D0uL%wyu?$sfN~BKdtVn zTc_2o7@B@Ms@HDlv@mQvzbNv14Fz&9UYY-Fjp!Ug5JGHDk3@njft_%QRG(j(i+&JG zH)4YO<GF^<&xdkKws!q)8|JUW#P#2L1_a!SuBCD9F|6L2xmmyWJ(^O)zFz=Yl^^<M z^9EPwFWLYb&*_fl<5fa&$kGE+`8meI0R^zZ>cp#8sdd}ikM6%jVVs^`a81whrK?Q4 zH|S-RxQrIos9&c%TEgXgq(ui<xk3hkxu|8Evo-1#?5!v5jG_tZE)u>TEL~rD0>7~- z!4lIXMM}WZW2d$I)8O;U4_~~F+%_#II9`$@woSN$eap$ANN|f?0z9R(qO@qOE#)44 z-^@_-N*>KJ&9T0yISOO|-w<O_8wU@+ixm+V6t}y1N-p$oMO`mSfu<O2+dI)QCb))I zjwhEDG1i%=W}~O{lww!Z2YR1(%1uifH7Yvfs?^)9x-D<X55wbhHhp_=w};`zfBt}l zoE>c<VN`AJfd`p$et3GXbGX54l-2OHaL!FcLCLv8>8!T~!pl6WJbXy^!I&|5+$BKv z<L(ej0P4*hmw-G|PrYev6B<6??yr$%2GFcLR)*hDdX{&{-*=PdjM+u=2KgCmf*-Pq zx6#t3!8ZWODrJdj>=zfSNc<~9Yv*+N&pO6~`|LkgzS1h&SC&zls-GlE&eh7>iQa(Y z&sOo?wDWst`kv<BP5Fl8hA;}RjZ+LacMkXU3MZj`Xe1s09W8A=4J`u=Z9Srv0a{lN zt)r)=rH$6oN*)iZ`yW9N)t7vc{(l6z{}q(haUSyoCjVv#i}XW#dxeoSB4}jbBAG%$ zYierxQ-esFBpNv|K$AfB36G$W!Zc}QYPh0~7KQ3Z<-vzap+?Y<Jhku85og|EfTg)D Jw!+ji{y$xQ6;S{H diff --git a/res/vector-icons/android-chrome-48x48.png b/res/vector-icons/android-chrome-48x48.png index 7435fbd84443938833750b4619a30436fe28151d..9cd225d40238c5f2ecfc101793df154f3961c820 100644 GIT binary patch literal 2620 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 literal 3789 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 DZB+gE diff --git a/res/vector-icons/android-chrome-72x72.png b/res/vector-icons/android-chrome-72x72.png index 9fdbbefb64581da9bf265586c751920318f3a34b..d9de0c57152baa47984d816bfaabe9d78087791e 100644 GIT binary patch literal 4175 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 Z{{uvUaU0hh!*Boq002ovPDHLkV1hiu6ea)w literal 5571 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 M>IQ1HD)y2810DcRyZ`_I diff --git a/res/vector-icons/android-chrome-96x96.png b/res/vector-icons/android-chrome-96x96.png index b9d4326942168849f8cb3c561f2aec69e6026bf8..eb48c2c91e919f8308c9af3509422173105ca0bc 100644 GIT binary patch literal 5628 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 W375=kO9c!70000<MNUMnLSTZb2m0dx literal 7536 zcmZvhbx>SC)c1FBch^OWyGwB`g{44&#obx7xVuY%;!r4B+}*9X6)Un`+zN%__V9b( zzn+;VGs$;y?|e>@doy!RPGZ37O4t|_7ytkOTSZy^!>gM9SMg9@+Xl4ney@ULBlBJc z0H{yGd^AIT?E~FED9Hk9rl}5JJ0J_?5AOj0UuFOxI2-`De|;2u004OM002j(0DxE~ z06^-J+o37(`U1uLos#^kzLq<=&Y)L8cTv`N2LKRXiPt*dZ~g=TP?4#~%V>MAo#xs2 zYY#t<^t!i{q#`kfkbSEJz0bxULWnk0vHd`V#S)8MZw~yDh#4L2%SuvbMg&aHC?p~V z&!WW=DWG+u%3?C+aPCjO46inC_`R5}Z#0HH^{mb~3-QlP=I`fL^x}t;Upf*x8|-M? z8;EDr==PLrDNSm9L3^mSu9sJIb$W2*&3s;T)=pr)ct?;bJfCL8xDqZ=6u(Dk?|aGN zu&WE}V%{v>L{>P{$v!qhc=Pbhe?KM!z8H>hraDW(R_skNgu&WQq6{OmmZp!d36pZc z!c)G>u9<W<d};G8d-i<{01Wll0)Tg6Jak~;Kk~!j4Sy;65^Qo}V=A>dB@W0w8%rLW zKvL$AF-ZsZMvYhewC$%KArY~aEhNw_VR^?CzxIl<sE6GJ?eCg7YmSUd0#xiJEC6N3 zLUR<*oENYa#!n#Alu-c2x6D|XKson^erH7;tVr8w&KCmL6^_v9a^(65RJ6BZpC`K1 z(H=0GFbsdG5$O0h9=im<bGb+C&cFUv1TfziM3eCDy#;bJt2u15GLkIxCs9F5g~yK= zj>)Sf7RjuG+ijR94V%^;Ef<GUw@VWxm)IAY3&_Oa*v1*lt~%XM+E#Bgn?~h`2xh_K z9x~bI^wJ(Sd^#a94b)eC8*l8hPB4^8e^TjnAmJ=m5pVlqFLJ~w(I6|1(HP2z3J(M+ zgx<(V_to^<0^S|dC69^r!eoa#0&})Y{v9_sdwB{$9P7~AfqOn9QmwZHzua4Rr)`Jt zc9^Xig;G`I&i2gi$OPe?+sqURFhK=@r#m{D<gj+Eoo;h>%CEEO*M+}O{G2PLRz!j8 zt@2MrR>5TK;;u}jMflH{WyeK8^E<{aWezB_MG4yeQ4EgKJ*U1``&(X!Ss{8Ba1$zC zav6G9+D`nIMSGH5<BVVOIFBhK!9O%G9>l5oHBIlynTY;dEuBtYK@7^AMj|~nMs26S zW&rESg+O2hBW>42)vuiopm&MC=cOLEB9i2DvoL~N&ef4XCR{KM5)9$4ZEvP-{iV-t zMRW8otaSW+p`%J(V?I@7qmMOZsml3xZ!fJBvULtLc+tyImV#eYK98$A1{1$w7HO(f zH?s>^xzUu2y2Kh|mk;PcFj+W(%hMcv>s1$xMd!~D784u!COmNz;FdNwKdw4^W=*>v zf85gMo)A__yqRdeeO}FxhAw~`hPjn=F6fA(Nl6M$k}#)Za@X)Qz-Md`?-*~u-pTW| zp}?Qt*Y>9SK#Eu>aVD*x@C2iLsO$1vJu^NPf<Ut3h)%Fbs3@96Y}PVS_Le1y72xMn zO_um7;m{n&U^r6!d*>4D+{zq@Ek8_0@fGuvRpY|x#x4$G7^FRuv3NKVhyWBnTQ(^O z$YxPx$$W_z%n!6!GCid$-pz|ElmzYtKFZz~=`>rYeW|pAZ{%+uj$x&uZ(+XNP-x<V z_~lu*<RUglbu%TwU$uT)?0o_~H0C7$%#31Z=~BQC?*#;Q;ses~-j^tmteyHuS<N&E z@j^D+(XxS)Q|qV0SFPFvx<63ci>DcK>CkKEhMy=;cI;K9vufTBLdr#+##9_A@l-C5 zoe^`j(c+j5Md(u3fCQJ`gcv2~CzRK`KHnQ`Rxc7Vu6tiC5+$vDRC5Tz9kk>=%JkZ% zFEwn=e{y;nmQV%`ZFnE~E;!anoNazv2Xc@GunIsd+X(W)BBkqlBQYt*8?&x|`#3c0 z>(>fHR!z|Jfslzm>#HJ36pnNw2j&^ncP(TyfptqRJ;jc|<Lc>$VdLa8p2R1`@0ebW zP(*~t^|+x>KbYh->E*RmZ}GZA6Q5K+CGx#Cb4;m@@kl7UKZ#*lNVVYvIge!7G#-23 z{Ccy75569Ihs(UJ>u$tBS&H(`Sde=LgZxdVLleDJKfg44d$8)<oFeHt?KWi%F?&f| zhABl=AgBkRo*Fv(3MCBDYNmLPcAhd^Tr^18E{)nM$nXdMW5FGdC=w$U`D0M?@$KJg zrqr$3JVMZMOvlALmKzPB;$%Rx>Rj^Je%YGRPWAM2;fDrIw@_=qnd`*&3qQOBeHG;5 zSW>`;l{oAjd1PZCv}qT=9lxAYIAgyj;kPo9M>&$-@2|3c&YK-4KP{sminCbYd%gAj zH9~2^J7n~)TpwY0!V@>`NL_kS_LO}_1ObgpRBZ`gD(ss&E)r+K_+uew=h&%FhZ^A! znOAnPaNhOII5|(AcMH*4Vz=Q3Po`fv_Vi*K${IDSXRhVlCPq;$)%)x@I2Tdn^}?5L z5<Pv-%CCbb74ylayU${|9Jw_7Tp*HoaLV?_kry^DQ7w-p2KYM#8SfZ<8aVV~d*h7~ zx;EZrECjG8v_n9q$nwFiSC%-%31^!qBrm*;47b|!bn$hz`gw`Qqi?JcFy2$o<bekG zTTZ3?-o-Q8uGG#29>!+k-O@+9Cpgeaw2KYIvl$7Gyy=;{HuKrCoQdt>URgz%0%WV` zkB5OxYyPGkyPeDbTAJ9G`Dfh)H45++imnpT4AxUO3$>^%qjsl7+;4R~D;EwS;}!=m z+oq5TAk2MYqp+UjJVp|4EF_oqXWD2AFREo*x*m~{fn5Emi3DBRDe{6-2K7RXx_U#P zDfzb_eA`H-ThyvbaiT&Yf_rV(z~W*57Q}iYGd{>kg!-c!5z^7A&-I*-iFFdO2{L;b z?0vY=0I;gBH~fo)$YRx}FZ0tbd|V|J`vTE-d@*~{0yfy)g^#4qlnwX^eE~w1VU8$% z)ViFmG$Hd$yfjYy=V@Izknpq5$Fgz=MFH3n@><1;-%YIuB@l00aW<Khz}OO8zl=pO zuGi;W0#yt|@=SaxmT}+=S*ltvz7~S_2Q5_hLIcq=-y%F*dMSVEZsPh02}HBE)2iDr zCjIk3{M%CXZX53?_8hfxD>gFpFtSkLJKA&7QSYGo=P6sX>BD*)C&m-oO?l2g=n<py zk?rq;p>5h-T(zZik93bJrhnR=#l28Bzh0cZqg1W@nE7pFU|P3^#`uwi=%d;(tOg*E zyoHB5bQlnVrdYTh4`}+-cq(@xWHrM(j3N=0oIc#UFz%(q89={>bNX(jLg?)WKJx1m zC$KgjTCO-;$$>i9K~I)GI>C)wxDQHc4;PKe+G^!{CdT9<g0b~5;S8zi7bt>SCQNJ* zkC-xgE^Js<bSx4(*&Gd4;g@hMk-w(ts`)z7o_GAbk3xu4b{FA@Q?!6-xN0@kL7Lo) z-i;K#ak8)$?xI!(GaoXJfxVz>H&QQ0=Te|G@FburP-|aX#ONl~d6O09WI@eUhUgSA z&<aAC@GD0)k7;tnjuy6(qX43|A-u6|&CK}048E|4p#O;;rLlMfr@%Gv`bL_c5NcGB za8F7bo|?4Xt7#DGJ$SRDQpkhFFl4l&-H2eVb~TD3X0@GBahH#_4%*kmZ^PkNfmISe z<O@;a)O>fhv9n@n>s5p<qt^v!pMV=c_aX2kwc>urk5vO7^fa?0`=!uFbu4od@9fpm zG2MPav6hw&K<<M1sNG=yWnOjSHRD);g5**#ONt;1@NdKV4;^VsL#g-}_E~7o)ZXEl z6t3R*??&|nsY@~WO%-aqf&(wp=E`<$5}EopboxdJ!>0sO_JV!#x?G4E<K10Yx%evO zeas&Yak|)a8}Wud|J(gk7?&G~VcyQM2Pwqp3{l>1@vlRTkroORnMIFE0zMNyC9W&i zlp;hs7NQ3m-j+d$>sN2Ceg@t9ODX{lhU0oPRQ+pHO5gj))BnBz_INEIraSKZA^l3_ zYS%YdC69&o)gJ^P&_xnkjRw-EF>ttssPmc!qmc^YBg(gx$B=;r6y6U3@W=7_VEuxF zJ~S}+0Ik5Sz!w;@dP;oM*0KbXW-xLfCjT}j+|N~Wo_m&6F(2@CAc&6k4YBZ;(y*5! zP+!w-<^znMH@Fy7lNQ#7n5KU8sUDC<xkv~n#IqI+o9<Kli|`=*QQO&!b?i5Nl#?`m z`uRmKDY`M*m_;LEp5+cY9>-(9XObJabFx?T;3Ht1$cb2v&Ua!}rBot%%Ns6!nS__) zdhe&@Sw}2-rn8BlmAa2UhasZIrVh4&)TCN`{dbjFvvvcP;Ht0jV#}?_)7CsiD=9Yb ztSAUw=Vaz39pccB`+oNnqq#|XgD$XgS#!3r5uz$&9xT0Wvhc6cJ7EK4-puL|f#H<c zYv+vlW8qr8p&L0y5W_~#I&?Q;zS>+Un&=K=1DG%Zpn`j<hIkjGSf^?bfh(0(Grq7( ztyu^AnJ&7V%87W=x0jW@CGro@@9@LTbxIMK@FV0=^q>4x*t&RQ9`$gC^@15A{n&6` z@aCTlJqj98PifQ%`=@%K<HEaT7IDzk>SIy4Lb8Nu5b<%CY5vI{`bYq}zoKw5c6eSG z$cTQSbxgBYg7AeQiX9kzv+<)Kd8!<_<w5nHRR^?NA(^zsk*s~C{N4eb$g#3#;|fUC z^ZmMLz8>Z?*70!~;cum*Lcn+yepmA>cs8($YnD~%9`HhBqNQ|A*m;X?&L5YU%{H)` z9%M_I1E^T=@^xzLGlXZ+Q-oBpK^m#Py_o*lnt3m>HKF;E&uv@luh7-+octv&(jR%L zv;=jCQTcmofbwDh*k&*Cx*jUGI0Bzm#ZA76;dF%GywPc603_-T#K!u_<w(Dw<(1a| zi#kOO3N#}e+R5|z<w0c6z3F0g5|uo=pSdhSymJgEz794V8YBW>K)_rQz4%-6GyKwX zS2~jtCruKF&AL#3`WD)iR8?OVJ5W@NVGI6qu?j(QFPF3&xWhuH@N*Iw><mt8^@D^# z1d!pa+dzgbnA)Np7l;hEDR^9LBC&MWjHnGU-_lh5N|E<>UrU+7Ie9~Y?wHQ?c<$Ha zMB#m-L8p9Ku*wxlG-98sE9$6R`PrE{!p<_y=*mBb#y_mt#0NVJD7T%rNnWRKls;fr z;;czBu^|#T&~P?6BCV=t-X@;gSv=&ZG7QVM$dtsO{?Zqg8Ncnmaw_<m^r0Q_#`U*X z_|MhOWaTE}lKycz^WaORvz@mrLUrWk%S6qBC354j-Kb7mp<~JSrB5!BB7;E(CR)|B z`pIJ6qZ%zwc(i_S)yrooBwnEi&CkltwvnjVXOU;2=?X)D{kR-k0lZ=>-J0NcB&P+? z@3>1GHg8-3JKDSvlHpLTfh{F(&8|_LI?>$pG=6aP&sx=gHm0J-&a9CLjYBLrWX6fC z%1CQv8lueKTE{8Ci&A>z3Ro^Zlf*MFXjR`01=DBf4zr5orjUcB7A<`GgK*qzG$+NB z+n!f;_f){1H|jQv(lCY9NZ$kgB}K^}mVtr-leU;&kb1@Fb4lHh;#P2YTS=&eb&!7T zz}riOK-6%CPh{0KSh<VK6fvD-GJ@sv?p}%2)QtHeYXcX=V>NK1W3<ikpD(g<^wwJk znaP_1-(UV*_fK=Zel~@pgwV|IaRh3-rXBi{lcRmWnjyQUHa=KETh1Uq6~ctx4app8 zrO{sp$Upiz9hYm(N(75x!<J%7x&z08QfOcSal;@n1BwV~&n4E7w-^}LF@{MpT^oi^ zQ_8#>l#o!nz}^|XP!)FDsll90(qD3SC#=8<inKSTLH%@)cK|EIo_}DeHJ~P(H?X!k zjVA*+g6ru+G#e;&gDZ+{(p(TViQ+ITuGf166{TXYb0c>+AMDriqf~QnH%#-;FIekS zP0+f2BO|moaFR^6*#r<CnVTp}nbpk(UGQrUVRGQ#Xqq;C1Emw1VsD55OZ}l3cgaGg zztZRA=&Z-GL>8EnZ{nsL>3R6aE><w_ZD%eysTdXvEH~UGV1!2d^yb0tzopipb$Y|x zuxk55&Q@SqJLCDo=K;VA%N*b@CMBKqb5{B|P<di~lkUisr~15wSPHlmJDrO(PW0i! zdxfI@9T{!;VsEQHhMv42SBA%z+tHcPINTLrje0$Id0a@yW1sav5a)aSzk;4Scz;EE zWlM&_l&Uf5eD<D4tHMGA*GJF;b7)1O0!VJ^iGdvBO;GBvg@s0x@nJ<`{?}i)%h#T6 z%M#cz01~8KJldnzM=gIx15ElzsCc_4nx@<AAK6zzFZGs<23{kwy7h=N=KQ)LL~pPf z<olMfQ!<lhB#&>s?gjM&W{?6hFAe3fT=JvQJqo$f7AtsOGgD<0TUy5$=BZHlfoy{4 z5#@7Q@lcr~s=;w8Q3;LqyNBk$MT9!bb_@A8ruk%(X3q~;4eNSFwFNTVBFz7tj9Z0a z_?zR#U1<AC;#pHnutPIykWF9AXPu088^EPcJVP+~GO|68x);AAj<70f=w8XoKu9JX z(ka<uEv+jW!PdvhR(z9y<aSvbjP4VZZDHseS5@_%P8{&?7)Sj3@x1lQDa|x=0K=}e zgRqaBGU)RX;gGfuHumg3HkW1M;Y8K2ntqZZSkQO*qTGhAUteVUf@4g(L~vs1Y9x}- z{iOs)$@j7<aI01ja{WSYd&AKw$;~Zp5V=247ZiGCiYuz<ul813wBy0r;C*?!mAl)d z7~aosdHH=@6v$9G3l=y)$r$@fcN<l#?#H@H8+CQ53+rl1!?=!s>w{!tCErB-bc?1* zcUQBm>d=rg6_B$P^A8tCXmjzOVV5qQBiWk(5c3bpc8p?OEfm@ptP4HfB>(8{8s$uQ zD#`No<07xMa#@rcUnJA+G_QsrWUoD%tgxynElwFhaQGyp`FEd#?jNo^0F%}>u6;s~ zl-F%*aUqxXqk)_W(OJXi8B0RV^z@scDd{`B7^52D*Hig_{H;c}|GTAP-ZYQsv!c?0 zkeOP;6My2x#62bfAfzFh5hhE`bPpZ7{i}?0G{z(<di}M1;y8S&e8wb(3|0V_a`DUU zO7C!al(skWvJtsfZg#EFmHvN;vO0LzfxUqc6#|;J-$t&&b$`1<F(oDEVXdK~l*)Nq zC~Y+Iso5^u$RKceH-CP?<yv~4=*k%H(u!c}uKLm&pKjLoMz()^Rh*QJbFcO_5@Ycn zEEs6DUu>o?Rem79rY`RsUd8TmuX<yJ6HTL5%C;LsezhgDwgf;pbJy76Xpzc!P$2w1 zm-_h1+CD1YYJV&e&4qkfAJd}6!L7Wiao`$rP$1Yk_iNgZLk+1Cr42!!8Eb!CVwqd7 zig%x_X3A`IP|~S4n669+0ryWr&qzG$sZ>wa&?lrZy}88U+_y^%POW}~ygDssJ(HhS zr`}C@Zm=uF?M>Y!s%=${$03Jgw_}7vz)>MP*{92#6(aR!k<0a^+vq3}5Vijt3=$Hh zt2v#oakho3@As-I{rdgK-oHV<y4j5@Z#jhd%X$NU&je__h%}eX4P$ba{s@*1Xh@&@ z+Wg1@#e6ZxZbgzf|0NnD5b{jZqZn5XSwh;OS{-nI$Tpb+h*lImSKN>nW0JTrB4jm? z5EE|BRl9v$DHu1(m=|8;dySlU^BP7y4<VtX+{{f`?Ej|E2mFgY$s^@K(D;!A<TJu4 z_m8UulScL!`dc7#K-gH<6fbk}WtNP$CRnL;jys&XJATOu@A3+Uh`aYejmTc{32a5h z8{BXC$vytZLDwBGBSxhKDPX>R%GPKkxlX$mKORzWnH8Yy>^xPdk*k1($Hk(@nlFh6 zPNpSmQCf0gl>U5kZXQbKDoXpSVA{x%nxyLFb)JNL{M3Vd_ifolg)nMi6uhwlHp=P= z9wh047<sedc{9JdhSxZJa_r=QEN{-~##33KtJoJ2q!DD>#AOlfP$C>d!!o9CN}JWm z!38Up$43lj=aL}WTU3xM?D<X0<U47rPp1S*sSc6{8di@Wi`_*72ht{K5=r?{%5k?x z;@vNtY|)y2){<9GkP*a!&kH?{$PdyOP|)1@{6rM3)-`9*@X8rJ0ul6iMs1ByK$;NL z$8VX@z;R5r=3CF7ya5dG2}*z3X#vPbG|gFiWQk9<Lx3RM0QANolB0P3PSJZCtgo2H zleV>9vkX<c#+H}J#1u$k!!QczRI0^)axnl#%ov5iVr(8&MQg9ovH0n-UqwZQ3HDXA z3>|)-=YA5>e?k@OhmlJo42aTYHskv)?q$w`<KB>0%NNLO&gz=T@@xvL|DkYfs)4~b z$PS3YYycs_3|FBLTDnnDte8+Y5r6nbTODlLxFm@nU~#}!R7MU2v+diL3$+1Y$E-9- zm8TQf@BF5*MO%L`=7Yo*Od2QRlW*i{Y2ueB9^MblWnh*a9xBO!gi$48J(9)yCj!bI zeO{>7{bh&mr&;t^#O8n5G6gX;=2$o?E<e`J@h~V!A)|>9-cvKn$ZV91(n7BN3$<|a zfka)IU$Oz{;%AuFS4gxoztGg86$q)f=W{G2i%?G2*Mj0>-mw_HCX!}1kF1+=gF!bq z!(pKhjiiWq9<x|5mv1ItJRcHUfxyd;sLi3F36F1aLLzN^R-hI$lO9;(2Z!C{b%i}5 zlz4TYV&^)>;{iiuQs4xWb4MehgPkxb+(KY}YY>XGvya5V9dcUgc(8OA1V)w<`2OR| zwh2Y`f&Y(JGcyOi2PVON;uq!5c4mEF2#~Ntf=`#}>*%fHryY+n3+C9*2ajZggDw1h zeLucz+@I(AoCrzF&h41)Kj8Xc;+<bhYZqyfl#+3lPqMHK`KO@Sp1UDG$q7!*G_g)E zUx^t{yl&>KIaj}r=ap}?^;o0>=Z&Pi{0+rGg&t;O7g8pSAkrojfu?#B@mJqEd9>ZL zVXJS&)L3lcq3Cx<L}9F^^>+RS)O-BPj%lB~`fSD<f`9=pF<h57%c1_K#UMwMH|abx zF%!7;Niy_vCe2xxe39g`%!@-r_SdE2Vo4n3CXG+9{&?@AFBaynPO%5|j89SHeC$W_ zFLzSi53|WEgx@w7+d5;ObuV#8%GrDjg8~jIiK^O0xTpV{xoZx;;EE_EN&d`R5vb=i zpF10Grs(`B6C?A`nCCr~+Y{N=@(7Bq!f&8}_RhaMJ(l6CasScGe=Yim>Va0;-Qlsh z|9P5s+iQezeV1TLz|dzX0HN{(y#s(=XF(6bpOL~zE1FcFIN8a}{mXq*5B@2)GE~-- zH1<IE&`q($@V97PTvjTj^2^&zF8iOey;eP69V;ff?~m)vyJH$3H6`Uw9j-)WSp9`Z zc{!g-t9p(ie2}hR<fd<~-?pE{O%Z|f#-}!=%@yCKg@;Bi%?YPuxivqtjknP$b$;lD z-58Z>EC%pl636(AlvJ6LI<y*n5uM@{x4@#4Vtwm~1si?K1=YHC`Aes+TCU^3%7(Fo zlZD2(#!177Ft;L%Q_!Hg#Y<EjMTl?Qt-+vva6HoNbg4O;{GH@jO8QS!8*nC)V07qT zhW<@QB8AbW3&XzL!?$&Aj<eK0l~~H!{<yxhb~0piCzQiDgyU>rO!+@#P+ybUnSnR+ zLGS3?M_b#v-NNUaUDo>qn;%^2ri#Co7#n*n)D%gp+vj$lq{Q)3z_MJh#n+2NCJzNY z4@)x-D=`Z<t5*T=@$d?9@`!Ts3Tg9*it!7H@d>f>@QU&9M6bKI|1ZD^YH4Tf^M3&R z{~!3?zEkuH$ow~g`zISQb2E1<PER*GfVG{Yl^8cSw=LAkirdP~&cU7=Y-i!&>1O55 p?Pdq{VB+I(gxWw~#RBRG^>pKUr7eGw>%AHSs3@q**T|ZN{tuDmEr|dC diff --git a/res/vector-icons/apple-touch-icon-114x114.png b/res/vector-icons/apple-touch-icon-114x114.png index 0f0ba555bc5967774087dbe8030569b90dc6d653..e07fa437524d07ba46de85aae009ae2332756a48 100644 GIT binary patch literal 6596 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 C0_wH^ literal 8992 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 diff --git a/res/vector-icons/apple-touch-icon-120x120.png b/res/vector-icons/apple-touch-icon-120x120.png index bd524795531f69f510bb90c2ef84d4a735f27aa1..8265091318032af8e9c66a8032a0cddfdcf3e3b6 100644 GIT binary patch literal 6872 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 SgZMH40000<MNUMnLSTXs5>_Vw literal 9531 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 HE9CzJ*dysb diff --git a/res/vector-icons/apple-touch-icon-144x144.png b/res/vector-icons/apple-touch-icon-144x144.png index 2a83f5216943004f4fe4517cc160f4becadc1ae3..30c8cf18dc56e12f06ab42e97d0989b84f1d6516 100644 GIT binary patch literal 8265 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 Hu0mjf1S1JS literal 11585 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 E1=A$_a{vGU diff --git a/res/vector-icons/apple-touch-icon-152x152.png b/res/vector-icons/apple-touch-icon-152x152.png index 04ed2d47ac755cc32d25457ab9beadd21e565c0f..5bc63546c8635bd0ce5592a27bbef0dad4cc990a 100644 GIT binary patch literal 8751 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 Z|37I8GJCX~=urRw002ovPDHLkV1k-Vpr8N% literal 12185 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 BA@%?O diff --git a/res/vector-icons/apple-touch-icon-180x180.png b/res/vector-icons/apple-touch-icon-180x180.png index fe13aa99c3aac79efe1ce0e4dd549656f7e0451f..85e9f8ca74a6cd79a8a1fed0ea06be3d11ffc46c 100644 GIT binary patch literal 10430 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 literal 14677 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 S$^gy`peU;*^X08Y#Qz7B`o*;X diff --git a/res/vector-icons/apple-touch-icon-57x57.png b/res/vector-icons/apple-touch-icon-57x57.png index 3d7055c52dc0b0828aa4995308439de9a3e01286..253c3db70a35bc8240dc781929ad025e0ae4f67e 100644 GIT binary patch literal 3272 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 GLSTZW<48sT literal 4464 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 diff --git a/res/vector-icons/apple-touch-icon-60x60.png b/res/vector-icons/apple-touch-icon-60x60.png index 0dc6bcb53449a943ed83856dbbbc64e0b1de5d67..192a34675bb2f00141cc3050c3a84acc95aea6fd 100644 GIT binary patch literal 3427 zcmV-p4V?0cP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00006VoOIv0RI60 z0RN!9r;`8x4H!v8K~!jg&6<0RT-ANYKj+>%_s)A}-@EK$?*fjoNT6*n7*iS=RY@B{ zo1oH^8e^AGRTXL^q6XX4u_nfDp{YWY{80t90urDtC{kO?Nl02mOHzx5q=N7=HjAJ8 ze$0F3&b{}X{xP%bwb?s+XLlU;D_v>ko^yWZ_r2%!dmKRv*t6$vcc_y0fXX==RYh6C zK!}uqHWEd<E`dlHt%zHSc@zau$AGs%ds&z2rOeIuOs!U+A4HH!58nIeMop9dE+_3F z-%7ebzafcnYZqv3(M<v`3MHPL2$i3E{Q5t2+97mB!n^PL>sw{s{UH@E6hvU+$~0Hq zcO6<N7;A~blM+X|R6U2XYg2H_cuFp<c2Xz~YFkGCAtN%<PgW2#CH&Cc2M46%jmokN zw<5Ibx;{R%<Jwg#r4$t0GBeczIj4wH3kCcXP5jBjH*SAzwX&NM-gWQ6m({fM>#Gr* zx@$e=#zY_uG&D?2$I?yWhDF%078SEShq1~W^LBBeMO7*B#RE5O|GU-b<x6<?XEMW5 zicypbw9YStc9})!j|W%Nl#r&=X(i|mr?9m8MwoZXoGMOJlkP&bZ|FCUKG5nE_up1K zt({EUt0D`a#%(ThQy3|;c|8=KQq(+$if2=DYdF$lvXW)0lBLs1G8pY78H#ds`f^Sb zCdoTxfG>EjT#-bndl5o4?PLjj2`l7p1ZKBfdj;V+LAo#5Qae|=WNT$+?K~ydX4cM= zbBe5s^^!JYT$$|WL~)XNy9BUv-z!f~?}rD2%J(NMRd-98E`yo*EY*tMw2p?r)D1$K zPDHmbG=uJNlCE%)tX*WRGKcLsj20&7kE9uhb}=09N6HCuP6>tj(!L{4{cQhDJN`L{ zPQHXiNUthfzv4j1iZc0f@cKG}gc+mLijy*9bXalHW{i`iY3A$#6O}BUl3X6^VI<MZ z(fnB|ZVe^G<C#~#eI#@JJ*QUc!+#AYwJ9coE4v(0{V8<QYFbAksd)}H>EbCxwpJut zD-ts-hGIR$42$*gUM$^UygbizHBU$j(H}`O67T1o+-amzNzV~q2kux&Ctt$)ro<cW zyOrBor&)*96=B23y1@0NQWV_^vv!`WU83aLyqi12V6>awNQ!|-CsHaVt69b?v&0OG zL?}Xkq=T{Y90>K<y+^)t>w%lLztpTBUvo&iCU#aEjs$0T0eWs3r0m)&KDOteltL4N zWGKo=yq}G!AtJhk0?w3Y>V$y7SSM*Sic)a0G=)@>zHpjQ<LDB|y({VEd+h8z^3<QJ zY3Cd66K7Fw;9b8ibil&gF$m4~tMd>uEYenj9xI6^1Rj!;g(<SN5&{^G_t9a+ai!#~ z+(}$1xh&d6e<aOhHOJY~3;?>$M>3o5dBd-trUtLpYm&I*azqQxfJhlwzu%7$(lE4@ zAJO>cCD-O`X@<A5rzpBrbTmd1{UkyW6!j6UNe4sI=nZ!OFjdVWm89EBpozL1Db?N0 z^jp!N3ty9DsPm(|`}FI$#pVu+H5^C%UKc$*oeV{TpK6Zu$U9{wEAv!6hvWG%M&kXX z%qSy?e%{WW!jT?h<#~qVz4V5YOjWbE(j)7X=rj|g%qa7A38lCL*zMO>ps`DRsFM%x z*@E%$F2sNZV#!J{1o2HBTz&7a(EIrfh<FS0xPg$S(`6;tlwL<qIE7S-6U9lY(!mfK z{gF-p=IkO>>7WUXv>62;+pw{dp;$wj*zlJ>d1k#|Ux7V#&D7CvN?~kGb8UP*Zqeab zX^dJ#u`W44%8XKKtfK`KoC+t4&3$+w1eO+}JDenK#<)DzjZ~6ZyTIAf3|A%w=nf|s zuguj))GpB<Ns}^T%v1{$oGJ>4ht6%VLU%U<Czs_Bl<-pMrjFGaMvEIw{Vj!}Cf%lw z?K$L~GNXlw#oc%)){P-_a<wwH=O7TILiG{N)fyveL=k|eBsH&wsTt@C$|$kXPp4JK zWLkl#8LW%<EL$cO%-0Ic+eIcT^K@8oBDzV36=%AdBkPpu(^JGl5oYZIRksGzXNIYV zusw&0=VIw5Aw7iW)j+WJDZLg5p^<Ei&~iwdQEHw;sS)jn=q7O^%rrUd20^oN)_N#B zCDDaONa)x&c*+C7&@`z3^z~TU6Mbp}qDDQaQj>L!^~PD~asGc`k)YOiCmZ3Qg(FU& zd@ZK`7laj1sQb8BT0L~;G)OI2QEuZy0O(r%B=D#kL<=87HU29o`StZnnbMw;%vAHs zm!Zhjic~!ZAq1($aZ_+A0ED%A0KsWQI&`6-H^#}4b-Tb2dgFg%q?O3|>9QumN(2jt zxYFfRY5LrYvP7ONqw-#Tmya75!(rC-4q$2qHR&#zlqsuzzUCS;Al8`r_1(EX>S4n~ zsdFCyA>Q-T<)V(TF7)#@D|f0&=|__|#|!5okqvkPrZ$$ae)~!$I!Z_-=?W(a2^~+# z#Su@L3m>2aC=5*}q#4+rgKP*DN*(pn>7o*j85UP12LPD-@oC=wm-kR|c}GMk$i6c} z?&u8qZ*~&Cxtqa;g*Dl5{Iw-hK3A(R(?lqO;M@`blom3M_~~>}2zyd4jV?0zpQkx< z=y;&EN`d?09LaDB<F|Bd&ta;X1)wLK!qg00>5;3|r+AlD4+Ymp92DZU%=LdXv%K^* z682lcvvz@5yHHnP%%*mDtYz6_-#<ZOFwMk38L8@1w=a?gV4^yYR0>lwNQ9!e(xuS& z07CG5Gr4OzmV$W6?n`rZbE;+Gieu0If=Z!^Krj;T#}M@qpRUw*{DEi(0+_P%3%W?@ zYR@zi+tv{tighy-JLeYKb5(x+{^+XZ%aV)ty%~mgeuP9Qyy!(K6j8&X(@f$ikLgPN z6jJc~!JD@&>ohFjq8c8#<8y14;T<jEy<S)h0+d`E9l>zC4<X=eX>K9$<_W1CTuI&< zH?8_aI$4@VTgJAjjm@r2d;{-)_Z^CT9@$t85Uh*$64pZ$oC-6Iy#mCy9^QKQFIJM( zmJxP+TtC<IR&E>svgR@M-4h4}L(wietT>MHI8mIW@zKvXj<#X|57s!s>*Ku_=5f!% zT(4l9>{_~5ggRX%{xgT(Pp0sc<h}ejPTjtCCEWGME!*aU$XOHN1vAfA_=Y~l@wM_= z#_W&I(7Ump$<7jG*KWKO_aEG{{l`INw8ik4uI8wCwGS2~AT$uc8Lxb>Y!y&a@y@fa z5&HZf7y<<k9oVw{@m6HCg>c>}FIqkqLVP?8&$NdyfSjq}{>PlsKhb^vYLen@H7#RC zn22#fKKSY+^Ve1=zuum;4B)+*!~JQl>3Qpiww}WsR*ZGAo)0`9{=;9z>S*bj$Vw1G z@WfwyHq+Z`!;4~g)TB$^DK9=Hy~e=jHUzvR6&Ssm%ePu>bWsTBYGsb+$IpAlyGrOc zq}tupXTEfMW@jr6E_O_-42&*3`o}uo7u}&{w)53Pz&CgQZsw|>^)GHrOYmP0-+0gO zEPb`>_WjoYuLA8_)N!eJ^3FS-``Gi(|G|o;-7h_A`RJj2Zz4n>Gq45RJY0QiSCERA zBupFqHT9T+7uzXQz*ippbmoSY>Rl4TnM_7{nz0kwWN6o6Ab2u!XQt`JuuB$*|JuLq zJuTq=HjCX<vc;b@t8hs(504(oJPZ6|J7o%`9-zsIf5}rVnzZf*PPb9y`dy#i?|YT^ zk`sR9@Sb@kwQbZdgtrGm`sRmy2@6d)z+#3#ETmPG`araDu})(qsRi9-u&aDuJ-qK_ z1YZwQHwcs<?N{bc7&Qqj2Gm1BM-v(f&T|DF=}~g409blx@m-_i@t{gpoX&@U6=PC? zAn}bJ`VyAPcmts7IXKco2tlVA2jE0;lCz~5CMxqB&7Hwh5=#$}Xxy_{OnWF5n7}u` z{{>s1-33&Gw(*0e__=SHU%`Pb+l~Qmf?~Rn>KKZ36Ay)vN-|l^F;<?VCS458;EH%3 z0ztv8EQDXAlE%NaqUfWC_Pr_K%dNCo25&raIO7`(Z@y^>{t95SlB3{O(1c(^a**}$ zUOLP;X*0@Y(Jrn@4-qjeTq!wKTuh5Ty;4woIYd6n*Vbf(De*|N;--Z48%F;L!4DLQ z(fkD2S{Xq-fi;ro<BG%p{gE_!BL#A-Fox|p0OPtF+Orycmsnw|xy$>#==G}UxxS)H zp84M=(q2{nA%e|NPfvDQ3BtOGCIq(UkgJuLvx^H?4rZlPpE|g8$N#KC;YIAeeg9^O zd;#bPQeVI;wHlv#?1fCzbVr~V!~_5RTqL2{k15oBG`}+XvaahpGn==qKB2S(yKl=} zAqC$-u(e4wPr={E;ES0<nH8_2w-j{Qd*s`jG)?VLh)<wcPu-_IqfkFVYR?_my8Q>O z$P0>Hw|(W4N>iT$ZUOoM7r_Y>FCg`&{^szP-wrD4{{V^Q!HZHk{~-VX002ovPDHLk FV1n+tm$d)@ literal 4715 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 diff --git a/res/vector-icons/apple-touch-icon-72x72.png b/res/vector-icons/apple-touch-icon-72x72.png index 9fdbbefb64581da9bf265586c751920318f3a34b..d9de0c57152baa47984d816bfaabe9d78087791e 100644 GIT binary patch literal 4175 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 Z{{uvUaU0hh!*Boq002ovPDHLkV1hiu6ea)w literal 5571 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 M>IQ1HD)y2810DcRyZ`_I diff --git a/res/vector-icons/apple-touch-icon-76x76.png b/res/vector-icons/apple-touch-icon-76x76.png index 5724b6b80b065195432b5873e43d3d9ab9cdfe90..b94716457bd5a9070db4f67b73dc238287fa6b60 100644 GIT binary patch literal 4438 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 literal 5953 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 diff --git a/res/vector-icons/apple-touch-icon-precomposed.png b/res/vector-icons/apple-touch-icon-precomposed.png index fe13aa99c3aac79efe1ce0e4dd549656f7e0451f..85e9f8ca74a6cd79a8a1fed0ea06be3d11ffc46c 100644 GIT binary patch literal 10430 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 literal 14677 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 S$^gy`peU;*^X08Y#Qz7B`o*;X diff --git a/res/vector-icons/apple-touch-icon.png b/res/vector-icons/apple-touch-icon.png index fe13aa99c3aac79efe1ce0e4dd549656f7e0451f..85e9f8ca74a6cd79a8a1fed0ea06be3d11ffc46c 100644 GIT binary patch literal 10430 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 literal 14677 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 S$^gy`peU;*^X08Y#Qz7B`o*;X diff --git a/res/vector-icons/favicon-16x16.png b/res/vector-icons/favicon-16x16.png index cc7e01e3da459b31a00eeeb7b9d2bc59248fd01f..def4ec5eee34eb864994e5b7f6034563f6ad12f3 100644 GIT binary patch delta 661 zcmV;G0&4xg3ZVs%7=H)`0000V^Z#K0000JJOGiWi{{a60|De66lK=n$R!KxbR5*=& zlTApJK^Vt>&%E!upW^CvFxP~nAnfB-qy^Q<lUF-LVb;Mzhe!-Tgcga)3JN+z5QH70 zkPZ>irB2nwPANzwq-6`5>$>g7`!Ul&cXLhp9sl#pZ=QLE5r5Vh8oc#T=E{8{s6_V; zqWc>F5X1yVXIH)A8yy5!)17A~*?<5HUA%pa+5B5$)>B((8rX-5TZpVxg~UNbOs23r zknT8rw<1sgD#nrOW&q#dXUia901+W#JN))b(i}_P8Tl~YT_bRg)_=4c!qxqurYMn? z7)k_7gt!$Z=YJMShU+K=W#V@9UX8#cBc;~<y)>Rkk?2a1JhzMbaEy?02rCB>A#B+! zm-C1S2`9dD<lW<T0J~zc6CoPAT5tmoZ44`3k>+S4+88p$Wt1o^QG_f9g@DioOjiY) zv4C&$KXJe0NVF!=+Z7r^pfxCkfm}@o8}YP{p7&TB|9_0}G%NC*)XCk14>VE=N=P8C zV;3i@GuTKe@Ms9tk$=C4@$_0~U}54b{!)pA6C>vr@23y;7q%3nV%tz6*m0*OH?C&s z=`4$d)hSedxaJjVJ8%h%A$hz7D`M5I&E@$uHvPPE`j!F!CGf*pd0^V(<NprGTpsKm z?fkD`oqyLiMhDIcJlmApO7x?io+s8{fh8INV?d)ZMnJR%P<E&vSlA@l(^i@~R22lq znkfWj?FAkMzl>`<qu>+3^@-sn(bC7-x2RqOpZTibTF0r(Vj*|lHU3hd^-89Yy_7!O vJ5#A1dvWEJh+F`&z=A<~Z@x^=1N;H^AMggYlMd^C00000NkvXXu0mjf_C7N- delta 1336 zcmV-81;_fK1-}ZA7=I830000_V<RE}000DMK}|sb0I`n?{9y$E0004VQb$4nuFf3k z0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006VoOIv z00000008+zyMF)x010qNS#tmY1Lyz%1Ly$4d}93o00ZYqM1Mh4NXM0we@xV69LHY| zcgG<&ehf5Jgh<3>AQZw#Y^W9D2AZp(t<WI<C@dAnkCwo!j0kJaEp3HHYk^3#v^rd6 zmaIgK-;hv{{17h;F@6Yl+;MkLe|%v&wiEgM^V;)#Kkw&x?elD3!Hm*ta(7j}wdFyM z%TU4!PRecK27e7JoJYOqzh?b_$S(Kr%<&$W7}p7V5wJ(@;-TrZ?Ma1wBMQ$<C_J_% zKR-G;Ir;CRnfE!(+~6g-AHTve7H}Qs6)~b!b`wjaXYxR?x)*$w^rUJHKn&mD1z2%L zPKQ<J6$aEPOgAemH{|48zFbnW=9O6mWUJGsoD8~3D1X1=2J{n%8OV{_L=b4pj0LKV zAbydPJO-F?!H%QqR1l$8cyyB@68xS+fm_Xs*IG6T57Na&+CT)@v&2@g?bY<!hhgZ8 zg;kaou=j~~sQ_HLjf(rMM?w|u+wV}I`=gb~#w6$(4LfdZ2ZJfdZW@Np(N+5K+b|g5 z8)@+dk$){;WEmjtJivXFzk<Z;(;MoU9o7$>-R0MC<3K>H*$ntlK@O0^^B6&t$xI@E z8j;8l$TZPND`1&=icFbGAc#DfM35toh2;(>K)n2n1t4nVe>@K2gbX1Z#05D)3~)g_ z$1TvDo>=YlE%<cw{HSe)MYgLA+Dw>tbF5ZX4u6!2JPeKmOeu~99Mw-^2RA{z*7B%$ z3Ig{u_qoPFU|v(Y>oHjRTT8907d#wL*QVP6uGY~cl?CJr;u?*B3L9eju=>?=7LaK) z&<eUsBkR=B;CX2vO```U(IP?a7MJ-0bO(oHRq5b&uKk&LU7&87tPz30S7IOiBim77 zMSmQvnEM1msKyPfb()=02e$Xs$ubVaa%$1tC9+PqPz_!?|Bcdw!=k~ie_ZxX_LC}e z@jKjO&Cqnp;nQ!-SwMU&!&wQ&6!${w6&UdL$D9T7P0r8(xG{tp=w~Tr;FMg<Dp+!; zV~b0)<w%s}`vaa$jg5sK5h>eWoz%~L0)IaApapxGQ#(a%s=+be-4;#875mSs2jsIg z+04g)1`t!fr6$%h3gWE2oVRs_>dh8^u^}&B|7Fgh%I}tq&s{(&y&_j`WqEhy#o)NC zp~FWks`IudL~}+JJ%nH~L~-Y2MdTX6n1EhFFh+Uc$_P#c-LnWttK+vof;<&wu7CG; zFLP>1u;q^=L{|T<d@SftXxZQ(U94d9%d-e{K79`XknQmW>m&P;+pH;fO-LY%+m%IW z$-T$fTRMwC_U8)!%v5MQq3~Rj!cXdFCK5O0zmt$?@>Ny`&no<3s?Ro+`)f$y>s8aa z{{aU@f6pyBC$s<n03~!qSaf7zbbn<!V{&C-bY%cCFfleQFgYzTHdHV<Ix{vpGBztP zF*-0Xh}?6z0000bbVXQnWMOn=I&E)cX=Zr<GB7bVEigGPF*Z~%IXW{oIx;gWFflqX zFsr%bq5uE@L3Bk}baQrRI$~jSWi54bX#i$vY-KtxFE40sZDlWIa%pR7FELPQV{~<L uWpgibX>W8TGB9j!XKy7kFk^3QZ*_7mb9QHB)frd-0000<MNUMnLSTaVdQhnV diff --git a/res/vector-icons/favicon-32x32.png b/res/vector-icons/favicon-32x32.png index a0089a4ea966d8ef35f9641f2b3a9b4ba561b3ba..c999923ac149a91ae0553c7525cd0fb6e817a9b8 100644 GIT binary patch delta 1576 zcmV+@2G{w}6Rix87=H)`0001UdV2H#000JJOGiWi{{a60|De66lK=n(;z>k7R9J<r zms^ZoRT;;BYwdmRx6ZAHIql4}bXw%08i~+q6od5&JQ)ZNN*is|2MtQ3L{k_KwMs=y zd{84s6Dco5f(-*i5)(}%vGSr+O9wl4+Bq|2F6W${`(<B0AAfAhoS8W@$CfWy5BuBy z^?kqft-aSpv5tLr;>U;mW#>s*u!lgQw}&te44^Zi_2d9;U=g?^qFyt#e=580(D`oS zm8MoZzH{X1pZfo<e-l|HG&JLf-%oN+-<lwv_}HFH+q0=S4eE|1g8w{99X-D9;KiN+ zj(+vTN1cWC>wn$EI&RYc&>mD!cls3sv`N$mkqSm}e2@8Nk($%0D<uby?K^a;Ys{4o zF7o(Bw0_;in6}swjCHhFAc{tjx2l{i&$8UEup^OXTXY~UqF;RMjc32s69BI4*a!f? zT5jTs-_bORL@>(kWQJQ)BY5I5Rh}mv2s0KRQcBd%9)COi>?bz`P%&NE48V;Db*I(Q z%65%hJ<q>Nm&jXH#^Pzx;S|%=cZeE6hQcXRDRuIZGbdxK<Cz^aA4r~&+4k)st7TUK z1Dc&5x|v{n?cWg41`Vgpe6z^g_GR`Yhw<>4sV{L$ayuovF&t^S4+F=$RzUAf%t!VO zcF7LLXMYDdFN>Tl&8}(xymE<(-DEtGA*4-aYKz<y?nk32+BMSQ6ezxtm25{&b9J7? z=Q1QyF&6(k2euDDI1?lKi8RUg^)VdnU&AH>O|Q-6W|3TDiLrQ^sdA2zRV5wS!eXn; zcw(5#&0^YlWBd-_Z(RYDf~^NesofS}mp#aIdw+rP(NPLk6@ZG}V6IW<=wm2Ne>lN- zBEwtd98I^)U?fS=uCXgI%xrxbQ4lf$Sg!q%4FTS*jUqObK$nUgZeIkYG$XNrYd+8S znQIgX>mY;SBz31nG8kp4S;kO`fDT}JHbHG-D<`wz6!c=IQX~V>4qw@B(7KwW>NPR7 zfqx))A{biZ`GTP|KGHFV*9GAE9)))G-DmNrIt{i)Qk1O*AsxW+T(nYXrSW`^fY!L; zp-@XV1Yl}|kP)P~RHFHM9($^aSRRqF1no~JC=AsZPiDAcRf(GsT=8&xkB}L}@?22r z^2&I+TcUMGE<Pb6Kz|`b<(Uh#|6amxd4Grx&5Je8|LRS`=NwFJP_$|ch7**n22nGJ z>v=f7iy`Vy*Ij{pyF$KH!v0MTY5Qvh0_DjZ(?bS{Oq6&q%2X-Gw%7nAy9UT~cK;X8 zT~`Hm#J6(Wz%I7sB1mhU<X6pih1RKe7!3_EUn>yQ0g`5fe7g#wpIWW&sR9@4i+`xA zJGV8T-&F4|w|RT=EF9RvEvfC~8bv(u&l&BJ-~QhKI}>SS#pX~La9E<WDMbBrp51%5 zQ3zEi+x41Z@IdyiyWG{fO{XAXMre69WxGMyZlG?Bpv*M~skJ6B^ZZ*ZTq(7b$OGBi z51w65*3&mou^U*P1AvhV62CLuOMf@Kii7>jxxXCy@S#6+)Aali_J<OrBYkWM#u)k3 z%|u7yy>)E5pLz7&C%$mQ001Sc#($~{^$YdI8Rwq9IRd)-@37L8{QTQ@A0NA6004x^ z@9#gj>j(E79>w;*-ea$nVY<)VfB)}{8wXfnPrZ_T26(k6vGB2-*3`G&Q-1(JOcgi` zY`!=Eh&*xR?(9wPB>+F1Ji4S%U+GaEQzrLy2k^xe5i|-Bxpq1F-(Ifp#RtWj#pFjX zfA1yW*F8dvb_LLiT+_7(nL!MtnXN4|-zZ@F4skO~)3s5k+4Z7E!#oUJ*ett3bzIdt z036$W&Gy|!v0Y_PDuY%ESATqVCo?oXo0`+~wRV5MUf}Et*}5<KL0DU%6;^gdUg!$& z<egv6gFH0fDELdQGJT;qL*XQ4yTMFt5fM3&z2i%7c8mV>D-)+hsYklJZlcuZfAVs+ z<3zjeqW<__PktQD5s(jp3IS&n>KDiMKltJXqq}C0-kZG-#RRYyupxjyYNaPmOiuh` awf4UfETK&%+H<l10000<MNUMnLSTYFE&YN3 literal 2512 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 Umj;iyvJL}mt<aVg<`?7s1Ez?5mH+?% diff --git a/res/vector-icons/favicon-96x96.png b/res/vector-icons/favicon-96x96.png index b9d4326942168849f8cb3c561f2aec69e6026bf8..eb48c2c91e919f8308c9af3509422173105ca0bc 100644 GIT binary patch literal 5628 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 W375=kO9c!70000<MNUMnLSTZb2m0dx literal 7536 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 diff --git a/res/vector-icons/favicon.ico b/res/vector-icons/favicon.ico index 1b40e1747a4fb5c4d6ad347137f31318cc7f2e1b..a1a73e6cfdc4befddf4b5b9f1afb9429d24055d4 100644 GIT binary patch literal 90022 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 aIa1I|(;NR_{&n<De83DV+{(}@?f(N)0L3E! literal 4286 zcmb`K&ubGw6vwxU6cMQ)cxWpYy$A~8Q9S6s;K7UFK@>cS*Z%%psoI~~+Q!yKvq{>f zo21!*Eov)j)aa>#AYO{pDoV8|me|sc-?y73o5^H%Oq=k{{MecIdGF26>_$<F@U5s& z=vN8uQIvg(q8x_MrJRPS-}vBKa=?_?A^!Eft}2B(phajM`VM)ZL*g0Pz40o&0=ffz zgEpYAP!Cj|Ju<fi2C+4017e(J(LR_vE7JqUerOtEoXC$T<mdzJQ`{6Y&$imPaBW+L zn5n^bF+_3mY^%MFYu%X{xi#2caA1=UA0c53uzeo-<G?3B7IUeY9@ut@o%l=8vCIs! z2D?Y04=!xtuk&;5ZP>Q*oUi<WF~{w5U~@M#D#0fHl6@{;FOYu)c2_0&UY==h|1TfR z6VQSrdk*7{*m-<ig8vg^PI}*8-5Ks1DTlo&N%k*{JInL<wgi6-W9FcQHZc4yUa7B1 z^1Co@2hZc%5`5-MR<cq3I@22>*1mQt6JVF|EK%E)pR8j3rwuH6Bgo>FaW^j0YbRG? zt)Vj_mZ(pLAM*8qo%f8(@+ow`pUx8xa)zgm`^Sy1CTdu;Q+1CWxruc9nEJeq&JpsV z9oqEzlfB9IQD;7K6Km2~@L`*AucTx8jnZ`;(qr?Tea!c=nnijaIP<GxY&_TtcFtKk z1N(cOR>75zdw(p{#o}NH_Z{+%bAi!132d#P@7$*Ncs`JA&2!iEf%bq+(VGG0f6`>n zJMYKXX89DCny6*tV?8X=rLxIu<HmlR7#U#x*+x;`?LN$J1>eXm)`D`OKC5Tyi&~SB zyXJN_)mOKS@BXaj*+yHMPq83ILj|&oJY~;abLA8FRkd*+1*h6r;Bm9D@3zQ~&yIY= zOZP9HZ7kNTF}*HooF(DgUKW^cb-TBO`Q~z<JMoE4d&t~V=`)_rdh9W}&rKh&CfPZa zZU4o*%T9c4a9Dh<&^tAqE&cb5wJDJQ7V{jR!+K-bfsb>&WkP0;i}FFSUv!F{uHjsz z{|I?~pm&bIqn1MUgctl>68!w{lE^>aC5-nE!Lvmav(*;|Tlk-a_a|Nx>p=YC9DuJ4 zc`TbUWeQx1+i}h9K48C<VhzIZf&MRMtpmMx_-9<tck+wY`VDjea?QD&Pj%#=3_f&% z|AqX}8^TN*97?nE?mc3Df}+qRsFb%WYNtw4CCkP5Zl6zU7G-@}O7XIyl%#b4<td0t RtB<bB%9>-@sY@wE>>s&hK41U< diff --git a/res/vector-icons/mstile-144x144.png b/res/vector-icons/mstile-144x144.png index 4e130472349c454e40c6aeb02000cc0d283cb8f8..30c8cf18dc56e12f06ab42e97d0989b84f1d6516 100644 GIT binary patch literal 8265 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 Hu0mjf1S1JS literal 7541 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 F{{vs_nB@Qf diff --git a/res/vector-icons/mstile-150x150.png b/res/vector-icons/mstile-150x150.png index 7222a40cd73a92ca2003ccfd11b9b9b0153cc864..5b8fca8a486d4566fe154d8da10e1f6fb4780f8a 100644 GIT binary patch literal 8575 zcmV-_A%NbAP)<h;3K|Lk000e1NJLTq005Q%005Q<1^@s6JOOdy00006VoOIv0RI60 z0RN!9r;`8xAOJ~3K~#90?VWj;Tvv7AfA_stdskI2YN@-mSdu00Hmfb!n1Di-0mlNv zXAi?zHV`0TAS?zfVvt<61&+)fG8txum=D=NkOwf9Ck%vuG5&}Q3=FbmTZ^?z-RiZv z_Nuqs`J-i9>UUpvb=Rw<rT+2h^G8+b-t$za&OP_sbI%bpk&T<ac&Vs3@5PqalDC#g zQzj@o0YDRB4PrW?J%CsgL@W-Ybq7F*W{T`Z0YM%~7QwiX<RuIOdj(>zjd(WTl=h~s zdCzFG1#J`!|CVll`_?{f0iSi!=35!J;xqZXB59yq6hnVS0?`$ymx%RbK*BE&^5+Kp zJhkT5z0DS=UNlUxZeO43qbK-Ja?t#9VawX)6`-w(Vyx>#bO(Ksuqhk^ekvXD-95)b z|N78PH`&b=$S>-ySU29dU0)g9yP2$ghcu<(>)-;kS0xCn>w;iQE|D{#U%<CD<hIn> zTX!{Em|CgpxAE~CQVaEn{!^K?FR$l3qBDST!$P#4P(7z<7!rP`NqL{P_TWP)k#d?X z&uplhVtxF&)Ma{DdqP&6WWDA%9WAKQ_n%f1zqqpz)186kIM_H7|8;CE=}@*!N=^kS zWi3M=kcht@A07MJSKsuZvS0Exg1RWyC$GEvRWc|amzIpyV|*`!2CFw*LD$O`HF8={ zq=brNQnV`+?Fw15K;A4d3spNLgiPIi)h*i)q9#pk6uv9gC$CGbbb{Ld!*XV{<MRul zYh3i6m(zY>S2L!c7F#-G%@SENPr8!FbgK8)1w5f4KQI@3Fkcnx<A3(KnATQ!8dEO! zbKIF?L<3y$u{DG`BFz+ITBL-mRbZr)W!%i;RJUwez(49}n^J3U&eU1NS)=(nSX<#M z%~mP^t6;Ks+fx(YTni%vBmz-Z#20Z{$9XJ{bzx}wbbrkNK4jxO{i&VXu5Eyrv%)uv zwekAYwG#QuCd6Dl>3Q=CI<D@i^DF{Q2n?a42@MT_q3LL|JRxwT!*D6XKxrJyv8MaD zC8Yd}w)WuNt+spgOAEy9H{7)gOJ3&Fc>WO92z_uFgnTv3RUimyIw3tsSPu{}LbMrS zLVES51&)*qmB;BXj8?Nm{@AKm8}9w1cMsJhwvYItSR2>hb)A&*Q9s7=8~t@17}s_* zTMPh#nn7D2LNXX75sac&;fYini(~mA(v`w=A3ctvz44xFZhp!aVQa*fpR%LLkNYuB zJ+Ob90jD*5t%_qYTF!DXdy=O{4{<m*NY*UE6ak2!X0S5e%gT5UL2b%|i^XWp<C~s* z;I)3sJsWDaSf6-Pss~-15Y%}7S4RRj^`Nb8Xh>~F1T}+2(RR9mi79<EOWGXD4U(D4 zdI`!>%A2>Wz4d?9LDZ_L*<xv$cv~wg6@c?xuGu0?NyV`^nj2<!`Y<O;<2X|7hZ{m? zRlJA3Xs37fkR&7!-`Vu<+um6>fvceALt&}QKcS`eBX0D=CRcQ<sNV!a;z)@t9URA| z<XDt!ld^46uu4>>-`xRVIyT4i!wePE^hP`B3aMhuf}ThRF(b@@>`82?46qsq{%P}* z+wym>x#gi+9&NVNz7)PWH6$Ds_#sR^dDZ6E5^N7QW$ub&ku!^A%pw^xkL6VNOH2l0 zENNRn$iufP*%kI>`Z2u}S5OvGzVYt0xBh&#vd@;96l>#+f0vY{Qra(J>dD3Le<kg! zn}5vXNJ+*lFj~$qUMV7{IXTpXU`ccV3&IKI`xVDzU#6e3ZF&un(WO|Ix_ZO!YLk3s z)Z}A1`BEL%7k?>_l$tF9Frg^z!5Ay!y<FO{jD_KLG~xX<I8t&XKg8kOAhyEi2x<W? zNGv9zdnP<4Y$5;mr+$6^Qh%PHI%-lZVTjfU5LJO)tj^DABtgw!Nvw;@+LzH2X`gaO zI8x5CCw)w5nF5;5>O|jE0oWeRF&;|o-rlfu+nStrAqlreglKxk3R$dteFD=0(1nIB zGz`rktOp6}2D+H`+z$Xl)9H(L(G^N?G(SwnREHBvw#lB%305b1i0C2L7^~vF?8zL* zQfEx8u`{K6fQ>VHxLHz@kM+sxQ-AEhzxgFhJu%+UiN3bIp>w_vX^#gYBm)tQsRNuZ zGFHxUv@qo9<ZD83e!Q1>z@5F3x616x9QQf~k^*_d-D_|C;S3&QR@4^9a<p-u<fuQP z>a2&Kybx(WoEzk+^kMdA`x&idr#<`Y2(@uhaw%;A^)A+tlIOGir=s>}5;H<9Z(Ha! zw2+9er=Ivu-wYpR#?<Cx1&u>K$x(MiyTA81W{Q-MsT4Sr9pve;L-ZF$u{{EzFk$Uh zC;C_zQD=5fDAxda%e^US54N!&q~1jW3v9#u!Ym$PM%1KO_x|9H5rUfgXVZd+&epky zXi10u;uuel9p+>)?HO_qOoSSi#ulLRS{&){e5RkWU2(m)G`7Iyhn>dTH~;#<H_ZMC zrl;lr>Fw|R>;VQUEgg2y69%2PT~xR6Z8>p)!gA~>t&kUCJ;<`QZrTj*0Pe(+I;2#> zpk{DUaw&#(rkyC;6`o5U!&WM;+?O65zr0?TG-_TSv?Y<FPKzs6=LOxYO7u2lF3Yhf z+9r9cOxDbkGt1KkK}&XpedEVj5Kgir)`d{~-aA8a1cHOPK_+KIR2+-Lxj|MYdd~Qp zAw5V>w1eXX)y;mfI@#HN8*uN8AF>K+K7`g^mUzB}l17zuHt^Ptp&7&j5qcu+tWGTE ziq7Sn7waZwOnv830z;*7_K){ts?Y!E2(_^^ranCwH}eda+<U2ok#<5J!BYXBO8xfR zbvcf!J-eYNkkyvA?xh8zEkMTw%{$7`g+^C6!G*~sT$o%!G8momcbK(`>`5P|<fxBm zy2D9&BI>ZovHS={>&%r+AUu^3h&iVD!Reo3=J=B6r(fBSJE^mx=QT?afkvk$tBDyQ z&X4!9D%nSPiZtblW3qSrI0Z}X{`5sVl`$-d<Zyn-b%!Joh|&>kQ;sEt_{hfJZuk8Q z^yOb%TNP=^>+MFwpy%3U%@)H&+=y^-`%-!%9iDkrmSeL&(@#lxxGY%Fwupe@Mo+;i zGhA^miM`PdJoakIpjCSROysYIn!Te<JGXrW_>gm?g!$l!sj_SvPVi5<2wYwN<4g@5 zL(>Rq0is5bs1YJ=L=aWn)XAAe4&(+sZ{!3ug9{Ri3F_{BR@N-CKXbzMPi|-$mn4_D zu96+do+MpSCOr=3obd85U2~Ifp(Eec2yIyy{bim(xrQV9LWnDqSdLToKNZKMV3kQ% za-1lPvOm+$AI1)GFn5xyS)B5>))t6xQDU*@0dmE$IFK7q)_{lyB6KK{0WHU2pfu)s zy(iM{Wl0vsMRENUV$K*}oe$$ryAa(i5Qq#40_zw0{B$$Jkq%?!9Q!gScrJaEbS3Zk z*`RK4VPdgoK(k<#IaU}^zPBXSg`qg?9x7#AyUVB%A|6oZ{!1Y?cnUZR{Qaj73IcEI zK|~sVF83muAn?|nma6zyv@0CQ4zNGd@0q4-XgaHt-l;D`rE#Tl8bUwiKb?t`lA)qI z2h%HI5cu=dufO5j?Oxx1)1oUt;^y-(!c91v6JT7|jdp%(hCec9foIc487r%;mmxG( z#e0<&2;fM5SQ*)05Kbt4u%S}Ml@p%~M!m*2Y)60lv=31wb@}%7zA%@(|J6ME_1|G; z-RD?!K?mc_i_kBQp(9uvYg`(>BOPohDLEDL=G2!bZ0T?)H$d6xq$lFGG$B2}d2I_h zknMN*W|m_yP#ASRn?SHI)XuTOuxqZ7Qtpg{Y{5hZ>u_0BPej}de0jR(t%kapmDtia zmw#jpd$;W(ceuXUH6m#cc-taG?<pTeXj7T|x>L4IMk`r{i*7#$CN|C|PGvVNj=F=F z$zYW3NRq*#``>M_G|qx>(zRqR2q!pM8grFJ8m(kq84_KgHV?&;ul(D`@9*~Gs(xMF z+fYZC%l_s{mcH?Pw0Z<7g&=w5LW1vE@{&@u03kg<Z={n;JC@NG?Lzm+X+K#^bJF83 zN?)W?xx7hWpy=N5X+qGcNR=sAWlEE>AEJSX*R5(12pO+e3N%CNzHbtmV9B4Z<mI1y z4S_2XzRlQvaTk|=_)5BOSPtRVh^$XW6B<2{b}ngOM#5t^b|OEbyxFV?jl~i5QOsyL zN5yt8w_PE1bbYj(J>&liP)6=gvCiv_nb5FrB-9Zm{N`SQA6SNdZTqZtZF-wQ?`xNG z#mCli@q1rM+p^X@N;;i@rn4&1!@{szUI`q^s{^DRp*A9l!)u9Txa?jg!+KD8*gdXL z+%^xzl9E4GzA-}@zI77`1LJj_@VZXqh)MfN1NtjeMoN^^MI1}wm^M~OLRd#z5I}SX z(Uyg|@PZYz1!uqGE8FI*@};Ij(=-B_K27x)!IIblgb<vZ6b7&yn`4DhWlC{RxSfN! zldjiC%Q^a@olHJFX%DuMpLE7pvMX4QeMTgH3X65&r+)R##h<z6*5gw=%(OH$UsrSm zNGw}G_oQEP#W8t$?1<to)HdH#H(>lAq6bL^V|0g;%5yw`zGxQ}+hT0e(aKmkOLsWw zvN-L*HiFuSYo}RpEV5?Fr67r5l;e|vsS?OpMcPk0hz@E7Aw8hHPNoa40BTaK)^twh zC`G%%Kyi%S=_B+P#*_(u0$A48?Q+Z~oN{+Uo)FOK;XA38xUe2nmYd8}+{b`Xk4V21 z;zH#cGhkk^>VP91`im21hN_|+y3kk}b;sE<m4Y%4%PZw2Yq^z00BweQnJX&t;zNdq zpDQ^_6|1$YB2~>q_Q8Pix>qt7b6xL}z*xzheGoB1%J4wRDl5x*#{zCkG&$q|5Yjvp zOPsBWbrzAgO0J0b3#fL9qw2I4r4^Du(RL>Th7}59OUI>zVb6LGvS!6<?q$0cpgq{e z67SUAs<0fJtXX8JG_E|(87^h%4kcWngG3;PF0?ats%5)^>DVskKNbixS~)Ww1yHgo zt{9nDc52C~5YQs0ea`Fa7ri%b->%ovjqIGaSh^4dHKV3KQ6t2nNIRFbFQq*gQ_Ldi z_lTCOugSYFp?WKe+b0X^0p$kToD@{mgpS8nTU@%VqI!_3X-&nNqb`;vG*-kHDT9<5 zv!E<P6jLacDjnG~5l|6<7YKCC{nbv6;Y}1XQU7C`j$KpBn$}dTIgCKi8+CUebEG71 zx-C&e;SZ^9HU~UXX*^0rqA9*wTd|4oDxDOdwq8i{id6^VfhfAd>`q>a0A<WcwTl!& zC@->l6&O(+d^-w@>2+FQ8-aPnYBdC4C>&!`ah#-50M(KSYU`r1LKB}=D3+q$y-+Nf z0MeFcp^r7kk)SMorfUj|qfjEv!^u=xC$FVUIj-WPUX3~hvZfn5^NLjm3RYQp*sTh3 zs*0<rte8CYziK`UU@NSX(mHw^%IiXN$2Mlbykhx`1o{<4I0S;2KKmWuRMq`dsG1Nc zmq!o9GBrieYzCb30aAaF950M2Gbq{uVON<Un7FVy8P!pX`bM<c3QDQAM3WUuqFyoq z0s%3vSk1<k4mq>LKq*aLp(udz;)FzfkgPiEQ-vS^WhI%4V|v!nIvqzk-n~N8%WLWr zbIvQ)NIA<$dFDS(U1$g~;ZRRkQ#2WjDI@IJO2OsiPek+G7He|y-U~z&%Vyc5QqANg z*0bq=U?{b2T}}1NTT-#+Lg3w&PE~a(LVAGnV(MbEs*4mI9=TVlLbiZ1b-84@t(%S@ zFv((-9FMDclIPTKR8LDPR!ic5>@OitnmEH1WYLC_0~!cJK-@sI8)&^DL{Av>iSxZx zi9V%oHPOl5tt_gfzOrpnQCOjn9#HyN1;w%%G=i=lY}xX%SaOg0jp~_Ktf{ai_Pzqn zt{l#xBA8X?%Nv65`Ej~lxdh|onrrVZrR12RnL#`dQPyvmoW}g(=M||mpxzKf6~35P zaW|xPb}ClWD<M@R_U|*;JJZPAEHXzdNoh}p1ACs~=p*}Bbj?!w)}4obs_ekA!mu)< zQ{~_TjF!|sU^3*sQdYJr%G4c|k5^PInE*nbr53ARKGwoW(j%?qCGyXXG5E+KtZ{!z z1DJV}WB+=9fqy^BvNx?pye!60$$bmi%fa_bS2i?Vc~>#x;fqba?qxc*=T6hncv|_! z3}{Kks+Yw|1ft-Pjq6lw4t(!9hJJIRE^}KslLOnILHk`4<N9ty^rgdRU1*+lLRGh( zVImJ+bts)y6dVcZL6<L<vpni{Nseq;d&@!ZC#jD4$U9ITEAiA<eqA@EIvr<!0rMNj zafV;A7RzGY$`C`wERa(q{ehrcQJbP-TjUgRv82ipdRR6DKlPTrdd_*pDvcD`{a=4W zp}%o`qh;E{{N@RqfeMQv?aB~?L~=B*F1FSlj4AWgM=M#S73x$}{Zl#kr)Ku08*57{ zmdeD}12a?RnScDhlt-J;B(vmT|8qZ`d3866lf|^s2NFPU)Lo8SGLc(9nXo=l6ZLco zR@pN+>NxnKSS{*f)#_!*X>UABOLE}ryC{z}uN9D!x7l<5AGrJ@YtT>YPL{Vy^cOsQ zt594Wk|<}Du`X4i5U-m+!0uYF*1teYDpsu)%a#uNGyPM3#`@U^_OZq-e_j+%<~gu^ zH>)>X0Zi=H4rWh!rpPQ-I{DI74+6YO8%fe-kLMQR+cOm3la^cx>y127#@^XFtrmxW zf0Ci!_Txy016l7nrG2qZW$yb}Ij@Y1b%o-tYh)R-=rz979m_YxYDtS#Z_J;Lv_KU0 zOb&kkSw<ID$j8)5l?+B%5OQB|wWZ@K0s^PXM=AoY!-^Q%DIQB*{jNhZ5P3?@Ig8~y zUql{ljgI!GW0!2kzJEli@Il>RdD}vzgV0|XQ(B<TP#d91v8%FOA+0DR0w53%%tmf6 z&N;=hpH!D-Yz5?z686qB<<o`6`SD(5<MN_aW=N4Cp$Uy1#TB&vVj2%qozW2Ao2A%F zT5~C!f$!cGO3)Fk?xs>DU1ryz1G5yWF<6g{qMa8(^o1sxiYI!BC}LKQl&740H@%T| zm$j-m7GqvcyOjTsy833%HF7r0d5fh9fuU(t{Tbgi=$$dyDmY;77(}xLE82QIyRIJ2 z4=T?PLwbPjushD>Rj&&u=#KbGjZ(Xq^NKYS(tFjB>{de#o5X%uBpFl}#2qY+dsrXA zve-h`1&h2@_Rf+O;%lkb+%j0B$Szt^u|yrrij<Pvk=6+@OvlKtPLO`q{X<As@*MXl zi_{ZoCmxt=;UvfM!zg_#LD{jLFV-%to0e28Sw%axnNmrYu?jV%aW@nx;rZ|G#wxtD z+-1!YhjJ&C%X!?0C~HOxm$S<1H2^q##ji;FWLnaB_p(?gOX;bOBc`N$!n^xct5V67 zIk5d1E_mn5$e0BVWYyIH4NYfxe35I<V>%Yc^QuPU036jz;d}g+`9+!PHE=yp6?3f? zXKd~%7Qo1^K@RUc#OMW%@;baGG|rFrxFYOQ!lB%tXEhor`ABNrO?5ldYRRRr9!RUz zw}alC_~G+7Y4;9LAXwS9h?rvM*k2m;yx9ZdCtI$*<@-L1c?K=1Sh5ajGj(v=8b{f| zd}MHv|1DVFwvdEk=a@B1ob<>%1#-H>2kIc@8MLHg)rDp@=k$Toqw)g5iugihf?(M; zIhY&pj@JqCfz&k{_SaEVphbNwf$(f<G+V584bR{39Krg<7{-by=dV6bX{k(UvoF)H zETMFY`|nw^VOw2=JVi??mZ52^O7!|Vri?f|sqLo@t#lfPE#c8o+HP}K%eJM%^O=5S zvfn9o>qhZ!>MGx9oHI+I2xvqWsjsikB}yj?9C>u#8Lv4~av(cE!K1zdkkQd@O1=88 z>eonU66cI!0VG$s1Bi2xfhUf<7?roB&A!ZuDRzKVB+iYgwKqT0FabHo6s!HR#`TG= zCsM+J?Yk-FOYF^@@Q$p5gA^OKtbONC8Yv%~Yl^k1lTe2`TVSqH9xwCsw|?(=O&&lZ zZoB8|4ci+i){C^H^X|p-nE~>4ZMSNim&f4et(QSM8?5JY@KhB2a>czw$)~qmy}|c% zm};3*ie=+?*5a%d@v1mt=NPg$m$!#6Vf}a*ZCMzReDSNa5qxmV+FQQXOu5dfr4T@b zH1yY~tGdid$_~~GQF%cbDc*6<n&v7MoP&x5pkI|l^m?^an|nA%O4z?jm!u>9L$iFU z$()mlg@C~Ii@=!62Z(24JvL%g?tQ-bH*iler+h3GaU<ecw{uEjF!pDH;eSyyHJ_6R zLrA{)(Hp<`>MuQXTl4A$oMO%^R!9%9KvB}C8Wy}EPGw(?%s$U#xH*M{OM=DBy}(DB zEz7yN6uy8Eta`^~7*UUEY;zDP_|V4d?|Ngi<v6z$3kW4cti0)xW{cq`LL$HZw>NyY zwtmDla?UFjK-U!uS@4RUW{cq`eYREkAI%ittW+$?M482z{ONwnasut{x>IwQw{BdY zy17}C&w1xvg;Pa+EG5@>!GkASt`f~`k&=J-<Xcit{N2N;LyeyMth89OMOzj|zsg-I zXbzKfY#zAr#_bKy%br)PNf_(8&=#IOQF-9nmE~tX*62y+6>Bm&7;ibdqViI*<@WWd zS2uFbdBsv7x&s)mJBtpgA#f@xuWr6m2hK|8-3x(ux29{qsOGc!RUMl7czT;KovZ6D zS0j*cNuZSZEb!4r%y&*H7Sb6=UAdv^%4;9}i!C<>gtH4cJCfz$!yB)^>nB@x-1(z= zPc*+2PQjNR{q%7G4ZAYc02&sRpI5AD*t#S2ZQwi2mcvIH5|y7<tSYGJ{1@PC$*+M1 zMCIods|vpSa4IbX8-TMTQJ#sY{Kww3<-B^0Kd)F-vh|VF;|RXoY&m=+sq5B*^@_^R zE7lAsnw@t5yP7SBkJK$HKd)Fb;Hy9SP+6e812{V_CQ`qs{Jdh#kgYp5?-sDB*>d<u z0LlIDd*6TeHH~&&v1UQ!ReVvx&zdcVk6hl--|y>^IImc<AeBlv8oUc=-NrmKM8c*! z)_-P^U*pXy)-2h&BXtBRKG<wId?ad0^W%OEHm_JUaNnbMehbMzH(L(B(BOTk>r=ke z=$u!q8mSn(pR*(?FCkGByw#7f<`t_(zWi`1jTG<ZEQ!iX$=m!GXI`;<;J!!i{5Jtj zt3~BAuTQ-`RdYJkykhx8B+DJZ)6JH{2il8C?c!PonO7{INIjM+3ADF!HbmteXI`;d ziLE;}??#Hv&6cBP1j}n3VqUR)Ci-gm1>on+mZKINNzFG&YE~?v?AqdWmDv6I%$ljX zKP+a@eaVqp-S0T3QYlBkJDI~#c}-IDZ5|&imT+}D@Y;7z?x_c0$?ChFR&4iYRbx6H zeNCh$8&dIZu1Dn^LCuBRYE~=<TwSa!g#rKsH1{qx<K0o=49d1i#i>rQOphi-nh+ix zxBch7NALU=@ZCnu=O;plOs!+oz7z@$PkzmmHnzfQ#1$RA3RanPW%}-?CyMH-du@s_ z%eJ~vksh>MveuJ|&R;VJqw-R6sMaxRUkatONA<F*4M#E<1x1s~!?{6nrh1nyffI#M z#>(zhETV@9DXd`LR*p50dd0gM>i2y4;Z)ku_)F$o{TiwKPG>^RilxV+PXR8Ilc~6u zxS(dxsVGEiONV`#6CBMClebD((#CXb(v>{>GRGP4=oZ=&ZCAeT(K~wQln+uTKL5ki zPnla$`Ft!}d-`?Fij}(brV8+@$*+%Aa>}1+U$hflxTlp!hDzh?89&ah(L+2nc8CMn z0Z&U7HzKqL-AbCb%Ic+1HZKGa&GNU*ov8dTQ;(&p-%)wsOB_o|@q@{)S&qe6+3hO_ zHG>uLMK$$k4rn^(#TP0&M-P^itDV%bADR7(wK12X@)Ex1$2h(ymLbdEMd0ef*k2sO zQ3R?Ifhfz{7NN~TyFz+^)rmfW3g4<|mq}NY5rxN6SHJ7fj3@JvtvfdF7J@sQDMJ+$ z4I}6>60^Y<#Y$cCo>7nwOn$v=o19cz5ITZwtWGQ@qE}b<Qve;IHZDvqCak*)qe<XM zZb%t$708zGaU!qe^R#eOUc$C}e{jc$A7lA;q@&x~R=~A34-`hpTIyI;%m{ID`(jqa z7m)}?l@`npI-Q|77bcgmqHPg|P~WfYFN}~^w62w~>+UtTG;J9?om492*tYR5V7%F~ zD5&Uy&-*o)uVw2tJ^8>Fkn*<4uNy+=f@Gi4(wvSXB^Ae{Vp|AJ5EKSMEikP=Hd4-V zBsZwsEJ(o{wye3OrEb)0T%WpGN?aDcnF#pO)*UI=cQ;#nJ%lcsl@z!Grk1qXJ3eLK z;t64dAgl*T1f#@_2qArXr5Y-Yb0qJfRPaEnDHXuhM^X>cT2c9f1&frQ1Ny31_g(v! zS;vt#0j_?smbBTQ>1Vi9^JxJ9Qc4cx205A^_BzPkZ=kj8d7TJ{{|eYQ?FZ|RDTTJ- zt3OKl^TnK^E)`riJ-O|#k^DEW_hUww#nCR>0yFQ=EP?S#j$`=|<=NpW(z?!TQ&-;7 z(y^nBZ@&9-9OnrMv+FYD0}|f*xgDvm`#o;mN&|1&xotCW*HjZHgE1C_6T}12X$7&R zL%Nb<usBZ9_HM8Z6dcWY<7cjV=i{>wyWwoSK6R~x{{zGtKDiK^?|bCVd+IWDJqCS& zPw#x-!vgt5rde`zp%F8}M2#Q;Er6~GkQ2&OvP}wBnSxcS=D=;tf%TtRd&?6(Jwih` zrCbjKjcTkU5#kf~J#yz4>NP>#i<xhJ@|!nEDeec<2YY@Y_`Q_+f81F5`wsvB0VqjC zK~%E#KevM4GGjjR7x%0d!u}p`d7Y<9OW5$a9jQm_IZ549lkZ-0>ko8kzXJGiou)96 z+@}}pYv!s_0etS!P5X*g=amvZk0KuE6aS*=yrSMp1r4xRr*q1B-Gx8DN{JK?>q2}w zwf5#`d>F4~xc$0&E|!{ouYmRV^Bw&GNZq$1^{@|PRYl|bdPpfY|N6l<Nh#lr;5sBT z>*XdGLh>D5=YO{PuCG>ZUw_YqLfRjYa3e6&hKgkbJEX%mKKE$qM>IGmtf>uSQac|^ zSi=4zA$c8Wmx5f)gaeyIU?Ry$I4)q1l>9+x@@INs*>6(o*41mNXh~A3lveybYmr=w z<SGd(fhA1rBqP8Wf?*`jBY0XMeh~@DU!)#NHLa`t{|Ct07e|J<WUl}K002ovPDHLk FV1hrqfp!1@ literal 7635 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 diff --git a/res/vector-icons/mstile-310x150.png b/res/vector-icons/mstile-310x150.png index af5ec1b3d9bdeed45f54ae30c5ae9eb6c43d27db..d809f00a05ef317db800a821cf11d043494c906b 100644 GIT binary patch literal 9067 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 literal 8213 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 F{vUk(ht&W8 diff --git a/res/vector-icons/mstile-310x310.png b/res/vector-icons/mstile-310x310.png index f5fecd426c63dc63f7ff5ac5e5aa0e394c13035a..ec62f8ee9d3639a410d71459390e7f7ad0dcb19b 100644 GIT binary patch literal 17902 zcmXtg2Q-}D^Y>aMdhfk=v4};8Xsbny8iHLd+9F7_=)FcwwCF()-4Z2Oy%W(})Tkj! zbpDU;?|qMx<D4h=&b@Q*%-osJ%!ty_QX#^p#|MExL~5!^&p{vz=>0!j9N^1t%l9w9 zFC5EfDoUWc`=8v_;$#qr6{MylukV$$-|Ct6a?<baPPRcKXSV38NvZ*+?mle-ud{_j z6<Gx-P3S^!@=TYS|062`9L^)`ptX0JN5i9%&Xm14z42UDy-;E`i1JM1n7*9f=Y6El zw~gZ)t9oPHRQEqAz6V3zPe?{PG0(Ct_Wlg{j$G*D^p97KA}_CEjDuSHAI|+wuo1SF zqY=;xC6w-?)kCI!QBU|%C|Z?(KUIn$^f(1dRId2|JhY#am#B(Sg<%Z(0eV50##yBX zN{)rtV<yLrLool%#qLiW5#S`d_}6Y%%#uskUuwhMG)12qGhTus{YdGKWu%eyViRv~ zeG!2_=s=etI-3!>g1E!cp9-_nK*Zn~f_$3xl;3hEu_lDA3Ga@nUNpod|I99;L@_*U zD+t3b*G^Iha4!D(d8jDkmf83fXvbcJSD*mS^nCqg7fz=+yUZ|d8@M({hae_9vADUX zAU!nBtbzLiI#skBS$BbBT-byN{XrGzrUl+fe=X-&WYPAjAHyq}?1>h>f0I?f`80{e z>#z-!Zqk6=xwfHby8cm{(Q+@?gNJIL%XwbxK}?Cx9Vf==8$8y{=pOa>Vah-Y(4Ou* zisjo)@SBJQs4BY_2LVI#pC6``I_N!O{<)Y%=w_oG;Z7;F9SsWHw2Bf>GP1<<0>?fn z6g~FsKbD2AqU6bC>7UOyw+Mb4GMt@8{McPYh0##!=9&M*Kh64pb5nNCOwhgtKd;a= zZ1e5ieJZ+-l22Nj&|%4Qe0bpoDc4%=qr3!@J!;s04bEf<zWt*`r*;a31^SH|mRBzM z|7q&&p#6qSSWkTvTjl4hd8BXJLDJXr#d-d@NE3K}e_zKU*>#@0zkgP(-AGgMrb(vT zJ0hGE#W2NL$r|nwNcwvIgF}86dD!<N3S9N&Op-nfuLS*nXAGle%@atg3?>VL`AMSy zm<t2__ZV8)U6fG0!ZyBKbN++!?vE0?wq4*uKhp1wE7xV&Zu4oj-3{os!(0}`;q_k* zKwj_XQ9tRQFt;CRXT{kC9Ghth&49=RYvipvIfD_VkiI||bl?MaCsenN(0KjZNv#Sp zQ#RlVd)I#-#Wox+9JYTs_$QWv3M%$X6W~YqXJ9Z@ju(;1N6$uN^sDMVg?>@p8lv@K zQG8oG?=q~3w`PaT*n12T<+ocdi_pRsho7o$PJNTUVh}vVas3YLg@G&Aa$~X*W~r7r zUvwT_gUpAgCWuA%Wx&>B$#LJ1Sd#}HkaZF<7@5^KED0|;ovY6zxu}O9iClvTX&R9+ zrgm&Z#W&qjkq;xAk<l*I{mLVPY*v&B&?DZo&prb$>Duoq6<*}L^s{O57oLB4t~`^} zU-<l7=(}S3hV%R?)I_6~ZaOQ%^_3!akXeCKrs~IIRXQo_Sg=!R%n%W#;I}ooL&q9u z{pC6Ld)7PY1vVIxTFeptyX~6URu}rY1P24w*`fn}w$>_Hixi>mZAuv9fY;y59bj(> z2+&a7@q9ZCnsB&O*Nha_a*}xYp(P3TtQi?Gz2$`@F)V*FffS>s?nFWKMlADFlsg2c zPd?KYwB=-LEV_+K-<9eQ(l}7d2s=$z%tCU}mzWsCA9ve3+I_X<M|WwOkjkCOV)(Se zHo)|$qtZ(-?ages!ESc>B*7zsY--e?aDXZkFVdF~YnifknxP1ib=puywjJ{gsjdf4 zii@(OU+bo$tyklyrtM_na9El09lc1=jiIr_k=eI0eZKJa6J<SxA{24fIUjf_*^<c| z$G3&ouo^oBGp5~D()sFB3r@w&Ie?<IIdd+jq8(h81ik)sy}jY;_qUtDdt`X?>Z|cl zQ0mtA+-0O#1~EIlD63lsfzMU8^Pn6Y<mbG$Q-4=H#~|@|i3;^B`3^svqzM^e0hh;4 zY%?b0TJjSAjBllr2FAgO`=UdI-IT9jh3^4Vlp8105yzsW`qTOuPi%vcc!OKFri}3` z_q%4&j!DlPKZA-U28oB+l&IZlP9w~7DjA0yBV7xMh<_DY4a2TPVIo+RObAUCV?6dk zY_f3=tdz@B6bE}OjUMeojZXIF4AZ9tr8`$izx}PX#U+sXGJK5F78&pI)5{1L3q-MQ zEra&3+$bOGkxeQ_?jXAANZC!QHeKGu2onA-7BN>hn7B#j?wLZqtpB%MhO!D-l|nQl zG>_Q9%%1baZTVTrfw%GA&Y3Ir`jD;@ToW)ECzuQ?WzLUmeV81_ouV(j+W~1$QJo3R zZu>XlfSif+(weETNWPW;9k|aEFXw}Uw1vSjgZ)M=O7*NJAtH6#B3M6nVi+;f1dCqt zK7BE~yFIN^kIorPNw8YuLo~k~4#&WrdInlAt^xmyG0AJKUPOw$dw@wg9&AU@HO?HX zs8^avWHUpJ<8GD4_q(iqL;G3L>x-fo*~BkX;c>ymM>DkLZK0I)(bYMF11-=8q=8v4 z&>h!U*_pEuezPLhaSD@<1Gb{0x&E39M!%7_F}T=j<tW*HA8>25oM90+Ophmw$6(b? z<;*aSt1}S#g!dV-Ku{#aVBlBx2`OrnvE7<aul{*yJe*O$l$y0PqO5vxHX5C+db@LL zGdWYPdpKlp67I<(%*vqMh*T-a&1Q;tYkyqi{}Ze^K1QXHE0z^Fz~5#}8kmTFq>QgO zDG7gH!oT!E=B)I$z|t3t!;z@ro(Buiyu_-v>mXBem9i-NOj>@8m2cZOw51BHff!pv z4G8-d8j}s93Fbkx@YK^cceAO^KXJX3XH=CH%AWP(5Do6y2~|Zwo~LyjPdosAr87zD zVc<OpPW?&%oMURn6n1{^l*`TLF8^ZRf!8X(&zf&i43eOR<X!4^vlpJva#J5tjM0js zL-rki4e?#G8nwoJuo`p#6;y-Fb4o?b8Qv7rGAbKA8hT$>AVgcag$YxVOkn7>{<6yY zJG69lc=(;rsZ#Xg7c~R9)a!3GIS&7QcFxqLiNuAK#kLqIcVv9hNfnEEV}FdC;r?gS z3o+NodpZ|Y(wR(SMHpjghHH;OxWO$zw&VRF%z`uEG){tB_<V-=_xw4H_Dfh)hRdq{ z6V(Ilpp3539$H0Xf_x5Im4HIbK?*;~W<NYF<aTfHmP{Q^{-k=f<U^_2&`)0!X@@lR z*8_Hm>n&NAFhAEUt(#Hn1!TOt{9d%Du!DyPVGsLCoq#BieBnAzIGy&aai6druGaG4 zRlRUev=WOC`fL4G!P~T1_H!g~qIz$aVhhAcyN{GCY~-=S!#+gi@Z{XSotT{QR-D1D z$up1RjUUjGaEAao1G!{pl5Bm$W{CPX8vT;U0Y+3)#UmE%moCy<+)zS|j{b0~?)buJ zrszWTXuI-}fra99*#6uZcQdGuEnPexlJRC9Yn0qDWGlwwR~-swoV}%J3NhS1JuuKn z6`PS2i;UggTW5U!rrd73OmzWQa#XZ)S>ySS(^216*P90h8iKFq!<CC5hV@Nd;b9n& zy9mOrrq{~zmM5^sxkhXlp7AwEOCuj#MekQpjTo@r=nogE<~hO*0Z$G+Q=NYCyrhAG z8C(GpJ$?O~B<w@Ok0e`>WYpbFq=uLVvmfnH18^gszH!pDz<h*vK1m*ahAnwD!_-sn zWfdluUmU>no{~-^13g_WZ`d#%zE!RGr>{50<Odb1I`N!V)KwgBNTu{-ydUS<8BhH% zO4m+U$$5JB)9<(Bayv`oL#L`22K+%>y*>PW_J315#^@svHoFS<dRwWG+fk+2k|Mj# zOC|wK{;*ZHUds5~>DshFMSYP5ip|!bX=hy?EK_ZO*<;)6mbKIb@=J`54k3h+{d?65 zNy{YF>LMzA{DJE-i)K|!u#Rv|`s33RolX?4d+SkPBztzru7eKYJUafTJYa@n2WV+2 zAvks#VMRl?6mWWQX?$S5ywT3tg+B4suelHr#-TW)g-32JX~CLM>Ym3PSok$)6VTx5 zqL+vmp&NN3d{0P#=7TeaYwfw^!CF%lU(ExUCfg^rgZ7*?o<}fwRU-ECok%-2rBj{B zcb2^z088Wtuz@}VL^{X~o8yf8867PujO(v6FBtEe?vvOcW14@q%1o&iWLw7;UPrfg z3tqQ#cWzY+6O92>Hmcu{3W^2dx85^#Nb5LoPmKNEXgp&61Vcu;p2k<SfL8dk4$9&8 zE2r@S$$A@%x!~&Pe`*Zgdjo_7JjW;;%dI#`XUs~7^4aqFc?eQV;*h_BfB{3yd46on zuHr7rtb>z5Y(o&Imcq;5_9<$Z&{FbgSiV8UrK5dxaFDUYhpuJ;2f1|dXfM7eSb91O zK4|0??&Fcy2h(q^%!^}MqjwK{l%LNy;1M+6^8CXBjKT`~(LEVo2U4qUI%Cdk?YHbE zm?Gs)+bSBK%p`-ETzl#ycsUEy`eO!Ixg_PwmtO^#9{%I3Xxojde%*kyvokUCEbxgB ze$mshz?uDN>Ahcib?GH5W@-3F)CJ%KJYMRIYUGPWurBGzkIP*3t_$DQkFHpbt~6C) z)J-4>=;=P!qqIDpDk`P%zq%Jn;m_d-{J+b7lqX>Tng@SfPB4TpQ5_LP7}+Y7NV~|5 zS4l1rMF`JYZf^)nnQY6yq(NzBCM${t>L{8NR{c#7A(;6@*AxGf)plUgo^gyh)(U1R z`zT_YSE?Wo(0w^MX9^#zCu|WNSe8cbR=!*<uQ^pWxSGv?K(YOLrg8A&bp!oSfSv3i zUULl=H~oJek9371^-M3xJdE8l_<y@XB)IB|cz$fQ#0ZbyY2My4j2w(JcTk{v^ijir zz9l7qKNmcPEetD9@mjvxAq8X}u1{-?%S*3izpbe6POVQXFamGs3;2Qn;jBK<lEyhR z;W{<sA!rTd2_62iWdz)HB<~H|``F#T0-^oSapsFi;N@w-eW{0bkBTf`JQH3ej^Jb& z(q<LX*&x+<bfUs|_VIl1w9V(225`fHJb(D6uG_5!DtboZJwrxpKBax!dNWVhONs%V zg*XvF_dXWuQI(6T8-9BjVghPsXL#UFp_*C?IBIVf%oM|dKmTRk>yKqeMy6VlVO+Tt zNW%7i{~4SjQwN+fl>yQ}`Q<?`EWn3`<6-6<6wAM-W!)|GZ+^f(aNBge6_;Aea3^Cq zY;9goBgL?pm+Roqv!erCbnCd)!L>_=umQ@U_a1O_-W4wrFv8PTX$uRgVob1_qQv64 zZ7>V1_Ol(+^>wqXvt28F^OW3t3q$5L6*dUU+Dv1REXN*szDnINTtXK+{Pvq2QP&uS zb7zg0@Q5=@J6}XZ{SYxr#qAji1|?qasTP*r^wJT<>`XG2uq1xxj9nXw`3>*SZ_Mb; z#`S2jE6by>h<DqCr?FM`0s>|A$t_9owavdC<@HxWhN#2OV2@oLo;@9LGL8JMs-hWQ zuaPP`BjVooI_d+OQc&}Ry*ye)xLBP|1MkFb7oRH&=b>TR_79#cK@WyeTn1B8tmGF* z1_d{J%nh2ZOlIT64HxE-Hc?BZB#wM9Z1yym$p3vD&J)ERByWw!sb}nqE3p3C<V;K5 zvnh3%Z52CpH(belwD@K~42{#1o6Q$tU=RX#B#jE{X$_C=1fmAo$Tw>zQ!qfe3^jiV z)>KQ238uuq=4{Hhw9hw^6z}9lFYWP0ialol-Y(q7M+E<RQdWzB%~2fSGJrP98&%MB zw?)5C2{QlC55!cIMEs66)czG2*s*{Wev}+P6)_1QA&aDb$G?Zkl?kqc=V+WgKg{>I z>K#=_yxR~sN~x+gB--KA6rZl&DZ#)tE8A>FhX1}OXctm4&3&9Rn}{YPw(ecwToxjW z%oS!|qDB@%!pMtrwDt5)B)y18AAeQ-E8I=f6j2;X1WF;8-}v$s{MhJJF{bZQ$J_(f zDc8a<NO4^D<Bey2N{@fU>J*c+q9ZGRT@N?fKj<6Yrw-~@9hB&0ZkDTXm(64^?HM1i z&WC=zOp3J9+_Sit1!(8Tu2WJiq*>sSs&Du71fW7!wQJ}fJs{xuVq@j4dQlMA&u)>T zj~JT$LbQcK4@7(t^uQd&V*uIF)B}VteazcHd2g5Beeod<6FCW=cU8CiUZA>>sPREm zk~hHx8Zkgg*!4KftT5sz86xFqGLMNDp|>&nhV`hMXCnE6s$3X%<AiqaciDt&5uFa2 zf1r$gCYAZ^d`f8^1jj&^M7#JoDV#pIG(Lg8#9^*yJhYzG5cRPAc8}I}0KK6qEM~63 zmg}%Z9AyxobP8!wMAGtUxK~#9p;i5HZpM?RBSdk4T~!H7b6e8{>bWfWEO$3xJS8(T zc9G$80_C=T#q7xj^I9za8;*-U3OBT_Cm+KyuqTw$87G?xiQH!6Jh7Whb~Px1vo3{1 zS>iu%PhPO6QV~nZR0_05cbfZf?Dx@n=S`^rL7zwHDz1B-ssllnNVyilI(k?k_D1L( zt5bGMG#CV6F3Wpfms)xqm%%!BUEcfo%d8;Se7lGJTjN23iL1ZpAq>VLZT-&?bBu&? zuS&278Q0U9?03H}q*a*_wxde`uN@5Onr)5~$(3I3oBsDf*vZfJTXNWGS1lR`v@<Kh zOYnJgD-?_N#M2WaTKFZ4c!4z?tw3Rw81POE5n2{PFefTT?4MRdRLhM2ZlrifhS2sg zZmcu~JX2}G4|bnK-TKmD6|d$)MC?|1%zEH{FFkZy|JGFniP#<N<5-?%p6pB1HH=_7 ze%xkKd0sO>JD|OKk$yu9_!N(ZyyE*-D(JOB@Nr(u{DxP(c4;)58GoAf`*@fyHgDp^ z$E5dWHz!6iH$}&&Dh#*?)uoM@sJai~PdyGD3xUD0_z2C=zn1j#w#53dU%?I_0h3MX zSY9w)0V^db2-K72+Syl^sM7OGy8aCgg%((3@rmKq^KsZ|*D=8RfE?`(1B0{i8(7sJ zP~Bh?Ak{RCe6F1re7!*+IErZO2w%&Y<ATpx3ic}ggB&HEnP7u^Vf$~#3Cc;`4Q#Tj z!o&Q>s{{y4(0;HXZ}COx%dfUop*T0%z8H%V0kYa~3Pd9$j_FItf`5q>na(4?swwDo z1>9l51K#R4UbzI+De^W5Sy46y^mvaH^|jr&-yNT7@eu3=1<2AlO{rA~x*U~;f<pXZ zB*rf<nLa&-49=v}qjmg${GAml$AOR@ynZB6XPt@0K4udSL<OdS;%I)n9EF`i6jrAl zHK)Z#<9CkVS78K#w+;@JcfZ6(=$~iif^QW4;EUg#9Ck!-Il}1n)QP0B6{x1s#*F)J z>$gk-MPZeNtt-&HllR+hI5sh(m0N|M$%1b6y>vevegudOxDKd{Dp;x|Uo5cWgB`DO zPoy(x_@tn8wSi0%A$^ZqGEmr7TZGc-0`kBWE3PZk>%XZZ;JhSnU*xIaprs+#1c9tv zn(TKQn!BkdAB-9@XW???uGY1kQ|#UTfyO>vl;l$C4e8dmW7)yp_1RGS`h-@+F}J#M z^8>Q;u}og6bvo~yO^RSaDMcw^O_jit(C%vIl|S?#$kQM3S-PZJXdz=8jTF5t!lU1% zr^<681|zNntNKzQ-|eo{V9)gQIl+j+E}Wqf{1*q9hokH<J3+!>L}~lh)hCL@95ZA+ zc{%%Jmz&2F<r26zH;Ztg%3Hm#dXP!k&u2s0q`2M%k##TRrg&K$sReGYM&A}Pb)fBv z59?!t0QYOnj{c{sKmC4?q^Au4jf~~@Li9Gv3ZPB|U)-{vRheRn=prz!JosdIoo<_> znK7&g36`oU2W8)J*Cn`!UpAKfu4ApLI7rK%8iGIov*gpcZ=9X>Ud)8X%D)g3@l|x0 zgUppxI{q(v&cux>I653A@|QKw-jtSV2)Rqva;cSa?w>s+_ft)4KC@MlqGK8j?QNMp z{Wat`>XJp55iwX;=jj0|9nz4cYs$};UWiT=B5+mDClR80If~cbu^`EfT_iU=P9G`N zG!ReoTw%k442e3=`RMVjJvFOb6#KR2xhG9L|HX97!%}e~HYX6N1IfyXc1}##M?uWv z*NfKYb<|k0^`HT|VbAVz9Ke(R{MWqPF8zJgrr?-D+LLcKvB8IPw_7qL!CGDfq2sHu zV;SBG(>ANlZ9nNLX>7w%V!~)9)56K1AUHnc4vFbCOhl8r=A@0|82^lwtSkD>tGt^K zOgNtRX?aQ-HG1H~g)!r9a8H-}EpF(ObTUef>Th`%FvW%tjBbiBO3wmS_&*QcB-Wwb zWXJJN^tM2kYt*l#j0qhyRHZ~Lm}++fZ6DxGoWkr<tYRm^6th%MSov*RVL7V$3}Hvo zQ(aSUv9$w@fI<IRtAt{L7gwlPF7T*vDS&K6&@A|EV(4O)?)rfJ1SJt$yuY)`YX`So z%$xie2Q@|fc}AhZInryTrzh`EMhpeLw!%xhJx<!J@XUQDU|YU}pr3)|oF!CEKwxPp z+ti6fy96cK;5MAw!nfWJQ@r~;tDMOGrhFg#SqBT=^Gl{)>QHxXNY=tjm&pEHn#785 zU=@<mjTp0|n{s(xg?bfKLvX<sn`h(A&@{5I*!yA;UNcqe3>n(Yg#82oAVesZbxn%= zOA-P+HHG)ArPyI^^R{|oZVP-efa9H8>h9U0`H^62)lQFjnuC@v^5R;~gDo%uP|)~r z8Waa&5yS4|TZLvX=DkI4V`;Z4i=j!wbz0It@AHoL%sp<^NWfofUKeH7VOxz+Qu&Hn z8Vv!S&Z-YqlU!~8A6JHd*2<xK48lcWZWN}cyvjndWCI!4##MRQ>-p4^3h>w<tRzgl z0oVe`bWjmF>f<<VieA2sRuq^TPV!MM1e;UYpzv(8eaH|ZDfbG#|2PF3!5gCpk3kzl zDjzV7Jmyt(kb6mDrPe~zEULJ`VjknfIG}0yI;+h<{~2p^6}?=Ld#(t`I+k4>)&Hb3 zPn>owzGP0R??Vhvs{?;5TYgvqMKu1zY=19vG}rRGFdlA*cySd|RP^lS;4Q1xwlO{k zB5IRTgwLx*rIRJtK9qvUgqGJ}i@s{xa4#q1fMc>@3l;{x*@81+RE6TN%-X+UH5g&D ziL^;=jss)kXPzcv8!#cnc|9y2lf8Zt8e~lJ&o=y<@MpaZ!pE_atB);Y`7y_soT;*K zU}+C+z9qYIn2<i!`$ljfW}7`2L9G`OjK&!zOdY{Ev|x{M2%|(<<@REZtzmRgGqr`g z82QlJv*5vi=nXBe+&Yc><uSPrC9;DypZNIarX7*e7|VVa+&Rm4814)PP(9ZG&w6Yt z$&{Q>wuC@wvrQT(4l8pcJX$PIQtu&{u{tP?8C_y$0Sd2OAwwiDITm{z=uA;k3Sk1V zE8tgm{rkyU^lTRYas~V;FLcbVCEs8({vo)Q?0I4?CWvx~Tpc_;O&#>73D(@TVH)c| z{H{akRkUy^(es(CAGxqI|9tp|Y6<CRq*zFNDb}Vj<v#g<G{cCt{5sLE!qb1T?MPPU zU)rTy;3LLF6HVQ)`5dudf_d2DO8A+2>rumEDdnQ(>LiGOw}dFTs1RgV(1Lc&h4w`q zAzOfr5&=HVRxvjBn4<<2JtTSKnjAL@N(Gl(JBnaFQc@_QgsOEyUJSrhb`lEg^+ld= zde|`X9g4eV6__3V{2+c_5$mobg-H)eXgGJ<MMt}0E1aLe!af5E9Ry5O)U6wsk#g7J z?Y4}+NF@IA-42L$^M`Y&IahlzZ5<6@I3r!y?<`x|7<iDm8kU2hG?O4cr=;*sRsta2 z)}f@7(9|8LTRpIq=F*v`)A2y$P#vU_f!M)lTVw8N`!Pg7GX_sgY25u%mPuh|+lahJ z1aMT~r?a0>F51M6;ebqzSBD?1unj)>T2f>1x?z!mgTt;t?Q-`<^S`A&J7vy%WTJ9l zs1T((R(RJs0)Uz=?Qe8FwqB2{x_FO3q{$OLf>nx1Qu%bkOl3v9Et6FpG<$gA<>8u) z6X5A?W4XO9TZ%lVV~b+g9MRuD4Eiwl^I6LdY;k!*W>s^T1_?pVLx&(uDB--)l3+nQ zUB5InN0>dJ_Y1NWxuqPXVU1a5bOnJ+kY!%g8&?w?7YSnc)HusJrC?%SFV~270bre( z+1q?gI1gQi6VRIp%34-2_VO!1Z1qJ>3~7S4B8F+<Txm?m#JH7fO6u-&f|>b{*AEec znXnn91w|dSgPiKjkuBZVtOwP(f!gImbmK&k+L118*Le{?BPtuwvy?mhY?b-MiD3^; zxpKF*;_6mTP+@lC-B(B2sWl6F;~1<R+glB4f<lVx`q*;3JlZsoO&=sf_=)FA1qP|9 zUfvm|+;2;^+M7;uyz0?-oO1^SR}e&ZRl5{G)WBJ{pM&MZ)DrPAK)iUknSD#t>Ax;~ z-iivd<9gr<mx?~0;gk(U0IxMu*7%@Qk@}0stok+j<u7s57T6&94yW51xrf<Bhoimh zV2w=087!QhA%t<Xm&FM`N0{cSDYf!%yw8#;NWBsR36~#^y1Z_DZ!I%Fz3k@cAq+&P zhdcmLtB^<x%il?-CdyQ+acUue_ad5!SXBA+2Ek56oRN>OY049<Gh7l$n$CE2#4W&r z$LHE=R!0eqh~)HBcTfS|0P(D$%xmvgEwTa=sL=3E-e4B#32IU(Mh@+0)NoW)M|gor zxdS_}9bXd|JuKt;3w2Ze>x**S!0wgG48`>(Tsgah8g|mj)eE<`<eVH~FIhGP?njen zY5BvU1APMW?6Lw3*Twt>N`9<wrQu)}d*;k^OnWP6GMYP4KU$TXFQ`i?Qg24-8lFEb zo#<HMd|e;<|7!vI7}>J@ya{&Sn{Za<`*-(Cq!&U<G{~Bk5(7u0r^j6g7|WFWoa*N? z5BT|SWqFc}bfXF_aXC*`XuRi-{|HcSQ%Z_}C!dD3wz#C8Nn5`9OWk9jjGx(cHuUf1 z+8rqRywPdI4_5K<16<XNOj7*s9KqqmS{5#Y)q0DSd};!k`|lGOy^ot|!y~_G@XeRg zBhMqx*Fb?$FKe-tl7Dk<aej@8R6`sKX>iwghtUN^X|Y@V6Ri0bhL+|*?fen&LE?a5 zY=46&?ibZl#UW`4v^Q17!!=d<edc&<NC~hK&71^pcGIL%ZKC4M`2Ck4dXQcY;Pn=k zJtNcMiZI!7prN4kLC;HQ7M9_V;azlq<R~PGj#AWy^W0J_UVzEgrEq^$nwF6P!uFjD zxh|r+?gA@>gf{}O;}V6bYOa;axM--grVW0Bwkrx8Y!T@}+_BEr>{HJ+5PF`!bAPqZ zqCbd8m%!kf3h!|*(4tw#gi4#>6fE0Buw{QQbXGxEBby>~D@7Ot@8S-lF`%2Jf4M6C zLz&rEtN=X@TiVuZcls45F-QL#cKtRO%{@ldAXp`Fpr*6#ARR%)I<4*We1?%-@xf`a zQzq?*Hlj3(OiK~B3?t9cu7}qx$Ir4Ua#>3dPD@FKqOT+KbfX%M)zrrOpZ;Wba}pFG z*<3yVnN&99I<^4et*T3*;?|&D(~!i*lM<X<f)hE4C)H80KPkR#9+~G51^sD{=wCP< zX>)tR&mX3F#IKAm26!>Ut0$sBVrU9<XFtr&0Jz}pF1I7>N}(;kXgjL7S)IV_UD6w7 z)}RqYIE>~em`*0)(W8ufIHFF^ZdgO=LFPmQryJ352CRAj6!~dJ>G8!;_KZ>p6X;*` z!xC(OKZPHIo8Gj6VdD?~*z47jDobgX@u!XP$}REkGRnhfqF1RyL-*Htpx_SH4hjY} z1Ym5{E$T48VpP)=PHZrq^%slNQta#`lBGSx2k8b)<RV5dIlS@QmD~nD@G%y$Rry&8 zIE0*3tGx`vhw4-X<`ePH=C1BhC16v^VdwI}b+HBWF!<XdJt9oTnaDrQKcnqGzM`JT zGD(`Z<`9Oc;(#o{x6+BTMf`e=`T6-l#2`5Hw`g@l^3MlgyF#ohIN2lTK<>fZzenX& zf7?OSMnQ&5>aRcmwDS2W)>H+{4eez<6R{Fe8n2DcFONUF8nBmZB&vmREv^KtiAR;? z?FkuG)W6&cBVQsdlx+ZEj3crUoDtrXyTY$JqdAA|rDbBIpaSc#cjd^=_gC(ib#ou$ zhkT+}bcGSd%=;#g_8Db%auO&?-G*LNxW?#U_VqtE?8^?!$D7Qx#ny6?nbrX<um@nh zWwUdkFw-X}tWqnDQL8c^>hy;a0crQby8^KzX!*Vr+?N<78=sg;M_aisf0b?q2NQ9T z*z$a<-2(s^^O7)Mml#27!tW=EQYInS-{rx0r-f@z@TfJ%DH!&@U+ulQ{%YtD30TO! zv@P9r!8B97s@nvdXsWCs{&uL7hOBgW|Epe7CxX1+`C(foPgqROyIhU|$V)E^?;B{0 z&Y3LQP%G699o3B&<mfyi_`0|lB$ra~hJsA$u)6vcHqB2$zz>MdEys4;B`jb5jL|9m zHA{U0wzqu5juX(t@Py`J`*i~`qu#G*L%I;D+aJoQd|UWOIa45bso-0pNlNU$pnzYj zLSyf>jPxtk7qVWE|HC7<8pRVTVFM0*1cEn3AqHs}0Tp>-?c43ugyr@AL+pJ~G<N;_ z+{0q*?ucr#N@!30J?^KsK(1m8OT7f&kj}f~x_(Mdzr@em1Rk&yx|+qc^jtGYNZaYQ z*W%;&cU9?2_I-m{ftw$cZv$MUhhB@cC1$31WBRtWVRF1@X-|6kglIg78c19e2<lsW zDbQ<gzyWcD@gXFv90Q-mb=7I+>60u8I2%I5u|a~iPlQ@ZlvNS#v7Xv|^=ST#nX3?{ zG%uf-@dOfK9oo^guz*V;1sab)a~7I`I8)Meo|FXB8p1qp!gi-e`kZmrO<5E^JUvnl zws>+{kaXHm%!Zt^zw*_vdPV$9tLrzGWho0fIKuwNFDQAg-PNTZD)GvSVAy!l&)F=( zKk=MNy}?>j#ijg#Sv!oS)CPL2@H+2NQaX8?YxpF{D4?OnfV$KY1hPB{9Sf%Ccvi~E zW3$@8;k7c@=1iz74fZXJJ(3_n`~U5FYNRtc&hm+;&T|$jVzBzY4qR)IdK`Q`3?ZsX zs6W4PY(Zy{YiOp20lI#U#lCmdLELik%e`vgPoeA2EYXhhCEW65Mqj{S(gN_W!Zs7g zl~;m~(ZGqI>l=d{xLu!5z=M5VXodz)d8mW->hobfJz%TdH2Sz(PWEXa*Nv|hxa&he z$FGth0gwOkPj6rM$tXR#omy@$U-MIjbYp^=I)m*wyC0p^Hs!PTq_=Idx<Xp50uH^$ zVf9LvGmL9`2T~8LXT7$Aev4cTmCP6Yq}tt{eJQhVb`0tPLJ(MSdlnY_pP5Kn4ynIq z*C_-I24{#zE7WK02hn<6qXA$o<rWNrpB&%&S{;&Qb8Om9Nk(!|MDKKt{bSwCP9JW} zV;Vg>f*#1Syw8xa2v>@~h>CWh=GKLp{GFL2WaRYa0BL2UW#M%Mz#ZW89O3_a=OS&3 zYL>O`Gbk^9t`m?RX1Ct#lup|pGb*Bn#UAN+or+V0d_8InvJGL8nYL%g1r&_6`=>vD zQ^}MnBDrNK?`|QY`YTX@)=9y5Im;Y-V;gzp4X%=q;FcjLg>MnXd?M_P=F6L#@a~ZO zsPt+$I9V!xlw0_c^iH@`3!nf3ap%x=2dTXMh72#BxpI+CU|5x=BiblVa3|H=!|frZ zI{Z3oZI$n}hx?}*4w{qFQ&n<XjsL}?MLkJRCvzwQV1}{OMFLB`*&@2vBN*qXtX$<8 z8-ja@%({>$)0$!9w4#I<Qr=1P#^wqCV5_sONui>*Tp*8hi+jLHT150$wL*Olu>yM| zmp$_?RugLiC2-YSqkFl6Tk<p4+kxtNR-e_Gr@7>xI|(O(tD1uN?-T$yq#&jirFtIY z#QaKM!eE5Jh#?T+d30UhMq#SYQdlJ}HI*z@MG{FPBSE1z8izRP52?I7pq{<Q$yYxr z7!&0_gSa4D(#SLZF;9Ub-QQAV3r53UU<6_;lbP%D6jn(o6@HC1%EQClywmqjMdJLs zbLELv@epGp1p@l4x=|d=D&8rs6XqJA8iSI-a*@el!v}i;n)o(hGmrEMXG;liw(gO3 z-(qP*0z~kPZ||gbf(%f9S20I}_h#F!gZ3H^v&N(VC>%XW2-uFiGE2Gf#$r27N-?da zVd<o@Y44)Dx$%1%%i2zLl^|auE2{eGj0HH(gMjZ3BHWVEcs1@_C!|e^mi>)f^Iau! zoRpv@^w*aMy68QRhX~s5Y~M@#RS}NLxDfxIr-^DuD#W+%gq1ztOPZ94QpFT3Dj=gk zzjU0zoTQ(|(gzl~tcy~p98li06VGP>9A_tr62;v$_W?UjI*pDG!zsAhn~^uhd<jrq zGu#qOI>T)@^G5nyo*yHNr0yDHE}m(_0iGjs2mrzbf^_b#%lesm<s)^wfxwHBnWzSd zAN&g?KZ4^r78=Jg0!tC*k(Cc0IZ`LO>r4+s-ogNYH4!~!J@epMF56#;+Vxc9HtkOT zs8N+!`p7&9!A&E~z`O-YbueHx0I0KL|BlH$X+cx6$`5ia_BZSlhM%c;P5-RUe}8L- zO$w*yeUIEMg$jRx32uzlCsLu3QCe6m!HH?6uh5b_#Je_Be^&l5vf8(0Du2tkFNy#C zILkii!`hYZA%^qLkyi29X1@M;NPrCSO?0-^?LjVm`wt~y%8ozHfc)ezh0RR!C<fGp zn94>lX^ess_#8VbqlL?!KA({ZM^o~O4{)Zx^9NgBotAHF?tMI}^3MssoHJ5p!;B8! z_-k$#oR0%~;I^hfh1330<jL~TSj!8Axqf@1lT_)^Z)h4~6K|?FxK_6mkzZc*0@Xrn zA}pV<G;c+0*nz@<aZw9NFg|Fl`%%%e;N-RR;0ti^HQTFVamC4*C#!=C^1wMnUZ>_d zQfm~Nle+}-uH<S!{3Y>cYIXZJqGT&XJXMm#o=K+AxE#&0WcEJ!Bx^;<m_0S)nf&|Z zoAwR`BOodzZTmFyTv#huaJHksaLkqN+<;zy{FqE%TekSbPGcUOJrt>fsRl<~Ir|0* zw}#+Krg^5MA-|x!o0G$w*}}f6_3fR8Id)B_u;eIt>$Ie0MON`hgB8ari$t*r3O+52 zYJZrB-xMLOevm}-&MD$hfd;sFPV2M&hs^ciPUsjCnFnQEIYjaxAhG=^wxtto%yX7H z&CZ}myeR^Lz)czMGmU&snjku8O+;67fqEC8CUsT7am>Of$p*Iw7bMLl9;o3$W=T1M zASpSNE}T+>5>WH=@kK4_rYK5i?>UcG0z<$0oe2}2-w|t(g`_tryj(Iw_d$Jzyn#x9 z2lLsnRBdEbl5x!e0>2c;;$mtu0X>D4Qj~Q{lq~sb+A}92QTF>&$C{L$ysSo!9FcIY zYUh%yi`TWSYus7!wT*+?iDMi9Q&_5qvZuCF?G*=3(zeZc|K$l+Csr~3bFwY3?GQb> zA1y!;_y{MrnlXaDfsn_pyicPLuj1!Rbr{KaN!h*-i%D}sP^Y9#qXz*OZJH@RBojUb zCOfQ+=zy8BC>Akt?dWLvBz>1fEF~8F{+Xy8pSJ{3q8|Smvo{qluiI<gq`nGhqyWHJ zvYl9XAtZ$DmA5reD8$y5p&8mre6$J*3_>lTeD)iH>d}s^!7b5HOdC2$*O+fF@Iq$Q zdh@BDzai}M37s1!p(@g;V)V;P$LGuWXNGgB3m6uh^>%8bej;1Qk^3t%gGVqRSI+V% z?5-d~1fNzw@>!oP+~R1bT!##>rQIqf^5O4ekvc;>wsH|&N%y%y?-rGkw52-DJql;< z6Va<9MAKxyLM2<+FyF1373T3f({^q-SHoZ+A+C0U3zNfZ&mJl%z!(9ww^smeYuP&n zh$Q*F7+}9EL=zDnlw*a@zN~Mgrk)Gnl?W>5Gta;VVO{nh%cgG^#w|(M0lKnHi`BW; zV!mO?!|L!@gnhn>*WsWCUyMk{Y=KIZO33B37L702MZ60R03S7Rp00S+lIueRW6s#~ zVxmj{j4{A@VcYX7p0W|Qk;Qh&=0MrKdCuYPs7(N<Mz;{T4@$<DyFX74{v0LS^`?6F z)hraK2qVm7EIx6Xsd89M2Iy1W(<eXb+7#b=;%yv|w%?d9z;9T0!d7%VEST2G&d@Bz z5g&pL^0n*@N)V1&&<-z`aaDDxV=`L-Y7>63*Yk$@CEU!kgkNl7p)p^V({9l?b7?8f zB-6=vc)T<aEeiG<BPlq^VhtN+lZRn4p459{ey*gtT7W7XISgPq9!s8#J|r_y#@ZW> zXSb4cc7~Jf)%Q;tF?lovO(z<SbF)ecgJH+-wX4$mNNinIbNPcnKnVe&=%rc{UGwX; zo%cTe8NOV={e#ocq}v+@_-tQ<@1LY}Odb+-^1zU9uQfh&N&jK)Xmc@svq2*;+fD)u zCO7%e(2NXTmrT%{d2?6Gla&hLaailduMws7ucTIRyfObZ5(2y%c{bR0a%O5beA#eA z@O{3=Fuf!w+{yO4^u?w?hUNMF+rlO?h7bD~;4JK3{sIpR{e408^YkcT+R@1T=+!wK zhI5H~q2)rJR>4|bK8zIO<UyP%3b*%-6uHhs=shlaMm7046YC0-!SJhJ5kJl)79d1Q zzju8Wq4I9zu^M#E-*3PJsHjidimIvaEsO?&h6CSA_+XtF16;5_9@z`0{-^TCOiZlS z3M_m*4OP*be;*h*^UB%OZ}MicW>EWnSXxEyn)nmvOtzKW^IDOy!WFM4WLFD4$J4j& zRGLRrN4w3$vDCKw{p6MWn{@KIE9%({38Eb{qVeqpt%2-WFa73$u}d!qYOjL<b=IjH zP-URHP%l-X$rU8-T>4Fvm&(ZUSU>c1kgmk#7s(|=*>efyuqY({Xpp9_%#I?zRZUst zCb+#Ei~ZN!yy4g8>M7_22EZq7CJWe9aO&*YDmk>{{Hz*K1XlLTy`D)U@poS+g`dx4 zQ0~X=f2UWS7#fSkTce@qy;{bRGeXJ)EIv7{>)!=<d!BO3`m@#=(PB{*@KI{2Jd}{b z=PZ13m)W(GTbLv4Yn1Nt4-D$W#Wy!--CA<uFVUyr^CK2#6cWfIet<qLwP9|nCUx&s zcxNqn<kkzSft_`4maC9?Zf`1JgYj<4gagm%R1XRMWy=hB9^5&&ou(4a-=OFLPgSnD z{F%AhjneG*HTMIJ3ZR}7SWpuT^h>n5XV2TJo=2JRGq+ssRBkyltQuHv1odta*5|@p z@x2TrX=vwE()@kOZ!3jfqouwoa!6n_P9hasfXMef+4DCmYQHAg{{@L14&8p`jrT3Q ze&%LL>$h?#-k;+<m$a~h;xkt?hj9rPVCf59jcvn^%vNX~fk<8k%zhGO`^&p-YJ7yh z8e=MQ7eLgA3=hrutQ6L~07X0Ad+5=(F(27cV=Q`qxImb)Z#q9WRJ@)i7G}H0YSPeE z*PX?Rczu+lZE~^S-!4ig*TifgfM7pftwbOi_VJ<TJR#oGPa544tfmYg0HBk?Sfu$^ zu>UB1d6VPe_mv-}Pq$HI=5qL%>y40}s*{jn#rN0?P#79d<T9yT{eA+Tk6<9z$4ZZT zLN)vtK-A1wmopny;SSgYMf9kYP-kb3`#i2hV(J4~+oqImk8k;WE7vWpOgn$njP<C7 zn^Jz_;gq-eYaYECHc18SN-yP}sO`XPQ)_mOEpz!5F$RxQoA6&;cLTi2#kz~|*!iBH z4Bk|!t_3F#^0JqAP;}(}87O|hH&Mdfk3+)!fU?U3*B|8uc)(UHc?mBw9?E_6&h-zX z_1iBRbUt`HAMXQ1e(Z#q#fn!J`}bN@Ji%G;rIZ{v7RJ2q4>4@grTx}8;~NXp|NEBJ zL0jiJjEO!HTBphQ!Y}__fGZv$LUh^ucoASwdqN+uR>}IIZt9dfFGPT~4<{)9TbruD zOopWV>k0`55hmu8#nqpA!*56xA>bT_!JPqtGb9c*4HXJf4R5~O9RGEUTL1W&WQ=m& zzbdf|*oin^?BUhCVP$K>hsxJCpVbHmi2{c0NjFQ$Zx@h?4nfy%Q}yFisU;{585;Hz z4#)fcThf5z!a^;1cIPn&y8)SaI9~F<uQn4LyA2dGM9%YUD@7A^aT!g#3&52Y?kv=A zd<eigv;s)DqFra-I3^Jp09T;-oB)?F00;g9smS>b@{5HY;2Idt?KGFgSQB-VKL1v= z(Y~Y<Fl|X0ug~5)Utk2fd_zWrW`+a3U1;tve2Jv8nDCFluyebV{|!reCz;Mw^o}xc z10_WM@KHC4MZ-M%<PAm@kdhhx=6F1;O*)p+dgeFq<6Zx9fG|M0DPd<n)d0^w`0%%X z#eZZ8&X%tD6b-q~37#6=pZU)?&G+TY#J`m9x4$<3-$G3__Ro%(`%1Cyeog%M!H1)a z{9QQ9{h6xm#FwidGJP+*r}jFmIlyC(ByvUezu9H?gUP3P=^Js{@4p;&1fEKmznynn zM1?%K|DVR+JpGSEHq-&qZMn17%f1&IBww5v+(ZGoFJZu@;@xqg=VkX%WIO<H()GsL zAoyU$>%K*#Ax`ohO|Ec1Xw4CI!e$8rHbL<E$6?zdbX5sp!z)<$7V?d#hQC7s@=I~r z0<}WfurJ9BOvzqxH9%`GpcK(z_%$+_w}4Ksa^Vu@gx*syGWXmL-*9GlEePyDrn_jk zpUrYl_`kuWkX?FURqA^ZYZb!{GJ<8~*BBTq-#3$lA1tEQ?Cxho0Yr$H5Pmym0F6iY zLzMt7a2a+Npez3k7&Oat@dvjr0#YM|NBD8U^@2&rIrBB={ZQMY2G3T2fXw6Q&l2B| zU5WR6&`Sw)2#=XApnj>|FECo9GUdY4Ba=zUkAdq|HV<V4+~X+WM#p0z3!FoD;E)+V zrcSqt&90%y+=2P$*x*hTwlZ=V0==1S=Xpp3Fxn-dmRu%YL0}PzAO>#1;{Qq8)gnsK zjSv^u33+jq&K5oB{=*SJuqvn4x8oHCJ;DS7yrqIcBqrcnbN}V?bXL1f!nN?2C+-)p zbDs~C0!F@jR$6&R0GzrWu(m4y#**(-8(tk*oZKxyLP2sf0z$DeY)&Eta_plN)fqEv z)=F`#WE`Q)&KiFf+>Qyl(y~&2k=3Pb<7xg4CG%QzB?C8Eie>sbhW(Anh1LIsWkTCp zOVM{c)!3nNxZZyv{CZYOv49iuE7>^l=tpvZ-s74kaUlcmLR7#Cd5~L{@hS%nC!F+! z(NYBkK~|?&n?{y@EN+Iu61-f=YPTe>i2jCFF>w!G<@P;z-2Uj#t7F?!GjS*xzG3>6 zw`RL}%=xk+;ai|d5Q@|y4q9<&*tc_&S=&8Hs(Kx8NSJwNP4&~`&#PAhlWku=4|pd8 zl15<d)noaSlviszfdYXV<mHHRb=PFN2BNgiXK3ii6}%tXC_z+qEuR6@dG)U@XGTOl zkG^_gHl8bzdUX*z96*jWj&;|0y8#F(pfYyKeTr?K!g%w~T1cohZ%I59NM1jE#!5(4 z)R^;>j*lZEwquz^q$1*5PJLfEpR1+bP`egzDnl!!q4mIRy-`U-za^wyyZsfFr4N*w z$%iewh?@;q*63e+9j?=4?2BefGC9FLtHs86{UAZj{JaCfX7w%>*zyB*)F_f+^Dwqb z1l&-y5u2|w^1>IwW<40RASqgOto0KJt3T0&A!3visp_!K!-TAkt}yAUC}PD8ewaRr zJ%yi#%)fm^5leRVwQLG#hH=VAwv3usbGRH84+8arq<#4yGK41psP=!grkhE89GV3W zt$#vFqpsOce|<$UL(FDHAGqGxU(<a^*7pMMO~~xb4vNSfpaiWjZ^i_jEedgvb`bK? z&z&?TJo&GS04S{*;>w4T0l5@_U}Tb<&jSzy$0O{b_~VPJL@J7r-Y`N3((mV;>rfD& zUMk5DpI(msC(aBa5wAk`4-K~4yjgPiV?Gu6<Rjsv!rkgX2|iFi0JI#$QWhmbkNPsX zD8Gt|Dq~P|69RbB;lfXI!VR7<x4}(25^hrciwT(@T-B81lRW|W43n%*b4k}vfh!P? zz-aTB59e4pE1kvwGh4M^d1nim-~b(th&bU-9EDq3#0~I5)@%nw(2=d$*5zQ#fc_9k z1Ho6a7IqSDVdLg!TiEmj!BJ&-D|8^sHak2C=nRGPyesFDR5iw!(=HABs5b6pyAOIF z_X|dzc)cycgZWX|Q_rtXnF>LeAceLGW$Ov;qz4_Wueg4aP8P8=Av+VjfIdhdkbgjy z{oBvKG!2lPQ$5<wB(L{6h<8HiG#a@=v=k;{h8lR{r>x3%+;)bFHTLdDS6DK?P)tMv z6Xr*i7|awv%@ZNXk*s47gxjm0@XO;5J-%i%4UNn_!80;>;@mINc#n)k0}<~ugl_f6 z>cU}oVX~M~0(m%92j7q#<3MMcQ|6xtxv6s{KCYkCxM@_Wu<?f~9ia}S6P?EN2UPwy z)#zBAGIrA2(<OIVgGG7~7Wdzs5=FQJk3rd6a^tL|U!o~d$*+O-Qeq6R*fZ}5l*nE# zVW|*p=X08h&tHRhKS)c8d=SJeU@sO2=}>x~K8|iiEnF|dYxwh`ug@z2EZXLg9PvHw zKxt*{p-tlN-WdCJMkPUtAl&;xVOJ(FKB1gTBhj<fML2Pn2jnSR%4&z4sYI6N=d1^= zg!sx=KA=&ctBeCKaQ>hHDM<}<4Fb-^4H-t;nuWY%0uxPh5fgXemgMKpEKgQY8K0Ke zO-PIDP6{M`5KA`RYJCt@B|z!dbU<<2bdp_1wQozU`OYEM1`3~L0?tU1vtyflpU<?@ z@+oC1eV{BSC*JrZu46!}Xi>-nRK?^zp{>mLEmXK=Ou38xB6Li)GSncQk!14=u2r6v z-F{p3deS64#Rm+K+aNuJd0FZAl^qsUVa&+V-ZHma(2@Xv6lKxiLY$WcOlPuMaw=?M zo;pwB2e&>EBmzx47px0ZfBvdNVQ=B~tgNTtfS|K8$xLLGwybkwPOt+lK(eX+?tLG# z&qnTS$Awm`xgP7C0m#xFTa7Y;aB$Tx67K{dO=dH%)YDf0Pt|=yL~D&^XHdcl;~Ps0 z&Lx*qog|y=jCANIeQ6&R*g8u#l;W<iOM5s7gg$;Dlu+5*%^z{cZ){}=UZk>OVH`9% zK0A8lJpWooM#u?Nb=!Z{MxuN`^`bx&TY%heVZ+co1c-R!rM4ehmgY`#8CCkCaBRf| zr!79bW5E?oOwVC)nM->2ab7tKchnsAyUJj#mX!7cJanqaAYVOz{Jx91qT`Q7)IPg> zz~`_ExMbI|Smd3VSu$yt4Zuq-3Utx_m%$-jWN)f)%JdTP(<yODpC`rj6|<rqlvf0S zuw(B3E�n?q=C=O@nntgTZ`}Z4kC%PI$Tcuazdv%xT~6!!5rn^FbhX)a{q60MM_+ z{AW}}aNRn+M(*0BG*npYtZp71o(ep09B6qqIkT?cci^sQ-a`@4&A!JVeNQj`;I0~Q z#6BI`ah|Bk1XyB%Aj;u+{)EKeb&)mqHA*+LA~VE3pC?0NU$p=GnX9LZ8Myno#9-v! z=Ln{49zjaW3^W$)vP6(55giUj?L%^weU@PZPTx`sWZe)#kzwOnN>9l3tKe3g5^>c( zVs(1s3(i-<4IGyR3UVjcng)}WEknx|P@Re?9W&jT&}FpQ&KC4mvYKi0-=xt^64@0m zqrW3iQ}wopcty^cko%kTCuC7p=f7?FSn5wP^qAQX(|b(#945KwyNWSnexsO}gJ?T> zt~nh7N41>X%L8`4@5(pUCOx6-fe5F`c@`2iwI{5q1HDi{do1H5>N_}mk=mZ-c5#Q~ zy<x9tf8xulC2Jb7zsrP@lStE-VJlO>i>uZ!Oxpbs&}j*m)&pnoZJYX;Zd&j^IYOp9 zrQwPa>KAGJ8xUQMJXXoA4ar!tpE1yi+sIcvpTyZE%GDkg&dN&?ETX!JXkAA?nI`3g zX<s|2tePS)$xPc$Z>8H^{pwMKrH|(@Uw47oy6SXbH*>ZE)cC5Y?y3ylD%h93h&BgP z8Xn<u<B7PR?ja1q&mPv|-C^cVBTaYkR{~rvb$>L}*WFT~I^Q97Z*pvM+f-6-!tnJ- zCxdan1a;nRjiuomAartrMFRW6VOYsdDMFZBK+lXIhfAtXsixZ@)Ko<H`%TMxk||5~ z{_1bHN!Cw2oG@0zfqr_PKMQqS-Uai@`oRZbL?CDX9n;;&8Kd!;3zhc_;g^4;&F>QJ z8;I<cZ!iBZ^8yV0J;~OfiHC{dt!~>=Ly7?V%%&~3e9dh`Dy1QW4FJ~v`hjy{+usE+ z;I=I_;9fNzx+Z!06;*N2Nt|)@)nCzDhll?Wz}0TsQUmrYw(|Zv9=Z9qZW~e!8b;Uv z;D)CkY6+O7e*x$NZrf5N(v0Dgx2?MBVYdyD{E_R{-1>e7`U-#!w{58skJ%bNc=r#I zV{RK#EgDML0L%pyt^vbF0CBg?sengqOa0{S7k)(6FM5!hF1x+kB;#uUJl*BuB&3M3 zTlNK4{^P?BU*T?IXO(F@VLQxCPv76Gm~<xt*1BzrAj4qn#tp01-siR<l9R%&Uvuln z0onlnMNPj;7XJFKA16oLHl!9btgy}Tg(tuDRxtKO2At)#EhnJ>&_9(-^R`VFeZoo4 zB8f{RFHgquMO=^Byvm5%_M8xg-!hAR{?12kY3O;g4KHkSeBsG&y;Wh@Kwzugw&f_Y z0KTr8`kl#(J~ZUEF%suoe@U{RskoLHJ`Rt$K?wK_fZOicl6(X{Ot=-LX@qT#FKqqh z+Zj_n1H#2{H$7wzfxfBP#y=%5_@ww?REcM~;qp6LP$+(a7(N4cqx5CQ@Q4lEd)MZq zP>X%P({#c%$BmCa*rx0D<p8b%=mON|cab7sGl=fnxcaJJ$l~?J=JLxQQU^-g-vFWy z0C*pOo;tns?*M$u0>1slElIHvXAMHr3fqw+fBlUfo7C46;jIAP4q$PWwl)Fw3}g1A zwv9(q)2YYrdFNkMSp6>XBgte^Df|u>0eG8DxPSrY0jO5@(_sLQ65&y%;L%N+lTGi^ zkivEhKL5mni&V`zm28~C6r4&ntsutQ7|@E@H)9My2tW!z8bA&}hJbwx*vS~%L1ewC zYNhSTb3P?D=~&VfB;S<OiV5XRi|n%*!(svk7-2DhJ}`tph+?+yU<|-CfEh4MGr}YR q`v7bwV4DK$xN}SLfO|iQH~D}0K4~^$jX{zC0000<MNUMnLSTX&WsJiB literal 57648 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 YbS`stXUo;o)c^nh07*qoM6N<$f@1-Pd;kCd diff --git a/res/vector-icons/mstile-70x70.png b/res/vector-icons/mstile-70x70.png index d45b51fb330ce075a3ee49dff048ca7c8a4d021b..820a909e21e217dc1bda15ba4cf110095abfa586 100644 GIT binary patch literal 3999 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 FV1hdw&Y=JR literal 10149 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 WL!lk#sLW8x0O~3_%5{o%ul^5ersj13 diff --git a/scripts/make-icons.sh b/scripts/make-icons.sh new file mode 100755 index 00000000..d9d00d97 --- /dev/null +++ b/scripts/make-icons.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +if [ $# != 1 ] +then + echo "Usage: $0 <svg file>" + exit +fi + +set -e +set -x + +tmpdir=`mktemp -d 2>/dev/null || mktemp -d -t 'icontmp'` + +for i in 1024 512 256 192 310 180 144 152 150 128 120 114 96 76 72 70 64 60 57 48 36 32 24 16 +do + #convert -background none -density 1000 -resize $i -extent $i -gravity center "$1" "$tmpdir/$i.png" + + # Above is the imagemagick command to render an svg to png. Unfortunately, its support for SVGs + # with CSS isn't very good (with rsvg and even moreso the built in renderer) so we use cairosvg. + # This can be installed with: + # pip install cairosvg==1.0.22 # Version 2 doesn't support python 2 + # pip install tinycss + # pip install cssselect # These are necessary for CSS support + # You'll also need xmlstarlet from your favourite package manager + # + # Cairosvg doesn't suport rendering at a specific size (https://github.com/Kozea/CairoSVG/issues/83#issuecomment-215720176) + # so we have to 'resize the svg' first (add width and height attributes to the svg element) to make it render at the + # size we need. + # XXX: This will break if the svg already has width and height attributes + cp "$1" "$tmpdir/tmp.svg" + xmlstarlet ed -N x="http://www.w3.org/2000/svg" --insert "/x:svg" --type attr -n width -v $i "$tmpdir/tmp.svg" > "$tmpdir/tmp2.svg" + xmlstarlet ed -N x="http://www.w3.org/2000/svg" --insert "/x:svg" --type attr -n height -v $i "$tmpdir/tmp2.svg" > "$tmpdir/tmp3.svg" + cairosvg -f png -o "$tmpdir/$i.png" "$tmpdir/tmp3.svg" + rm "$tmpdir/tmp.svg" "$tmpdir/tmp2.svg" "$tmpdir/tmp3.svg" +done + +# one more for the non-square mstile +cp "$1" "$tmpdir/tmp.svg" +xmlstarlet ed -N x="http://www.w3.org/2000/svg" --insert "/x:svg" --type attr -n width -v 310 "$tmpdir/tmp.svg" > "$tmpdir/tmp2.svg" +xmlstarlet ed -N x="http://www.w3.org/2000/svg" --insert "/x:svg" --type attr -n height -v 150 "$tmpdir/tmp2.svg" > "$tmpdir/tmp3.svg" +cairosvg -f png -o "$tmpdir/310x150.png" "$tmpdir/tmp3.svg" +rm "$tmpdir/tmp.svg" "$tmpdir/tmp2.svg" "$tmpdir/tmp3.svg" + +mkdir "$tmpdir/Riot.iconset" +cp "$tmpdir/16.png" "$tmpdir/Riot.iconset/icon_16x16.png" +cp "$tmpdir/32.png" "$tmpdir/Riot.iconset/icon_16x16@2x.png" +cp "$tmpdir/32.png" "$tmpdir/Riot.iconset/icon_32x32.png" +cp "$tmpdir/64.png" "$tmpdir/Riot.iconset/icon_32x32@2x.png" +cp "$tmpdir/128.png" "$tmpdir/Riot.iconset/icon_128x128.png" +cp "$tmpdir/256.png" "$tmpdir/Riot.iconset/icon_128x128@2x.png" +cp "$tmpdir/256.png" "$tmpdir/Riot.iconset/icon_256x256.png" +cp "$tmpdir/512.png" "$tmpdir/Riot.iconset/icon_256x256@2x.png" +cp "$tmpdir/512.png" "$tmpdir/Riot.iconset/icon_512x512.png" +cp "$tmpdir/1024.png" "$tmpdir/Riot.iconset/icon_512x512@2x.png" +iconutil -c icns -o electron/build/icon.icns "$tmpdir/Riot.iconset" + +cp "$tmpdir/36.png" "res/vector-icons/android-chrome-36x36.png" +cp "$tmpdir/48.png" "res/vector-icons/android-chrome-48x48.png" +cp "$tmpdir/72.png" "res/vector-icons/android-chrome-72x72.png" +cp "$tmpdir/96.png" "res/vector-icons/android-chrome-96x96.png" +cp "$tmpdir/144.png" "res/vector-icons/android-chrome-144x144.png" +cp "$tmpdir/192.png" "res/vector-icons/android-chrome-192x192.png" +cp "$tmpdir/180.png" "res/vector-icons/apple-touch-icon.png" +cp "$tmpdir/180.png" "res/vector-icons/apple-touch-icon-precomposed.png" +cp "$tmpdir/57.png" "res/vector-icons/apple-touch-icon-57x57.png" +cp "$tmpdir/60.png" "res/vector-icons/apple-touch-icon-60x60.png" +cp "$tmpdir/72.png" "res/vector-icons/apple-touch-icon-72x72.png" +cp "$tmpdir/76.png" "res/vector-icons/apple-touch-icon-76x76.png" +cp "$tmpdir/114.png" "res/vector-icons/apple-touch-icon-114x114.png" +cp "$tmpdir/120.png" "res/vector-icons/apple-touch-icon-120x120.png" +cp "$tmpdir/144.png" "res/vector-icons/apple-touch-icon-144x144.png" +cp "$tmpdir/152.png" "res/vector-icons/apple-touch-icon-152x152.png" +cp "$tmpdir/180.png" "res/vector-icons/apple-touch-icon-180x180.png" +cp "$tmpdir/16.png" "res/vector-icons/favicon-16x16.png" +cp "$tmpdir/32.png" "res/vector-icons/favicon-32x32.png" +cp "$tmpdir/96.png" "res/vector-icons/favicon-96x96.png" +cp "$tmpdir/70.png" "res/vector-icons/mstile-70x70.png" +cp "$tmpdir/144.png" "res/vector-icons/mstile-144x144.png" +cp "$tmpdir/150.png" "res/vector-icons/mstile-150x150.png" +cp "$tmpdir/310.png" "res/vector-icons/mstile-310x310.png" +cp "$tmpdir/310x150.png" "res/vector-icons/mstile-310x150.png" + +convert "$tmpdir/16.png" "$tmpdir/32.png" "$tmpdir/64.png" "$tmpdir/128.png" "res/vector-icons/favicon.ico" + +cp "res/vector-icons/favicon.ico" "electron/build/icon.ico" + +# https://github.com/electron-userland/electron-builder/blob/3f97b86993d4ea5172e562b182230a194de0f621/src/targets/LinuxTargetHelper.ts#L127 +for i in 24 96 16 48 64 128 256 512 +do + cp "$tmpdir/$i.png" "electron/build/icons/${i}x${i}.png" +done + +rm -r "$tmpdir" From f0b0999f65d6398d8f0cbf8b4d84a0266df59420 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 8 Dec 2016 18:04:44 +0000 Subject: [PATCH 054/243] Numeracy --- scripts/make-icons.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/make-icons.sh b/scripts/make-icons.sh index d9d00d97..ae987bd7 100755 --- a/scripts/make-icons.sh +++ b/scripts/make-icons.sh @@ -11,7 +11,7 @@ set -x tmpdir=`mktemp -d 2>/dev/null || mktemp -d -t 'icontmp'` -for i in 1024 512 256 192 310 180 144 152 150 128 120 114 96 76 72 70 64 60 57 48 36 32 24 16 +for i in 1024 512 310 256 192 180 152 150 144 128 120 114 96 76 72 70 64 60 57 48 36 32 24 16 do #convert -background none -density 1000 -resize $i -extent $i -gravity center "$1" "$tmpdir/$i.png" From d65374f7f9feb599a478cc7a092ee73af63665aa Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 10:31:26 +0000 Subject: [PATCH 055/243] Make the 'loading' tests work in isolation The 'loading' tests only worked when run with the other tests and failed if you just ran the file by itself, because the skin was loading in the 'joining' tests, but not here. --- test/app-tests/loading.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index 892ba852..1c6211d4 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -16,6 +16,8 @@ limitations under the License. /* loading.js: test the myriad paths we have for loading the application */ +import 'skin-sdk'; + import React from 'react'; import ReactDOM from 'react-dom'; import ReactTestUtils from 'react-addons-test-utils'; From 67cf4230ac3bfbe4355539c34ad0f5aa9df8e2a9 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 14:27:41 +0000 Subject: [PATCH 056/243] Fix broken tests Promises are now not being resolved within the same tick, so give another tick for the UI to update after all the HTTP calls have flushed through. This is fairly terrible, but I can't immediately see a better way of doing this. --- test/app-tests/loading.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index 1c6211d4..03a4d11e 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -154,6 +154,9 @@ describe('loading:', function () { }).respond(403, "Guest access is disabled"); return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // we expect a single <Login> component ReactTestUtils.findRenderedComponentWithType( @@ -177,6 +180,9 @@ describe('loading:', function () { }).respond(403, "Guest access is disabled"); return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // we expect a single <Login> component let login = ReactTestUtils.findRenderedComponentWithType( @@ -191,6 +197,9 @@ describe('loading:', function () { }); login.onPasswordLogin("user", "pass") return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // we expect a spinner ReactTestUtils.findRenderedComponentWithType( @@ -200,6 +209,9 @@ describe('loading:', function () { httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' }); httpBackend.when('GET', '/sync').respond(200, {}); return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // once the sync completes, we should have a room view httpBackend.verifyNoOutstandingExpectation(); @@ -287,6 +299,9 @@ describe('loading:', function () { }); return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // now we should have a spinner with a logout link assertAtSyncingSpinner(matrixChat); @@ -322,6 +337,9 @@ describe('loading:', function () { }); return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // now we should have a spinner with a logout link assertAtSyncingSpinner(matrixChat); @@ -358,12 +376,18 @@ describe('loading:', function () { }); return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // now we should have a spinner with a logout link assertAtSyncingSpinner(matrixChat); httpBackend.when('GET', '/sync').respond(200, {}); return httpBackend.flush(); + }).then(() => { + // Wait for another trip around the event loop for the UI to update + return q.delay(1); }).then(() => { // once the sync completes, we should have a room view httpBackend.verifyNoOutstandingExpectation(); From 48ca0254fe50c144781ba25390f3438d391b438c Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 17:13:20 +0000 Subject: [PATCH 057/243] Add signing ID in release_config.yaml Read by release script in js-sdk --- release_config.yaml | 1 + 1 file changed, 1 insertion(+) create mode 100644 release_config.yaml diff --git a/release_config.yaml b/release_config.yaml new file mode 100644 index 00000000..2be2a0de --- /dev/null +++ b/release_config.yaml @@ -0,0 +1 @@ +signing_id: packages@riot.im From f7cd5cb76fe253c870175ef59750648fb5c3a9af Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 18:29:06 +0000 Subject: [PATCH 058/243] Update README to say how to build the desktop app --- README.md | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 6d2731d0..e7e13ac3 100644 --- a/README.md +++ b/README.md @@ -119,24 +119,44 @@ You can configure the app by copying `config.sample.json` to Running as a Desktop app ======================== -In future we'll do an official distribution of Riot as an desktop app. Meanwhile, -there are a few options: - -@asdf:matrix.org points out that you can use nativefier and it just works(tm): +Riot can also be run as a desktop app, wrapped in electron. You can download a +pre-built version from https://riot.im/download/desktop/ or, if you prefer, +built it yourself. +To run as a desktop app: ``` -sudo npm install nativefier -g -nativefier https://riot.im/app/ +npm install +npm install electron +node_modules/.bin/electron . ``` -krisa has a dedicated electron project at -https://github.com/krisak/vector-electron-desktop (although you should swap out -the 'vector' folder for the latest vector tarball you want to run. Get a -tarball from https://github.com/vector-im/vector-web/releases or build your own -- see Building From Source above). +To build packages, use electron-builder. This is configured to output: + * 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 -There's also a (much) older electron distribution at https://github.com/stevenhammerton/vector-desktop +See https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Build +for dependencies required for building packages for various platforms. +The only platform that can build packages for all three platforms is macOS: +``` +brew install wine --without-x11 +brew install mono +npm install +npm run build:electron +``` + +For other packages, use electron-builder manually. For example, to build a package +for 64 bit Linux: +``` +npm install +npm run build +node_modules/.bin/build -l --x64 +``` + +All electron packages go into `electron/dist/` Development =========== From 6acbdc442d3b74c88308e73342c2fa8bb7f0832c Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 18:29:54 +0000 Subject: [PATCH 059/243] Actually write latest version into `latest` --- scripts/electron-package.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index c8dc92f9..6faad2bb 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -72,6 +72,10 @@ echo "Building $version using Update base URL $update_base_url" projdir=`pwd` builddir=`mktemp -d 2>/dev/null || mktemp -d -t 'buildtmp'` pushd "$builddir" + +# Figure out what version we're building +vername=`jq -r .version package.json` + git clone "$projdir" . git checkout "$version" @@ -105,7 +109,7 @@ cp $distdir/win/*.exe "$pubdir/install/win32/x64/" # Packages for auto-update mkdir -p "$pubdir/update/macos" cp $distdir/mac/*.zip "$pubdir/update/macos/" -echo "$ver" > "$pubdir/update/macos/latest" +echo "$vername" > "$pubdir/update/macos/latest" mkdir -p "$pubdir/update/win32/ia32/" cp $distdir/win-ia32/*.nupkg "$pubdir/update/win32/ia32/" From fe574b008bb29b134a916213920641cf87dcb0d1 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 19:05:25 +0000 Subject: [PATCH 060/243] Credit aviral & other options for native riot --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index e7e13ac3..308213a1 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,16 @@ node_modules/.bin/build -l --x64 All electron packages go into `electron/dist/` +Many thanks to @aviraldg for the initial work on the electron integration. + +Other options for running as a desktop app: + * https://github.com/krisak/vector-electron-desktop + * @asdf:matrix.org points out that you can use nativefier and it just works(tm) + ``` + sudo npm install nativefier -g + nativefier https://riot.im/app/ + ``` + Development =========== From b4e362d70081b4627194b38db482dc1036a20468 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 19:14:37 +0000 Subject: [PATCH 061/243] Bump to electron 1.4.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4fed9c8a..00b453b8 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "build": { "appId": "im.riot.app", "category": "Network", - "electronVersion": "1.4.8", + "electronVersion": "1.4.11", "//asar=false": "https://github.com/electron-userland/electron-builder/issues/675", "asar": false, "dereference": true, From 5414b5d189e91b762778e7e214bcf929b9333861 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 19:58:33 +0000 Subject: [PATCH 062/243] Released js-sdk & react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f1c46b76..5fe81cf9 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.1-rc.1", - "matrix-react-sdk": "0.8.1-rc.2", + "matrix-js-sdk": "0.7.1", + "matrix-react-sdk": "0.8.1", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 598b841bf761a98518de42211b04553fd2616f8b Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 20:05:41 +0000 Subject: [PATCH 063/243] Prepare changelog for v0.9.1 --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cdba7ad..806113ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +Changes in [0.9.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.1) (2016-12-09) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.1-rc.2...v0.9.1) + + * Update README to say how to build the desktop app + [\#2732](https://github.com/vector-im/riot-web/pull/2732) + * Add signing ID in release_config.yaml + [\#2731](https://github.com/vector-im/riot-web/pull/2731) + * Makeover! + [\#2722](https://github.com/vector-im/riot-web/pull/2722) + * Fix broken tests + [\#2730](https://github.com/vector-im/riot-web/pull/2730) + * Make the 'loading' tests work in isolation + [\#2727](https://github.com/vector-im/riot-web/pull/2727) + * Use a PNG for the icon on non-Windows + [\#2708](https://github.com/vector-im/riot-web/pull/2708) + * Add missing brackets to call to toUpperCase + [\#2703](https://github.com/vector-im/riot-web/pull/2703) + Changes in [0.9.1-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.9.1-rc.2) (2016-12-06) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.1-rc.1...v0.9.1-rc.2) From b9ba795cb0b1329520ed4c374b7bd9477b358277 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 20:05:41 +0000 Subject: [PATCH 064/243] v0.9.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index affdfe4b..99e34b45 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.1-rc.2", + "version": "0.9.1", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From c80d1c15d23d73776d6c7c0c28caa9a249cd777a Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 20:12:37 +0000 Subject: [PATCH 065/243] dev js-sdk & react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 99e34b45..73c4b467 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.1", - "matrix-react-sdk": "0.8.1", + "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", + "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From feb3a13a71758ee3cf38e5b9d4c50fb6975789ec Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 20:23:19 +0000 Subject: [PATCH 066/243] Get version after we've checked out... --- scripts/electron-package.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index 6faad2bb..1403b1b2 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -73,12 +73,12 @@ projdir=`pwd` builddir=`mktemp -d 2>/dev/null || mktemp -d -t 'buildtmp'` pushd "$builddir" -# Figure out what version we're building -vername=`jq -r .version package.json` - git clone "$projdir" . git checkout "$version" +# Figure out what version we're building +vername=`jq -r .version package.json` + if [ -n "$conffile" ]; then popd cp "$conffile" "$builddir/" From c6dbeee24589a346114c82a8a74d7c2406fd9b7b Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 9 Dec 2016 22:33:20 +0000 Subject: [PATCH 067/243] ico needs to be at least 256x256 --- electron/build/icon.ico | Bin 90022 -> 104772 bytes res/vector-icons/favicon.ico | Bin 90022 -> 104772 bytes scripts/make-icons.sh | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/build/icon.ico b/electron/build/icon.ico index a1a73e6cfdc4befddf4b5b9f1afb9429d24055d4..8f8ff94eea677e966568bc2a264d1c0fe708dcf4 100644 GIT binary patch delta 14950 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 delta 83 zcmX@IiEY__R#yfFMg|rJ0Ra%Lz>vYhz~IKfz@VT2;jaLSuLFuXI6(LsP7DlTq6`cT U4NyJ@BST#{Lu2UHP{zb~0O^_xEdT%j diff --git a/res/vector-icons/favicon.ico b/res/vector-icons/favicon.ico index a1a73e6cfdc4befddf4b5b9f1afb9429d24055d4..8f8ff94eea677e966568bc2a264d1c0fe708dcf4 100644 GIT binary patch delta 14950 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 delta 83 zcmX@IiEY__R#yfFMg|rJ0Ra%Lz>vYhz~IKfz@VT2;jaLSuLFuXI6(LsP7DlTq6`cT U4NyJ@BST#{Lu2UHP{zb~0O^_xEdT%j diff --git a/scripts/make-icons.sh b/scripts/make-icons.sh index ae987bd7..c77064ab 100755 --- a/scripts/make-icons.sh +++ b/scripts/make-icons.sh @@ -80,7 +80,7 @@ cp "$tmpdir/150.png" "res/vector-icons/mstile-150x150.png" cp "$tmpdir/310.png" "res/vector-icons/mstile-310x310.png" cp "$tmpdir/310x150.png" "res/vector-icons/mstile-310x150.png" -convert "$tmpdir/16.png" "$tmpdir/32.png" "$tmpdir/64.png" "$tmpdir/128.png" "res/vector-icons/favicon.ico" +convert "$tmpdir/16.png" "$tmpdir/32.png" "$tmpdir/64.png" "$tmpdir/128.png" "$tmpdir/256.png" "res/vector-icons/favicon.ico" cp "res/vector-icons/favicon.ico" "electron/build/icon.ico" From 119e03b64f567e93d0e1e6235ddec9337efccd5e Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 12 Dec 2016 17:24:22 +0000 Subject: [PATCH 068/243] Get the update base URL right and update the text in the README. --- README.md | 4 ++-- electron/riot.im/config.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 308213a1..9a410529 100644 --- a/README.md +++ b/README.md @@ -108,8 +108,8 @@ You can configure the app by copying `config.sample.json` to when a valid location has been entered so it's not necessary for this to be exactly correct. Optional. 1. `update_base_url` (electron app only): HTTPS URL to a web server to download - updates from. This should be the path to the directory containing `install` - and `update`. + updates from. This should be the path to the directory containing `macos` + and `win32` (for update packages, not installer packages). 1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display encrypted file attachments. This MUST be hosted on a completely separate domain to anything else since it is used to isolate the privileges of file attachments to this diff --git a/electron/riot.im/config.json b/electron/riot.im/config.json index 8ed2a3e8..e129e5bf 100644 --- a/electron/riot.im/config.json +++ b/electron/riot.im/config.json @@ -1,5 +1,5 @@ { - "update_base_url": "https://riot.im/download/desktop/", + "update_base_url": "https://riot.im/download/desktop/update/", "default_hs_url": "https://matrix.org", "default_is_url": "https://vector.im", "brand": "Riot", From 2740013625b4084419b8196e7cb102fddae12785 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 13 Dec 2016 10:24:32 +0000 Subject: [PATCH 069/243] RELEASES is for update, not install --- scripts/electron-package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index 1403b1b2..87e353f7 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -113,7 +113,7 @@ 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/install/win32/ia32/" +cp $distdir/win-ia32/RELEASES "$pubdir/update/win32/ia32/" mkdir -p "$pubdir/update/win32/x64/" cp $distdir/win/*.nupkg "$pubdir/update/win32/x64/" From 8be72e6c275a9a93b75b4aed412ab3a7e499d848 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Wed, 14 Dec 2016 11:59:37 +0000 Subject: [PATCH 070/243] Configure olm memory size 16M is somewhat excessive: configure olm to use a bit less. Requires changes to the olm library to do anything useful, but will be harmless without them. Partial fix to vector-im/riot-web#2726. --- src/vector/olm-loader.js | 41 ++++++++++++++++++++++++++++++++++++++++ webpack.config.js | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/vector/olm-loader.js diff --git a/src/vector/olm-loader.js b/src/vector/olm-loader.js new file mode 100644 index 00000000..a62d05b4 --- /dev/null +++ b/src/vector/olm-loader.js @@ -0,0 +1,41 @@ +/* +Copyright 2016 OpenMarket 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. +*/ + +/* a very thin shim for loading olm.js: just sets the global OLM_OPTIONS and + * requires the actual olm.js library. + * + * olm.js reads global.OLM_OPTIONS and defines global.Olm. The latter is fine for us, + * but we need to prepare the former. + * + * We can't use webpack's definePlugin to do this, because we tell webpack not + * to parse olm.js. We also can't put this code in index.js, because olm and + * index.js are loaded in parallel, and we need to make sure OLM_OPTIONS is set + * before olm.js is loaded. + */ + +/* total_memory must be a power of two, and at least twice the stack. + * + * We don't need a lot of stack, but we do need about 128K of heap to encrypt a + * 64K event (enough to store the ciphertext and the plaintext, bearing in mind + * that the plaintext can only be 48K because base64). We also have about 36K + * of statics. So let's have 256K of memory. + */ +global.OLM_OPTIONS = { + TOTAL_STACK: 64*1024, + TOTAL_MEMORY: 256*1024, +}; + +require('olm/olm.js'); diff --git a/webpack.config.js b/webpack.config.js index cad7b9a3..3500fedc 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,7 +14,7 @@ module.exports = { // (we should probably make js-sdk load it asynchronously at some // point, so that it doesn't block the pageload, but that is a separate // problem) - "olm": "olm/olm.js", + "olm": "./src/vector/olm-loader.js", }, module: { preLoaders: [ From f5bd8abfdac612b4fddad343b92c31db86302b33 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 14 Dec 2016 15:41:15 +0000 Subject: [PATCH 071/243] Support room dir 3rd party network filtering As per https://github.com/matrix-org/synapse/pull/1676 The existing local config system still exists and is used for remote home server directories (since /thirdparty/protocols doesn't support listing remote home servers, and also because people are using it). --- README.md | 3 +- src/components/structures/RoomDirectory.js | 10 ++- .../views/directory/NetworkDropdown.js | 87 ++++++++++++++++++- 3 files changed, 93 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9a410529..066802c0 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,8 @@ You can configure the app by copying `config.sample.json` to down list. Optional. 1. `roomDirectory.serverConfig`: Config for each server in `roomDirectory.servers`. Optional. 1. `roomDirectory.serverConfig.<server_name>.networks`: List of networks (named - in `roomDirectory.networks`) to include for this server. Optional. + in `roomDirectory.networks`) to include for this server. Optional. If set, this will + override any networks sent by the Home Server (eg. if ASes are configured). 1. `roomDirectory.networks`: config for each network type. Optional. 1. `roomDirectory.<network_type>.name`: Human-readable name for the network. Required. 1. `roomDirectory.<network_type>.protocol`: Protocol as given by the server in diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index e369a26e..2483247c 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -131,6 +131,11 @@ module.exports = React.createClass({ if (my_server != MatrixClientPeg.getHomeServerName()) { opts.server = my_server; } + if (this.state.instance_id) { + opts.third_party_instance_id = this.state.instance_id; + } else if (this.state.network !== '_matrix') { + opts.include_all_networks = true; + } if (this.nextBatch) opts.since = this.nextBatch; if (my_filter_string) opts.filter = { generic_search_term: my_filter_string } ; return MatrixClientPeg.get().publicRooms(opts).then((data) => { @@ -231,7 +236,7 @@ module.exports = React.createClass({ } }, - onOptionChange: function(server, network) { + onOptionChange: function(server, network, instance_id) { // clear next batch so we don't try to load more rooms this.nextBatch = null; this.setState({ @@ -241,6 +246,7 @@ module.exports = React.createClass({ publicRooms: [], roomServer: server, network: network, + instance_id: instance_id, }, this.refreshRoomList); // We also refresh the room list each time even though this // filtering is client-side. It hopefully won't be client side @@ -615,7 +621,7 @@ module.exports = React.createClass({ onChange={this.onFilterChange} onClear={this.onFilterClear} onJoinClick={this.onJoinClick} placeholder={placeholder} showJoinButton={showJoinButton} /> - <NetworkDropdown config={this.props.config} onOptionChange={this.onOptionChange} /> + <NetworkDropdown config={this.props.config} protocols={this.protocols} onOptionChange={this.onOptionChange} /> </div> {content} </div> diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index eb60c4a5..ad49264f 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -17,6 +17,8 @@ limitations under the License. import React from 'react'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; +const DEFAULT_ICON_URL = "img/network-matrix.svg"; + export default class NetworkDropdown extends React.Component { constructor(props) { super(props); @@ -28,6 +30,7 @@ export default class NetworkDropdown extends React.Component { this.onRootClick = this.onRootClick.bind(this); this.onDocumentClick = this.onDocumentClick.bind(this); this.onMenuOptionClick = this.onMenuOptionClick.bind(this); + this.onMenuOptionClickProtocolInstance = this.onMenuOptionClickProtocolInstance.bind(this); this.onInputKeyUp = this.onInputKeyUp.bind(this); this.collectRoot = this.collectRoot.bind(this); this.collectInputTextBox = this.collectInputTextBox.bind(this); @@ -103,10 +106,21 @@ export default class NetworkDropdown extends React.Component { expanded: false, selectedServer: server, selectedNetwork: network, + selectedInstanceId: null, }); this.props.onOptionChange(server, network); } + onMenuOptionClickProtocolInstance(server, instance_id, ev) { + this.setState({ + expanded: false, + selectedServer: server, + selectedNetwork: null, + selectedInstanceId: instance_id, + }); + this.props.onOptionChange(server, null, instance_id); + } + onInputKeyUp(e) { if (e.key == 'Enter') { this.setState({ @@ -144,18 +158,55 @@ export default class NetworkDropdown extends React.Component { servers.unshift(MatrixClientPeg.getHomeServerName()); } + // if the thirdparty/protocols entries have instance_ids, + // we can get the local server listings from here. If not, + // the server is too old. + let use_protocols = true; + for (const proto of Object.keys(this.props.protocols)) { + if (!this.props.protocols[proto].instances) continue; + for (const instance of this.props.protocols[proto].instances) { + if (!instance.instance_id) use_protocols = false; + } + } + + // For our own HS, we can use the instance_ids given in the third party protocols + // response to get the server to filter the room list by network for us (if the + // server is new enough), although for now we prefer the config if it exists. + // For remote HSes, we use the data from the config. for (const server of servers) { options.push(this._makeMenuOption(server, null)); if (this.props.config.serverConfig && this.props.config.serverConfig[server] && this.props.config.serverConfig[server].networks) { for (const network of this.props.config.serverConfig[server].networks) { options.push(this._makeMenuOption(server, network)); } + } else if (server == MatrixClientPeg.getHomeServerName() && use_protocols) { + options.push(this._makeMenuOption(server, '_matrix')); + for (const proto of Object.keys(this.props.protocols)) { + if (!this.props.protocols[proto].instances) continue; + for (const instance of this.props.protocols[proto].instances) { + options.push(this._makeMenuOptionFromProtocolInstance(server, this.props.protocols[proto], instance)); + } + } } } return options; } + _makeMenuOptionFromProtocolInstance(server, protocol, instance, wire_onclick) { + if (wire_onclick === undefined) wire_onclick = true; + + const name = instance.desc; + const icon = <img src={protocol.icon || DEFAULT_ICON_URL} width="16" />; + const key = instance.instance_id; + const click_handler = wire_onclick ? this.onMenuOptionClickProtocolInstance.bind(this, server, instance.instance_id) : null; + + return <div key={key} className="mx_NetworkDropdown_networkoption" onClick={click_handler}> + {icon} + <span className="mx_NetworkDropdown_menu_network">{name}</span> + </div>; + } + _makeMenuOption(server, network, wire_onclick) { if (wire_onclick === undefined) wire_onclick = true; let icon; @@ -202,6 +253,24 @@ export default class NetworkDropdown extends React.Component { </div>; } + protocolNameForInstanceId(instance_id) { + for (const proto of Object.keys(this.props.protocols)) { + if (!this.props.protocols[proto].instances) continue; + for (const instance of this.props.protocols[proto].instances) { + if (instance.instance_id == instance_id) return proto; + } + } + } + + instanceForInstanceId(instance_id) { + for (const proto of Object.keys(this.props.protocols)) { + if (!this.props.protocols[proto].instances) continue; + for (const instance of this.props.protocols[proto].instances) { + if (instance.instance_id == instance_id) return instance; + } + } + } + render() { let current_value; @@ -216,9 +285,17 @@ export default class NetworkDropdown extends React.Component { placeholder="matrix.org" // 'matrix.org' as an example of an HS name /> } else { - current_value = this._makeMenuOption( - this.state.selectedServer, this.state.selectedNetwork, false - ); + if (this.state.selectedInstanceId) { + const protocolName = this.protocolNameForInstanceId(this.state.selectedInstanceId); + const instance = this.instanceForInstanceId(this.state.selectedInstanceId); + current_value = this._makeMenuOptionFromProtocolInstance( + this.state.selectedServer, this.props.protocols[protocolName], instance + ); + } else { + current_value = this._makeMenuOption( + this.state.selectedServer, this.state.selectedNetwork, false + ); + } } return <div className="mx_NetworkDropdown" ref={this.collectRoot}> @@ -234,11 +311,13 @@ export default class NetworkDropdown extends React.Component { NetworkDropdown.propTypes = { onOptionChange: React.PropTypes.func.isRequired, config: React.PropTypes.object, + protocols: React.PropTypes.object, }; NetworkDropdown.defaultProps = { config: { networks: [], - } + }, + protocols: {}, }; From fc597ba86ead5560f2d4241c3e2359d19ec83127 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 15 Dec 2016 10:41:22 +0000 Subject: [PATCH 072/243] Underscore for private method --- src/components/views/directory/NetworkDropdown.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index ad49264f..2c0b73ba 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -253,7 +253,7 @@ export default class NetworkDropdown extends React.Component { </div>; } - protocolNameForInstanceId(instance_id) { + _protocolNameForInstanceId(instance_id) { for (const proto of Object.keys(this.props.protocols)) { if (!this.props.protocols[proto].instances) continue; for (const instance of this.props.protocols[proto].instances) { @@ -286,7 +286,7 @@ export default class NetworkDropdown extends React.Component { /> } else { if (this.state.selectedInstanceId) { - const protocolName = this.protocolNameForInstanceId(this.state.selectedInstanceId); + const protocolName = this._protocolNameForInstanceId(this.state.selectedInstanceId); const instance = this.instanceForInstanceId(this.state.selectedInstanceId); current_value = this._makeMenuOptionFromProtocolInstance( this.state.selectedServer, this.props.protocols[protocolName], instance From 98cad8779c47b7dabbe1605738fea93e0f609411 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 15 Dec 2016 10:42:11 +0000 Subject: [PATCH 073/243] Add instance_id to initial state --- src/components/structures/RoomDirectory.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index 2483247c..7960b4cf 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -53,6 +53,7 @@ module.exports = React.createClass({ publicRooms: [], loading: true, network: null, + instance_id: null, roomServer: null, filterString: null, } From 901c0e7e41b86c581fb9eade5083bab28a92f2bd Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 15 Dec 2016 14:24:55 +0000 Subject: [PATCH 074/243] Remove unused event params --- src/components/views/directory/NetworkDropdown.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index 2c0b73ba..717fc007 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -101,7 +101,7 @@ export default class NetworkDropdown extends React.Component { ev.preventDefault(); } - onMenuOptionClick(server, network, ev) { + onMenuOptionClick(server, network) { this.setState({ expanded: false, selectedServer: server, @@ -111,7 +111,7 @@ export default class NetworkDropdown extends React.Component { this.props.onOptionChange(server, network); } - onMenuOptionClickProtocolInstance(server, instance_id, ev) { + onMenuOptionClickProtocolInstance(server, instance_id) { this.setState({ expanded: false, selectedServer: server, From 5f7cdb8d425956d84b7e783148d4d5eeb6890524 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 15 Dec 2016 14:29:16 +0000 Subject: [PATCH 075/243] s/wire_onclick/handleClicks/ and actually pass handleClicks false as appropriate --- src/components/views/directory/NetworkDropdown.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index 717fc007..0de48bf6 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -193,13 +193,13 @@ export default class NetworkDropdown extends React.Component { return options; } - _makeMenuOptionFromProtocolInstance(server, protocol, instance, wire_onclick) { - if (wire_onclick === undefined) wire_onclick = true; + _makeMenuOptionFromProtocolInstance(server, protocol, instance, handleClicks) { + if (handleClicks === undefined) handleClicks = true; const name = instance.desc; const icon = <img src={protocol.icon || DEFAULT_ICON_URL} width="16" />; const key = instance.instance_id; - const click_handler = wire_onclick ? this.onMenuOptionClickProtocolInstance.bind(this, server, instance.instance_id) : null; + const click_handler = handleClicks ? this.onMenuOptionClickProtocolInstance.bind(this, server, instance.instance_id) : null; return <div key={key} className="mx_NetworkDropdown_networkoption" onClick={click_handler}> {icon} @@ -207,8 +207,8 @@ export default class NetworkDropdown extends React.Component { </div>; } - _makeMenuOption(server, network, wire_onclick) { - if (wire_onclick === undefined) wire_onclick = true; + _makeMenuOption(server, network, handleClicks) { + if (handleClicks === undefined) wire_onclick = true; let icon; let name; let span_class; @@ -240,7 +240,7 @@ export default class NetworkDropdown extends React.Component { span_class = 'mx_NetworkDropdown_menu_network'; } - const click_handler = wire_onclick ? this.onMenuOptionClick.bind(this, server, network) : null; + const click_handler = handleClicks ? this.onMenuOptionClick.bind(this, server, network) : null; let key = server; if (network !== null) { @@ -289,7 +289,7 @@ export default class NetworkDropdown extends React.Component { const protocolName = this._protocolNameForInstanceId(this.state.selectedInstanceId); const instance = this.instanceForInstanceId(this.state.selectedInstanceId); current_value = this._makeMenuOptionFromProtocolInstance( - this.state.selectedServer, this.props.protocols[protocolName], instance + this.state.selectedServer, this.props.protocols[protocolName], instance, false ); } else { current_value = this._makeMenuOption( From 52cf1f6a4b6537e07c5a495688b900e634294876 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 15 Dec 2016 16:36:14 +0000 Subject: [PATCH 076/243] Missed a wire_onclick --- src/components/views/directory/NetworkDropdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index 0de48bf6..fa16cfdb 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -208,7 +208,7 @@ export default class NetworkDropdown extends React.Component { } _makeMenuOption(server, network, handleClicks) { - if (handleClicks === undefined) wire_onclick = true; + if (handleClicks === undefined) handleClicks = true; let icon; let name; let span_class; From fb08910db377f9108028403c014e7bfa18cf5ca9 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 10:12:49 +0000 Subject: [PATCH 077/243] Read the icon from the right place Also don't define image widths in the HTML as it's done in the CSS. --- src/components/views/directory/NetworkDropdown.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index fa16cfdb..4b6de26e 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -197,7 +197,7 @@ export default class NetworkDropdown extends React.Component { if (handleClicks === undefined) handleClicks = true; const name = instance.desc; - const icon = <img src={protocol.icon || DEFAULT_ICON_URL} width="16" />; + const icon = <img src={instance.icon || DEFAULT_ICON_URL} />; const key = instance.instance_id; const click_handler = handleClicks ? this.onMenuOptionClickProtocolInstance.bind(this, server, instance.instance_id) : null; @@ -218,7 +218,7 @@ export default class NetworkDropdown extends React.Component { span_class = 'mx_NetworkDropdown_menu_all'; } else if (network == '_matrix') { name = 'Matrix'; - icon = <img src="img/network-matrix.svg" width="16" height="16" />; + icon = <img src="img/network-matrix.svg" />; span_class = 'mx_NetworkDropdown_menu_network'; } else { if (this.props.config.networks[network] === undefined) { @@ -232,9 +232,9 @@ export default class NetworkDropdown extends React.Component { if (this.props.config.networks[network].icon) { // omit height here so if people define a non-square logo in the config, it // will keep the aspect when it scales - icon = <img src={this.props.config.networks[network].icon} width="16" />; + icon = <img src={this.props.config.networks[network].icon} />; } else { - icon = <img src={iconPath} width="16" height="16" />; + icon = <img src={iconPath} />; } span_class = 'mx_NetworkDropdown_menu_network'; From 994bc9279fe29a226ce72dc31620fb4a14f7bed7 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 14:17:13 +0000 Subject: [PATCH 078/243] Remove the client side filtering from the room dir This removes the ability for the client to filter remote room directories by network, since the /thirdparty/protocols API does not yet work for remote servers. They would only get the main list now though anyway, so there is no point in us continuing to support it. --- README.md | 26 +-- config.sample.json | 60 +---- src/components/structures/RoomDirectory.js | 215 ++++++------------ .../views/directory/NetworkDropdown.js | 165 ++++---------- src/utils/DirectoryUtils.js | 23 ++ 5 files changed, 134 insertions(+), 355 deletions(-) create mode 100644 src/utils/DirectoryUtils.js diff --git a/README.md b/README.md index 066802c0..b0ea2124 100644 --- a/README.md +++ b/README.md @@ -81,33 +81,9 @@ You can configure the app by copying `config.sample.json` to and https://vector.im. In future identity servers will be decentralised. 1. `integrations_ui_url`: URL to the web interface for the integrations server. 1. `integrations_rest_url`: URL to the REST interface for the integrations server. -1. `roomDirectory`: config for the public room directory. This section encodes behaviour - on the room directory screen for filtering the list by server / network type and joining - third party networks. This config section will disappear once APIs are available to - get this information for home servers. This section is optional. +1. `roomDirectory`: config for the public room directory. This section is optional. 1. `roomDirectory.servers`: List of other Home Servers' directories to include in the drop down list. Optional. -1. `roomDirectory.serverConfig`: Config for each server in `roomDirectory.servers`. Optional. -1. `roomDirectory.serverConfig.<server_name>.networks`: List of networks (named - in `roomDirectory.networks`) to include for this server. Optional. If set, this will - override any networks sent by the Home Server (eg. if ASes are configured). -1. `roomDirectory.networks`: config for each network type. Optional. -1. `roomDirectory.<network_type>.name`: Human-readable name for the network. Required. -1. `roomDirectory.<network_type>.protocol`: Protocol as given by the server in - `/_matrix/client/unstable/thirdparty/protocols` response. Required to be able to join - this type of third party network. -1. `roomDirectory.<network_type>.domain`: Domain as given by the server in - `/_matrix/client/unstable/thirdparty/protocols` response, if present. Required to be - able to join this type of third party network, if present in `thirdparty/protocols`. -1. `roomDirectory.<network_type>.portalRoomPattern`: Regular expression matching aliases - for portal rooms to locations on this network. Required. -1. `roomDirectory.<network_type>.icon`: URL to an icon to be displayed for this network. Required. -1. `roomDirectory.<network_type>.example`: Textual example of a location on this network, - eg. '#channel' for an IRC network. Optional. -1. `roomDirectory.<network_type>.nativePattern`: Regular expression that matches a - valid location on this network. This is used as a hint to the user to indicate - when a valid location has been entered so it's not necessary for this to be - exactly correct. Optional. 1. `update_base_url` (electron app only): HTTPS URL to a web server to download updates from. This should be the path to the directory containing `macos` and `win32` (for update packages, not installer packages). diff --git a/config.sample.json b/config.sample.json index a25bdb11..e6384221 100644 --- a/config.sample.json +++ b/config.sample.json @@ -8,64 +8,6 @@ "roomDirectory": { "servers": [ "matrix.org" - ], - "serverConfig": { - "matrix.org": { - "networks": [ - "_matrix", - "gitter", - "irc:freenode", - "irc:mozilla", - "irc:snoonet", - "irc:oftc" - ] - } - }, - "networks": { - "gitter": { - "protocol": "gitter", - "portalRoomPattern": "#gitter_.*:matrix.org", - "name": "Gitter", - "icon": "//gitter.im/favicon.ico", - "example": "org/community", - "nativePattern": "[^\\s]+/[^\\s]+$" - }, - "irc:freenode": { - "protocol": "irc", - "domain": "chat.freenode.net", - "portalRoomPattern": "#freenode_.*:matrix.org", - "name": "Freenode", - "icon": "//matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - }, - "irc:mozilla": { - "protocol": "irc", - "domain": "irc.mozilla.org", - "portalRoomPattern": "#mozilla_.*:matrix.org", - "name": "Mozilla", - "icon": "//matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - }, - "irc:snoonet": { - "protocol": "irc", - "domain": "ipv6-irc.snoonet.org", - "portalRoomPattern": "#_snoonet_.*:matrix.org", - "name": "Snoonet", - "icon": "//matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - }, - "irc:oftc": { - "protocol": "irc", - "domain": "irc.oftc.net", - "portalRoomPattern": "#_oftc_.*:matrix.org", - "name": "OFTC", - "icon": "//matrix.org/_matrix/media/v1/download/matrix.org/DHLHpDDgWNNejFmrewvwEAHX", - "example": "#channel", - "nativePattern": "^#[^\\s]+$" - } - } + ] } } diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index 7960b4cf..372b1cda 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -31,6 +31,8 @@ var linkifyMatrix = require('matrix-react-sdk/lib/linkify-matrix'); var sanitizeHtml = require('sanitize-html'); var q = require('q'); +import {instanceForInstanceId, protocolNameForInstanceId} from '../../utils/DirectoryUtils'; + linkifyMatrix(linkify); module.exports = React.createClass({ @@ -42,9 +44,7 @@ module.exports = React.createClass({ getDefaultProps: function() { return { - config: { - networks: [], - }, + config: {}, } }, @@ -52,37 +52,26 @@ module.exports = React.createClass({ return { publicRooms: [], loading: true, - network: null, - instance_id: null, + protocolsLoading: true, + instanceId: null, + includeAll: false, roomServer: null, filterString: null, } }, componentWillMount: function() { - // precompile Regexps - this.portalRoomPatterns = {}; - this.nativePatterns = {}; - if (this.props.config.networks) { - for (const network of Object.keys(this.props.config.networks)) { - const network_info = this.props.config.networks[network]; - if (network_info.portalRoomPattern) { - this.portalRoomPatterns[network] = new RegExp(network_info.portalRoomPattern); - } - if (network_info.nativePattern) { - this.nativePatterns[network] = new RegExp(network_info.nativePattern); - } - } - } - this.nextBatch = null; this.filterTimeout = null; this.scrollPanel = null; this.protocols = null; + this.setState({protocolsLoading: true}); MatrixClientPeg.get().getThirdpartyProtocols().done((response) => { this.protocols = response; + this.setState({protocolsLoading: false}); }, (err) => { + this.setState({protocolsLoading: false}); if (MatrixClientPeg.get().isGuest()) { // Guests currently aren't allowed to use this API, so // ignore this as otherwise this error is literally the @@ -132,9 +121,9 @@ module.exports = React.createClass({ if (my_server != MatrixClientPeg.getHomeServerName()) { opts.server = my_server; } - if (this.state.instance_id) { - opts.third_party_instance_id = this.state.instance_id; - } else if (this.state.network !== '_matrix') { + if (this.state.instanceId) { + opts.third_party_instanceId = this.state.instanceId; + } else if (this.state.includeAll) { opts.include_all_networks = true; } if (this.nextBatch) opts.since = this.nextBatch; @@ -237,7 +226,7 @@ module.exports = React.createClass({ } }, - onOptionChange: function(server, network, instance_id) { + onOptionChange: function(server, instanceId, includeAll) { // clear next batch so we don't try to load more rooms this.nextBatch = null; this.setState({ @@ -246,8 +235,8 @@ module.exports = React.createClass({ // to clear the list anyway. publicRooms: [], roomServer: server, - network: network, - instance_id: instance_id, + instanceId: instanceId, + includeAll: includeAll, }, this.refreshRoomList); // We also refresh the room list each time even though this // filtering is client-side. It hopefully won't be client side @@ -278,7 +267,7 @@ module.exports = React.createClass({ this.filterTimeout = setTimeout(() => { this.filterTimeout = null; this.refreshRoomList(); - }, 300); + }, 700); }, onFilterClear: function() { @@ -295,12 +284,19 @@ module.exports = React.createClass({ onJoinClick: function(alias) { // If we're on the 'Matrix' network (or all networks), // just show that rooms alias - if (this.state.network == null || this.state.network == '_matrix') { + if (!this.state.instanceId) { + // If the user specified an alias without a domain, add on whichever server is selected + // in the dropdown + if (alias.indexOf(':') == -1) { + alias = alias + ':' + this.state.roomServer; + } this.showRoomAlias(alias); } else { // This is a 3rd party protocol. Let's see if we // can join it - const fields = this._getFieldsForThirdPartyLocation(alias, this.state.network); + const protocol_name = protocolNameForInstanceId(this.protocols, this.state.instanceId); + const instance = instanceForInstanceId(this.protocols, this.state.instanceId); + const fields = this._getFieldsForThirdPartyLocation(alias, this.protocols[protocol_name], instance); if (!fields) { const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { @@ -309,8 +305,7 @@ module.exports = React.createClass({ }); return; } - const protocol = this._protocolForThirdPartyNetwork(this.state.network); - MatrixClientPeg.get().getThirdpartyLocation(protocol, fields).done((resp) => { + MatrixClientPeg.get().getThirdpartyLocation(protocol_name, fields).done((resp) => { if (resp.length > 0 && resp[0].alias) { this.showRoomAlias(resp[0].alias); } else { @@ -379,13 +374,7 @@ module.exports = React.createClass({ if (!this.state.publicRooms) return []; - var rooms = this.state.publicRooms.filter((a) => { - if (this.state.network) { - if (!this._isRoomInNetwork(a, this.state.roomServer, this.state.network)) return false; - } - - return true; - }); + var rooms = this.state.publicRooms; var rows = []; var self = this; var guestRead, guestJoin, perms; @@ -447,119 +436,46 @@ module.exports = React.createClass({ this.scrollPanel = element; }, - /** - * Terrible temporary function that guess what network a public room - * entry is in, until synapse is able to tell us - */ - _isRoomInNetwork: function(room, server, network) { - // We carve rooms into two categories here. 'portal' rooms are - // rooms created by a user joining a bridge 'portal' alias to - // participate in that room or a foreign network. A room is a - // portal room if it has exactly one alias and that alias matches - // a pattern defined in the config. Its network is the key - // of the pattern that it matches. - // All other rooms are considered 'native matrix' rooms, and - // go into the special '_matrix' network. - - let roomNetwork = '_matrix'; - if (room.aliases && room.aliases.length == 1) { - if (this.props.config.serverConfig && this.props.config.serverConfig[server] && this.props.config.serverConfig[server].networks) { - for (const n of this.props.config.serverConfig[server].networks) { - const pat = this.portalRoomPatterns[n]; - if (pat && pat.test(room.aliases[0])) { - roomNetwork = n; - } - } - } - } - return roomNetwork == network; - }, - - _stringLooksLikeId: function(s, network) { + _stringLooksLikeId: function(s, field_type) { let pat = /^#[^\s]+:[^\s]/; - if ( - network && network != '_matrix' && - this.nativePatterns[network] - ) { - pat = this.nativePatterns[network]; + if (field_type && field_type.regexp) { + pat = new RegExp(field_type.regexp); } return pat.test(s); }, - _protocolForThirdPartyNetwork: function(network) { - if ( - this.props.config.networks && - this.props.config.networks[network] && - this.props.config.networks[network].protocol - ) { - return this.props.config.networks[network].protocol; - } - }, - - _getFieldsForThirdPartyLocation: function(user_input, network) { - if (!this.props.config.networks || !this.props.config.networks[network]) return null; - - const network_info = this.props.config.networks[network]; - if (!network_info.protocol) return null; - - if (!this.protocols) return null; - - let matched_instance; - // Try to find which instance in the 'protocols' response - // matches this network. We look for a matching protocol - // and the existence of a 'domain' field and if present, - // its value. - if ( - this.protocols[network_info.protocol] && - this.protocols[network_info.protocol].instances && - this.protocols[network_info.protocol].instances.length == 1 - ) { - const the_instance = this.protocols[network_info.protocol].instances[0]; - // If there's only one instance in this protocol, use it - // as long as it has no domain (which we assume to mean it's - // there is only one possible instance). - if ( - ( - the_instance.fields.domain === undefined && - network_info.domain === undefined - ) || - ( - the_instance.fields.domain !== undefined && - the_instance.fields.domain == network_info.domain - ) - ) { - matched_instance = the_instance; - } - } else if (network_info.domain) { - // otherwise, we look for one with a matching domain. - for (const this_instance of this.protocols[network_info.protocol].instances) { - if (this_instance.fields.domain == network_info.domain) { - matched_instance = this_instance; - } - } - } - - if (matched_instance === undefined) return null; - - // now make an object with the fields specified by that protocol. We + _getFieldsForThirdPartyLocation: function(user_input, protocol, instance) { + // make an object with the fields specified by that protocol. We // require that the values of all but the last field come from the // instance. The last is the user input. - const required_fields = this.protocols[network_info.protocol].location_fields; + const required_fields = protocol.location_fields; + if (!required_fields) return null; const fields = {}; for (let i = 0; i < required_fields.length - 1; ++i) { const this_field = required_fields[i]; - if (matched_instance.fields[this_field] === undefined) return null; - fields[this_field] = matched_instance.fields[this_field]; + if (instance.fields[this_field] === undefined) return null; + fields[this_field] = instance.fields[this_field]; } fields[required_fields[required_fields.length - 1]] = user_input; return fields; }, render: function() { + const SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader'); + const Loader = sdk.getComponent("elements.Spinner"); + + if (this.state.protocolsLoading) { + return ( + <div className="mx_RoomDirectory"> + <SimpleRoomHeader title="Directory" /> + <Loader /> + </div> + ); + } + let content; if (this.state.loading) { - const Loader = sdk.getComponent("elements.Spinner"); content = <div className="mx_RoomDirectory"> <Loader /> </div>; @@ -590,26 +506,35 @@ module.exports = React.createClass({ </ScrollPanel>; } - let placeholder = 'Search for a room'; - if (this.state.network === null || this.state.network === '_matrix') { - placeholder = '#example:' + this.state.roomServer; - } else if ( - this.props.config.networks && - this.props.config.networks[this.state.network] && - this.props.config.networks[this.state.network].example && - this._getFieldsForThirdPartyLocation(this.state.filterString, this.state.network) + const protocol_name = protocolNameForInstanceId(this.protocols, this.state.instanceId); + let instance_expected_field_type; + if ( + protocol_name && + this.protocols && + this.protocols[protocol_name] && + this.protocols[protocol_name].location_fields.length > 0 && + this.protocols[protocol_name].field_types ) { - placeholder = this.props.config.networks[this.state.network].example; + const last_field = this.protocols[protocol_name].location_fields.slice(-1)[0]; + instance_expected_field_type = this.protocols[protocol_name].field_types[last_field]; } - let showJoinButton = this._stringLooksLikeId(this.state.filterString, this.state.network); - if (this.state.network && this.state.network != '_matrix') { - if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.state.network) === null) { + + let placeholder = 'Search for a room'; + if (!this.state.instanceId) { + placeholder = '#example:' + this.state.roomServer; + } else if (instance_expected_field_type) { + placeholder = instance_expected_field_type.placeholder; + } + + let showJoinButton = this._stringLooksLikeId(this.state.filterString, instance_expected_field_type); + if (protocol_name) { + const instance = instanceForInstanceId(this.protocols, this.state.instanceId); + if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.protocols[protocol_name], instance) === null) { showJoinButton = false; } } - const SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader'); const NetworkDropdown = sdk.getComponent('directory.NetworkDropdown'); const DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox'); return ( diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index 4b6de26e..155dd01a 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -16,6 +16,7 @@ limitations under the License. import React from 'react'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; +import {instanceForInstanceId} from '../../../utils/DirectoryUtils'; const DEFAULT_ICON_URL = "img/network-matrix.svg"; @@ -30,7 +31,6 @@ export default class NetworkDropdown extends React.Component { this.onRootClick = this.onRootClick.bind(this); this.onDocumentClick = this.onDocumentClick.bind(this); this.onMenuOptionClick = this.onMenuOptionClick.bind(this); - this.onMenuOptionClickProtocolInstance = this.onMenuOptionClickProtocolInstance.bind(this); this.onInputKeyUp = this.onInputKeyUp.bind(this); this.collectRoot = this.collectRoot.bind(this); this.collectInputTextBox = this.collectInputTextBox.bind(this); @@ -38,20 +38,11 @@ export default class NetworkDropdown extends React.Component { this.inputTextBox = null; const server = MatrixClientPeg.getHomeServerName(); - let defaultNetwork = null; - if ( - this.props.config.serverConfig && - this.props.config.serverConfig[server] && - this.props.config.serverConfig[server].networks && - this.props.config.serverConfig[server].networks.indexOf('_matrix') > -1 - ) { - defaultNetwork = '_matrix'; - } - this.state = { expanded: false, selectedServer: server, - selectedNetwork: defaultNetwork, + selectedInstance: null, + includeAllNetworks: false, }; } @@ -61,7 +52,7 @@ export default class NetworkDropdown extends React.Component { document.addEventListener('click', this.onDocumentClick, false); // fire this now so the defaults can be set up - this.props.onOptionChange(this.state.selectedServer, this.state.selectedNetwork); + this.props.onOptionChange(this.state.selectedServer, this.state.selectedInstance, this.state.includeAllNetworks); } componentWillUnmount() { @@ -101,24 +92,14 @@ export default class NetworkDropdown extends React.Component { ev.preventDefault(); } - onMenuOptionClick(server, network) { + onMenuOptionClick(server, instance, includeAll) { this.setState({ expanded: false, selectedServer: server, - selectedNetwork: network, - selectedInstanceId: null, + selectedInstanceId: instance ? instance.instance_id : null, + includeAll: includeAll, }); - this.props.onOptionChange(server, network); - } - - onMenuOptionClickProtocolInstance(server, instance_id) { - this.setState({ - expanded: false, - selectedServer: server, - selectedNetwork: null, - selectedInstanceId: instance_id, - }); - this.props.onOptionChange(server, null, instance_id); + this.props.onOptionChange(server, instance ? instance.instance_id : null, includeAll); } onInputKeyUp(e) { @@ -158,33 +139,21 @@ export default class NetworkDropdown extends React.Component { servers.unshift(MatrixClientPeg.getHomeServerName()); } - // if the thirdparty/protocols entries have instance_ids, - // we can get the local server listings from here. If not, - // the server is too old. - let use_protocols = true; - for (const proto of Object.keys(this.props.protocols)) { - if (!this.props.protocols[proto].instances) continue; - for (const instance of this.props.protocols[proto].instances) { - if (!instance.instance_id) use_protocols = false; - } - } - // For our own HS, we can use the instance_ids given in the third party protocols - // response to get the server to filter the room list by network for us (if the - // server is new enough), although for now we prefer the config if it exists. - // For remote HSes, we use the data from the config. + // response to get the server to filter the room list by network for us. + // We can't get thirdparty protocols for remote server yet though, so for those + // we can only show the default room list. for (const server of servers) { - options.push(this._makeMenuOption(server, null)); - if (this.props.config.serverConfig && this.props.config.serverConfig[server] && this.props.config.serverConfig[server].networks) { - for (const network of this.props.config.serverConfig[server].networks) { - options.push(this._makeMenuOption(server, network)); - } - } else if (server == MatrixClientPeg.getHomeServerName() && use_protocols) { - options.push(this._makeMenuOption(server, '_matrix')); - for (const proto of Object.keys(this.props.protocols)) { - if (!this.props.protocols[proto].instances) continue; - for (const instance of this.props.protocols[proto].instances) { - options.push(this._makeMenuOptionFromProtocolInstance(server, this.props.protocols[proto], instance)); + options.push(this._makeMenuOption(server, null, true)); + if (server == MatrixClientPeg.getHomeServerName()) { + options.push(this._makeMenuOption(server, null, false)); + if (this.props.protocols) { + for (const proto of Object.keys(this.props.protocols)) { + if (!this.props.protocols[proto].instances) continue; + for (const instance of this.props.protocols[proto].instances) { + if (!instance.instance_id) continue; + options.push(this._makeMenuOption(server, instance, false)); + } } } } @@ -193,82 +162,36 @@ export default class NetworkDropdown extends React.Component { return options; } - _makeMenuOptionFromProtocolInstance(server, protocol, instance, handleClicks) { + _makeMenuOption(server, instance, includeAll, handleClicks) { if (handleClicks === undefined) handleClicks = true; - const name = instance.desc; - const icon = <img src={instance.icon || DEFAULT_ICON_URL} />; - const key = instance.instance_id; - const click_handler = handleClicks ? this.onMenuOptionClickProtocolInstance.bind(this, server, instance.instance_id) : null; - - return <div key={key} className="mx_NetworkDropdown_networkoption" onClick={click_handler}> - {icon} - <span className="mx_NetworkDropdown_menu_network">{name}</span> - </div>; - } - - _makeMenuOption(server, network, handleClicks) { - if (handleClicks === undefined) handleClicks = true; let icon; let name; let span_class; + let key; - if (network === null) { + if (!instance && includeAll) { + key = server; name = server; span_class = 'mx_NetworkDropdown_menu_all'; - } else if (network == '_matrix') { + } else if (!instance) { + key = server + '_all'; name = 'Matrix'; icon = <img src="img/network-matrix.svg" />; span_class = 'mx_NetworkDropdown_menu_network'; } else { - if (this.props.config.networks[network] === undefined) { - throw new Error(network + ' network missing from config'); - } - if (this.props.config.networks[network].name) { - name = this.props.config.networks[network].name; - } else { - name = network; - } - if (this.props.config.networks[network].icon) { - // omit height here so if people define a non-square logo in the config, it - // will keep the aspect when it scales - icon = <img src={this.props.config.networks[network].icon} />; - } else { - icon = <img src={iconPath} />; - } - + key = server + '_inst_'+instance.instance_id; + icon = <img src={instance.icon || DEFAULT_ICON_URL} />; + name = instance.desc; span_class = 'mx_NetworkDropdown_menu_network'; } - const click_handler = handleClicks ? this.onMenuOptionClick.bind(this, server, network) : null; - - let key = server; - if (network !== null) { - key += '_' + network; - } + const click_handler = handleClicks ? this.onMenuOptionClick.bind(this, server, instance, includeAll) : null; return <div key={key} className="mx_NetworkDropdown_networkoption" onClick={click_handler}> {icon} - <span className={span_class}>{name}</span> - </div>; - } - - _protocolNameForInstanceId(instance_id) { - for (const proto of Object.keys(this.props.protocols)) { - if (!this.props.protocols[proto].instances) continue; - for (const instance of this.props.protocols[proto].instances) { - if (instance.instance_id == instance_id) return proto; - } - } - } - - instanceForInstanceId(instance_id) { - for (const proto of Object.keys(this.props.protocols)) { - if (!this.props.protocols[proto].instances) continue; - for (const instance of this.props.protocols[proto].instances) { - if (instance.instance_id == instance_id) return instance; - } - } + <span className="mx_NetworkDropdown_menu_network">{name}</span> + </div> } render() { @@ -285,17 +208,10 @@ export default class NetworkDropdown extends React.Component { placeholder="matrix.org" // 'matrix.org' as an example of an HS name /> } else { - if (this.state.selectedInstanceId) { - const protocolName = this._protocolNameForInstanceId(this.state.selectedInstanceId); - const instance = this.instanceForInstanceId(this.state.selectedInstanceId); - current_value = this._makeMenuOptionFromProtocolInstance( - this.state.selectedServer, this.props.protocols[protocolName], instance, false - ); - } else { - current_value = this._makeMenuOption( - this.state.selectedServer, this.state.selectedNetwork, false - ); - } + const instance = instanceForInstanceId(this.props.protocols, this.state.selectedInstanceId); + current_value = this._makeMenuOption( + this.state.selectedServer, instance, this.state.includeAll, false + ); } return <div className="mx_NetworkDropdown" ref={this.collectRoot}> @@ -310,14 +226,11 @@ export default class NetworkDropdown extends React.Component { NetworkDropdown.propTypes = { onOptionChange: React.PropTypes.func.isRequired, - config: React.PropTypes.object, protocols: React.PropTypes.object, + config: React.PropTypes.object, }; NetworkDropdown.defaultProps = { - config: { - networks: [], - }, protocols: {}, + config: {}, }; - diff --git a/src/utils/DirectoryUtils.js b/src/utils/DirectoryUtils.js new file mode 100644 index 00000000..9dc4d926 --- /dev/null +++ b/src/utils/DirectoryUtils.js @@ -0,0 +1,23 @@ +// Find a protocol 'instance' with a given instance_id +// in the supplied protocols dict +export function instanceForInstanceId(protocols, instance_id) { + if (!instance_id) return null; + for (const proto of Object.keys(protocols)) { + if (!protocols[proto].instances) continue; + for (const instance of protocols[proto].instances) { + if (instance.instance_id == instance_id) return instance; + } + } +} + +// given an instance_id, return the name of the protocol for +// that instance ID in the supplied protocols dict +export function protocolNameForInstanceId(protocols, instance_id) { + if (!instance_id) return null; + for (const proto of Object.keys(protocols)) { + if (!protocols[proto].instances) continue; + for (const instance of protocols[proto].instances) { + if (instance.instance_id == instance_id) return proto; + } + } +} From 161978ab05c5541d405acce7cd7ea23d3d4d8b71 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 15:20:52 +0000 Subject: [PATCH 079/243] Fix tests --- test/app-tests/joining.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/app-tests/joining.js b/test/app-tests/joining.js index 989effa3..442b67c2 100644 --- a/test/app-tests/joining.js +++ b/test/app-tests/joining.js @@ -77,6 +77,7 @@ describe('joining a room', function () { httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' }); httpBackend.when('GET', '/sync').respond(200, {}); httpBackend.when('POST', '/publicRooms').respond(200, {chunk: []}); + httpBackend.when('GET', '/thirdparty/protocols').respond(200, {}); httpBackend.when('GET', '/directory/room/'+encodeURIComponent(ROOM_ALIAS)).respond(200, { room_id: ROOM_ID }); // start with a logged-in client @@ -132,6 +133,12 @@ describe('joining a room', function () { httpBackend.when('POST', '/join/'+encodeURIComponent(ROOM_ALIAS)) .respond(200, {room_id: ROOM_ID}); return httpBackend.flush(); + }).then(() => { + // wait for the join request to be made + return q.delay(1); + }).then(() => { + // flush it through + return httpBackend.flush(); }).then(() => { httpBackend.verifyNoOutstandingExpectation(); From 2e73cd6c4d520fc78d7bd101bd4b4bd1ec00b82c Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 16:24:24 +0000 Subject: [PATCH 080/243] PR feedback --- src/components/structures/RoomDirectory.js | 48 +++++++++---------- .../views/directory/NetworkDropdown.js | 3 +- src/utils/DirectoryUtils.js | 4 +- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index 372b1cda..79ae349d 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -122,7 +122,7 @@ module.exports = React.createClass({ opts.server = my_server; } if (this.state.instanceId) { - opts.third_party_instanceId = this.state.instanceId; + opts.third_party_instance_id = this.state.instanceId; } else if (this.state.includeAll) { opts.include_all_networks = true; } @@ -282,8 +282,7 @@ module.exports = React.createClass({ }, onJoinClick: function(alias) { - // If we're on the 'Matrix' network (or all networks), - // just show that rooms alias + // If we don't have a prticular instance id selected, just show that rooms alias if (!this.state.instanceId) { // If the user specified an alias without a domain, add on whichever server is selected // in the dropdown @@ -292,11 +291,10 @@ module.exports = React.createClass({ } this.showRoomAlias(alias); } else { - // This is a 3rd party protocol. Let's see if we - // can join it - const protocol_name = protocolNameForInstanceId(this.protocols, this.state.instanceId); + // This is a 3rd party protocol. Let's see if we can join it + const protocolName = protocolNameForInstanceId(this.protocols, this.state.instanceId); const instance = instanceForInstanceId(this.protocols, this.state.instanceId); - const fields = this._getFieldsForThirdPartyLocation(alias, this.protocols[protocol_name], instance); + const fields = protocolName ? this._getFieldsForThirdPartyLocation(alias, this.protocols[protocolName], instance) : null; if (!fields) { const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { @@ -305,7 +303,7 @@ module.exports = React.createClass({ }); return; } - MatrixClientPeg.get().getThirdpartyLocation(protocol_name, fields).done((resp) => { + MatrixClientPeg.get().getThirdpartyLocation(protocolName, fields).done((resp) => { if (resp.length > 0 && resp[0].alias) { this.showRoomAlias(resp[0].alias); } else { @@ -445,19 +443,19 @@ module.exports = React.createClass({ return pat.test(s); }, - _getFieldsForThirdPartyLocation: function(user_input, protocol, instance) { + _getFieldsForThirdPartyLocation: function(userInput, protocol, instance) { // make an object with the fields specified by that protocol. We // require that the values of all but the last field come from the // instance. The last is the user input. - const required_fields = protocol.location_fields; - if (!required_fields) return null; + const requiredFields = protocol.location_fields; + if (!requiredFields) return null; const fields = {}; - for (let i = 0; i < required_fields.length - 1; ++i) { - const this_field = required_fields[i]; - if (instance.fields[this_field] === undefined) return null; - fields[this_field] = instance.fields[this_field]; + for (let i = 0; i < requiredFields.length - 1; ++i) { + const thisField = requiredFields[i]; + if (instance.fields[thisField] === undefined) return null; + fields[thisField] = instance.fields[thisField]; } - fields[required_fields[required_fields.length - 1]] = user_input; + fields[requiredFields[requiredFields.length - 1]] = userInput; return fields; }, @@ -506,17 +504,17 @@ module.exports = React.createClass({ </ScrollPanel>; } - const protocol_name = protocolNameForInstanceId(this.protocols, this.state.instanceId); + const protocolName = protocolNameForInstanceId(this.protocols, this.state.instanceId); let instance_expected_field_type; if ( - protocol_name && + protocolName && this.protocols && - this.protocols[protocol_name] && - this.protocols[protocol_name].location_fields.length > 0 && - this.protocols[protocol_name].field_types + this.protocols[protocolName] && + this.protocols[protocolName].location_fields.length > 0 && + this.protocols[protocolName].field_types ) { - const last_field = this.protocols[protocol_name].location_fields.slice(-1)[0]; - instance_expected_field_type = this.protocols[protocol_name].field_types[last_field]; + const last_field = this.protocols[protocolName].location_fields.slice(-1)[0]; + instance_expected_field_type = this.protocols[protocolName].field_types[last_field]; } @@ -528,9 +526,9 @@ module.exports = React.createClass({ } let showJoinButton = this._stringLooksLikeId(this.state.filterString, instance_expected_field_type); - if (protocol_name) { + if (protocolName) { const instance = instanceForInstanceId(this.protocols, this.state.instanceId); - if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.protocols[protocol_name], instance) === null) { + if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.protocols[protocolName], instance) === null) { showJoinButton = false; } } diff --git a/src/components/views/directory/NetworkDropdown.js b/src/components/views/directory/NetworkDropdown.js index 155dd01a..4ce094bc 100644 --- a/src/components/views/directory/NetworkDropdown.js +++ b/src/components/views/directory/NetworkDropdown.js @@ -180,7 +180,7 @@ export default class NetworkDropdown extends React.Component { icon = <img src="img/network-matrix.svg" />; span_class = 'mx_NetworkDropdown_menu_network'; } else { - key = server + '_inst_'+instance.instance_id; + key = server + '_inst_' + instance.instance_id; icon = <img src={instance.icon || DEFAULT_ICON_URL} />; name = instance.desc; span_class = 'mx_NetworkDropdown_menu_network'; @@ -227,6 +227,7 @@ export default class NetworkDropdown extends React.Component { NetworkDropdown.propTypes = { onOptionChange: React.PropTypes.func.isRequired, protocols: React.PropTypes.object, + // The room directory config. May have a 'servers' key that is a list of server names to include in the dropdown config: React.PropTypes.object, }; diff --git a/src/utils/DirectoryUtils.js b/src/utils/DirectoryUtils.js index 9dc4d926..72e44681 100644 --- a/src/utils/DirectoryUtils.js +++ b/src/utils/DirectoryUtils.js @@ -3,7 +3,7 @@ export function instanceForInstanceId(protocols, instance_id) { if (!instance_id) return null; for (const proto of Object.keys(protocols)) { - if (!protocols[proto].instances) continue; + if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue; for (const instance of protocols[proto].instances) { if (instance.instance_id == instance_id) return instance; } @@ -15,7 +15,7 @@ export function instanceForInstanceId(protocols, instance_id) { export function protocolNameForInstanceId(protocols, instance_id) { if (!instance_id) return null; for (const proto of Object.keys(protocols)) { - if (!protocols[proto].instances) continue; + if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue; for (const instance of protocols[proto].instances) { if (instance.instance_id == instance_id) return proto; } From 42357dee0bc34da18a6275ae435441889f645df6 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 16:36:24 +0000 Subject: [PATCH 081/243] Typo --- src/components/structures/RoomDirectory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index 79ae349d..5fb0324c 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -282,7 +282,7 @@ module.exports = React.createClass({ }, onJoinClick: function(alias) { - // If we don't have a prticular instance id selected, just show that rooms alias + // If we don't have a particular instance id selected, just show that rooms alias if (!this.state.instanceId) { // If the user specified an alias without a domain, add on whichever server is selected // in the dropdown From 4745b3efebf10e11b6a47899bda22de451e48aae Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 17:40:37 +0000 Subject: [PATCH 082/243] released js-sdk & react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 73c4b467..66eeab35 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", - "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", + "matrix-js-sdk": "0.7.2", + "matrix-react-sdk": "0.8.2", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 8bbc16ed4b77bea3b7422ab6464d0ea59a7bebae Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 17:44:22 +0000 Subject: [PATCH 083/243] Prepare changelog for v0.9.2 --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 806113ab..8c31a693 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +Changes in [0.9.2](https://github.com/vector-im/riot-web/releases/tag/v0.9.2) (2016-12-16) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.1...v0.9.2) + + * Remove the client side filtering from the room dir + [\#2750](https://github.com/vector-im/riot-web/pull/2750) + * Configure olm memory size + [\#2745](https://github.com/vector-im/riot-web/pull/2745) + * Support room dir 3rd party network filtering + [\#2747](https://github.com/vector-im/riot-web/pull/2747) + Changes in [0.9.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.1) (2016-12-09) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.1-rc.2...v0.9.1) From 1e7e9d6101d72728d9560e6dbea5dd46a2ce86ea Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 16 Dec 2016 17:44:22 +0000 Subject: [PATCH 084/243] v0.9.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 66eeab35..efd44b04 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.1", + "version": "0.9.2", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From 9ae86f258578c39ebdd72cbf070a625768760d2b Mon Sep 17 00:00:00 2001 From: Mikaela Suomalainen <mikaela+git@mikaela.info> Date: Sat, 17 Dec 2016 21:17:58 +0200 Subject: [PATCH 085/243] README.md: fix GFMD for nativefier GitHub Flavoured MarkDown parsed this as `sudo npm install nativefier -g nativefier https://riot.im/app/` which is incorrect. --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b0ea2124..50a8ff04 100644 --- a/README.md +++ b/README.md @@ -140,10 +140,11 @@ Many thanks to @aviraldg for the initial work on the electron integration. Other options for running as a desktop app: * https://github.com/krisak/vector-electron-desktop * @asdf:matrix.org points out that you can use nativefier and it just works(tm) - ``` - sudo npm install nativefier -g - nativefier https://riot.im/app/ - ``` + +``` +sudo npm install nativefier -g +nativefier https://riot.im/app/ +``` Development =========== From 57641f722831f5882cda78b2bfca064d468cc5db Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 20 Dec 2016 00:05:49 +0000 Subject: [PATCH 086/243] typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c31a693..b56ef6cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -109,7 +109,7 @@ Changes in [0.9.0](https://github.com/vector-im/vector-web/releases/tag/v0.9.0) * Implement Platforms [\#2531](https://github.com/vector-im/vector-web/pull/2531) -hanges in [0.8.4](https://github.com/vector-im/vector-web/releases/tag/v0.8.4) (2016-11-04) +Changes in [0.8.4](https://github.com/vector-im/vector-web/releases/tag/v0.8.4) (2016-11-04) ============================================================================================ [Full Changelog](https://github.com/vector-im/vector-web/compare/v0.8.4-rc.2...v0.8.4) From d34cb80b687caa8347211878c498e55e3083a6c7 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 21 Dec 2016 18:50:35 +0000 Subject: [PATCH 087/243] CSS for the delete threepid button --- .../vector/css/matrix-react-sdk/structures/UserSettings.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/UserSettings.css b/src/skins/vector/css/matrix-react-sdk/structures/UserSettings.css index f48a88a9..427369a5 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/UserSettings.css +++ b/src/skins/vector/css/matrix-react-sdk/structures/UserSettings.css @@ -174,7 +174,7 @@ limitations under the License. font-size: 16px; } -.mx_UserSettings_addThreepid { +.mx_UserSettings_threepidButton { display: table-cell; padding-left: 0.5em; position: relative; From c6c4aff8ae5190e4a6681b0999dfbb40fd5488f6 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <github@rvanderhoff.org.uk> Date: Thu, 22 Dec 2016 12:02:54 +0000 Subject: [PATCH 088/243] Redeploy script: put each build in a separate directory (#2790) * Redeploy script: put each build in a separate directory Hopefully this will fix the problem whereby we can overwrite the live deployment. --- scripts/redeploy.py | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/scripts/redeploy.py b/scripts/redeploy.py index fddd5da9..36585f53 100755 --- a/scripts/redeploy.py +++ b/scripts/redeploy.py @@ -13,7 +13,7 @@ def download_file(url): local_filename = url.split('/')[-1] r = requests.get(url, stream=True) with open(local_filename, 'wb') as f: - for chunk in r.iter_content(chunk_size=1024): + for chunk in r.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunks f.write(chunk) return local_filename @@ -107,21 +107,40 @@ def on_receive_jenkins_poke(): ) print("Retrieving .tar.gz file: %s" % tar_gz_url) + + # we rely on the fact that flask only serves one request at a time to + # ensure that we do not overwrite a tarball from a concurrent request. filename = download_file(tar_gz_url) print("Downloaded file: %s" % filename) + + try: + # we extract into a directory based on the build number. This avoids the + # problem of multiple builds building the same git version and thus having + # the same tarball name. That would lead to two potential problems: + # (a) sometimes jenkins serves corrupted artifacts; we would replace + # a good deploy with a bad one + # (b) we'll be overwriting the live deployment, which means people might + # see half-written files. + build_dir = os.path.join(arg_extract_path, "%s-#%s" % (job_name, build_num)) + if os.path.exists(build_dir): + abort(400, "Not deploying. We have previously deployed this build.") + return + os.mkdir(build_dir) + + untar_to(filename, build_dir) + print("Extracted to: %s" % build_dir) + finally: + if arg_should_clean: + os.remove(filename) + name_str = filename.replace(".tar.gz", "") - untar_to(filename, arg_extract_path) - - extracted_dir = os.path.join(arg_extract_path, name_str) - - if arg_should_clean: - os.remove(filename) - - create_symlink(source=extracted_dir, linkname=arg_symlink) + extracted_dir = os.path.join(build_dir, name_str) if arg_config_location: create_symlink(source=arg_config_location, linkname=os.path.join(extracted_dir, 'config.json')) + create_symlink(source=extracted_dir, linkname=arg_symlink) + return jsonify({}) if __name__ == "__main__": From 519af6a5d037248b4186b8f87eca581a1480de6b Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 22 Dec 2016 14:14:44 +0000 Subject: [PATCH 089/243] Bump to matrix-react-sdk 0.8.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index efd44b04..64598893 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", "matrix-js-sdk": "0.7.2", - "matrix-react-sdk": "0.8.2", + "matrix-react-sdk": "0.8.3", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From e6f600bb4774b3c5ddd48e4a3f2cf909bf5e6d36 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 22 Dec 2016 14:18:22 +0000 Subject: [PATCH 090/243] Prepare changelog for v0.9.3 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b56ef6cc..03f2bf2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +Changes in [0.9.3](https://github.com/vector-im/riot-web/releases/tag/v0.9.3) (2016-12-22) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.2...v0.9.3) + + * (from matrix-react-sdk) Fix regression where the date separator would be displayed + at the wrong time of day. + * README.md: fix GFMD for nativefier + [\#2755](https://github.com/vector-im/riot-web/pull/2755) + Changes in [0.9.2](https://github.com/vector-im/riot-web/releases/tag/v0.9.2) (2016-12-16) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.1...v0.9.2) From d8bce0f20200bd31e634bc87497cd9e17bbd9750 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 22 Dec 2016 14:18:23 +0000 Subject: [PATCH 091/243] v0.9.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64598893..26f939df 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.2", + "version": "0.9.3", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From ed35a90cfb2749439a98d5963ab1cf1598fbed97 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 22 Dec 2016 14:36:05 +0000 Subject: [PATCH 092/243] Back to develop js & react sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 26f939df..3bf4c868 100644 --- a/package.json +++ b/package.json @@ -66,8 +66,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.2", - "matrix-react-sdk": "0.8.3", + "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", + "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From ab8420f5a94ca81e89023020b7fc3433cfdd3590 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 22 Dec 2016 16:30:14 +0000 Subject: [PATCH 093/243] Bump to olm 2.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3bf4c868..7a9a82bb 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "webpack-dev-server": "^1.16.2" }, "optionalDependencies": { - "olm": "https://matrix.org/packages/npm/olm/olm-2.0.0.tgz" + "olm": "https://matrix.org/packages/npm/olm/olm-2.1.0.tgz" }, "build": { "appId": "im.riot.app", From 35a541c824a2c22bd608f3e24d4da8560c1cce99 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 22 Dec 2016 16:30:14 +0000 Subject: [PATCH 094/243] Bump to olm 2.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 26f939df..e27e946f 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "webpack-dev-server": "^1.16.2" }, "optionalDependencies": { - "olm": "https://matrix.org/packages/npm/olm/olm-2.0.0.tgz" + "olm": "https://matrix.org/packages/npm/olm/olm-2.1.0.tgz" }, "build": { "appId": "im.riot.app", From 3803c642262819129a4a955cc8793ba4d50f0064 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 22 Dec 2016 18:15:00 +0000 Subject: [PATCH 095/243] prep 0.9.4 changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03f2bf2f..5427b8dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +Changes in [0.9.4](https://github.com/vector-im/riot-web/releases/tag/v0.9.4) (2016-12-22) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.3...v0.9.4) + + * Update to libolm 2.1.0. This should help resolve a problem with browser + sessions being logged out ([\#2726](https://github.com/vector-im/riot-web/issues/2726)). + Changes in [0.9.3](https://github.com/vector-im/riot-web/releases/tag/v0.9.3) (2016-12-22) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.2...v0.9.3) From ff70b0a2c89d32a175a565a2113861cc35cbe4f9 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 22 Dec 2016 18:24:04 +0000 Subject: [PATCH 096/243] v0.9.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e27e946f..34df1c4e 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.3", + "version": "0.9.4", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From e741a4f294c69bd3925584b2972394b92aef3792 Mon Sep 17 00:00:00 2001 From: joelostblom <joelostblom@users.noreply.github.com> Date: Thu, 22 Dec 2016 14:53:03 -0500 Subject: [PATCH 097/243] Update desktop build instructions fixes #2792 This is based on what I had to do to get the desktop app running, as per the advice in https://github.com/vector-im/riot-web/issues/2792. I am not familiar with `npm`, so please change this pull request if there is a more appropriate way of achieving the same result. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 50a8ff04..a468955b 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,7 @@ To run as a desktop app: ``` npm install npm install electron +npm run build node_modules/.bin/electron . ``` From bb28903c8e6370ce65e86365926df7da63e943c0 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 01:36:00 +0000 Subject: [PATCH 098/243] fix warning page --- src/components/structures/CompatibilityPage.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/structures/CompatibilityPage.js b/src/components/structures/CompatibilityPage.js index dd139e65..bae33803 100644 --- a/src/components/structures/CompatibilityPage.js +++ b/src/components/structures/CompatibilityPage.js @@ -45,10 +45,8 @@ module.exports = React.createClass({ available or experimental in your current browser. </p> <p> - Please install <a href="https://www.google.com/chrome">Chrome</a> or - <a href="https://getfirefox.com">Firefox</a> for the best experience. - <a href="http://apple.com/safari">Safari</a> and - <a href="http://opera.com">Opera</a> work too. + Please install <a href="https://www.google.com/chrome">Chrome</a> or <a href="https://getfirefox.com">Firefox</a> for + the best experience. <a href="http://apple.com/safari">Safari</a> and <a href="http://opera.com">Opera</a> work too. </p> <p> With your current browser, the look and feel of the application may From 9a861f46d028d4194666e65ba16633a3505a015f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 03:18:12 +0000 Subject: [PATCH 099/243] make electron send email validation URLs with a nextlink of riot.im rather than file:/// --- src/vector/index.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index b791783b..8231950b 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -136,11 +136,20 @@ var onNewScreen = function(screen) { // click back to the client having registered. // It's up to us to recognise if we're loaded with // this URL and tell MatrixClient to resume registration. +// +// If we're in electron, we should never pass through a file:// URL otherwise +// the identity server will try to 302 the browser to it, which breaks horribly. +// so in that instance, hardcode to use riot.im/app for now instead. var makeRegistrationUrl = function() { - return window.location.protocol + '//' + - window.location.host + - window.location.pathname + - '#/register'; + if (window.location.protocol === "file:") { + return 'https://riot.im/app/#/register'; + } + else { + return window.location.protocol + '//' + + window.location.host + + window.location.pathname + + '#/register'; + } } window.addEventListener('hashchange', onHashChange); From 2b70cb436eb52f450a063a36dbb2b98d22d9d733 Mon Sep 17 00:00:00 2001 From: Kevin McDonald <k3vmcd@gmail.com> Date: Fri, 23 Dec 2016 22:32:16 -0700 Subject: [PATCH 100/243] add Debian Stretch install steps to readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index a468955b..f99afca1 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,14 @@ 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 over https. +### Installation Steps for Debian Stretch +1. Add the repository to your sources.list using either of the following two options: + - Directly to sources.list: `echo "deb https://riot.im/packages/debian/ stretch main" | sudo tee -a /etc/apt/sources.list` + - As a separate entry in sources.list.d: `echo "deb https://riot.im/packages/debian/ stretch main" | sudo tee /etc/apt/sources.list.d/riot.list` +2. Add the gpg signing key for the riot repository: `curl -s https://riot.im/packages/debian/repo-key.asc | sudo apt-key add -` +3. Update your package lists: `sudo apt-get update` +4. Install Riot: `sudo apt-get install riot-web` + Important Security Note ======================= From f2afcc0bc89cebe9b2220fc75a537f2f91bf91bc Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 18:13:20 +0000 Subject: [PATCH 101/243] add gnu-tar to debian electron build deps --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 50a8ff04..54709e08 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ The only platform that can build packages for all three platforms is macOS: ``` brew install wine --without-x11 brew install mono +brew install gnu-tar npm install npm run build:electron ``` From 79d164309f7926cb1c24008e464a516d7a872325 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 18:13:33 +0000 Subject: [PATCH 102/243] empirically fix win32 shortcut in start menu --- electron/src/squirrelhooks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/src/squirrelhooks.js b/electron/src/squirrelhooks.js index 10fb8d9e..295ef5cf 100644 --- a/electron/src/squirrelhooks.js +++ b/electron/src/squirrelhooks.js @@ -3,7 +3,7 @@ const spawn = require('child_process').spawn; const app = require('electron').app; function run_update_exe(args, done) { - const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe'); + const updateExe = path.resolve(path.dirname(process.execPath), 'Update.exe'); spawn(updateExe, args, { detached: true }).on('close', done); From bba6664b1cf685d9666da63eacb4d8bbcb0ac764 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 18:58:42 +0000 Subject: [PATCH 103/243] bump to dep on react-sdk 0.8.3-electron --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 34df1c4e..a8197c22 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", "matrix-js-sdk": "0.7.2", - "matrix-react-sdk": "0.8.3", + "matrix-react-sdk": "0.8.3-electron", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From cbf105f2a0c448dcd27302be13de299fb43e7d4b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 18:59:41 +0000 Subject: [PATCH 104/243] Revert "bump to dep on react-sdk 0.8.3-electron" This reverts commit bba6664b1cf685d9666da63eacb4d8bbcb0ac764. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a8197c22..34df1c4e 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", "matrix-js-sdk": "0.7.2", - "matrix-react-sdk": "0.8.3-electron", + "matrix-react-sdk": "0.8.3", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 078493912c97f83971ca225e962077daa0e2dd79 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 03:18:12 +0000 Subject: [PATCH 105/243] make electron send email validation URLs with a nextlink of riot.im rather than file:/// --- src/vector/index.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index b791783b..8231950b 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -136,11 +136,20 @@ var onNewScreen = function(screen) { // click back to the client having registered. // It's up to us to recognise if we're loaded with // this URL and tell MatrixClient to resume registration. +// +// If we're in electron, we should never pass through a file:// URL otherwise +// the identity server will try to 302 the browser to it, which breaks horribly. +// so in that instance, hardcode to use riot.im/app for now instead. var makeRegistrationUrl = function() { - return window.location.protocol + '//' + - window.location.host + - window.location.pathname + - '#/register'; + if (window.location.protocol === "file:") { + return 'https://riot.im/app/#/register'; + } + else { + return window.location.protocol + '//' + + window.location.host + + window.location.pathname + + '#/register'; + } } window.addEventListener('hashchange', onHashChange); From 8c523be6f52189ea0b731e6b0181d09f0b1f2a62 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 18:13:20 +0000 Subject: [PATCH 106/243] add gnu-tar to debian electron build deps --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 50a8ff04..54709e08 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ The only platform that can build packages for all three platforms is macOS: ``` brew install wine --without-x11 brew install mono +brew install gnu-tar npm install npm run build:electron ``` From 4de042bf587f42a9f91df4db22c536a6f8a6c0b6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 18:13:33 +0000 Subject: [PATCH 107/243] empirically fix win32 shortcut in start menu --- electron/src/squirrelhooks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/src/squirrelhooks.js b/electron/src/squirrelhooks.js index 10fb8d9e..295ef5cf 100644 --- a/electron/src/squirrelhooks.js +++ b/electron/src/squirrelhooks.js @@ -3,7 +3,7 @@ const spawn = require('child_process').spawn; const app = require('electron').app; function run_update_exe(args, done) { - const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe'); + const updateExe = path.resolve(path.dirname(process.execPath), 'Update.exe'); spawn(updateExe, args, { detached: true }).on('close', done); From 3f3772463b4c304d6d790b54a5c2d825e900facb Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 19:04:00 +0000 Subject: [PATCH 108/243] bump react dep --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 34df1c4e..1d2bb886 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", "matrix-js-sdk": "0.7.2", - "matrix-react-sdk": "0.8.3", + "matrix-react-sdk": "0.8.4", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 0129da4dd6990e965a5572073c05ea4e767f7dc3 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 19:07:30 +0000 Subject: [PATCH 109/243] Prepare changelog for v0.9.5 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5427b8dc..265cbe80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +Changes in [0.9.5](https://github.com/vector-im/riot-web/releases/tag/v0.9.5) (2016-12-24) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.4...v0.9.5) + + * make electron send email validation URLs with a nextlink of riot.im rather than file:/// + * add gnu-tar to debian electron build deps + * fix win32 shortcut in start menu + Changes in [0.9.4](https://github.com/vector-im/riot-web/releases/tag/v0.9.4) (2016-12-22) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.3...v0.9.4) From 747408871d71c8d020672e39140725c136a3b709 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 19:07:31 +0000 Subject: [PATCH 110/243] v0.9.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1d2bb886..02e280a5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.4", + "version": "0.9.5", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From b0319ec0f10f870a778dccb3fe71e18cb686ac43 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 24 Dec 2016 19:32:29 +0000 Subject: [PATCH 111/243] merge --- CHANGELOG.md | 8 ++++++++ package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5427b8dc..265cbe80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +Changes in [0.9.5](https://github.com/vector-im/riot-web/releases/tag/v0.9.5) (2016-12-24) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.4...v0.9.5) + + * make electron send email validation URLs with a nextlink of riot.im rather than file:/// + * add gnu-tar to debian electron build deps + * fix win32 shortcut in start menu + Changes in [0.9.4](https://github.com/vector-im/riot-web/releases/tag/v0.9.4) (2016-12-22) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.3...v0.9.4) diff --git a/package.json b/package.json index 456874a7..3f9f46e2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.4", + "version": "0.9.5", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From bacb284415a90811fbad2bae74b1921bf92a8fd9 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 28 Dec 2016 02:01:28 +0000 Subject: [PATCH 112/243] basic jig for SASS-based themed CSS (one bundle per theme) --- package.json | 6 ++++-- src/skins/vector/css/{common.css => _common.scss} | 0 .../{ContextualMenu.css => _ContextualMenu.scss} | 0 .../structures/{CreateRoom.css => _CreateRoom.scss} | 0 .../structures/{FilePanel.css => _FilePanel.scss} | 0 .../structures/{MatrixChat.css => _MatrixChat.scss} | 0 .../{NotificationPanel.css => _NotificationPanel.scss} | 0 .../structures/{RoomStatusBar.css => _RoomStatusBar.scss} | 0 .../structures/{RoomView.css => _RoomView.scss} | 0 .../structures/{SearchBox.css => _SearchBox.scss} | 0 .../structures/{UploadBar.css => _UploadBar.scss} | 0 .../structures/{UserSettings.css => _UserSettings.scss} | 0 .../structures/login/{Login.css => _Login.scss} | 0 .../views/avatars/{BaseAvatar.css => _BaseAvatar.scss} | 0 .../{ChatInviteDialog.css => _ChatInviteDialog.scss} | 0 ...EncryptedEventDialog.css => _EncryptedEventDialog.scss} | 0 ...SetDisplayNameDialog.css => _SetDisplayNameDialog.scss} | 0 .../{AddressSelector.css => _AddressSelector.scss} | 0 .../views/elements/{AddressTile.css => _AddressTile.scss} | 0 .../{DirectorySearchBox.css => _DirectorySearchBox.scss} | 0 ...erEventListSummary.css => _MemberEventListSummary.scss} | 0 .../views/elements/{ProgressBar.css => _ProgressBar.scss} | 0 .../views/elements/{RichText.css => _RichText.scss} | 0 .../views/login/{ServerConfig.css => _ServerConfig.scss} | 0 .../views/messages/{MImageBody.css => _MImageBody.scss} | 0 .../views/messages/{MNoticeBody.css => _MNoticeBody.scss} | 0 .../views/messages/{MTextBody.css => _MTextBody.scss} | 0 .../messages/{TextualEvent.css => _TextualEvent.scss} | 0 .../views/messages/{UnknownBody.css => _UnknownBody.scss} | 0 .../views/rooms/{Autocomplete.css => _Autocomplete.scss} | 0 .../views/rooms/{EntityTile.css => _EntityTile.scss} | 0 .../views/rooms/{EventTile.css => _EventTile.scss} | 0 .../{LinkPreviewWidget.css => _LinkPreviewWidget.scss} | 0 .../rooms/{MemberDeviceInfo.css => _MemberDeviceInfo.scss} | 0 .../views/rooms/{MemberInfo.css => _MemberInfo.scss} | 0 .../views/rooms/{MemberList.css => _MemberList.scss} | 0 .../rooms/{MessageComposer.css => _MessageComposer.scss} | 0 .../views/rooms/{PresenceLabel.css => _PresenceLabel.scss} | 0 .../views/rooms/{RoomHeader.css => _RoomHeader.scss} | 0 .../views/rooms/{RoomList.css => _RoomList.scss} | 0 .../rooms/{RoomPreviewBar.css => _RoomPreviewBar.scss} | 0 .../views/rooms/{RoomSettings.css => _RoomSettings.scss} | 0 .../views/rooms/{RoomTile.css => _RoomTile.scss} | 0 ...SearchableEntityList.css => _SearchableEntityList.scss} | 0 .../rooms/{TabCompleteBar.css => _TabCompleteBar.scss} | 0 ...TopUnreadMessagesBar.css => _TopUnreadMessagesBar.scss} | 0 .../settings/{DevicesPanel.css => _DevicesPanel.scss} | 0 .../{IntegrationsManager.css => _IntegrationsManager.scss} | 0 .../views/voip/{CallView.css => _CallView.scss} | 0 .../voip/{IncomingCallbox.css => _IncomingCallbox.scss} | 0 .../views/voip/{VideoView.css => _VideoView.scss} | 0 src/skins/vector/css/themes/dark.scss | 7 +++++++ src/skins/vector/css/themes/light.scss | 4 ++++ src/skins/vector/css/vector-web/{fonts.css => _fonts.scss} | 0 .../{CompatibilityPage.css => _CompatibilityPage.scss} | 0 .../structures/{LeftPanel.css => _LeftPanel.scss} | 0 .../structures/{RightPanel.css => _RightPanel.scss} | 0 .../structures/{RoomDirectory.css => _RoomDirectory.scss} | 0 .../structures/{RoomSubList.css => _RoomSubList.scss} | 0 .../structures/{ViewSource.css => _ViewSource.scss} | 0 .../{MessageContextMenu.css => _MessageContextMenu.scss} | 0 ...eContextMenu.css => _NotificationStateContextMenu.scss} | 0 .../{RoomTagContextMenu.css => _RoomTagContextMenu.scss} | 0 .../dialogs/{ChangelogDialog.css => _ChangelogDialog.scss} | 0 .../{NetworkDropdown.css => _NetworkDropdown.scss} | 0 .../views/elements/{ImageView.css => _ImageView.scss} | 0 .../views/elements/{Spinner.css => _Spinner.scss} | 0 .../globals/{GuestWarningBar.css => _GuestWarningBar.scss} | 0 .../globals/{MatrixToolbar.css => _MatrixToolbar.scss} | 0 .../{MessageTimestamp.css => _MessageTimestamp.scss} | 0 .../messages/{SenderProfile.css => _SenderProfile.scss} | 0 .../rooms/{RoomDropTarget.css => _RoomDropTarget.scss} | 0 .../views/rooms/{RoomTooltip.css => _RoomTooltip.scss} | 0 .../views/rooms/{SearchBar.css => _SearchBar.scss} | 0 .../settings/{Notifications.css => _Notifications.scss} | 0 src/vector/index.js | 2 +- webpack.config.js | 1 + 77 files changed, 17 insertions(+), 3 deletions(-) rename src/skins/vector/css/{common.css => _common.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{ContextualMenu.css => _ContextualMenu.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{CreateRoom.css => _CreateRoom.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{FilePanel.css => _FilePanel.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{MatrixChat.css => _MatrixChat.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{NotificationPanel.css => _NotificationPanel.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{RoomStatusBar.css => _RoomStatusBar.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{RoomView.css => _RoomView.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{SearchBox.css => _SearchBox.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{UploadBar.css => _UploadBar.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/{UserSettings.css => _UserSettings.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/structures/login/{Login.css => _Login.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/avatars/{BaseAvatar.css => _BaseAvatar.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/dialogs/{ChatInviteDialog.css => _ChatInviteDialog.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/dialogs/{EncryptedEventDialog.css => _EncryptedEventDialog.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/dialogs/{SetDisplayNameDialog.css => _SetDisplayNameDialog.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/elements/{AddressSelector.css => _AddressSelector.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/elements/{AddressTile.css => _AddressTile.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/elements/{DirectorySearchBox.css => _DirectorySearchBox.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/elements/{MemberEventListSummary.css => _MemberEventListSummary.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/elements/{ProgressBar.css => _ProgressBar.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/elements/{RichText.css => _RichText.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/login/{ServerConfig.css => _ServerConfig.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/messages/{MImageBody.css => _MImageBody.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/messages/{MNoticeBody.css => _MNoticeBody.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/messages/{MTextBody.css => _MTextBody.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/messages/{TextualEvent.css => _TextualEvent.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/messages/{UnknownBody.css => _UnknownBody.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{Autocomplete.css => _Autocomplete.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{EntityTile.css => _EntityTile.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{EventTile.css => _EventTile.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{LinkPreviewWidget.css => _LinkPreviewWidget.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{MemberDeviceInfo.css => _MemberDeviceInfo.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{MemberInfo.css => _MemberInfo.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{MemberList.css => _MemberList.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{MessageComposer.css => _MessageComposer.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{PresenceLabel.css => _PresenceLabel.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{RoomHeader.css => _RoomHeader.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{RoomList.css => _RoomList.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{RoomPreviewBar.css => _RoomPreviewBar.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{RoomSettings.css => _RoomSettings.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{RoomTile.css => _RoomTile.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{SearchableEntityList.css => _SearchableEntityList.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{TabCompleteBar.css => _TabCompleteBar.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/rooms/{TopUnreadMessagesBar.css => _TopUnreadMessagesBar.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/settings/{DevicesPanel.css => _DevicesPanel.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/settings/{IntegrationsManager.css => _IntegrationsManager.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/voip/{CallView.css => _CallView.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/voip/{IncomingCallbox.css => _IncomingCallbox.scss} (100%) rename src/skins/vector/css/matrix-react-sdk/views/voip/{VideoView.css => _VideoView.scss} (100%) create mode 100644 src/skins/vector/css/themes/dark.scss create mode 100644 src/skins/vector/css/themes/light.scss rename src/skins/vector/css/vector-web/{fonts.css => _fonts.scss} (100%) rename src/skins/vector/css/vector-web/structures/{CompatibilityPage.css => _CompatibilityPage.scss} (100%) rename src/skins/vector/css/vector-web/structures/{LeftPanel.css => _LeftPanel.scss} (100%) rename src/skins/vector/css/vector-web/structures/{RightPanel.css => _RightPanel.scss} (100%) rename src/skins/vector/css/vector-web/structures/{RoomDirectory.css => _RoomDirectory.scss} (100%) rename src/skins/vector/css/vector-web/structures/{RoomSubList.css => _RoomSubList.scss} (100%) rename src/skins/vector/css/vector-web/structures/{ViewSource.css => _ViewSource.scss} (100%) rename src/skins/vector/css/vector-web/views/context_menus/{MessageContextMenu.css => _MessageContextMenu.scss} (100%) rename src/skins/vector/css/vector-web/views/context_menus/{NotificationStateContextMenu.css => _NotificationStateContextMenu.scss} (100%) rename src/skins/vector/css/vector-web/views/context_menus/{RoomTagContextMenu.css => _RoomTagContextMenu.scss} (100%) rename src/skins/vector/css/vector-web/views/dialogs/{ChangelogDialog.css => _ChangelogDialog.scss} (100%) rename src/skins/vector/css/vector-web/views/directory/{NetworkDropdown.css => _NetworkDropdown.scss} (100%) rename src/skins/vector/css/vector-web/views/elements/{ImageView.css => _ImageView.scss} (100%) rename src/skins/vector/css/vector-web/views/elements/{Spinner.css => _Spinner.scss} (100%) rename src/skins/vector/css/vector-web/views/globals/{GuestWarningBar.css => _GuestWarningBar.scss} (100%) rename src/skins/vector/css/vector-web/views/globals/{MatrixToolbar.css => _MatrixToolbar.scss} (100%) rename src/skins/vector/css/vector-web/views/messages/{MessageTimestamp.css => _MessageTimestamp.scss} (100%) rename src/skins/vector/css/vector-web/views/messages/{SenderProfile.css => _SenderProfile.scss} (100%) rename src/skins/vector/css/vector-web/views/rooms/{RoomDropTarget.css => _RoomDropTarget.scss} (100%) rename src/skins/vector/css/vector-web/views/rooms/{RoomTooltip.css => _RoomTooltip.scss} (100%) rename src/skins/vector/css/vector-web/views/rooms/{SearchBar.css => _SearchBar.scss} (100%) rename src/skins/vector/css/vector-web/views/settings/{Notifications.css => _Notifications.scss} (100%) diff --git a/package.json b/package.json index 3f9f46e2..c657aad6 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "build:config": "cpx config.json webapp/", "build:emojione": "cpx \"node_modules/emojione/assets/svg/*\" webapp/emojione/svg/", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", - "build:css": "mkdirp build && catw \"src/skins/vector/css/**/*.css\" -o build/components.css --no-watch", + "build:css": "mkdirp build && node-sass --recursive --source-map true --output build \"src/skins/vector/css\"", "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", @@ -44,7 +44,7 @@ "start:emojione": "cpx \"node_modules/emojione/assets/svg/*\" webapp/emojione/svg/ -w", "start:js": "webpack-dev-server -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", - "start:skins:css": "mkdirp build && catw \"src/skins/vector/css/**/*.css\" -o build/components.css", + "start:skins:css": "mkdirp build && node-sass --recursive --watch --source-map true --output build \"src/skins/vector/css\"", "start": "node scripts/babelcheck.js && parallelshell \"npm run start:emojione\" \"npm run start:res\" \"npm run start:config\" \"npm run start:js\" \"npm run start:skins:css\"", "start:prod": "parallelshell \"npm run start:emojione\" \"npm run start:js:prod\" \"npm run start:skins:css\"", "clean": "rimraf build lib webapp electron/dist", @@ -113,11 +113,13 @@ "karma-webpack": "^1.7.0", "mkdirp": "^0.5.1", "mocha": "^2.4.5", + "node-sass": "^4.1.1", "parallelshell": "^1.2.0", "phantomjs-prebuilt": "^2.1.7", "react-addons-perf": "^15.4.0", "react-addons-test-utils": "^15.4.0", "rimraf": "^2.4.3", + "sass-loader": "^4.1.1", "source-map-loader": "^0.1.5", "webpack": "^1.12.14", "webpack-dev-server": "^1.16.2" diff --git a/src/skins/vector/css/common.css b/src/skins/vector/css/_common.scss similarity index 100% rename from src/skins/vector/css/common.css rename to src/skins/vector/css/_common.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/ContextualMenu.css b/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/ContextualMenu.css rename to src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/CreateRoom.css b/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/CreateRoom.css rename to src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/FilePanel.css b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/FilePanel.css rename to src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/MatrixChat.css b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/MatrixChat.css rename to src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/NotificationPanel.css b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/NotificationPanel.css rename to src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/RoomStatusBar.css b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/RoomStatusBar.css rename to src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/RoomView.css rename to src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/SearchBox.css b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/SearchBox.css rename to src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/UploadBar.css b/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/UploadBar.css rename to src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/UserSettings.css b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/UserSettings.css rename to src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/Login.css b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/structures/login/Login.css rename to src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/avatars/BaseAvatar.css b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/avatars/BaseAvatar.css rename to src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/ChatInviteDialog.css b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/dialogs/ChatInviteDialog.css rename to src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/EncryptedEventDialog.css b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/dialogs/EncryptedEventDialog.css rename to src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/SetDisplayNameDialog.css b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/dialogs/SetDisplayNameDialog.css rename to src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/AddressSelector.css b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/elements/AddressSelector.css rename to src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/AddressTile.css b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/elements/AddressTile.css rename to src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css rename to src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/MemberEventListSummary.css b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/elements/MemberEventListSummary.css rename to src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/ProgressBar.css b/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/elements/ProgressBar.css rename to src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/RichText.css b/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/elements/RichText.css rename to src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/login/ServerConfig.css b/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/login/ServerConfig.css rename to src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/MImageBody.css b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/messages/MImageBody.css rename to src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/MNoticeBody.css b/src/skins/vector/css/matrix-react-sdk/views/messages/_MNoticeBody.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/messages/MNoticeBody.css rename to src/skins/vector/css/matrix-react-sdk/views/messages/_MNoticeBody.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/MTextBody.css b/src/skins/vector/css/matrix-react-sdk/views/messages/_MTextBody.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/messages/MTextBody.css rename to src/skins/vector/css/matrix-react-sdk/views/messages/_MTextBody.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/TextualEvent.css b/src/skins/vector/css/matrix-react-sdk/views/messages/_TextualEvent.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/messages/TextualEvent.css rename to src/skins/vector/css/matrix-react-sdk/views/messages/_TextualEvent.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/UnknownBody.css b/src/skins/vector/css/matrix-react-sdk/views/messages/_UnknownBody.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/messages/UnknownBody.css rename to src/skins/vector/css/matrix-react-sdk/views/messages/_UnknownBody.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/Autocomplete.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/Autocomplete.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/EntityTile.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/EntityTile.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/EventTile.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/EventTile.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/LinkPreviewWidget.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/LinkPreviewWidget.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/MemberDeviceInfo.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/MemberDeviceInfo.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/MemberInfo.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/MemberInfo.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/MemberList.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/MemberList.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/MessageComposer.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/MessageComposer.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/PresenceLabel.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_PresenceLabel.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/PresenceLabel.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_PresenceLabel.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomHeader.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/RoomHeader.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomList.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/RoomList.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomPreviewBar.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/RoomPreviewBar.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomSettings.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/RoomSettings.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/SearchableEntityList.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/SearchableEntityList.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/TabCompleteBar.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TabCompleteBar.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/TabCompleteBar.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_TabCompleteBar.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/TopUnreadMessagesBar.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/rooms/TopUnreadMessagesBar.css rename to src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/settings/DevicesPanel.css b/src/skins/vector/css/matrix-react-sdk/views/settings/_DevicesPanel.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/settings/DevicesPanel.css rename to src/skins/vector/css/matrix-react-sdk/views/settings/_DevicesPanel.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/settings/IntegrationsManager.css b/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/settings/IntegrationsManager.css rename to src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/CallView.css b/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/voip/CallView.css rename to src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/IncomingCallbox.css b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/voip/IncomingCallbox.css rename to src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/VideoView.css b/src/skins/vector/css/matrix-react-sdk/views/voip/_VideoView.scss similarity index 100% rename from src/skins/vector/css/matrix-react-sdk/views/voip/VideoView.css rename to src/skins/vector/css/matrix-react-sdk/views/voip/_VideoView.scss diff --git a/src/skins/vector/css/themes/dark.scss b/src/skins/vector/css/themes/dark.scss new file mode 100644 index 00000000..19ab2cde --- /dev/null +++ b/src/skins/vector/css/themes/dark.scss @@ -0,0 +1,7 @@ +// typical text (dark-on-white in light skin) +$primary-fg-color: #dddddd; +$primary-bg-color: #2d2d2d; + +// button UI (white-on-green in light skin) + +@import "../_components" \ No newline at end of file diff --git a/src/skins/vector/css/themes/light.scss b/src/skins/vector/css/themes/light.scss new file mode 100644 index 00000000..e0ad84f6 --- /dev/null +++ b/src/skins/vector/css/themes/light.scss @@ -0,0 +1,4 @@ +$primary-fg-color: #454545; +$primary-bg-color: #ffffff; + +@import "../_components" \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/fonts.css b/src/skins/vector/css/vector-web/_fonts.scss similarity index 100% rename from src/skins/vector/css/vector-web/fonts.css rename to src/skins/vector/css/vector-web/_fonts.scss diff --git a/src/skins/vector/css/vector-web/structures/CompatibilityPage.css b/src/skins/vector/css/vector-web/structures/_CompatibilityPage.scss similarity index 100% rename from src/skins/vector/css/vector-web/structures/CompatibilityPage.css rename to src/skins/vector/css/vector-web/structures/_CompatibilityPage.scss diff --git a/src/skins/vector/css/vector-web/structures/LeftPanel.css b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss similarity index 100% rename from src/skins/vector/css/vector-web/structures/LeftPanel.css rename to src/skins/vector/css/vector-web/structures/_LeftPanel.scss diff --git a/src/skins/vector/css/vector-web/structures/RightPanel.css b/src/skins/vector/css/vector-web/structures/_RightPanel.scss similarity index 100% rename from src/skins/vector/css/vector-web/structures/RightPanel.css rename to src/skins/vector/css/vector-web/structures/_RightPanel.scss diff --git a/src/skins/vector/css/vector-web/structures/RoomDirectory.css b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss similarity index 100% rename from src/skins/vector/css/vector-web/structures/RoomDirectory.css rename to src/skins/vector/css/vector-web/structures/_RoomDirectory.scss diff --git a/src/skins/vector/css/vector-web/structures/RoomSubList.css b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss similarity index 100% rename from src/skins/vector/css/vector-web/structures/RoomSubList.css rename to src/skins/vector/css/vector-web/structures/_RoomSubList.scss diff --git a/src/skins/vector/css/vector-web/structures/ViewSource.css b/src/skins/vector/css/vector-web/structures/_ViewSource.scss similarity index 100% rename from src/skins/vector/css/vector-web/structures/ViewSource.css rename to src/skins/vector/css/vector-web/structures/_ViewSource.scss diff --git a/src/skins/vector/css/vector-web/views/context_menus/MessageContextMenu.css b/src/skins/vector/css/vector-web/views/context_menus/_MessageContextMenu.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/context_menus/MessageContextMenu.css rename to src/skins/vector/css/vector-web/views/context_menus/_MessageContextMenu.scss diff --git a/src/skins/vector/css/vector-web/views/context_menus/NotificationStateContextMenu.css b/src/skins/vector/css/vector-web/views/context_menus/_NotificationStateContextMenu.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/context_menus/NotificationStateContextMenu.css rename to src/skins/vector/css/vector-web/views/context_menus/_NotificationStateContextMenu.scss diff --git a/src/skins/vector/css/vector-web/views/context_menus/RoomTagContextMenu.css b/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/context_menus/RoomTagContextMenu.css rename to src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss diff --git a/src/skins/vector/css/vector-web/views/dialogs/ChangelogDialog.css b/src/skins/vector/css/vector-web/views/dialogs/_ChangelogDialog.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/dialogs/ChangelogDialog.css rename to src/skins/vector/css/vector-web/views/dialogs/_ChangelogDialog.scss diff --git a/src/skins/vector/css/vector-web/views/directory/NetworkDropdown.css b/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/directory/NetworkDropdown.css rename to src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss diff --git a/src/skins/vector/css/vector-web/views/elements/ImageView.css b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/elements/ImageView.css rename to src/skins/vector/css/vector-web/views/elements/_ImageView.scss diff --git a/src/skins/vector/css/vector-web/views/elements/Spinner.css b/src/skins/vector/css/vector-web/views/elements/_Spinner.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/elements/Spinner.css rename to src/skins/vector/css/vector-web/views/elements/_Spinner.scss diff --git a/src/skins/vector/css/vector-web/views/globals/GuestWarningBar.css b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/globals/GuestWarningBar.css rename to src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss diff --git a/src/skins/vector/css/vector-web/views/globals/MatrixToolbar.css b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/globals/MatrixToolbar.css rename to src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss diff --git a/src/skins/vector/css/vector-web/views/messages/MessageTimestamp.css b/src/skins/vector/css/vector-web/views/messages/_MessageTimestamp.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/messages/MessageTimestamp.css rename to src/skins/vector/css/vector-web/views/messages/_MessageTimestamp.scss diff --git a/src/skins/vector/css/vector-web/views/messages/SenderProfile.css b/src/skins/vector/css/vector-web/views/messages/_SenderProfile.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/messages/SenderProfile.css rename to src/skins/vector/css/vector-web/views/messages/_SenderProfile.scss diff --git a/src/skins/vector/css/vector-web/views/rooms/RoomDropTarget.css b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/rooms/RoomDropTarget.css rename to src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss diff --git a/src/skins/vector/css/vector-web/views/rooms/RoomTooltip.css b/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/rooms/RoomTooltip.css rename to src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss diff --git a/src/skins/vector/css/vector-web/views/rooms/SearchBar.css b/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/rooms/SearchBar.css rename to src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss diff --git a/src/skins/vector/css/vector-web/views/settings/Notifications.css b/src/skins/vector/css/vector-web/views/settings/_Notifications.scss similarity index 100% rename from src/skins/vector/css/vector-web/views/settings/Notifications.css rename to src/skins/vector/css/vector-web/views/settings/_Notifications.scss diff --git a/src/vector/index.js b/src/vector/index.js index 8231950b..96c6a971 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -30,7 +30,7 @@ require('babel-polyfill'); // CSS requires: just putting them here for now as CSS is going to be // refactored "soon" anyway -require('../../build/components.css'); +require('../../build/themes/light.css'); require('gemini-scrollbar/gemini-scrollbar.css'); require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); diff --git a/webpack.config.js b/webpack.config.js index 3500fedc..1c408b70 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -25,6 +25,7 @@ module.exports = { { test: /\.js$/, loader: "babel", include: path.resolve('./src') }, // css-raw-loader loads CSS but doesn't try to treat url()s as require()s { test: /\.css$/, loader: ExtractTextPlugin.extract("css-raw-loader") }, + { test: /\.scss$/, loaders: ["style-loader", "css-loader?sourceMap", "sass-loader?sourceMap"] }, ], noParse: [ // don't parse the languages within highlight.js. They cause stack From c5fa84cd28e7e0dcd389d98fd307728e0e2d896e Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 28 Dec 2016 02:02:05 +0000 Subject: [PATCH 113/243] autogenerate the _components.scss index --- src/skins/vector/css/rethemendex.sh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100755 src/skins/vector/css/rethemendex.sh diff --git a/src/skins/vector/css/rethemendex.sh b/src/skins/vector/css/rethemendex.sh new file mode 100755 index 00000000..27c47224 --- /dev/null +++ b/src/skins/vector/css/rethemendex.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +echo "// autogenerated by rethemendex.sh" > _components.scss + +for i in `find */* -iname _\*.scss`; +do + echo "@import \"`dirname $i`/`basename $i .scss`\";" >> _components.scss +done From 33f0eaada0b6348305ab86b4f6557ae344dc42c2 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 28 Dec 2016 02:02:23 +0000 Subject: [PATCH 114/243] autogen _components.css --- src/skins/vector/css/_components.scss | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/skins/vector/css/_components.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss new file mode 100644 index 00000000..1106f249 --- /dev/null +++ b/src/skins/vector/css/_components.scss @@ -0,0 +1,72 @@ +// autogenerated by rethemendex.sh +@import "matrix-react-sdk/structures/_ContextualMenu"; +@import "matrix-react-sdk/structures/_CreateRoom"; +@import "matrix-react-sdk/structures/_FilePanel"; +@import "matrix-react-sdk/structures/_MatrixChat"; +@import "matrix-react-sdk/structures/_NotificationPanel"; +@import "matrix-react-sdk/structures/_RoomStatusBar"; +@import "matrix-react-sdk/structures/_RoomView"; +@import "matrix-react-sdk/structures/_SearchBox"; +@import "matrix-react-sdk/structures/_UploadBar"; +@import "matrix-react-sdk/structures/_UserSettings"; +@import "matrix-react-sdk/structures/login/_Login"; +@import "matrix-react-sdk/views/avatars/_BaseAvatar"; +@import "matrix-react-sdk/views/dialogs/_ChatInviteDialog"; +@import "matrix-react-sdk/views/dialogs/_EncryptedEventDialog"; +@import "matrix-react-sdk/views/dialogs/_SetDisplayNameDialog"; +@import "matrix-react-sdk/views/elements/_AddressSelector"; +@import "matrix-react-sdk/views/elements/_AddressTile"; +@import "matrix-react-sdk/views/elements/_DirectorySearchBox"; +@import "matrix-react-sdk/views/elements/_MemberEventListSummary"; +@import "matrix-react-sdk/views/elements/_ProgressBar"; +@import "matrix-react-sdk/views/elements/_RichText"; +@import "matrix-react-sdk/views/login/_ServerConfig"; +@import "matrix-react-sdk/views/messages/_MImageBody"; +@import "matrix-react-sdk/views/messages/_MNoticeBody"; +@import "matrix-react-sdk/views/messages/_MTextBody"; +@import "matrix-react-sdk/views/messages/_TextualEvent"; +@import "matrix-react-sdk/views/messages/_UnknownBody"; +@import "matrix-react-sdk/views/rooms/_Autocomplete"; +@import "matrix-react-sdk/views/rooms/_EntityTile"; +@import "matrix-react-sdk/views/rooms/_EventTile"; +@import "matrix-react-sdk/views/rooms/_LinkPreviewWidget"; +@import "matrix-react-sdk/views/rooms/_MemberDeviceInfo"; +@import "matrix-react-sdk/views/rooms/_MemberInfo"; +@import "matrix-react-sdk/views/rooms/_MemberList"; +@import "matrix-react-sdk/views/rooms/_MessageComposer"; +@import "matrix-react-sdk/views/rooms/_PresenceLabel"; +@import "matrix-react-sdk/views/rooms/_RoomHeader"; +@import "matrix-react-sdk/views/rooms/_RoomList"; +@import "matrix-react-sdk/views/rooms/_RoomPreviewBar"; +@import "matrix-react-sdk/views/rooms/_RoomSettings"; +@import "matrix-react-sdk/views/rooms/_RoomTile"; +@import "matrix-react-sdk/views/rooms/_SearchableEntityList"; +@import "matrix-react-sdk/views/rooms/_TabCompleteBar"; +@import "matrix-react-sdk/views/rooms/_TopUnreadMessagesBar"; +@import "matrix-react-sdk/views/settings/_DevicesPanel"; +@import "matrix-react-sdk/views/settings/_IntegrationsManager"; +@import "matrix-react-sdk/views/voip/_CallView"; +@import "matrix-react-sdk/views/voip/_IncomingCallbox"; +@import "matrix-react-sdk/views/voip/_VideoView"; +@import "vector-web/_fonts"; +@import "vector-web/structures/_CompatibilityPage"; +@import "vector-web/structures/_LeftPanel"; +@import "vector-web/structures/_RightPanel"; +@import "vector-web/structures/_RoomDirectory"; +@import "vector-web/structures/_RoomSubList"; +@import "vector-web/structures/_ViewSource"; +@import "vector-web/views/context_menus/_MessageContextMenu"; +@import "vector-web/views/context_menus/_NotificationStateContextMenu"; +@import "vector-web/views/context_menus/_RoomTagContextMenu"; +@import "vector-web/views/dialogs/_ChangelogDialog"; +@import "vector-web/views/directory/_NetworkDropdown"; +@import "vector-web/views/elements/_ImageView"; +@import "vector-web/views/elements/_Spinner"; +@import "vector-web/views/globals/_GuestWarningBar"; +@import "vector-web/views/globals/_MatrixToolbar"; +@import "vector-web/views/messages/_MessageTimestamp"; +@import "vector-web/views/messages/_SenderProfile"; +@import "vector-web/views/rooms/_RoomDropTarget"; +@import "vector-web/views/rooms/_RoomTooltip"; +@import "vector-web/views/rooms/_SearchBar"; +@import "vector-web/views/settings/_Notifications"; From c6beaa16318d005f0548f19f2dc956e17c60f1de Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 28 Dec 2016 04:04:43 +0000 Subject: [PATCH 115/243] initial stab at an official dark theme via the magic of SASS. SVGs are all broken, and some of the more exotic colours haven't been updated. There's been no attempt to use SASS to remove duplication from the CSS yet. no attempt to switch it at runtime yet. --- src/skins/vector/css/_common.scss | 51 +++++++------- src/skins/vector/css/_components.scss | 1 + .../structures/_ContextualMenu.scss | 14 ++-- .../structures/_CreateRoom.scss | 4 +- .../structures/_FilePanel.scss | 10 +-- .../structures/_MatrixChat.scss | 4 +- .../structures/_NotificationPanel.scss | 7 +- .../structures/_RoomStatusBar.scss | 16 ++--- .../structures/_RoomView.scss | 24 +++---- .../structures/_UploadBar.scss | 6 +- .../structures/_UserSettings.scss | 6 +- .../structures/login/_Login.scss | 14 ++-- .../views/avatars/_BaseAvatar.scss | 2 +- .../views/dialogs/_ChatInviteDialog.scss | 4 +- .../views/dialogs/_EncryptedEventDialog.scss | 6 +- .../views/dialogs/_SetDisplayNameDialog.scss | 6 +- .../views/elements/_AddressSelector.scss | 16 ++--- .../views/elements/_AddressTile.scss | 8 +-- .../views/elements/_DirectorySearchBox.scss | 2 +- .../elements/_MemberEventListSummary.scss | 2 +- .../views/elements/_RichText.scss | 6 +- .../views/login/_ServerConfig.scss | 2 +- .../views/messages/_MImageBody.scss | 8 +-- .../views/rooms/_Autocomplete.scss | 12 ++-- .../views/rooms/_EntityTile.scss | 6 +- .../views/rooms/_EventTile.scss | 34 +++++----- .../views/rooms/_MemberDeviceInfo.scss | 14 ++-- .../views/rooms/_MemberInfo.scss | 4 +- .../views/rooms/_MemberList.scss | 10 +-- .../views/rooms/_MessageComposer.scss | 10 +-- .../views/rooms/_RoomHeader.scss | 16 ++--- .../views/rooms/_RoomPreviewBar.scss | 4 +- .../views/rooms/_RoomSettings.scss | 18 ++--- .../views/rooms/_RoomTile.scss | 14 ++-- .../views/rooms/_SearchableEntityList.scss | 10 +-- .../views/rooms/_TabCompleteBar.scss | 6 +- .../views/rooms/_TopUnreadMessagesBar.scss | 2 +- .../views/settings/_IntegrationsManager.scss | 2 +- .../views/voip/_CallView.scss | 4 +- .../views/voip/_IncomingCallbox.scss | 4 +- src/skins/vector/css/rethemendex.sh | 2 +- src/skins/vector/css/themes/_base.scss | 68 +++++++++++++++++++ src/skins/vector/css/themes/dark.scss | 66 +++++++++++++++++- src/skins/vector/css/themes/light.scss | 6 +- .../vector-web/structures/_RightPanel.scss | 10 +-- .../vector-web/structures/_RoomDirectory.scss | 6 +- .../vector-web/structures/_RoomSubList.scss | 36 +++++----- .../context_menus/_RoomTagContextMenu.scss | 2 +- .../views/directory/_NetworkDropdown.scss | 6 +- .../vector-web/views/elements/_ImageView.scss | 8 +-- .../views/globals/_GuestWarningBar.scss | 6 +- .../views/globals/_MatrixToolbar.scss | 6 +- .../views/rooms/_RoomDropTarget.scss | 6 +- .../vector-web/views/rooms/_RoomTooltip.scss | 12 ++-- .../vector-web/views/rooms/_SearchBar.scss | 14 ++-- .../views/settings/_Notifications.scss | 2 +- src/vector/index.js | 2 +- 57 files changed, 388 insertions(+), 259 deletions(-) create mode 100644 src/skins/vector/css/themes/_base.scss diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index bb00bbd8..e81ea2fa 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -29,7 +29,8 @@ body { Arial here. */ font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; font-size: 15px; - color: #454545; + background-color: $primary-bg-color; + color: $primary-fg-color; border: 0px; margin: 0px; /* This should render the fonts the same accross browsers */ @@ -41,7 +42,7 @@ div.error { } h2 { - color: #454545; + color: $primary-fg-color; font-weight: 400; font-size: 18px; margin-top: 16px; @@ -51,7 +52,7 @@ h2 { a:hover, a:link, a:visited { - color: #76cfa6; + color: $accent-color; } input[type=text].error, input[type=password].error { @@ -59,7 +60,7 @@ input[type=text].error, input[type=password].error { } input[type=text]:focus, textarea:focus { - border: 1px solid #76CFA6; + border: 1px solid $accent-color; outline: none; box-shadow: none; } @@ -148,8 +149,8 @@ textarea { } .mx_Dialog { - background-color: #fff; - color: #747474; + background-color: $primary-bg-color; + color: $light-fg-color; z-index: 4010; font-weight: 300; font-size: 15px; @@ -190,7 +191,7 @@ textarea { .mx_Dialog_content { margin: 24px 58px 68px 0; font-size: 14px; - color: #4a4a4a; + color: $primary-fg-color; word-wrap: break-word; } @@ -202,7 +203,7 @@ textarea { border: 0px; height: 36px; border-radius: 40px; - border: solid 1px #76cfa6; + border: solid 1px $accent-color; font-weight: 600; font-size: 14px; font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; @@ -212,26 +213,26 @@ textarea { padding-right: 1.5em; outline: none; cursor: pointer; - color: #76cfa6; - background-color: #fff; + color: $accent-color; + background-color: $primary-bg-color; /* align images in buttons (eg spinners) */ vertical-align: middle; } .mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { - color: #fff; - background-color: #76cfa6; + color: $accent-fg-color; + background-color: $accent-color; } .mx_Dialog button.danger, .mx_Dialog input[type="submit"].danger { - background-color: #ff0064; - border: solid 1px #ff0064; + background-color: $warning-color; + border: solid 1px $warning-color; } .mx_Dialog button:disabled, .mx_Dialog input[type="submit"]:disabled { - background-color: #777777; - border: solid 1px #777777; + background-color: $light-fg-color; + border: solid 1px $light-fg-color; opacity: 0.7; } @@ -241,11 +242,11 @@ textarea { font-weight: bold; font-size: 22px; line-height: 1.4; - color: #454545; + color: $primary-fg-color; } .mx_Dialog_title.danger { - color: #ff0064; + color: $warning-color; } .mx_TextInputDialog_label { @@ -256,10 +257,10 @@ textarea { .mx_TextInputDialog_input { font-size: 15px; border-radius: 3px; - border: 1px solid #f0f0f0; + border: 1px solid $input-border-color; padding: 9px; - color: #454545; - background-color: #fff; + color: $primary-fg-color; + background-color: $primary-bg-color; } .mx_emojione { @@ -268,19 +269,19 @@ textarea { } ::-moz-selection { - background-color: #76CFA6; + background-color: $accent-color; color: white; } ::selection { - background-color: #76CFA6; + background-color: $accent-color; color: white; } /** green button with rounded corners */ .mx_textButton { - color: #fff; - background-color: #76cfa6; + color: $accent-fg-color; + background-color: $accent-color; border-radius: 17px; text-align: center; padding-left: 1em; diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 1106f249..532e0a36 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -1,4 +1,5 @@ // autogenerated by rethemendex.sh +@import "_common"; @import "matrix-react-sdk/structures/_ContextualMenu"; @import "matrix-react-sdk/structures/_CreateRoom"; @import "matrix-react-sdk/structures/_FilePanel"; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss b/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss index d317363d..d3e73a9a 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_ContextualMenu.scss @@ -30,10 +30,10 @@ limitations under the License. } .mx_ContextualMenu { - border: solid 1px rgba(187, 187, 187, 0.5); + border: solid 1px $menu-border-color; border-radius: 4px; - background-color: #f6f6f6; - color: #4a4a4a; + background-color: $menu-bg-color; + color: $primary-fg-color; position: absolute; padding: 6px; font-size: 14px; @@ -51,7 +51,7 @@ limitations under the License. width: 0; height: 0; border-top: 8px solid transparent; - border-left: 8px solid rgba(187, 187, 187, 0.5); + border-left: 8px solid $menu-border-color; border-bottom: 8px solid transparent; } @@ -60,7 +60,7 @@ limitations under the License. width: 0; height: 0; border-top: 7px solid transparent; - border-left: 7px solid #f6f6f6; + border-left: 7px solid $menu-bg-color; border-bottom: 7px solid transparent; position:absolute; top: -7px; @@ -78,7 +78,7 @@ limitations under the License. width: 0; height: 0; border-top: 8px solid transparent; - border-right: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid $menu-border-color; border-bottom: 8px solid transparent; } @@ -87,7 +87,7 @@ limitations under the License. width: 0; height: 0; border-top: 7px solid transparent; - border-right: 7px solid #f6f6f6; + border-right: 7px solid $menu-bg-color; border-bottom: 7px solid transparent; position:absolute; top: -7px; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss b/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss index 88804409..2be19352 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_CreateRoom.scss @@ -18,13 +18,13 @@ limitations under the License. width: 960px; margin-left: auto; margin-right: auto; - color: #4a4a4a; + color: $primary-fg-color; } .mx_CreateRoom input, .mx_CreateRoom textarea { border-radius: 3px; - border: 1px solid #c7c7c7; + border: 1px solid $strong-input-border-color; font-weight: 300; font-size: 13px; padding: 9px; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss index fca53b1d..2f4a00ad 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss @@ -58,12 +58,12 @@ limitations under the License. .mx_FilePanel .mx_EventTile .mx_MImageBody_download { display: flex; font-size: 14px; - color: #acacac; + color: $event-timestamp-color; } .mx_FilePanel .mx_EventTile .mx_MImageBody_downloadLink { flex: 1 1 auto; - color: #747474; + color: $light-fg-color; } .mx_FilePanel .mx_EventTile .mx_MImageBody_size { @@ -90,7 +90,7 @@ limitations under the License. padding: 0px; font-size: 11px; opacity: 1.0; - color: #acacac; + color: $event-timestamp-color; } .mx_FilePanel .mx_EventTile .mx_MessageTimestamp { @@ -100,7 +100,7 @@ limitations under the License. position: initial; font-size: 11px; opacity: 1.0; - color: #acacac; + color: $event-timestamp-color; } /* Overrides for the wrappers around the body tile */ @@ -111,7 +111,7 @@ limitations under the License. } .mx_FilePanel .mx_EventTile:hover .mx_EventTile_line { - background-color: #fff; + background-color: $primary-bg-color; } .mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss index f1cc7d4a..5587a609 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss @@ -91,7 +91,7 @@ limitations under the License. -webkit-order: 1; order: 1; - background-color: #eaf5f0; + background-color: $secondary-accent-color; -webkit-flex: 0 0 235px; flex: 0 0 235px; @@ -111,7 +111,7 @@ limitations under the License. padding-left: 20px; padding-right: 22px; - background-color: #fff; + background-color: $primary-bg-color; -webkit-flex: 1; flex: 1; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss index 83b0a033..06dd92f3 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss @@ -51,7 +51,7 @@ limitations under the License. } .mx_NotificationPanel .mx_EventTile_roomName a { - color: #4a4a4a; + color: $primary-fg-color; } .mx_NotificationPanel .mx_EventTile_avatar { @@ -61,8 +61,7 @@ limitations under the License. .mx_NotificationPanel .mx_EventTile .mx_SenderProfile, .mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { - color: #000; - opacity: 0.3; + color: $primary-fg-color; font-size: 12px; display: inline; padding-left: 0px; @@ -94,7 +93,7 @@ limitations under the License. } .mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { - background-color: #fff; + background-color: $primary-bg-color; } .mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss index ef0b69c4..d0ac5a60 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss @@ -36,7 +36,7 @@ limitations under the License. } .mx_RoomStatusBar_placeholderIndicator span { - color: #4a4a4a; + color: $primary-fg-color; opacity: 0.5; position: relative; top: -4px; @@ -76,7 +76,7 @@ limitations under the License. .mx_RoomStatusBar_unreadMessagesBar { padding-top: 10px; - color: #ff0064; + color: $warning-color; cursor: pointer; } @@ -93,29 +93,29 @@ limitations under the License. } .mx_RoomStatusBar_connectionLostBar_title { - color: #ff0064; + color: $warning-color; } .mx_RoomStatusBar_connectionLostBar_desc { - color: #454545; + color: $primary-fg-color; font-size: 13px; opacity: 0.5; } .mx_RoomStatusBar_resend_link { - color: #454545 ! important; + color: $primary-fg-color ! important; text-decoration: underline ! important; cursor: pointer; } .mx_RoomStatusBar_tabCompleteBar { padding-top: 10px; - color: #4a4a4a; + color: $primary-fg-color; } .mx_RoomStatusBar_typingBar { padding-top: 10px; - color: #4a4a4a; + color: $primary-fg-color; opacity: 0.5; overflow-y: hidden; display: block; @@ -135,7 +135,7 @@ limitations under the License. .mx_RoomStatusBar_tabCompleteEol { flex: 0 0 auto; -webkit-flex: 0 0 auto; - color: #76CFA6; + color: $accent-color; } .mx_RoomStatusBar_tabCompleteEol object { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index c3f7ceed..182d690c 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -89,7 +89,7 @@ limitations under the License. margin: auto; overflow: auto; - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid $primary-hairline-color; -webkit-flex: 0 0 auto; flex: 0 0 auto; @@ -158,7 +158,7 @@ limitations under the License. margin-bottom: 8px; margin-left: 63px; padding-bottom: 6px; - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid $primary-hairline-color; } .mx_RoomView_invitePrompt { @@ -185,8 +185,8 @@ li.mx_RoomView_myReadMarker_container { } hr.mx_RoomView_myReadMarker { - border-top: solid 1px #76cfa6; - border-bottom: solid 1px #76cfa6; + border-top: solid 1px $accent-color; + border-bottom: solid 1px $accent-color; margin-top: 0px; position: relative; top: 5px; @@ -212,16 +212,16 @@ hr.mx_RoomView_myReadMarker { .mx_RoomView_statusAreaBox_line { margin-left: 65px; - border-top: 1px solid #e5e5e5; + border-top: 1px solid $primary-hairline-color; height: 1px; } .mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { - background-color: #fff; + background-color: $primary-bg-color; } .mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { - color: #fff; + color: $accent-fg-color; opacity: 1.0; } @@ -234,8 +234,8 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_inCall .mx_RoomView_statusAreaBox { - background-color: #76CFA6; - color: #fff; + background-color: $accent-color; + color: $accent-fg-color; position: relative; } @@ -272,13 +272,13 @@ hr.mx_RoomView_myReadMarker { .mx_RoomView_ongoingConfCallNotification { width: 100%; text-align: center; - background-color: #ff0064; - color: #fff; + background-color: $warning-color; + color: $accent-fg-color; font-weight: bold; padding: 6px 0; cursor: pointer; } .mx_RoomView_ongoingConfCallNotification a { - color: #fff ! important; + color: $accent-fg-color ! important; } \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss index b489e132..d76c8166 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UploadBar.scss @@ -26,7 +26,7 @@ limitations under the License. } .mx_UploadBar_uploadProgressInner { - background-color: #76cfa6; + background-color: $accent-color; height: 5px; } @@ -34,7 +34,7 @@ limitations under the License. margin-top: 5px; margin-left: 65px; opacity: 0.5; - color: #4a4a4a; + color: $primary-fg-color; } .mx_UploadBar_uploadIcon { @@ -57,5 +57,5 @@ limitations under the License. float: right; margin-top: 5px; margin-right: 30px; - color: #76cfa6; + color: $accent-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 427369a5..6ba1002b 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -84,8 +84,8 @@ limitations under the License. border-radius: 36px; font-weight: 400; font-size: 16px; - color: #fff; - background-color: #76cfa6; + color: $accent-fg-color; + background-color: $accent-color; width: auto; margin: auto; padding: 7px; @@ -95,7 +95,7 @@ limitations under the License. } .mx_UserSettings_button.danger { - background-color: #ff0064; + background-color: $warning-color; } .mx_UserSettings_section { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 0f610b25..5f4164e8 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -32,7 +32,7 @@ limitations under the License. } .mx_Login h2 { - color: #4a4a4a; + color: $primary-fg-color; font-weight: 300; margin-top: 32px; margin-bottom: 20px; @@ -53,7 +53,7 @@ limitations under the License. .mx_Login_field { width: 100%; border-radius: 3px; - border: 1px solid #c7c7c7; + border: 1px solid $strong-input-border-color; font-weight: 300; font-size: 13px; padding: 9px; @@ -75,9 +75,9 @@ limitations under the License. border-radius: 40px; height: 40px; border: 0px; - background-color: #76cfa6; + background-color: $accent-color; font-size: 15px; - color: #fff; + color: $accent-fg-color; } .mx_Login_label { @@ -99,7 +99,7 @@ limitations under the License. } .mx_Login_create:link { - color: #4a4a4a; + color: $primary-fg-color; } .mx_Login_links { @@ -112,7 +112,7 @@ limitations under the License. } .mx_Login_links a:link { - color: #4a4a4a; + color: $primary-fg-color; } .mx_Login_prompt { @@ -127,7 +127,7 @@ limitations under the License. } .mx_Login_forgot:link { - color: #4a4a4a; + color: $primary-fg-color; } .mx_Login_loader { diff --git a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss index 901a2959..d481e5c1 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss @@ -21,7 +21,7 @@ limitations under the License. .mx_BaseAvatar_initial { position: absolute; z-index: 1; - color: #fff; + color: $avatar-initial-color; text-align: center; speak: none; pointer-events: none; diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss index aa1dced8..6bf9adce 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss @@ -36,7 +36,7 @@ limitations under the License. .mx_ChatInviteDialog_inputContainer { border-radius: 3px; - border: solid 1px #f0f0f0; + border: solid 1px $input-border-color; line-height: 36px; padding-left: 4px; padding-right: 4px; @@ -49,7 +49,7 @@ limitations under the License. .mx_ChatInviteDialog_error { position: absolute; - color: #ff0064; + color: $warning-color; line-height: 36px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss index 5e72d7f8..cbc0195c 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss @@ -24,7 +24,7 @@ limitations under the License. border: 0px; height: 36px; border-radius: 40px; - border: solid 1px #76cfa6; + border: solid 1px $accent-color; font-weight: 600; font-size: 14px; font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; @@ -34,6 +34,6 @@ limitations under the License. padding-right: 1.5em; outline: none; cursor: pointer; - color: #76cfa6; - background-color: #fff; + color: $accent-color; + background-color: $primary-bg-color; } \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss index 68409a80..2f0750ad 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss @@ -16,9 +16,9 @@ limitations under the License. .mx_SetDisplayNameDialog_input { border-radius: 3px; - border: 1px solid #f0f0f0; + border: 1px solid $input-border-color; padding: 9px; - color: #454545; - background-color: #fff; + color: $primary-fg-color; + background-color: $primary-bg-color; font-size: 15px; } \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss index aa0f8c6a..9871a7e8 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressSelector.scss @@ -16,13 +16,13 @@ limitations under the License. .mx_AddressSelector { position: absolute; - background-color: #fff; + background-color: $primary-bg-color; width: 485px; max-height: 116px; overflow-y: auto; border-radius: 3px; - background-color: #fff; - border: solid 1px #76cfa6; + background-color: $primary-bg-color; + border: solid 1px $accent-color; cursor: pointer; } @@ -31,15 +31,15 @@ limitations under the License. } .mx_AddressSelector_addressListElement .mx_AddressTile { - background-color: #fff; - border: solid 1px #fff; + background-color: $primary-bg-color; + border: solid 1px $primary-bg-color; } .mx_AddressSelector_addressListElement.mx_AddressSelector_selected { - background-color: #eaf5f0; /* selected colour */ + background-color: $selected-color; } .mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile { - background-color: #eaf5f0; /* selected colour */ - border: solid 1px #eaf5f0; /* selected colour */ + background-color: $selected-color; + border: solid 1px $selected-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss index 76c0e603..59c0b68d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss @@ -18,9 +18,9 @@ limitations under the License. display: inline-block; border-radius: 3px; background-color: rgba(74, 73, 74, 0.1); - border: solid 1px #f0f0f0; + border: solid 1px $input-border-color; line-height: 26px; - color: #454545; + color: $primary-fg-color; font-size: 14px; font-weight: normal; margin-right: 4px; @@ -28,8 +28,8 @@ limitations under the License. .mx_AddressTile.mx_AddressTile_error { background-color: rgba(255, 0, 100, 0.1); - color: #ff0064; - border-color: #ff0064; + color: $warning-color; + border-color: $warning-color; } .mx_AddressTile_network { diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss index 3a0922bc..dd953ab9 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss @@ -17,7 +17,7 @@ limitations under the License. .mx_DirectorySearchBox { position: relative; border-radius: 3px; - border: 1px solid #c7c7c7; + border: 1px solid $strong-input-border-color; } .mx_DirectorySearchBox_container { diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss index b8197805..7d1b059b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss @@ -31,6 +31,6 @@ limitations under the License. } .mx_MemberEventListSummary_toggle { - color:#76cfa6; + color:$accent-color; cursor:pointer; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss index f0b3c046..72a4c0b7 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_RichText.scss @@ -1,14 +1,14 @@ .mx_UserPill { color: white; - background-color: #76cfa6; + background-color: $accent-color; padding: 2px 8px; border-radius: 16px; } .mx_RoomPill { background-color: white; - color: #76cfa6; - border: 1px solid #76cfa6; + color: $accent-color; + border: 1px solid $accent-color; padding: 2px 8px; border-radius: 16px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss b/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss index 75cd4170..1ad195de 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/login/_ServerConfig.scss @@ -27,5 +27,5 @@ limitations under the License. opacity: 0.8; font-size: 13px; font-weight: 300; - color: #4a4a4a; + color: $primary-fg-color; } \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss index 003ef103..83ae0616 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss @@ -22,18 +22,18 @@ limitations under the License. .mx_MImageBody_thumbnail { max-width: 100%; /* - background-color: #fff; - border: 2px solid #fff; + background-color: $primary-bg-color; + border: 2px solid $primary-bg-color; border-radius: 1px; */ } .mx_MImageBody_download { - color: #76cfa6; + color: $accent-color; } .mx_MImageBody_download a { - color: #76cfa6; + color: $accent-color; text-decoration: none; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss index 6d611b5e..9265d4dc 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss @@ -3,7 +3,7 @@ bottom: 0; z-index: 1000; width: 100%; - border: 1px solid #e5e5e5; + border: 1px solid $primary-hairline-color; background: white; border-bottom: none; border-radius: 4px 4px 0 0; @@ -12,7 +12,7 @@ } .mx_Autocomplete_ProviderSection { - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid $primary-hairline-color; } .mx_Autocomplete_Completion_container_pill { @@ -28,7 +28,7 @@ user-select: none; cursor: pointer; align-items: center; - color: #4a4a4a; + color: $primary-fg-color; } .mx_Autocomplete_Completion_block * { @@ -42,7 +42,7 @@ user-select: none; cursor: pointer; align-items: center; - color: #4a4a4a; + color: $primary-fg-color; } .mx_Autocomplete_Completion_pill * { @@ -57,13 +57,13 @@ } .mx_Autocomplete_Completion.selected { - background: #f6f6f6; + background: $menu-bg-color; outline: none; } .mx_Autocomplete_provider_name { margin: 12px; - color: #454545; + color: $primary-fg-color; font-weight: 400; opacity: 0.4; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss index e52ece77..2511f07d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss @@ -17,7 +17,7 @@ limitations under the License. .mx_EntityTile { display: table-row; position: relative; - color: #454545; + color: $primary-fg-color; cursor: pointer; } @@ -77,12 +77,12 @@ limitations under the License. .mx_EntityTile_ellipsis .mx_EntityTile_name { font-style: italic; - font-color: #454545; + font-color: $primary-fg-color; } .mx_EntityTile_invitePlaceholder .mx_EntityTile_name { font-style: italic; - font-color: #454545; + font-color: $primary-fg-color; } .mx_EntityTile_unavailable .mx_EntityTile_avatar, diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index fd3f486b..a6b10e24 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -44,7 +44,7 @@ limitations under the License. } .mx_EventTile .mx_SenderProfile { - color: #454545; + color: $primary-fg-color; opacity: 0.5; font-size: 14px; display: block; /* anti-zalgo, with overflow hidden */ @@ -61,7 +61,7 @@ limitations under the License. display: block; visibility: hidden; white-space: nowrap; - color: #acacac; + color: $event-timestamp-color; font-size: 11px; left: 8px; position: absolute; @@ -93,20 +93,20 @@ limitations under the License. * TODO: ultimately we probably want some transition on here. */ .mx_EventTile_selected .mx_EventTile_line { - border-left: #76cfa6 5px solid; + border-left: $accent-color 5px solid; padding-left: 60px; - background-color: #f7f7f7; + background-color: $event-selected-color; } .mx_EventTile:hover .mx_EventTile_line, .mx_EventTile.menu .mx_EventTile_line { - background-color: #f7f7f7; + background-color: $event-selected-color; } .mx_EventTile_searchHighlight { - background-color: #76cfa6; - color: #fff; + background-color: $accent-color; + color: $accent-fg-color; border-radius: 5px; padding-left: 2px; padding-right: 2px; @@ -114,26 +114,26 @@ limitations under the License. } .mx_EventTile_searchHighlight a { - background-color: #76cfa6; - color: #fff; + background-color: $accent-color; + color: $accent-fg-color; } .mx_EventTile_encrypting { - color: #abddbc ! important; + color: $event-encrypting-color ! important; } .mx_EventTile_sending { - color: #ddd; + color: $event-sending-color; } .mx_EventTile_notSent { - color: #f44; + color: $event-notsent-color; } .mx_EventTile_highlight, .mx_EventTile_highlight .markdown-body { - color: #FF0064; + color: $warning-color; } .mx_EventTile_contextual { @@ -204,7 +204,7 @@ limitations under the License. } .mx_EventTile_readAvatarRemainder { - color: #acacac; + color: $event-timestamp-color; font-size: 11px; position: absolute; } @@ -244,10 +244,10 @@ limitations under the License. } .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { - border-left: #76cfa5 5px solid; + border-left: $e2e-verified-color 5px solid; } .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { - border-left: #e8bf37 5px solid; + border-left: $e2e-unverified-color 5px solid; } .mx_EventTile:hover.mx_EventTile_verified .mx_MessageTimestamp, @@ -297,7 +297,7 @@ limitations under the License. } .mx_EventTile_content .markdown-body a { - color: #76cfa6; + color: $accent-color; } .mx_EventTile_content .markdown-body .hljs { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss index 53379ac4..f1584d4e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss @@ -20,8 +20,8 @@ limitations under the License. .mx_MemberDeviceInfo_textButton { - color: #fff; - background-color: #76cfa6; + color: $accent-fg-color; + background-color: $accent-color; border-radius: 17px; text-align: center; padding-left: 1em; @@ -50,13 +50,13 @@ limitations under the License. } /* "Unblacklist" is too long for a regular button: make it wider and - reduce the padding. */ + reduce the padding. */ .mx_EncryptedEventDialog .mx_MemberDeviceInfo_blacklist, .mx_EncryptedEventDialog .mx_MemberDeviceInfo_unblacklist { width: 8em; padding-left: 1em; padding-right: 1em; -} +} .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified, @@ -66,13 +66,13 @@ limitations under the License. } .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified { - color: #76cfa5; + color: $e2e-verified-color; } .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified { - color: #e8bf37; + color: $e2e-unverified-color; } .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { - color: #ba6363; + color: $e2e-warning-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss index 40b1524c..3b4b653e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss @@ -72,7 +72,7 @@ limitations under the License. font-color: #999999; font-size: 13px; position: relative; - background-color: #fff; + background-color: $primary-bg-color; } .mx_MemberInfo_buttons { @@ -82,7 +82,7 @@ limitations under the License. .mx_MemberInfo_field { cursor: pointer; font-size: 13px; - color: #76cfa6; + color: $accent-color; margin-left: 8px; line-height: 23px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss index 7d383606..3c7e3ec5 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss @@ -55,10 +55,10 @@ limitations under the License. .mx_MemberList_query { font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; border-radius: 3px; - border: 1px solid #f0f0f0; + border: 1px solid $input-border-color; padding: 9px; - color: #454545; - background-color: #fff; + color: $primary-fg-color; + background-color: $primary-bg-color; margin-left: 3px; font-size: 14px; margin-bottom: 8px; @@ -66,13 +66,13 @@ limitations under the License. } .mx_MemberList_query::-moz-placeholder { - color: #454545; + color: $primary-fg-color; opacity: 0.5; font-size: 14px; } .mx_MemberList_query::-webkit-input-placeholder { - color: #454545; + color: $primary-fg-color; opacity: 0.5; font-size: 14px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 842f8db6..e5ffd220 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -18,7 +18,7 @@ limitations under the License. max-width: 960px; vertical-align: middle; margin: auto; - border-top: 1px solid #e5e5e5; + border-top: 1px solid $primary-hairline-color; position: relative; } @@ -108,8 +108,8 @@ limitations under the License. -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; - color: #454545; - background-color: #fff; + color: $primary-fg-color; + background-color: $primary-bg-color; font-size: 14px; max-height: 120px; overflow: auto; @@ -120,11 +120,11 @@ limitations under the License. /* hack for FF as vertical alignment of custom placeholder text is broken */ .mx_MessageComposer_input textarea::-moz-placeholder { line-height: 100%; - color: #76cfa6; + color: $accent-color; opacity: 1.0; } .mx_MessageComposer_input textarea::-webkit-input-placeholder { - color: #76cfa6; + color: $accent-color; } .mx_MessageComposer_upload, diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 056fa879..a26f12ee 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -63,10 +63,10 @@ limitations under the License. .mx_RoomHeader_textButton { height: 36px; - background-color: #76cfa6; + background-color: $accent-color; border-radius: 36px; margin-right: 8px; - color: #fff; + color: $accent-fg-color; line-height: 34px; margin-top: -2px; text-align: center; @@ -102,7 +102,7 @@ limitations under the License. .mx_RoomHeader_rightRow { margin-top: 4px; - background-color: #fff; + background-color: $primary-bg-color; display: flex; align-items: center; -webkit-box-ordinal-group: 3; @@ -120,7 +120,7 @@ limitations under the License. .mx_RoomHeader_simpleHeader { line-height: 70px; - color: #454545; + color: $primary-fg-color; font-size: 22px; font-weight: bold; overflow: hidden; @@ -138,7 +138,7 @@ limitations under the License. width: 100%; height: 31px; overflow: hidden; - color: #454545; + color: $primary-fg-color; font-weight: bold; font-size: 22px; padding-left: 19px; @@ -174,7 +174,7 @@ limitations under the License. } .mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { - color: #76cfa6; + color: $accent-color; } .mx_RoomHeader_placeholder { @@ -182,13 +182,13 @@ limitations under the License. } .mx_RoomHeader_editable { - border-bottom: 1px solid #c7c7c7 ! important; + border-bottom: 1px solid $strong-input-border-color ! important; min-width: 150px; cursor: text; } .mx_RoomHeader_editable:focus { - border-bottom: 1px solid #76CFA6 ! important; + border-bottom: 1px solid $accent-color ! important; outline: none; box-shadow: none; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss index 286a39f7..6b71f96d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss @@ -38,11 +38,11 @@ limitations under the License. } .mx_RoomPreviewBar_invite_text { - color: #454545; + color: $primary-fg-color; } .mx_RoomPreviewBar_join_text { - color: #ff0064; + color: $warning-color; } .mx_RoomPreviewBar_preview_text { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss index 6a3b1ac8..132c9792 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss @@ -24,10 +24,10 @@ limitations under the License. .mx_RoomSettings_integrationsButton_error { position: relative; height: 36px; - background-color: #76cfa6; + background-color: $accent-color; border-radius: 36px; margin-right: 8px; - color: #fff; + color: $accent-fg-color; line-height: 34px; text-align: center; float: right; @@ -47,8 +47,8 @@ limitations under the License. font-size: 10pt; line-height: 1.5em; border-radius: 5px; - background-color: #000; - color: #fff; + background-color: $accent-color; + color: $accent-fg-color; } .mx_RoomSettings_e2eIcon { @@ -174,7 +174,7 @@ limitations under the License. } .mx_RoomSettings_warning { - color: #ff0064; + color: $warning-color; font-weight: bold; margin-top: 8px; margin-bottom: 8px; @@ -182,13 +182,13 @@ limitations under the License. .mx_RoomSettings_editable { border: 0px; - border-bottom: 1px solid #c7c7c7; + border-bottom: 1px solid $strong-input-border-color; padding: 0px; min-width: 240px; } .mx_RoomSettings_editable:focus { - border-bottom: 1px solid #76CFA6; + border-bottom: 1px solid $accent-color; outline: none; box-shadow: none; } @@ -220,8 +220,8 @@ limitations under the License. border-radius: 36px; font-weight: 400; font-size: 15px; - color: #fff; - background-color: #76cfa6; + color: $accent-fg-color; + background-color: $accent-color; width: auto; margin: auto; padding: 6px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss index 2822d82e..22364043 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss @@ -78,7 +78,7 @@ limitations under the License. position: absolute; content: ""; border-radius: 40px; - background: #4A4A4A; + background: $primary-fg-color; bottom: 0; width: 24px; height: 24px; @@ -103,7 +103,7 @@ limitations under the License. padding-right: 6px; padding-top: 2px; padding-bottom: 3px; - color: rgba(69, 69, 69, 0.8); + color: $roomtile-name-color; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -142,7 +142,7 @@ limitations under the License. width: 0; height: 0; margin-left: 5px; - border-top: 5px solid #ff0064; + border-top: 5px solid $warning-color; border-right: 7px solid transparent; } @@ -154,7 +154,7 @@ limitations under the License. right: 8px; /*gutter */ top: 9px; border-radius: 8px; - color: #fff; + color: $accent-fg-color; font-weight: 600; font-size: 10px; text-align: center; @@ -175,11 +175,11 @@ limitations under the License. } .mx_RoomTile_unreadNotify .mx_RoomTile_badge { - background-color: #76cfa6; + background-color: $accent-color; } .mx_RoomTile_highlight .mx_RoomTile_badge { - background-color: #ff0064; + background-color: $warning-color; } .mx_RoomTile_unread, .mx_RoomTile_highlight { @@ -187,7 +187,7 @@ limitations under the License. } .mx_RoomTile_selected { - background-color: rgba(255, 255, 255, 0.8); + background-color: $roomtile-selected-bg-color; } .mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss index 76d9e216..9a24868d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss @@ -25,10 +25,10 @@ limitations under the License. .mx_SearchableEntityList_query { font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; border-radius: 3px; - border: 1px solid #f0f0f0; + border: 1px solid $input-border-color; padding: 9px; - color: #454545; - background-color: #fff; + color: $primary-fg-color; + background-color: $primary-bg-color; margin-left: 3px; font-size: 15px; margin-bottom: 8px; @@ -36,13 +36,13 @@ limitations under the License. } .mx_SearchableEntityList_query::-moz-placeholder { - color: #454545; + color: $primary-fg-color; opacity: 0.5; font-size: 12px; } .mx_SearchableEntityList_query::-webkit-input-placeholder { - color: #454545; + color: $primary-fg-color; opacity: 0.5; font-size: 12px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TabCompleteBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TabCompleteBar.scss index 1f8a3450..5dcbd21a 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TabCompleteBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TabCompleteBar.scss @@ -27,7 +27,7 @@ limitations under the License. .mx_TabCompleteBar_command { margin-right: 8px; - background-color: #76CFA6; + background-color: $accent-color; padding-left: 8px; padding-right: 8px; padding-top: 2px; @@ -41,7 +41,7 @@ limitations under the License. .mx_TabCompleteBar_command .mx_TabCompleteBar_text { opacity: 1.0; vertical-align: initial; - color: #fff; + color: $accent-fg-color; } .mx_TabCompleteBar_item img { @@ -50,7 +50,7 @@ limitations under the License. } .mx_TabCompleteBar_text { - color: #4a4a4a; + color: $primary-fg-color; vertical-align: middle; opacity: 0.5; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss index 77184d42..7bbafcbe 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss @@ -19,7 +19,7 @@ limitations under the License. max-width: 960px; padding-top: 5px; padding-bottom: 5px; - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid $primary-hairline-color; } .mx_TopUnreadMessagesBar_scrollUp { diff --git a/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss b/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss index 93ee0e20..13fc9b22 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/settings/_IntegrationsManager.scss @@ -24,7 +24,7 @@ limitations under the License. } .mx_IntegrationsManager iframe { - background-color: #fff; + background-color: $primary-bg-color; border: 0px; width: 100%; height: 100%; diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss index 8051b4d0..deb89a83 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/voip/_CallView.scss @@ -15,8 +15,8 @@ limitations under the License. */ .mx_CallView_voice { - background-color: #76cfa6; - color: #fff; + background-color: $accent-color; + color: $accent-fg-color; cursor: pointer; text-align: center; padding: 6px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss index 5cf62091..97a82a03 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss @@ -18,7 +18,7 @@ limitations under the License. text-align: center; border: 1px solid #a4a4a4; border-radius: 8px; - background-color: #fff; + background-color: $primary-bg-color; position: fixed; z-index: 1000; padding: 6px; @@ -58,7 +58,7 @@ limitations under the License. height: 36px; line-height: 36px; border-radius: 36px; - color: #fff; + color: $accent-fg-color; margin: auto; } diff --git a/src/skins/vector/css/rethemendex.sh b/src/skins/vector/css/rethemendex.sh index 27c47224..29e34382 100755 --- a/src/skins/vector/css/rethemendex.sh +++ b/src/skins/vector/css/rethemendex.sh @@ -2,7 +2,7 @@ echo "// autogenerated by rethemendex.sh" > _components.scss -for i in `find */* -iname _\*.scss`; +for i in `find . -iname _\*.scss | fgrep -v _components.scss`; do echo "@import \"`dirname $i`/`basename $i .scss`\";" >> _components.scss done diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss new file mode 100644 index 00000000..0fb25a6a --- /dev/null +++ b/src/skins/vector/css/themes/_base.scss @@ -0,0 +1,68 @@ + + +// typical text (dark-on-white in light skin) +$primary-fg-color: #454545; +$primary-bg-color: #ffffff; + +// used for dialog box text +$light-fg-color: #747474; + +// button UI (white-on-green in light skin) +$accent-fg-color: #ffffff; +$accent-color: #76CFA6; + +// red warning colour +$warning-color: #ff0064; + +// left-panel style muted accent color +$secondary-accent-color: #eaf5f0; + +// 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: #f0f0f0; + +// apart from login forms, which have stronger border +$strong-input-border-color: #c7c7c7; + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #f6f6f6; + +$avatar-initial-color: #ffffff; + +// ******************** + +$roomtile-name-color: rgba(69, 69, 69, 0.8); +$roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); + +$roomsublist-label-fg-color: #3d3b39; +$roomsublist-label-bg-color: #d3efe1; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: #abddbc; +$event-sending-color: #ddd; +$event-notsent-color: #f44; + +// event timestamp +$event-timestamp-color: #acacac; + +// e2e +$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color +$e2e-unverified-color: #e8bf37; +$e2e-warning-color: #ba6363; + +// ******************** + +$lightbox-bg-color: #454545; +$lightbox-fg-color: #ffffff; +$lightbox-border-color: #ffffff; \ No newline at end of file diff --git a/src/skins/vector/css/themes/dark.scss b/src/skins/vector/css/themes/dark.scss index 19ab2cde..e5602402 100644 --- a/src/skins/vector/css/themes/dark.scss +++ b/src/skins/vector/css/themes/dark.scss @@ -1,7 +1,69 @@ +@import "_base"; + // typical text (dark-on-white in light skin) $primary-fg-color: #dddddd; $primary-bg-color: #2d2d2d; -// button UI (white-on-green in light skin) +// used for dialog box text +$light-fg-color: #747474; -@import "../_components" \ No newline at end of file +// button UI (white-on-green in light skin) +$accent-fg-color: $primary-bg-color; +$accent-color: #76CFA6; + +// red warning colour +$warning-color: #ff0064; + +// left-panel style muted accent color +$secondary-accent-color: $primary-bg-color; + +// used by AddressSelector +$selected-color: #eaf5f0; + +// selected for hoverover & selected event tiles +$event-selected-color: #353535; + +// used for the hairline dividers in RoomView +$primary-hairline-color: #474747; + +// used for the border of input text fields +$input-border-color: #3a3a3a; + +// apart from login forms, which have stronger border +$strong-input-border-color: #656565; + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #373737; + +$avatar-initial-color: #2d2d2d; + +// ******************** + +$roomtile-name-color: rgba(186, 186, 186, 0.8); +$roomtile-selected-bg-color: rgba(0, 0, 0, 0.8); + +$roomsublist-label-fg-color: $primary-fg-color; +$roomsublist-label-bg-color: #454545; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: #abddbc; +$event-sending-color: #ddd; +$event-notsent-color: #f44; + +// event timestamp +$event-timestamp-color: #acacac; + +// 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; + +@import "../_components"; \ No newline at end of file diff --git a/src/skins/vector/css/themes/light.scss b/src/skins/vector/css/themes/light.scss index e0ad84f6..8b951e27 100644 --- a/src/skins/vector/css/themes/light.scss +++ b/src/skins/vector/css/themes/light.scss @@ -1,4 +1,2 @@ -$primary-fg-color: #454545; -$primary-bg-color: #ffffff; - -@import "../_components" \ No newline at end of file +@import "_base"; +@import "../_components"; \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/structures/_RightPanel.scss b/src/skins/vector/css/vector-web/structures/_RightPanel.scss index 5da4c4ab..b9dbf1cd 100644 --- a/src/skins/vector/css/vector-web/structures/_RightPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_RightPanel.scss @@ -33,7 +33,7 @@ limitations under the License. -webkit-order: 1; order: 1; - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid $primary-hairline-color; margin-right: 20px; -webkit-flex: 0 0 70px; @@ -45,7 +45,7 @@ limitations under the License. .mx_RightPanel_headerButtonGroup { margin-top: 6px; float: left; - background-color: #fff; + background-color: $primary-bg-color; margin-left: 0px; } @@ -73,7 +73,7 @@ limitations under the License. .mx_RightPanel_headerButton_badge { font-size: 11px; - color: #76cfa6; + color: $accent-color; font-weight: bold; padding-bottom: 2px; } @@ -97,7 +97,7 @@ limitations under the License. -webkit-order: 3; order: 3; - border-top: 1px solid #e5e5e5; + border-top: 1px solid $primary-hairline-color; margin-right: 20px; -webkit-flex: 0 0 60px; @@ -107,7 +107,7 @@ limitations under the License. .mx_RightPanel_footer .mx_RightPanel_invite { line-height: 35px; font-size: 14px; - color: #4A4A4A; + color: $primary-fg-color; padding-top: 13px; padding-left: 5px; cursor: pointer; diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index 563b1772..e5df8741 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -20,7 +20,7 @@ limitations under the License. margin-left: auto; margin-right: auto; margin-bottom: 12px; - color: #4a4a4a; + color: $primary-fg-color; display: -webkit-box; display: -moz-box; @@ -78,7 +78,7 @@ limitations under the License. .mx_RoomDirectory_table { font-size: 14px; - color: #4a4a4a; + color: $primary-fg-color; width: 100%; text-align: left; table-layout: fixed; @@ -110,7 +110,7 @@ limitations under the License. padding-right: 5px; height: 15px; border-radius: 11px; - background-color: #eaf5f0; + background-color: $secondary-accent-color; text-transform: uppercase; font-weight: 600; font-size: 11px; diff --git a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss index e6e81aef..0d56d6c3 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomSubList.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomSubList.scss @@ -29,7 +29,7 @@ limitations under the License. .mx_RoomSubList_label { position: relative; text-transform: uppercase; - color: #3d3b39; + color: $roomsublist-label-fg-color; font-weight: 600; font-size: 12px; width: 203px; /* padding + width = LHS Panel width */ @@ -39,8 +39,8 @@ limitations under the License. padding-top: 6px; padding-bottom: 6px; cursor: pointer; - background-color: #d3efe1; - border-top: solid 2px #eaf5f0; + background-color: $roomsublist-label-bg-color; + border-top: solid 2px $secondary-accent-color; } .mx_RoomSubList_label.mx_RoomSubList_fixed { @@ -63,7 +63,7 @@ limitations under the License. display: inline-block; font-size: 12px; font-weight: normal; - color: #76cfa6; + color: $accent-color; padding-left: 5px; text-transform: none; } @@ -80,14 +80,14 @@ limitations under the License. right: 8px; /*gutter */ top: 7px; border-radius: 8px; - color: #fff; + color: $accent-fg-color; font-weight: 600; font-size: 10px; text-align: center; padding-top: 1px; padding-left: 4px; padding-right: 4px; - background-color: #76cfa6; + background-color: $accent-color; } /* @@ -97,7 +97,7 @@ limitations under the License. */ .mx_RoomSubList_badgeHighlight { - background-color: #ff0064; + background-color: $warning-color; } /* This is the bottom of the speech bubble */ @@ -108,7 +108,7 @@ limitations under the License. width: 0; height: 0; margin-left: 5px; - border-top: 5px solid #ff0064; + border-top: 5px solid $warning-color; border-right: 7px solid transparent; } @@ -129,7 +129,7 @@ limitations under the License. height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; - border-top: 6px solid #76cfa6; + border-top: 6px solid $accent-color; } .mx_RoomSubList_chevronUp { @@ -137,14 +137,14 @@ limitations under the License. height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; - border-bottom: 6px solid #76cfa6; + border-bottom: 6px solid $accent-color; } .mx_RoomSubList_chevronRight { width: 0; height: 0; border-top: 5px solid transparent; - border-left: 6px solid #76cfa6; + border-left: 6px solid $accent-color; border-bottom: 5px solid transparent; } @@ -165,7 +165,7 @@ limitations under the License. .mx_RoomSubList_line { display: inline-block; width: 159px; - border-top: dotted 2px #76cfa6; + border-top: dotted 2px $accent-color; vertical-align: middle; } @@ -179,7 +179,7 @@ limitations under the License. font-size: 10px; font-weight: 600; text-align: left; - color: #76cfa6; + color: $accent-color; padding-left: 7px; padding-right: 7px; padding-left: 7px; @@ -198,20 +198,20 @@ limitations under the License. right: 8px; /*gutter */ top: -2px; border-radius: 8px; - border: solid 1px #76cfa6; - color: #fff; + border: solid 1px $accent-color; + color: $accent-fg-color; font-weight: 600; font-size: 10px; text-align: center; padding-top: 1px; padding-left: 3px; padding-right: 3px; - background-color: #fff; + background-color: $primary-bg-color; vertical-align: middle; } .mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeNotify { - background-color: #76cfa6; + background-color: $accent-color; border: 0; padding-top: 3px; padding-left: 4px; @@ -219,7 +219,7 @@ limitations under the License. } .mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeHighlight { - background-color: #ff0064; + background-color: $warning-color; border: 0; padding-top: 3px; padding-left: 4px; diff --git a/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss b/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss index 947fd480..0a2e7605 100644 --- a/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss +++ b/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss @@ -31,7 +31,7 @@ limitations under the License. .mx_RoomTagContextMenu_field:last-child { padding-bottom: 4px; - color: #ff0064; + color: $warning-color; } .mx_RoomTagContextMenu_field.mx_RoomTagContextMenu_fieldSet { diff --git a/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss b/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss index 8b4c4459..9147fdb7 100644 --- a/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss +++ b/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss @@ -21,14 +21,14 @@ limitations under the License. .mx_NetworkDropdown_input { position: relative; border-radius: 3px; - border: 1px solid #c7c7c7; + border: 1px solid $strong-input-border-color; font-weight: 300; font-size: 13px; user-select: none; } .mx_NetworkDropdown_arrow { - border-color: #4a4a4a transparent transparent; + border-color: $primary-fg-color transparent transparent; border-style: solid; border-width: 5px 5px 0; display: block; @@ -67,7 +67,7 @@ input.mx_NetworkDropdown_networkoption, input.mx_NetworkDropdown_networkoption:f margin: 0; padding: 0px; border-radius: 3px; - border: 1px solid #76cfa6; + border: 1px solid $accent-color; background-color: white; } diff --git a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss index 03223f25..d66d9c7d 100644 --- a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss +++ b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss @@ -87,7 +87,7 @@ limitations under the License. padding-right: 30px; min-height: 100%; max-width: 240px; - color: #fff; + color: $lightbox-fg-color; } .mx_ImageView_cancel { @@ -114,10 +114,10 @@ limitations under the License. margin-top: 24px; margin-bottom: 6px; border-radius: 5px; - background-color: #454545; + background-color: $lightbox-bg-color; font-size: 14px; padding: 9px; - border: 1px solid #fff; + border: 1px solid $lightbox-border-color; } .mx_ImageView_size { @@ -125,7 +125,7 @@ limitations under the License. } .mx_ImageView_link { - color: #fff ! important; + color: $lightbox-fg-color ! important; text-decoration: none ! important; } diff --git a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss index 717d75af..e8b5aebb 100644 --- a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss @@ -15,8 +15,8 @@ limitations under the License. */ .mx_GuestWarningBar { - background-color: #76cfa6; - color: #fff; + background-color: $accent-color; + color: $accent-fg-color; display: -webkit-box; display: -moz-box; @@ -34,7 +34,7 @@ limitations under the License. } .mx_GuestWarningBar a { - color: #fff ! important; + color: $accent-fg-color ! important; text-decoration: underline ! important; cursor: pointer; } diff --git a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss index 4e214e11..9bd70bb9 100644 --- a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss @@ -15,8 +15,8 @@ limitations under the License. */ .mx_MatrixToolbar { - background-color: #76cfa6; - color: #fff; + background-color: $accent-color; + color: $accent-fg-color; display: -webkit-box; display: -moz-box; @@ -40,7 +40,7 @@ limitations under the License. .mx_MatrixToolbar_link { - color: #fff ! important; + color: $accent-fg-color ! important; text-decoration: underline ! important; cursor: pointer; } diff --git a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss index 003215af..2fe16ca9 100644 --- a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss +++ b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss @@ -22,8 +22,8 @@ limitations under the License. margin-bottom: 7px; padding-top: 5px; padding-bottom: 5px; - border: 1px dashed #76cfa6; - color: #454545; + border: 1px dashed $accent-color; + color: $primary-fg-color; background-color: rgba(255,255,255,0.5); border-radius: 4px; } @@ -39,7 +39,7 @@ limitations under the License. } .mx_RoomDropTarget_avatar { - background-color: #fff; + background-color: $primary-bg-color; border-radius: 24px; width: 24px; height: 24px; diff --git a/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss b/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss index 192fa77b..5469a9e6 100644 --- a/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss +++ b/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss @@ -21,16 +21,16 @@ limitations under the License. width: 0; height: 0; border-top: 8px solid transparent; - border-right: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid $menu-border-color; border-bottom: 8px solid transparent; } -.mx_RoomTooltip_chevron:after{ +.mx_RoomTooltip_chevron:after { content:''; width: 0; height: 0; border-top: 7px solid transparent; - border-right: 7px solid #fff; + border-right: 7px solid $primary-bg-color; border-bottom: 7px solid transparent; position:absolute; top: -7px; @@ -40,14 +40,14 @@ limitations under the License. .mx_RoomTooltip { display: none; position: fixed; - border: 1px solid rgba(187, 187, 187, 0.5); + border: 1px solid $menu-border-color; border-radius: 5px; - background-color: #fff; + background-color: $primary-bg-color; z-index: 2000; padding: 5px; pointer-events: none; line-height: 14px; font-size: 13px; - color: rgba(0, 0, 0, 0.7); + color: $primary-fg-color; } diff --git a/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss b/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss index 7ec1a17a..5d195322 100644 --- a/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss +++ b/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss @@ -26,7 +26,7 @@ limitations under the License. .mx_SearchBar_input { display: inline block; border-radius: 3px 0px 0px 3px; - border: 1px solid #f0f0f0; + border: 1px solid $input-border-color; font-size: 15px; padding: 9px; padding-left: 11px; @@ -41,7 +41,7 @@ limitations under the License. width: 37px; height: 37px; border-radius: 0px 3px 3px 0px; - background-color: #76CFA6; + background-color: $accent-color; } @keyframes pulsate { @@ -61,8 +61,8 @@ limitations under the License. border-radius: 36px; font-weight: 400; font-size: 15px; - color: #fff; - background-color: #76cfa6; + color: $accent-fg-color; + background-color: $accent-color; width: auto; margin: auto; margin-left: 7px; @@ -74,9 +74,9 @@ limitations under the License. } .mx_SearchBar_unselected { - background-color: #fff; - color: #76CFA6; - border: #76CFA6 1px solid; + background-color: $primary-bg-color; + color: $accent-color; + border: $accent-color 1px solid; } .mx_SearchBar_cancel { diff --git a/src/skins/vector/css/vector-web/views/settings/_Notifications.scss b/src/skins/vector/css/vector-web/views/settings/_Notifications.scss index 7a93f3f7..4c88e449 100644 --- a/src/skins/vector/css/vector-web/views/settings/_Notifications.scss +++ b/src/skins/vector/css/vector-web/views/settings/_Notifications.scss @@ -58,7 +58,7 @@ limitations under the License. .mx_UserNotifSettings_keywords { cursor: pointer; - color: #76cfa6; + color: $accent-color; } .mx_UserSettings_devicesTable td { diff --git a/src/vector/index.js b/src/vector/index.js index 96c6a971..47509887 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -30,7 +30,7 @@ require('babel-polyfill'); // CSS requires: just putting them here for now as CSS is going to be // refactored "soon" anyway -require('../../build/themes/light.css'); +require('../../build/themes/dark.css'); require('gemini-scrollbar/gemini-scrollbar.css'); require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); From d1a9695a353aec38762fcde749e852cfc3a5c3b5 Mon Sep 17 00:00:00 2001 From: Hubert Chathi <hubert@uhoreg.ca> Date: Wed, 28 Dec 2016 20:57:31 -0500 Subject: [PATCH 116/243] update README to point to new names/locations --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 41f307d3..f82572fb 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ 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/vector-web/releases +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 vector-x.x.x directory to an appropriate name 1. If desired, copy `config.sample.json` to `config.json` and edit it @@ -36,7 +36,7 @@ access to Riot (or other apps) due to sharing the same domain. We have put some coarse mitigations into place to try to protect against this situation, but it's still not good practice to do it in the first place. See -https://github.com/vector-im/vector-web/issues/1977 for more details. +https://github.com/vector-im/riot-web/issues/1977 for more details. Building From Source ==================== @@ -45,7 +45,7 @@ Riot is a modular webapp built with modern ES6 and requires a npm build system to build. 1. Install or update `node.js` so that your `npm` is at least at version `2.0.0` -1. Clone the repo: `git clone https://github.com/vector-im/vector-web.git` +1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git` 1. Switch to the vector-web directory: `cd vector-web` 1. Install the prerequisites: `npm install` 1. If you are using the `develop` branch of vector-web, you will probably need @@ -97,7 +97,7 @@ Running as a Desktop app ======================== Riot can also be run as a desktop app, wrapped in electron. You can download a -pre-built version from https://riot.im/download/desktop/ or, if you prefer, +pre-built version from https://riot.im/desktop.html or, if you prefer, built it yourself. To run as a desktop app: @@ -167,13 +167,13 @@ the `component-index.js` for the app (used in future for skinning) development on Riot forcing `matrix-react-sdk` to move fast at the expense of maintaining a clear abstraction between the two.** Hacking on Riot inevitably means hacking equally on `matrix-react-sdk`, and there are bits of -`matrix-react-sdk` behaviour incorrectly residing in the `vector-web` project +`matrix-react-sdk` behaviour incorrectly residing in the `riot-web` project (e.g. matrix-react-sdk specific CSS), and a bunch of Riot specific behaviour in the `matrix-react-sdk` (grep for `vector` / `riot`). This separation problem will be solved asap once development on Riot (and thus matrix-react-sdk) has stabilised. Until then, the two projects should basically be considered as a single unit. In particular, `matrix-react-sdk` issues are currently filed -against `vector-web` in github. +against `riot-web` in github. Please note that Riot is intended to run correctly without access to the public internet. So please don't depend on resources (JS libs, CSS, images, fonts) @@ -208,8 +208,8 @@ Then similarly with `matrix-react-sdk`: Finally, build and start Riot itself: -1. `git clone git@github.com:vector-im/vector-web.git` -1. `cd vector-web` +1. `git clone git@github.com:vector-im/riot-web.git` +1. `cd riot-web` 1. `git checkout develop` 1. `npm install` 1. `rm -r node_modules/matrix-js-sdk; ln -s ../../matrix-js-sdk node_modules/` From 35b301338643dcabafb43653e6da17de9c9fdcd2 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sat, 31 Dec 2016 14:27:44 +0000 Subject: [PATCH 117/243] fix up a few more colours --- src/skins/vector/css/_common.scss | 7 ++++++- src/skins/vector/css/themes/_base.scss | 3 +++ src/skins/vector/css/themes/dark.scss | 3 +++ .../css/vector-web/views/directory/_NetworkDropdown.scss | 4 ++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index e81ea2fa..ed96b48c 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -55,8 +55,13 @@ a:visited { color: $accent-color; } +input[type=text] { + background-color: $primary-bg-color; + color: $primary-fg-color; +} + input[type=text].error, input[type=password].error { - border: 1px solid red; + border: 1px solid $warning-color; } input[type=text]:focus, textarea:focus { diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 0fb25a6a..b9fd2d12 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -7,6 +7,9 @@ $primary-bg-color: #ffffff; // 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: #76CFA6; diff --git a/src/skins/vector/css/themes/dark.scss b/src/skins/vector/css/themes/dark.scss index e5602402..5449b90e 100644 --- a/src/skins/vector/css/themes/dark.scss +++ b/src/skins/vector/css/themes/dark.scss @@ -4,6 +4,9 @@ $primary-fg-color: #dddddd; $primary-bg-color: #2d2d2d; +// used for focusing form controls +$focus-bg-color: #101010; + // used for dialog box text $light-fg-color: #747474; diff --git a/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss b/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss index 9147fdb7..84aa896a 100644 --- a/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss +++ b/src/skins/vector/css/vector-web/views/directory/_NetworkDropdown.scss @@ -68,11 +68,11 @@ input.mx_NetworkDropdown_networkoption, input.mx_NetworkDropdown_networkoption:f padding: 0px; border-radius: 3px; border: 1px solid $accent-color; - background-color: white; + background-color: $primary-bg-color; } .mx_NetworkDropdown_menu .mx_NetworkDropdown_networkoption:hover { - background-color: #ddd; + background-color: $focus-bg-color; } .mx_NetworkDropdown_menu_network { From 6a1af891b77f1b0c63bd1df32d0ac8c87b59dff7 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <github@rvanderhoff.org.uk> Date: Fri, 6 Jan 2017 10:43:13 +0000 Subject: [PATCH 118/243] Use a custom script to copy resources (#2893) All of those cpx invocations were getting unwieldy, and I suspect the exotic quoting needed to run them under parallelshell was breaking things on windows. Replace the unwieldy cpx invocations with an unwieldy custom script. --- package.json | 20 +++++------ scripts/copy-res.js | 81 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 11 deletions(-) create mode 100755 scripts/copy-res.js diff --git a/package.json b/package.json index 3f9f46e2..52cc41be 100644 --- a/package.json +++ b/package.json @@ -27,26 +27,22 @@ "matrix-react-parent": "matrix-react-sdk", "scripts": { "reskindex": "reskindex -h src/header", - "build:res": "cpx \"{src/skins/vector/fonts,src/skins/vector/img}/**\" webapp/ && cpx \"{res/media,res/vector-icons}/**\" webapp/", - "build:config": "cpx config.json webapp/", - "build:emojione": "cpx \"node_modules/emojione/assets/svg/*\" webapp/emojione/svg/", + "build:res": "node scripts/copy-res.js", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", "build:css": "mkdirp build && catw \"src/skins/vector/css/**/*.css\" -o build/components.css --no-watch", "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", - "build": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle", - "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:config && npm run build:emojione && npm run build:css && npm run build:bundle:dev", + "build": "node scripts/babelcheck.js && npm run build:res && npm run build:css && npm run build:bundle", + "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:css && npm run build:bundle:dev", "dist": "scripts/package.sh", - "start:res": "parallelshell \"cpx -w \\\"{src/skins/vector/fonts,src/skins/vector/img}/**\\\" webapp/\" \"cpx -w \\\"{res/media,res/vector-icons}/**\\\" webapp/\"", - "start:config": "cpx -w config.json webapp/", - "start:emojione": "cpx \"node_modules/emojione/assets/svg/*\" webapp/emojione/svg/ -w", + "start:res": "node scripts/copy-res.js -w", "start:js": "webpack-dev-server -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", - "start:skins:css": "mkdirp build && catw \"src/skins/vector/css/**/*.css\" -o build/components.css", - "start": "node scripts/babelcheck.js && parallelshell \"npm run start:emojione\" \"npm run start:res\" \"npm run start:config\" \"npm run start:js\" \"npm run start:skins:css\"", - "start:prod": "parallelshell \"npm run start:emojione\" \"npm run start:js:prod\" \"npm run start:skins:css\"", + "start:css": "mkdirp build && catw \"src/skins/vector/css/**/*.css\" -o build/components.css", + "start": "node scripts/babelcheck.js && parallelshell \"npm run start:res\" \"npm run start:js\" \"npm run start:css\"", + "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\" \"npm run start:css\"", "clean": "rimraf build lib webapp electron/dist", "prepublish": "npm run build:compile", "test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false", @@ -95,6 +91,7 @@ "babel-preset-react": "^6.16.0", "babel-preset-stage-2": "^6.17.0", "catw": "^1.0.1", + "chokidar": "^1.6.1", "cpx": "^1.3.2", "css-raw-loader": "^0.1.1", "electron-builder": "^10.4.1", @@ -111,6 +108,7 @@ "karma-phantomjs-launcher": "^1.0.0", "karma-sourcemap-loader": "^0.3.7", "karma-webpack": "^1.7.0", + "minimist": "^1.2.0", "mkdirp": "^0.5.1", "mocha": "^2.4.5", "parallelshell": "^1.2.0", diff --git a/scripts/copy-res.js b/scripts/copy-res.js new file mode 100755 index 00000000..826d9a96 --- /dev/null +++ b/scripts/copy-res.js @@ -0,0 +1,81 @@ +#!/usr/bin/env node + +// copies the resources into the webapp directory. +// + +// cpx includes globbed parts of the filename in the destination, but excludes +// common parents. Hence, "res/{a,b}/**": the output will be "dest/a/..." and +// "dest/b/...". +const COPY_LIST = [ + ["res/{media,vector-icons}/**", "webapp"], + ["src/skins/vector/{fonts,img}/**", "webapp"], + ["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"], + ["./config.json", "webapp", {directwatch: 1}], +]; + +const parseArgs = require('minimist'); +const Cpx = require('cpx'); +const chokidar = require('chokidar'); + +const argv = parseArgs( + process.argv.slice(2), {} +); + +var watch = argv.w; +var verbose = argv.v; + +function errCheck(err) { + if (err) { + console.error(err.message); + process.exit(1); + } +} + +function next(i, err) { + errCheck(err); + + if (i >= COPY_LIST.length) { + return; + } + + const ent = COPY_LIST[i]; + const source = ent[0]; + const dest = ent[1]; + const opts = ent[2] || {}; + + const cpx = new Cpx.Cpx(source, dest); + + if (verbose) { + cpx.on("copy", (event) => { + console.log(`Copied: ${event.srcPath} --> ${event.dstPath}`); + }); + cpx.on("remove", (event) => { + console.log(`Removed: ${event.path}`); + }); + } + + const cb = (err) => {next(i+1, err)}; + + if (watch) { + if (opts.directwatch) { + // cpx -w creates a watcher for the parent of any files specified, + // which in the case of config.json is '.', which inevitably takes + // ages to crawl. So we create our own watcher on the files + // instead. + const copy = () => {cpx.copy(errCheck)}; + chokidar.watch(source) + .on('add', copy) + .on('change', copy) + .on('ready', cb) + .on('error', errCheck); + } else { + cpx.on('watch-ready', cb); + cpx.on("watch-error", cb); + cpx.watch(); + } + } else { + cpx.copy(cb); + } +} + +next(0); From 691fe611d6141f6c43f9e966ab135a721f248482 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 10 Jan 2017 11:06:09 +0000 Subject: [PATCH 119/243] experimental postcss --- package.json | 14 ++- src/skins/vector/css/_components.scss | 145 +++++++++++++------------ src/skins/vector/css/rethemendex.sh | 2 +- src/skins/vector/css/themes/dark.scss | 76 +------------ src/skins/vector/css/themes/light.scss | 4 +- src/vector/index.js | 2 +- webpack.config.js | 4 +- 7 files changed, 94 insertions(+), 153 deletions(-) diff --git a/package.json b/package.json index c657aad6..8eb562d3 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "build:config": "cpx config.json webapp/", "build:emojione": "cpx \"node_modules/emojione/assets/svg/*\" webapp/emojione/svg/", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", - "build:css": "mkdirp build && node-sass --recursive --source-map true --output build \"src/skins/vector/css\"", + "build:css": "mkdirp build && postcss -c postcss.config.json", "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", @@ -44,7 +44,7 @@ "start:emojione": "cpx \"node_modules/emojione/assets/svg/*\" webapp/emojione/svg/ -w", "start:js": "webpack-dev-server -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", - "start:skins:css": "mkdirp build && node-sass --recursive --watch --source-map true --output build \"src/skins/vector/css\"", + "start:skins:css": "mkdirp build && postcss -c postcss.config.json -w", "start": "node scripts/babelcheck.js && parallelshell \"npm run start:emojione\" \"npm run start:res\" \"npm run start:config\" \"npm run start:js\" \"npm run start:skins:css\"", "start:prod": "parallelshell \"npm run start:emojione\" \"npm run start:js:prod\" \"npm run start:skins:css\"", "clean": "rimraf build lib webapp electron/dist", @@ -80,6 +80,7 @@ "url": "^0.11.0" }, "devDependencies": { + "autoprefixer": "^6.6.0", "babel-cli": "^6.5.2", "babel-core": "^6.14.0", "babel-eslint": "^6.1.0", @@ -116,10 +117,17 @@ "node-sass": "^4.1.1", "parallelshell": "^1.2.0", "phantomjs-prebuilt": "^2.1.7", + "postcss-cli": "^2.6.0", + "postcss-extend": "^1.0.5", + "postcss-import": "^9.0.0", + "postcss-mixins": "^5.4.1", + "postcss-nested": "^1.0.0", + "postcss-scss": "^0.4.0", + "postcss-simple-vars": "^3.0.0", + "postcss-strip-inline-comments": "^0.1.5", "react-addons-perf": "^15.4.0", "react-addons-test-utils": "^15.4.0", "rimraf": "^2.4.3", - "sass-loader": "^4.1.1", "source-map-loader": "^0.1.5", "webpack": "^1.12.14", "webpack-dev-server": "^1.16.2" diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 532e0a36..88435236 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -1,73 +1,74 @@ // autogenerated by rethemendex.sh -@import "_common"; -@import "matrix-react-sdk/structures/_ContextualMenu"; -@import "matrix-react-sdk/structures/_CreateRoom"; -@import "matrix-react-sdk/structures/_FilePanel"; -@import "matrix-react-sdk/structures/_MatrixChat"; -@import "matrix-react-sdk/structures/_NotificationPanel"; -@import "matrix-react-sdk/structures/_RoomStatusBar"; -@import "matrix-react-sdk/structures/_RoomView"; -@import "matrix-react-sdk/structures/_SearchBox"; -@import "matrix-react-sdk/structures/_UploadBar"; -@import "matrix-react-sdk/structures/_UserSettings"; -@import "matrix-react-sdk/structures/login/_Login"; -@import "matrix-react-sdk/views/avatars/_BaseAvatar"; -@import "matrix-react-sdk/views/dialogs/_ChatInviteDialog"; -@import "matrix-react-sdk/views/dialogs/_EncryptedEventDialog"; -@import "matrix-react-sdk/views/dialogs/_SetDisplayNameDialog"; -@import "matrix-react-sdk/views/elements/_AddressSelector"; -@import "matrix-react-sdk/views/elements/_AddressTile"; -@import "matrix-react-sdk/views/elements/_DirectorySearchBox"; -@import "matrix-react-sdk/views/elements/_MemberEventListSummary"; -@import "matrix-react-sdk/views/elements/_ProgressBar"; -@import "matrix-react-sdk/views/elements/_RichText"; -@import "matrix-react-sdk/views/login/_ServerConfig"; -@import "matrix-react-sdk/views/messages/_MImageBody"; -@import "matrix-react-sdk/views/messages/_MNoticeBody"; -@import "matrix-react-sdk/views/messages/_MTextBody"; -@import "matrix-react-sdk/views/messages/_TextualEvent"; -@import "matrix-react-sdk/views/messages/_UnknownBody"; -@import "matrix-react-sdk/views/rooms/_Autocomplete"; -@import "matrix-react-sdk/views/rooms/_EntityTile"; -@import "matrix-react-sdk/views/rooms/_EventTile"; -@import "matrix-react-sdk/views/rooms/_LinkPreviewWidget"; -@import "matrix-react-sdk/views/rooms/_MemberDeviceInfo"; -@import "matrix-react-sdk/views/rooms/_MemberInfo"; -@import "matrix-react-sdk/views/rooms/_MemberList"; -@import "matrix-react-sdk/views/rooms/_MessageComposer"; -@import "matrix-react-sdk/views/rooms/_PresenceLabel"; -@import "matrix-react-sdk/views/rooms/_RoomHeader"; -@import "matrix-react-sdk/views/rooms/_RoomList"; -@import "matrix-react-sdk/views/rooms/_RoomPreviewBar"; -@import "matrix-react-sdk/views/rooms/_RoomSettings"; -@import "matrix-react-sdk/views/rooms/_RoomTile"; -@import "matrix-react-sdk/views/rooms/_SearchableEntityList"; -@import "matrix-react-sdk/views/rooms/_TabCompleteBar"; -@import "matrix-react-sdk/views/rooms/_TopUnreadMessagesBar"; -@import "matrix-react-sdk/views/settings/_DevicesPanel"; -@import "matrix-react-sdk/views/settings/_IntegrationsManager"; -@import "matrix-react-sdk/views/voip/_CallView"; -@import "matrix-react-sdk/views/voip/_IncomingCallbox"; -@import "matrix-react-sdk/views/voip/_VideoView"; -@import "vector-web/_fonts"; -@import "vector-web/structures/_CompatibilityPage"; -@import "vector-web/structures/_LeftPanel"; -@import "vector-web/structures/_RightPanel"; -@import "vector-web/structures/_RoomDirectory"; -@import "vector-web/structures/_RoomSubList"; -@import "vector-web/structures/_ViewSource"; -@import "vector-web/views/context_menus/_MessageContextMenu"; -@import "vector-web/views/context_menus/_NotificationStateContextMenu"; -@import "vector-web/views/context_menus/_RoomTagContextMenu"; -@import "vector-web/views/dialogs/_ChangelogDialog"; -@import "vector-web/views/directory/_NetworkDropdown"; -@import "vector-web/views/elements/_ImageView"; -@import "vector-web/views/elements/_Spinner"; -@import "vector-web/views/globals/_GuestWarningBar"; -@import "vector-web/views/globals/_MatrixToolbar"; -@import "vector-web/views/messages/_MessageTimestamp"; -@import "vector-web/views/messages/_SenderProfile"; -@import "vector-web/views/rooms/_RoomDropTarget"; -@import "vector-web/views/rooms/_RoomTooltip"; -@import "vector-web/views/rooms/_SearchBar"; -@import "vector-web/views/settings/_Notifications"; +@import "./_common.scss"; +@import "./matrix-react-sdk/structures/_ContextualMenu.scss"; +@import "./matrix-react-sdk/structures/_CreateRoom.scss"; +@import "./matrix-react-sdk/structures/_FilePanel.scss"; +@import "./matrix-react-sdk/structures/_MatrixChat.scss"; +@import "./matrix-react-sdk/structures/_NotificationPanel.scss"; +@import "./matrix-react-sdk/structures/_RoomStatusBar.scss"; +@import "./matrix-react-sdk/structures/_RoomView.scss"; +@import "./matrix-react-sdk/structures/_SearchBox.scss"; +@import "./matrix-react-sdk/structures/_UploadBar.scss"; +@import "./matrix-react-sdk/structures/_UserSettings.scss"; +@import "./matrix-react-sdk/structures/login/_Login.scss"; +@import "./matrix-react-sdk/views/avatars/_BaseAvatar.scss"; +@import "./matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss"; +@import "./matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss"; +@import "./matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss"; +@import "./matrix-react-sdk/views/elements/_AddressSelector.scss"; +@import "./matrix-react-sdk/views/elements/_AddressTile.scss"; +@import "./matrix-react-sdk/views/elements/_DirectorySearchBox.scss"; +@import "./matrix-react-sdk/views/elements/_MemberEventListSummary.scss"; +@import "./matrix-react-sdk/views/elements/_ProgressBar.scss"; +@import "./matrix-react-sdk/views/elements/_RichText.scss"; +@import "./matrix-react-sdk/views/login/_ServerConfig.scss"; +@import "./matrix-react-sdk/views/messages/_MImageBody.scss"; +@import "./matrix-react-sdk/views/messages/_MNoticeBody.scss"; +@import "./matrix-react-sdk/views/messages/_MTextBody.scss"; +@import "./matrix-react-sdk/views/messages/_TextualEvent.scss"; +@import "./matrix-react-sdk/views/messages/_UnknownBody.scss"; +@import "./matrix-react-sdk/views/rooms/_Autocomplete.scss"; +@import "./matrix-react-sdk/views/rooms/_EntityTile.scss"; +@import "./matrix-react-sdk/views/rooms/_EventTile.scss"; +@import "./matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss"; +@import "./matrix-react-sdk/views/rooms/_MemberDeviceInfo.scss"; +@import "./matrix-react-sdk/views/rooms/_MemberInfo.scss"; +@import "./matrix-react-sdk/views/rooms/_MemberList.scss"; +@import "./matrix-react-sdk/views/rooms/_MessageComposer.scss"; +@import "./matrix-react-sdk/views/rooms/_PresenceLabel.scss"; +@import "./matrix-react-sdk/views/rooms/_RoomHeader.scss"; +@import "./matrix-react-sdk/views/rooms/_RoomList.scss"; +@import "./matrix-react-sdk/views/rooms/_RoomPreviewBar.scss"; +@import "./matrix-react-sdk/views/rooms/_RoomSettings.scss"; +@import "./matrix-react-sdk/views/rooms/_RoomTile.scss"; +@import "./matrix-react-sdk/views/rooms/_SearchableEntityList.scss"; +@import "./matrix-react-sdk/views/rooms/_TabCompleteBar.scss"; +@import "./matrix-react-sdk/views/rooms/_TopUnreadMessagesBar.scss"; +@import "./matrix-react-sdk/views/settings/_DevicesPanel.scss"; +@import "./matrix-react-sdk/views/settings/_IntegrationsManager.scss"; +@import "./matrix-react-sdk/views/voip/_CallView.scss"; +@import "./matrix-react-sdk/views/voip/_IncomingCallbox.scss"; +@import "./matrix-react-sdk/views/voip/_VideoView.scss"; +@import "./themes/_base.scss"; +@import "./vector-web/_fonts.scss"; +@import "./vector-web/structures/_CompatibilityPage.scss"; +@import "./vector-web/structures/_LeftPanel.scss"; +@import "./vector-web/structures/_RightPanel.scss"; +@import "./vector-web/structures/_RoomDirectory.scss"; +@import "./vector-web/structures/_RoomSubList.scss"; +@import "./vector-web/structures/_ViewSource.scss"; +@import "./vector-web/views/context_menus/_MessageContextMenu.scss"; +@import "./vector-web/views/context_menus/_NotificationStateContextMenu.scss"; +@import "./vector-web/views/context_menus/_RoomTagContextMenu.scss"; +@import "./vector-web/views/dialogs/_ChangelogDialog.scss"; +@import "./vector-web/views/directory/_NetworkDropdown.scss"; +@import "./vector-web/views/elements/_ImageView.scss"; +@import "./vector-web/views/elements/_Spinner.scss"; +@import "./vector-web/views/globals/_GuestWarningBar.scss"; +@import "./vector-web/views/globals/_MatrixToolbar.scss"; +@import "./vector-web/views/messages/_MessageTimestamp.scss"; +@import "./vector-web/views/messages/_SenderProfile.scss"; +@import "./vector-web/views/rooms/_RoomDropTarget.scss"; +@import "./vector-web/views/rooms/_RoomTooltip.scss"; +@import "./vector-web/views/rooms/_SearchBar.scss"; +@import "./vector-web/views/settings/_Notifications.scss"; diff --git a/src/skins/vector/css/rethemendex.sh b/src/skins/vector/css/rethemendex.sh index 29e34382..915b235d 100755 --- a/src/skins/vector/css/rethemendex.sh +++ b/src/skins/vector/css/rethemendex.sh @@ -4,5 +4,5 @@ echo "// autogenerated by rethemendex.sh" > _components.scss for i in `find . -iname _\*.scss | fgrep -v _components.scss`; do - echo "@import \"`dirname $i`/`basename $i .scss`\";" >> _components.scss + echo "@import \"$i\";" >> _components.scss done diff --git a/src/skins/vector/css/themes/dark.scss b/src/skins/vector/css/themes/dark.scss index 5449b90e..0c51486b 100644 --- a/src/skins/vector/css/themes/dark.scss +++ b/src/skins/vector/css/themes/dark.scss @@ -1,72 +1,4 @@ -@import "_base"; - -// typical text (dark-on-white in light skin) -$primary-fg-color: #dddddd; -$primary-bg-color: #2d2d2d; - -// used for focusing form controls -$focus-bg-color: #101010; - -// used for dialog box text -$light-fg-color: #747474; - -// button UI (white-on-green in light skin) -$accent-fg-color: $primary-bg-color; -$accent-color: #76CFA6; - -// red warning colour -$warning-color: #ff0064; - -// left-panel style muted accent color -$secondary-accent-color: $primary-bg-color; - -// used by AddressSelector -$selected-color: #eaf5f0; - -// selected for hoverover & selected event tiles -$event-selected-color: #353535; - -// used for the hairline dividers in RoomView -$primary-hairline-color: #474747; - -// used for the border of input text fields -$input-border-color: #3a3a3a; - -// apart from login forms, which have stronger border -$strong-input-border-color: #656565; - -// context menus -$menu-border-color: rgba(187, 187, 187, 0.5); -$menu-bg-color: #373737; - -$avatar-initial-color: #2d2d2d; - -// ******************** - -$roomtile-name-color: rgba(186, 186, 186, 0.8); -$roomtile-selected-bg-color: rgba(0, 0, 0, 0.8); - -$roomsublist-label-fg-color: $primary-fg-color; -$roomsublist-label-bg-color: #454545; - -// ******************** - -// event tile lifecycle -$event-encrypting-color: #abddbc; -$event-sending-color: #ddd; -$event-notsent-color: #f44; - -// event timestamp -$event-timestamp-color: #acacac; - -// 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; - -@import "../_components"; \ No newline at end of file +@import "_base.scss"; +@import "_dark.scss"; +@import "../_components.scss"; +// moofleasdadsasdadsa \ No newline at end of file diff --git a/src/skins/vector/css/themes/light.scss b/src/skins/vector/css/themes/light.scss index 8b951e27..ea0f93d5 100644 --- a/src/skins/vector/css/themes/light.scss +++ b/src/skins/vector/css/themes/light.scss @@ -1,2 +1,2 @@ -@import "_base"; -@import "../_components"; \ No newline at end of file +@import "_base.scss"; +@import "../_components.scss"; \ No newline at end of file diff --git a/src/vector/index.js b/src/vector/index.js index 47509887..64b87698 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -30,7 +30,7 @@ require('babel-polyfill'); // CSS requires: just putting them here for now as CSS is going to be // refactored "soon" anyway -require('../../build/themes/dark.css'); +require('../../build/dark.scss'); require('gemini-scrollbar/gemini-scrollbar.css'); require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); diff --git a/webpack.config.js b/webpack.config.js index 1c408b70..1f2a8a60 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -24,8 +24,8 @@ module.exports = { { test: /\.json$/, loader: "json" }, { test: /\.js$/, loader: "babel", include: path.resolve('./src') }, // css-raw-loader loads CSS but doesn't try to treat url()s as require()s - { test: /\.css$/, loader: ExtractTextPlugin.extract("css-raw-loader") }, - { test: /\.scss$/, loaders: ["style-loader", "css-loader?sourceMap", "sass-loader?sourceMap"] }, + // we're assuming that postcss has already preprocessed SCSS by this point + { test: /\.s?css$/, loader: ExtractTextPlugin.extract("css-raw-loader") }, ], noParse: [ // don't parse the languages within highlight.js. They cause stack From c1d4a0dd2826b8ec7dad6fcbd946c2ef4cd985b6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 10 Jan 2017 11:06:45 +0000 Subject: [PATCH 120/243] postcss experiment --- postcss.config.json | 18 +++++++ src/skins/vector/css/themes/_dark.scss | 69 ++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 postcss.config.json create mode 100644 src/skins/vector/css/themes/_dark.scss diff --git a/postcss.config.json b/postcss.config.json new file mode 100644 index 00000000..be3585cf --- /dev/null +++ b/postcss.config.json @@ -0,0 +1,18 @@ +{ + "use": [ + "autoprefixer", + "postcss-import", + "postcss-simple-vars", + "postcss-extend", + "postcss-nested", + "postcss-mixins", + "postcss-strip-inline-comments" + ], + "parser": "postcss-scss", + "input": "src/skins/vector/css/themes/[^_]*.scss", + "dir": "build", + "local-plugins": true, + "autoprefixer": { + "browsers": "> 5%" + } +} \ No newline at end of file diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss new file mode 100644 index 00000000..e2c33e3e --- /dev/null +++ b/src/skins/vector/css/themes/_dark.scss @@ -0,0 +1,69 @@ + +// typical text (dark-on-white in light skin) +$primary-fg-color: #dddddd; +$primary-bg-color: #2d2d2d; + +// used for focusing form controls +$focus-bg-color: #101010; + +// used for dialog box text +$light-fg-color: #747474; + +// button UI (white-on-green in light skin) +$accent-fg-color: $primary-bg-color; +$accent-color: #76CFA6; + +// red warning colour +$warning-color: #ff0064; + +// left-panel style muted accent color +$secondary-accent-color: $primary-bg-color; + +// used by AddressSelector +$selected-color: #eaf5f0; + +// selected for hoverover & selected event tiles +$event-selected-color: #353535; + +// used for the hairline dividers in RoomView +$primary-hairline-color: #474747; + +// used for the border of input text fields +$input-border-color: #3a3a3a; + +// apart from login forms, which have stronger border +$strong-input-border-color: #656565; + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #373737; + +$avatar-initial-color: #2d2d2d; + +// ******************** + +$roomtile-name-color: rgba(186, 186, 186, 0.8); +$roomtile-selected-bg-color: rgba(0, 0, 0, 0.8); + +$roomsublist-label-fg-color: $primary-fg-color; +$roomsublist-label-bg-color: #454545; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: #abddbc; +$event-sending-color: #ddd; +$event-notsent-color: #f44; + +// event timestamp +$event-timestamp-color: #acacac; + +// 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; From c5459a2f19607a5d87a783b75cabcdfa4c0abd1d Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 10 Jan 2017 18:39:21 +0000 Subject: [PATCH 121/243] Enable screen sharing easter-egg in desktop app --- electron/src/electron-main.js | 2 ++ src/vector/platform/ElectronPlatform.js | 4 ++++ src/vector/platform/WebPlatform.js | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 2b135a03..675640a5 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -148,6 +148,8 @@ process.on('uncaughtException', function (error) { electron.ipcMain.on('install_update', installUpdate); +electron.app.commandLine.appendSwitch('--enable-usermedia-screen-capturing'); + electron.app.on('ready', () => { if (vectorConfig.update_base_url) { console.log("Starting auto update with base URL: " + vectorConfig.update_base_url); diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 3b41822b..68df88b0 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -127,4 +127,8 @@ export default class ElectronPlatform extends VectorBasePlatform { getDefaultDeviceDisplayName() { return "Riot Desktop on " + platformFriendlyName(); } + + screenCaptureErrorString() { + return null; + } } diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index c4ed4d55..2029822b 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -196,4 +196,12 @@ export default class WebPlatform extends VectorBasePlatform { return app_name + " via " + ua.getBrowser().name + " on " + ua.getOS().name; } + + screenCaptureErrorString() { + // it won't work at all if you're not on HTTPS so whine whine whine + if (!global.window || global.window.location.protocol !== "https:") { + return "You need to be using HTTPS to place a screen-sharing call."; + } + return null; + } } From b71f96e4e5de520f1bbc7166b2bbd0ba1ffae4af Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 10:28:04 +0000 Subject: [PATCH 122/243] Use the role for 'toggle dev tools' Let electron handle it rather than doing it ourselves --- electron/src/vectormenu.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/electron/src/vectormenu.js b/electron/src/vectormenu.js index f4d55c15..70ed3ac3 100644 --- a/electron/src/vectormenu.js +++ b/electron/src/vectormenu.js @@ -72,11 +72,7 @@ const template = [ role: 'togglefullscreen' }, { - label: 'Toggle Developer Tools', - accelerator: process.platform == 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I', - click: function(item, focusedWindow) { - if (focusedWindow) focusedWindow.toggleDevTools(); - } + role: 'toggledevtools' } ] }, From 06718c580e49e4f506f01a1cf938889aaa6b371d Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 16:27:40 +0000 Subject: [PATCH 123/243] Hopefully fix Windows shortcuts * Revert https://github.com/vector-im/riot-web/commit/79d164309f7926cb1c24008e464a516d7a872325 as it seems to break shortcuts altogether * Update electron-builder (and add the squirrel windows package that the newer version now requires: it's been split out). This uses a newer version of squirrel which has some fixes for shortcuts. I'm unsure exactly what was going wrong originally in https://github.com/vector-im/riot-web/issues/2775 but #79d1643 seems to break shortcut creation as far as I can see. --- electron/src/squirrelhooks.js | 7 ++++++- package.json | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/electron/src/squirrelhooks.js b/electron/src/squirrelhooks.js index 295ef5cf..ca0983b6 100644 --- a/electron/src/squirrelhooks.js +++ b/electron/src/squirrelhooks.js @@ -3,7 +3,12 @@ const spawn = require('child_process').spawn; const app = require('electron').app; function run_update_exe(args, done) { - const updateExe = path.resolve(path.dirname(process.execPath), 'Update.exe'); + // Invokes Squirrel's Update.exe which will do things for us like create shortcuts + // Note that there's an Update.exe in the app-x.x.x directory and one in the parent + // directory: we need to run the one in the parent directory, because it discovers + // information about the app by inspecting the directory it's run from. + const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe'); + console.log('Spawning `%s` with args `%s`', updateExe, args); spawn(updateExe, args, { detached: true }).on('close', done); diff --git a/package.json b/package.json index 52cc41be..b110b2af 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,8 @@ "chokidar": "^1.6.1", "cpx": "^1.3.2", "css-raw-loader": "^0.1.1", - "electron-builder": "^10.4.1", + "electron-builder": "^11.2.4", + "electron-builder-squirrel-windows": "^11.2.1", "emojione": "^2.2.3", "expect": "^1.16.0", "fs-extra": "^0.30.0", From 97fc92b1bb01758294f304bc5ef687b307eec2ca Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 16:50:09 +0000 Subject: [PATCH 124/243] Update to electron 1.4.14 This pulls in the chrome change that broke geotrust ssl when the build hit 10 weeks old, so let's get this one out before we hit more disasters. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 52cc41be..59dfe1e8 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ "build": { "appId": "im.riot.app", "category": "Network", - "electronVersion": "1.4.11", + "electronVersion": "1.4.14", "//asar=false": "https://github.com/electron-userland/electron-builder/issues/675", "asar": false, "dereference": true, From 10f0631487589f7c0841cf049be719024150b43e Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 17:20:27 +0000 Subject: [PATCH 125/243] Build the js-sdk in the CI script now it's transpiled --- scripts/jenkins.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/jenkins.sh b/scripts/jenkins.sh index be8d8dee..bd27d6e3 100755 --- a/scripts/jenkins.sh +++ b/scripts/jenkins.sh @@ -19,7 +19,8 @@ tar -C olm -xz < olm/olm-*.tgz rm -r node_modules/olm cp -r olm/package node_modules/olm -# we may be using a dev branch of react-sdk, in which case we need to build it +# we may be using dev branches of js-sdk and react-sdk, in which case we need to build them +(cd node_modules/matrix-js-sdk && npm run build) (cd node_modules/matrix-react-sdk && npm run build) # run the mocha tests From 5258bf9c8455e97ce59e82150c51e31c0c681a44 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 17:25:58 +0000 Subject: [PATCH 126/243] Update README now the js-sdk has a transpile step --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f7754348..57cfd5cb 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,11 @@ to build. 1. Install the prerequisites: `npm install` 1. If you are using the `develop` branch of vector-web, you will probably need to rebuild one of the dependencies, due to - https://github.com/npm/npm/issues/3055: `(cd node_modules/matrix-react-sdk - && npm install)` + https://github.com/npm/npm/issues/3055: + ``` + (cd node_modules/matrix-js-sdk && npm install) + (cd node_modules/matrix-react-sdk && 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 @@ -241,10 +244,10 @@ Finally, build and start Riot itself: 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. -When you make changes to `matrix-react-sdk`, you will need to run `npm run -build` in the relevant directory. You can do this automatically by instead -running `npm start` in the directory, to start a development builder which -will watch for changes to the files and rebuild automatically. +When you make changes to `matrix-react-sdk` or `matrix-js-sdk`, you will need +to run `npm run build` in the relevant directory. You can do this automatically +by instead running `npm start` in the directory, to start a development builder +which will watch for changes to the files and rebuild automatically. If you add or remove any components from the Riot skin, you will need to rebuild the skin's index by running, `npm run reskindex`. From 27e311f7e8dccb0f8e3774d77b612df3beb80529 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 18:15:06 +0000 Subject: [PATCH 127/243] Address PR comments --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 57cfd5cb..ba59ea26 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,9 @@ to build. 1. Switch to the vector-web directory: `cd vector-web` 1. Install the prerequisites: `npm install` 1. If you are using the `develop` branch of vector-web, you will probably need - to rebuild one of the dependencies, due to + to rebuild some of the dependencies, due to https://github.com/npm/npm/issues/3055: + ``` (cd node_modules/matrix-js-sdk && npm install) (cd node_modules/matrix-react-sdk && npm install) From f17f103d1287ce4390505a31abc13fd1484abf42 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 18:19:44 +0000 Subject: [PATCH 128/243] s/build/compile/ for js sdk --- scripts/jenkins.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/jenkins.sh b/scripts/jenkins.sh index bd27d6e3..6ba384e1 100755 --- a/scripts/jenkins.sh +++ b/scripts/jenkins.sh @@ -20,7 +20,7 @@ rm -r node_modules/olm cp -r olm/package node_modules/olm # we may be using dev branches of js-sdk and react-sdk, in which case we need to build them -(cd node_modules/matrix-js-sdk && npm run build) +(cd node_modules/matrix-js-sdk && npm run compile) (cd node_modules/matrix-react-sdk && npm run build) # run the mocha tests From 70f48343ee905f09be867207f5d8eed53f3d896d Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 11 Jan 2017 19:03:52 +0000 Subject: [PATCH 129/243] It's now just build --- scripts/jenkins.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/jenkins.sh b/scripts/jenkins.sh index 6ba384e1..bd27d6e3 100755 --- a/scripts/jenkins.sh +++ b/scripts/jenkins.sh @@ -20,7 +20,7 @@ rm -r node_modules/olm cp -r olm/package node_modules/olm # we may be using dev branches of js-sdk and react-sdk, in which case we need to build them -(cd node_modules/matrix-js-sdk && npm run compile) +(cd node_modules/matrix-js-sdk && npm run build) (cd node_modules/matrix-react-sdk && npm run build) # run the mocha tests From 0d05e607f067ccc0d6d6a6740bb004262a1ff727 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 12 Jan 2017 17:24:28 +0000 Subject: [PATCH 130/243] install js-sdk in travis too --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 1fbc4dcc..af738bb4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,4 +3,5 @@ node_js: - 6 # node v6, to match jenkins install: - npm install + - (cd node_modules/matrix-js-sdk && npm install) - (cd node_modules/matrix-react-sdk && npm run build) From 40545bd48e45fa8f0b40841b89e6f20c1afa9599 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 13 Jan 2017 11:15:55 +0000 Subject: [PATCH 131/243] Released react-sdk & js-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fd7c3b12..823dd04d 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", - "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", + "matrix-js-sdk": "0.7.4-rc.1", + "matrix-react-sdk": "0.8.5-rc.1", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 9471c30f89ded93656ac5bd3f29a296b77a8d894 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 13 Jan 2017 11:21:08 +0000 Subject: [PATCH 132/243] Prepare changelog for v0.9.6-rc.1 --- CHANGELOG.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 265cbe80..00772055 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +Changes in [0.9.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.6-rc.1) (2017-01-13) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.5...v0.9.6-rc.1) + + * Build the js-sdk in the CI script + [\#2920](https://github.com/vector-im/riot-web/pull/2920) + * Hopefully fix Windows shortcuts + [\#2917](https://github.com/vector-im/riot-web/pull/2917) + * Update README now the js-sdk has a transpile step + [\#2921](https://github.com/vector-im/riot-web/pull/2921) + * Use the role for 'toggle dev tools' + [\#2915](https://github.com/vector-im/riot-web/pull/2915) + * Enable screen sharing easter-egg in desktop app + [\#2909](https://github.com/vector-im/riot-web/pull/2909) + * make electron send email validation URLs with a nextlink of riot.im + [\#2808](https://github.com/vector-im/riot-web/pull/2808) + * add Debian Stretch install steps to readme + [\#2809](https://github.com/vector-im/riot-web/pull/2809) + * Update desktop build instructions fixes #2792 + [\#2793](https://github.com/vector-im/riot-web/pull/2793) + * CSS for the delete threepid button + [\#2784](https://github.com/vector-im/riot-web/pull/2784) + Changes in [0.9.5](https://github.com/vector-im/riot-web/releases/tag/v0.9.5) (2016-12-24) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.4...v0.9.5) From e1c1937855967e0a1da57d00728b091d9dbfdec0 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Fri, 13 Jan 2017 11:21:08 +0000 Subject: [PATCH 133/243] v0.9.6-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 823dd04d..ab9e36c5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.5", + "version": "0.9.6-rc.1", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From ccf7db7cc227b4d5a8996d485493b0b8f0c06cc2 Mon Sep 17 00:00:00 2001 From: Hubert Chathi <hubert@uhoreg.ca> Date: Fri, 13 Jan 2017 15:06:29 -0500 Subject: [PATCH 134/243] Fix a couple more references to vector-web in README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f82572fb..1368589e 100644 --- a/README.md +++ b/README.md @@ -46,9 +46,9 @@ to build. 1. Install or update `node.js` so that your `npm` is at least at version `2.0.0` 1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git` -1. Switch to the vector-web directory: `cd vector-web` +1. Switch to the riot-web directory: `cd riot-web` 1. Install the prerequisites: `npm install` -1. If you are using the `develop` branch of vector-web, you will probably need +1. If you are using the `develop` branch of riot-web, you will probably need to rebuild one of the dependencies, due to https://github.com/npm/npm/issues/3055: `(cd node_modules/matrix-react-sdk && npm install)` From 002339fb86ffcd128ba90a0508d85e22a94255fa Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 16 Jan 2017 02:10:45 +0000 Subject: [PATCH 135/243] factor out some more colours --- src/skins/vector/css/_common.scss | 4 +-- .../structures/_UserSettings.scss | 6 ++--- .../structures/login/_Login.scss | 2 +- .../views/elements/_DirectorySearchBox.scss | 2 +- .../views/elements/_ProgressBar.scss | 4 +-- .../views/rooms/_MemberInfo.scss | 2 +- .../views/rooms/_MemberList.scss | 2 +- .../views/rooms/_RoomSettings.scss | 2 +- src/skins/vector/css/themes/_base.scss | 26 +++++++++++++++---- src/skins/vector/css/themes/_dark.scss | 20 +++++++++++++- .../vector-web/structures/_RoomDirectory.scss | 2 +- .../views/rooms/_RoomDropTarget.scss | 2 +- 12 files changed, 54 insertions(+), 20 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index ed96b48c..9e2ac1f4 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -174,13 +174,13 @@ textarea { left: 0; width: 100%; height: 100%; - background-color: #e9e9e9; + background-color: $dialog-background-bg-color; opacity: 0.8; } .mx_Dialog_lightbox .mx_Dialog_background { opacity: 0.85; - background-color: #000; + background-color: $lightbox-background-bg-color; } .mx_Dialog_lightbox .mx_Dialog { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 6ba1002b..1379063d 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -58,7 +58,7 @@ limitations under the License. clear: both; margin-left: 63px; text-transform: uppercase; - color: #3d3b39; + color: $h3-color; font-weight: 600; font-size: 13px; margin-top: 26px; @@ -166,10 +166,10 @@ limitations under the License. { display: inline-block; border: 0px; - border-bottom: 1px solid rgba(151, 151, 151, 0.5); + border-bottom: 1px solid $input-underline-color; padding: 0px; width: 240px; - color: rgba(74, 74, 74, 0.9); + color: $input-fg-color; font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; font-size: 16px; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 5f4164e8..75dc7180 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -147,7 +147,7 @@ limitations under the License. } .mx_Login_error { - color: #ff2020; + color: $warning-color; font-weight: bold; text-align: center; /* diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss index dd953ab9..66063733 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss @@ -44,7 +44,7 @@ input[type=text].mx_DirectorySearchBox_input:focus { padding: 3px; padding-left: 10px; padding-right: 10px; - background-color: #efefef; + background-color: $plinth-bg-color; border-radius: 3px; background-image: url('img/icon-return.svg'); background-position: 8px 70%; diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss index 7b5e0c74..a3fee232 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_ProgressBar.scss @@ -16,10 +16,10 @@ limitations under the License. .mx_ProgressBar { height: 5px; - border: 1px solid black; + border: 1px solid $progressbar-color; } .mx_ProgressBar_fill { height: 100%; - background-color: #000; + background-color: $progressbar-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss index 3b4b653e..970c2496 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss @@ -61,7 +61,7 @@ limitations under the License. .mx_MemberInfo h3 { text-transform: uppercase; - color: #3d3b39; + color: $h3-color; font-weight: 600; font-size: 13px; margin-top: 16px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss index 3c7e3ec5..8a6f1172 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss @@ -96,7 +96,7 @@ limitations under the License. .mx_MemberList_invited h2 { text-transform: uppercase; - color: #3d3b39; + color: $h3-color; font-weight: 600; font-size: 13px; padding-left: 3px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss index 132c9792..d9de0e8a 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss @@ -81,7 +81,7 @@ limitations under the License. .mx_RoomSettings h3 { text-transform: uppercase; - color: #3d3b39; + color: $h3-color; font-weight: 600; font-size: 13px; margin-top: 36px; diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index b9fd2d12..e623372a 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -1,5 +1,4 @@ - // typical text (dark-on-white in light skin) $primary-fg-color: #454545; $primary-bg-color: #ffffff; @@ -20,6 +19,12 @@ $warning-color: #ff0064; // left-panel style muted accent color $secondary-accent-color: #eaf5f0; +// 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; @@ -35,18 +40,27 @@ $input-border-color: #f0f0f0; // 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; +$h3-color: #3d3b39; + +$dialog-background-bg-color: #e9e9e9; +$lightbox-background-bg-color: #000; + // ******************** $roomtile-name-color: rgba(69, 69, 69, 0.8); $roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); -$roomsublist-label-fg-color: #3d3b39; +$roomsublist-label-fg-color: $h3-color; $roomsublist-label-bg-color: #d3efe1; // ******************** @@ -64,8 +78,10 @@ $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; \ No newline at end of file +$lightbox-border-color: #ffffff; + +// unused? +$progressbar-color: #000; \ No newline at end of file diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index e2c33e3e..1d93c1a4 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -19,6 +19,12 @@ $warning-color: #ff0064; // left-panel style muted accent color $secondary-accent-color: $primary-bg-color; +// used by RoomDirectory permissions +$plinth-bg-color: #474747; + +// used by RoomDropTarget +$droptarget-bg-color: rgba(45,45,45,0.5); + // used by AddressSelector $selected-color: #eaf5f0; @@ -34,18 +40,27 @@ $input-border-color: #3a3a3a; // apart from login forms, which have stronger border $strong-input-border-color: #656565; +// used for UserSettings EditableText +$input-underline-color: $primary-fg-color; +$input-fg-color: $primary-fg-color; + // context menus $menu-border-color: rgba(187, 187, 187, 0.5); $menu-bg-color: #373737; $avatar-initial-color: #2d2d2d; +$h3-color: $primary-fg-color; + +$dialog-background-bg-color: #000; +$lightbox-background-bg-color: #000; + // ******************** $roomtile-name-color: rgba(186, 186, 186, 0.8); $roomtile-selected-bg-color: rgba(0, 0, 0, 0.8); -$roomsublist-label-fg-color: $primary-fg-color; +$roomsublist-label-fg-color: $h3-color; $roomsublist-label-bg-color: #454545; // ******************** @@ -67,3 +82,6 @@ $e2e-warning-color: #ba6363; $lightbox-bg-color: #454545; $lightbox-fg-color: #ffffff; $lightbox-border-color: #ffffff; + +// unused? +$progressbar-color: #000; \ No newline at end of file diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index e5df8741..3dd885ba 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -110,7 +110,7 @@ limitations under the License. padding-right: 5px; height: 15px; border-radius: 11px; - background-color: $secondary-accent-color; + background-color: $plinth-bg-color; text-transform: uppercase; font-weight: 600; font-size: 11px; diff --git a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss index 2fe16ca9..e91658e8 100644 --- a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss +++ b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss @@ -24,7 +24,7 @@ limitations under the License. padding-bottom: 5px; border: 1px dashed $accent-color; color: $primary-fg-color; - background-color: rgba(255,255,255,0.5); + background-color: $droptarget-bg-color; border-radius: 4px; } From 231306ea7ce629fe0e58cab62f038d2b6e271dc7 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 16 Jan 2017 13:24:44 +0000 Subject: [PATCH 136/243] Update js-sdk & react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ab9e36c5..7b2916e0 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.4-rc.1", - "matrix-react-sdk": "0.8.5-rc.1", + "matrix-js-sdk": "0.7.4", + "matrix-react-sdk": "0.8.5", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 3f3a31e475598237d0a44bd53746a06a48965bda Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 16 Jan 2017 13:26:21 +0000 Subject: [PATCH 137/243] Prepare changelog for v0.9.6 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00772055..ee745baa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +Changes in [0.9.6](https://github.com/vector-im/riot-web/releases/tag/v0.9.6) (2017-01-16) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.6-rc.1...v0.9.6) + + * Update to matrix-js-sdk 0.9.6 for video calling fix + Changes in [0.9.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.6-rc.1) (2017-01-13) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.5...v0.9.6-rc.1) From 22060ac5a44b9d4fa66b8ffd74690588ca252297 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 16 Jan 2017 13:26:22 +0000 Subject: [PATCH 138/243] v0.9.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b2916e0..f169cf9b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.6-rc.1", + "version": "0.9.6", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From ae7820e8f28552ca1a19fe7612a6d1c02c5b633f Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 16 Jan 2017 13:37:18 +0000 Subject: [PATCH 139/243] Fix merge --- package.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/package.json b/package.json index 054dedf9..f169cf9b 100644 --- a/package.json +++ b/package.json @@ -62,13 +62,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", -<<<<<<< HEAD - "matrix-js-sdk": "0.7.2", - "matrix-react-sdk": "0.8.4", -======= "matrix-js-sdk": "0.7.4", "matrix-react-sdk": "0.8.5", ->>>>>>> release-v0.9.6 "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From b3bff92cc2cbe0f8818f2ae1563335671d0a2733 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Mon, 16 Jan 2017 18:01:25 +0000 Subject: [PATCH 140/243] Put parent build hash in webpack output filenames In order to better support a world where old build artifacts are available (which is necessary to support bundle.js splitting), collect all the webpack artifacts for the build into a single directory. Then we'll be able to clear out old builds after a few weeks, knowing they won't be in use any more. --- webpack.config.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index 3500fedc..9c0c6bbb 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -40,7 +40,8 @@ module.exports = { }, output: { path: path.join(__dirname, "webapp"), - filename: "[name].[chunkhash].js", + filename: "[hash]/[name].js", + chunkFilename: "[hash]/[name].js", devtoolModuleFilenameTemplate: function(info) { // Reading input source maps gives only relative paths here for // everything. Until I figure out how to fix this, this is a @@ -79,7 +80,7 @@ module.exports = { }), new ExtractTextPlugin( - "[name].[contenthash].css", + "[hash]/[name].css", { allChunks: true } From 906d42688eb153a10e0e8f96701af1ebf4897ee0 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 16 Jan 2017 18:40:29 +0000 Subject: [PATCH 141/243] make autoprefixer work by reordering it --- postcss.config.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/postcss.config.json b/postcss.config.json index be3585cf..7ed32cda 100644 --- a/postcss.config.json +++ b/postcss.config.json @@ -1,7 +1,7 @@ { "use": [ - "autoprefixer", "postcss-import", + "autoprefixer", "postcss-simple-vars", "postcss-extend", "postcss-nested", @@ -11,8 +11,5 @@ "parser": "postcss-scss", "input": "src/skins/vector/css/themes/[^_]*.scss", "dir": "build", - "local-plugins": true, - "autoprefixer": { - "browsers": "> 5%" - } -} \ No newline at end of file + "local-plugins": true +} From dc1563d916900a1ad66af358edc26f02d25a1c8f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 16 Jan 2017 18:55:29 +0000 Subject: [PATCH 142/243] strip out unneeded webkit prefixes now we're using autoprefixer --- src/skins/vector/css/_common.scss | 5 ---- .../structures/_FilePanel.scss | 3 -- .../structures/_MatrixChat.scss | 25 ---------------- .../structures/_NotificationPanel.scss | 3 -- .../structures/_RoomStatusBar.scss | 3 -- .../structures/_RoomView.scss | 29 ------------------- .../structures/_SearchBox.scss | 2 -- .../structures/_UserSettings.scss | 9 ------ .../structures/login/_Login.scss | 4 --- .../views/elements/_DirectorySearchBox.scss | 2 -- .../views/rooms/_LinkPreviewWidget.scss | 4 --- .../views/rooms/_MemberList.scss | 8 ----- .../views/rooms/_MessageComposer.scss | 1 - .../views/rooms/_RoomHeader.scss | 15 ---------- .../views/rooms/_RoomPreviewBar.scss | 7 ----- .../views/rooms/_SearchableEntityList.scss | 4 --- .../views/voip/_IncomingCallbox.scss | 2 -- .../css/vector-web/structures/_LeftPanel.scss | 9 ------ .../vector-web/structures/_RightPanel.scss | 12 -------- .../vector-web/structures/_RoomDirectory.scss | 9 ------ .../vector-web/views/elements/_ImageView.scss | 14 --------- .../vector-web/views/elements/_Spinner.scss | 4 --- .../views/globals/_GuestWarningBar.scss | 3 -- .../views/globals/_MatrixToolbar.scss | 4 --- .../vector-web/views/rooms/_SearchBar.scss | 3 -- 25 files changed, 184 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 9e2ac1f4..6a623855 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -83,7 +83,6 @@ textarea { /* applied to side-panels and messagepanel when in RoomSettings */ .mx_fadable { opacity: 1; - -webkit-transition: opacity 0.2s ease-in-out; -moz-transition: opacity 0.2s ease-in-out; -ms-transition: opacity 0.2s ease-in-out; -o-transition: opacity 0.2s ease-in-out; @@ -128,14 +127,10 @@ textarea { width: 100%; height: 100%; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; - -webkit-align-items: center; align-items: center; - -webkit-justify-content: center; justify-content: center; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss index 2f4a00ad..6c769a3b 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss @@ -15,13 +15,10 @@ limitations under the License. */ .mx_FilePanel { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; - -webkit-flex: 1 1 0; flex: 1 1 0; width: 100%; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss index 5587a609..61eb0170 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss @@ -27,34 +27,27 @@ limitations under the License. } .mx_MatrixChat_wrapper { - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; width: 100%; height: 100%; } .mx_MatrixToolbar { - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; height: 40px; } .mx_GuestWarningBar { - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; height: 40px; @@ -68,52 +61,40 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; - -webkit-flex: 1; flex: 1; } .mx_MatrixChat .mx_LeftPanel { - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; background-color: $secondary-accent-color; - -webkit-flex: 0 0 235px; flex: 0 0 235px; } .mx_MatrixChat .mx_LeftPanel.collapsed { - -webkit-flex: 0 0 60px; flex: 0 0 60px; } .mx_MatrixChat .mx_MatrixChat_middlePanel { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; padding-left: 20px; padding-right: 22px; background-color: $primary-bg-color; - -webkit-flex: 1; flex: 1; /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 @@ -132,25 +113,19 @@ limitations under the License. * point, but instead we fudge it and make the middlePanel * flex itself. */ - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; } .mx_MatrixChat .mx_RightPanel { - -webkit-box-ordinal-group: 3; -moz-box-ordinal-group: 3; -ms-flex-order: 3; - -webkit-order: 3; order: 3; - -webkit-flex: 0 0 235px; flex: 0 0 235px; } .mx_MatrixChat .mx_RightPanel.collapsed { - -webkit-flex: 0 0 122px; flex: 0 0 122px; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss index 06dd92f3..ed818497 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss @@ -15,13 +15,10 @@ limitations under the License. */ .mx_NotificationPanel { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; - -webkit-flex: 1 1 0; flex: 1 1 0; width: 100%; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss index d0ac5a60..5daac88f 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss @@ -123,18 +123,15 @@ limitations under the License. .mx_RoomStatusBar_tabCompleteWrapper { display: flex; - display: -webkit-flex; height: 26px; } .mx_RoomStatusBar_tabCompleteWrapper .mx_TabCompleteBar { flex: 1 1 auto; - -webkit-flex: 1 1 auto; } .mx_RoomStatusBar_tabCompleteEol { flex: 0 0 auto; - -webkit-flex: 0 0 auto; color: $accent-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index 182d690c..dc668236 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -18,25 +18,19 @@ limitations under the License. word-wrap: break-word; position: relative; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; width: 100%; flex-direction: column; - -webkit-flex-direction: column; } .mx_RoomView .mx_RoomHeader { - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; - -webkit-flex: 0 0 70px; flex: 0 0 70px; } @@ -53,8 +47,6 @@ limitations under the License. padding-right: 12px; margin-left: -12px; - -webkit-border-top-left-radius: 10px; - -webkit-border-top-right-radius: 10px; -moz-border-radius-topleft: 10px; -moz-border-radius-topright: 10px; border-top-left-radius: 10px; @@ -77,10 +69,8 @@ limitations under the License. } .mx_RoomView_auxPanel { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; min-width: 0px; @@ -91,26 +81,20 @@ limitations under the License. overflow: auto; border-bottom: 1px solid $primary-hairline-color; - -webkit-flex: 0 0 auto; flex: 0 0 auto; } .mx_RoomView_topUnreadMessagesBar { - -webkit-box-ordinal-group: 3; -moz-box-ordinal-group: 3; -ms-flex-order: 3; - -webkit-order: 3; order: 3; } .mx_RoomView_messagePanel { - -webkit-box-ordinal-group: 4; -moz-box-ordinal-group: 4; -ms-flex-order: 4; - -webkit-order: 4; order: 4; - -webkit-flex: 1 1 0; flex: 1 1 0; width: 100%; @@ -124,22 +108,17 @@ limitations under the License. min-height: 100%; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; justify-content: flex-end; - -webkit-justify-content: flex-end; } .mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { justify-content: flex-start; - -webkit-justify-content: flex-start; } .mx_RoomView_MessageList { @@ -162,10 +141,8 @@ limitations under the License. } .mx_RoomView_invitePrompt { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; min-width: 0px; @@ -193,14 +170,11 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_statusArea { - -webkit-box-ordinal-group: 5; -moz-box-ordinal-group: 5; -ms-flex-order: 5; - -webkit-order: 5; order: 5; width: 100%; - -webkit-flex: 0 0 auto; flex: 0 0 auto; } @@ -257,14 +231,11 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView .mx_MessageComposer { - -webkit-box-ordinal-group: 6; -moz-box-ordinal-group: 6; -ms-flex-order: 6; - -webkit-order: 6; order: 6; width: 100%; - -webkit-flex: 0 0 auto; flex: 0 0 auto; margin-right: 2px; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss index 0b536259..bd335f60 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss @@ -22,7 +22,6 @@ limitations under the License. padding-bottom: 22px; display: flex; - display: -webkit-flex; } .mx_SearchBox_searchButton { @@ -38,7 +37,6 @@ limitations under the License. .mx_SearchBox_search { flex: 1 1 auto; - -webkit-flex: 1 1 auto; width: 0px; font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; font-size: 12px; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 1379063d..2c62a4ec 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -20,34 +20,25 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; } .mx_UserSettings .mx_RoomHeader { - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; - -webkit-flex: 0 0 70px; flex: 0 0 70px; } .mx_UserSettings_body { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; - -webkit-flex: 1 1 0; flex: 1 1 0; margin-top: -20px; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 75dc7180..332f313f 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -18,14 +18,10 @@ limitations under the License. width: 100%; height: 100%; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; - -webkit-align-items: center; align-items: center; - -webkit-justify-content: center; justify-content: center; overflow: auto; diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss index 66063733..8824c659 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_DirectorySearchBox.scss @@ -22,14 +22,12 @@ limitations under the License. .mx_DirectorySearchBox_container { display: flex; - display: -webkit-flex; padding-left: 9px; padding-right: 9px; } .mx_DirectorySearchBox_input { flex-grow: 1; - -webkit-flex-grow: 1; border: 0; padding: 0; font-weight: 300; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss index 2e2d9f80..0e911541 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss @@ -18,14 +18,12 @@ limitations under the License. margin-top: 15px; margin-right: 15px; margin-bottom: 15px; - display: -webkit-flex; display: flex; border-left: 4px solid #ddd; color: #888; } .mx_LinkPreviewWidget_image { - -webkit-flex: 0 0 100px; flex: 0 0 100px; margin-left: 15px; text-align: center; @@ -34,7 +32,6 @@ limitations under the License. .mx_LinkPreviewWidget_caption { margin-left: 15px; - -webkit-flex: 1 1 auto; flex: 1 1 auto; } @@ -56,7 +53,6 @@ limitations under the License. .mx_LinkPreviewWidget_cancel { visibility: hidden; cursor: pointer; - -webkit-flex: 0 0 40px; flex: 0 0 40px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss index 8a6f1172..403de7f9 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss @@ -20,22 +20,17 @@ limitations under the License. margin-top: 12px; margin-right: 20px; - -webkit-flex: 1; flex: 1; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; } .mx_MemberList .mx_Spinner { flex: 0; - -webkit-flex: 0; } .mx_MemberList_chevron { @@ -48,7 +43,6 @@ limitations under the License. overflow-y: auto; order: 1; - -webkit-flex: 1 1 0; flex: 1 1 0px; } @@ -80,7 +74,6 @@ limitations under the License. .mx_MemberList_joined { order: 2; flex: 1 0 0; - -webkit-flex: 1 0 0; overflow-y: auto; } @@ -89,7 +82,6 @@ limitations under the License. .mx_MemberList_invited { order: 3; flex: 0 0 100px; - -webkit-flex: 0 0 100px; overflow-y: auto; } */ diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index e5ffd220..a4549c0f 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -105,7 +105,6 @@ limitations under the License. border: 0px; resize: none; outline: none; - -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; color: $primary-fg-color; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index a26f12ee..73327ea6 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -25,36 +25,28 @@ limitations under the License. margin: auto; height: 70px; - -webkit-align-items: center; align-items: center; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; } .mx_RoomHeader_leftRow { margin-left: -2px; - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; - -webkit-flex: 1; flex: 1; } .mx_RoomHeader_spinner { height: 36px; - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; padding-left: 12px; @@ -71,16 +63,13 @@ limitations under the License. margin-top: -2px; text-align: center; - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; cursor: pointer; /* - -webkit-flex: 0 0 90px; flex: 0 0 90px; */ padding-left: 12px; @@ -88,10 +77,8 @@ limitations under the License. } .mx_RoomHeader_cancelButton { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; cursor: pointer; @@ -105,10 +92,8 @@ limitations under the License. background-color: $primary-bg-color; display: flex; align-items: center; - -webkit-box-ordinal-group: 3; -moz-box-ordinal-group: 3; -ms-flex-order: 3; - -webkit-order: 3; order: 3; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss index 6b71f96d..0d030ad7 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss @@ -18,19 +18,14 @@ limitations under the License. text-align: center; height: 176px; - -webkit-align-items: center; align-items: center; flex-direction: column; - -webkit-flex-direction: column; justify-content: center; - -webkit-justify-content: center; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; } @@ -56,9 +51,7 @@ limitations under the License. } .mx_RoomPreviewBar_warning { - display: -webkit-flex; display: flex; - -webkit-align-items: center; align-items: center; padding: 8px; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss index 9a24868d..b404da02 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss @@ -16,10 +16,8 @@ limitations under the License. .mx_SearchableEntityList { display: flex; - display: -webkit-flex; flex-direction: column; - -webkit-flex-direction: column; } .mx_SearchableEntityList_query { @@ -49,7 +47,6 @@ limitations under the License. .mx_SearchableEntityList_listWrapper { flex: 1; - -webkit-flex: 1; overflow-y: auto; } @@ -67,7 +64,6 @@ limitations under the License. .mx_SearchableEntityList_hrWrapper { width: 100%; flex: 0 0 auto; - -webkit-flex: 0 0 auto; } .mx_SearchableEntityList hr { diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss index 97a82a03..d45c4a58 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss @@ -41,14 +41,12 @@ limitations under the License. .mx_IncomingCallBox_buttons { display: flex; - display: -webkit-flex; } .mx_IncomingCallBox_buttons_cell { vertical-align: middle; padding: 6px; flex: 1; - -webkit-flex: 1; } .mx_IncomingCallBox_buttons_decline, diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss index 4e328171..36a1e298 100644 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss @@ -17,13 +17,10 @@ limitations under the License. .mx_LeftPanel { position: relative; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; } .mx_LeftPanel_hideButton { @@ -39,13 +36,10 @@ limitations under the License. } .mx_LeftPanel .mx_RoomList_scrollbar { - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; - -webkit-flex: 1 1 0; flex: 1 1 0; overflow-y: auto; @@ -57,16 +51,13 @@ limitations under the License. } .mx_LeftPanel .mx_BottomLeftMenu { - -webkit-box-ordinal-group: 3; -moz-box-ordinal-group: 3; -ms-flex-order: 3; - -webkit-order: 3; order: 3; border-top: 1px solid rgba(118, 207, 166, 0.2); margin-left: 16px; /* gutter */ margin-right: 16px; /* gutter */ - -webkit-flex: 0 0 60px; flex: 0 0 60px; z-index: 1; } diff --git a/src/skins/vector/css/vector-web/structures/_RightPanel.scss b/src/skins/vector/css/vector-web/structures/_RightPanel.scss index b9dbf1cd..000d36b3 100644 --- a/src/skins/vector/css/vector-web/structures/_RightPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_RightPanel.scss @@ -17,26 +17,20 @@ limitations under the License. .mx_RightPanel { position: relative; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; } .mx_RightPanel_header { - -webkit-box-ordinal-group: 1; -moz-box-ordinal-group: 1; -ms-flex-order: 1; - -webkit-order: 1; order: 1; border-bottom: 1px solid $primary-hairline-color; margin-right: 20px; - -webkit-flex: 0 0 70px; flex: 0 0 70px; } @@ -81,26 +75,20 @@ limitations under the License. .mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel_blank { - -webkit-box-ordinal-group: 2; -moz-box-ordinal-group: 2; -ms-flex-order: 2; - -webkit-order: 2; order: 2; flex: 1 1 0; - -webkit-flex: 1 1 0; } .mx_RightPanel_footer { - -webkit-box-ordinal-group: 3; -moz-box-ordinal-group: 3; -ms-flex-order: 3; - -webkit-order: 3; order: 3; border-top: 1px solid $primary-hairline-color; margin-right: 20px; - -webkit-flex: 0 0 60px; flex: 0 0 60px; } diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index 3dd885ba..c80a8d8f 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -22,33 +22,25 @@ limitations under the License. margin-bottom: 12px; color: $primary-fg-color; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; } .mx_RoomDirectory_list { - -webkit-flex: 1; flex: 1; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; flex-direction: column; - -webkit-flex-direction: column; } .mx_RoomDirectory_list .mx_RoomView_messageListWrapper { justify-content: flex-start; - -webkit-justify-content: flex-start; } .mx_RoomDirectory_listheader { @@ -72,7 +64,6 @@ limitations under the License. .mx_RoomDirectory_tableWrapper { overflow-y: auto; - -webkit-flex: 1 1 0; flex: 1 1 0; } diff --git a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss index d66d9c7d..d31a9d27 100644 --- a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss +++ b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss @@ -19,18 +19,14 @@ limitations under the License. */ .mx_ImageView { - display: -webkit-flex; display: flex; width: 100%; height: 100%; - -webkit-align-items: center; align-items: center; } .mx_ImageView_lhs { - -webkit-box-ordinal-group: 1; order: 1; - -webkit-flex: 1; flex: 1 1 10%; min-width: 60px; /* @@ -40,18 +36,13 @@ limitations under the License. } .mx_ImageView_content { - -webkit-box-ordinal-group: 2; order: 2; /* min-width hack needed for FF */ min-width: 0px; height: 90%; - -webkit-flex: 15; flex: 15 15 0; - display: -webkit-flex; display: flex; - -webkit-align-items: center; - -webkit-justify-content: center; align-items: center; justify-content: center; } @@ -78,11 +69,8 @@ limitations under the License. .mx_ImageView_label { text-align: left; display: flex; - display: -webkit-flex; justify-content: center; - -webkit-justify-content: center; flex-direction: column; - -webkit-flex-direction: column; padding-left: 30px; padding-right: 30px; min-height: 100%; @@ -141,9 +129,7 @@ limitations under the License. } .mx_ImageView_rhs { - -webkit-box-ordinal-group: 3; order: 3; - -webkit-flex: 1; flex: 1 1 10%; min-width: 300px; /* diff --git a/src/skins/vector/css/vector-web/views/elements/_Spinner.scss b/src/skins/vector/css/vector-web/views/elements/_Spinner.scss index 3831cc4c..aea57379 100644 --- a/src/skins/vector/css/vector-web/views/elements/_Spinner.scss +++ b/src/skins/vector/css/vector-web/views/elements/_Spinner.scss @@ -15,16 +15,12 @@ limitations under the License. */ .mx_Spinner { - display: -webkit-flex; display: flex; - -webkit-align-items: center; - -webkit-justify-content: center; align-items: center; justify-content: center; width: 100%; height: 100%; flex: 1; - -webkit-flex: 1; } .mx_MatrixChat_middlePanel .mx_Spinner { diff --git a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss index e8b5aebb..2141f3a8 100644 --- a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss @@ -18,12 +18,9 @@ limitations under the License. background-color: $accent-color; color: $accent-fg-color; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; - -webkit-align-items: center; align-items: center; } diff --git a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss index 9bd70bb9..9e21bcb1 100644 --- a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss @@ -18,12 +18,9 @@ limitations under the License. background-color: $accent-color; color: $accent-fg-color; - display: -webkit-box; display: -moz-box; display: -ms-flexbox; - display: -webkit-flex; display: flex; - -webkit-align-items: center; align-items: center; } @@ -34,7 +31,6 @@ limitations under the License. } .mx_MatrixToolbar_content { - -webkit-flex: 1; flex: 1; } diff --git a/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss b/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss index 5d195322..079ea16c 100644 --- a/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss +++ b/src/skins/vector/css/vector-web/views/rooms/_SearchBar.scss @@ -18,9 +18,7 @@ limitations under the License. padding-top: 5px; padding-bottom: 5px; display: flex; - display: -webkit-flex; align-items: center; - -webkit-align-items: center; } .mx_SearchBar_input { @@ -32,7 +30,6 @@ limitations under the License. padding-left: 11px; width: auto; flex: 1 1 0; - -webkit-flex: 1 1 0; } .mx_SearchBar_searchButton { From c305b72b918c08661d0b068121011e4ab7f5ae8f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 16 Jan 2017 18:58:02 +0000 Subject: [PATCH 143/243] strip out unneeded -moz- prefixes --- src/skins/vector/css/_common.scss | 2 -- .../css/matrix-react-sdk/structures/_FilePanel.scss | 1 - .../css/matrix-react-sdk/structures/_MatrixChat.scss | 9 --------- .../structures/_NotificationPanel.scss | 1 - .../css/matrix-react-sdk/structures/_RoomView.scss | 11 ----------- .../matrix-react-sdk/structures/_UserSettings.scss | 3 --- .../css/matrix-react-sdk/structures/login/_Login.scss | 1 - .../css/matrix-react-sdk/views/rooms/_MemberList.scss | 1 - .../views/rooms/_MessageComposer.scss | 1 - .../css/matrix-react-sdk/views/rooms/_RoomHeader.scss | 6 ------ .../matrix-react-sdk/views/rooms/_RoomPreviewBar.scss | 1 - .../vector/css/vector-web/structures/_LeftPanel.scss | 3 --- .../vector/css/vector-web/structures/_RightPanel.scss | 4 ---- .../css/vector-web/structures/_RoomDirectory.scss | 2 -- .../vector-web/views/globals/_GuestWarningBar.scss | 1 - .../css/vector-web/views/globals/_MatrixToolbar.scss | 1 - 16 files changed, 48 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 6a623855..5e0b902a 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -83,7 +83,6 @@ textarea { /* applied to side-panels and messagepanel when in RoomSettings */ .mx_fadable { opacity: 1; - -moz-transition: opacity 0.2s ease-in-out; -ms-transition: opacity 0.2s ease-in-out; -o-transition: opacity 0.2s ease-in-out; } @@ -127,7 +126,6 @@ textarea { width: 100%; height: 100%; - display: -moz-box; display: -ms-flexbox; display: flex; align-items: center; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss index 6c769a3b..2fb1131d 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss @@ -15,7 +15,6 @@ limitations under the License. */ .mx_FilePanel { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss index 61eb0170..72f1feff 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss @@ -27,7 +27,6 @@ limitations under the License. } .mx_MatrixChat_wrapper { - display: -moz-box; display: -ms-flexbox; display: flex; @@ -38,7 +37,6 @@ limitations under the License. } .mx_MatrixToolbar { - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -46,7 +44,6 @@ limitations under the License. } .mx_GuestWarningBar { - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -61,11 +58,9 @@ limitations under the License. width: 100%; height: 100%; - display: -moz-box; display: -ms-flexbox; display: flex; - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; @@ -73,7 +68,6 @@ limitations under the License. } .mx_MatrixChat .mx_LeftPanel { - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -87,7 +81,6 @@ limitations under the License. } .mx_MatrixChat .mx_MatrixChat_middlePanel { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; @@ -113,13 +106,11 @@ limitations under the License. * point, but instead we fudge it and make the middlePanel * flex itself. */ - display: -moz-box; display: -ms-flexbox; display: flex; } .mx_MatrixChat .mx_RightPanel { - -moz-box-ordinal-group: 3; -ms-flex-order: 3; order: 3; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss index ed818497..b3f724d8 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss @@ -15,7 +15,6 @@ limitations under the License. */ .mx_NotificationPanel { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index dc668236..6a5db95a 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -18,7 +18,6 @@ limitations under the License. word-wrap: break-word; position: relative; - display: -moz-box; display: -ms-flexbox; display: flex; width: 100%; @@ -27,7 +26,6 @@ limitations under the License. } .mx_RoomView .mx_RoomHeader { - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -47,8 +45,6 @@ limitations under the License. padding-right: 12px; margin-left: -12px; - -moz-border-radius-topleft: 10px; - -moz-border-radius-topright: 10px; border-top-left-radius: 10px; border-top-right-radius: 10px; @@ -69,7 +65,6 @@ limitations under the License. } .mx_RoomView_auxPanel { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; @@ -85,13 +80,11 @@ limitations under the License. } .mx_RoomView_topUnreadMessagesBar { - -moz-box-ordinal-group: 3; -ms-flex-order: 3; order: 3; } .mx_RoomView_messagePanel { - -moz-box-ordinal-group: 4; -ms-flex-order: 4; order: 4; @@ -108,7 +101,6 @@ limitations under the License. min-height: 100%; - display: -moz-box; display: -ms-flexbox; display: flex; @@ -141,7 +133,6 @@ limitations under the License. } .mx_RoomView_invitePrompt { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; @@ -170,7 +161,6 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_statusArea { - -moz-box-ordinal-group: 5; -ms-flex-order: 5; order: 5; @@ -231,7 +221,6 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView .mx_MessageComposer { - -moz-box-ordinal-group: 6; -ms-flex-order: 6; order: 6; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 2c62a4ec..d190e32c 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -20,14 +20,12 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -moz-box; display: -ms-flexbox; display: flex; flex-direction: column; } .mx_UserSettings .mx_RoomHeader { - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -35,7 +33,6 @@ limitations under the License. } .mx_UserSettings_body { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 332f313f..90dd2c1e 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -18,7 +18,6 @@ limitations under the License. width: 100%; height: 100%; - display: -moz-box; display: -ms-flexbox; display: flex; align-items: center; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss index 403de7f9..9c1daa95 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss @@ -22,7 +22,6 @@ limitations under the License. flex: 1; - display: -moz-box; display: -ms-flexbox; display: flex; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index a4549c0f..5ecb3441 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -105,7 +105,6 @@ limitations under the License. border: 0px; resize: none; outline: none; - -moz-box-shadow: none; box-shadow: none; color: $primary-fg-color; background-color: $primary-bg-color; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 73327ea6..297a3f16 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -27,7 +27,6 @@ limitations under the License. align-items: center; - display: -moz-box; display: -ms-flexbox; display: flex; } @@ -35,7 +34,6 @@ limitations under the License. .mx_RoomHeader_leftRow { margin-left: -2px; - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -45,7 +43,6 @@ limitations under the License. .mx_RoomHeader_spinner { height: 36px; - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; @@ -63,7 +60,6 @@ limitations under the License. margin-top: -2px; text-align: center; - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; @@ -77,7 +73,6 @@ limitations under the License. } .mx_RoomHeader_cancelButton { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; @@ -92,7 +87,6 @@ limitations under the License. background-color: $primary-bg-color; display: flex; align-items: center; - -moz-box-ordinal-group: 3; -ms-flex-order: 3; order: 3; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss index 0d030ad7..2114e01a 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss @@ -24,7 +24,6 @@ limitations under the License. justify-content: center; - display: -moz-box; display: -ms-flexbox; display: flex; } diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss index 36a1e298..030c5367 100644 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss @@ -17,7 +17,6 @@ limitations under the License. .mx_LeftPanel { position: relative; - display: -moz-box; display: -ms-flexbox; display: flex; flex-direction: column; @@ -36,7 +35,6 @@ limitations under the License. } .mx_LeftPanel .mx_RoomList_scrollbar { - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -51,7 +49,6 @@ limitations under the License. } .mx_LeftPanel .mx_BottomLeftMenu { - -moz-box-ordinal-group: 3; -ms-flex-order: 3; order: 3; diff --git a/src/skins/vector/css/vector-web/structures/_RightPanel.scss b/src/skins/vector/css/vector-web/structures/_RightPanel.scss index 000d36b3..a76e5020 100644 --- a/src/skins/vector/css/vector-web/structures/_RightPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_RightPanel.scss @@ -17,14 +17,12 @@ limitations under the License. .mx_RightPanel { position: relative; - display: -moz-box; display: -ms-flexbox; display: flex; flex-direction: column; } .mx_RightPanel_header { - -moz-box-ordinal-group: 1; -ms-flex-order: 1; order: 1; @@ -75,14 +73,12 @@ limitations under the License. .mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel_blank { - -moz-box-ordinal-group: 2; -ms-flex-order: 2; order: 2; flex: 1 1 0; } .mx_RightPanel_footer { - -moz-box-ordinal-group: 3; -ms-flex-order: 3; order: 3; diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index c80a8d8f..e2b65e68 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -22,7 +22,6 @@ limitations under the License. margin-bottom: 12px; color: $primary-fg-color; - display: -moz-box; display: -ms-flexbox; display: flex; @@ -32,7 +31,6 @@ limitations under the License. .mx_RoomDirectory_list { flex: 1; - display: -moz-box; display: -ms-flexbox; display: flex; diff --git a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss index 2141f3a8..d9d3cb19 100644 --- a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss @@ -18,7 +18,6 @@ limitations under the License. background-color: $accent-color; color: $accent-fg-color; - display: -moz-box; display: -ms-flexbox; display: flex; align-items: center; diff --git a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss index 9e21bcb1..a425d8cd 100644 --- a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss @@ -18,7 +18,6 @@ limitations under the License. background-color: $accent-color; color: $accent-fg-color; - display: -moz-box; display: -ms-flexbox; display: flex; align-items: center; From d74dfc9ee7c0affc4bc3ca7e7bf8c6befc7a46e6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 16 Jan 2017 18:58:37 +0000 Subject: [PATCH 144/243] strip out unneeded -ms- prefixes --- src/skins/vector/css/_common.scss | 2 -- .../css/matrix-react-sdk/structures/_FilePanel.scss | 1 - .../css/matrix-react-sdk/structures/_MatrixChat.scss | 9 --------- .../matrix-react-sdk/structures/_NotificationPanel.scss | 1 - .../css/matrix-react-sdk/structures/_RoomView.scss | 9 --------- .../css/matrix-react-sdk/structures/_UserSettings.scss | 3 --- .../css/matrix-react-sdk/structures/login/_Login.scss | 1 - .../css/matrix-react-sdk/views/rooms/_MemberList.scss | 1 - .../css/matrix-react-sdk/views/rooms/_RoomHeader.scss | 6 ------ .../matrix-react-sdk/views/rooms/_RoomPreviewBar.scss | 1 - .../vector/css/vector-web/structures/_LeftPanel.scss | 3 --- .../vector/css/vector-web/structures/_RightPanel.scss | 4 ---- .../vector/css/vector-web/structures/_RoomDirectory.scss | 2 -- .../css/vector-web/views/globals/_GuestWarningBar.scss | 1 - .../css/vector-web/views/globals/_MatrixToolbar.scss | 1 - 15 files changed, 45 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 5e0b902a..a2b7399e 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -83,7 +83,6 @@ textarea { /* applied to side-panels and messagepanel when in RoomSettings */ .mx_fadable { opacity: 1; - -ms-transition: opacity 0.2s ease-in-out; -o-transition: opacity 0.2s ease-in-out; } @@ -126,7 +125,6 @@ textarea { width: 100%; height: 100%; - display: -ms-flexbox; display: flex; align-items: center; justify-content: center; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss index 2fb1131d..872085b6 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_FilePanel.scss @@ -15,7 +15,6 @@ limitations under the License. */ .mx_FilePanel { - -ms-flex-order: 2; order: 2; flex: 1 1 0; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss index 72f1feff..05a39ea7 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_MatrixChat.scss @@ -27,7 +27,6 @@ limitations under the License. } .mx_MatrixChat_wrapper { - display: -ms-flexbox; display: flex; flex-direction: column; @@ -37,14 +36,12 @@ limitations under the License. } .mx_MatrixToolbar { - -ms-flex-order: 1; order: 1; height: 40px; } .mx_GuestWarningBar { - -ms-flex-order: 1; order: 1; height: 40px; @@ -58,17 +55,14 @@ limitations under the License. width: 100%; height: 100%; - display: -ms-flexbox; display: flex; - -ms-flex-order: 2; order: 2; flex: 1; } .mx_MatrixChat .mx_LeftPanel { - -ms-flex-order: 1; order: 1; background-color: $secondary-accent-color; @@ -81,7 +75,6 @@ limitations under the License. } .mx_MatrixChat .mx_MatrixChat_middlePanel { - -ms-flex-order: 2; order: 2; padding-left: 20px; @@ -106,12 +99,10 @@ limitations under the License. * point, but instead we fudge it and make the middlePanel * flex itself. */ - display: -ms-flexbox; display: flex; } .mx_MatrixChat .mx_RightPanel { - -ms-flex-order: 3; order: 3; flex: 0 0 235px; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss index b3f724d8..ef75678d 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_NotificationPanel.scss @@ -15,7 +15,6 @@ limitations under the License. */ .mx_NotificationPanel { - -ms-flex-order: 2; order: 2; flex: 1 1 0; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index 6a5db95a..919b9f9b 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -18,7 +18,6 @@ limitations under the License. word-wrap: break-word; position: relative; - display: -ms-flexbox; display: flex; width: 100%; @@ -26,7 +25,6 @@ limitations under the License. } .mx_RoomView .mx_RoomHeader { - -ms-flex-order: 1; order: 1; flex: 0 0 70px; @@ -65,7 +63,6 @@ limitations under the License. } .mx_RoomView_auxPanel { - -ms-flex-order: 2; order: 2; min-width: 0px; @@ -80,12 +77,10 @@ limitations under the License. } .mx_RoomView_topUnreadMessagesBar { - -ms-flex-order: 3; order: 3; } .mx_RoomView_messagePanel { - -ms-flex-order: 4; order: 4; flex: 1 1 0; @@ -101,7 +96,6 @@ limitations under the License. min-height: 100%; - display: -ms-flexbox; display: flex; flex-direction: column; @@ -133,7 +127,6 @@ limitations under the License. } .mx_RoomView_invitePrompt { - -ms-flex-order: 2; order: 2; min-width: 0px; @@ -161,7 +154,6 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_statusArea { - -ms-flex-order: 5; order: 5; width: 100%; @@ -221,7 +213,6 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView .mx_MessageComposer { - -ms-flex-order: 6; order: 6; width: 100%; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index d190e32c..5c1b4c5c 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -20,20 +20,17 @@ limitations under the License. margin-left: auto; margin-right: auto; - display: -ms-flexbox; display: flex; flex-direction: column; } .mx_UserSettings .mx_RoomHeader { - -ms-flex-order: 1; order: 1; flex: 0 0 70px; } .mx_UserSettings_body { - -ms-flex-order: 2; order: 2; flex: 1 1 0; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 90dd2c1e..30231b43 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -18,7 +18,6 @@ limitations under the License. width: 100%; height: 100%; - display: -ms-flexbox; display: flex; align-items: center; justify-content: center; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss index 9c1daa95..d87bced4 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss @@ -22,7 +22,6 @@ limitations under the License. flex: 1; - display: -ms-flexbox; display: flex; flex-direction: column; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 297a3f16..688b8a84 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -27,14 +27,12 @@ limitations under the License. align-items: center; - display: -ms-flexbox; display: flex; } .mx_RoomHeader_leftRow { margin-left: -2px; - -ms-flex-order: 1; order: 1; flex: 1; @@ -43,7 +41,6 @@ limitations under the License. .mx_RoomHeader_spinner { height: 36px; - -ms-flex-order: 2; order: 2; padding-left: 12px; @@ -60,7 +57,6 @@ limitations under the License. margin-top: -2px; text-align: center; - -ms-flex-order: 2; order: 2; cursor: pointer; @@ -73,7 +69,6 @@ limitations under the License. } .mx_RoomHeader_cancelButton { - -ms-flex-order: 2; order: 2; cursor: pointer; @@ -87,7 +82,6 @@ limitations under the License. background-color: $primary-bg-color; display: flex; align-items: center; - -ms-flex-order: 3; order: 3; } diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss index 2114e01a..3814f9c0 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss @@ -24,7 +24,6 @@ limitations under the License. justify-content: center; - display: -ms-flexbox; display: flex; } diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss index 030c5367..1ce10e51 100644 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss @@ -17,7 +17,6 @@ limitations under the License. .mx_LeftPanel { position: relative; - display: -ms-flexbox; display: flex; flex-direction: column; } @@ -35,7 +34,6 @@ limitations under the License. } .mx_LeftPanel .mx_RoomList_scrollbar { - -ms-flex-order: 1; order: 1; flex: 1 1 0; @@ -49,7 +47,6 @@ limitations under the License. } .mx_LeftPanel .mx_BottomLeftMenu { - -ms-flex-order: 3; order: 3; border-top: 1px solid rgba(118, 207, 166, 0.2); diff --git a/src/skins/vector/css/vector-web/structures/_RightPanel.scss b/src/skins/vector/css/vector-web/structures/_RightPanel.scss index a76e5020..96e8698b 100644 --- a/src/skins/vector/css/vector-web/structures/_RightPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_RightPanel.scss @@ -17,13 +17,11 @@ limitations under the License. .mx_RightPanel { position: relative; - display: -ms-flexbox; display: flex; flex-direction: column; } .mx_RightPanel_header { - -ms-flex-order: 1; order: 1; border-bottom: 1px solid $primary-hairline-color; @@ -73,13 +71,11 @@ limitations under the License. .mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel_blank { - -ms-flex-order: 2; order: 2; flex: 1 1 0; } .mx_RightPanel_footer { - -ms-flex-order: 3; order: 3; border-top: 1px solid $primary-hairline-color; diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index e2b65e68..f0d4c860 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -22,7 +22,6 @@ limitations under the License. margin-bottom: 12px; color: $primary-fg-color; - display: -ms-flexbox; display: flex; flex-direction: column; @@ -31,7 +30,6 @@ limitations under the License. .mx_RoomDirectory_list { flex: 1; - display: -ms-flexbox; display: flex; flex-direction: column; diff --git a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss index d9d3cb19..f5bdbaf9 100644 --- a/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_GuestWarningBar.scss @@ -18,7 +18,6 @@ limitations under the License. background-color: $accent-color; color: $accent-fg-color; - display: -ms-flexbox; display: flex; align-items: center; } diff --git a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss index a425d8cd..5a0b23ae 100644 --- a/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss +++ b/src/skins/vector/css/vector-web/views/globals/_MatrixToolbar.scss @@ -18,7 +18,6 @@ limitations under the License. background-color: $accent-color; color: $accent-fg-color; - display: -ms-flexbox; display: flex; align-items: center; } From cab5bf8849395dab0afad1439ca3ae2a1a22b25b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 16 Jan 2017 19:00:44 +0000 Subject: [PATCH 145/243] fix a lone lost opera vendor prefix --- src/skins/vector/css/_common.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index a2b7399e..09f3fcfb 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -83,7 +83,7 @@ textarea { /* applied to side-panels and messagepanel when in RoomSettings */ .mx_fadable { opacity: 1; - -o-transition: opacity 0.2s ease-in-out; + transition: opacity 0.2s ease-in-out; } /* XXX: critical hack to GeminiScrollbar to allow them to work in FF 42 and Chrome 48. From 87fd136e218000c64ed9b7369ce176dc18d1fdc0 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 16 Jan 2017 23:13:47 +0000 Subject: [PATCH 146/243] factor out remaining # colours --- .../views/rooms/_EntityTile.scss | 4 ++-- .../views/rooms/_LinkPreviewWidget.scss | 4 ++-- .../views/rooms/_MemberInfo.scss | 1 - .../views/rooms/_MessageComposer.scss | 10 +++++----- .../views/rooms/_RoomHeader.scss | 17 +++-------------- .../views/rooms/_RoomPreviewBar.scss | 6 +----- .../views/rooms/_RoomSettings.scss | 2 +- .../views/rooms/_SearchableEntityList.scss | 4 ++-- .../views/voip/_IncomingCallbox.scss | 4 ++-- src/skins/vector/css/themes/_base.scss | 13 +++++++++++++ src/skins/vector/css/themes/_dark.scss | 13 +++++++++++++ .../vector-web/structures/_RoomDirectory.scss | 4 ++-- .../context_menus/_RoomTagContextMenu.scss | 3 +-- .../vector-web/views/elements/_ImageView.scss | 13 ++++--------- 14 files changed, 51 insertions(+), 47 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss index 2511f07d..3f360e79 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss @@ -77,12 +77,12 @@ limitations under the License. .mx_EntityTile_ellipsis .mx_EntityTile_name { font-style: italic; - font-color: $primary-fg-color; + color: $primary-fg-color; } .mx_EntityTile_invitePlaceholder .mx_EntityTile_name { font-style: italic; - font-color: $primary-fg-color; + color: $primary-fg-color; } .mx_EntityTile_unavailable .mx_EntityTile_avatar, diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss index 0e911541..33f283e0 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_LinkPreviewWidget.scss @@ -19,8 +19,8 @@ limitations under the License. margin-right: 15px; margin-bottom: 15px; display: flex; - border-left: 4px solid #ddd; - color: #888; + border-left: 4px solid $preview-widget-bar-color; + color: $preview-widget-fg-color; } .mx_LinkPreviewWidget_image { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss index 970c2496..d6fb5a19 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberInfo.scss @@ -69,7 +69,6 @@ limitations under the License. } .mx_MemberInfo_profileField { - font-color: #999999; font-size: 13px; position: relative; background-color: $primary-bg-color; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 5ecb3441..525cc1f6 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -57,7 +57,7 @@ limitations under the License. height: 60px; text-align: center; font-style: italic; - color: #888; + color: $greyed-fg-color; } .mx_MessageComposer_input_wrapper { @@ -90,10 +90,10 @@ limitations under the License. } .mx_MessageComposer_input blockquote { - color: rgb(119, 119, 119); + color: $blockquote-fg-color; margin: 0 0 16px; padding: 0 15px; - border-left: 4px solid rgb(221, 221, 221); + border-left: 4px solid $blockquote-bar-color; } .mx_MessageComposer_input textarea { @@ -151,7 +151,7 @@ limitations under the License. .mx_MessageComposer_formatbar_wrapper { width: 100%; - background-color: #f7f7f7; + background-color: $menu-bg-color; box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); } @@ -168,7 +168,7 @@ limitations under the License. flex-direction: row; align-items: center; font-size: 10px; - color: #888; + color: $greyed-fg-color; } .mx_MessageComposer_formatbar * { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 688b8a84..4affc994 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -16,7 +16,6 @@ limitations under the License. /* add 20px to the height of the header when editing */ .mx_RoomHeader_editing { - -webit-flex: 0 0 93px ! important; flex: 0 0 93px ! important; } @@ -24,25 +23,19 @@ limitations under the License. max-width: 960px; margin: auto; height: 70px; - align-items: center; - display: flex; } .mx_RoomHeader_leftRow { margin-left: -2px; - order: 1; - flex: 1; } .mx_RoomHeader_spinner { height: 36px; - order: 2; - padding-left: 12px; padding-right: 12px; } @@ -56,9 +49,7 @@ limitations under the License. line-height: 34px; margin-top: -2px; text-align: center; - order: 2; - cursor: pointer; /* @@ -70,9 +61,7 @@ limitations under the License. .mx_RoomHeader_cancelButton { order: 2; - cursor: pointer; - padding-left: 12px; padding-right: 12px; } @@ -126,7 +115,7 @@ limitations under the License. } .mx_RoomHeader_settingsHint { - color: #a2a2a2 ! important; + color: $settings-grey-fg-color ! important; } .mx_RoomHeader_searchStatus { @@ -151,7 +140,7 @@ limitations under the License. } .mx_RoomHeader_placeholder { - color: #a2a2a2 ! important; + color: $settings-grey-fg-color ! important; } .mx_RoomHeader_editable { @@ -170,7 +159,7 @@ limitations under the License. vertical-align: bottom; float: left; max-height: 42px; - color: #A2A2A2; + color: $settings-grey-fg-color; font-weight: 300; font-size: 13px; margin-left: 19px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss index 3814f9c0..34ff3a86 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomPreviewBar.scss @@ -17,13 +17,9 @@ limitations under the License. .mx_RoomPreviewBar { text-align: center; height: 176px; - align-items: center; - flex-direction: column; - justify-content: center; - display: flex; } @@ -40,7 +36,7 @@ limitations under the License. .mx_RoomPreviewBar_preview_text { margin-top: 25px; - color: #a4a4a4; + color: $settings-grey-fg-color; } .mx_RoomPreviewBar_join_text a { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss index d9de0e8a..ef115f6e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomSettings.scss @@ -205,7 +205,7 @@ limitations under the License. } .mx_RoomSettings_aliasPlaceholder { - color: #a2a2a2; + color: $settings-grey-fg-color; } .mx_RoomSettings_buttons { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss index b404da02..6116dd92 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_SearchableEntityList.scss @@ -69,8 +69,8 @@ limitations under the License. .mx_SearchableEntityList hr { height: 1px; border: 0px; - color: #e1dddd; - background-color: #e1dddd; + color: $primary-fg-color; + background-color: $primary-fg-color; margin-right: 15px; margin-top: 11px; margin-bottom: 11px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss index d45c4a58..64eac25d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss @@ -61,9 +61,9 @@ limitations under the License. } .mx_IncomingCallBox_buttons_decline { - background-color: #f48080; + background-color: $voip-decline-color; } .mx_IncomingCallBox_buttons_accept { - background-color: #80f480; + background-color: $voip-accept-color; } diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index e623372a..4f47df64 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -55,6 +55,19 @@ $h3-color: #3d3b39; $dialog-background-bg-color: #e9e9e9; $lightbox-background-bg-color: #000; +$greyed-fg-color: #888; + +$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; + // ******************** $roomtile-name-color: rgba(69, 69, 69, 0.8); diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 1d93c1a4..28b80a20 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -55,6 +55,19 @@ $h3-color: $primary-fg-color; $dialog-background-bg-color: #000; $lightbox-background-bg-color: #000; +$greyed-fg-color: #888; + +$preview-widget-bar-color: $menu-bg-color; +$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; + // ******************** $roomtile-name-color: rgba(186, 186, 186, 0.8); diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index f0d4c860..8c8ceeaf 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -101,7 +101,7 @@ limitations under the License. text-transform: uppercase; font-weight: 600; font-size: 11px; - color: #61c295; + color: $accent-fg-color; } .mx_RoomDirectory_topic { @@ -110,7 +110,7 @@ limitations under the License. .mx_RoomDirectory_alias { font-size: 12px; - color: #b3b3b3; + color: $settings-grey-fg-color; } .mx_RoomDirectory_roomMemberCount { diff --git a/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss b/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss index 0a2e7605..16a3ab79 100644 --- a/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss +++ b/src/skins/vector/css/vector-web/views/context_menus/_RoomTagContextMenu.scss @@ -70,8 +70,7 @@ limitations under the License. border-right-style: none; border-top-style: solid; border-top-width: 1px; - border-color: #bbbbbb; - opacity: 0.4; + border-color: $menu-border-color; } .mx_RoomTagContextMenu_fieldSet .mx_RoomTagContextMenu_icon { diff --git a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss index d31a9d27..66c26e12 100644 --- a/src/skins/vector/css/vector-web/views/elements/_ImageView.scss +++ b/src/skins/vector/css/vector-web/views/elements/_ImageView.scss @@ -29,10 +29,8 @@ limitations under the License. order: 1; flex: 1 1 10%; min-width: 60px; - /* - background-color: #080; - height: 20px; - */ + // background-color: #080; + // height: 20px; } .mx_ImageView_content { @@ -41,7 +39,6 @@ limitations under the License. min-width: 0px; height: 90%; flex: 15 15 0; - display: flex; align-items: center; justify-content: center; @@ -132,8 +129,6 @@ limitations under the License. order: 3; flex: 1 1 10%; min-width: 300px; - /* - background-color: #800; - height: 20px; - */ + // background-color: #800; + // height: 20px; } From 4f8d3b0e2b02e3c41344e86abd57aff555d7c1e0 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 17 Jan 2017 02:00:34 +0000 Subject: [PATCH 147/243] more factoring --- src/skins/vector/css/_common.scss | 4 ++-- .../vector/css/matrix-react-sdk/structures/_RoomView.scss | 2 +- src/skins/vector/css/themes/_base.scss | 2 ++ src/skins/vector/css/themes/_dark.scss | 2 ++ src/skins/vector/css/vector-web/structures/_RightPanel.scss | 3 ++- .../vector/css/vector-web/structures/_RoomDirectory.scss | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 09f3fcfb..01ba81d8 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -266,12 +266,12 @@ textarea { ::-moz-selection { background-color: $accent-color; - color: white; + color: $selection-fg-color; } ::selection { background-color: $accent-color; - color: white; + color: $selection-fg-color; } /** green button with rounded corners */ diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index 919b9f9b..d1aeddec 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -46,7 +46,7 @@ limitations under the License. border-top-left-radius: 10px; border-top-right-radius: 10px; - background-color: rgba(255, 255, 255, 0.9); + background-color: $droptarget-bg-color; border: 2px #e1dddd solid; border-bottom: none; position: absolute; diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 4f47df64..6488794d 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -13,6 +13,8 @@ $focus-bg-color: #dddddd; $accent-fg-color: #ffffff; $accent-color: #76CFA6; +$selection-fg-color: $primary-bg-color; + // red warning colour $warning-color: #ff0064; diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 28b80a20..62e89a7b 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -13,6 +13,8 @@ $light-fg-color: #747474; $accent-fg-color: $primary-bg-color; $accent-color: #76CFA6; +$selection-fg-color: $primary-bg-color; + // red warning colour $warning-color: #ff0064; diff --git a/src/skins/vector/css/vector-web/structures/_RightPanel.scss b/src/skins/vector/css/vector-web/structures/_RightPanel.scss index 96e8698b..91034e63 100644 --- a/src/skins/vector/css/vector-web/structures/_RightPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_RightPanel.scss @@ -58,7 +58,8 @@ limitations under the License. width: 25px; height: 5px; border-radius: 5px; - background-color: rgba(118, 207, 166, 0.2); + background-color: $accent-color; + opacity: 0.2; } .mx_RightPanel_headerButton_badge { diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index 8c8ceeaf..6e508ec7 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -101,7 +101,7 @@ limitations under the License. text-transform: uppercase; font-weight: 600; font-size: 11px; - color: $accent-fg-color; + color: $accent-color; } .mx_RoomDirectory_topic { From 3bdb330f5bb6682764acf781cc2b25aeb834e03d Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 17 Jan 2017 09:57:01 +0000 Subject: [PATCH 148/243] cheeky hack to get the ctxt menu colors right --- src/skins/vector/img/icon_context_message.svg | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/skins/vector/img/icon_context_message.svg b/src/skins/vector/img/icon_context_message.svg index f2ceccfa..c3d39b1e 100644 --- a/src/skins/vector/img/icon_context_message.svg +++ b/src/skins/vector/img/icon_context_message.svg @@ -4,11 +4,18 @@ <title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> <desc>Created with sketchtool.</desc> <defs></defs> + <!-- use a filter so that the tinter doesn't have to flip black to white as well as white to black --> + <filter id="invert"> + <feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 + 0 -1 0 0 1 + 0 0 -1 0 1 + 0 0 0 1 0"/> + </filter> <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="icon_context"> - <g> - <path d="M9.5,19 C14.7467051,19 19,14.7467051 19,9.5 C19,4.25329488 14.7467051,0 9.5,0 C4.25329488,0 0,4.25329488 0,9.5 C0,14.7467051 4.25329488,19 9.5,19 Z" id="Oval-69" fill="#ECECEC"></path> - <path d="M4.5,9.50063771 C4.5,9.13148623 4.59887838,8.85242947 4.7966381,8.66345907 C4.99439782,8.47448867 5.28224377,8.38000488 5.66018457,8.38000488 C6.0249414,8.38000488 6.3072941,8.47668596 6.50725115,8.67005103 C6.70720821,8.86341609 6.80718523,9.14027555 6.80718523,9.50063771 C6.80718523,9.84781589 6.70610956,10.1213794 6.50395517,10.3213365 C6.30180079,10.5212935 6.02054674,10.6212705 5.66018457,10.6212705 C5.29103309,10.6212705 5.00538444,10.5234908 4.80323006,10.3279284 C4.60107568,10.132366 4.5,9.85660521 4.5,9.50063771 L4.5,9.50063771 Z M8.3431114,9.50063771 C8.3431114,9.13148623 8.44198978,8.85242947 8.63974951,8.66345907 C8.83750923,8.47448867 9.12755247,8.38000488 9.50988794,8.38000488 C9.87464476,8.38000488 10.1569975,8.47668596 10.3569545,8.67005103 C10.5569116,8.86341609 10.6568886,9.14027555 10.6568886,9.50063771 C10.6568886,9.84781589 10.5558129,10.1213794 10.3536585,10.3213365 C10.1515042,10.5212935 9.8702501,10.6212705 9.50988794,10.6212705 C9.13634179,10.6212705 8.84849585,10.5234908 8.64634146,10.3279284 C8.44418708,10.132366 8.3431114,9.85660521 8.3431114,9.50063771 L8.3431114,9.50063771 Z M12.1928148,9.50063771 C12.1928148,9.13148623 12.2916931,8.85242947 12.4894529,8.66345907 C12.6872126,8.47448867 12.9750585,8.38000488 13.3529993,8.38000488 C13.7177562,8.38000488 14.0001089,8.47668596 14.2000659,8.67005103 C14.400023,8.86341609 14.5,9.14027555 14.5,9.50063771 C14.5,9.84781589 14.3989243,10.1213794 14.1967699,10.3213365 C13.9946156,10.5212935 13.7133615,10.6212705 13.3529993,10.6212705 C12.9838479,10.6212705 12.6981992,10.5234908 12.4960448,10.3279284 C12.2938904,10.132366 12.1928148,9.85660521 12.1928148,9.50063771 L12.1928148,9.50063771 Z" id="…" fill="#9B9B9B"></path> + <g filter="url(#invert)"> + <path d="M9.5,19 C14.7467051,19 19,14.7467051 19,9.5 C19,4.25329488 14.7467051,0 9.5,0 C4.25329488,0 0,4.25329488 0,9.5 C0,14.7467051 4.25329488,19 9.5,19 Z" id="Oval-69" fill="#000" opacity="0.2"></path> + <path d="M4.5,9.50063771 C4.5,9.13148623 4.59887838,8.85242947 4.7966381,8.66345907 C4.99439782,8.47448867 5.28224377,8.38000488 5.66018457,8.38000488 C6.0249414,8.38000488 6.3072941,8.47668596 6.50725115,8.67005103 C6.70720821,8.86341609 6.80718523,9.14027555 6.80718523,9.50063771 C6.80718523,9.84781589 6.70610956,10.1213794 6.50395517,10.3213365 C6.30180079,10.5212935 6.02054674,10.6212705 5.66018457,10.6212705 C5.29103309,10.6212705 5.00538444,10.5234908 4.80323006,10.3279284 C4.60107568,10.132366 4.5,9.85660521 4.5,9.50063771 L4.5,9.50063771 Z M8.3431114,9.50063771 C8.3431114,9.13148623 8.44198978,8.85242947 8.63974951,8.66345907 C8.83750923,8.47448867 9.12755247,8.38000488 9.50988794,8.38000488 C9.87464476,8.38000488 10.1569975,8.47668596 10.3569545,8.67005103 C10.5569116,8.86341609 10.6568886,9.14027555 10.6568886,9.50063771 C10.6568886,9.84781589 10.5558129,10.1213794 10.3536585,10.3213365 C10.1515042,10.5212935 9.8702501,10.6212705 9.50988794,10.6212705 C9.13634179,10.6212705 8.84849585,10.5234908 8.64634146,10.3279284 C8.44418708,10.132366 8.3431114,9.85660521 8.3431114,9.50063771 L8.3431114,9.50063771 Z M12.1928148,9.50063771 C12.1928148,9.13148623 12.2916931,8.85242947 12.4894529,8.66345907 C12.6872126,8.47448867 12.9750585,8.38000488 13.3529993,8.38000488 C13.7177562,8.38000488 14.0001089,8.47668596 14.2000659,8.67005103 C14.400023,8.86341609 14.5,9.14027555 14.5,9.50063771 C14.5,9.84781589 14.3989243,10.1213794 14.1967699,10.3213365 C13.9946156,10.5212935 13.7133615,10.6212705 13.3529993,10.6212705 C12.9838479,10.6212705 12.6981992,10.5234908 12.4960448,10.3279284 C12.2938904,10.132366 12.1928148,9.85660521 12.1928148,9.50063771 L12.1928148,9.50063771 Z" id="…" fill="#000" opacity="0.6"></path> </g> </g> </g> From ef07a6035ed58184f94464abcee035592e666078 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 17 Jan 2017 10:48:38 +0000 Subject: [PATCH 149/243] Fix links to fonts and images from CSS https://github.com/vector-im/riot-web/pull/2961 put the CSS in a subdirectory, which meant that links from CSS to images and fonts were broken. Fix them up. --- .../views/elements/DirectorySearchBox.css | 4 ++-- .../matrix-react-sdk/views/rooms/RoomTile.css | 2 +- src/skins/vector/css/vector-web/fonts.css | 18 ++++++++++-------- .../vector-web/views/elements/ImageView.css | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css b/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css index 3a0922bc..5686ecd0 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css @@ -46,7 +46,7 @@ input[type=text].mx_DirectorySearchBox_input:focus { padding-right: 10px; background-color: #efefef; border-radius: 3px; - background-image: url('img/icon-return.svg'); + background-image: url('../img/icon-return.svg'); background-position: 8px 70%; background-repeat: no-repeat; text-indent: 18px; @@ -63,7 +63,7 @@ input[type=text].mx_DirectorySearchBox_input:focus { .mx_DirectorySearchBox_clear { display: inline-block; vertical-align: middle; - background: url('img/icon_context_delete.svg'); + background: url('../img/icon_context_delete.svg'); background-position: 0 50%; background-repeat: no-repeat; width: 15px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css index 2822d82e..2411d613 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css @@ -65,7 +65,7 @@ limitations under the License. position: absolute; content: ""; border-radius: 40px; - background-image: url("img/icons_ellipsis.svg"); + background-image: url("../img/icons_ellipsis.svg"); background-size: 25px; width: 24px; height: 24px; diff --git a/src/skins/vector/css/vector-web/fonts.css b/src/skins/vector/css/vector-web/fonts.css index 719eeebc..a57d9952 100644 --- a/src/skins/vector/css/vector-web/fonts.css +++ b/src/skins/vector/css/vector-web/fonts.css @@ -3,44 +3,46 @@ * Includes extended Latin, Greek, Cyrillic and Vietnamese character sets */ +/* the 'src' links are relative to the bundle.css, which is in a subdirectory. + */ @font-face { font-family: 'Open Sans'; - src: url('fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); + src: url('../fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); font-weight: 400; font-style: normal; } @font-face { font-family: 'Open Sans'; - src: url('fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); + src: url('../fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); font-weight: 400; font-style: italic; } @font-face { font-family: 'Open Sans'; - src: url('fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); + src: url('../fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); font-weight: 600; font-style: normal; } @font-face { font-family: 'Open Sans'; - src: url('fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); + src: url('../fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); font-weight: 600; font-style: italic; } @font-face { font-family: 'Open Sans'; - src: url('fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); + src: url('../fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); font-weight: 700; font-style: normal; } @font-face { font-family: 'Open Sans'; - src: url('fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); + src: url('../fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); font-weight: 700; font-style: italic; } @@ -52,14 +54,14 @@ @font-face { font-family: 'Fira Mono'; - src: url('fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); + src: url('../fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); font-weight: 400; font-style: normal; } @font-face { font-family: 'Fira Mono'; - src: url('fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); + src: url('../fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); font-weight: 700; font-style: normal; } diff --git a/src/skins/vector/css/vector-web/views/elements/ImageView.css b/src/skins/vector/css/vector-web/views/elements/ImageView.css index 03223f25..0942b593 100644 --- a/src/skins/vector/css/vector-web/views/elements/ImageView.css +++ b/src/skins/vector/css/vector-web/views/elements/ImageView.css @@ -62,7 +62,7 @@ limitations under the License. max-height: 100%; /* object-fit hack needed for Chrome due to Chrome not re-laying-out until you refresh */ object-fit: contain; - /* background-image: url('img/trans.png'); */ + /* background-image: url('../img/trans.png'); */ pointer-events: all; } From 205676a97da4a756d63eb4b050caf350668b11d4 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 17 Jan 2017 11:30:59 +0000 Subject: [PATCH 150/243] Back to develop js-sdk & react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f169cf9b..b79db54a 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.4", - "matrix-react-sdk": "0.8.5", + "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", + "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 4a1b04e57be363f3c45f356c1862cf5853769e10 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 17 Jan 2017 11:58:30 +0000 Subject: [PATCH 151/243] Add another layer of directory to webpack chunks --- .../views/elements/DirectorySearchBox.css | 4 ++-- .../matrix-react-sdk/views/rooms/RoomTile.css | 2 +- src/skins/vector/css/vector-web/fonts.css | 16 ++++++++-------- .../css/vector-web/views/elements/ImageView.css | 2 +- webpack.config.js | 15 ++++++++++++--- 5 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css b/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css index 5686ecd0..c81974eb 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/DirectorySearchBox.css @@ -46,7 +46,7 @@ input[type=text].mx_DirectorySearchBox_input:focus { padding-right: 10px; background-color: #efefef; border-radius: 3px; - background-image: url('../img/icon-return.svg'); + background-image: url('../../img/icon-return.svg'); background-position: 8px 70%; background-repeat: no-repeat; text-indent: 18px; @@ -63,7 +63,7 @@ input[type=text].mx_DirectorySearchBox_input:focus { .mx_DirectorySearchBox_clear { display: inline-block; vertical-align: middle; - background: url('../img/icon_context_delete.svg'); + background: url('../../img/icon_context_delete.svg'); background-position: 0 50%; background-repeat: no-repeat; width: 15px; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css index 2411d613..b752d105 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css @@ -65,7 +65,7 @@ limitations under the License. position: absolute; content: ""; border-radius: 40px; - background-image: url("../img/icons_ellipsis.svg"); + background-image: url("../../img/icons_ellipsis.svg"); background-size: 25px; width: 24px; height: 24px; diff --git a/src/skins/vector/css/vector-web/fonts.css b/src/skins/vector/css/vector-web/fonts.css index a57d9952..52ac95b5 100644 --- a/src/skins/vector/css/vector-web/fonts.css +++ b/src/skins/vector/css/vector-web/fonts.css @@ -7,42 +7,42 @@ */ @font-face { font-family: 'Open Sans'; - src: url('../fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); + src: url('../../fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); font-weight: 400; font-style: normal; } @font-face { font-family: 'Open Sans'; - src: url('../fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); + src: url('../../fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); font-weight: 400; font-style: italic; } @font-face { font-family: 'Open Sans'; - src: url('../fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); + src: url('../../fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); font-weight: 600; font-style: normal; } @font-face { font-family: 'Open Sans'; - src: url('../fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); + src: url('../../fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); font-weight: 600; font-style: italic; } @font-face { font-family: 'Open Sans'; - src: url('../fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); + src: url('../../fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); font-weight: 700; font-style: normal; } @font-face { font-family: 'Open Sans'; - src: url('../fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); + src: url('../../fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); font-weight: 700; font-style: italic; } @@ -54,14 +54,14 @@ @font-face { font-family: 'Fira Mono'; - src: url('../fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); + src: url('../../fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); font-weight: 400; font-style: normal; } @font-face { font-family: 'Fira Mono'; - src: url('../fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); + src: url('../../fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); font-weight: 700; font-style: normal; } diff --git a/src/skins/vector/css/vector-web/views/elements/ImageView.css b/src/skins/vector/css/vector-web/views/elements/ImageView.css index 0942b593..73aaaa86 100644 --- a/src/skins/vector/css/vector-web/views/elements/ImageView.css +++ b/src/skins/vector/css/vector-web/views/elements/ImageView.css @@ -62,7 +62,7 @@ limitations under the License. max-height: 100%; /* object-fit hack needed for Chrome due to Chrome not re-laying-out until you refresh */ object-fit: contain; - /* background-image: url('../img/trans.png'); */ + /* background-image: url('../../img/trans.png'); */ pointer-events: all; } diff --git a/webpack.config.js b/webpack.config.js index 9c0c6bbb..2a38d139 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -40,8 +40,17 @@ module.exports = { }, output: { path: path.join(__dirname, "webapp"), - filename: "[hash]/[name].js", - chunkFilename: "[hash]/[name].js", + + // 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) { // Reading input source maps gives only relative paths here for // everything. Until I figure out how to fix this, this is a @@ -80,7 +89,7 @@ module.exports = { }), new ExtractTextPlugin( - "[hash]/[name].css", + "bundles/[hash]/[name].css", { allChunks: true } From 3b109f761283d1aac5f4ff26462bd4f77ff83155 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 17 Jan 2017 13:16:08 +0000 Subject: [PATCH 152/243] Include current version in update check explicitly Hopefully fix https://github.com/vector-im/riot-web/issues/2847 --- electron/src/electron-main.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 675640a5..3f7c0f07 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -112,7 +112,15 @@ function startAutoUpdate(update_base_url) { // 204 No Content. On windows it takes a base path and looks for // files under that path. if (process.platform == 'darwin') { - electron.autoUpdater.setFeedURL(update_base_url + 'macos/'); + // include the current version in the URL we hit. Electron doesn't add + // it anywhere (apart from the User-Agent) so it's up to us. We could + // (and previously did) just use the User-Agent, but this doesn't + // rely on NSURLConnection setting the User-Agent to what we expect, + // and also acts as a convenient cache-buster between versions. + electron.autoUpdater.setFeedURL( + update_base_url + + 'macos/?localVersion=' + encodeURIComponent(electron.app.getVersion()) + ); } else if (process.platform == 'win32') { electron.autoUpdater.setFeedURL(update_base_url + 'win32/' + process.arch + '/'); } else { From 8371006d90e37d554cc1d05e94f10f6d0f4134b7 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 17 Jan 2017 13:55:33 +0000 Subject: [PATCH 153/243] Update redeploy script to keep old bundles ... so that people using old versions of the master chunk can still load other webpack chunks. --- scripts/redeploy.py | 142 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 118 insertions(+), 24 deletions(-) diff --git a/scripts/redeploy.py b/scripts/redeploy.py index 36585f53..4394f292 100755 --- a/scripts/redeploy.py +++ b/scripts/redeploy.py @@ -1,13 +1,32 @@ #!/usr/bin/env python +# +# auto-deploy script for https://riot.im/develop +# +# Listens for HTTP hits. When it gets one, downloads the artifact from jenkins +# and deploys it as the new version. +# +# Requires the following python packages: +# +# - requests +# - flask +# from __future__ import print_function import json, requests, tarfile, argparse, os, errno +import time from urlparse import urljoin from flask import Flask, jsonify, request, abort + app = Flask(__name__) -arg_jenkins_url, arg_extract_path, arg_should_clean, arg_symlink, arg_config_location = ( - None, None, None, None, None -) +arg_jenkins_url = None +arg_extract_path = None +arg_bundles_path = None +arg_should_clean = None +arg_symlink = None +arg_config_location = None + +class DeployException(Exception): + pass def download_file(url): local_filename = url.split('/')[-1] @@ -57,6 +76,9 @@ def on_receive_jenkins_poke(): abort(400, "Missing or bad build number") return + return fetch_jenkins_build(job_name, build_num) + +def fetch_jenkins_build(job_name, build_num): artifact_url = urljoin( arg_jenkins_url, "job/%s/%s/api/json" % (job_name, build_num) ) @@ -106,7 +128,31 @@ def on_receive_jenkins_poke(): arg_jenkins_url, "job/%s/%s/artifact/%s" % (job_name, build_num, tar_gz_path) ) - print("Retrieving .tar.gz file: %s" % tar_gz_url) + # we extract into a directory based on the build number. This avoids the + # problem of multiple builds building the same git version and thus having + # the same tarball name. That would lead to two potential problems: + # (a) sometimes jenkins serves corrupted artifacts; we would replace + # a good deploy with a bad one + # (b) we'll be overwriting the live deployment, which means people might + # see half-written files. + build_dir = os.path.join(arg_extract_path, "%s-#%s" % (job_name, build_num)) + try: + deploy_tarball(tar_gz_url, build_dir) + except DeployException as e: + abort(400, e.message) + + return jsonify({}) + +def deploy_tarball(tar_gz_url, build_dir): + """Download a tarball from jenkins and deploy it as the new version + """ + print("Deploying %s to %s" % (tar_gz_url, build_dir)) + + if os.path.exists(build_dir): + raise DeployException( + "Not deploying. We have previously deployed this build." + ) + os.mkdir(build_dir) # we rely on the fact that flask only serves one request at a time to # ensure that we do not overwrite a tarball from a concurrent request. @@ -114,19 +160,6 @@ def on_receive_jenkins_poke(): print("Downloaded file: %s" % filename) try: - # we extract into a directory based on the build number. This avoids the - # problem of multiple builds building the same git version and thus having - # the same tarball name. That would lead to two potential problems: - # (a) sometimes jenkins serves corrupted artifacts; we would replace - # a good deploy with a bad one - # (b) we'll be overwriting the live deployment, which means people might - # see half-written files. - build_dir = os.path.join(arg_extract_path, "%s-#%s" % (job_name, build_num)) - if os.path.exists(build_dir): - abort(400, "Not deploying. We have previously deployed this build.") - return - os.mkdir(build_dir) - untar_to(filename, build_dir) print("Extracted to: %s" % build_dir) finally: @@ -139,9 +172,47 @@ def on_receive_jenkins_poke(): if arg_config_location: create_symlink(source=arg_config_location, linkname=os.path.join(extracted_dir, 'config.json')) + if arg_bundles_path: + extracted_bundles = os.path.join(extracted_dir, 'bundles') + move_bundles(source=extracted_bundles, dest=arg_bundles_path) + + # replace the (hopefully now empty) extracted_bundles dir with a + # symlink to the common dir. + relpath = os.path.relpath(arg_bundles_path, extracted_dir) + os.rmdir(extracted_bundles) + print ("Symlink %s -> %s" % (extracted_bundles, relpath)) + os.symlink(relpath, extracted_bundles) + create_symlink(source=extracted_dir, linkname=arg_symlink) - return jsonify({}) +def move_bundles(source, dest): + """Move the contents of the 'bundles' directory to a common dir + + We check that we will not be overwriting anything before we proceed. + + Args: + source (str): path to 'bundles' within the extracted tarball + dest (str): target common directory + """ + + if not os.path.isdir(dest): + os.mkdir(dest) + + # build a map from source to destination, checking for non-existence as we go. + renames = {} + for f in os.listdir(source): + dst = os.path.join(dest, f) + if os.path.exists(dst): + raise DeployException( + "Not deploying. The bundle includes '%s' which we have previously deployed." + % f + ) + renames[os.path.join(source, f)] = dst + + for (src, dst) in renames.iteritems(): + print ("Move %s -> %s" % (src, dst)) + os.rename(src, dst) + if __name__ == "__main__": parser = argparse.ArgumentParser("Runs a Vector redeployment server.") @@ -161,6 +232,13 @@ if __name__ == "__main__": "The location to extract .tar.gz files to." ) ) + parser.add_argument( + "-b", "--bundles-dir", dest="bundles_dir", help=( + "A directory to move the contents of the 'bundles' directory to. A \ + symlink to the bundles directory will also be written inside the \ + extracted tarball. Example: './bundles'." + ) + ) parser.add_argument( "-c", "--clean", dest="clean", action="store_true", default=False, help=( "Remove .tar.gz files after they have been downloaded and extracted." @@ -179,18 +257,34 @@ if __name__ == "__main__": To this location." ) ) + parser.add_argument( + "--test", dest="tarball_uri", help=( + "Don't start an HTTP listener. Instead download a build from Jenkins \ + immediately." + ), + ) + args = parser.parse_args() if args.jenkins.endswith("/"): # important for urljoin arg_jenkins_url = args.jenkins else: arg_jenkins_url = args.jenkins + "/" arg_extract_path = args.extract + arg_bundles_path = args.bundles_dir arg_should_clean = args.clean arg_symlink = args.symlink arg_config_location = args.config - print( - "Listening on port %s. Extracting to %s%s. Symlinking to %s. Jenkins URL: %s. Config location: %s" % - (args.port, arg_extract_path, - " (clean after)" if arg_should_clean else "", arg_symlink, arg_jenkins_url, arg_config_location) - ) - app.run(host="0.0.0.0", port=args.port, debug=True) + + if not os.path.isdir(arg_extract_path): + os.mkdir(arg_extract_path) + + if args.tarball_uri is not None: + build_dir = os.path.join(arg_extract_path, "test-%i" % (time.time())) + deploy_tarball(args.tarball_uri, build_dir) + else: + print( + "Listening on port %s. Extracting to %s%s. Symlinking to %s. Jenkins URL: %s. Config location: %s" % + (args.port, arg_extract_path, + " (clean after)" if arg_should_clean else "", arg_symlink, arg_jenkins_url, arg_config_location) + ) + app.run(host="0.0.0.0", port=args.port, debug=True) From cf92e7f64bfc480dd860ce52d8c986c9d8c708df Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 17 Jan 2017 14:04:42 +0000 Subject: [PATCH 154/243] Clarify comment --- electron/src/electron-main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 3f7c0f07..a03a8755 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -116,7 +116,8 @@ function startAutoUpdate(update_base_url) { // it anywhere (apart from the User-Agent) so it's up to us. We could // (and previously did) just use the User-Agent, but this doesn't // rely on NSURLConnection setting the User-Agent to what we expect, - // and also acts as a convenient cache-buster between versions. + // and also acts as a convenient cache-buster to ensure that when the + // app updates it always gets a fresh value to avoid update-looping. electron.autoUpdater.setFeedURL( update_base_url + 'macos/?localVersion=' + encodeURIComponent(electron.app.getVersion()) From c9c58ab0ecb966aca6d3d710db149b83bb4fa5ba Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 17 Jan 2017 14:10:09 +0000 Subject: [PATCH 155/243] fix up the contextual menu button --- .../matrix-react-sdk/views/rooms/_EventTile.scss | 10 +++++++++- src/skins/vector/css/themes/_base.scss | 2 ++ src/skins/vector/css/themes/_dark.scss | 2 ++ src/skins/vector/img/icon_context_message.svg | 13 +++---------- .../vector/img/icon_context_message_dark.svg | 15 +++++++++++++++ 5 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 src/skins/vector/img/icon_context_message_dark.svg diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index a6b10e24..b79db919 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -146,7 +146,12 @@ limitations under the License. z-index: 1; position: relative; width: 90px; - height: 1px; /* Hack to stop the height of this pushing the messages apart. Replaces marigin-top: -6px. This interacts better with a read marker being in between. Content overflows. */ + + /* Hack to stop the height of this pushing the messages apart. + Replaces margin-top: -6px. This interacts better with a read + marker being in between. Content overflows. */ + height: 1px; + margin-right: 10px; } @@ -172,6 +177,9 @@ limitations under the License. cursor: pointer; top: 6px; right: 6px; + width: 19px; + height: 19px; + background-image: url($edit-button-url); } .mx_EventTile:hover .mx_EventTile_editButton, diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 6488794d..ad18eb49 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -88,6 +88,8 @@ $event-notsent-color: #f44; // event timestamp $event-timestamp-color: #acacac; +$edit-button-url: "/img/icon_context_message.svg"; + // e2e $e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color $e2e-unverified-color: #e8bf37; diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 62e89a7b..e3e32e84 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -88,6 +88,8 @@ $event-notsent-color: #f44; // event timestamp $event-timestamp-color: #acacac; +$edit-button-url: "/img/icon_context_message_dark.svg"; + // e2e $e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color $e2e-unverified-color: #e8bf37; diff --git a/src/skins/vector/img/icon_context_message.svg b/src/skins/vector/img/icon_context_message.svg index c3d39b1e..f2ceccfa 100644 --- a/src/skins/vector/img/icon_context_message.svg +++ b/src/skins/vector/img/icon_context_message.svg @@ -4,18 +4,11 @@ <title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> <desc>Created with sketchtool.</desc> <defs></defs> - <!-- use a filter so that the tinter doesn't have to flip black to white as well as white to black --> - <filter id="invert"> - <feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 - 0 -1 0 0 1 - 0 0 -1 0 1 - 0 0 0 1 0"/> - </filter> <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="icon_context"> - <g filter="url(#invert)"> - <path d="M9.5,19 C14.7467051,19 19,14.7467051 19,9.5 C19,4.25329488 14.7467051,0 9.5,0 C4.25329488,0 0,4.25329488 0,9.5 C0,14.7467051 4.25329488,19 9.5,19 Z" id="Oval-69" fill="#000" opacity="0.2"></path> - <path d="M4.5,9.50063771 C4.5,9.13148623 4.59887838,8.85242947 4.7966381,8.66345907 C4.99439782,8.47448867 5.28224377,8.38000488 5.66018457,8.38000488 C6.0249414,8.38000488 6.3072941,8.47668596 6.50725115,8.67005103 C6.70720821,8.86341609 6.80718523,9.14027555 6.80718523,9.50063771 C6.80718523,9.84781589 6.70610956,10.1213794 6.50395517,10.3213365 C6.30180079,10.5212935 6.02054674,10.6212705 5.66018457,10.6212705 C5.29103309,10.6212705 5.00538444,10.5234908 4.80323006,10.3279284 C4.60107568,10.132366 4.5,9.85660521 4.5,9.50063771 L4.5,9.50063771 Z M8.3431114,9.50063771 C8.3431114,9.13148623 8.44198978,8.85242947 8.63974951,8.66345907 C8.83750923,8.47448867 9.12755247,8.38000488 9.50988794,8.38000488 C9.87464476,8.38000488 10.1569975,8.47668596 10.3569545,8.67005103 C10.5569116,8.86341609 10.6568886,9.14027555 10.6568886,9.50063771 C10.6568886,9.84781589 10.5558129,10.1213794 10.3536585,10.3213365 C10.1515042,10.5212935 9.8702501,10.6212705 9.50988794,10.6212705 C9.13634179,10.6212705 8.84849585,10.5234908 8.64634146,10.3279284 C8.44418708,10.132366 8.3431114,9.85660521 8.3431114,9.50063771 L8.3431114,9.50063771 Z M12.1928148,9.50063771 C12.1928148,9.13148623 12.2916931,8.85242947 12.4894529,8.66345907 C12.6872126,8.47448867 12.9750585,8.38000488 13.3529993,8.38000488 C13.7177562,8.38000488 14.0001089,8.47668596 14.2000659,8.67005103 C14.400023,8.86341609 14.5,9.14027555 14.5,9.50063771 C14.5,9.84781589 14.3989243,10.1213794 14.1967699,10.3213365 C13.9946156,10.5212935 13.7133615,10.6212705 13.3529993,10.6212705 C12.9838479,10.6212705 12.6981992,10.5234908 12.4960448,10.3279284 C12.2938904,10.132366 12.1928148,9.85660521 12.1928148,9.50063771 L12.1928148,9.50063771 Z" id="…" fill="#000" opacity="0.6"></path> + <g> + <path d="M9.5,19 C14.7467051,19 19,14.7467051 19,9.5 C19,4.25329488 14.7467051,0 9.5,0 C4.25329488,0 0,4.25329488 0,9.5 C0,14.7467051 4.25329488,19 9.5,19 Z" id="Oval-69" fill="#ECECEC"></path> + <path d="M4.5,9.50063771 C4.5,9.13148623 4.59887838,8.85242947 4.7966381,8.66345907 C4.99439782,8.47448867 5.28224377,8.38000488 5.66018457,8.38000488 C6.0249414,8.38000488 6.3072941,8.47668596 6.50725115,8.67005103 C6.70720821,8.86341609 6.80718523,9.14027555 6.80718523,9.50063771 C6.80718523,9.84781589 6.70610956,10.1213794 6.50395517,10.3213365 C6.30180079,10.5212935 6.02054674,10.6212705 5.66018457,10.6212705 C5.29103309,10.6212705 5.00538444,10.5234908 4.80323006,10.3279284 C4.60107568,10.132366 4.5,9.85660521 4.5,9.50063771 L4.5,9.50063771 Z M8.3431114,9.50063771 C8.3431114,9.13148623 8.44198978,8.85242947 8.63974951,8.66345907 C8.83750923,8.47448867 9.12755247,8.38000488 9.50988794,8.38000488 C9.87464476,8.38000488 10.1569975,8.47668596 10.3569545,8.67005103 C10.5569116,8.86341609 10.6568886,9.14027555 10.6568886,9.50063771 C10.6568886,9.84781589 10.5558129,10.1213794 10.3536585,10.3213365 C10.1515042,10.5212935 9.8702501,10.6212705 9.50988794,10.6212705 C9.13634179,10.6212705 8.84849585,10.5234908 8.64634146,10.3279284 C8.44418708,10.132366 8.3431114,9.85660521 8.3431114,9.50063771 L8.3431114,9.50063771 Z M12.1928148,9.50063771 C12.1928148,9.13148623 12.2916931,8.85242947 12.4894529,8.66345907 C12.6872126,8.47448867 12.9750585,8.38000488 13.3529993,8.38000488 C13.7177562,8.38000488 14.0001089,8.47668596 14.2000659,8.67005103 C14.400023,8.86341609 14.5,9.14027555 14.5,9.50063771 C14.5,9.84781589 14.3989243,10.1213794 14.1967699,10.3213365 C13.9946156,10.5212935 13.7133615,10.6212705 13.3529993,10.6212705 C12.9838479,10.6212705 12.6981992,10.5234908 12.4960448,10.3279284 C12.2938904,10.132366 12.1928148,9.85660521 12.1928148,9.50063771 L12.1928148,9.50063771 Z" id="…" fill="#9B9B9B"></path> </g> </g> </g> diff --git a/src/skins/vector/img/icon_context_message_dark.svg b/src/skins/vector/img/icon_context_message_dark.svg new file mode 100644 index 00000000..b4336cc3 --- /dev/null +++ b/src/skins/vector/img/icon_context_message_dark.svg @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch --> + <title>ED5D3E59-2561-4AC1-9B43-82FBC51767FC</title> + <desc>Created with sketchtool.</desc> + <defs></defs> + <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="icon_context"> + <g> + <path d="M9.5,19 C14.7467051,19 19,14.7467051 19,9.5 C19,4.25329488 14.7467051,0 9.5,0 C4.25329488,0 0,4.25329488 0,9.5 C0,14.7467051 4.25329488,19 9.5,19 Z" id="Oval-69" fill="#000" opacity="0.2"></path> + <path d="M4.5,9.50063771 C4.5,9.13148623 4.59887838,8.85242947 4.7966381,8.66345907 C4.99439782,8.47448867 5.28224377,8.38000488 5.66018457,8.38000488 C6.0249414,8.38000488 6.3072941,8.47668596 6.50725115,8.67005103 C6.70720821,8.86341609 6.80718523,9.14027555 6.80718523,9.50063771 C6.80718523,9.84781589 6.70610956,10.1213794 6.50395517,10.3213365 C6.30180079,10.5212935 6.02054674,10.6212705 5.66018457,10.6212705 C5.29103309,10.6212705 5.00538444,10.5234908 4.80323006,10.3279284 C4.60107568,10.132366 4.5,9.85660521 4.5,9.50063771 L4.5,9.50063771 Z M8.3431114,9.50063771 C8.3431114,9.13148623 8.44198978,8.85242947 8.63974951,8.66345907 C8.83750923,8.47448867 9.12755247,8.38000488 9.50988794,8.38000488 C9.87464476,8.38000488 10.1569975,8.47668596 10.3569545,8.67005103 C10.5569116,8.86341609 10.6568886,9.14027555 10.6568886,9.50063771 C10.6568886,9.84781589 10.5558129,10.1213794 10.3536585,10.3213365 C10.1515042,10.5212935 9.8702501,10.6212705 9.50988794,10.6212705 C9.13634179,10.6212705 8.84849585,10.5234908 8.64634146,10.3279284 C8.44418708,10.132366 8.3431114,9.85660521 8.3431114,9.50063771 L8.3431114,9.50063771 Z M12.1928148,9.50063771 C12.1928148,9.13148623 12.2916931,8.85242947 12.4894529,8.66345907 C12.6872126,8.47448867 12.9750585,8.38000488 13.3529993,8.38000488 C13.7177562,8.38000488 14.0001089,8.47668596 14.2000659,8.67005103 C14.400023,8.86341609 14.5,9.14027555 14.5,9.50063771 C14.5,9.84781589 14.3989243,10.1213794 14.1967699,10.3213365 C13.9946156,10.5212935 13.7133615,10.6212705 13.3529993,10.6212705 C12.9838479,10.6212705 12.6981992,10.5234908 12.4960448,10.3279284 C12.2938904,10.132366 12.1928148,9.85660521 12.1928148,9.50063771 L12.1928148,9.50063771 Z" id="…" fill="#FFF" opacity="0.6"></path> + </g> + </g> + </g> +</svg> From 323c5d073289998ef4245a36032644927eaab351 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 17 Jan 2017 14:54:55 +0000 Subject: [PATCH 156/243] CSS for 'searching known users' --- .../css/matrix-react-sdk/views/dialogs/ChatInviteDialog.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/ChatInviteDialog.css b/src/skins/vector/css/matrix-react-sdk/views/dialogs/ChatInviteDialog.css index aa1dced8..fe72d57d 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/ChatInviteDialog.css +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/ChatInviteDialog.css @@ -63,3 +63,9 @@ limitations under the License. .mx_ChatInviteDialog_cancel object { pointer-events: none; } + +.mx_ChatInviteDialog_addressSelectHeader { + font-weight: bold; + line-height: 150%; + text-indent: 4px; +} From 6c88201e23b7c16a7732dea65a4009ad02efc18f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 17 Jan 2017 19:14:16 +0000 Subject: [PATCH 158/243] use ye olde rel='alternate stylesheets' for theming --- src/vector/index.html | 14 ++++++++++---- src/vector/index.js | 1 - webpack.config.js | 4 ++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/vector/index.html b/src/vector/index.html index 73cdd2df..1895cc6b 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -20,14 +20,20 @@ <meta name="msapplication-TileImage" content="vector-icons/mstile-144x144.png"> <meta name="msapplication-config" content="vector-icons/browserconfig.xml"> <meta name="theme-color" content="#ffffff"> - <% for(var i=0; i<htmlWebpackPlugin.files.css.length; i++) {%> - <link href="<%= htmlWebpackPlugin.files.css[i] %>" rel="stylesheet"> - <% } %> + <% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) { + var file = htmlWebpackPlugin.files.css[i]; + if (file.match(/^theme-(?!light\.)/)) { + %> + <link rel="alternate stylesheet" title="<%= file %>" href="<%= file %>"> + <% } else { %> + <link rel="stylesheet" href="<%= file %>"> + <% } + } %> </head> <body style="height: 100%;"> <section id="matrixchat" style="height: 100%;"></section> <noscript>Sorry, Riot requires JavaScript to be enabled.</noscript> - <% for(var i=0; i<htmlWebpackPlugin.files.js.length; i++) {%> + <% for (var i=0; i < htmlWebpackPlugin.files.js.length; i++) {%> <script src="<%= htmlWebpackPlugin.files.js[i] %>"></script> <% } %> <img src="img/warning.svg" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> diff --git a/src/vector/index.js b/src/vector/index.js index 64b87698..0d254202 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -30,7 +30,6 @@ require('babel-polyfill'); // CSS requires: just putting them here for now as CSS is going to be // refactored "soon" anyway -require('../../build/dark.scss'); require('gemini-scrollbar/gemini-scrollbar.css'); require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); diff --git a/webpack.config.js b/webpack.config.js index 1f2a8a60..e05f877a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -15,6 +15,10 @@ module.exports = { // point, so that it doesn't block the pageload, but that is a separate // problem) "olm": "./src/vector/olm-loader.js", + + // CSS themes + "theme-light": "./build/light.scss", + "theme-dark": "./build/dark.scss", }, module: { preLoaders: [ From 0cd895b417bdc1163511d993c6b24ba1fe0910f3 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Tue, 17 Jan 2017 19:19:30 +0000 Subject: [PATCH 159/243] kill the moofle --- src/skins/vector/css/themes/dark.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/src/skins/vector/css/themes/dark.scss b/src/skins/vector/css/themes/dark.scss index 0c51486b..5a37d036 100644 --- a/src/skins/vector/css/themes/dark.scss +++ b/src/skins/vector/css/themes/dark.scss @@ -1,4 +1,3 @@ @import "_base.scss"; @import "_dark.scss"; @import "../_components.scss"; -// moofleasdadsasdadsa \ No newline at end of file From 5206410f2126b6b987ecb654bf13829f8a58016c Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 17 Jan 2017 22:25:02 +0000 Subject: [PATCH 160/243] Deployment script Factor some bits out of redeploy.py, so that they can be used in a deployment script suitable for riot.im/app. --- scripts/deploy.py | 158 ++++++++++++++++++++++++++++++++++++++++++++ scripts/redeploy.py | 107 +++++++----------------------- 2 files changed, 182 insertions(+), 83 deletions(-) create mode 100755 scripts/deploy.py diff --git a/scripts/deploy.py b/scripts/deploy.py new file mode 100755 index 00000000..dde13c54 --- /dev/null +++ b/scripts/deploy.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python +# +# download and unpack a riot-web tarball. +# +# Allows `bundles` to be extracted to a common directory, and a link to +# config.json to be added. + +from __future__ import print_function + +import argparse +import os +import os.path +import tarfile +import urllib + +class DeployException(Exception): + pass + +def create_relative_symlink(linkname, target): + relpath = os.path.relpath(target, os.path.dirname(linkname)) + print ("Symlink %s -> %s" % (linkname, relpath)) + os.symlink(relpath, linkname) + + +def move_bundles(source, dest): + """Move the contents of the 'bundles' directory to a common dir + + We check that we will not be overwriting anything before we proceed. + + Args: + source (str): path to 'bundles' within the extracted tarball + dest (str): target common directory + """ + + if not os.path.isdir(dest): + os.mkdir(dest) + + # build a map from source to destination, checking for non-existence as we go. + renames = {} + for f in os.listdir(source): + dst = os.path.join(dest, f) + if os.path.exists(dst): + raise DeployException( + "Not deploying. The bundle includes '%s' which we have previously deployed." + % f + ) + renames[os.path.join(source, f)] = dst + + for (src, dst) in renames.iteritems(): + print ("Move %s -> %s" % (src, dst)) + os.rename(src, dst) + +class Deployer: + def __init__(self): + self.packages_path = "." + self.bundles_path = None + self.should_clean = False + self.config_location = None + + def deploy(self, tarball, extract_path): + """Download a tarball if necessary, and unpack it + + Returns: + (str) the path to the unpacked deployment + """ + print("Deploying %s to %s" % (tarball, extract_path)) + + downloaded = False + if tarball.startswith("http://") or tarball.startswith("https://"): + tarball = self.download_file(tarball) + print("Downloaded file: %s" % tarball) + downloaded = True + + try: + with tarfile.open(tarball) as tar: + tar.extractall(extract_path) + finally: + if self.should_clean and downloaded: + os.remove(tarball) + + name_str = os.path.basename(tarball).replace(".tar.gz", "") + extracted_dir = os.path.join(extract_path, name_str) + print ("Extracted into: %s" % extracted_dir) + + if self.config_location: + create_relative_symlink( + target=self.config_location, + linkname=os.path.join(extracted_dir, 'config.json') + ) + + if self.bundles_path: + extracted_bundles = os.path.join(extracted_dir, 'bundles') + move_bundles(source=extracted_bundles, dest=self.bundles_path) + + # replace the (hopefully now empty) extracted_bundles dir with a + # symlink to the common dir. + os.rmdir(extracted_bundles) + create_relative_symlink( + target=self.bundles_path, + linkname=extracted_bundles, + ) + return extracted_dir + + def download_file(self, url): + if not os.path.isdir(self.packages_path): + os.mkdir(self.packages_path) + local_filename = os.path.join(self.packages_path, + url.split('/')[-1]) + urllib.urlretrieve(url, local_filename) + return local_filename + +if __name__ == "__main__": + parser = argparse.ArgumentParser("Deploy a Riot build on a web server.") + parser.add_argument( + "-p", "--packages-dir", default="./packages", help=( + "The directory to download the tarball into. (Default: '%(default)s')" + ) + ) + parser.add_argument( + "-e", "--extract-path", default="./deploys", help=( + "The location to extract .tar.gz files to. (Default: '%(default)s')" + ) + ) + parser.add_argument( + "-b", "--bundles-dir", nargs='?', default="./bundles", help=( + "A directory to move the contents of the 'bundles' directory to. A \ + symlink to the bundles directory will also be written inside the \ + extracted tarball. Example: './bundles'. \ + (Default: '%(default)s')" + ) + ) + parser.add_argument( + "-c", "--clean", action="store_true", default=False, help=( + "Remove .tar.gz files after they have been downloaded and extracted. \ + (Default: %(default)s)" + ) + ) + parser.add_argument( + "--config", nargs='?', default='./config.json', help=( + "Write a symlink at config.json in the extracted tarball to this \ + location. (Default: '%(default)s')" + ) + ) + parser.add_argument( + "tarball", help=( + "filename of tarball, or URL to download." + ), + ) + + args = parser.parse_args() + + deployer = Deployer() + deployer.packages_path = args.packages_dir + deployer.bundles_path = args.bundles_dir + deployer.should_clean = args.clean + deployer.config_location = args.config + + deployer.deploy(args.tarball, args.extract_path) diff --git a/scripts/redeploy.py b/scripts/redeploy.py index 4394f292..0796b963 100755 --- a/scripts/redeploy.py +++ b/scripts/redeploy.py @@ -14,32 +14,17 @@ from __future__ import print_function import json, requests, tarfile, argparse, os, errno import time from urlparse import urljoin + from flask import Flask, jsonify, request, abort +from deploy import Deployer, DeployException + app = Flask(__name__) arg_jenkins_url = None +deployer = None arg_extract_path = None -arg_bundles_path = None -arg_should_clean = None arg_symlink = None -arg_config_location = None - -class DeployException(Exception): - pass - -def download_file(url): - local_filename = url.split('/')[-1] - r = requests.get(url, stream=True) - with open(local_filename, 'wb') as f: - for chunk in r.iter_content(chunk_size=1024): - if chunk: # filter out keep-alive new chunks - f.write(chunk) - return local_filename - -def untar_to(tarball, dest): - with tarfile.open(tarball) as tar: - tar.extractall(dest) def create_symlink(source, linkname): try: @@ -137,17 +122,20 @@ def fetch_jenkins_build(job_name, build_num): # see half-written files. build_dir = os.path.join(arg_extract_path, "%s-#%s" % (job_name, build_num)) try: - deploy_tarball(tar_gz_url, build_dir) + extracted_dir = deploy_tarball(tar_gz_url, build_dir) except DeployException as e: abort(400, e.message) + create_symlink(source=extracted_dir, linkname=arg_symlink) + return jsonify({}) def deploy_tarball(tar_gz_url, build_dir): - """Download a tarball from jenkins and deploy it as the new version - """ - print("Deploying %s to %s" % (tar_gz_url, build_dir)) + """Download a tarball from jenkins and unpack it + Returns: + (str) the path to the unpacked deployment + """ if os.path.exists(build_dir): raise DeployException( "Not deploying. We have previously deployed this build." @@ -156,62 +144,8 @@ def deploy_tarball(tar_gz_url, build_dir): # we rely on the fact that flask only serves one request at a time to # ensure that we do not overwrite a tarball from a concurrent request. - filename = download_file(tar_gz_url) - print("Downloaded file: %s" % filename) - try: - untar_to(filename, build_dir) - print("Extracted to: %s" % build_dir) - finally: - if arg_should_clean: - os.remove(filename) - - name_str = filename.replace(".tar.gz", "") - extracted_dir = os.path.join(build_dir, name_str) - - if arg_config_location: - create_symlink(source=arg_config_location, linkname=os.path.join(extracted_dir, 'config.json')) - - if arg_bundles_path: - extracted_bundles = os.path.join(extracted_dir, 'bundles') - move_bundles(source=extracted_bundles, dest=arg_bundles_path) - - # replace the (hopefully now empty) extracted_bundles dir with a - # symlink to the common dir. - relpath = os.path.relpath(arg_bundles_path, extracted_dir) - os.rmdir(extracted_bundles) - print ("Symlink %s -> %s" % (extracted_bundles, relpath)) - os.symlink(relpath, extracted_bundles) - - create_symlink(source=extracted_dir, linkname=arg_symlink) - -def move_bundles(source, dest): - """Move the contents of the 'bundles' directory to a common dir - - We check that we will not be overwriting anything before we proceed. - - Args: - source (str): path to 'bundles' within the extracted tarball - dest (str): target common directory - """ - - if not os.path.isdir(dest): - os.mkdir(dest) - - # build a map from source to destination, checking for non-existence as we go. - renames = {} - for f in os.listdir(source): - dst = os.path.join(dest, f) - if os.path.exists(dst): - raise DeployException( - "Not deploying. The bundle includes '%s' which we have previously deployed." - % f - ) - renames[os.path.join(source, f)] = dst - - for (src, dst) in renames.iteritems(): - print ("Move %s -> %s" % (src, dst)) - os.rename(src, dst) + return deployer.deploy(tar_gz_url, build_dir) if __name__ == "__main__": @@ -270,21 +204,28 @@ if __name__ == "__main__": else: arg_jenkins_url = args.jenkins + "/" arg_extract_path = args.extract - arg_bundles_path = args.bundles_dir - arg_should_clean = args.clean arg_symlink = args.symlink - arg_config_location = args.config if not os.path.isdir(arg_extract_path): os.mkdir(arg_extract_path) + deployer = Deployer() + deployer.bundles_path = args.bundles_dir + deployer.should_clean = args.clean + deployer.config_location = args.config + if args.tarball_uri is not None: build_dir = os.path.join(arg_extract_path, "test-%i" % (time.time())) deploy_tarball(args.tarball_uri, build_dir) else: print( "Listening on port %s. Extracting to %s%s. Symlinking to %s. Jenkins URL: %s. Config location: %s" % - (args.port, arg_extract_path, - " (clean after)" if arg_should_clean else "", arg_symlink, arg_jenkins_url, arg_config_location) + (args.port, + arg_extract_path, + " (clean after)" if deployer.should_clean else "", + arg_symlink, + arg_jenkins_url, + deployer.config_location, + ) ) app.run(host="0.0.0.0", port=args.port, debug=True) From 83145e80e5c17339f14dd4ec053843f5b40bbf1a Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 18 Jan 2017 10:39:59 +0000 Subject: [PATCH 161/243] Auto-hide the electron menu bar From https://github.com/vector-im/riot-web/issues/2962 This allows all the shortcuts to still work, and the menu bar can be un-hidden with the alt key. --- electron/src/electron-main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index a03a8755..929b7892 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -175,6 +175,7 @@ electron.app.on('ready', () => { icon: icon_path, width: 1024, height: 768, show: false, + autoHideMenuBar: true, }); mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`); electron.Menu.setApplicationMenu(VectorMenu); From 69bedf0d37384f3039a145180c4ba7834bfa45c7 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 18 Jan 2017 12:42:48 +0000 Subject: [PATCH 162/243] review feedback --- package.json | 2 -- src/skins/vector/css/rethemendex.sh | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index 1e273dfe..b8fd1574 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,6 @@ "babel-preset-es2017": "^6.16.0", "babel-preset-react": "^6.16.0", "babel-preset-stage-2": "^6.17.0", - "catw": "^1.0.1", "chokidar": "^1.6.1", "cpx": "^1.3.2", "css-raw-loader": "^0.1.1", @@ -113,7 +112,6 @@ "minimist": "^1.2.0", "mkdirp": "^0.5.1", "mocha": "^2.4.5", - "node-sass": "^4.1.1", "parallelshell": "^1.2.0", "phantomjs-prebuilt": "^2.1.7", "postcss-cli": "^2.6.0", diff --git a/src/skins/vector/css/rethemendex.sh b/src/skins/vector/css/rethemendex.sh index 915b235d..9381c5cd 100755 --- a/src/skins/vector/css/rethemendex.sh +++ b/src/skins/vector/css/rethemendex.sh @@ -2,7 +2,7 @@ echo "// autogenerated by rethemendex.sh" > _components.scss -for i in `find . -iname _\*.scss | fgrep -v _components.scss`; +for i in `find . -iname _\*.scss | fgrep -v _components.scss | sort`; do echo "@import \"$i\";" >> _components.scss done From 708fd640f7af9a641a5b3a66dacbb17392e8410c Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 18 Jan 2017 14:06:20 +0000 Subject: [PATCH 163/243] unbreak switching after vdh's webpack changes --- src/vector/index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vector/index.html b/src/vector/index.html index 1895cc6b..a6c3092d 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -22,9 +22,11 @@ <meta name="theme-color" content="#ffffff"> <% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) { var file = htmlWebpackPlugin.files.css[i]; - if (file.match(/^theme-(?!light\.)/)) { + var match = file.match(/^bundles\/.*?\/theme-((?!light\.).*)\.css$/); + if (match) { + var title = match[1].charAt(0).toUpperCase() + match[1].slice(1); %> - <link rel="alternate stylesheet" title="<%= file %>" href="<%= file %>"> + <link rel="alternate stylesheet" title="<%= title %>" href="<%= file %>"> <% } else { %> <link rel="stylesheet" href="<%= file %>"> <% } From f10bc8eef17a56b50ba4901184ad325fa181e04c Mon Sep 17 00:00:00 2001 From: lukebarnard <luke.barnard99@gmail.com> Date: Wed, 18 Jan 2017 16:49:20 +0100 Subject: [PATCH 164/243] Animate status bar max-height and margin-top When collapsed, the max-height is set to 0px. When expanded, max-height is set to 50px, margin-top is set to 0px. When expanded and when the timeline is not scrolled down to the bottom, margin-top is set to -50px to offset the change in height, keeping it at the same scroll position. Without the animation, there would be a jump when the user starts scrolling up from the bottom whilst the StatusBar is expanded. --- .../matrix-react-sdk/structures/RoomView.css | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css index c3f7ceed..3b3c396f 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css +++ b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css @@ -202,6 +202,25 @@ hr.mx_RoomView_myReadMarker { width: 100%; -webkit-flex: 0 0 auto; flex: 0 0 auto; + + max-height: 0px; + background-color: #fff; + z-index: 1000; + overflow: hidden; + + -webkit-transition: all .5s ease-in-out; + -moz-transition: all .5s ease-in-out; + -ms-transition: all .5s ease-in-out; + -o-transition: all .5s ease-in-out; +} + +.mx_RoomView_statusArea_expanded { + max-height: 50px; + margin-top: 0px; +} + +.mx_RoomView_statusArea_expanded.mx_RoomView_statusArea_mid_timeline { + margin-top: -50px; } .mx_RoomView_statusAreaBox { From e9884768f6fa770d6f33e9ab456688928ba50f39 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Wed, 18 Jan 2017 16:00:13 +0000 Subject: [PATCH 165/243] Persist console logs to an IndexedDB instance --- src/vector/index.js | 7 ++ src/vector/rageshake.js | 180 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 src/vector/rageshake.js diff --git a/src/vector/index.js b/src/vector/index.js index 8231950b..b965f01d 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -36,6 +36,13 @@ require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); require('draft-js/dist/Draft.css'); +const rageshake = require("./rageshake"); +rageshake.init().then(() => { + console.log("Initialised rageshake"); +}, (err) => { + console.error("Failed to initialise rageshake: " + err); +}); + // add React and ReactPerf to the global namespace, to make them easier to // access via the console diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js new file mode 100644 index 00000000..fe768630 --- /dev/null +++ b/src/vector/rageshake.js @@ -0,0 +1,180 @@ +/* +Copyright 2017 OpenMarket 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. +*/ + +// This module contains all the code needed to log the console, persist it to disk and submit bug reports. Rationale is as follows: +// - Monkey-patching the console is preferable to having a log library because we can catch logs by other libraries more easily, +// without having to all depend on the same log framework / pass the logger around. +// - We use IndexedDB to persists logs because it has generous disk space limits compared to local storage. IndexedDB does not work +// in incognito mode, in which case this module will not be able to write logs to disk. However, the logs will still be stored +// in-memory, so can still be submitted in a bug report should the user wish to: we can also store more logs in-memory than in +// local storage, which does work in incognito mode. +// - Bug reports are sent as a POST over HTTPS: it purposefully does not use Matrix as bug reports may be made when Matrix is +// not responsive (which may be the cause of the bug). + +const FLUSH_RATE_MS = 30 * 1000; + +// A class which monkey-patches the global console and stores log lines. +class ConsoleLogger { + constructor() { + this.logs = ""; + + // Monkey-patch console logging + const consoleFunctionsToLevels = { + log: "I", + info: "I", + error: "E", + }; + Object.keys(consoleFunctionsToLevels).forEach((fnName) => { + const level = consoleFunctionsToLevels[fnName]; + let originalFn = window.console[fnName].bind(window.console); + window.console[fnName] = (...args) => { + this.log(level, ...args); + originalFn(...args); + } + }); + } + + log(level, ...args) { + // We don't know what locale the user may be running so use ISO strings + const ts = new Date().toISOString(); + // Some browsers support string formatting which we're not doing here + // so the lines are a little more ugly but easy to implement / quick to run. + // Example line: + // 2017-01-18T11:23:53.214Z W Failed to set badge count: Error setting badge. Message: Too many badges requests in queue. + const line = `${ts} ${level} ${args.join(' ')}\n`; + // Using + really is the quickest way in JS + // http://jsperf.com/concat-vs-plus-vs-join + this.logs += line; + } + + /** + * Retrieve log lines to flush to disk. + * @return {string} \n delimited log lines to flush. + */ + flush() { + // The ConsoleLogger doesn't care how these end up on disk, it just flushes them to the caller. + const logsToFlush = this.logs; + this.logs = ""; + return logsToFlush; + } +} + +// A class which stores log lines in an IndexedDB instance. +class IndexedDBLogStore { + constructor(indexedDB, logger) { + this.indexedDB = indexedDB; + this.logger = logger; + this.db = null; + } + + /** + * @return {Promise} Resolves when the store is ready. + */ + connect() { + let req = this.indexedDB.open("logs"); + return new Promise((resolve, reject) => { + req.onsuccess = (event) => { + this.db = event.target.result; + // Periodically flush logs to local storage / indexeddb + setInterval(this.flush.bind(this), FLUSH_RATE_MS); + resolve(); + }; + + req.onerror = (event) => { + const err = "Failed to open log database: " + event.target.errorCode; + console.error(err); + reject(new Error(err)); + }; + + // First time: Setup the object store + req.onupgradeneeded = (event) => { + const db = event.target.result; + const objectStore = db.createObjectStore("logs", { + autoIncrement: true + }) + objectStore.transaction.oncomplete = function(event) { + objectStore.add( + new Date() + " ::: Log database was created." + ); + }; + } + }); + } + + /** + * @return {Promise} Resolved when the logs have been flushed. + */ + flush() { + if (!this.db) { + // not connected yet or user rejected access for us to r/w to the db + return Promise.reject(new Error("No connected database")); + } + const lines = this.logger.flush(); + if (lines.length === 0) { + return Promise.resolve(); + } + return new Promise((resolve, reject) => { + let txn = this.db.transaction("logs", "readwrite"); + let objStore = txn.objectStore("logs"); + objStore.add(lines); + txn.oncomplete = (event) => { + resolve(); + }; + txn.onerror = (event) => { + console.error("Failed to flush logs : " + event.target.errorCode); + reject(new Error("Failed to write logs: " + event.target.errorCode)); + } + }); + } +} + + +let store = null; +let inited = false; +module.exports = { + + /** + * Configure rage shaking support for sending bug reports. + * Modifies globals. + */ + init: function() { + if (inited || !window.indexedDB) { + return; + } + store = new IndexedDBLogStore(window.indexedDB, new ConsoleLogger()); + inited = true; + return store.connect(); + }, + + /** + * Force-flush the logs to storage. + * @return {Promise} Resolved when the logs have been flushed. + */ + flush: function() { + if (!store) { + return; + } + return store.flush(); + }, + + /** + * Send a bug report. + * @param {string} userText Any additional user input. + * @return {Promise} Resolved when the bug report is sent. + */ + sendBugReport: function(userText) { + } +}; From acb85b7b7227e107e4f91e8e473b2e8097eb9559 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 18 Jan 2017 16:06:02 +0000 Subject: [PATCH 166/243] f1x0r CSS comment --- src/vector/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 0d254202..a3892248 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -28,8 +28,9 @@ limitations under the License. // https://babeljs.io/docs/plugins/transform-runtime/ require('babel-polyfill'); -// CSS requires: just putting them here for now as CSS is going to be -// refactored "soon" anyway +// Require common CSS here; this will make webpack process it into bundle.css. +// Our own CSS (which is themed) is imported via separate webpack entry points +// in webpack.config.js require('gemini-scrollbar/gemini-scrollbar.css'); require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); From 5828ab107707752c76934484bad96ad8b1ff35f5 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Wed, 18 Jan 2017 16:27:11 +0000 Subject: [PATCH 167/243] Generate unique IDs for each JS runtime to accomodate multiple tabs --- src/vector/rageshake.js | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index fe768630..5739a934 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -20,7 +20,8 @@ limitations under the License. // - We use IndexedDB to persists logs because it has generous disk space limits compared to local storage. IndexedDB does not work // in incognito mode, in which case this module will not be able to write logs to disk. However, the logs will still be stored // in-memory, so can still be submitted in a bug report should the user wish to: we can also store more logs in-memory than in -// local storage, which does work in incognito mode. +// local storage, which does work in incognito mode. We also need to handle the case where there are 2+ tabs. Each JS runtime +// generates a random string which serves as the "ID" for that tab/session. These IDs are stored along with the log lines. // - Bug reports are sent as a POST over HTTPS: it purposefully does not use Matrix as bug reports may be made when Matrix is // not responsive (which may be the cause of the bug). @@ -77,6 +78,8 @@ class IndexedDBLogStore { constructor(indexedDB, logger) { this.indexedDB = indexedDB; this.logger = logger; + this.id = "instance-" + Date.now(); + this.index = 0; this.db = null; } @@ -103,13 +106,13 @@ class IndexedDBLogStore { req.onupgradeneeded = (event) => { const db = event.target.result; const objectStore = db.createObjectStore("logs", { - autoIncrement: true - }) - objectStore.transaction.oncomplete = function(event) { - objectStore.add( + keyPath: ["id", "index"] + }); + objectStore.add( + this._generateLogEntry( new Date() + " ::: Log database was created." - ); - }; + ) + ); } }); } @@ -129,7 +132,7 @@ class IndexedDBLogStore { return new Promise((resolve, reject) => { let txn = this.db.transaction("logs", "readwrite"); let objStore = txn.objectStore("logs"); - objStore.add(lines); + objStore.add(this._generateLogEntry(lines)); txn.oncomplete = (event) => { resolve(); }; @@ -139,6 +142,14 @@ class IndexedDBLogStore { } }); } + + _generateLogEntry(lines) { + return { + id: this.id, + lines: lines, + index: this.index++ + }; + } } @@ -176,5 +187,9 @@ module.exports = { * @return {Promise} Resolved when the bug report is sent. */ sendBugReport: function(userText) { + // To gather all the logs, we first query for every log entry with index "0", this will let us + // know all the IDs from different tabs/sessions. + + // Send logs grouped by ID } }; From f20efc57f3beb4e8f0bea05c04980bc4b35b7606 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 18 Jan 2017 17:05:13 +0000 Subject: [PATCH 168/243] simple doc about theming --- docs/theming.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 docs/theming.md diff --git a/docs/theming.md b/docs/theming.md new file mode 100644 index 00000000..defb18bc --- /dev/null +++ b/docs/theming.md @@ -0,0 +1,25 @@ +Theming Riot +============ + +Themes are a very basic way of providing simple alternative look & feels to the +riot-web app via CSS & custom imagery. + +They are *NOT* co be confused with 'skins', which describe apps which sit on top +of matrix-react-sdk - e.g. in theory Riot itself is a react-sdk skin. +As of Jan 2017, skins are not fully supported; riot is the only available skin. + +To define a theme for Riot: + + 1. Pick a name, e.g. `teal`. at time of writing we have `light` and `dark`. + 2. Fork `src/skins/vector/css/themes/dark.scss` to be teal.scss + 3. Fork `src/skins/vector/css/themes/_base.scss` to be _teal.scss + 4. Override variables in _teal.css as desired. You may wish to delete ones + which don't differ from _base.scss, to make it clear which are being + overridden. If every single colour is being changed (as per _dark.scss) + then you might as well keep them all. + 5. Add the theme to the list of entrypoints in webpack.config.js + 6. Add the theme to the list of themes in matrix-react-sdk's UserSettings.js + 7. Sit back and admire your handywork. + +In future, the assets for a theme will probably be gathered together into a +single directory tree. \ No newline at end of file From 811086ac8ec1ea1b7cd5d5b475712d5277ce9af3 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Wed, 18 Jan 2017 17:18:02 +0000 Subject: [PATCH 169/243] Comment how we should consume logs --- src/vector/rageshake.js | 44 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 5739a934..9b6106ed 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -23,7 +23,9 @@ limitations under the License. // local storage, which does work in incognito mode. We also need to handle the case where there are 2+ tabs. Each JS runtime // generates a random string which serves as the "ID" for that tab/session. These IDs are stored along with the log lines. // - Bug reports are sent as a POST over HTTPS: it purposefully does not use Matrix as bug reports may be made when Matrix is -// not responsive (which may be the cause of the bug). +// not responsive (which may be the cause of the bug). We send the most recent N MB of UTF-8 log data, starting with the most +// recent, which we know because the "ID"s are actually timestamps. We then purge the remaining logs. We also do this check +// on startup to prevent logs from accumulating. const FLUSH_RATE_MS = 30 * 1000; @@ -143,6 +145,39 @@ class IndexedDBLogStore { }); } + /** + * Consume the most recent logs and return them. Older logs which are not returned are deleted at the same time, + * so this can be called at startup to do house-keeping to keep the logs from growing too large. + * + * @param {boolean} clearAll True to clear the most recent logs returned in addition to the + * older logs. This is desirable when sending bug reports as we do not want to submit the + * same logs twice. This is not desirable when doing house-keeping at startup in case they + * want to submit a bug report later. + * @return {Promise<Object[]>} Resolves to an array of objects. The array is sorted in time (oldest first) based on + * when the log file was created (the log ID). The objects have said log ID in an "id" field and "lines" which is a + * big string with all the new-line delimited logs. + */ + consume(clearAll) { + const MAX_LOG_SIZE = 1024 * 1024 * 50; // 50 MB + // To gather all the logs, we first query for every log entry with index "0", this will let us + // know all the IDs from different tabs/sessions. + return new Promise((resolve, reject) => { + // let txn = this.db.transaction("logs", "readonly"); + // let objectStore = txn.objectStore("logs"); + + // we know each entry has a unique ID, and we know IDs are timestamps, so accumulate all the IDs, + // ignoring the logs for now, and sort them to work out the correct log ID ordering. + + // Starting with the most recent ID, fetch the logs (all indices) for said ID and accumulate them + // in order. After fetching ALL the logs for an ID, recheck the total length of the logs to work out + // if we have exceeded the max size cutoff for "recent" logs. + + // Remove all logs that are older than the cutoff (or the entire logs if clearAll is set). + + // Return the logs that are within the cutoff. + }); + } + _generateLogEntry(lines) { return { id: this.id, @@ -187,9 +222,8 @@ module.exports = { * @return {Promise} Resolved when the bug report is sent. */ sendBugReport: function(userText) { - // To gather all the logs, we first query for every log entry with index "0", this will let us - // know all the IDs from different tabs/sessions. - - // Send logs grouped by ID + return store.consume(true).then((data) => { + // Send logs grouped by ID + }); } }; From ec1a2f6abfd73d8b181401eb37285aaf8a9cb55e Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 18 Jan 2017 19:29:53 +0000 Subject: [PATCH 170/243] fix CSS regression in searchbox --- .../vector/css/matrix-react-sdk/structures/_SearchBox.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss index bd335f60..382a07f9 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss @@ -44,7 +44,7 @@ limitations under the License. height: 24px; border: 0px ! important; /* border-bottom: 1px solid rgba(0, 0, 0, 0.1) ! important; */ - background-color: transparent; + background-color: transparent ! important; border: 0px; } From 5b95986705d9958545ad5ed4f94ed169da4eefa1 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Wed, 18 Jan 2017 20:05:18 +0000 Subject: [PATCH 171/243] fix various SCSS snafus --- src/skins/vector/css/_common.scss | 4 ++-- .../vector/css/matrix-react-sdk/structures/_SearchBox.scss | 1 - src/skins/vector/img/icon-call.svg | 2 +- src/skins/vector/img/icons-close-button.svg | 2 +- src/skins/vector/img/icons-search.svg | 2 +- src/skins/vector/img/icons-upload.svg | 2 +- src/skins/vector/img/icons-video.svg | 2 +- 7 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 01ba81d8..94362a2f 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -55,8 +55,8 @@ a:visited { color: $accent-color; } -input[type=text] { - background-color: $primary-bg-color; +input[type=text], input[type=password] { + background-color: transparent; color: $primary-fg-color; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss index 382a07f9..0f34f056 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_SearchBox.scss @@ -44,7 +44,6 @@ limitations under the License. height: 24px; border: 0px ! important; /* border-bottom: 1px solid rgba(0, 0, 0, 0.1) ! important; */ - background-color: transparent ! important; border: 0px; } diff --git a/src/skins/vector/img/icon-call.svg b/src/skins/vector/img/icon-call.svg index 2d96b145..0ca5c29e 100644 --- a/src/skins/vector/img/icon-call.svg +++ b/src/skins/vector/img/icon-call.svg @@ -2,7 +2,7 @@ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="35" height="35" viewBox="0, 0, 35, 35"> <g id="Symbols"> - <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#EAF5F0" id="Oval-109"/> + <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#76CFA6" opacity="0.15" id="Oval-109"/> <path d="M23,28 C21.195,28 16.807,25.624 13.122,20.524 C9.675,15.755 8,12.309 8,9.99 C8,8.164 9.225,7.293 9.883,6.825 L10.045,6.708 C10.773,6.173 11.903,6 12.337,6 C13.097,6 13.417,6.458 13.611,6.857 C13.776,7.195 15.141,10.212 15.28,10.587 C15.492,11.164 15.422,12.005 14.766,12.488 L14.65,12.571 C14.324,12.804 13.718,13.236 13.634,13.761 C13.594,14.016 13.677,14.283 13.889,14.577 C14.946,16.043 18.32,20.346 18.928,20.931 C19.405,21.389 20.009,21.455 20.42,21.098 C20.846,20.729 21.035,20.511 21.037,20.508 L21.081,20.465 C21.116,20.434 21.449,20.162 21.992,20.162 C22.385,20.162 22.783,20.302 23.178,20.576 C24.201,21.287 26.51,22.876 26.51,22.876 L26.547,22.906 C26.842,23.166 27.269,23.917 26.772,24.893 C26.256,25.907 24.655,28 23,28 L23,28 z" fill-opacity="0" stroke="#76CFA6" stroke-width="1" id="path-1"/> </g> </svg> diff --git a/src/skins/vector/img/icons-close-button.svg b/src/skins/vector/img/icons-close-button.svg index f17940f5..f960d73a 100644 --- a/src/skins/vector/img/icons-close-button.svg +++ b/src/skins/vector/img/icons-close-button.svg @@ -7,7 +7,7 @@ <g id="1:1-chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="Chat-People-2-Invite-modal-(similar-to-chat-group-5)" transform="translate(-909.000000, -263.000000)"> <g id="icons_close" transform="translate(909.000000, 263.000000)"> - <path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-1-Copy-7" fill="#EAF5F0"></path> + <path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-1-Copy-7" fill="#76CFA6" opacity="0.15"></path> <polyline id="icon_close" fill="#76CFA6" opacity="0.9" transform="translate(17.468897, 17.470577) rotate(-315.000000) translate(-17.468897, -17.470577) " points="18.2115394 5.97057742 16.674774 5.97057742 16.674774 16.7275762 5.9688975 16.7275762 5.9688975 18.2642903 16.674774 18.2642903 16.674774 28.9705774 18.2115394 28.9705774 18.2115394 18.2642903 28.9688975 18.2642903 28.9688975 16.7275762 18.2115394 16.7275762 18.2115394 5.97057742"></polyline> </g> </g> diff --git a/src/skins/vector/img/icons-search.svg b/src/skins/vector/img/icons-search.svg index 4f5002ab..d85709e6 100644 --- a/src/skins/vector/img/icons-search.svg +++ b/src/skins/vector/img/icons-search.svg @@ -2,7 +2,7 @@ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="35" height="35" viewBox="0, 0, 35, 35"> <g id="Symbols"> - <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#EAF5F0" id="Oval-1-Copy-7"/> + <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#76CFA6" opacity="0.15" id="Oval-1-Copy-7"/> <path d="M22.4,15.4 C22.4,19.266 19.266,22.4 15.4,22.4 C11.534,22.4 8.4,19.266 8.4,15.4 C8.4,11.534 11.534,8.4 15.4,8.4 C19.266,8.4 22.4,11.534 22.4,15.4 z" fill-opacity="0" stroke="#76CFA6" stroke-width="1" stroke-linecap="round" id="path-1" opacity="0.7"/> <path d="M20.3,20.3 L25.25,25.25" fill-opacity="0" stroke="#76CFA6" stroke-width="1" stroke-linecap="round" id="Line" opacity="0.7"/> </g> diff --git a/src/skins/vector/img/icons-upload.svg b/src/skins/vector/img/icons-upload.svg index 9074fcf9..b0101e87 100644 --- a/src/skins/vector/img/icons-upload.svg +++ b/src/skins/vector/img/icons-upload.svg @@ -2,7 +2,7 @@ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="35" height="35" viewBox="0, 0, 35, 35"> <g id="Symbols"> - <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#EAF5F0" id="Oval-109-Copy"/> + <path d="M17.5,35 C27.165,35 35,27.165 35,17.5 C35,7.835 27.165,0 17.5,0 C7.835,0 0,7.835 0,17.5 C0,27.165 7.835,35 17.5,35 z" fill="#76CFA6" opacity="0.15" id="Oval-109-Copy"/> <g id="file"> <path d="M10,10.01 C10,7.795 11.782,6 14.004,6 L18.402,6 C18.402,6 25,12.492 25,12.492 L25,24.006 C25,26.212 23.206,28 21,28 L14,28 C11.791,28 10,26.2 10,23.99 L10,10.01 z" fill-opacity="0" stroke="#76CFA6" stroke-width="1" id="path-1"/> <path d="M25,13 L20.157,13 C18.966,13 18,12.034 18,10.843 L18,6" fill-opacity="0" stroke="#76CFA6" stroke-width="1" id="path-3"/> diff --git a/src/skins/vector/img/icons-video.svg b/src/skins/vector/img/icons-video.svg index a35df49b..d367f496 100644 --- a/src/skins/vector/img/icons-video.svg +++ b/src/skins/vector/img/icons-video.svg @@ -7,7 +7,7 @@ <g id="Extra-icons" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="Extra-icons-sheet" transform="translate(-542.000000, -366.000000)"> <g id="icons_video" transform="translate(542.000000, 366.000000)"> - <path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-109-Copy-2" fill="#EAF5F0"></path> + <path d="M17.5,35 C27.1649831,35 35,27.1649831 35,17.5 C35,7.83501688 27.1649831,0 17.5,0 C7.83501688,0 0,7.83501688 0,17.5 C0,27.1649831 7.83501688,35 17.5,35 Z" id="Oval-109-Copy-2" fill="#76CFA6" opacity="0.15"></path> <g transform="translate(9.000000, 11.500000)" id="Rectangle-20-+-Path-16" stroke="#76CFA6"> <g transform="scale(1.0, 0.8)"> <rect id="Rectangle-20" x="0" y="0" width="13" height="17" rx="4"></rect> From 237f4df08eeb0333c451928d5af4adacd1000aca Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Wed, 18 Jan 2017 21:30:53 +0000 Subject: [PATCH 172/243] A couple of tweaks to the karma config * allow the imgs to be served from the karma server to avoid 404s * Use the source-map-loader for js --- karma.conf.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index 24742169..901832c7 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -29,12 +29,22 @@ module.exports = function (config) { files: [ 'node_modules/babel-polyfill/browser.js', testFile, - {pattern: 'vector/img/*', watched: false, included: false, served: true, nocache: false}, + + // make the images available via our httpd. They will be avaliable + // below http://localhost:[PORT]/base/. See also `proxies` which + // defines alternative URLs for them. + // + // This isn't required by any of the tests, but it stops karma + // logging warnings when it serves a 404 for them. + { + pattern: 'src/skins/vector/img/*', + watched: false, included: false, served: true, nocache: false, + }, ], - // redirect img links to the karma server proxies: { - "/img/": "/base/vector/img/", + // redirect img links to the karma server. See above. + "/img/": "/base/src/skins/vector/img/", }, // preprocess matching files before serving them to the browser @@ -86,6 +96,12 @@ module.exports = function (config) { webpack: { module: { + preLoaders: [ + // use the source-map-loader for javascript. This means + // that we have a better chance of seeing line numbers from + // the pre-babeled source. + { test: /\.js$/, loader: "source-map-loader" }, + ], loaders: [ { test: /\.json$/, loader: "json" }, { From c5032ba1bc4a7cde6ccd69c370ab336b7d2deac8 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@arasphere.net> Date: Wed, 18 Jan 2017 22:46:12 +0000 Subject: [PATCH 173/243] Update theming.md --- docs/theming.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/theming.md b/docs/theming.md index defb18bc..c6373e52 100644 --- a/docs/theming.md +++ b/docs/theming.md @@ -13,7 +13,7 @@ To define a theme for Riot: 1. Pick a name, e.g. `teal`. at time of writing we have `light` and `dark`. 2. Fork `src/skins/vector/css/themes/dark.scss` to be teal.scss 3. Fork `src/skins/vector/css/themes/_base.scss` to be _teal.scss - 4. Override variables in _teal.css as desired. You may wish to delete ones + 4. Override variables in _teal.scss as desired. You may wish to delete ones which don't differ from _base.scss, to make it clear which are being overridden. If every single colour is being changed (as per _dark.scss) then you might as well keep them all. @@ -22,4 +22,4 @@ To define a theme for Riot: 7. Sit back and admire your handywork. In future, the assets for a theme will probably be gathered together into a -single directory tree. \ No newline at end of file +single directory tree. From d1fbbf90c088f5d97a2b82882f8755dab5b03d5f Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Wed, 18 Jan 2017 21:51:49 +0000 Subject: [PATCH 174/243] Verify PGP signatures on tarballs when deploying --- scripts/deploy.py | 35 ++++++++++++++++++++++++++++++----- scripts/redeploy.py | 6 ++++++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/scripts/deploy.py b/scripts/deploy.py index dde13c54..c96b46e8 100755 --- a/scripts/deploy.py +++ b/scripts/deploy.py @@ -10,8 +10,16 @@ from __future__ import print_function import argparse import os import os.path +import subprocess +import sys import tarfile -import urllib + +try: + # python3 + from urllib.request import urlretrieve +except ImportError: + # python2 + from urllib import urlretrieve class DeployException(Exception): pass @@ -56,6 +64,7 @@ class Deployer: self.bundles_path = None self.should_clean = False self.config_location = None + self.verify_signature = True def deploy(self, tarball, extract_path): """Download a tarball if necessary, and unpack it @@ -65,9 +74,15 @@ class Deployer: """ print("Deploying %s to %s" % (tarball, extract_path)) + name_str = os.path.basename(tarball).replace(".tar.gz", "") + extracted_dir = os.path.join(extract_path, name_str) + if os.path.exists(extracted_dir): + raise DeployException('Cannot unpack %s: %s already exists' % ( + tarball, extracted_dir)) + downloaded = False if tarball.startswith("http://") or tarball.startswith("https://"): - tarball = self.download_file(tarball) + tarball = self.download_and_verify(tarball) print("Downloaded file: %s" % tarball) downloaded = True @@ -78,8 +93,6 @@ class Deployer: if self.should_clean and downloaded: os.remove(tarball) - name_str = os.path.basename(tarball).replace(".tar.gz", "") - extracted_dir = os.path.join(extract_path, name_str) print ("Extracted into: %s" % extracted_dir) if self.config_location: @@ -101,12 +114,24 @@ class Deployer: ) return extracted_dir + def download_and_verify(self, url): + tarball = self.download_file(url) + + if self.verify_signature: + sigfile = self.download_file(url + ".asc") + subprocess.check_call(["gpg", "--verify", sigfile, tarball]) + + return tarball + def download_file(self, url): if not os.path.isdir(self.packages_path): os.mkdir(self.packages_path) local_filename = os.path.join(self.packages_path, url.split('/')[-1]) - urllib.urlretrieve(url, local_filename) + sys.stdout.write("Downloading %s -> %s..." % (url, local_filename)) + sys.stdout.flush() + urlretrieve(url, local_filename) + print ("Done") return local_filename if __name__ == "__main__": diff --git a/scripts/redeploy.py b/scripts/redeploy.py index 0796b963..598f6c52 100755 --- a/scripts/redeploy.py +++ b/scripts/redeploy.py @@ -214,6 +214,12 @@ if __name__ == "__main__": deployer.should_clean = args.clean deployer.config_location = args.config + # we don't pgp-sign jenkins artifacts; instead we rely on HTTPS access to + # the jenkins server (and the jenkins server not being compromised and/or + # github not serving it compromised source). If that's not good enough for + # you, don't use riot.im/develop. + deployer.verify_signature = False + if args.tarball_uri is not None: build_dir = os.path.join(arg_extract_path, "test-%i" % (time.time())) deploy_tarball(args.tarball_uri, build_dir) From c3fa6ff8053f047d6d8dd8270dbb243abed5d587 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 19 Jan 2017 02:48:17 +0000 Subject: [PATCH 175/243] Use the postcss-webpack-loader Use postcss-webpack-loader instead of webpack-cli to process the scss. Doing so mostly means that we avoid the problem that webpack-dev-server fails to start if we haven't already built the CSS. (It also simplifies package.json somewhat, which is no bad thing) --- package.json | 14 ++++++-------- postcss.config.js | 13 +++++++++++++ postcss.config.json | 15 --------------- webpack.config.js | 26 +++++++++++++++++++++----- 4 files changed, 40 insertions(+), 28 deletions(-) create mode 100644 postcss.config.js delete mode 100644 postcss.config.json diff --git a/package.json b/package.json index 722e0cf0..84e05478 100644 --- a/package.json +++ b/package.json @@ -29,21 +29,19 @@ "reskindex": "reskindex -h src/header", "build:res": "node scripts/copy-res.js", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", - "build:css": "mkdirp build && postcss -c postcss.config.json", "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", - "build": "node scripts/babelcheck.js && npm run build:res && npm run build:css && npm run build:bundle", - "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:css && npm run build:bundle:dev", + "build": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle", + "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", "start:res": "node scripts/copy-res.js -w", "start:js": "webpack-dev-server -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", - "start:css": "mkdirp build && postcss -c postcss.config.json -w", - "start": "node scripts/babelcheck.js && parallelshell \"npm run start:res\" \"npm run start:js\" \"npm run start:css\"", - "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\" \"npm run start:css\"", - "clean": "rimraf build lib webapp electron/dist", + "start": "node scripts/babelcheck.js && parallelshell \"npm run start:res\" \"npm run start:js\"", + "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", + "clean": "rimraf lib webapp electron/dist", "prepublish": "npm run build:compile", "test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false", "test:multi": "karma start" @@ -114,9 +112,9 @@ "mocha": "^2.4.5", "parallelshell": "^1.2.0", "phantomjs-prebuilt": "^2.1.7", - "postcss-cli": "^2.6.0", "postcss-extend": "^1.0.5", "postcss-import": "^9.0.0", + "postcss-loader": "^1.2.2", "postcss-mixins": "^5.4.1", "postcss-nested": "^1.0.0", "postcss-scss": "^0.4.0", diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..5305d9ed --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,13 @@ +module.exports = { + plugins: [ + require("postcss-import")(), + require("autoprefixer")(), + require("postcss-simple-vars")(), + require("postcss-extend")(), + require("postcss-nested")(), + require("postcss-mixins")(), + require("postcss-strip-inline-comments")(), + ], + "parser": "postcss-scss", + "local-plugins": true, +}; diff --git a/postcss.config.json b/postcss.config.json deleted file mode 100644 index 7ed32cda..00000000 --- a/postcss.config.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "use": [ - "postcss-import", - "autoprefixer", - "postcss-simple-vars", - "postcss-extend", - "postcss-nested", - "postcss-mixins", - "postcss-strip-inline-comments" - ], - "parser": "postcss-scss", - "input": "src/skins/vector/css/themes/[^_]*.scss", - "dir": "build", - "local-plugins": true -} diff --git a/webpack.config.js b/webpack.config.js index 3a701965..136e0af7 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -17,8 +17,8 @@ module.exports = { "olm": "./src/vector/olm-loader.js", // CSS themes - "theme-light": "./build/light.scss", - "theme-dark": "./build/dark.scss", + "theme-light": "./src/skins/vector/css/themes/light.scss", + "theme-dark": "./src/skins/vector/css/themes/dark.scss" }, module: { preLoaders: [ @@ -27,9 +27,25 @@ module.exports = { loaders: [ { test: /\.json$/, loader: "json" }, { test: /\.js$/, loader: "babel", include: path.resolve('./src') }, - // css-raw-loader loads CSS but doesn't try to treat url()s as require()s - // we're assuming that postcss has already preprocessed SCSS by this point - { test: /\.s?css$/, loader: ExtractTextPlugin.extract("css-raw-loader") }, + { + test: /\.scss$/, + + // 1. postcss-loader turns the SCSS into normal CSS. + // 2. css-raw-loader turns the CSS into a javascript module + // whose default export is a string containing the CSS. + // (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.) + // 3. ExtractTextPlugin turns that string into a separate asset. + loader: ExtractTextPlugin.extract( + "css-raw-loader!postcss-loader?config=postcss.config.js" + ), + }, + { + // this works similarly to the scss case, without postcss. + test: /\.css$/, + loader: ExtractTextPlugin.extract("css-raw-loader"), + }, ], noParse: [ // don't parse the languages within highlight.js. They cause stack From e08f97a549925ee6bada12963dac1afdae0de714 Mon Sep 17 00:00:00 2001 From: lukebarnard <luke.barnard99@gmail.com> Date: Thu, 19 Jan 2017 11:52:15 +0100 Subject: [PATCH 176/243] Reduce animation time to 200ms --- .../vector/css/matrix-react-sdk/structures/RoomView.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css index 3b3c396f..b7fe0441 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css +++ b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css @@ -208,10 +208,10 @@ hr.mx_RoomView_myReadMarker { z-index: 1000; overflow: hidden; - -webkit-transition: all .5s ease-in-out; - -moz-transition: all .5s ease-in-out; - -ms-transition: all .5s ease-in-out; - -o-transition: all .5s ease-in-out; + -webkit-transition: all .2s ease-in-out; + -moz-transition: all .2s ease-in-out; + -ms-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; } .mx_RoomView_statusArea_expanded { From 6b1d1389187c3a0904ae2c04097033cd7631a12d Mon Sep 17 00:00:00 2001 From: lukebarnard <luke.barnard99@gmail.com> Date: Thu, 19 Jan 2017 12:45:26 +0100 Subject: [PATCH 177/243] Make scrolling to bottom whilst expanded seem less weird inertially --- .../css/matrix-react-sdk/structures/RoomView.css | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css index b7fe0441..6dc22e2f 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css +++ b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css @@ -208,10 +208,10 @@ hr.mx_RoomView_myReadMarker { z-index: 1000; overflow: hidden; - -webkit-transition: all .2s ease-in-out; - -moz-transition: all .2s ease-in-out; - -ms-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; + -webkit-transition: all .2s ease-out; + -moz-transition: all .2s ease-out; + -ms-transition: all .2s ease-out; + -o-transition: all .2s ease-out; } .mx_RoomView_statusArea_expanded { @@ -221,6 +221,11 @@ hr.mx_RoomView_myReadMarker { .mx_RoomView_statusArea_expanded.mx_RoomView_statusArea_mid_timeline { margin-top: -50px; + + -webkit-transition: all .2s ease-in; + -moz-transition: all .2s ease-in; + -ms-transition: all .2s ease-in; + -o-transition: all .2s ease-in; } .mx_RoomView_statusAreaBox { From 89d514a532827f5eb576a43138228a96a1606c02 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 19 Jan 2017 12:02:19 +0000 Subject: [PATCH 178/243] Query IndexedDB for all results with index=0 --- src/vector/rageshake.js | 46 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 9b6106ed..65462d15 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -24,7 +24,7 @@ limitations under the License. // generates a random string which serves as the "ID" for that tab/session. These IDs are stored along with the log lines. // - Bug reports are sent as a POST over HTTPS: it purposefully does not use Matrix as bug reports may be made when Matrix is // not responsive (which may be the cause of the bug). We send the most recent N MB of UTF-8 log data, starting with the most -// recent, which we know because the "ID"s are actually timestamps. We then purge the remaining logs. We also do this check +// recent, which we know because the "ID"s are actually timestamps. We then purge the remaining logs. We also do this purge // on startup to prevent logs from accumulating. const FLUSH_RATE_MS = 30 * 1000; @@ -38,6 +38,7 @@ class ConsoleLogger { const consoleFunctionsToLevels = { log: "I", info: "I", + warn: "W", error: "E", }; Object.keys(consoleFunctionsToLevels).forEach((fnName) => { @@ -110,6 +111,12 @@ class IndexedDBLogStore { const objectStore = db.createObjectStore("logs", { keyPath: ["id", "index"] }); + // Keys in the database look like: [ "instance-148938490", 0 ] + // Later on we need to query for everything with index=0, and query everything for an instance id. + // In order to do this, we need to set up indexes on both "id" and "index". + objectStore.createIndex("index", "index", { unique: false }); + objectStore.createIndex("id", "id", { unique: false }); + objectStore.add( this._generateLogEntry( new Date() + " ::: Log database was created." @@ -161,9 +168,11 @@ class IndexedDBLogStore { const MAX_LOG_SIZE = 1024 * 1024 * 50; // 50 MB // To gather all the logs, we first query for every log entry with index "0", this will let us // know all the IDs from different tabs/sessions. - return new Promise((resolve, reject) => { - // let txn = this.db.transaction("logs", "readonly"); - // let objectStore = txn.objectStore("logs"); + const txn = this.db.transaction("logs", "readonly"); + const objectStore = txn.objectStore("logs"); + return selectQuery(objectStore.index("index"), IDBKeyRange.only(0), (cursor) => cursor.value.id).then((res) => { + console.log("Instances: ", res); + }); // we know each entry has a unique ID, and we know IDs are timestamps, so accumulate all the IDs, // ignoring the logs for now, and sort them to work out the correct log ID ordering. @@ -175,7 +184,6 @@ class IndexedDBLogStore { // Remove all logs that are older than the cutoff (or the entire logs if clearAll is set). // Return the logs that are within the cutoff. - }); } _generateLogEntry(lines) { @@ -187,6 +195,34 @@ class IndexedDBLogStore { } } +/** + * Helper method to collect results from a Cursor and promiseify it. + * @param {ObjectStore|Index} store The store to perform openCursor on. + * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor. + * @param {Function} resultMapper A function which is repeatedly called with a Cursor. + * Return the data you want to keep. + * @return {Promise<T[]>} Resolves to an array of whatever you returned from resultMapper. + */ +function selectQuery(store, keyRange, resultMapper) { + const query = store.openCursor(keyRange); + return new Promise((resolve, reject) => { + let results = []; + query.onerror = (event) => { + reject(new Error("Query failed: " + event.target.errorCode)); + }; + // collect results + query.onsuccess = (event) => { + const cursor = event.target.result; + if (!cursor) { + resolve(results); + return; // end of results + } + results.push(resultMapper(cursor)); + cursor.continue(); + } + }); +} + let store = null; let inited = false; From 231adbcd311359b858dbb7dd7911d4dab9b21891 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 19 Jan 2017 13:02:08 +0000 Subject: [PATCH 179/243] Add copyright header --- electron/src/squirrelhooks.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/electron/src/squirrelhooks.js b/electron/src/squirrelhooks.js index ca0983b6..15ed670f 100644 --- a/electron/src/squirrelhooks.js +++ b/electron/src/squirrelhooks.js @@ -1,3 +1,19 @@ +/* +Copyright 2017 OpenMarket 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. +*/ + const path = require('path'); const spawn = require('child_process').spawn; const app = require('electron').app; From bee4ca2b28babf3cf43ec3c744a6b4e10bf3e624 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 19 Jan 2017 13:25:56 +0000 Subject: [PATCH 180/243] Fixes to electron desktop notifs Merge the notification part of https://github.com/vector-im/riot-web/pull/2960 * Show and focus the window when the notification is clicked, rather than just restoring it. * Implement requestNotificationPermission and return a resolved promise (although in practice it should never be called) --- src/vector/platform/ElectronPlatform.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 68df88b0..47bfd990 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -97,7 +97,10 @@ export default class ElectronPlatform extends VectorBasePlatform { room_id: room.roomId }); global.focus(); - electron.remote.getCurrentWindow().restore(); + const currentWin = electron.remote.getCurrentWindow(); + currentWin.show(); + currentWin.restore(); + currentWin.focus(); }; return notification; @@ -131,4 +134,8 @@ export default class ElectronPlatform extends VectorBasePlatform { screenCaptureErrorString() { return null; } + + requestNotificationPermission() : Promise { + return q('granted'); + } } From d11bcdad5fdd80c9eed34328a566fb707111b6b6 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 19 Jan 2017 14:29:07 +0000 Subject: [PATCH 181/243] Add electron tray icon From https://github.com/vector-im/riot-web/pull/2960 Makes riot minimise to the tray on windows / linux. --- electron/src/electron-main.js | 10 +++++- electron/src/tray.js | 67 +++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 electron/src/tray.js diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 929b7892..653dfd46 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -26,6 +26,8 @@ if (check_squirrel_hooks()) return; const electron = require('electron'); const url = require('url'); +const tray = require('./tray'); + const VectorMenu = require('./vectormenu'); let vectorConfig = {}; @@ -180,6 +182,12 @@ electron.app.on('ready', () => { mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`); electron.Menu.setApplicationMenu(VectorMenu); + // Create trayIcon icon + tray.create(mainWindow, { + icon_path: icon_path, + brand: vectorConfig.brand || 'Riot' + }); + mainWindow.once('ready-to-show', () => { mainWindow.show(); }); @@ -187,7 +195,7 @@ electron.app.on('ready', () => { mainWindow = null; }); mainWindow.on('close', (e) => { - if (process.platform == 'darwin' && !appQuitting) { + if (!appQuitting && (tray.hasTray() || process.platform == 'darwin')) { // On Mac, closing the window just hides it // (this is generally how single-window Mac apps // behave, eg. Mail.app) diff --git a/electron/src/tray.js b/electron/src/tray.js new file mode 100644 index 00000000..2ccdf40c --- /dev/null +++ b/electron/src/tray.js @@ -0,0 +1,67 @@ +/* +Copyright 2017 Karl Glatz <karl@glatz.biz> +Copyright 2017 OpenMarket 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. +*/ + +const path = require('path'); +const electron = require('electron'); + +const app = electron.app; +const Tray = electron.Tray; +const MenuItem = electron.MenuItem; + +let trayIcon = null; + +exports.hasTray = function hasTray() { + return (trayIcon !== null); +} + +exports.create = function (win, config) { + // no trays on darwin + if (process.platform === 'darwin' || trayIcon) { + return; + } + + const toggleWin = function () { + if (win.isVisible() && !win.isMinimized()) { + win.hide(); + } else { + if (win.isMinimized()) win.restore(); + if (!win.isVisible()) win.show(); + win.focus(); + } + }; + + const contextMenu = electron.Menu.buildFromTemplate([ + { + label: 'Show/Hide ' + config.brand, + click: toggleWin + }, + { + type: 'separator' + }, + { + label: 'Quit', + click: function () { + app.quit(); + } + } + ]); + + trayIcon = new Tray(config.icon_path); + trayIcon.setToolTip(config.brand); + trayIcon.setContextMenu(contextMenu); + trayIcon.on('click', toggleWin); +}; From 608c1b02081a75617a9d9a9ed483a962c7f0940a Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 19 Jan 2017 15:03:47 +0000 Subject: [PATCH 182/243] Finish implementing consume() - Fetches all logs in order and concatenates correctly. - Purges old logs correctly. --- src/vector/index.js | 1 + src/vector/rageshake.js | 133 ++++++++++++++++++++++++++++++++++------ 2 files changed, 116 insertions(+), 18 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index b965f01d..d773db85 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -39,6 +39,7 @@ require('draft-js/dist/Draft.css'); const rageshake = require("./rageshake"); rageshake.init().then(() => { console.log("Initialised rageshake"); + rageshake.sendBugReport(); }, (err) => { console.error("Failed to initialise rageshake: " + err); }); diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 65462d15..6093515d 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -166,24 +166,120 @@ class IndexedDBLogStore { */ consume(clearAll) { const MAX_LOG_SIZE = 1024 * 1024 * 50; // 50 MB - // To gather all the logs, we first query for every log entry with index "0", this will let us - // know all the IDs from different tabs/sessions. - const txn = this.db.transaction("logs", "readonly"); - const objectStore = txn.objectStore("logs"); - return selectQuery(objectStore.index("index"), IDBKeyRange.only(0), (cursor) => cursor.value.id).then((res) => { - console.log("Instances: ", res); + const db = this.db; + + // Returns: a string representing the concatenated logs for this ID. + function fetchLogs(id) { + const o = db.transaction("logs", "readonly").objectStore("logs"); + return selectQuery(o.index("id"), IDBKeyRange.only(id), (cursor) => { + return { + lines: cursor.value.lines, + index: cursor.value.index, + } + }).then((linesArray) => { + // We have been storing logs periodically, so string them all together *in order of index* now + linesArray.sort((a, b) => { + return a.index - b.index; + }) + return linesArray.map((l) => l.lines).join(""); + }); + } + + // Returns: A sorted array of log IDs. (newest first) + function fetchLogIds() { + // To gather all the log IDs, query for every log entry with index "0", this will let us + // know all the IDs from different tabs/sessions. + const o = db.transaction("logs", "readonly").objectStore("logs"); + return selectQuery(o.index("index"), IDBKeyRange.only(0), (cursor) => cursor.value.id).then((res) => { + // we know each entry has a unique ID, and we know IDs are timestamps, so accumulate all the IDs, + // ignoring the logs for now, and sort them to work out the correct log ID ordering, newest first. + // E.g. [ "instance-1484827160051", "instance-1374827160051", "instance-1000007160051"] + return res.sort().reverse(); + }); + } + + function deleteLogs(id) { + return new Promise((resolve, reject) => { + const txn = db.transaction("logs", "readwrite"); + const o = txn.objectStore("logs"); + // only load the key path, not the data which may be huge + const query = o.index("id").openKeyCursor(IDBKeyRange.only(id)); + query.onsuccess = (event) => { + const cursor = event.target.result; + if (!cursor) { + return; + } + o.delete(cursor.primaryKey); + cursor.continue(); + } + txn.oncomplete = () => { + resolve(); + }; + txn.onerror = (event) => { + reject(new Error(`Failed to delete logs for '${id}' : ${event.target.errorCode}`)); + } + }); + } + + // Ideally we'd just use coroutines and a for loop but riot-web doesn't support async/await so instead + // recursively fetch logs up to the given threshold. We can't cheat and fetch all the logs + // from all time, but we may OOM if we do so. + // Returns: Promise<Object[]> : Each object having 'id' and 'lines'. Same ordering as logIds. + function fetchLogsToThreshold(logIds, threshold, logs) { + // Base case: check log size and return if bigger than threshold + let size = 0; + logs.forEach((l) => { + size += l.lines.length; + }); + if (size > threshold) { + return Promise.resolve(logs); + } + + // fetch logs for the first element + let logId = logIds.shift(); + if (!logId) { + // no more entries + return Promise.resolve(logs); + } + return fetchLogs(logId).then((lines) => { + // add result to logs + logs.push({ + lines: lines, + id: logId, + }); + // recurse with the next log ID. TODO: Stack overflow risk? + return fetchLogsToThreshold(logIds, threshold, logs); + }) + } + + let allLogIds = []; + return fetchLogIds().then((logIds) => { + allLogIds = logIds.map((id) => id); // deep copy array as we'll modify it when fetching logs + return fetchLogsToThreshold(logIds, MAX_LOG_SIZE, []); + }).then((logs) => { + // Remove all logs that are beyond the threshold (not in logs), or the entire logs if clearAll was set. + let removeLogIds = allLogIds; + if (!clearAll) { + removeLogIds = removeLogIds.filter((id) => { + for (let i = 0; i < logs.length; i++) { + if (logs[i].id === id) { + return false; // do not remove logs that we're about to return to the caller. + } + } + return true; + }); + } + if (removeLogIds.length > 0) { + console.log("Removing logs: ", removeLogIds); + // Don't promise chain this because it's non-fatal if we can't clean up logs. + Promise.all(removeLogIds.map((id) => deleteLogs(id))).then(() => { + console.log(`Removed ${removeLogIds.length} old logs.`); + }, (err) => { + console.error(err); + }) + } + return logs; }); - - // we know each entry has a unique ID, and we know IDs are timestamps, so accumulate all the IDs, - // ignoring the logs for now, and sort them to work out the correct log ID ordering. - - // Starting with the most recent ID, fetch the logs (all indices) for said ID and accumulate them - // in order. After fetching ALL the logs for an ID, recheck the total length of the logs to work out - // if we have exceeded the max size cutoff for "recent" logs. - - // Remove all logs that are older than the cutoff (or the entire logs if clearAll is set). - - // Return the logs that are within the cutoff. } _generateLogEntry(lines) { @@ -258,8 +354,9 @@ module.exports = { * @return {Promise} Resolved when the bug report is sent. */ sendBugReport: function(userText) { - return store.consume(true).then((data) => { + return store.consume(false).then((logs) => { // Send logs grouped by ID + console.log(logs); }); } }; From 61c5253dbf41fed7deec32d445bfa3c222833a7a Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 19 Jan 2017 15:40:54 +0000 Subject: [PATCH 183/243] Give the 'Light' theme link a title too ... mostly to make it appear on the Firefox style menu. --- src/vector/index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vector/index.html b/src/vector/index.html index a6c3092d..3ab667cc 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -22,11 +22,13 @@ <meta name="theme-color" content="#ffffff"> <% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) { var file = htmlWebpackPlugin.files.css[i]; - var match = file.match(/^bundles\/.*?\/theme-((?!light\.).*)\.css$/); + var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/); if (match) { var title = match[1].charAt(0).toUpperCase() + match[1].slice(1); + var light = match[1] == 'light'; %> - <link rel="alternate stylesheet" title="<%= title %>" href="<%= file %>"> + <link rel="<%= light ? '' : 'alternate ' %>stylesheet" title="<%= title %>" + href="<%= file %>"> <% } else { %> <link rel="stylesheet" href="<%= file %>"> <% } From 81d437ac1e16104f32fef3c0d694a215fb7129a5 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 19 Jan 2017 15:47:55 +0000 Subject: [PATCH 184/243] POST reports to localhost for now. Also send live console logs --- src/vector/index.js | 2 +- src/vector/rageshake.js | 75 +++++++++++++++++++++++++++++++++++------ 2 files changed, 66 insertions(+), 11 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index d773db85..d1d457e9 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -39,7 +39,7 @@ require('draft-js/dist/Draft.css'); const rageshake = require("./rageshake"); rageshake.init().then(() => { console.log("Initialised rageshake"); - rageshake.sendBugReport(); + rageshake.cleanup(); }, (err) => { console.error("Failed to initialise rageshake: " + err); }); diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 6093515d..1f3dbc7d 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +import request from "browser-request"; + // This module contains all the code needed to log the console, persist it to disk and submit bug reports. Rationale is as follows: // - Monkey-patching the console is preferable to having a log library because we can catch logs by other libraries more easily, // without having to all depend on the same log framework / pass the logger around. @@ -321,20 +323,27 @@ function selectQuery(store, keyRange, resultMapper) { let store = null; -let inited = false; +let logger = null; +let initPromise = null; module.exports = { /** * Configure rage shaking support for sending bug reports. * Modifies globals. + * @return {Promise} Resolves when set up. */ init: function() { - if (inited || !window.indexedDB) { - return; + if (initPromise) { + return initPromise; } - store = new IndexedDBLogStore(window.indexedDB, new ConsoleLogger()); - inited = true; - return store.connect(); + logger = new ConsoleLogger(); + if (window.indexedDB) { + store = new IndexedDBLogStore(window.indexedDB, logger); + initPromise = store.connect(); + return initPromise; + } + initPromise = Promise.resolve(); + return initPromise; }, /** @@ -343,20 +352,66 @@ module.exports = { */ flush: function() { if (!store) { - return; + return Promise.resolve(); } return store.flush(); }, + /** + * Clean up old logs. + * @return Promise Resolves if cleaned logs. + */ + cleanup: function() { + if (!store) { + return Promise.resolve(); + } + return store.consume(false); + }, + /** * Send a bug report. * @param {string} userText Any additional user input. * @return {Promise} Resolved when the bug report is sent. */ sendBugReport: function(userText) { - return store.consume(false).then((logs) => { - // Send logs grouped by ID - console.log(logs); + if (!logger) { + return Promise.reject(new Error("No console logger, did you forget to call init()?")); + } + // If in incognito mode, store is null, but we still want bug report sending to work going off + // the in-memory console logs. + let promise = Promise.resolve([]); + if (store) { + promise = store.consume(false); // TODO Swap to true to remove all logs + } + return promise.then((logs) => { + // and add the most recent console logs which won't be in the store yet. + const consoleLogs = logger.flush(); // remove logs from console + const currentId = store ? store.id : "-"; + logs.unshift({ + lines: consoleLogs, + id: currentId, + }); + return new Promise((resolve, reject) => { + request({ + method: "POST", + url: "http://localhost:1337", + body: { + logs: logs, + text: userText || "User did not supply any additional text.", + }, + json: true, + }, (err, res) => { + if (err) { + reject(err); + return; + } + if (res.status < 200 || res.status >= 400) { + reject(new Error(`HTTP ${res.status}`)); + return; + } + resolve(); + }) + }); }); } }; From 789c7b60cc238d4b264d444e8e911a60d82c7b50 Mon Sep 17 00:00:00 2001 From: lukebarnard <luke.barnard99@gmail.com> Date: Thu, 19 Jan 2017 16:51:41 +0100 Subject: [PATCH 185/243] CSS for avatars that appear when users are typing --- .../structures/_RoomStatusBar.scss | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss index 5daac88f..12cecffe 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss @@ -40,12 +40,12 @@ limitations under the License. opacity: 0.5; position: relative; top: -4px; -/* +/* animation-duration: 1s; animation-name: bounce; animation-direction: alternate; animation-iteration-count: infinite; -*/ +*/ } .mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { @@ -70,6 +70,29 @@ limitations under the License. } } +.mx_RoomStatusBar_typingIndicatorAvatars { + width: 24px; + text-align: left; +} + +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar { + margin-right: -12px; +} + +.mx_RoomStatusBar_typingIndicatorRemaining { + display: inline-block; + color: #acacac; + background-color: #ddd; + border-radius: 40px; + width: 24px; + height: 24px; + line-height: 24px; + font-size: 0.8em; + vertical-align: top; + text-align: center; + position: absolute; +} + .mx_RoomStatusBar_scrollDownIndicator { cursor: pointer; } From 537194608e34676450fa916a98d8a099a89af161 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 19 Jan 2017 16:01:37 +0000 Subject: [PATCH 186/243] Make riot desktop single instance So launching a new instance will focus the old one, meaning that if you have Riot minimised to the tray and launch it via the desktop shortcut / start menu, you don't end up with more & more copies of the app. This doesn't really prevent you from running multiple copies of the app to fake multi account support since they share a data directory anyway. --- electron/src/electron-main.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 929b7892..1a6ea692 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -159,6 +159,19 @@ electron.ipcMain.on('install_update', installUpdate); electron.app.commandLine.appendSwitch('--enable-usermedia-screen-capturing'); +const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirectory) => { + // Someone tried to run a second instance, we should focus our window. + if (mainWindow) { + if (!mainWindow.isVisible()) mainWindow.show(); + if (mainWindow.isMinimized()) mainWindow.restore(); + mainWindow.focus(); + } +}); + +if (shouldQuit) { + electron.app.quit() +} + electron.app.on('ready', () => { if (vectorConfig.update_base_url) { console.log("Starting auto update with base URL: " + vectorConfig.update_base_url); From f5d7f3ca9f77f491f93a5573e916463bfb2d5634 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 19 Jan 2017 16:21:43 +0000 Subject: [PATCH 187/243] Add StartupWMClass so GNOME doesn't get confused by the hidden windows --- package.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 84e05478..b7b69d0c 100644 --- a/package.json +++ b/package.json @@ -146,7 +146,10 @@ ], "linux": { "target": "deb", - "maintainer": "support@riot.im" + "maintainer": "support@riot.im", + "desktop": { + "StartupWMClass": "riot-web" + } }, "win": { "target": "squirrel" From bf887e82fec360a237bb1262ed4426311b5f7b18 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 19 Jan 2017 16:40:54 +0000 Subject: [PATCH 188/243] Swap to async/await rather than promise chains Since we do in fact support coroutines! --- src/vector/rageshake.js | 161 ++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 96 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 1f3dbc7d..299a8497 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -166,7 +166,7 @@ class IndexedDBLogStore { * when the log file was created (the log ID). The objects have said log ID in an "id" field and "lines" which is a * big string with all the new-line delimited logs. */ - consume(clearAll) { + async consume(clearAll) { const MAX_LOG_SIZE = 1024 * 1024 * 50; // 50 MB const db = this.db; @@ -223,65 +223,36 @@ class IndexedDBLogStore { }); } - // Ideally we'd just use coroutines and a for loop but riot-web doesn't support async/await so instead - // recursively fetch logs up to the given threshold. We can't cheat and fetch all the logs - // from all time, but we may OOM if we do so. - // Returns: Promise<Object[]> : Each object having 'id' and 'lines'. Same ordering as logIds. - function fetchLogsToThreshold(logIds, threshold, logs) { - // Base case: check log size and return if bigger than threshold - let size = 0; - logs.forEach((l) => { - size += l.lines.length; + let allLogIds = await fetchLogIds(); + let removeLogIds = []; + let logs = []; + let size = 0; + for (let i = 0; i < allLogIds.length; i++) { + let lines = await fetchLogs(allLogIds[i]); + logs.push({ + lines: lines, + id: allLogIds[i], }); - if (size > threshold) { - return Promise.resolve(logs); + size += lines.length; + if (size > MAX_LOG_SIZE) { + // the remaining log IDs should be removed. If we go out of bounds this is just [] + removeLogIds = allLogIds.slice(i + 1); + break; } - - // fetch logs for the first element - let logId = logIds.shift(); - if (!logId) { - // no more entries - return Promise.resolve(logs); - } - return fetchLogs(logId).then((lines) => { - // add result to logs - logs.push({ - lines: lines, - id: logId, - }); - // recurse with the next log ID. TODO: Stack overflow risk? - return fetchLogsToThreshold(logIds, threshold, logs); - }) } - - let allLogIds = []; - return fetchLogIds().then((logIds) => { - allLogIds = logIds.map((id) => id); // deep copy array as we'll modify it when fetching logs - return fetchLogsToThreshold(logIds, MAX_LOG_SIZE, []); - }).then((logs) => { - // Remove all logs that are beyond the threshold (not in logs), or the entire logs if clearAll was set. - let removeLogIds = allLogIds; - if (!clearAll) { - removeLogIds = removeLogIds.filter((id) => { - for (let i = 0; i < logs.length; i++) { - if (logs[i].id === id) { - return false; // do not remove logs that we're about to return to the caller. - } - } - return true; - }); - } - if (removeLogIds.length > 0) { - console.log("Removing logs: ", removeLogIds); - // Don't promise chain this because it's non-fatal if we can't clean up logs. - Promise.all(removeLogIds.map((id) => deleteLogs(id))).then(() => { - console.log(`Removed ${removeLogIds.length} old logs.`); - }, (err) => { - console.error(err); - }) - } - return logs; - }); + if (clearAll) { + removeLogIds = allLogIds; + } + if (removeLogIds.length > 0) { + console.log("Removing logs: ", removeLogIds); + // Don't await this because it's non-fatal if we can't clean up logs. + Promise.all(removeLogIds.map((id) => deleteLogs(id))).then(() => { + console.log(`Removed ${removeLogIds.length} old logs.`); + }, (err) => { + console.error(err); + }) + }console.log("async consumeeeee"); + return logs; } _generateLogEntry(lines) { @@ -350,22 +321,22 @@ module.exports = { * Force-flush the logs to storage. * @return {Promise} Resolved when the logs have been flushed. */ - flush: function() { + flush: async function() { if (!store) { - return Promise.resolve(); + return; } - return store.flush(); + await store.flush(); }, /** * Clean up old logs. * @return Promise Resolves if cleaned logs. */ - cleanup: function() { + cleanup: async function() { if (!store) { - return Promise.resolve(); + return; } - return store.consume(false); + await store.consume(false); }, /** @@ -373,45 +344,43 @@ module.exports = { * @param {string} userText Any additional user input. * @return {Promise} Resolved when the bug report is sent. */ - sendBugReport: function(userText) { + sendBugReport: async function(userText) { if (!logger) { - return Promise.reject(new Error("No console logger, did you forget to call init()?")); + throw new Error("No console logger, did you forget to call init()?"); } // If in incognito mode, store is null, but we still want bug report sending to work going off // the in-memory console logs. - let promise = Promise.resolve([]); + let logs = []; if (store) { - promise = store.consume(false); // TODO Swap to true to remove all logs + logs = await store.consume(false); } - return promise.then((logs) => { - // and add the most recent console logs which won't be in the store yet. - const consoleLogs = logger.flush(); // remove logs from console - const currentId = store ? store.id : "-"; - logs.unshift({ - lines: consoleLogs, - id: currentId, - }); - return new Promise((resolve, reject) => { - request({ - method: "POST", - url: "http://localhost:1337", - body: { - logs: logs, - text: userText || "User did not supply any additional text.", - }, - json: true, - }, (err, res) => { - if (err) { - reject(err); - return; - } - if (res.status < 200 || res.status >= 400) { - reject(new Error(`HTTP ${res.status}`)); - return; - } - resolve(); - }) - }); + // and add the most recent console logs which won't be in the store yet. + const consoleLogs = logger.flush(); // remove logs from console + const currentId = store ? store.id : "-"; + logs.unshift({ + lines: consoleLogs, + id: currentId, + }); + await new Promise((resolve, reject) => { + request({ + method: "POST", + url: "http://localhost:1337", + body: { + logs: logs, + text: userText || "User did not supply any additional text.", + }, + json: true, + }, (err, res) => { + if (err) { + reject(err); + return; + } + if (res.status < 200 || res.status >= 400) { + reject(new Error(`HTTP ${res.status}`)); + return; + } + resolve(); + }) }); } }; From 3996d23b1996434723335ed0c3be423ba7298561 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 19 Jan 2017 16:49:25 +0000 Subject: [PATCH 189/243] Inject bug report endpoint URL from config.json --- config.sample.json | 1 + src/vector/index.js | 1 + src/vector/rageshake.js | 12 ++++++++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/config.sample.json b/config.sample.json index e6384221..a65646ac 100644 --- a/config.sample.json +++ b/config.sample.json @@ -4,6 +4,7 @@ "brand": "Riot", "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", + "bug_report_endpoint_url": "https://vector.im/bugs", "enableLabs": true, "roomDirectory": { "servers": [ diff --git a/src/vector/index.js b/src/vector/index.js index d1d457e9..d1d85e06 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -241,6 +241,7 @@ async function loadApp() { let configError; try { configJson = await getConfig(); + rageshake.setBugReportEndpoint(configJson.bug_report_endpoint_url); } catch (e) { configError = e; } diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 299a8497..3fb9efdc 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -251,7 +251,7 @@ class IndexedDBLogStore { }, (err) => { console.error(err); }) - }console.log("async consumeeeee"); + } return logs; } @@ -296,6 +296,7 @@ function selectQuery(store, keyRange, resultMapper) { let store = null; let logger = null; let initPromise = null; +let bugReportEndpoint = null; module.exports = { /** @@ -339,6 +340,10 @@ module.exports = { await store.consume(false); }, + setBugReportEndpoint: function(url) { + bugReportEndpoint = url; + }, + /** * Send a bug report. * @param {string} userText Any additional user input. @@ -348,6 +353,9 @@ module.exports = { if (!logger) { throw new Error("No console logger, did you forget to call init()?"); } + if (!bugReportEndpoint) { + throw new Error("No bug report endpoint has been set."); + } // If in incognito mode, store is null, but we still want bug report sending to work going off // the in-memory console logs. let logs = []; @@ -364,7 +372,7 @@ module.exports = { await new Promise((resolve, reject) => { request({ method: "POST", - url: "http://localhost:1337", + url: bugReportEndpoint, body: { logs: logs, text: userText || "User did not supply any additional text.", From 36450764f3a341e3b07843af6e6975d494a9a374 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 19 Jan 2017 16:58:55 +0000 Subject: [PATCH 190/243] rethemendex fixes - set cwd before doing cwd-specific operations - don't include 'themes' directory, otherwise it's a bit circular. --- src/skins/vector/css/_components.scss | 1 - src/skins/vector/css/rethemendex.sh | 15 ++++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 88435236..880c1054 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -49,7 +49,6 @@ @import "./matrix-react-sdk/views/voip/_CallView.scss"; @import "./matrix-react-sdk/views/voip/_IncomingCallbox.scss"; @import "./matrix-react-sdk/views/voip/_VideoView.scss"; -@import "./themes/_base.scss"; @import "./vector-web/_fonts.scss"; @import "./vector-web/structures/_CompatibilityPage.scss"; @import "./vector-web/structures/_LeftPanel.scss"; diff --git a/src/skins/vector/css/rethemendex.sh b/src/skins/vector/css/rethemendex.sh index 9381c5cd..a7d9a657 100755 --- a/src/skins/vector/css/rethemendex.sh +++ b/src/skins/vector/css/rethemendex.sh @@ -1,8 +1,13 @@ #!/bin/bash -echo "// autogenerated by rethemendex.sh" > _components.scss +cd `dirname $0` -for i in `find . -iname _\*.scss | fgrep -v _components.scss | sort`; -do - echo "@import \"$i\";" >> _components.scss -done +{ + echo "// autogenerated by rethemendex.sh" + + find . \! \( -path ./themes -prune \) -iname _\*.scss | + fgrep -v _components.scss | LC_ALL=C sort | + while read i; do + echo "@import \"$i\";" + done +} > _components.scss From beba4d2ae36c4499e99a27258fb58b9a8e6e12b7 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 19 Jan 2017 17:40:21 +0000 Subject: [PATCH 191/243] Add version and user agent to bug report --- src/vector/rageshake.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 3fb9efdc..e3cc6661 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; import request from "browser-request"; // This module contains all the code needed to log the console, persist it to disk and submit bug reports. Rationale is as follows: @@ -356,6 +357,18 @@ module.exports = { if (!bugReportEndpoint) { throw new Error("No bug report endpoint has been set."); } + + let version = "UNKNOWN"; + try { + version = await PlatformPeg.get().getAppVersion(); + } + catch (err) {} // PlatformPeg already logs this. + + let userAgent = "UNKNOWN"; + if (window.navigator && window.navigator.userAgent) { + userAgent = window.navigator.userAgent; + } + // If in incognito mode, store is null, but we still want bug report sending to work going off // the in-memory console logs. let logs = []; @@ -376,6 +389,8 @@ module.exports = { body: { logs: logs, text: userText || "User did not supply any additional text.", + version: version, + user_agent: userAgent, }, json: true, }, (err, res) => { From 53a16158c75ff0b938b2383ad91829c9d23c891a Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 19 Jan 2017 17:41:08 +0000 Subject: [PATCH 192/243] Remove logs when submitting bug reports --- src/vector/rageshake.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index e3cc6661..2b4d0b7d 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -373,7 +373,7 @@ module.exports = { // the in-memory console logs. let logs = []; if (store) { - logs = await store.consume(false); + logs = await store.consume(true); } // and add the most recent console logs which won't be in the store yet. const consoleLogs = logger.flush(); // remove logs from console From 8ad0ff24f8f5422a6c15f7744227a241d789aee8 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 19 Jan 2017 18:35:43 +0000 Subject: [PATCH 193/243] Fix link to image for event options menu This has to be relative, because we don't know if riot is going to be mounted at the top-level of the domain or not (it's not, on riot.im). Links are relative to the final location of the CSS, which is under bundles/<hash>, so need ../.. --- src/skins/vector/css/themes/_base.scss | 2 +- src/skins/vector/css/themes/_dark.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index ad18eb49..476cf7e0 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -88,7 +88,7 @@ $event-notsent-color: #f44; // event timestamp $event-timestamp-color: #acacac; -$edit-button-url: "/img/icon_context_message.svg"; +$edit-button-url: "../../img/icon_context_message.svg"; // e2e $e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index e3e32e84..0f3b77f5 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -88,7 +88,7 @@ $event-notsent-color: #f44; // event timestamp $event-timestamp-color: #acacac; -$edit-button-url: "/img/icon_context_message_dark.svg"; +$edit-button-url: "../../img/icon_context_message_dark.svg"; // e2e $e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color From fa535996ae6c979522252f2540c656f09576ebc9 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 20 Jan 2017 02:22:11 +0000 Subject: [PATCH 194/243] fix textarea bg --- src/skins/vector/css/_common.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 94362a2f..bf31bea6 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -55,7 +55,7 @@ a:visited { color: $accent-color; } -input[type=text], input[type=password] { +input[type=text], input[type=password], textarea { background-color: transparent; color: $primary-fg-color; } From 4d8f5d4df1c3bb0ef27b53842f3ed1755e9039d8 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 20 Jan 2017 02:29:56 +0000 Subject: [PATCH 195/243] change selection color & fix MD bg --- .../vector/css/matrix-react-sdk/views/rooms/_EventTile.scss | 4 ++++ src/skins/vector/css/themes/_dark.scss | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index b79db919..29170a83 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -294,6 +294,10 @@ limitations under the License. overflow-y: visible; } +.mx_EventTile_content .markdown-body code { + background-color: #f8f8f8; +} + .mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2, .mx_EventTile_content .markdown-body h3, diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 0f3b77f5..03913ca2 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -73,7 +73,7 @@ $voip-accept-color: #80f480; // ******************** $roomtile-name-color: rgba(186, 186, 186, 0.8); -$roomtile-selected-bg-color: rgba(0, 0, 0, 0.8); +$roomtile-selected-bg-color: rgba(255, 255, 255, 0.05); $roomsublist-label-fg-color: $h3-color; $roomsublist-label-bg-color: #454545; From 9b70e2e25f3442374a1fbaeaedf25b29b2ce0539 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 20 Jan 2017 02:34:45 +0000 Subject: [PATCH 196/243] fix RTE bg color --- .../vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss index 9265d4dc..062dd0ba 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Autocomplete.scss @@ -4,7 +4,7 @@ z-index: 1000; width: 100%; border: 1px solid $primary-hairline-color; - background: white; + background: $primary-bg-color; border-bottom: none; border-radius: 4px 4px 0 0; max-height: 50vh; From ea860807c4fef075767e06aa19c33fd97f702846 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Fri, 20 Jan 2017 11:56:11 +0000 Subject: [PATCH 197/243] Add a monkeyPatch function rather than monkey-patching in the constructor --- src/vector/rageshake.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 2b4d0b7d..e12ee329 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -36,7 +36,9 @@ const FLUSH_RATE_MS = 30 * 1000; class ConsoleLogger { constructor() { this.logs = ""; + } + monkeyPatch(consoleObj) { // Monkey-patch console logging const consoleFunctionsToLevels = { log: "I", @@ -46,8 +48,8 @@ class ConsoleLogger { }; Object.keys(consoleFunctionsToLevels).forEach((fnName) => { const level = consoleFunctionsToLevels[fnName]; - let originalFn = window.console[fnName].bind(window.console); - window.console[fnName] = (...args) => { + let originalFn = consoleObj[fnName].bind(consoleObj); + consoleObj[fnName] = (...args) => { this.log(level, ...args); originalFn(...args); } @@ -310,6 +312,7 @@ module.exports = { return initPromise; } logger = new ConsoleLogger(); + logger.monkeyPatch(window.console); if (window.indexedDB) { store = new IndexedDBLogStore(window.indexedDB, logger); initPromise = store.connect(); From ba1e166ac83ae0f6477d617705a3f333f8d4f74e Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Fri, 20 Jan 2017 12:02:48 +0000 Subject: [PATCH 198/243] Line length 80 like we're still in the 80s --- src/vector/rageshake.js | 133 ++++++++++++++++++++++++++-------------- 1 file changed, 87 insertions(+), 46 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index e12ee329..a3d39635 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -17,18 +17,26 @@ limitations under the License. import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; import request from "browser-request"; -// This module contains all the code needed to log the console, persist it to disk and submit bug reports. Rationale is as follows: -// - Monkey-patching the console is preferable to having a log library because we can catch logs by other libraries more easily, -// without having to all depend on the same log framework / pass the logger around. -// - We use IndexedDB to persists logs because it has generous disk space limits compared to local storage. IndexedDB does not work -// in incognito mode, in which case this module will not be able to write logs to disk. However, the logs will still be stored -// in-memory, so can still be submitted in a bug report should the user wish to: we can also store more logs in-memory than in -// local storage, which does work in incognito mode. We also need to handle the case where there are 2+ tabs. Each JS runtime -// generates a random string which serves as the "ID" for that tab/session. These IDs are stored along with the log lines. -// - Bug reports are sent as a POST over HTTPS: it purposefully does not use Matrix as bug reports may be made when Matrix is -// not responsive (which may be the cause of the bug). We send the most recent N MB of UTF-8 log data, starting with the most -// recent, which we know because the "ID"s are actually timestamps. We then purge the remaining logs. We also do this purge -// on startup to prevent logs from accumulating. +// This module contains all the code needed to log the console, persist it to +// disk and submit bug reports. Rationale is as follows: +// - Monkey-patching the console is preferable to having a log library because +// we can catch logs by other libraries more easily, without having to all +// depend on the same log framework / pass the logger around. +// - We use IndexedDB to persists logs because it has generous disk space +// limits compared to local storage. IndexedDB does not work in incognito +// mode, in which case this module will not be able to write logs to disk. +// However, the logs will still be stored in-memory, so can still be +// submitted in a bug report should the user wish to: we can also store more +// logs in-memory than in local storage, which does work in incognito mode. +// We also need to handle the case where there are 2+ tabs. Each JS runtime +// generates a random string which serves as the "ID" for that tab/session. +// These IDs are stored along with the log lines. +// - Bug reports are sent as a POST over HTTPS: it purposefully does not use +// Matrix as bug reports may be made when Matrix is not responsive (which may +// be the cause of the bug). We send the most recent N MB of UTF-8 log data, +// starting with the most recent, which we know because the "ID"s are +// actually timestamps. We then purge the remaining logs. We also do this +// purge on startup to prevent logs from accumulating. const FLUSH_RATE_MS = 30 * 1000; @@ -60,9 +68,10 @@ class ConsoleLogger { // We don't know what locale the user may be running so use ISO strings const ts = new Date().toISOString(); // Some browsers support string formatting which we're not doing here - // so the lines are a little more ugly but easy to implement / quick to run. + // so the lines are a little more ugly but easy to implement / quick to + // run. // Example line: - // 2017-01-18T11:23:53.214Z W Failed to set badge count: Error setting badge. Message: Too many badges requests in queue. + // 2017-01-18T11:23:53.214Z W Failed to set badge count const line = `${ts} ${level} ${args.join(' ')}\n`; // Using + really is the quickest way in JS // http://jsperf.com/concat-vs-plus-vs-join @@ -74,7 +83,8 @@ class ConsoleLogger { * @return {string} \n delimited log lines to flush. */ flush() { - // The ConsoleLogger doesn't care how these end up on disk, it just flushes them to the caller. + // The ConsoleLogger doesn't care how these end up on disk, it just + // flushes them to the caller. const logsToFlush = this.logs; this.logs = ""; return logsToFlush; @@ -105,7 +115,9 @@ class IndexedDBLogStore { }; req.onerror = (event) => { - const err = "Failed to open log database: " + event.target.errorCode; + const err = ( + "Failed to open log database: " + event.target.errorCode + ); console.error(err); reject(new Error(err)); }; @@ -117,8 +129,10 @@ class IndexedDBLogStore { keyPath: ["id", "index"] }); // Keys in the database look like: [ "instance-148938490", 0 ] - // Later on we need to query for everything with index=0, and query everything for an instance id. - // In order to do this, we need to set up indexes on both "id" and "index". + // Later on we need to query for everything with index=0, and + // query everything for an instance id. + // In order to do this, we need to set up indexes on both "id" + // and "index". objectStore.createIndex("index", "index", { unique: false }); objectStore.createIndex("id", "id", { unique: false }); @@ -151,23 +165,30 @@ class IndexedDBLogStore { resolve(); }; txn.onerror = (event) => { - console.error("Failed to flush logs : " + event.target.errorCode); - reject(new Error("Failed to write logs: " + event.target.errorCode)); + console.error( + "Failed to flush logs : " + event.target.errorCode + ); + reject( + new Error("Failed to write logs: " + event.target.errorCode) + ); } }); } /** - * Consume the most recent logs and return them. Older logs which are not returned are deleted at the same time, - * so this can be called at startup to do house-keeping to keep the logs from growing too large. + * Consume the most recent logs and return them. Older logs which are not + * returned are deleted at the same time, so this can be called at startup + * to do house-keeping to keep the logs from growing too large. * - * @param {boolean} clearAll True to clear the most recent logs returned in addition to the - * older logs. This is desirable when sending bug reports as we do not want to submit the - * same logs twice. This is not desirable when doing house-keeping at startup in case they - * want to submit a bug report later. - * @return {Promise<Object[]>} Resolves to an array of objects. The array is sorted in time (oldest first) based on - * when the log file was created (the log ID). The objects have said log ID in an "id" field and "lines" which is a - * big string with all the new-line delimited logs. + * @param {boolean} clearAll True to clear the most recent logs returned in + * addition to the older logs. This is desirable when sending bug reports as + * we do not want to submit the same logs twice. This is not desirable when + * doing house-keeping at startup in case they want to submit a bug report + * later. + * @return {Promise<Object[]>} Resolves to an array of objects. The array is + * sorted in time (oldest first) based on when the log file was created (the + * log ID). The objects have said log ID in an "id" field and "lines" which + * is a big string with all the new-line delimited logs. */ async consume(clearAll) { const MAX_LOG_SIZE = 1024 * 1024 * 50; // 50 MB @@ -176,13 +197,15 @@ class IndexedDBLogStore { // Returns: a string representing the concatenated logs for this ID. function fetchLogs(id) { const o = db.transaction("logs", "readonly").objectStore("logs"); - return selectQuery(o.index("id"), IDBKeyRange.only(id), (cursor) => { + return selectQuery(o.index("id"), IDBKeyRange.only(id), + (cursor) => { return { lines: cursor.value.lines, index: cursor.value.index, } }).then((linesArray) => { - // We have been storing logs periodically, so string them all together *in order of index* now + // We have been storing logs periodically, so string them all + // together *in order of index* now linesArray.sort((a, b) => { return a.index - b.index; }) @@ -192,13 +215,18 @@ class IndexedDBLogStore { // Returns: A sorted array of log IDs. (newest first) function fetchLogIds() { - // To gather all the log IDs, query for every log entry with index "0", this will let us - // know all the IDs from different tabs/sessions. + // To gather all the log IDs, query for every log entry with index + // "0", this will let us know all the IDs from different + // tabs/sessions. const o = db.transaction("logs", "readonly").objectStore("logs"); - return selectQuery(o.index("index"), IDBKeyRange.only(0), (cursor) => cursor.value.id).then((res) => { - // we know each entry has a unique ID, and we know IDs are timestamps, so accumulate all the IDs, - // ignoring the logs for now, and sort them to work out the correct log ID ordering, newest first. - // E.g. [ "instance-1484827160051", "instance-1374827160051", "instance-1000007160051"] + return selectQuery(o.index("index"), IDBKeyRange.only(0), + (cursor) => cursor.value.id).then((res) => { + // we know each entry has a unique ID, and we know IDs are + // timestamps, so accumulate all the IDs, ignoring the logs for + // now, and sort them to work out the correct log ID ordering, + // newest first. + // E.g. [ "instance-1484827160051", "instance-1374827160051", + // "instance-1000007160051"] return res.sort().reverse(); }); } @@ -221,7 +249,12 @@ class IndexedDBLogStore { resolve(); }; txn.onerror = (event) => { - reject(new Error(`Failed to delete logs for '${id}' : ${event.target.errorCode}`)); + reject( + new Error( + "Failed to delete logs for " + + `'${id}' : ${event.target.errorCode}` + ) + ); } }); } @@ -238,7 +271,8 @@ class IndexedDBLogStore { }); size += lines.length; if (size > MAX_LOG_SIZE) { - // the remaining log IDs should be removed. If we go out of bounds this is just [] + // the remaining log IDs should be removed. If we go out of + // bounds this is just [] removeLogIds = allLogIds.slice(i + 1); break; } @@ -248,7 +282,8 @@ class IndexedDBLogStore { } if (removeLogIds.length > 0) { console.log("Removing logs: ", removeLogIds); - // Don't await this because it's non-fatal if we can't clean up logs. + // Don't await this because it's non-fatal if we can't clean up + // logs. Promise.all(removeLogIds.map((id) => deleteLogs(id))).then(() => { console.log(`Removed ${removeLogIds.length} old logs.`); }, (err) => { @@ -271,9 +306,11 @@ class IndexedDBLogStore { * Helper method to collect results from a Cursor and promiseify it. * @param {ObjectStore|Index} store The store to perform openCursor on. * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor. - * @param {Function} resultMapper A function which is repeatedly called with a Cursor. + * @param {Function} resultMapper A function which is repeatedly called with a + * Cursor. * Return the data you want to keep. - * @return {Promise<T[]>} Resolves to an array of whatever you returned from resultMapper. + * @return {Promise<T[]>} Resolves to an array of whatever you returned from + * resultMapper. */ function selectQuery(store, keyRange, resultMapper) { const query = store.openCursor(keyRange); @@ -355,7 +392,9 @@ module.exports = { */ sendBugReport: async function(userText) { if (!logger) { - throw new Error("No console logger, did you forget to call init()?"); + throw new Error( + "No console logger, did you forget to call init()?" + ); } if (!bugReportEndpoint) { throw new Error("No bug report endpoint has been set."); @@ -372,8 +411,8 @@ module.exports = { userAgent = window.navigator.userAgent; } - // If in incognito mode, store is null, but we still want bug report sending to work going off - // the in-memory console logs. + // If in incognito mode, store is null, but we still want bug report + // sending to work going off the in-memory console logs. let logs = []; if (store) { logs = await store.consume(true); @@ -391,7 +430,9 @@ module.exports = { url: bugReportEndpoint, body: { logs: logs, - text: userText || "User did not supply any additional text.", + text: ( + userText || "User did not supply any additional text." + ), version: version, user_agent: userAgent, }, From 41c6294be2e3a6b23fad65771173819c74e35f6e Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Fri, 20 Jan 2017 13:02:57 +0000 Subject: [PATCH 199/243] Remove clearAll from consume(): we want duplicate logs on multiple reports --- src/vector/rageshake.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index a3d39635..a96b1f28 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -180,17 +180,12 @@ class IndexedDBLogStore { * returned are deleted at the same time, so this can be called at startup * to do house-keeping to keep the logs from growing too large. * - * @param {boolean} clearAll True to clear the most recent logs returned in - * addition to the older logs. This is desirable when sending bug reports as - * we do not want to submit the same logs twice. This is not desirable when - * doing house-keeping at startup in case they want to submit a bug report - * later. * @return {Promise<Object[]>} Resolves to an array of objects. The array is * sorted in time (oldest first) based on when the log file was created (the * log ID). The objects have said log ID in an "id" field and "lines" which * is a big string with all the new-line delimited logs. */ - async consume(clearAll) { + async consume() { const MAX_LOG_SIZE = 1024 * 1024 * 50; // 50 MB const db = this.db; @@ -277,9 +272,6 @@ class IndexedDBLogStore { break; } } - if (clearAll) { - removeLogIds = allLogIds; - } if (removeLogIds.length > 0) { console.log("Removing logs: ", removeLogIds); // Don't await this because it's non-fatal if we can't clean up @@ -378,7 +370,7 @@ module.exports = { if (!store) { return; } - await store.consume(false); + await store.consume(); }, setBugReportEndpoint: function(url) { @@ -415,7 +407,7 @@ module.exports = { // sending to work going off the in-memory console logs. let logs = []; if (store) { - logs = await store.consume(true); + logs = await store.consume(); } // and add the most recent console logs which won't be in the store yet. const consoleLogs = logger.flush(); // remove logs from console From 378126e746bd78088996a82024ea5c4204955b7c Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Fri, 20 Jan 2017 14:00:30 +0000 Subject: [PATCH 200/243] Add another store to keep last modified times This makes it easier to get a list of all the log IDs. It also makes it possible to order the logs by the *LAST* log line and not the first as was the case previously, which is important in the case of long-running tabs. --- src/vector/rageshake.js | 69 +++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index a96b1f28..f4fe4396 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -96,7 +96,7 @@ class IndexedDBLogStore { constructor(indexedDB, logger) { this.indexedDB = indexedDB; this.logger = logger; - this.id = "instance-" + Date.now(); + this.id = "instance-" + Math.random() + Date.now(); this.index = 0; this.db = null; } @@ -125,22 +125,24 @@ class IndexedDBLogStore { // First time: Setup the object store req.onupgradeneeded = (event) => { const db = event.target.result; - const objectStore = db.createObjectStore("logs", { + const logObjStore = db.createObjectStore("logs", { keyPath: ["id", "index"] }); // Keys in the database look like: [ "instance-148938490", 0 ] - // Later on we need to query for everything with index=0, and - // query everything for an instance id. - // In order to do this, we need to set up indexes on both "id" - // and "index". - objectStore.createIndex("index", "index", { unique: false }); - objectStore.createIndex("id", "id", { unique: false }); + // Later on we need to query everything based on an instance id. + // In order to do this, we need to set up indexes "id". + logObjStore.createIndex("id", "id", { unique: false }); - objectStore.add( + logObjStore.add( this._generateLogEntry( new Date() + " ::: Log database was created." ) ); + + const lastModifiedStore = db.createObjectStore("logslastmod", { + keyPath: "id", + }); + lastModifiedStore.add(this._generateLastModifiedTime()); } }); } @@ -158,15 +160,17 @@ class IndexedDBLogStore { return Promise.resolve(); } return new Promise((resolve, reject) => { - let txn = this.db.transaction("logs", "readwrite"); + let txn = this.db.transaction(["logs", "logslastmod"], "readwrite"); let objStore = txn.objectStore("logs"); objStore.add(this._generateLogEntry(lines)); + let lastModStore = txn.objectStore("logslastmod"); + lastModStore.put(this._generateLastModifiedTime()); txn.oncomplete = (event) => { resolve(); }; txn.onerror = (event) => { console.error( - "Failed to flush logs : " + event.target.errorCode + "Failed to flush logs : ", event ); reject( new Error("Failed to write logs: " + event.target.errorCode) @@ -210,25 +214,28 @@ class IndexedDBLogStore { // Returns: A sorted array of log IDs. (newest first) function fetchLogIds() { - // To gather all the log IDs, query for every log entry with index - // "0", this will let us know all the IDs from different - // tabs/sessions. - const o = db.transaction("logs", "readonly").objectStore("logs"); - return selectQuery(o.index("index"), IDBKeyRange.only(0), - (cursor) => cursor.value.id).then((res) => { - // we know each entry has a unique ID, and we know IDs are - // timestamps, so accumulate all the IDs, ignoring the logs for - // now, and sort them to work out the correct log ID ordering, - // newest first. - // E.g. [ "instance-1484827160051", "instance-1374827160051", - // "instance-1000007160051"] - return res.sort().reverse(); + // To gather all the log IDs, query for all records in logslastmod. + const o = db.transaction("logslastmod", "readonly").objectStore( + "logslastmod" + ); + return selectQuery(o, undefined, (cursor) => { + return { + id: cursor.value.id, + ts: cursor.value.ts, + }; + }).then((res) => { + // Sort IDs by timestamp (newest first) + return res.sort((a, b) => { + return b.ts - a.ts; + }).map((a) => a.id); }); } function deleteLogs(id) { return new Promise((resolve, reject) => { - const txn = db.transaction("logs", "readwrite"); + const txn = db.transaction( + ["logs", "logslastmod"], "readwrite" + ); const o = txn.objectStore("logs"); // only load the key path, not the data which may be huge const query = o.index("id").openKeyCursor(IDBKeyRange.only(id)); @@ -250,7 +257,10 @@ class IndexedDBLogStore { `'${id}' : ${event.target.errorCode}` ) ); - } + }; + // delete last modified entries + const lastModStore = txn.objectStore("logslastmod"); + lastModStore.delete(id); }); } @@ -292,6 +302,13 @@ class IndexedDBLogStore { index: this.index++ }; } + + _generateLastModifiedTime() { + return { + id: this.id, + ts: Date.now(), + }; + } } /** From ea063ab8b0b2ce6b2f1a5d36132757e0cb52f8ff Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Fri, 20 Jan 2017 14:46:19 +0000 Subject: [PATCH 201/243] Address race conditions when flushing logs --- src/vector/rageshake.js | 94 +++++++++++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 26 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index f4fe4396..7d1a93ef 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -99,6 +99,11 @@ class IndexedDBLogStore { this.id = "instance-" + Math.random() + Date.now(); this.index = 0; this.db = null; + // Promise is not null when a flush is IN PROGRESS + this.flushPromise = null; + // Promise is not null when flush() is called when one is already in + // progress. + this.flushAgainPromise = null; } /** @@ -148,35 +153,80 @@ class IndexedDBLogStore { } /** + * Flush logs to disk. + * + * There are guards to protect against race conditions in order to ensure + * that all previous flushes have completed before the most recent flush. + * Consider without guards: + * - A calls flush() periodically. + * - B calls flush() and wants to send logs immediately afterwards. + * - If B doesn't wait for A's flush to complete, B will be missing the + * contents of A's flush. + * To protect against this, we set 'flushPromise' when a flush is ongoing. + * Subsequent calls to flush() during this period return a new promise + * 'flushAgainPromise' which is chained off the current 'flushPromise'. + * Subsequent calls to flush() when the first flush hasn't completed will + * return the same 'flushAgainPromise' as we can guarantee that we WILL + * do a brand new flush at some point in the future. Once the first flush + * has completed, 'flushAgainPromise' becomes 'flushPromise' and can be + * chained again. + * + * This guarantees that we will always eventually do a flush when flush() is + * called. + * * @return {Promise} Resolved when the logs have been flushed. */ flush() { - if (!this.db) { - // not connected yet or user rejected access for us to r/w to the db - return Promise.reject(new Error("No connected database")); + if (this.flushPromise) { // a flush is ongoing + if (this.flushAgainPromise) { // a flush is queued up, return that. + return this.flushAgainPromise; + } + // queue up a new flush + this.flushAgainPromise = this.flushPromise.then(() => { + // the current flush has completed, so shuffle the promises + // around: + // flushAgainPromise => flushPromise and null flushAgainPromise. + // flushPromise has already nulled itself. + this.flushAgainPromise = null; + return this.flush(); + }); + return this.flushAgainPromise; } - const lines = this.logger.flush(); - if (lines.length === 0) { - return Promise.resolve(); - } - return new Promise((resolve, reject) => { + + this.flushPromise = new Promise((resolve, reject) => { + if (!this.db) { + // not connected yet or user rejected access for us to r/w to + // the db. + this.flushPromise = null; + reject(new Error("No connected database")); + return; + } + const lines = this.logger.flush(); + if (lines.length === 0) { + this.flushPromise = null; + resolve(); + return; + } let txn = this.db.transaction(["logs", "logslastmod"], "readwrite"); let objStore = txn.objectStore("logs"); objStore.add(this._generateLogEntry(lines)); let lastModStore = txn.objectStore("logslastmod"); lastModStore.put(this._generateLastModifiedTime()); txn.oncomplete = (event) => { + this.flushPromise = null; resolve(); }; txn.onerror = (event) => { console.error( "Failed to flush logs : ", event ); + this.flushPromise = null; reject( new Error("Failed to write logs: " + event.target.errorCode) ); } }); + return this.flushPromise; } /** @@ -368,17 +418,6 @@ module.exports = { return initPromise; }, - /** - * Force-flush the logs to storage. - * @return {Promise} Resolved when the logs have been flushed. - */ - flush: async function() { - if (!store) { - return; - } - await store.flush(); - }, - /** * Clean up old logs. * @return Promise Resolves if cleaned logs. @@ -422,17 +461,20 @@ module.exports = { // If in incognito mode, store is null, but we still want bug report // sending to work going off the in-memory console logs. + console.log("Sending bug report."); let logs = []; if (store) { + // flush most recent logs + await store.flush(); logs = await store.consume(); } - // and add the most recent console logs which won't be in the store yet. - const consoleLogs = logger.flush(); // remove logs from console - const currentId = store ? store.id : "-"; - logs.unshift({ - lines: consoleLogs, - id: currentId, - }); + else { + logs.push({ + lines: logger.flush(), + id: "-", + }); + } + await new Promise((resolve, reject) => { request({ method: "POST", From 956deca844505c75f03a1406a5ffd4532804cbde Mon Sep 17 00:00:00 2001 From: lukebarnard <luke.barnard99@gmail.com> Date: Fri, 20 Jan 2017 16:59:41 +0100 Subject: [PATCH 202/243] Add bg-color border to typing avatars --- .../css/matrix-react-sdk/structures/_RoomStatusBar.scss | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss index 12cecffe..b7bdeaa0 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss @@ -71,18 +71,20 @@ limitations under the License. } .mx_RoomStatusBar_typingIndicatorAvatars { - width: 24px; + width: 52px; text-align: left; } .mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar { margin-right: -12px; + border:1px solid $primary-bg-color; } .mx_RoomStatusBar_typingIndicatorRemaining { display: inline-block; color: #acacac; background-color: #ddd; + border:1px solid $primary-bg-color; border-radius: 40px; width: 24px; height: 24px; From 9ffedf5e7d8b0962c1b39038ecc8e59b5fc1459c Mon Sep 17 00:00:00 2001 From: lukebarnard <luke.barnard99@gmail.com> Date: Fri, 20 Jan 2017 17:00:59 +0100 Subject: [PATCH 203/243] space after colons --- .../css/matrix-react-sdk/structures/_RoomStatusBar.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss index b7bdeaa0..44e9d983 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss @@ -77,14 +77,14 @@ limitations under the License. .mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar { margin-right: -12px; - border:1px solid $primary-bg-color; + border: 1px solid $primary-bg-color; } .mx_RoomStatusBar_typingIndicatorRemaining { display: inline-block; color: #acacac; background-color: #ddd; - border:1px solid $primary-bg-color; + border: 1px solid $primary-bg-color; border-radius: 40px; width: 24px; height: 24px; From afcf9de8d47f463b83e9b40dcfb37c6f5de47215 Mon Sep 17 00:00:00 2001 From: lukebarnard <luke.barnard99@gmail.com> Date: Fri, 20 Jan 2017 17:35:01 +0100 Subject: [PATCH 204/243] Handle avatars with initials --- .../css/matrix-react-sdk/structures/_RoomStatusBar.scss | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss index 44e9d983..d3f1439d 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss @@ -75,11 +75,16 @@ limitations under the License. text-align: left; } -.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar { +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { margin-right: -12px; border: 1px solid $primary-bg-color; } +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { + padding-left: 1px; + padding-top: 1px; +} + .mx_RoomStatusBar_typingIndicatorRemaining { display: inline-block; color: #acacac; From a9c575b4d095872687969707878f215e23a7a261 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 20 Jan 2017 21:00:33 +0000 Subject: [PATCH 205/243] fix a bunch of dark-theme buttons --- src/skins/vector/css/themes/_dark.scss | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 03913ca2..776da282 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -101,4 +101,15 @@ $lightbox-fg-color: #ffffff; $lightbox-border-color: #ffffff; // unused? -$progressbar-color: #000; \ No newline at end of file +$progressbar-color: #000; + +// Nasty hacks to apply a filter to arbitrary monochrome artwork to make it +// better match the theme. Typically applied to dark grey 'off' buttons or +// light grey 'on' buttons. +.mx_filterFlipColor { + filter: invert(); +} + +.gm-scrollbar .thumb { + filter: invert(); +} \ No newline at end of file From 5b1fea46cb6a0c9ec45e01a41c7222069a390507 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 20 Jan 2017 21:09:49 +0000 Subject: [PATCH 206/243] fix badge color --- .../vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss index 286a709d..84f8ddde 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss @@ -171,7 +171,7 @@ limitations under the License. .mx_RoomTile.mx_RoomTile_noBadges .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_notificationStateMenu.mx_RoomTile_noBadges .mx_RoomTile_badge { - background-color: rgb(214, 214, 214); + background-color: $preview-widget-bar-color; } .mx_RoomTile_unreadNotify .mx_RoomTile_badge { From 83272f5cc58fa4a3efc5a8423642d1f4cb6886a1 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 20 Jan 2017 21:11:28 +0000 Subject: [PATCH 207/243] fix badge color again --- .../vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss | 2 +- src/skins/vector/css/themes/_base.scss | 2 ++ src/skins/vector/css/themes/_dark.scss | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss index 84f8ddde..5ca4ac17 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomTile.scss @@ -171,7 +171,7 @@ limitations under the License. .mx_RoomTile.mx_RoomTile_noBadges .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_notificationStateMenu.mx_RoomTile_noBadges .mx_RoomTile_badge { - background-color: $preview-widget-bar-color; + background-color: $neutral-badge-color; } .mx_RoomTile_unreadNotify .mx_RoomTile_badge { diff --git a/src/skins/vector/css/themes/_base.scss b/src/skins/vector/css/themes/_base.scss index 476cf7e0..db921034 100644 --- a/src/skins/vector/css/themes/_base.scss +++ b/src/skins/vector/css/themes/_base.scss @@ -59,6 +59,8 @@ $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; diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 776da282..4902724f 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -59,6 +59,8 @@ $lightbox-background-bg-color: #000; $greyed-fg-color: #888; +$neutral-badge-color: #888; + $preview-widget-bar-color: $menu-bg-color; $preview-widget-fg-color: $greyed-fg-color; From ef519231d63f1aa765e0f1cd9ea78bb4591253b0 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 20 Jan 2017 21:16:58 +0000 Subject: [PATCH 208/243] fix mute button colors --- .../views/context_menus/NotificationStateContextMenu.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/views/context_menus/NotificationStateContextMenu.js b/src/components/views/context_menus/NotificationStateContextMenu.js index 243275db..d4b40d17 100644 --- a/src/components/views/context_menus/NotificationStateContextMenu.js +++ b/src/components/views/context_menus/NotificationStateContextMenu.js @@ -120,22 +120,22 @@ module.exports = React.createClass({ </div> <div className={ alertMeClasses } onClick={this._onClickAlertMe} > <img className="mx_NotificationStateContextMenu_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_NotificationStateContextMenu_icon" src="img/icon-context-mute-off-copy.svg" width="16" height="12" /> + <img className="mx_NotificationStateContextMenu_icon mx_filterFlipColor" src="img/icon-context-mute-off-copy.svg" width="16" height="12" /> All messages (loud) </div> <div className={ allNotifsClasses } onClick={this._onClickAllNotifs} > <img className="mx_NotificationStateContextMenu_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_NotificationStateContextMenu_icon" src="img/icon-context-mute-off.svg" width="16" height="12" /> + <img className="mx_NotificationStateContextMenu_icon mx_filterFlipColor" src="img/icon-context-mute-off.svg" width="16" height="12" /> All messages </div> <div className={ mentionsClasses } onClick={this._onClickMentions} > <img className="mx_NotificationStateContextMenu_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_NotificationStateContextMenu_icon" src="img/icon-context-mute-mentions.svg" width="16" height="12" /> + <img className="mx_NotificationStateContextMenu_icon mx_filterFlipColor" src="img/icon-context-mute-mentions.svg" width="16" height="12" /> Mentions only </div> <div className={ muteNotifsClasses } onClick={this._onClickMute} > <img className="mx_NotificationStateContextMenu_activeIcon" src="img/notif-active.svg" width="12" height="12" /> - <img className="mx_NotificationStateContextMenu_icon" src="img/icon-context-mute.svg" width="16" height="12" /> + <img className="mx_NotificationStateContextMenu_icon mx_filterFlipColor" src="img/icon-context-mute.svg" width="16" height="12" /> Mute </div> </div> From d907421ad46b64144a8690996ad51ffc716c4e8a Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Sun, 22 Jan 2017 01:25:32 +0100 Subject: [PATCH 209/243] crappy CSS for UnknownDeviceDialog --- src/skins/vector/css/_components.scss | 1 + .../views/dialogs/_UnknownDeviceDialog.scss | 46 +++++++++++++++++++ src/skins/vector/css/themes/_dark.scss | 2 +- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 880c1054..51dd0ada 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -15,6 +15,7 @@ @import "./matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss"; @import "./matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss"; @import "./matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss"; +@import "./matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss"; @import "./matrix-react-sdk/views/elements/_AddressSelector.scss"; @import "./matrix-react-sdk/views/elements/_AddressTile.scss"; @import "./matrix-react-sdk/views/elements/_DirectorySearchBox.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss new file mode 100644 index 00000000..3a9b64d1 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_UnknownDeviceDialog.scss @@ -0,0 +1,46 @@ +/* +Copyright 2016 OpenMarket 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. +*/ + +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo { + float: right; + clear: both; + padding: 0px; + padding-top: 8px; +} + +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo_textButton { + border: 0px; + height: 24px; + border-radius: 40px; + border: solid 1px $accent-color; + font-weight: 600; + font-size: 13px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + margin-left: 0px; + margin-right: 8px; + padding-left: 0.5em; + padding-right: 0.5em; + width: 70px; + outline: none; + cursor: pointer; + color: $accent-color; + background-color: $primary-bg-color; +} + +.mx_UnknownDeviceDialog .mx_UnknownDeviceDialog_deviceList li { + height: 40px; + border-bottom: 1px solid $primary-hairline-color; +} \ No newline at end of file diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 4902724f..51930433 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -114,4 +114,4 @@ $progressbar-color: #000; .gm-scrollbar .thumb { filter: invert(); -} \ No newline at end of file +} From 2ecf65f05702075175b211161f05b5e2c57d9182 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Mon, 23 Jan 2017 09:28:48 +0000 Subject: [PATCH 210/243] Keep the logs if no store exists --- src/vector/rageshake.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 7d1a93ef..3cc15886 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -80,11 +80,15 @@ class ConsoleLogger { /** * Retrieve log lines to flush to disk. + * @param {boolean} keepLogs True to not delete logs after flushing. * @return {string} \n delimited log lines to flush. */ - flush() { + flush(keepLogs) { // The ConsoleLogger doesn't care how these end up on disk, it just // flushes them to the caller. + if (keepLogs) { + return this.logs; + } const logsToFlush = this.logs; this.logs = ""; return logsToFlush; @@ -470,7 +474,7 @@ module.exports = { } else { logs.push({ - lines: logger.flush(), + lines: logger.flush(true), id: "-", }); } From 57126efe86db96396d921651e4d66aea4e3f4c76 Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Mon, 23 Jan 2017 10:24:23 +0000 Subject: [PATCH 211/243] Reposition typing avatars relative to "is typing" --- .../css/matrix-react-sdk/structures/_RoomStatusBar.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss index d3f1439d..d124f9c6 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomStatusBar.scss @@ -21,10 +21,10 @@ limitations under the License. /* position the indicator in the same place horizontally as .mx_EventTile_avatar. */ .mx_RoomStatusBar_indicator { - padding-left: 18px; + padding-left: 17px; padding-right: 12px; margin-left: -73px; - margin-top: 13px; + margin-top: 8px; float: left; width: 24px; text-align: center; From b582cf0a5f24155f4de25320030f34b1b581dbe8 Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Mon, 23 Jan 2017 13:30:39 +0000 Subject: [PATCH 212/243] Remove CSS for StatusBar mid-timeline --- .../css/matrix-react-sdk/structures/RoomView.css | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css index 6dc22e2f..43434d3f 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css +++ b/src/skins/vector/css/matrix-react-sdk/structures/RoomView.css @@ -216,16 +216,6 @@ hr.mx_RoomView_myReadMarker { .mx_RoomView_statusArea_expanded { max-height: 50px; - margin-top: 0px; -} - -.mx_RoomView_statusArea_expanded.mx_RoomView_statusArea_mid_timeline { - margin-top: -50px; - - -webkit-transition: all .2s ease-in; - -moz-transition: all .2s ease-in; - -ms-transition: all .2s ease-in; - -o-transition: all .2s ease-in; } .mx_RoomView_statusAreaBox { From b7204bf868cdf93040afb581465b5b04712081a7 Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Mon, 23 Jan 2017 13:33:39 +0000 Subject: [PATCH 213/243] Use primary bg color on statusArea --- src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index 9e30b9f2..8623e032 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -160,7 +160,7 @@ hr.mx_RoomView_myReadMarker { flex: 0 0 auto; max-height: 0px; - background-color: #fff; + background-color: $primary-bg-color; z-index: 1000; overflow: hidden; From bc714ba3a051ec64d3726e6933c7e766ecbd92b4 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 23 Jan 2017 14:22:54 +0000 Subject: [PATCH 214/243] Add eslint config An early start that gets some linting in place. --- .eslintignore | 1 + .eslintrc.js | 3 +++ package.json | 7 ++++++- test/.eslintrc.js | 5 +++++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 test/.eslintrc.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..ea40ba29 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +src/vector/modernizr.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..c181384f --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ["./node_modules/matrix-react-sdk/.eslintrc.js"], +} diff --git a/package.json b/package.json index b7b69d0c..f14fe8e7 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,8 @@ "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", "start": "node scripts/babelcheck.js && parallelshell \"npm run start:res\" \"npm run start:js\"", "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", + "lint": "eslint src/", + "lintall": "eslint src/ test/", "clean": "rimraf lib webapp electron/dist", "prepublish": "npm run build:compile", "test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false", @@ -95,6 +97,9 @@ "electron-builder": "^11.2.4", "electron-builder-squirrel-windows": "^11.2.1", "emojione": "^2.2.3", + "eslint": "^3.14.0", + "eslint-plugin-flowtype": "^2.30.0", + "eslint-plugin-react": "^6.9.0", "expect": "^1.16.0", "fs-extra": "^0.30.0", "html-webpack-plugin": "^2.24.0", @@ -148,7 +153,7 @@ "target": "deb", "maintainer": "support@riot.im", "desktop": { - "StartupWMClass": "riot-web" + "StartupWMClass": "riot-web" } }, "win": { diff --git a/test/.eslintrc.js b/test/.eslintrc.js new file mode 100644 index 00000000..4cc4659d --- /dev/null +++ b/test/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = { + env: { + mocha: true, + }, +} From 4c3ea1341370a0722c34be6551ca791480c74db6 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Mon, 23 Jan 2017 15:42:50 +0000 Subject: [PATCH 215/243] Make jenkins run the linter --- scripts/jenkins.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/jenkins.sh b/scripts/jenkins.sh index bd27d6e3..5ccc1991 100755 --- a/scripts/jenkins.sh +++ b/scripts/jenkins.sh @@ -26,6 +26,9 @@ cp -r olm/package node_modules/olm # run the mocha tests npm run test +# run eslint +npm run lintall -- -f checkstyle -o eslint.xml || true + rm dist/vector-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist # node_modules deps from 'npm install' don't have a .git dir so can't From f3df86872b4e4bc7b4e7a489993cf3e73c6a3637 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Mon, 23 Jan 2017 17:37:57 +0000 Subject: [PATCH 216/243] Fix tightlooping when flush()ing without any logs The promise would resolve immediately, nulling out `flushPromise`. This would then immediately be set from `new Promise((resolve, reject) => {...})` turning it back into non-null `flushPromise`. The resolve handler was called so the next `flush()` would see "oh yes, there is a non-null `flushPromise`" then promptly try to set `flushAgainPromise` which chains off the resolved `flushPromise` which relied on `flushPromise` being `null`ed out after `resolve()`, causing the chained `flush()` to see "oh yes, there is a non-null `flushPromise`" which... ad infinitum. This PR fixes it by making the nulling out asynchronous but the fact it took me this long to debug this issue indicates to me that this is a terrible piece of code. Will re-write. --- src/vector/rageshake.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 3cc15886..a17c829a 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -201,13 +201,11 @@ class IndexedDBLogStore { if (!this.db) { // not connected yet or user rejected access for us to r/w to // the db. - this.flushPromise = null; reject(new Error("No connected database")); return; } const lines = this.logger.flush(); if (lines.length === 0) { - this.flushPromise = null; resolve(); return; } @@ -217,18 +215,20 @@ class IndexedDBLogStore { let lastModStore = txn.objectStore("logslastmod"); lastModStore.put(this._generateLastModifiedTime()); txn.oncomplete = (event) => { - this.flushPromise = null; resolve(); }; txn.onerror = (event) => { console.error( "Failed to flush logs : ", event ); - this.flushPromise = null; reject( new Error("Failed to write logs: " + event.target.errorCode) ); } + }).then(() => { + this.flushPromise = null; + }, (err) => { + this.flushPromise = null; }); return this.flushPromise; } From 706ffbec3c2eb41d67587ace8e01dd3c7df0e03b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Mon, 23 Jan 2017 19:01:22 +0100 Subject: [PATCH 217/243] add riot logos --- src/skins/vector/img/logos/riot-logo-1.svg | 1 + src/skins/vector/img/logos/riot-logo-2.svg | 1 + src/skins/vector/img/logos/riot-logo-3.svg | 1 + src/skins/vector/img/logos/riot-logo-4.svg | 1 + src/skins/vector/img/logos/riot-logo-5.svg | 1 + src/skins/vector/img/logos/riot-logo-bw.svg | 1 + src/skins/vector/img/logos/riot-logo.svg | 32 +++++++++++++++++++++ 7 files changed, 38 insertions(+) create mode 100644 src/skins/vector/img/logos/riot-logo-1.svg create mode 100644 src/skins/vector/img/logos/riot-logo-2.svg create mode 100644 src/skins/vector/img/logos/riot-logo-3.svg create mode 100644 src/skins/vector/img/logos/riot-logo-4.svg create mode 100644 src/skins/vector/img/logos/riot-logo-5.svg create mode 100644 src/skins/vector/img/logos/riot-logo-bw.svg create mode 100644 src/skins/vector/img/logos/riot-logo.svg diff --git a/src/skins/vector/img/logos/riot-logo-1.svg b/src/skins/vector/img/logos/riot-logo-1.svg new file mode 100644 index 00000000..6b79dd9e --- /dev/null +++ b/src/skins/vector/img/logos/riot-logo-1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#764d80;}.cls-2{fill:#7dc8a2;}.cls-3{fill:#afdbc5;}</style></defs><title>Asset 4</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-3" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path class="cls-2" d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-3" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path class="cls-2" d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-3" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path class="cls-2" d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-3" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path class="cls-2" d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-3" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle class="cls-1" cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path class="cls-1" d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-2.svg b/src/skins/vector/img/logos/riot-logo-2.svg new file mode 100644 index 00000000..96e0bbb1 --- /dev/null +++ b/src/skins/vector/img/logos/riot-logo-2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.36 143.93"><defs><style>.cls-1{fill:#764d80;}.cls-2{fill:#f69e98;}</style></defs><title>Asset 2</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M20.56,139.54A16.19,16.19,0,0,1,4.39,123.37V20.57a16.21,16.21,0,0,1,16-16.17H61.67a47,47,0,0,1,0,94H36.73v25A16.19,16.19,0,0,1,20.56,139.54ZM20.39,5.9A14.7,14.7,0,0,0,5.89,20.57v102.8a14.67,14.67,0,0,0,29.34,0V96.9H61.67a45.49,45.49,0,0,0,0-91H20.39Z"/><path class="cls-2" d="M20.56,134.4a11,11,0,0,1-11-11V20.57a11.09,11.09,0,0,1,10.79-11H61.67a41.85,41.85,0,0,1,0,83.7H31.59v30.11A11,11,0,0,1,20.56,134.4ZM20.3,11A9.57,9.57,0,0,0,11,20.57v102.8a9.53,9.53,0,1,0,19.05,0V91.75H61.67a40.35,40.35,0,0,0,0-80.7H20.3Z"/><path class="cls-2" d="M20.56,129.25a5.89,5.89,0,0,1-5.88-5.88V20.57a5.94,5.94,0,0,1,5.61-5.88H61.67a36.71,36.71,0,0,1,0,73.42H26.44v35.25A5.89,5.89,0,0,1,20.56,129.25ZM20.31,16.19a4.42,4.42,0,0,0-4.13,4.38v102.8a4.38,4.38,0,0,0,8.77,0V86.61H61.67a35.21,35.21,0,0,0,0-70.42Z"/><path class="cls-2" d="M61.67,83H19.81V19.83H61.67a31.57,31.57,0,0,1,0,63.14Zm-40.36-1.5H61.67a30.07,30.07,0,0,0,0-60.14H21.32Z"/><path class="cls-2" d="M61.67,77.83H25V25H61.67a26.43,26.43,0,0,1,0,52.85Zm-35.22-1.5H61.67a24.93,24.93,0,0,0,0-49.85H26.46Z"/><path class="cls-2" d="M61.67,72.69H30.1V30.12H61.67a21.29,21.29,0,0,1,0,42.57ZM31.6,71.19H61.67a19.79,19.79,0,0,0,0-39.57H31.6Z"/><path class="cls-2" d="M61.67,67.55H35.24V35.26H61.67a16.14,16.14,0,0,1,0,32.29ZM36.74,66H61.67a14.64,14.64,0,0,0,0-29.29H36.74Z"/><path class="cls-2" d="M61.67,62.41H40.38v-22H61.67a11,11,0,0,1,0,22Zm-19.79-1.5H61.67a9.5,9.5,0,0,0,0-19H41.88Z"/><path class="cls-2" d="M61.67,57.26H45.52V45.54H61.67a5.86,5.86,0,0,1,0,11.72ZM47,55.76H61.67a4.36,4.36,0,0,0,0-8.72H47Z"/><path class="cls-2" d="M61.18,52.16H51.89a.75.75,0,1,1,0-1.5h9.29a.75.75,0,0,1,0,1.5Z"/><path class="cls-2" d="M20.56,124.12a.75.75,0,0,1-.75-.75v-36a.75.75,0,0,1,1.5,0v36A.75.75,0,0,1,20.56,124.12Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M145.91,51.12h25.61a2.57,2.57,0,0,0,0-5.14H145.91a2.57,2.57,0,1,0,0,5.14Z"/><path class="cls-2" d="M145.91,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,171.51,0H145.91a2.57,2.57,0,1,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M171.51,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,171.51,118.28Z"/><path class="cls-2" d="M158.71,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,158.71,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,158.71,98.79Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-3.svg b/src/skins/vector/img/logos/riot-logo-3.svg new file mode 100644 index 00000000..985b9c9f --- /dev/null +++ b/src/skins/vector/img/logos/riot-logo-3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#fac79e;}.cls-2{fill:#e45e5d;}.cls-3{fill:#f8a05f;}</style></defs><title>Asset 5</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-1" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-1" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-1" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path class="cls-2" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><polygon class="cls-3" points="47.03 0.01 40.32 0.01 0 48.06 0 56.05 47.03 0.01"/><polygon class="cls-3" points="60.45 0.01 53.74 0.01 0 64.05 0 72.04 60.45 0.01"/><path class="cls-3" d="M72.83,1.24a51,51,0,0,0-5.9-1L0,80v8Z"/><polygon class="cls-3" points="33.61 0.01 26.9 0.01 0 32.06 0 40.06 33.61 0.01"/><path class="cls-3" d="M83.27,4.78a51,51,0,0,0-5-2L0,96v8Z"/><path class="cls-3" d="M41.12,102.78h.18l64.78-77.2a51.55,51.55,0,0,0-2.94-4.49L5.55,137.38a20.62,20.62,0,0,0,3.95,3.29L41.12,103Z"/><path class="cls-3" d="M112.22,42.23l-50.8,60.54h.25a51.55,51.55,0,0,0,6.85-.47L113,49.3A51.32,51.32,0,0,0,112.22,42.23Z"/><path class="cls-3" d="M40.71,127.46l-12.59,15A20.58,20.58,0,0,0,40.71,127.46Z"/><path class="cls-3" d="M110,68.88a51,51,0,0,0,2.67-11.18L76.73,100.52a51.1,51.1,0,0,0,10.6-4.64Z"/><path class="cls-3" d="M92.22,10.1a51.58,51.58,0,0,0-4.3-2.87L0,112v8Z"/><path class="cls-3" d="M99.83,17q-1.73-1.92-3.64-3.66L.42,127.5a20.41,20.41,0,0,0,2,5.58Z"/><path class="cls-3" d="M41.12,119v-8l-26.82,32a20.53,20.53,0,0,0,5.9,1Z"/><path class="cls-3" d="M110.71,36a51,51,0,0,0-2.09-5.5L48,102.78h6.71Z"/><circle class="cls-1" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-1" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-4.svg b/src/skins/vector/img/logos/riot-logo-4.svg new file mode 100644 index 00000000..24a7ddab --- /dev/null +++ b/src/skins/vector/img/logos/riot-logo-4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 175.64 143.93"><defs><style>.cls-1{fill:#e45e5d;}.cls-2{fill:#c7bdcd;}.cls-3{fill:#f69e98;}</style></defs><title>Asset 3</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><path class="cls-2" d="M147.19,51.12h25.61a2.57,2.57,0,1,0,0-5.14H147.19a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M147.19,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.79,0H147.19a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.79,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23a2.57,2.57,0,0,0-2.57,2.57h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.79,118.28Z"/><path class="cls-2" d="M160,72.63a15.65,15.65,0,1,0,15.65,15.65A15.67,15.67,0,0,0,160,72.63Zm0,26.16A10.51,10.51,0,1,1,170.5,88.28,10.52,10.52,0,0,1,160,98.79Z"/><path class="cls-3" d="M2.77,133.64A20.62,20.62,0,0,0,7,138.77H34.14a20.62,20.62,0,0,0,4.21-5.13Z"/><path class="cls-3" d="M0,92.52v5.14H84a51.48,51.48,0,0,0,8.41-5.14Z"/><rect class="cls-3" y="102.8" width="41.12" height="5.13"/><rect class="cls-3" y="113.08" width="41.12" height="5.14"/><path class="cls-3" d="M.68,15.41H98.3a51.8,51.8,0,0,0-5.86-5.14H2.78A20.41,20.41,0,0,0,.68,15.41Z"/><path class="cls-3" d="M0,123.36H0a20.53,20.53,0,0,0,.67,5.12H40.45a20.53,20.53,0,0,0,.67-5.12H0Z"/><path class="cls-3" d="M0,56.53H112.8c.17-1.69.26-3.4.26-5.13H0Z"/><path class="cls-3" d="M0,82.24v5.14H98.32a51.79,51.79,0,0,0,4.43-5.14Z"/><path class="cls-3" d="M0,20.57V25.7H106.14a51.58,51.58,0,0,0-3.39-5.14Z"/><path class="cls-3" d="M20.81,0h-.25A20.46,20.46,0,0,0,7,5.14H84A51.07,51.07,0,0,0,61.67,0Z"/><path class="cls-3" d="M0,30.85V36H110.69a51,51,0,0,0-1.94-5.14Z"/><path class="cls-3" d="M0,72v5.13H106.14A51.24,51.24,0,0,0,108.75,72Z"/><path class="cls-3" d="M0,61.68v5.14H110.69A50.92,50.92,0,0,0,112,61.68Z"/><path class="cls-3" d="M0,41.22v5.14H112.8a51.15,51.15,0,0,0-.77-5.14Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="translate(-8.07 15.53) rotate(-35)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,0,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-5.svg b/src/skins/vector/img/logos/riot-logo-5.svg new file mode 100644 index 00000000..6a2c61df --- /dev/null +++ b/src/skins/vector/img/logos/riot-logo-5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#764d80;}.cls-2{fill:#afdbc5;}</style></defs><title>Asset 1</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path class="cls-1" d="M61.67,0H20.56A20.56,20.56,0,0,0,0,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H61.67A51.38,51.38,0,0,0,61.67,0Z"/><circle class="cls-2" cx="20.59" cy="20.57" r="20.56" transform="matrix(0.82, -0.57, 0.57, 0.82, -8.07, 15.53)"/><path class="cls-2" d="M109.36,111.56a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.58,67.57Z"/><path class="cls-2" d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path class="cls-2" d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,1,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path class="cls-2" d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path class="cls-2" d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo-bw.svg b/src/skins/vector/img/logos/riot-logo-bw.svg new file mode 100644 index 00000000..cb6d77d6 --- /dev/null +++ b/src/skins/vector/img/logos/riot-logo-bw.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style>.cls-1{fill:#fff;}</style></defs><title>Asset 6</title><g id="Layer_2" data-name="Layer 2"><g id="Design"><path d="M146.53,51.12h25.61a2.57,2.57,0,0,0,0-5.14H146.53a2.57,2.57,0,0,0,0,5.14Z"/><path d="M146.53,5.14h7.66v7.79l-.05,0-9,6.32a2.57,2.57,0,0,0,2.95,4.21l7.23-5.06a10.24,10.24,0,0,0,19.42-4.59V2.64s0,0,0-.07A2.57,2.57,0,0,0,172.14,0H146.53a2.57,2.57,0,0,0,0,5.14Zm23,8.71a5.12,5.12,0,1,1-10.23,0V5.14h10.23Z"/><path d="M172.14,118.28a2.57,2.57,0,0,0-2.57,2.57v7.6h-23A2.57,2.57,0,0,0,144,131h0a2.57,2.57,0,0,0,2.57,2.57h23v7.78a2.57,2.57,0,0,0,5.14,0V131h0V120.85A2.57,2.57,0,0,0,172.14,118.28Z"/><path d="M159.34,72.63A15.65,15.65,0,1,0,175,88.28,15.67,15.67,0,0,0,159.34,72.63Zm0,26.16a10.51,10.51,0,1,1,10.51-10.51A10.52,10.52,0,0,1,159.34,98.79Z"/><path d="M62.33,0H21.22A20.56,20.56,0,0,0,.66,20.57v102.8a20.56,20.56,0,0,0,41.12,0V102.79H62.33A51.38,51.38,0,0,0,62.33,0Z"/><path class="cls-1" d="M21.22,138.81A15.45,15.45,0,0,1,5.79,123.37V20.57A15.45,15.45,0,0,1,21.09,5.14H62.33a46.26,46.26,0,0,1,0,92.51H36.65v25.71A15.45,15.45,0,0,1,21.22,138.81Z"/><path d="M21.22,133.68a10.32,10.32,0,0,1-10.3-10.3V20.57A10.33,10.33,0,0,1,21,10.27H62.33a41.13,41.13,0,0,1,0,82.26H31.52v30.84A10.32,10.32,0,0,1,21.22,133.68Z"/><path class="cls-1" d="M21.22,128.55A5.18,5.18,0,0,1,16,123.37V20.57a5.2,5.2,0,0,1,5-5.17H62.33a36,36,0,0,1,0,72H26.39v36A5.18,5.18,0,0,1,21.22,128.55Z"/><path d="M21.27,82.28H62.33a30.87,30.87,0,0,0,0-61.75H21.22Z"/><path class="cls-1" d="M26.39,77.15l0-51.49h36a25.75,25.75,0,0,1,0,51.49Z"/><path d="M31.51,72l0-41.23H62.33a20.62,20.62,0,0,1,0,41.23Z"/><path class="cls-1" d="M36.64,66.9l0-31H62.33a15.49,15.49,0,0,1,0,31Z"/><path d="M41.76,61.77l0-20.72H62.33a10.36,10.36,0,0,1,0,20.72Z"/><path class="cls-1" d="M46.89,56.64V46.18H62.33a5.23,5.23,0,0,1,0,10.47Z"/><circle cx="20.56" cy="20.57" r="20.56" transform="translate(-8.08 15.51) rotate(-35)"/><path d="M109.34,111.57a20.56,20.56,0,1,1-33.69,23.59l-30.79-44A20.56,20.56,0,0,1,78.55,67.58Z"/></g></g></svg> \ No newline at end of file diff --git a/src/skins/vector/img/logos/riot-logo.svg b/src/skins/vector/img/logos/riot-logo.svg new file mode 100644 index 00000000..cbfaa625 --- /dev/null +++ b/src/skins/vector/img/logos/riot-logo.svg @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 400 400" style="enable-background:new 0 0 400 400;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#7DC8A2;} + .st1{fill:#AFDBC5;} + .st2{fill:#764D80;} +</style> +<g> + <path class="st0" d="M212.8,38.8h-91.2c-0.2,0-0.4,0-0.6,0c-25.3,0-45.9,20.5-45.9,45.9v229.5c0,25.3,20.5,45.9,45.9,45.9 + s45.9-20.5,45.9-45.9v-45.9h45.9c63.2,0,114.7-51.5,114.7-114.7S276,38.8,212.8,38.8z"/> + <path class="st1" d="M121,348.6c-19,0-34.4-15.5-34.4-34.4V84.7c0-18.9,15.3-34.3,34.2-34.4c0.2,0,0.5,0,0.7,0h91.3 + c56.9,0,103.3,46.3,103.3,103.3s-46.3,103.3-103.3,103.3h-57.3v57.4C155.4,333.2,140,348.6,121,348.6z"/> + <path class="st0" d="M121,337.2c-12.7,0-23-10.3-23-23V84.7c0-12.5,10.1-22.7,22.5-23c0.2,0,0.5,0,0.7,0l91.5,0 + c50.6,0,91.8,41.2,91.8,91.8s-41.2,91.8-91.8,91.8H144v68.8C144,326.9,133.7,337.2,121,337.2z"/> + <path class="st1" d="M121,325.7c-6.4,0-11.6-5.2-11.6-11.6V84.7c0-6.2,5-11.3,11.1-11.5l0.5,0l91.8,0c44.3,0,80.4,36.1,80.4,80.4 + s-36,80.4-80.4,80.4h-80.2v80.3C132.6,320.5,127.4,325.7,121,325.7z"/> + <path class="st0" d="M121.1,222.4h91.7c38,0,68.9-30.9,68.9-68.9s-30.9-68.9-68.9-68.9H121L121.1,222.4z"/> + <path class="st1" d="M132.5,211l-0.1-114.9h80.3c31.7,0,57.5,25.8,57.5,57.5S244.5,211,212.8,211H132.5z"/> + <path class="st0" d="M144,199.6l-0.1-92h68.9c25.4,0,46,20.6,46,46s-20.6,46-46,46H144z"/> + <path class="st1" d="M155.4,188.1l-0.1-69.1h57.4c19.1,0,34.6,15.5,34.6,34.6s-15.5,34.6-34.6,34.6H155.4z"/> + <path class="st0" d="M166.9,176.7l0-46.3h45.9c12.8,0,23.1,10.4,23.1,23.1s-10.4,23.1-23.1,23.1H166.9z"/> + <path class="st1" d="M178.3,165.2l0-23.4h34.5c6.4,0,11.7,5.2,11.7,11.7s-5.2,11.7-11.7,11.7H178.3z"/> + <g> + + <ellipse transform="matrix(0.8192 -0.5736 0.5736 0.8192 -26.9642 83.8822)" class="st2" cx="119.5" cy="84.7" rx="45.9" ry="45.9"/> + <path class="st2" d="M317.7,287.8c14.5,20.8,9.5,49.4-11.3,63.9c-20.8,14.5-49.4,9.5-63.9-11.3l-68.7-98.2 + c-14.5-20.8-9.5-49.4,11.3-63.9c20.8-14.5,49.4-9.5,63.9,11.3L317.7,287.8z"/> + </g> +</g> +</svg> From 597705716b30e0efa9cca8e5ac744bda36bf503e Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 24 Jan 2017 11:26:09 +0000 Subject: [PATCH 218/243] Hopefully, fix intermittent test failure This seeks to fix the intermittent failure of the "MatrixClient rehydrated from stored credentials" tests. The problem appears to be that the 'load_completed' is sometimes taking a while to come through from the dispatcher - or rather, it is taking a long time to get *sent* to the dispatcher: the chain of `q().then().catch().done()` in componentDidMount can take a while to happen. As a workaround, give the test a few goes when waiting for us to start syncing. It's not ideal to be poking into the internal state of MatrixChat like this, but it'll do for now. --- test/app-tests/loading.js | 69 +++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index 03a4d11e..2fe82e51 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -94,13 +94,13 @@ describe('loading:', function () { loadCompletePromise = loadCompleteDefer.promise; function onNewScreen(screen) { - console.log("newscreen "+screen); + console.log(Date.now() + " newscreen "+screen); if (!appLoaded) { lastLoadedScreen = screen; } else { var hash = '#/' + screen; windowLocation.hash = hash; - console.log("browser URI now "+ windowLocation); + console.log(Date.now() + " browser URI now "+ windowLocation); } } @@ -122,22 +122,22 @@ describe('loading:', function () { ); function routeUrl(location, matrixChat) { - console.log("Routing URL "+location); + console.log(Date.now() + " Routing URL "+location); var fragparts = parseQsFromFragment(location); matrixChat.showScreen(fragparts.location.substring(1), fragparts.params); } // pause for a cycle, then simulate the window.onload handler - q.delay(0).then(() => { - console.log("simulating window.onload"); + window.setTimeout(() => { + console.log(Date.now() + " simulating window.onload"); routeUrl(windowLocation, matrixChat); appLoaded = true; if (lastLoadedScreen) { onNewScreen(lastLoadedScreen); lastLoadedScreen = null; } - }).done(); + }, 0); } describe("Clean load with no stored credentials:", function() { @@ -243,10 +243,8 @@ describe('loading:', function () { loadApp(); - q.delay(1).then(() => { - // we expect a spinner - assertAtSyncingSpinner(matrixChat); - + return awaitSyncingSpinner(matrixChat).then(() => { + // we got a sync spinner - let the sync complete return httpBackend.flush(); }).then(() => { // once the sync completes, we should have a directory @@ -266,10 +264,8 @@ describe('loading:', function () { uriFragment: "#/room/!room:id", }); - q.delay(1).then(() => { - // we expect a spinner - assertAtSyncingSpinner(matrixChat); - + return awaitSyncingSpinner(matrixChat).then(() => { + // we got a sync spinner - let the sync complete return httpBackend.flush(); }).then(() => { // once the sync completes, we should have a room view @@ -300,12 +296,9 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { - // Wait for another trip around the event loop for the UI to update - return q.delay(1); + return awaitSyncingSpinner(matrixChat); }).then(() => { - // now we should have a spinner with a logout link - assertAtSyncingSpinner(matrixChat); - + // we got a sync spinner - let the sync complete httpBackend.when('GET', '/sync').respond(200, {}); return httpBackend.flush(); }).then(() => { @@ -338,12 +331,8 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { - // Wait for another trip around the event loop for the UI to update - return q.delay(1); + return awaitSyncingSpinner(matrixChat); }).then(() => { - // now we should have a spinner with a logout link - assertAtSyncingSpinner(matrixChat); - httpBackend.when('GET', '/sync').check(function(req) { expect(req.path).toMatch(new RegExp("^https://homeserver/")); }).respond(200, {}); @@ -377,12 +366,8 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { - // Wait for another trip around the event loop for the UI to update - return q.delay(1); + return awaitSyncingSpinner(matrixChat); }).then(() => { - // now we should have a spinner with a logout link - assertAtSyncingSpinner(matrixChat); - httpBackend.when('GET', '/sync').respond(200, {}); return httpBackend.flush(); }).then(() => { @@ -448,6 +433,32 @@ function assertAtLoadingSpinner(matrixChat) { // we've got login creds, and are waiting for the sync to finish. // the page includes a logout link. +function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) { + if (retryLimit === undefined) { + retryLimit = 5; + } + if (retryCount === undefined) { + retryCount = 0; + } + + if (matrixChat.state.loading) { + console.log(Date.now() + " Awaiting sync spinner: still loading."); + if (retryCount >= retryLimit) { + throw new Error("MatrixChat still not loaded after " + + retryCount + " tries"); + } + return q.delay(0).then(() => { + return awaitSyncingSpinner(matrixChat, retryLimit, retryCount + 1); + }); + } + + console.log(Date.now() + " Awaiting sync spinner: load complete."); + + // state looks good, check the rendered output + assertAtSyncingSpinner(matrixChat); + return q(); +} + function assertAtSyncingSpinner(matrixChat) { var domComponent = ReactDOM.findDOMNode(matrixChat); expect(domComponent.className).toEqual("mx_MatrixChat_splash"); From 6f3b70dbb02bb6edb614209592546fb3ba28854b Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Tue, 24 Jan 2017 12:43:18 +0000 Subject: [PATCH 219/243] Use Q promises and isPending to make logic simpler --- src/vector/rageshake.js | 52 ++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index a17c829a..28f901a3 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -16,6 +16,7 @@ limitations under the License. import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; import request from "browser-request"; +import q from "q"; // This module contains all the code needed to log the console, persist it to // disk and submit bug reports. Rationale is as follows: @@ -105,9 +106,6 @@ class IndexedDBLogStore { this.db = null; // Promise is not null when a flush is IN PROGRESS this.flushPromise = null; - // Promise is not null when flush() is called when one is already in - // progress. - this.flushAgainPromise = null; } /** @@ -115,7 +113,7 @@ class IndexedDBLogStore { */ connect() { let req = this.indexedDB.open("logs"); - return new Promise((resolve, reject) => { + return q.Promise((resolve, reject) => { req.onsuccess = (event) => { this.db = event.target.result; // Periodically flush logs to local storage / indexeddb @@ -167,13 +165,10 @@ class IndexedDBLogStore { * - If B doesn't wait for A's flush to complete, B will be missing the * contents of A's flush. * To protect against this, we set 'flushPromise' when a flush is ongoing. - * Subsequent calls to flush() during this period return a new promise - * 'flushAgainPromise' which is chained off the current 'flushPromise'. - * Subsequent calls to flush() when the first flush hasn't completed will - * return the same 'flushAgainPromise' as we can guarantee that we WILL - * do a brand new flush at some point in the future. Once the first flush - * has completed, 'flushAgainPromise' becomes 'flushPromise' and can be - * chained again. + * Subsequent calls to flush() during this period will chain another flush. + * This guarantees that we WILL do a brand new flush at some point in the + * future. Once the flushes have finished, it's safe to clobber the promise + * with a new one to prevent very deep promise chains from building up. * * This guarantees that we will always eventually do a flush when flush() is * called. @@ -181,23 +176,20 @@ class IndexedDBLogStore { * @return {Promise} Resolved when the logs have been flushed. */ flush() { - if (this.flushPromise) { // a flush is ongoing - if (this.flushAgainPromise) { // a flush is queued up, return that. - return this.flushAgainPromise; - } - // queue up a new flush - this.flushAgainPromise = this.flushPromise.then(() => { - // the current flush has completed, so shuffle the promises - // around: - // flushAgainPromise => flushPromise and null flushAgainPromise. - // flushPromise has already nulled itself. - this.flushAgainPromise = null; + // check if a flush() operation is ongoing + if (this.flushPromise && this.flushPromise.isPending()) { + // chain a flush operation after this one has completed to guarantee + // that a complete flush() is done. This does mean that if there are + // 3 calls to flush() in one go, the 2nd and 3rd promises will run + // concurrently, but this is fine since they can safely race when + // collecting logs. + return this.flushPromise.then(() => { return this.flush(); }); - return this.flushAgainPromise; } - - this.flushPromise = new Promise((resolve, reject) => { + // there is no flush promise or there was but it has finished, so do + // a brand new one, destroying the chain which may have been built up. + this.flushPromise = q.Promise((resolve, reject) => { if (!this.db) { // not connected yet or user rejected access for us to r/w to // the db. @@ -225,10 +217,6 @@ class IndexedDBLogStore { new Error("Failed to write logs: " + event.target.errorCode) ); } - }).then(() => { - this.flushPromise = null; - }, (err) => { - this.flushPromise = null; }); return this.flushPromise; } @@ -286,7 +274,7 @@ class IndexedDBLogStore { } function deleteLogs(id) { - return new Promise((resolve, reject) => { + return q.Promise((resolve, reject) => { const txn = db.transaction( ["logs", "logslastmod"], "readwrite" ); @@ -377,7 +365,7 @@ class IndexedDBLogStore { */ function selectQuery(store, keyRange, resultMapper) { const query = store.openCursor(keyRange); - return new Promise((resolve, reject) => { + return q.Promise((resolve, reject) => { let results = []; query.onerror = (event) => { reject(new Error("Query failed: " + event.target.errorCode)); @@ -479,7 +467,7 @@ module.exports = { }); } - await new Promise((resolve, reject) => { + await q.Promise((resolve, reject) => { request({ method: "POST", url: bugReportEndpoint, From 31878d8a448ddab39c17306a648bded4176b22c3 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 24 Jan 2017 13:07:34 +0000 Subject: [PATCH 220/243] Also need eslint-config-google --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index f14fe8e7..2aff1859 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,7 @@ "electron-builder-squirrel-windows": "^11.2.1", "emojione": "^2.2.3", "eslint": "^3.14.0", + "eslint-config-google": "^0.7.1", "eslint-plugin-flowtype": "^2.30.0", "eslint-plugin-react": "^6.9.0", "expect": "^1.16.0", From fe64b043390cbbe135f795d2337ae44093c84474 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Tue, 24 Jan 2017 13:35:41 +0000 Subject: [PATCH 221/243] More test resilience Give the tests more than one chance for the roomview to load. --- test/app-tests/loading.js | 45 ++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index 2fe82e51..4504d00b 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -209,14 +209,11 @@ describe('loading:', function () { httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' }); httpBackend.when('GET', '/sync').respond(200, {}); return httpBackend.flush(); - }).then(() => { - // Wait for another trip around the event loop for the UI to update - return q.delay(1); }).then(() => { // once the sync completes, we should have a room view + return awaitRoomView(matrixChat); + }).then(() => { httpBackend.verifyNoOutstandingExpectation(); - ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.RoomView')); expect(windowLocation.hash).toEqual("#/room/!room:id"); // and the localstorage should have been updated @@ -269,9 +266,9 @@ describe('loading:', function () { return httpBackend.flush(); }).then(() => { // once the sync completes, we should have a room view + return awaitRoomView(matrixChat); + }).then(() => { httpBackend.verifyNoOutstandingExpectation(); - ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.RoomView')); expect(windowLocation.hash).toEqual("#/room/!room:id"); }).done(done, done); @@ -370,14 +367,11 @@ describe('loading:', function () { }).then(() => { httpBackend.when('GET', '/sync').respond(200, {}); return httpBackend.flush(); - }).then(() => { - // Wait for another trip around the event loop for the UI to update - return q.delay(1); }).then(() => { // once the sync completes, we should have a room view + return awaitRoomView(matrixChat); + }).then(() => { httpBackend.verifyNoOutstandingExpectation(); - ReactTestUtils.findRenderedComponentWithType( - matrixChat, sdk.getComponent('structures.RoomView')); expect(windowLocation.hash).toEqual("#/room/!room:id"); }).done(done, done); }); @@ -469,3 +463,30 @@ function assertAtSyncingSpinner(matrixChat) { matrixChat, 'a'); expect(logoutLink.text).toEqual("Logout"); } + +function awaitRoomView(matrixChat, retryLimit, retryCount) { + if (retryLimit === undefined) { + retryLimit = 5; + } + if (retryCount === undefined) { + retryCount = 0; + } + + if (!matrixChat.state.ready) { + console.log(Date.now() + " Awaiting room view: not ready yet."); + if (retryCount >= retryLimit) { + throw new Error("MatrixChat still not ready after " + + retryCount + " tries"); + } + return q.delay(0).then(() => { + return awaitRoomView(matrixChat, retryLimit, retryCount + 1); + }); + } + + console.log(Date.now() + " Awaiting room view: now ready."); + + // state looks good, check the rendered output + ReactTestUtils.findRenderedComponentWithType( + matrixChat, sdk.getComponent('structures.RoomView')); + return q(); +} From 307c4f3dd152c47ecc9aca9164db403ba0df623e Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Tue, 24 Jan 2017 14:02:44 +0000 Subject: [PATCH 222/243] Increase the max-height of the expanded status bar This will ensure that errors, unsent messages, etc. will be allowed enough height to display their contents from within the status bar without being chopped. Fixes #3041 --- src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index 8623e032..55771f79 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -171,7 +171,7 @@ hr.mx_RoomView_myReadMarker { } .mx_RoomView_statusArea_expanded { - max-height: 50px; + max-height: 100px; } .mx_RoomView_statusAreaBox { From efbea0e942a40ab38389740fb42dd8cba1e441de Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Tue, 24 Jan 2017 14:45:16 +0000 Subject: [PATCH 223/243] Add css for bug report dialog --- src/skins/vector/css/_components.scss | 1 + .../views/dialogs/_BugReportDialog.scss | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/skins/vector/css/matrix-react-sdk/views/dialogs/_BugReportDialog.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 51dd0ada..323c22e0 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -12,6 +12,7 @@ @import "./matrix-react-sdk/structures/_UserSettings.scss"; @import "./matrix-react-sdk/structures/login/_Login.scss"; @import "./matrix-react-sdk/views/avatars/_BaseAvatar.scss"; +@import "./matrix-react-sdk/views/dialogs/_BugReportDialog.scss"; @import "./matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss"; @import "./matrix-react-sdk/views/dialogs/_EncryptedEventDialog.scss"; @import "./matrix-react-sdk/views/dialogs/_SetDisplayNameDialog.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_BugReportDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_BugReportDialog.scss new file mode 100644 index 00000000..0f47e974 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_BugReportDialog.scss @@ -0,0 +1,20 @@ +/* +Copyright 2017 OpenMarket 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. +*/ + +.mx_BugReportDialog_input { + width: 100%; + box-sizing: border-box; +} From e225d3e3708bccf6cd458453206d076841011630 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Tue, 24 Jan 2017 17:05:01 +0000 Subject: [PATCH 224/243] Preserve ordering of flush()es by not letting subsequent flush()es race --- src/vector/rageshake.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 28f901a3..086ab155 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -104,8 +104,9 @@ class IndexedDBLogStore { this.id = "instance-" + Math.random() + Date.now(); this.index = 0; this.db = null; - // Promise is not null when a flush is IN PROGRESS this.flushPromise = null; + // set if flush() is called whilst one is ongoing + this.flushAgainPromise = null; } /** @@ -165,10 +166,8 @@ class IndexedDBLogStore { * - If B doesn't wait for A's flush to complete, B will be missing the * contents of A's flush. * To protect against this, we set 'flushPromise' when a flush is ongoing. - * Subsequent calls to flush() during this period will chain another flush. - * This guarantees that we WILL do a brand new flush at some point in the - * future. Once the flushes have finished, it's safe to clobber the promise - * with a new one to prevent very deep promise chains from building up. + * Subsequent calls to flush() during this period will chain another flush, + * then keep returning that same chained flush. * * This guarantees that we will always eventually do a flush when flush() is * called. @@ -178,14 +177,17 @@ class IndexedDBLogStore { flush() { // check if a flush() operation is ongoing if (this.flushPromise && this.flushPromise.isPending()) { - // chain a flush operation after this one has completed to guarantee - // that a complete flush() is done. This does mean that if there are - // 3 calls to flush() in one go, the 2nd and 3rd promises will run - // concurrently, but this is fine since they can safely race when - // collecting logs. - return this.flushPromise.then(() => { + if (this.flushAgainPromise && this.flushAgainPromise.isPending()) { + // this is the 3rd+ time we've called flush() : return the same + // promise. + return this.flushAgainPromise; + } + // queue up a flush to occur immediately after the pending one + // completes. + this.flushAgainPromise = this.flushPromise.then(() => { return this.flush(); }); + return this.flushAgainPromise; } // there is no flush promise or there was but it has finished, so do // a brand new one, destroying the chain which may have been built up. From 2ca871a0286358cb6f7708b4e849cbd4ea19832e Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 24 Jan 2017 18:18:56 +0000 Subject: [PATCH 225/243] Don't use hash-named directory for dev server Otherwise Chrome thinks you're working on a new file every time you refresh and therefore closes source tabs and removes breakpoints which is very annoying. It also allegedly makes webpack-dev-server run out of memory because it has to remember all the different files. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2aff1859..5528c7c7 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", "start:res": "node scripts/copy-res.js -w", - "start:js": "webpack-dev-server -w --progress", + "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", "start": "node scripts/babelcheck.js && parallelshell \"npm run start:res\" \"npm run start:js\"", "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", From eaff0abfb07fddc1f657a1c942c72968e7b47619 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Wed, 25 Jan 2017 10:28:04 +0000 Subject: [PATCH 226/243] Add link to Chrome issue status for fixing line numbers --- src/vector/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index d1d85e06..c40edd7e 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -38,7 +38,7 @@ require('draft-js/dist/Draft.css'); const rageshake = require("./rageshake"); rageshake.init().then(() => { - console.log("Initialised rageshake"); + console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome."); rageshake.cleanup(); }, (err) => { console.error("Failed to initialise rageshake: " + err); From 1c926941d34ea328d4505122fe7e72b1a87f2e4c Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 25 Jan 2017 11:28:59 +0000 Subject: [PATCH 227/243] Add --output-chunk-file too --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5528c7c7..915056e6 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", "start:res": "node scripts/copy-res.js -w", - "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js -w --progress", + "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", "start": "node scripts/babelcheck.js && parallelshell \"npm run start:res\" \"npm run start:js\"", "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", From 0021fb37f3c26692a7906a6503cc26a0409a1a0b Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Wed, 25 Jan 2017 14:27:25 +0000 Subject: [PATCH 228/243] Set BaseAvatar_image bg colour = #fff --- .../vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss index d481e5c1..f23b929b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/avatars/_BaseAvatar.scss @@ -31,4 +31,5 @@ limitations under the License. .mx_BaseAvatar_image { border-radius: 40px; vertical-align: top; + background-color: #fff; } From 0a9f02abcc527d64f2f7bbdd1d296008d4e94ca6 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Wed, 25 Jan 2017 16:51:26 +0000 Subject: [PATCH 229/243] Glue the dialog to rageshake: honour sendLogs flag. --- src/component-index.js | 60 +++++---- .../views/dialogs/BugReportDialog.js | 126 ++++++++++++++++++ src/vector/rageshake.js | 25 ++-- 3 files changed, 171 insertions(+), 40 deletions(-) create mode 100644 src/components/views/dialogs/BugReportDialog.js diff --git a/src/component-index.js b/src/component-index.js index 3141087c..456f8176 100644 --- a/src/component-index.js +++ b/src/component-index.js @@ -27,60 +27,62 @@ limitations under the License. module.exports.components = require('matrix-react-sdk/lib/component-index').components; import structures$BottomLeftMenu from './components/structures/BottomLeftMenu'; -module.exports.components['structures.BottomLeftMenu'] = structures$BottomLeftMenu; +structures$BottomLeftMenu && (module.exports.components['structures.BottomLeftMenu'] = structures$BottomLeftMenu); import structures$CompatibilityPage from './components/structures/CompatibilityPage'; -module.exports.components['structures.CompatibilityPage'] = structures$CompatibilityPage; +structures$CompatibilityPage && (module.exports.components['structures.CompatibilityPage'] = structures$CompatibilityPage); import structures$LeftPanel from './components/structures/LeftPanel'; -module.exports.components['structures.LeftPanel'] = structures$LeftPanel; +structures$LeftPanel && (module.exports.components['structures.LeftPanel'] = structures$LeftPanel); import structures$RightPanel from './components/structures/RightPanel'; -module.exports.components['structures.RightPanel'] = structures$RightPanel; +structures$RightPanel && (module.exports.components['structures.RightPanel'] = structures$RightPanel); import structures$RoomDirectory from './components/structures/RoomDirectory'; -module.exports.components['structures.RoomDirectory'] = structures$RoomDirectory; +structures$RoomDirectory && (module.exports.components['structures.RoomDirectory'] = structures$RoomDirectory); import structures$RoomSubList from './components/structures/RoomSubList'; -module.exports.components['structures.RoomSubList'] = structures$RoomSubList; +structures$RoomSubList && (module.exports.components['structures.RoomSubList'] = structures$RoomSubList); import structures$SearchBox from './components/structures/SearchBox'; -module.exports.components['structures.SearchBox'] = structures$SearchBox; +structures$SearchBox && (module.exports.components['structures.SearchBox'] = structures$SearchBox); import structures$ViewSource from './components/structures/ViewSource'; -module.exports.components['structures.ViewSource'] = structures$ViewSource; +structures$ViewSource && (module.exports.components['structures.ViewSource'] = structures$ViewSource); import views$context_menus$MessageContextMenu from './components/views/context_menus/MessageContextMenu'; -module.exports.components['views.context_menus.MessageContextMenu'] = views$context_menus$MessageContextMenu; +views$context_menus$MessageContextMenu && (module.exports.components['views.context_menus.MessageContextMenu'] = views$context_menus$MessageContextMenu); import views$context_menus$NotificationStateContextMenu from './components/views/context_menus/NotificationStateContextMenu'; -module.exports.components['views.context_menus.NotificationStateContextMenu'] = views$context_menus$NotificationStateContextMenu; +views$context_menus$NotificationStateContextMenu && (module.exports.components['views.context_menus.NotificationStateContextMenu'] = views$context_menus$NotificationStateContextMenu); import views$context_menus$RoomTagContextMenu from './components/views/context_menus/RoomTagContextMenu'; -module.exports.components['views.context_menus.RoomTagContextMenu'] = views$context_menus$RoomTagContextMenu; +views$context_menus$RoomTagContextMenu && (module.exports.components['views.context_menus.RoomTagContextMenu'] = views$context_menus$RoomTagContextMenu); +import views$dialogs$BugReportDialog from './components/views/dialogs/BugReportDialog'; +views$dialogs$BugReportDialog && (module.exports.components['views.dialogs.BugReportDialog'] = views$dialogs$BugReportDialog); import views$dialogs$ChangelogDialog from './components/views/dialogs/ChangelogDialog'; -module.exports.components['views.dialogs.ChangelogDialog'] = views$dialogs$ChangelogDialog; +views$dialogs$ChangelogDialog && (module.exports.components['views.dialogs.ChangelogDialog'] = views$dialogs$ChangelogDialog); import views$directory$NetworkDropdown from './components/views/directory/NetworkDropdown'; -module.exports.components['views.directory.NetworkDropdown'] = views$directory$NetworkDropdown; +views$directory$NetworkDropdown && (module.exports.components['views.directory.NetworkDropdown'] = views$directory$NetworkDropdown); import views$elements$ImageView from './components/views/elements/ImageView'; -module.exports.components['views.elements.ImageView'] = views$elements$ImageView; +views$elements$ImageView && (module.exports.components['views.elements.ImageView'] = views$elements$ImageView); import views$elements$Spinner from './components/views/elements/Spinner'; -module.exports.components['views.elements.Spinner'] = views$elements$Spinner; +views$elements$Spinner && (module.exports.components['views.elements.Spinner'] = views$elements$Spinner); import views$globals$GuestWarningBar from './components/views/globals/GuestWarningBar'; -module.exports.components['views.globals.GuestWarningBar'] = views$globals$GuestWarningBar; +views$globals$GuestWarningBar && (module.exports.components['views.globals.GuestWarningBar'] = views$globals$GuestWarningBar); import views$globals$MatrixToolbar from './components/views/globals/MatrixToolbar'; -module.exports.components['views.globals.MatrixToolbar'] = views$globals$MatrixToolbar; +views$globals$MatrixToolbar && (module.exports.components['views.globals.MatrixToolbar'] = views$globals$MatrixToolbar); import views$globals$NewVersionBar from './components/views/globals/NewVersionBar'; -module.exports.components['views.globals.NewVersionBar'] = views$globals$NewVersionBar; +views$globals$NewVersionBar && (module.exports.components['views.globals.NewVersionBar'] = views$globals$NewVersionBar); import views$login$VectorCustomServerDialog from './components/views/login/VectorCustomServerDialog'; -module.exports.components['views.login.VectorCustomServerDialog'] = views$login$VectorCustomServerDialog; +views$login$VectorCustomServerDialog && (module.exports.components['views.login.VectorCustomServerDialog'] = views$login$VectorCustomServerDialog); import views$login$VectorLoginFooter from './components/views/login/VectorLoginFooter'; -module.exports.components['views.login.VectorLoginFooter'] = views$login$VectorLoginFooter; +views$login$VectorLoginFooter && (module.exports.components['views.login.VectorLoginFooter'] = views$login$VectorLoginFooter); import views$login$VectorLoginHeader from './components/views/login/VectorLoginHeader'; -module.exports.components['views.login.VectorLoginHeader'] = views$login$VectorLoginHeader; +views$login$VectorLoginHeader && (module.exports.components['views.login.VectorLoginHeader'] = views$login$VectorLoginHeader); import views$messages$DateSeparator from './components/views/messages/DateSeparator'; -module.exports.components['views.messages.DateSeparator'] = views$messages$DateSeparator; +views$messages$DateSeparator && (module.exports.components['views.messages.DateSeparator'] = views$messages$DateSeparator); import views$messages$MessageTimestamp from './components/views/messages/MessageTimestamp'; -module.exports.components['views.messages.MessageTimestamp'] = views$messages$MessageTimestamp; +views$messages$MessageTimestamp && (module.exports.components['views.messages.MessageTimestamp'] = views$messages$MessageTimestamp); import views$rooms$DNDRoomTile from './components/views/rooms/DNDRoomTile'; -module.exports.components['views.rooms.DNDRoomTile'] = views$rooms$DNDRoomTile; +views$rooms$DNDRoomTile && (module.exports.components['views.rooms.DNDRoomTile'] = views$rooms$DNDRoomTile); import views$rooms$RoomDropTarget from './components/views/rooms/RoomDropTarget'; -module.exports.components['views.rooms.RoomDropTarget'] = views$rooms$RoomDropTarget; +views$rooms$RoomDropTarget && (module.exports.components['views.rooms.RoomDropTarget'] = views$rooms$RoomDropTarget); import views$rooms$RoomTooltip from './components/views/rooms/RoomTooltip'; -module.exports.components['views.rooms.RoomTooltip'] = views$rooms$RoomTooltip; +views$rooms$RoomTooltip && (module.exports.components['views.rooms.RoomTooltip'] = views$rooms$RoomTooltip); import views$rooms$SearchBar from './components/views/rooms/SearchBar'; -module.exports.components['views.rooms.SearchBar'] = views$rooms$SearchBar; +views$rooms$SearchBar && (module.exports.components['views.rooms.SearchBar'] = views$rooms$SearchBar); import views$settings$IntegrationsManager from './components/views/settings/IntegrationsManager'; -module.exports.components['views.settings.IntegrationsManager'] = views$settings$IntegrationsManager; +views$settings$IntegrationsManager && (module.exports.components['views.settings.IntegrationsManager'] = views$settings$IntegrationsManager); import views$settings$Notifications from './components/views/settings/Notifications'; -module.exports.components['views.settings.Notifications'] = views$settings$Notifications; +views$settings$Notifications && (module.exports.components['views.settings.Notifications'] = views$settings$Notifications); diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js new file mode 100644 index 00000000..e3c8945a --- /dev/null +++ b/src/components/views/dialogs/BugReportDialog.js @@ -0,0 +1,126 @@ +/* +Copyright 2017 OpenMarket 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. +*/ + +import React from 'react'; +import sdk from 'matrix-react-sdk'; +import rageshake from '../../../vector/rageshake'; + +export default class BugReportDialog extends React.Component { + constructor(props, context) { + super(props, context); + this.state = { + sendLogs: true, + busy: false, + err: null, + text: "", + }; + this._onSubmit = this._onSubmit.bind(this); + this._onCancel = this._onCancel.bind(this); + this._onTextChange = this._onTextChange.bind(this); + this._onSendLogsChange = this._onSendLogsChange.bind(this); + } + + _onCancel(ev) { + this.props.onFinished(false); + } + + _onSubmit(ev) { + const sendLogs = this.state.sendLogs; + const userText = this.state.text; + if (!sendLogs && userText.trim().length === 0) { + this.setState({ + err: "Please describe the bug and/or send logs.", + }); + return; + } + this.setState({ busy: true, err: null }); + rageshake.sendBugReport(userText, sendLogs).then(() => { + this.setState({ busy: false }); + }, (err) => { + this.setState({ busy: false, err: `Failed: ${err.message}` }); + }); + } + + _onTextChange(ev) { + this.setState({ text: ev.target.value }); + } + + _onSendLogsChange(ev) { + this.setState({ sendLogs: ev.target.checked }); + } + + render() { + const Loader = sdk.getComponent("elements.Spinner"); + + let error = null; + if (this.state.err) { + error = <div className="error"> + {this.state.err} + </div>; + } + + const okLabel = this.state.busy ? <Loader /> : 'Send'; + + let cancelButton = null; + if (!this.state.busy) { + cancelButton = <button onClick={this._onCancel}> + Cancel + </button>; + } + + return ( + <div className="mx_BugReportDialog"> + <div className="mx_Dialog_title"> + Report a bug + </div> + <div className="mx_Dialog_content"> + <p>Please describe the bug. What did you do? + What did you expect to happen? + What actually happened?</p> + <textarea + className="mx_BugReportDialog_input" + rows={5} + onChange={this._onTextChange} + value={this.state.text} + placeholder="Describe your problem here." + /> + <p>In order to diagnose problems, logs from this client will be sent with + this bug report. + If you would prefer to only send the text above, please untick:</p> + <input type="checkbox" checked={this.state.sendLogs} + onChange={this._onSendLogsChange} id="mx_BugReportDialog_logs"/> + <label htmlFor="mx_BugReportDialog_logs">Send logs</label> + {error} + </div> + <div className="mx_Dialog_buttons"> + <button + className="mx_Dialog_primary danger" + onClick={this._onSubmit} + autoFocus={true} + > + {okLabel} + </button> + + {cancelButton} + </div> + </div> + ); + } +} + +BugReportDialog.propTypes = { + onFinished: React.PropTypes.func.isRequired, +}; diff --git a/src/vector/rageshake.js b/src/vector/rageshake.js index 086ab155..61e29a31 100644 --- a/src/vector/rageshake.js +++ b/src/vector/rageshake.js @@ -430,9 +430,10 @@ module.exports = { /** * Send a bug report. * @param {string} userText Any additional user input. + * @param {boolean} sendLogs True to send logs * @return {Promise} Resolved when the bug report is sent. */ - sendBugReport: async function(userText) { + sendBugReport: async function(userText, sendLogs) { if (!logger) { throw new Error( "No console logger, did you forget to call init()?" @@ -457,16 +458,18 @@ module.exports = { // sending to work going off the in-memory console logs. console.log("Sending bug report."); let logs = []; - if (store) { - // flush most recent logs - await store.flush(); - logs = await store.consume(); - } - else { - logs.push({ - lines: logger.flush(true), - id: "-", - }); + if (sendLogs) { + if (store) { + // flush most recent logs + await store.flush(); + logs = await store.consume(); + } + else { + logs.push({ + lines: logger.flush(true), + id: "-", + }); + } } await q.Promise((resolve, reject) => { From 4e41accc563d4283e4d6375e797a82e66078c630 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Wed, 25 Jan 2017 18:52:21 +0000 Subject: [PATCH 230/243] CSS tweak for email address lookup CSS tweak for https://github.com/matrix-org/matrix-react-sdk/pull/653 --- .../css/matrix-react-sdk/views/elements/_AddressTile.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss index 59c0b68d..0ecfb17c 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_AddressTile.scss @@ -106,7 +106,7 @@ limitations under the License. } .mx_AddressTile_email.mx_AddressTile_justified { - width: 380px; /* name + id width */ + width: 200px; /* same as id width */ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; From 972a3912968752180d72bcbece3c18b8f433a476 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Thu, 26 Jan 2017 00:28:22 +0100 Subject: [PATCH 231/243] only recalculate favicon if it changes --- src/vector/platform/WebPlatform.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index 2029822b..dda22f3c 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -60,11 +60,13 @@ export default class WebPlatform extends VectorBasePlatform { } setNotificationCount(count: number) { + if (this.notificationCount === number) return; super.setNotificationCount(count); this._updateFavicon(); } setErrorStatus(errorDidOccur: boolean) { + if (this.errorDidOccur === errorDidOccur) return; super.setErrorStatus(errorDidOccur); this._updateFavicon(); } From 9797c2fb4b8807c31847216ea04fa16341f93feb Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Thu, 26 Jan 2017 00:31:52 +0100 Subject: [PATCH 232/243] fix electron too --- src/vector/platform/ElectronPlatform.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 47bfd990..18ad4a5d 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -58,6 +58,7 @@ function platformFriendlyName() { export default class ElectronPlatform extends VectorBasePlatform { setNotificationCount(count: number) { + if (this.notificationCount === number) return; super.setNotificationCount(count); // this sometimes throws because electron is made of fail: // https://github.com/electron/electron/issues/7351 From ba5e7d40138905d4a741a4dc9d8189dc107f2838 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Thu, 26 Jan 2017 00:54:00 +0100 Subject: [PATCH 233/243] fix event-encrypting-color in dark theme --- src/skins/vector/css/themes/_dark.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index 51930433..f00578cd 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -83,7 +83,7 @@ $roomsublist-label-bg-color: #454545; // ******************** // event tile lifecycle -$event-encrypting-color: #abddbc; +$event-encrypting-color: rgba(171, 221, 188, 0.4); $event-sending-color: #ddd; $event-notsent-color: #f44; From 3c91f90dc9d325bcf2c8e80fb40067f257ed90d3 Mon Sep 17 00:00:00 2001 From: David Baker <dbkr@users.noreply.github.com> Date: Thu, 26 Jan 2017 09:47:01 +0000 Subject: [PATCH 234/243] Tweak desktop instructions (#3069) to make it clear you need to do all the things in 'building from source', including the build-react-sdk dance if you're building develop. --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e4f04339..fd6acfd7 100644 --- a/README.md +++ b/README.md @@ -113,12 +113,14 @@ pre-built version from https://riot.im/desktop.html or, if you prefer, built it yourself. To run as a desktop app: -``` -npm install -npm install electron -npm run build -node_modules/.bin/electron . -``` + +1. Follow the instructions in 'Building From Source' above +2. Install electron and run it: + + ``` + npm install electron + node_modules/.bin/electron . + ``` To build packages, use electron-builder. This is configured to output: * dmg + zip for macOS @@ -141,11 +143,9 @@ npm run build:electron For other packages, use electron-builder manually. For example, to build a package for 64 bit Linux: -``` -npm install -npm run build -node_modules/.bin/build -l --x64 -``` + + 1. Follow the instructions in 'Building From Source' above + 2. `node_modules/.bin/build -l --x64` All electron packages go into `electron/dist/` From baed5bec466f8a8a80ed440a8130613c7714033d Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Thu, 26 Jan 2017 10:18:24 +0000 Subject: [PATCH 235/243] Don't lint the autogenned file --- .eslintignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.eslintignore b/.eslintignore index ea40ba29..fabbe104 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1,2 @@ src/vector/modernizr.js +src/component-index.js From f29e0bfe6d526af6643f3410fa569b8daa3c1f8e Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <richard@matrix.org> Date: Thu, 26 Jan 2017 12:16:44 +0000 Subject: [PATCH 236/243] Revert "Merge pull request #3067 from vector-im/matthew/fix-badge-spam" This reverts commit f9db7f017d64e6bb4021fd04bfb99162b008bd79, reversing changes made to 71b149de760724d8329b260de222aea507b70fe8. This caused `number is not defined` --- src/vector/platform/ElectronPlatform.js | 1 - src/vector/platform/WebPlatform.js | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 18ad4a5d..47bfd990 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -58,7 +58,6 @@ function platformFriendlyName() { export default class ElectronPlatform extends VectorBasePlatform { setNotificationCount(count: number) { - if (this.notificationCount === number) return; super.setNotificationCount(count); // this sometimes throws because electron is made of fail: // https://github.com/electron/electron/issues/7351 diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index dda22f3c..2029822b 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -60,13 +60,11 @@ export default class WebPlatform extends VectorBasePlatform { } setNotificationCount(count: number) { - if (this.notificationCount === number) return; super.setNotificationCount(count); this._updateFavicon(); } setErrorStatus(errorDidOccur: boolean) { - if (this.errorDidOccur === errorDidOccur) return; super.setErrorStatus(errorDidOccur); this._updateFavicon(); } From 7850f7e505d450fce42c13d3673d719ad93e6692 Mon Sep 17 00:00:00 2001 From: David Baker <dbkr@users.noreply.github.com> Date: Thu, 26 Jan 2017 12:58:29 +0000 Subject: [PATCH 237/243] Fix badge spam: attempt 2 (#3073) --- src/vector/platform/ElectronPlatform.js | 1 + src/vector/platform/WebPlatform.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 47bfd990..c10f2f83 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -58,6 +58,7 @@ function platformFriendlyName() { export default class ElectronPlatform extends VectorBasePlatform { setNotificationCount(count: number) { + if (this.notificationCount === count) return; super.setNotificationCount(count); // this sometimes throws because electron is made of fail: // https://github.com/electron/electron/issues/7351 diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index 2029822b..bf417513 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -60,11 +60,13 @@ export default class WebPlatform extends VectorBasePlatform { } setNotificationCount(count: number) { + if (this.notificationCount === count) return; super.setNotificationCount(count); this._updateFavicon(); } setErrorStatus(errorDidOccur: boolean) { + if (this.errorDidOccur === errorDidOccur) return; super.setErrorStatus(errorDidOccur); this._updateFavicon(); } From b16fa4171acd7ae61f861e94bd634fc723d60f79 Mon Sep 17 00:00:00 2001 From: Kegan Dougal <kegan@matrix.org> Date: Thu, 26 Jan 2017 13:42:26 +0000 Subject: [PATCH 238/243] Close the dialog box after sending bugs --- src/components/views/dialogs/BugReportDialog.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/views/dialogs/BugReportDialog.js b/src/components/views/dialogs/BugReportDialog.js index e3c8945a..dcc0850e 100644 --- a/src/components/views/dialogs/BugReportDialog.js +++ b/src/components/views/dialogs/BugReportDialog.js @@ -49,6 +49,7 @@ export default class BugReportDialog extends React.Component { this.setState({ busy: true, err: null }); rageshake.sendBugReport(userText, sendLogs).then(() => { this.setState({ busy: false }); + this.props.onFinished(false); }, (err) => { this.setState({ busy: false, err: `Failed: ${err.message}` }); }); From 5aa9592c71aef071bfbc2025a3fd113710edebc7 Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Fri, 27 Jan 2017 16:02:33 +0000 Subject: [PATCH 239/243] Add CSS for a support box in login This box can be used to provide useful hints during registration/login. --- .../css/matrix-react-sdk/structures/login/_Login.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 30231b43..0b73d7e5 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -44,6 +44,13 @@ limitations under the License. text-align: center; } +.mx_Login_support { + text-align: center; + font-size: 13px; + margin-top: 0px; + opacity: 0.7; +} + .mx_Login_field { width: 100%; border-radius: 3px; From 029602fc738085d1772607e702f06abd3b21c69a Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Fri, 27 Jan 2017 16:04:24 +0000 Subject: [PATCH 240/243] Fix the width of input fields within login/reg box This is so they do not expand outside of the login area. (280px = 300px - 2px - 18px, 2px for borders, 18px for padding) --- .../vector/css/matrix-react-sdk/structures/login/_Login.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 30231b43..888f979d 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -45,7 +45,7 @@ limitations under the License. } .mx_Login_field { - width: 100%; + width: 280px; border-radius: 3px; border: 1px solid $strong-input-border-color; font-weight: 300; From 02d6a10f67818be7919a4237fb48f0d1d771a269 Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Fri, 27 Jan 2017 16:08:14 +0000 Subject: [PATCH 241/243] Allow a custom login logo to be displayed on login This is to allow team logos to be shown when a user registers with a team email. --- src/components/views/login/VectorLoginHeader.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/views/login/VectorLoginHeader.js b/src/components/views/login/VectorLoginHeader.js index 32867230..b08c4fa6 100644 --- a/src/components/views/login/VectorLoginHeader.js +++ b/src/components/views/login/VectorLoginHeader.js @@ -23,11 +23,14 @@ module.exports = React.createClass({ statics: { replaces: 'LoginHeader', }, + propTypes: { + icon: React.PropTypes.string, + }, render: function() { return ( <div className="mx_Login_logo"> - <img src="img/logo.png" width="195" height="195" alt="Riot"/> + <img src={this.props.icon || "img/logo.png"} width="195" height="195" alt="Riot"/> </div> ); } From 87db89b67a21a77c2535dc971022d77645cd4581 Mon Sep 17 00:00:00 2001 From: Luke Barnard <lukeb@openmarket.com> Date: Fri, 27 Jan 2017 16:30:44 +0000 Subject: [PATCH 242/243] Replace inline styles for logos with css Also, give .mx_Login_logo a height so that if the image has not loaded yet, it will not change height (thanks @dbkr) --- src/components/views/login/VectorLoginHeader.js | 2 +- .../vector/css/matrix-react-sdk/structures/login/_Login.scss | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/views/login/VectorLoginHeader.js b/src/components/views/login/VectorLoginHeader.js index b08c4fa6..daa2b09c 100644 --- a/src/components/views/login/VectorLoginHeader.js +++ b/src/components/views/login/VectorLoginHeader.js @@ -30,7 +30,7 @@ module.exports = React.createClass({ render: function() { return ( <div className="mx_Login_logo"> - <img src={this.props.icon || "img/logo.png"} width="195" height="195" alt="Riot"/> + <img src={this.props.icon || "img/logo.png"} alt="Riot"/> </div> ); } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 30231b43..ca861c07 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -42,6 +42,11 @@ limitations under the License. .mx_Login_logo { text-align: center; + height: 195px; +} + +.mx_Login_logo img { + height: 100% } .mx_Login_field { From 6369d76a748fa919c9d26b30aa7d08e5e2519867 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson <matthew@matrix.org> Date: Fri, 27 Jan 2017 18:18:14 +0100 Subject: [PATCH 243/243] poor man's dark theme for MD codeblocks --- src/skins/vector/css/themes/_dark.scss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/skins/vector/css/themes/_dark.scss b/src/skins/vector/css/themes/_dark.scss index f00578cd..cf6d6eff 100644 --- a/src/skins/vector/css/themes/_dark.scss +++ b/src/skins/vector/css/themes/_dark.scss @@ -115,3 +115,12 @@ $progressbar-color: #000; .gm-scrollbar .thumb { filter: invert(); } + +.mx_EventTile_content .markdown-body pre, +.mx_EventTile_content .markdown-body code { + filter: invert(); +} + +.mx_EventTile_content .markdown-body pre code { + filter: none; +} \ No newline at end of file