Compare commits

..

417 Commits

Author SHA1 Message Date
David Baker
0e3d7563f7 Merge remote-tracking branch 'origin/develop' into dbkr/cross_signing 2019-02-01 20:33:38 +00:00
J. Ryan Stinnett
10f178e429 Fix background URL 2019-02-01 14:25:18 -06:00
J. Ryan Stinnett
6b359df6c6 Merge pull request #8364 from jryans/auth-bg
Add auth background image and update Riot logo
2019-02-01 14:13:36 -06:00
Bruno Windels
d532fe3482 Merge pull request #8363 from vector-im/nadonomy/home
New homepage
2019-02-01 19:21:36 +00:00
Bruno Windels
87c193df1a remove commented out code and close root element 2019-02-01 20:11:33 +01:00
Bruno Windels
acfe095710 center vertically 2019-02-01 20:08:18 +01:00
J. Ryan Stinnett
8bac9efd4c Update Riot logo 2019-02-01 13:04:48 -06:00
Bruno Windels
f22c02ecc6 update i18n 2019-02-01 20:00:13 +01:00
Bruno Windels
2411d5286b finish layout and add links to buttons 2019-02-01 19:58:30 +01:00
J. Ryan Stinnett
bf0b2ea101 Add glass effect 2019-02-01 12:10:55 -06:00
Nad Chishtie
e1e364f7c7 WIP home updates 2019-02-01 18:07:51 +00:00
David Baker
4d2444cb60 Bump to olm prerelease 2 for cross signing stuff 2019-02-01 17:10:43 +00:00
J. Ryan Stinnett
42a3668efa Add background image to auth pages 2019-02-01 10:31:40 -06:00
J. Ryan Stinnett
c899469168 Merge pull request #8358 from jryans/spell-homeserver
Spell homeserver correctly
2019-02-01 08:26:35 -06:00
J. Ryan Stinnett
3eb550a15c Spell homeserver correctly 2019-01-31 18:52:49 -06:00
J. Ryan Stinnett
3fad360f5f Revert "empirically if we want sourcemaps which work for dev we need eval-source-map"
This change causes Node to crash during builds in some configurations.  It also
grows the production bundle size to ~4x what it was before.

This reverts commit 9f4ce2dcf2.
2019-01-31 17:03:16 -06:00
Matthew Hodgson
9f4ce2dcf2 empirically if we want sourcemaps which work for dev we need eval-source-map 2019-01-31 23:30:22 +01:00
Bruno Windels
90140f6361 Merge pull request #8321 from vector-im/experimental
Merge redesign into develop
2019-01-30 12:49:37 +00:00
David Baker
1391706573 Merge pull request #8318 from vector-im/travis/fix-build
Disable room directory test because it doesn't work
2019-01-30 08:18:44 +00:00
Travis Ralston
cec8a77d52 Disable room directory test because it doesn't work
See enclosed comments.
2019-01-30 00:11:01 -07:00
J. Ryan Stinnett
0fa6aab5f5 Merge pull request #8307 from jryans/auth-overflow
Tweak auth overflow on Windows and Linux
2019-01-29 10:40:42 -06:00
J. Ryan Stinnett
b96fa43376 Tweak auth overflow on Windows and Linux 2019-01-29 10:20:11 -06:00
J. Ryan Stinnett
9da9310f4b Merge pull request #8296 from jryans/auth-server-type-selector
Clean up Custom Server Help dialog
2019-01-28 21:51:25 -06:00
J. Ryan Stinnett
b0e4a9b08b Clean up Custom Server Help dialog 2019-01-28 21:04:38 -06:00
David Baker
99150b9b49 Merge pull request #8283 from vector-im/dbkr/bustin_makes_me_feel_good
Cache-bust olm.wasm
2019-01-28 14:32:19 +00:00
David Baker
03de7f9901 Cache-bust olm.wasm
In the same way as we now do images/fonts
2019-01-28 14:09:28 +00:00
David Baker
68fd1f0fad Update to prerelease olm for key verification 2019-01-28 10:21:55 +00:00
Travis Ralston
1460bfd1fc Merge pull request #8280 from aaronraimist/disable-other-themes
Completely disable other themes for now (#8277)
2019-01-27 21:01:41 -07:00
Aaron Raimist
d0c503d6c8 Completely disable other themes for now (#8277)
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2019-01-27 21:28:30 -06:00
J. Ryan Stinnett
8ab82b7ed7 Merge pull request #8271 from vector-im/jryans/rm-team-server
Remove support for team servers
2019-01-25 16:48:32 -06:00
J. Ryan Stinnett
2d360eab74 Remove support for team servers 2019-01-25 16:14:04 -06:00
David Baker
3c0e8757c9 Merge pull request #8248 from vector-im/dbkr/target_blank
Add target="_blank" to footer links
2019-01-24 17:20:53 +00:00
David Baker
c773fcb946 Add target="_blank" to footer links
See https://github.com/matrix-org/matrix-react-sdk/pull/2496
2019-01-24 17:14:42 +00:00
David Baker
2aaed5d4c3 Doc broken will-navigate listener 2019-01-24 11:36:36 +00:00
David Baker
0022834af4 Merge pull request #8241 from vector-im/dbkr/fix_platform_name
Fix device names on desktop
2019-01-23 17:15:56 +00:00
David Baker
9aad7042a2 Fix device names on desktop
Apparently I really had a bad day with includes / indexOf
2019-01-23 16:53:50 +00:00
David Baker
9aa8b32df8 Merge pull request #8238 from vector-im/dbkr/lt_gt_desktop_notifs
Fix literal &lt/&gt in notifications
2019-01-23 16:14:39 +00:00
David Baker
4f32be9766 Merge pull request #8239 from vector-im/dbkr/desktop_app_email_link
Fix registration nextLink on desktop
2019-01-23 16:14:20 +00:00
David Baker
25ef0913bb Fix registration nextLink on desktop
Another instance of detecting the file: protocol

Fixes https://github.com/vector-im/riot-web/issues/8235
2019-01-23 15:25:04 +00:00
David Baker
a5ed5be3cf Fix literal &lt/&gt in notifications
Apparently I couldn't decide whether I was writing indexOf(...) > -1
or .includes()

Fixes https://github.com/vector-im/riot-web/issues/8230
2019-01-23 14:47:31 +00:00
David Baker
697c7f9fe9 Merge pull request #8233 from vector-im/dbkr/fetch_develop_deps_return
Add returns to fetch-develop-deps
2019-01-23 14:29:53 +00:00
David Baker
f7c2603d7c Merge pull request #8231 from vector-im/dbkr/electron_builder_20_38_5
Update electron builder
2019-01-23 11:41:21 +00:00
David Baker
a28691f14d Add returns to fetch-develop-deps
These look necessary for https://github.com/vector-im/riot-web/pull/8225
to work - the build is failing on jenkins
2019-01-23 11:40:21 +00:00
David Baker
ca9823b35e Merge remote-tracking branch 'origin/experimental' into dbkr/electron_builder_20_38_5 2019-01-23 11:12:25 +00:00
David Baker
91c037e578 Merge pull request #8225 from jryans/fetch-more-branches
Try fetching more branches for PRs
2019-01-23 11:12:01 +00:00
David Baker
5fe0af2500 Update electron builder
This resolves an issue where the auto-updater on Mac with a standard
(ie. non-admin) user account would leave the app in a broken,
unlaunchable state (although it's not obvious what change in
electron-builder fixes this).

Fixes https://github.com/vector-im/riot-web/issues/8215
2019-01-23 10:53:32 +00:00
J. Ryan Stinnett
6d7492d92a Add Riot logo via more targeted replacement 2019-01-22 22:41:16 -06:00
J. Ryan Stinnett
cf150fc575 Try fetching more branches for PRs
Attempt both the PR author's branch and the PR's target branch. This resolves
issues on experimental where we need matrix-react-sdk to also be experimental.
2019-01-22 21:28:09 -06:00
J. Ryan Stinnett
a2c84e7702 Remove dots between footer links 2019-01-22 19:51:24 -06:00
David Baker
f01f56626a Merge branch 'master' into develop 2019-01-22 11:51:13 +00:00
David Baker
09485f4b9d Merge branch 'release-v0.17.9' 2019-01-22 11:51:01 +00:00
David Baker
5a30b02be4 v0.17.9 2019-01-22 11:45:33 +00:00
David Baker
21eb8b9100 Prepare changelog for v0.17.9 2019-01-22 11:45:33 +00:00
David Baker
a0c205e4c9 v0.17.9 2019-01-22 11:44:13 +00:00
David Baker
40d7df793d Released js-sdk & react-sdk 2019-01-22 11:31:00 +00:00
J. Ryan Stinnett
71610ce24d Rename mx_Login_box to mx_AuthPage_modal and fold into AuthPage 2019-01-21 19:11:57 -06:00
J. Ryan Stinnett
41adcdc898 Rename LoginPage, Header, Footer views to Auth* 2019-01-21 19:11:57 -06:00
J. Ryan Stinnett
e98346e7cd Rename login directory to auth 2019-01-21 17:46:03 -06:00
J. Ryan Stinnett
0802aaae91 Convert slashes in public paths 2019-01-18 17:54:16 -06:00
J. Ryan Stinnett
cf0b2816c1 Only CSS references need to traverse
The path adjustment for assets in bundles is only needed with CSS files.  Paths
referenced in JS files are written to elements, where they are relative to the
document.
2019-01-18 15:59:29 -06:00
J. Ryan Stinnett
7418815637 Fix some path math on Windows 2019-01-18 15:59:29 -06:00
J. Ryan Stinnett
d71e84b790 Merge pull request #8159 from vector-im/jryans/versioned-img-urls
Use content hashing for font and image URLs
2019-01-18 14:28:09 -06:00
J. Ryan Stinnett
aa388f1173 Copy images used by home.html
This allows home.html to remain a regular HTML file without templating while
still having a copy of the rooms directory icon.
2019-01-18 08:39:16 -06:00
J. Ryan Stinnett
7a3df1c7d6 Support image URLs in HTML templates
Expands the image build process to also support the right paths when used in
HTML templates.
2019-01-18 08:39:16 -06:00
J. Ryan Stinnett
59bedae15e Define SCSS variable for resource dir
Adds a `$res` SCSS variable set to the path from the root SCSS file to the `res`
directory.

This is a different base path than previously used in CSS URLs (it goes up 3
directories instead of 2), because Webpack will now be resolving images relative
to the root SCSS file, so the path corresponds to a source tree location,
instead of a path in the build output tree.

Defining this variable has two main goals:

* URLs are a bit easier to read
* The path can be overridden, which is needed for riot-web themes like Status
2019-01-18 08:39:16 -06:00
J. Ryan Stinnett
a127077bde Lift font SCSS partials to theme root
This means that themes which include `light/css/_base.scss` (currently Dark and
Status) won't be forced to have Light's font-faces included.  This only really
matters for Status, which uses different fonts throughout.
2019-01-18 08:39:16 -06:00
J. Ryan Stinnett
49be03e845 Process images with Webpack
This adds a `file-loader` rule to the Webpack build so that any requests for
image resource will be output into the app's output directory, but with an extra
content has appended so that we can safely use a long cache lifetime.

The CSS and SCSS rules are also changed to use `css-loader` so that any `url`
inside is automatically processed by the new image rule above.
2019-01-18 08:39:09 -06:00
Travis Ralston
e3d807b053 Merge pull request #8156 from vector-im/develop
Develop->Experimental
2019-01-17 16:00:52 -07:00
David Baker
e5c0af478d v0.17.9-rc.1 2019-01-17 11:09:13 +00:00
David Baker
82cd88cf25 Prepare changelog for v0.17.9-rc.1 2019-01-17 11:09:12 +00:00
David Baker
e94e712d49 v0.17.9-rc.1 2019-01-17 11:07:42 +00:00
David Baker
021d6c5908 Add npm user arg for https://github.com/matrix-org/matrix-js-sdk/pull/749 2019-01-17 11:06:41 +00:00
David Baker
b09f0618a9 js-sdk & react-sdk rc.1 2019-01-17 10:56:34 +00:00
David Baker
ea17711616 Merge pull request #8150 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2019-01-17 10:27:05 +00:00
Weblate
e0b4875615 Merge remote-tracking branch 'origin/develop' into develop 2019-01-17 10:16:34 +00:00
Paulo Miranda
bbfd1448c5 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt_BR/
2019-01-17 10:16:34 +00:00
Paulo Miranda
d482d3c907 Translated using Weblate (Portuguese)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt/
2019-01-17 10:16:34 +00:00
David Baker
3236f72031 Electron 4.0.1 2019-01-17 10:16:15 +00:00
Michael Telatynski
67ba81e80a Merge pull request #8124 from vector-im/t3chguy/electron-mailto
Correct the copying of e-mail addresses in the electron app
2019-01-15 18:22:17 +00:00
Michael Telatynski
8c895cd435 Correct the copying of e-mail addresses in the electron app
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-01-15 08:37:01 +00:00
J. Ryan Stinnett
99b5695fec Fix SdkConfig import to use transformed module
This was originally added in #7755, which pulled in the original source for the
module, breaking ancient browsers without support for classes (#8082).
2019-01-11 17:51:19 -06:00
J. Ryan Stinnett
05f9cf453d Fix SdkConfig import to use transformed module
This was originally added in #7755, which pulled in the original source for the
module, breaking ancient browsers without support for classes (#8082).
2019-01-11 17:37:20 -06:00
J. Ryan Stinnett
3d7a74cc2b Merge pull request #7165 from ptman/patch-1
Start documenting keyboard shortcuts
2019-01-10 09:23:29 -06:00
Paul Tötterman
f7f9d8bfc3 Take Mac into account in keyboard shortcuts
Signed-off-by: Paul Tötterman <paul.totterman@iki.fi>
2019-01-09 17:37:54 +02:00
Paul Tötterman
ff95952969 Start documenting keyboard shortcuts
I'm sure I don't know all of them.

Signed-off-by: Paul Tötterman <paul.totterman@iki.fi>
2019-01-09 17:37:54 +02:00
David Baker
373c587ef8 Merge pull request #8003 from vector-im/develop
Merge develop into experimental
2019-01-03 18:56:03 +00:00
Paulo Miranda
ca024673b9 Translated using Weblate (Portuguese)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/pt/
2019-01-03 14:55:05 +00:00
Weblate
ef7d8a6d94 Merge remote-tracking branch 'origin/develop' into develop 2019-01-03 10:09:38 +00:00
Le Dang Trung
0cc8027fd9 Translated using Weblate (Vietnamese)
Currently translated at 48.6% (18 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/vi/
2019-01-03 10:09:38 +00:00
David Baker
9e085511fd Merge pull request #7943 from vector-im/dbkr/electron_custom_protocol
Electron: Load app from custom protocol
2019-01-03 10:09:31 +00:00
Le Dang Trung
344184f239 Added translation using Weblate (Vietnamese) 2018-12-25 03:54:18 +00:00
Matthew Hodgson
ad41229bb6 Merge pull request #7948 from vector-im/toml/experimental-feedback
Update issue templates
2018-12-24 09:54:59 +00:00
Tom Lant
bb5e78f723 Make the filename match the link 2018-12-24 07:13:44 +00:00
Tom Lant
2f473912ac Update issue templates 2018-12-24 07:09:41 +00:00
David Baker
62a49af23f Only serve origin migrator whilst migrating
as per comment
2018-12-21 22:21:06 +00:00
David Baker
751a1dc543 Add tool to migrate logins between origins
App checks at startup for an existing session, if there isn't one,
it will start the tool to check for a login in the file:// origin.
If there is one, it will copy the login over to the vector://vector
origin.

In principle this could also be used to migrate logins between
other origins on the web if this were ever required.

This includes a minified copy of the browserified js-sdk with
a getAllEndToEndSessions() function added to the crypto store
(https://github.com/matrix-org/matrix-js-sdk/pull/812). This is
not great, but for a short-lived tool this seems better than
introducing more entry points into webpack only used for the
electron app.
2018-12-21 19:14:25 +00:00
Nad Chishtie
8b97e2ceab Merge pull request #7927 from vector-im/nadonomy/accent
Added new colour var to all themes
2018-12-20 17:25:03 +00:00
Nad Chishtie
d01d67c2b0 Added new colour variable. 2018-12-20 16:08:13 +00:00
David Baker
4274c7287a Fix the IndexedDB worker
Looks like this was broken in the webpack 4 upgrade due to the
worker script setter and the bundle being re-ordered in index.html.

 * Remove the loop: we only use two scripts now, so import them
   explicitly
 * Remove outdated olm import code.
 * Stop generating a script import for each theme: we were pulling
   in 3 js files that did absolutely nothing.
 * Fix worker 'onmessage' scope (set it as a global rather than
   trying to make it an ES6 module which it isn't).
 * Fail hard if the indexeddb worker script isn't set to avoid
   this happening again.
2018-12-20 11:11:52 +00:00
Weblate
2830b6caf4 Merge remote-tracking branch 'origin/develop' into develop 2018-12-20 07:49:36 +00:00
David Baker
baf3df5736 Merge pull request #7920 from vector-im/dbkr/fix_indexeddb_worker
Fix the IndexedDB worker
2018-12-20 07:49:29 +00:00
David Baker
7527bdd2c7 Fix the IndexedDB worker
Looks like this was broken in the webpack 4 upgrade due to the
worker script setter and the bundle being re-ordered in index.html.

 * Remove the loop: we only use two scripts now, so import them
   explicitly
 * Remove outdated olm import code.
 * Stop generating a script import for each theme: we were pulling
   in 3 js files that did absolutely nothing.
 * Fix worker 'onmessage' scope (set it as a global rather than
   trying to make it an ES6 module which it isn't).
 * Fail hard if the indexeddb worker script isn't set to avoid
   this happening again.
2018-12-19 22:05:04 +00:00
Weblate
7965011be9 Merge remote-tracking branch 'origin/develop' into develop 2018-12-19 21:11:07 +00:00
Michael Telatynski
6c6819f27c Merge pull request #7919 from remram44/debian-pkg-is-electron
Make clear that the Debian package is for desktop
2018-12-19 21:11:01 +00:00
Remi Rampin
f7bdc9339c Make clear that the Debian package is for desktop 2018-12-19 21:05:21 +00:00
Weblate
7b43ec757c Merge remote-tracking branch 'origin/develop' into develop 2018-12-19 15:05:01 +00:00
J. Ryan Stinnett
8cd37d28da Clarify line number instructions
Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
2018-12-19 15:04:54 +00:00
David Baker
b6d70f4434 Missing include 2018-12-19 12:25:32 +00:00
David Baker
fc4e1485ad Electron: Load app from custom protocol
This puts the app into its own origin so it doesn't have access
to the filesystem via file:// URIs.

Next step: migrate over localstorage & indexeddb data from the old
origin...
2018-12-19 12:04:40 +00:00
Weblate
76833d478b Merge remote-tracking branch 'origin/develop' into develop 2018-12-19 09:48:16 +00:00
David Baker
b35903bb19 Merge pull request #7907 from vector-im/dbkr/electron_sandbox
Run the Desktop app in a sandbox
2018-12-19 09:48:10 +00:00
David Baker
ff45dc6430 Remove unused commented line 2018-12-19 09:29:05 +00:00
Weblate
b1c48ed346 Merge remote-tracking branch 'origin/develop' into develop 2018-12-18 19:14:28 +00:00
David Baker
5a549519a6 Merge pull request #7908 from vector-im/dbkr/electron_singleinstance_apiupdate
Update to new electron single instance API
2018-12-18 19:14:22 +00:00
David Baker
0e580635eb Update tests for new platform layout 2018-12-18 18:13:51 +00:00
David Baker
60d3076038 Update to new electron single instance API 2018-12-18 18:10:09 +00:00
David Baker
0c428efea0 lint 2018-12-18 18:03:47 +00:00
David Baker
19f1489c92 Run the Desktop app in a sandbox
* Turn off node integration in the electron renderer process
 * Enable the chromium sandbox to put the renderer into its own process
 * Expose just the ipc module with a preload script
 * Introduce a little IPC call wrapper so we can call into the
   renderer process and await on the result.
 * Use this in a bunch of places we previously used direct calls
   to electron modules.
 * Convert other uses of node, eg. use of process to derive the
   platform (just look at the user agent)
 * Strip out the desktopCapturer integration which doesn't appear
   to have ever worked (probably best to just wait until
   getDisplayMedia() is available in chrome at this point:
   https://github.com/vector-im/riot-web/issues/4880).
2018-12-18 17:42:55 +00:00
Tom Lant
b406da8755 Update issue templates 2018-12-18 11:04:34 +00:00
Tom Lant
e9fa1dd3a9 Update issue templates 2018-12-18 11:03:55 +00:00
Tom Lant
87c006da2c Update issue templates 2018-12-18 10:44:49 +00:00
Weblate
15a8560f9a Merge remote-tracking branch 'origin/develop' into develop 2018-12-18 01:22:08 +00:00
random
0daf7c9af7 Translated using Weblate (Italian)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2018-12-18 01:22:08 +00:00
J. Ryan Stinnett
17983c47d8 Link to CONTRIBUTING from JS SDK
The JS SDK's CONTRIBUTING file is a bit simpler to read. The Synapse version previously used includes mentions of Python lint tools that don't apply here.

Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
2018-12-18 01:22:03 +00:00
Weblate
6e0145eeea Merge remote-tracking branch 'origin/develop' into develop 2018-12-11 16:41:37 +00:00
Bruno Windels
df155293b1 Merge pull request #7834 from vector-im/rav/no_preserve_hs_url
Update the tests to match https://github.com/matrix-org/matrix-react-sdk/pull/2340
2018-12-11 16:41:31 +00:00
Richard van der Hoff
6ca0b3ad03 Update the tests to match https://github.com/matrix-org/matrix-react-sdk/pull/2340
See the react-sdk PR for some context.
2018-12-11 16:14:17 +00:00
Weblate
9111370349 Merge remote-tracking branch 'origin/develop' into develop 2018-12-10 13:54:18 +00:00
Akarshan Biswas
868ec82997 Translated using Weblate (Hindi)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hi/
2018-12-10 13:54:17 +00:00
David Baker
c2038a5ccc v0.17.8 2018-12-10 13:48:11 +00:00
David Baker
cb628d0799 Prepare changelog for v0.17.8 2018-12-10 13:48:11 +00:00
David Baker
7c4f67b1a1 v0.17.8 2018-12-10 13:46:57 +00:00
David Baker
a82f9d5266 Released js-sdk & react-sdk 2018-12-10 13:46:35 +00:00
David Baker
b6493a2f82 v0.17.8-rc.1 2018-12-06 12:49:53 +00:00
David Baker
74c81d6921 v0.17.8-rc.1 2018-12-06 12:48:34 +00:00
David Baker
02eb8a284c Actually revert electron app version bump
last one was in fasct the main version file
2018-12-06 12:47:18 +00:00
David Baker
bf2d792d94 Revert electron app version bump 2018-12-06 12:45:38 +00:00
David Baker
10294ab240 react-sdk rc.2 2018-12-06 12:42:52 +00:00
David Baker
88ff92a658 v0.17.8-rc.1 2018-12-06 11:21:42 +00:00
David Baker
8d9987a6b5 Prepare changelog for v0.17.8-rc.1 2018-12-06 11:21:42 +00:00
David Baker
6ba471421f v0.17.8-rc.1 2018-12-06 11:20:33 +00:00
David Baker
5310b4c14b js-sdk & react-sdk rc.1 2018-12-06 11:20:00 +00:00
angelo-martinovic
d0a35f378b Translated using Weblate (Croatian)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hr/
2018-12-05 17:37:24 +00:00
angelo-martinovic
2648fe066e Added translation using Weblate (Croatian) 2018-12-05 16:26:02 +00:00
David Baker
69567f9806 Merge pull request #7784 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2018-12-05 16:00:19 +00:00
Weblate
0007e669fb Merge remote-tracking branch 'origin/develop' into develop 2018-12-05 15:55:37 +00:00
David Baker
7247e97ff0 Update to electron 3.0.10 2018-12-05 15:55:20 +00:00
Weblate
844dbcf740 Merge remote-tracking branch 'origin/develop' into develop 2018-11-29 21:56:33 +00:00
Travis Ralston
10671aa06e Merge pull request #7755 from vector-im/travis/rageshake-console
Add a function to send a rageshake from the console
2018-11-29 14:56:27 -07:00
Travis Ralston
373f850002 Safely bind console.log and default withLogs to true 2018-11-29 13:13:46 -07:00
Travis Ralston
ac34ca11df Appease the linter 2018-11-27 16:11:58 -07:00
Travis Ralston
710e295b44 Add a function to send a rageshake from the console
This is mostly useful for cases when the UI is broken or the user can't access the button because they aren't logged in. This is particularly helpful for troubleshooting issues with .well-known discovery if/when they come up.

Ref: https://github.com/vector-im/riot-web/issues/4802
2018-11-27 16:03:37 -07:00
Bruno Windels
22a1a7343b Merge branch 'develop' into experimental 2018-11-26 13:11:03 +01:00
Weblate
c3b05cb34e Merge remote-tracking branch 'origin/develop' into develop 2018-11-23 07:53:16 +00:00
David Baker
b5c27ca074 Merge pull request #7738 from vector-im/revert-7737-revert-7490-lint
Re-apply "Run lint on travis builds and use modern node versions"
2018-11-23 07:53:11 +00:00
David Baker
704a599811 Put back modernizr import
In a way that hopefully makes the linter happy and makes it implicit
that it's side-effecting a global.
2018-11-22 18:27:53 +00:00
David Baker
1dfaf70562 Revert "Revert "Run lint on travis builds and use modern node versions"" 2018-11-22 18:25:55 +00:00
Weblate
dc92b126c7 Merge remote-tracking branch 'origin/develop' into develop 2018-11-22 18:18:06 +00:00
David Baker
c6f70cb72c Merge pull request #7737 from vector-im/revert-7490-lint
Revert "Run lint on travis builds and use modern node versions"
2018-11-22 18:18:01 +00:00
David Baker
f701e2601a Revert "Run lint on travis builds and use modern node versions" 2018-11-22 18:17:09 +00:00
Weblate
8cb8890ab3 Merge remote-tracking branch 'origin/develop' into develop 2018-11-22 18:01:09 +00:00
David Baker
a7a5679bfa Merge pull request #7490 from aaronraimist/lint
Run lint on travis builds and use modern node versions
2018-11-22 18:01:04 +00:00
David Baker
03587abff1 Update .travis.yml
Remove node 6
2018-11-22 17:54:02 +00:00
Weblate
496a5baffd Merge remote-tracking branch 'origin/develop' into develop 2018-11-22 17:06:38 +00:00
David Baker
8996b6b429 Merge branch 'master' into develop 2018-11-22 17:06:25 +00:00
David Baker
d483fb0605 v0.17.7 2018-11-22 16:58:48 +00:00
David Baker
c2ec5f39ab Prepare changelog for v0.17.7 2018-11-22 16:58:48 +00:00
David Baker
58f927538f v0.17.7 2018-11-22 16:56:41 +00:00
David Baker
d9434c7af5 Bump js-sdk & react-sdk 2018-11-22 16:56:13 +00:00
David Baker
6f54ff9e7f Fix missing js-sdk logging
Some of the js-sdk logging was going missing due to js-sdk's
loglevel library being initialised before the rageshake logging.

Fix by doing the rageshake setup within an import, as commented.
2018-11-22 16:43:15 +00:00
Weblate
9eaba3d3f5 Merge remote-tracking branch 'origin/develop' into develop 2018-11-22 16:32:45 +00:00
David Baker
4805858ecb Merge pull request #7736 from vector-im/dbkr/fix_missing_logging
Fix missing js-sdk logging
2018-11-22 16:32:39 +00:00
David Baker
092ae7ef2f Fix missing js-sdk logging
Some of the js-sdk logging was going missing due to js-sdk's
loglevel library being initialised before the rageshake logging.

Fix by doing the rageshake setup within an import, as commented.
2018-11-22 16:21:55 +00:00
David Baker
bbb128b672 Merge branch 'develop' into lint 2018-11-22 11:23:02 +00:00
Weblate
15b8d410c0 Merge remote-tracking branch 'origin/develop' into develop 2018-11-21 19:25:36 +00:00
David Baker
8298e73205 Argh, npm, why are you so awful? 2018-11-21 19:25:11 +00:00
Weblate
819e6d9219 Merge remote-tracking branch 'origin/develop' into develop 2018-11-21 19:14:09 +00:00
David Baker
d2c87a0331 Fix jenkins build 2018-11-21 19:13:42 +00:00
Weblate
286c5e8895 Merge remote-tracking branch 'origin/develop' into develop 2018-11-21 19:00:29 +00:00
David Baker
7df77d7e5d Recent node please 2018-11-21 19:00:11 +00:00
Bruno Windels
c7c271fb01 Merge branch 'develop' into experimental 2018-11-21 10:38:16 +00:00
Weblate
6804a00af0 Merge remote-tracking branch 'origin/develop' into develop 2018-11-19 15:30:26 +00:00
David Baker
81c75eb14b Merge branch 'master' into develop 2018-11-19 15:30:01 +00:00
David Baker
e604dfe9e8 v0.17.6 2018-11-19 15:24:34 +00:00
David Baker
135a5d38ff Prepare changelog for v0.17.6 2018-11-19 15:24:33 +00:00
David Baker
07ed2e8d0a v0.17.6 2018-11-19 15:23:08 +00:00
David Baker
2a594414e7 released js-sdk / react-sdk 2018-11-19 15:21:12 +00:00
Weblate
d3496c0cb9 Merge remote-tracking branch 'origin/develop' into develop 2018-11-16 19:36:38 +00:00
Akarshan Biswas
c15151a0af Translated using Weblate (Hindi)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hi/
2018-11-16 19:36:37 +00:00
Travis Ralston
6d1640194e Merge pull request #7710 from vector-im/travis/terms-auth-improvements
Add $accent-color-50pct as a CSS variable to the Status theme
2018-11-16 12:36:32 -07:00
Akarshan Biswas
06740e5480 Translated using Weblate (Hindi)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/hi/
2018-11-16 15:09:25 +00:00
Travis Ralston
c338e491fe Add $accent-color-50pct as a CSS variable to the Status theme 2018-11-15 20:21:20 -07:00
David Baker
a570ee53a8 v0.17.6-rc.2 2018-11-15 15:40:54 +00:00
David Baker
417a31f1fe Prepare changelog for v0.17.6-rc.2 2018-11-15 15:40:53 +00:00
David Baker
a4a6f070e4 v0.17.6-rc.2 2018-11-15 15:38:42 +00:00
David Baker
d287abcd68 Update js-sdk to 0.14 & react-sdk to rc.2
rc.1 used js-sdk 0.13 which did not use the new Olm API.
2018-11-15 15:37:20 +00:00
David Baker
79fd38a899 v0.17.6-rc.1 2018-11-15 12:23:06 +00:00
David Baker
0aa0773ef7 Prepare changelog for v0.17.6-rc.1 2018-11-15 12:23:05 +00:00
David Baker
154e8bdb50 v0.17.6-rc.1 2018-11-15 12:21:16 +00:00
David Baker
8f37c22917 releaesed js-sdk & react-sdk rc.1 2018-11-15 12:20:42 +00:00
David Baker
0aeef3187a Merge pull request #7708 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2018-11-15 12:13:47 +00:00
Weblate
8903eebe17 Merge remote-tracking branch 'origin/develop' into develop 2018-11-13 19:02:46 +00:00
David Baker
cc4d0af713 Merge branch 'master' into develop 2018-11-13 19:02:34 +00:00
David Baker
4a217d9e9f v0.17.5 2018-11-13 18:54:25 +00:00
David Baker
122caf7a95 Prepare changelog for v0.17.5 2018-11-13 18:54:25 +00:00
David Baker
a1e5c72eb9 v0.17.5 2018-11-13 18:52:59 +00:00
David Baker
7dd163ac85 bump react-sdk 2018-11-13 18:52:16 +00:00
Weblate
01432d3848 Merge remote-tracking branch 'origin/develop' into develop 2018-11-13 18:19:27 +00:00
toriko
d3cae13552 Translated using Weblate (Japanese)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ja/
2018-11-13 18:19:26 +00:00
David Baker
061838bdab Merge branch 'master' into develop 2018-11-13 18:19:10 +00:00
David Baker
24846a1d64 v0.17.4 2018-11-13 18:11:12 +00:00
David Baker
0b31d32793 Prepare changelog for v0.17.4 2018-11-13 18:11:12 +00:00
David Baker
71403980cc v0.17.4 2018-11-13 18:09:48 +00:00
David Baker
f8ab754af4 bump react-sdk 2018-11-13 18:09:10 +00:00
Weblate
fd3ed9e119 Merge remote-tracking branch 'origin/develop' into develop 2018-11-09 10:53:49 +00:00
David Baker
b53c86c5f4 Merge pull request #7673 from aaronraimist/add-japanese
Add Japanese (#7599)
2018-11-09 10:53:43 +00:00
Weblate
cbe6d31ee3 Merge remote-tracking branch 'origin/develop' into develop 2018-11-08 21:37:30 +00:00
Travis Ralston
5810221181 Merge pull request #7674 from jryans/webpack-bind-all
Allow Webpack dev server to listen to all interfaces
2018-11-08 14:37:24 -07:00
J. Ryan Stinnett
e9f4594eb9 Allow Webpack dev server to listen to all interfaces
Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
2018-11-08 20:55:51 +01:00
Aaron Raimist
2f991d190f Add Japanese (#7599)
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-11-08 13:31:09 -06:00
Victor Grousset
ae90b9877a Translated using Weblate (Esperanto)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/eo/
2018-11-06 12:22:01 +00:00
Weblate
786c2a1fd7 Merge remote-tracking branch 'origin/develop' into develop 2018-11-02 15:39:21 +00:00
Travis Ralston
eef4f7c4cf Merge pull request #7637 from vector-im/travis/cleanup-request
Remove the request-only stuff we don't need anymore
2018-11-02 09:39:15 -06:00
Travis Ralston
36cc5de0e7 Remove the request-only stuff we don't need anymore
This was introduced in https://github.com/matrix-org/matrix-react-sdk/pull/2250 but can be pulled out due to https://github.com/matrix-org/matrix-js-sdk/pull/770. See https://github.com/vector-im/riot-web/issues/7634 for more information about the future.
2018-10-31 13:05:36 -06:00
Bruno Windels
ade0f34c6f Merge branch 'develop' into experimental 2018-10-31 14:36:43 +01:00
Weblate
854798f470 Merge remote-tracking branch 'origin/develop' into develop 2018-10-29 14:31:01 +00:00
David Baker
ca305399c3 npm update 2018-10-29 14:30:35 +00:00
Weblate
00a8d44ce1 Merge remote-tracking branch 'origin/develop' into develop 2018-10-29 14:28:30 +00:00
David Baker
79c7f331c9 develop js & react sdk deps 2018-10-29 14:28:13 +00:00
David Baker
409c48efcb Merge branch 'master' into develop 2018-10-29 14:27:46 +00:00
David Baker
29f3ff155a v0.17.3 2018-10-29 14:22:55 +00:00
David Baker
6c1deb41be Prepare changelog for v0.17.3 2018-10-29 14:22:55 +00:00
David Baker
4574415e97 v0.17.3 2018-10-29 14:20:59 +00:00
David Baker
f05646c5a1 released js-sdk & react-sdk 2018-10-29 14:20:12 +00:00
Weblate
a6f8f707f3 Merge remote-tracking branch 'origin/develop' into develop 2018-10-29 05:23:04 +00:00
పవి
e19dbe4f3b Translated using Weblate (Telugu)
Currently translated at 27.0% (10 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/te/
2018-10-29 05:23:04 +00:00
Travis Ralston
d393cd67f7 Merge pull request #7615 from vector-im/t3chguy/fix_author_of_electron_app
Correct the author of the electron app
2018-10-28 23:22:58 -06:00
Michael Telatynski
c80f5ddcd1 Correct the author of the electron app
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2018-10-27 11:04:05 +01:00
Aaron Raimist
a02009d31f Update package-lock.json
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-26 22:21:40 -05:00
Aaron Raimist
a4ed1afeb5 Update babel-eslint to 8.1.1
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-26 22:07:35 -05:00
Travis Ralston
1fea7c022e Fix order of operations for npm install on Travis CI 2018-10-26 20:44:14 -06:00
Travis Ralston
e7f5aee9fb Regenerate package-lock.json (again) 2018-10-26 20:43:53 -06:00
Travis Ralston
d3805f7545 Regenerate package-lock.json and upgrade eslint again 2018-10-26 20:12:43 -06:00
Travis Ralston
70891f41a5 Merge branch 'develop' into lint 2018-10-26 19:56:33 -06:00
Travis Ralston
cebba5bfa3 Merge pull request #7552 from vector-im/travis/permalink-routing
Mock fs, tls, and net to support request in the browser
2018-10-26 14:22:38 -06:00
Travis Ralston
0f5c62d3cc Regenerate package-lock.json
due to conflicts
2018-10-26 10:06:27 -06:00
Travis Ralston
f9fa338960 Merge branch 'develop' into travis/permalink-routing 2018-10-26 09:22:13 -06:00
Bruno Windels
18daa186b0 Merge branch 'develop' into experimental 2018-10-26 15:33:57 +02:00
Travis Ralston
ad7ac26ff3 Upgrade babel-eslint and regenerate package-lock.json 2018-10-25 16:10:27 -06:00
Travis Ralston
10efaaa078 Merge branch 'develop' into lint 2018-10-25 16:06:02 -06:00
Travis Ralston
bb353b940e Merge pull request #7598 from jryans/update-chokidar
Update chokidar to transitively get newer fsevents
2018-10-25 15:53:23 -06:00
J. Ryan Stinnett
9732d10f24 Update chokidar to transitively get newer fsevents
Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
2018-10-25 23:04:25 +02:00
David Baker
9b80aa76ce Merge pull request #7385 from vector-im/dbkr/wasm
Support WebAssembly version of Olm
2018-10-25 15:58:24 +01:00
David Baker
bc935012da Update to Olm 3 2018-10-25 15:44:22 +01:00
Travis Ralston
e4025f1aff Mock fs, tls, and net to support request in the browser
fs is mocked using memfs, which needs to be installed at all 3 layers because webpack is silly
2018-10-24 16:59:14 -06:00
Bruno Windels
03dcc97ce9 add new variables to status 2018-10-24 13:56:42 +02:00
David Baker
e2b55315a6 v0.17.3-rc.1 2018-10-24 11:31:59 +01:00
David Baker
1f8b0f2135 Prepare changelog for v0.17.3-rc.1 2018-10-24 11:31:59 +01:00
David Baker
a9a45dc32b v0.17.3-rc.1 2018-10-24 11:30:44 +01:00
David Baker
f7138c0516 react-sdk & js-sdk rc.1 2018-10-24 11:27:01 +01:00
David Baker
d080a204a3 electron 3.0.5 2018-10-24 11:12:51 +01:00
David Baker
fd31d58128 Merge pull request #7549 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2018-10-24 10:26:13 +01:00
Bruno Windels
a478f02c5b Merge pull request #7541 from vector-im/bwindels/initialtimelinetweaks
Redesign: apply changes from dharma theme to status theme
2018-10-23 19:36:04 +00:00
Bruno Windels
ffc0d3cda0 Merge pull request #7540 from vector-im/bwindels/alwaysshowdharma
Redesign: ignore setting and always show dharma theme for now
2018-10-23 19:35:53 +00:00
Bruno Windels
c68770c0aa ignore setting and always show dharma theme for now 2018-10-23 15:51:06 +02:00
Bruno Windels
ab1f68df93 apply changes from dharma theme to status theme 2018-10-23 15:50:09 +02:00
Aaron Raimist
b7622d8551 Use babel-eslint 7.2.3 instead
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-19 23:00:02 -05:00
Aaron Raimist
c470e2dcfb Actually I'll just fix the errors myself and get rid of lintwithexclusions
I seemingly need babel-eslint version 8 for VectorHomePage.js but might as well just upgrade to version 10

Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-19 21:04:55 -05:00
Aaron Raimist
fe11ae73db Run lintwithexclusions on travis builds
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-19 20:59:07 -05:00
Aaron Raimist
70fe4f67ee eslint --fix on test/ 2018-10-19 20:59:07 -05:00
Aaron Raimist
6abd1de8b8 eslint --fix on src/
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-19 20:59:06 -05:00
Weblate
16b150039a Merge remote-tracking branch 'origin/develop' into develop 2018-10-19 15:07:56 +00:00
Bruno Windels
ca1dec8e13 Merge branch 'master' into develop 2018-10-19 17:07:29 +02:00
Bruno Windels
f81d3bc903 Merge branch 'release-v0.17.2' 2018-10-19 17:00:44 +02:00
Bruno Windels
88132067ad update version in package lock file 2018-10-19 17:00:13 +02:00
Bruno Windels
f5eff7d349 v0.17.2 2018-10-19 16:54:27 +02:00
Bruno Windels
5f35b9903d Prepare changelog for v0.17.2 2018-10-19 16:54:26 +02:00
Bruno Windels
221f75542a v0.17.2 2018-10-19 16:51:26 +02:00
David Baker
d0fcf3c952 Don't set tags on notifications
They are to suppress notifications that don't want to be shown in
addition to each other. This makes no sense for our notifications:
they're each for independent messages. Also settings tags on
notifications makes electron crash on windows when you close the
notif, as per https://github.com/vector-im/riot-web/issues/7512
2018-10-19 16:47:16 +02:00
Bruno Windels
62f664c592 update matrix-react-sdk to 0.14.1 2018-10-19 16:45:39 +02:00
Weblate
deaeb1a715 Merge remote-tracking branch 'origin/develop' into develop 2018-10-18 18:26:13 +00:00
David Baker
c1dfbd6993 Merge pull request #7518 from vector-im/dbkr/better_fix_for_windows_crashes
Don't set tags on notifications
2018-10-18 19:26:08 +01:00
David Baker
2854c0969b Don't set tags on notifications
They are to suppress notifications that don't want to be shown in
addition to each other. This makes no sense for our notifications:
they're each for independent messages. Also settings tags on
notifications makes electron crash on windows when you close the
notif, as per https://github.com/vector-im/riot-web/issues/7512
2018-10-18 19:07:59 +01:00
Weblate
1de5e61888 Merge remote-tracking branch 'origin/develop' into develop 2018-10-18 17:44:16 +00:00
David Baker
47493fa7d9 Merge branch 'master' into develop 2018-10-18 18:43:58 +01:00
David Baker
ecfafc613f Merge branch 'release-v0.17.0' 2018-10-18 18:43:29 +01:00
David Baker
a7ea51fc3e v0.17.1 2018-10-18 18:39:58 +01:00
David Baker
35147c6514 Prepare changelog for v0.17.1 2018-10-18 18:39:58 +01:00
David Baker
2518976326 v0.17.1 2018-10-18 18:38:54 +01:00
David Baker
40cb46de46 Merge pull request #7517 from vector-im/dbkr/stop_electron_crashing
Stop electron crashing
2018-10-18 18:35:38 +01:00
David Baker
bb907d49c9 Typo 2018-10-18 18:35:01 +01:00
David Baker
231ca253f2 Stop electron crashing
Workaround temporarily by not closing notifs on win32 as per
comment.

Fixes https://github.com/vector-im/riot-web/issues/7512
2018-10-18 18:31:06 +01:00
Bruno Windels
9d33255850 remove foo file to trigger jenkins 2018-10-17 11:29:04 +02:00
Bruno Windels
c5d6fc387c Merge branch 'bwindels/redesign' into experimental 2018-10-17 11:25:03 +02:00
Bruno Windels
4a03e6d307 Merge branch 'develop' into bwindels/redesign 2018-10-17 11:24:33 +02:00
Bruno Windels
dbd4d5e779 update /experimental 2018-10-16 18:56:32 +02:00
Weblate
2a80d33a89 Merge remote-tracking branch 'origin/develop' into develop 2018-10-16 10:12:26 +00:00
David Baker
2202ff1ccd update deps 2018-10-16 11:12:13 +01:00
Weblate
a138a9c6ec Merge remote-tracking branch 'origin/develop' into develop 2018-10-16 10:10:09 +00:00
David Baker
3d8d66547f Merge branch 'master' into develop 2018-10-16 11:09:55 +01:00
David Baker
17e84bf815 Merge branch 'release-v0.17.0' 2018-10-16 11:09:33 +01:00
David Baker
41540842eb v0.17.0 2018-10-16 11:00:39 +01:00
David Baker
65cc3000ee Prepare changelog for v0.17.0 2018-10-16 11:00:39 +01:00
David Baker
1fc8592ef6 v0.17.0 2018-10-16 10:59:18 +01:00
David Baker
4afb5caa4e Released js-sdk & react-sdk 2018-10-16 10:58:29 +01:00
Bruno Windels
ee137ce44c Merge branch 'develop' into bwindels/redesign 2018-10-16 11:58:15 +02:00
Bruno Windels
9830ab3aad Merge pull request #7503 from vector-im/dbkr/ll_phased_rollout
Phased rollout of lazyloading
2018-10-16 11:44:49 +02:00
David Baker
005e4aa1bd Phased rollout of lazyloading 2018-10-16 10:43:15 +01:00
David Baker
de7d3ba701 Change electron build script paths
Because electron builder has decided to output the mac assets to
somewhere else today.
2018-10-16 10:26:04 +01:00
David Baker
05884ba279 Merge pull request #7501 from vector-im/dbkr/update_electron_builder_relbranch
Update to latest electron builder
2018-10-16 09:40:30 +01:00
David Baker
a0e067510c Update to latest electron builder
Tested auto update on both windows (ia32) and mac, seems to work!
2018-10-16 09:39:30 +01:00
Weblate
2784d1b31c Merge remote-tracking branch 'origin/develop' into develop 2018-10-16 08:37:33 +00:00
Tom Van Eyck
8e9d7d97f6 Translated using Weblate (Dutch)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/nl/
2018-10-16 08:37:31 +00:00
David Baker
f483fd3916 Merge pull request #7498 from vector-im/dbkr/update_electron_builder
Update to latest electron builder
2018-10-16 09:37:27 +01:00
David Baker
4e65b5f73b Update to latest electron builder
Tested auto update on both windows (ia32) and mac, seems to work!
2018-10-15 18:13:47 +01:00
Bruno Windels
0d7093fe76 Merge branch 'bwindels/redesign' into experimental 2018-10-15 14:13:11 +02:00
Travis Ralston
47ade14e07 Merge pull request #6831 from MTRNord/patch-8
Fix Tinter.setTheme to not fire using Firefox
2018-10-12 13:55:43 -06:00
David Baker
5ad9d2094a v0.17.0-rc.1 2018-10-11 16:03:53 +01:00
David Baker
848bd8f553 Prepare changelog for v0.17.0-rc.1 2018-10-11 16:03:52 +01:00
David Baker
74f2266d89 v0.17.0-rc.1 2018-10-11 16:02:48 +01:00
David Baker
03323bc294 Merge remote-tracking branch 'origin/develop' into release-v0.17.0 2018-10-11 16:02:20 +01:00
David Baker
df1eb9f5cb Merge pull request #7483 from vector-im/revert-7429-bwindels/alsocommitlockfile
Revert "also commit the lock file when bumping version as it is now committed to the repo"
2018-10-11 16:02:09 +01:00
David Baker
aaa9c82758 Revert "also commit the lock file when bumping version as it is now committed to the repo" 2018-10-11 16:01:56 +01:00
David Baker
ba51c0721e js-sdk & react-sdk rc.1 2018-10-11 15:42:30 +01:00
David Baker
845b40d815 Bump electron version to 3 2018-10-11 12:06:30 +01:00
David Baker
69adab2c9f Merge pull request #7478 from RiotTranslateBot/weblate-riot-web-riot-web
Update from Weblate.
2018-10-11 11:08:59 +01:00
David Baker
80f0964342 Translated using Weblate (English (United States))
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/en_US/
2018-10-11 09:58:31 +00:00
Weblate
56372b6a5f Merge remote-tracking branch 'origin/develop' into develop 2018-10-11 09:29:42 +00:00
Matthew Hodgson
af4d3da7a8 link to Here Be Dragons 2018-10-11 10:29:28 +01:00
Bruno Windels
eed9c56c51 Merge branch 'develop' into matthew/dharma 2018-10-11 09:56:07 +02:00
Weblate
ae1971f5d2 Merge remote-tracking branch 'origin/develop' into develop 2018-10-10 16:35:17 +00:00
Matthew Hodgson
5c184e501d dep on dev sdks 2018-10-10 17:35:06 +01:00
Weblate
3488f04dd4 Merge remote-tracking branch 'origin/develop' into develop 2018-10-09 03:18:28 +00:00
Travis Ralston
92db2b85f3 Merge pull request #7444 from aaronraimist/promise-defer
Fix riot-web Promise.defer warnings (#7409)
2018-10-08 21:18:22 -06:00
Aaron Raimist
d836ad8dbc Undo turning warnings back on (#7409)
I guess that turns on warnings for everything, not just riot-web

Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-05 11:05:25 -05:00
Aaron Raimist
d035efb14e Fix lint warnings and turn warnings back on (#7409)
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-05 10:41:45 -05:00
Aaron Raimist
401c85ad5b Fix Promise.defer warnings in WebPlatform.js (#7409)
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-05 10:23:06 -05:00
Aaron Raimist
54c46df0dc Fix Promise.defer warnings in index.js (#7409)
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-05 10:23:06 -05:00
Aaron Raimist
a5fb33de02 Fix Promise.defer warnings in getconfig.js (#7409)
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-05 10:23:05 -05:00
Weblate
4c2dace4ca Merge remote-tracking branch 'origin/develop' into develop 2018-10-05 14:59:05 +00:00
Travis Ralston
b09aa2cff3 Merge pull request #7459 from vector-im/travis/https-clone
Use HTTPS cloning for riot-web too
2018-10-05 08:58:58 -06:00
David Baker
e277d02f83 Merge remote-tracking branch 'origin/develop' into dbkr/wasm 2018-10-05 14:04:43 +01:00
Weblate
f31ccaacef Merge remote-tracking branch 'origin/develop' into develop 2018-10-05 13:00:28 +00:00
Bruno Windels
d4576dcf9f Merge pull request #7463 from vector-im/dbkr/disable_auto_reload
Disable webpack-dev-server auto reload
2018-10-05 15:00:23 +02:00
David Baker
4e6f48df03 Disable webpack-dev-server auto reload
As per comment
2018-10-05 13:56:37 +01:00
Weblate
218da8a18a Merge remote-tracking branch 'origin/develop' into develop 2018-10-05 12:25:31 +00:00
David Baker
e28180f3d5 Merge pull request #7462 from vector-im/dbkr/gone_away_is_the_bluebird
Silence bluebird warnings
2018-10-05 13:25:26 +01:00
David Baker
bccccb2758 Silence bluebird warnings 2018-10-05 12:15:29 +01:00
Besnik Bleta
46587450cb Translated using Weblate (Albanian)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sq/
2018-10-05 10:10:27 +00:00
Besnik Bleta
f17712fab3 Translated using Weblate (Albanian)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/sq/
2018-10-05 10:06:27 +00:00
David Baker
c5ee92f4c3 Fall back to legacy asm.js Olm 2018-10-04 20:11:34 +01:00
Weblate
24f292f360 Merge remote-tracking branch 'origin/develop' into develop 2018-10-04 17:33:39 +00:00
David Baker
4f5b61b798 Translated using Weblate (English (United States))
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/en_US/
2018-10-04 17:33:38 +00:00
Travis Ralston
a9e98e6711 Merge pull request #7443 from MTRNord/patch-9
Fix reskindex on matrix-react-side not being called if using build script
2018-10-04 11:33:34 -06:00
Travis Ralston
3286acd306 Use HTTPS cloning for riot-web too 2018-10-04 11:23:42 -06:00
Weblate
085dcfe7bc Merge remote-tracking branch 'origin/develop' into develop 2018-10-04 11:45:20 +00:00
toriko
b6d5f350e4 Translated using Weblate (Japanese)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ja/
2018-10-04 11:45:19 +00:00
Bruno Windels
4d3df8b86b Merge pull request #7454 from vector-im/dbkr/double_closing_tags
Fix double-closed tags
2018-10-04 13:45:14 +02:00
David Baker
a356264801 Fix double-closed tags 2018-10-04 10:49:28 +01:00
Weblate
d32dbb6d10 Merge remote-tracking branch 'origin/develop' into develop 2018-10-03 04:53:45 +00:00
IMIN
70319e4939 Translated using Weblate (Korean)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2018-10-03 04:53:44 +00:00
Travis Ralston
92b2980b41 Merge pull request #7435 from aaronraimist/patch-1
Document how to turn off Piwik and bug reports (#6738)
2018-10-02 22:53:40 -06:00
Aaron Raimist
eabcc9261d Add text saying that bug reports aren't automatic
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-02 22:58:49 -05:00
Marcel
ad5be455bb Fix reskindex on matrix-react-side not being called if using build script 2018-10-03 02:00:35 +02:00
IMIN
20ce990763 Translated using Weblate (Korean)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ko/
2018-10-02 17:45:43 +00:00
David Baker
30f0a7932b Merge remote-tracking branch 'origin/develop' into dbkr/wasm 2018-10-02 16:58:31 +01:00
Weblate
33d248d1e4 Merge remote-tracking branch 'origin/develop' into develop 2018-10-02 11:13:09 +00:00
David Baker
f69869ac1e Merge pull request #7429 from vector-im/bwindels/alsocommitlockfile
also commit the lock file when bumping version as it is now committed to the repo
2018-10-02 12:13:04 +01:00
Aaron Raimist
d256194255 Document how to turn off Piwik and bug reports (#6738) 2018-10-01 20:21:13 -05:00
Bruno Windels
4de63e612d also commit the lock file when bumping version as it is now committed to the repo 2018-10-01 17:18:31 +02:00
Weblate
7f50acd886 Merge remote-tracking branch 'origin/develop' into develop 2018-10-01 15:04:22 +00:00
giqtaqisi
18f8ea8519 Translated using Weblate (Lojban)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/jbo/
2018-10-01 15:04:21 +00:00
Bruno Windels
0a4e3379f9 Merge branch 'master' into develop 2018-10-01 17:03:54 +02:00
giqtaqisi
a1a417329c Translated using Weblate (Lojban)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/jbo/
2018-10-01 13:12:29 +00:00
Weblate
1f81ed306d Merge remote-tracking branch 'origin/develop' into develop 2018-10-01 08:41:20 +00:00
giqtaqisi
2d78bc95ec Translated using Weblate (Lojban)
Currently translated at 62.1% (23 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/jbo/
2018-10-01 08:41:19 +00:00
Silvano
4f720e9c3b Translated using Weblate (Italian)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/it/
2018-10-01 08:41:19 +00:00
Ryu SASAOKA
0374c91ee7 Translated using Weblate (English (United States))
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/en_US/
2018-10-01 08:41:19 +00:00
David Baker
894ad32e83 Merge pull request #7393 from vector-im/dbkr/update_deps_2
Update a bunch of deps
2018-10-01 09:41:14 +01:00
giqtaqisi
f3ee639dcc Added translation using Weblate (Lojban) 2018-09-30 14:30:15 +00:00
toriko
74a2b5a958 Translated using Weblate (Japanese)
Currently translated at 100.0% (37 of 37 strings)

Translation: Riot Web/riot-web
Translate-URL: https://translate.riot.im/projects/riot-web/riot-web/ja/
2018-09-30 09:58:26 +00:00
Bruno Windels
aac40c8c58 Merge branch 'develop' into matthew/dharma 2018-09-28 16:52:38 +02:00
Bruno Windels
4e4906605b Merge pull request #7415 from vector-im/dbkr/mobile_guide_deep_link
Don't show mobile guide if deep linking
2018-09-28 13:34:11 +01:00
David Baker
894e31fe73 Don't show mobile guide if deep linking
Other part of https://github.com/vector-im/riot-web/issues/7378
2018-09-28 11:23:46 +01:00
David Baker
67a762aeaf Actually update package.json 2018-09-28 11:02:14 +01:00
David Baker
28f1140588 Merge remote-tracking branch 'origin/develop' into dbkr/update_deps_2
Updates a bunch more deps now we've updated webpack
2018-09-28 10:58:22 +01:00
David Baker
ac81080185 Merge pull request #7408 from vector-im/dbkr/unnecessary_custom_server
Don't show custom server bit on matrix.org
2018-09-28 10:32:06 +01:00
David Baker
bc8323f96b Don't show custom server bit on matrix.org
On mobile guide

Part of https://github.com/vector-im/riot-web/issues/7378
2018-09-27 18:19:33 +01:00
Matthew Hodgson
a38661c0f0 Merge pull request #7387 from vector-im/matthew/webpack4
Webpack4
2018-09-27 16:21:43 +01:00
David Baker
1f34d2d644 Kill off olm-loader
Now that Olm needs to be inited asynchronously anyway, we can just
pass the options to Olm.init(), and as long as we do that before we
start the js-sdk, we're all good.

This will means the olm js is now part of the main bundle but since
it's now just a wrapper around the wasm, this is probably faster.

Also add the directwatch flag to olm.wasm because otherwise it
doesn't seem to copy the file in watch mode...
2018-09-26 16:44:52 +01:00
David Baker
2166213400 Update a bunch of deps
To try & get deps without vulns in them.

Exceptions are:
 * electron builder: which is nontrivial to update
 * webpack-dev-server: probably needs newer webpack
 * moderizr: no new version released yet
2018-09-26 12:37:40 +01:00
Matthew Hodgson
c4f6158f46 pin karma-webpack to 4.0.0-beta.0 to fix perf regression
so karma-webpack 3.0.5 is 4x slower than 4.0.0-beta.0 for webpacking for unknown reasons.
However, 4.0.0-rc.1 and 4.0.0-rc.2 fail with a different error. So: pinned for now
2018-09-26 03:12:08 +01:00
Matthew Hodgson
7e33ea351d upgrade karma & babel to latest 2018-09-26 02:27:22 +01:00
Matthew Hodgson
9e916cdd5c make sure karma runs tests in dev mode to speed up build 2018-09-26 01:39:05 +01:00
Matthew Hodgson
b7843a5d46 find versions of webpack, webpack-cli, and karma-webpack which work together atm 2018-09-26 01:18:53 +01:00
Matthew Hodgson
41e03333a7 Merge branch 'develop' into matthew/webpack4 2018-09-26 00:17:49 +01:00
Matthew Hodgson
c57c653535 Merge branch 'develop' into matthew/webpack4 2018-09-26 00:15:56 +01:00
David Baker
c511902356 Support WebAssembly version of Olm.
* Olm no longer supports setting the stack/memory size at runtime,
   so don't (they're now set to be that in the Olm build).
 * Copy the wasm file from the Olm library (see multiple comments
   about it being in the wrong place and webpack being awful).
2018-09-25 17:55:41 +01:00
Bruno Windels
23569705b4 Merge branch 'develop' into matthew/dharma 2018-09-21 12:55:40 +02:00
Matthew Hodgson
488eadc63e Merge branch 'develop' into matthew/dharma 2018-08-03 17:15:14 -07:00
Matthew Hodgson
3bcd8529fa Merge branch 'develop' into matthew/dharma 2018-07-29 16:50:50 +01:00
Marcel
5b32ecb719 [Tinter.setTheme fix] add missing comment and move old to correct position 2018-07-24 13:38:49 +02:00
Marcel
58de839621 Fix Tinter.setTheme to not fire using Firefox
This if checks if we got a Firefox using a variable that is undefined everywhere except in Firefox. In Firefox because of how it renders the DOM ensure that css is always loaded before it loads/runs the js code. Therefor onload 1. never triggers and 2. we can just call setTheme.
2018-05-31 22:32:29 +02:00
Matthew Hodgson
3c6d87b52b add skin 2018-05-25 16:31:22 +01:00
MTRNord
9063a96629 Specify the path to the postcss config and remove the include arrays as they caused multiple issues on linux 2018-05-11 19:48:33 +02:00
MTRNord
6e922166e7 Fix css paths that got changed from matrix-react-sdk to riot-web 2018-05-11 19:24:18 +02:00
MTRNord
f94abb5611 Fix naming inside the comment 2018-05-11 19:15:48 +02:00
David Baker
8f4953c182 Merge branch 'develop' into webpack4 2018-05-11 16:27:50 +01:00
David Baker
d6a226e6bd Put webpack-dev-server in development mode
https://github.com/webpack/webpack-dev-server/issues/1327
2018-05-04 18:37:29 +01:00
MTRNord
d69084f31e Fix builld:dev build by using raw-loader instead css-raw-loader 2018-04-27 12:02:00 +02:00
MTRNord
02a185f2fe Update Webpack to version 4 2018-04-27 11:32:59 +02:00
David Baker
bd76251fb5 Merge remote-tracking branch 'origin/develop' into experimental 2017-06-07 13:28:30 +01:00
David Baker
65185a5fd0 Merge remote-tracking branch 'origin/new-guest-access' into experimental 2017-06-07 11:28:03 +01:00
David Baker
fb358d8fd6 Merge remote-tracking branch 'origin/develop' into experimental 2017-06-07 10:59:01 +01:00
David Baker
5c51797420 Merge remote-tracking branch 'origin/new-guest-access' into experimental 2017-06-07 10:51:25 +01:00
David Baker
332a5b49a5 Merge remote-tracking branch 'origin/develop' into experimental 2017-06-07 10:51:18 +01:00
David Baker
1deadf5aad Merge branch 'new-guest-access' into experimental 2017-06-06 16:43:01 +01:00
93 changed files with 10627 additions and 5137 deletions

55
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,55 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
<!-- Please report security issues by email to security@matrix.org -->
<!-- This is a bug report template. By following the instructions below and
filling out the sections with your information, you will help the us to get all
the necessary data to fix your issue.
You can also preview your report before submitting it. You may remove sections
that aren't relevant to your particular case.
Text between <!-- and --> marks will be invisible in the report.
-->
### Description
Describe here the problem that you are experiencing, or the feature you are requesting.
### Steps to reproduce
- For bugs, list the steps
- that reproduce the bug
- using hyphens as bullet points
Describe how what happens differs from what you expected.
Log: sent/not sent? <!-- You can send us the app's logs via the 'Report bug'
link on the 'Settings' page. Very important for hard-to-reproduce bugs. Please
file a bug here too! -->
<!-- Include screenshots if possible: you can drag and drop images below. -->
### Version information
<!-- IMPORTANT: please answer the following questions, to help us narrow down the problem -->
- **Platform**: web (in-browser) or desktop?
For the web app:
- **Browser**: Chrome, Safari, Firefox? which version?
- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
- **URL**: riot.im/develop / riot.im/app / somewhere else? If a private server, what version of riot-web?
For the desktop app:
- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
- **Version**: 0.x.y <!-- check the user settings panel if unsure -->

View File

@@ -0,0 +1,32 @@
---
name: Redesign Issue
about: Bugs, feedback or feature requests specifically associated with the Redesign
project (https://riot.im/experimental)
title: ''
labels: redesign
assignees: ''
---
<!-- Thanks for providing feedback on the redesign! By filling out the sections with your information, you will help the us to process your issue.
-->
- **Browser**: Chrome, Safari, Firefox? which version?
- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
### Description
Describe here the problem that you are experiencing, or the feature you are requesting.
Include screenshots if possible: you can drag and drop images below.
### Steps to reproduce
- For bugs, list the steps
- that reproduce the bug
- using hyphens as bullet points
Describe how what happens differs from what you expected.
Log: sent/not sent? <!-- You can send us the app's logs via the 'Report bug'
link on the 'Settings' page. Very important for hard-to-reproduce bugs. Please
file a bug here too! -->

View File

@@ -11,25 +11,18 @@ sudo: required
language: node_js
node_js:
# make sure we work with a range of node versions.
# As of the time of writing:
# - 4.x is still in LTS (until April 2018), but some of our deps (notably
# extract-zip) don't work with it
# - 5.x has been EOLed for nearly a year.
# - 6.x is the active 'LTS' version
# - 7.x is no longer supported
# - 8.x is the current 'current' version (until October 2017)
#
# see: https://github.com/nodejs/LTS/
#
# anything before 6.3 ships with npm 3.9 or earlier, which had problems
# with symlinks in node_modules (see
# https://github.com/npm/npm/releases/tag/v3.10.0 'FIXES AND REFACTORING').
- 6.3
- 6
- 7
# Current status of node versions: https://github.com/nodejs/LTS/
# We don't work with node 6 because it doesn't support package-lock
# files which we need to avoid the broken version of base-x
- 8
- 10
addons:
chrome: stable
install:
# clone the deps with depth 1: we know we will only ever need that one
# commit.
- scripts/fetch-develop.deps.sh --depth 1 && npm install
- npm install && scripts/fetch-develop.deps.sh --depth 1
script:
- npm run test
- npm run lint

View File

@@ -1,3 +1,187 @@
Changes in [0.17.9](https://github.com/vector-im/riot-web/releases/tag/v0.17.9) (2019-01-22)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.9-rc.1...v0.17.9)
* Bugfix in react-sdk for setting DM rooms
Changes in [0.17.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.9-rc.1) (2019-01-17)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.8...v0.17.9-rc.1)
* Merge develop into experimental
[\#8003](https://github.com/vector-im/riot-web/pull/8003)
* Electron: Load app from custom protocol
[\#7943](https://github.com/vector-im/riot-web/pull/7943)
* Fix the IndexedDB worker
[\#7920](https://github.com/vector-im/riot-web/pull/7920)
* Make clear that the Debian package is for desktop
[\#7919](https://github.com/vector-im/riot-web/pull/7919)
* Run the Desktop app in a sandbox
[\#7907](https://github.com/vector-im/riot-web/pull/7907)
* Update to new electron single instance API
[\#7908](https://github.com/vector-im/riot-web/pull/7908)
* Update the tests to match https://github.com/matrix-org/matrix-react-
sdk/pull/2340
[\#7834](https://github.com/vector-im/riot-web/pull/7834)
Changes in [0.17.8](https://github.com/vector-im/riot-web/releases/tag/v0.17.8) (2018-12-10)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.8-rc.1...v0.17.8)
* No changes since rc.1
Changes in [0.17.8-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.8-rc.1) (2018-12-06)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.7...v0.17.8-rc.1)
* Update from Weblate.
[\#7784](https://github.com/vector-im/riot-web/pull/7784)
* Add a function to send a rageshake from the console
[\#7755](https://github.com/vector-im/riot-web/pull/7755)
* Re-apply "Run lint on travis builds and use modern node versions"
[\#7738](https://github.com/vector-im/riot-web/pull/7738)
* Revert "Run lint on travis builds and use modern node versions"
[\#7737](https://github.com/vector-im/riot-web/pull/7737)
* Run lint on travis builds and use modern node versions
[\#7490](https://github.com/vector-im/riot-web/pull/7490)
* Fix missing js-sdk logging
[\#7736](https://github.com/vector-im/riot-web/pull/7736)
* Add $accent-color-50pct as a CSS variable to the Status theme
[\#7710](https://github.com/vector-im/riot-web/pull/7710)
Changes in [0.17.7](https://github.com/vector-im/riot-web/releases/tag/v0.17.7) (2018-11-22)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6...v0.17.7)
* Warning when crypto DB is too new to use.
* Fix missing entries from js-sdk in rageshake logs
Changes in [0.17.6](https://github.com/vector-im/riot-web/releases/tag/v0.17.6) (2018-11-19)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6-rc.2...v0.17.6)
* No changes since rc.2
Changes in [0.17.6-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.17.6-rc.2) (2018-11-15)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.6-rc.1...v0.17.6-rc.2)
* Update to js-sdk 0.14 and react-sdk rc.2. rc.1 was broken as it was built against
js-sdk 0.13 which does not use the new Olm 3.0 API.
Changes in [0.17.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.6-rc.1) (2018-11-15)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.5...v0.17.6-rc.1)
* Update from Weblate.
[\#7708](https://github.com/vector-im/riot-web/pull/7708)
* Add Japanese (#7599)
[\#7673](https://github.com/vector-im/riot-web/pull/7673)
* Allow Webpack dev server to listen to all interfaces
[\#7674](https://github.com/vector-im/riot-web/pull/7674)
* Remove the request-only stuff we don't need anymore
[\#7637](https://github.com/vector-im/riot-web/pull/7637)
* Correct the author of the electron app
[\#7615](https://github.com/vector-im/riot-web/pull/7615)
* Mock fs, tls, and net to support request in the browser
[\#7552](https://github.com/vector-im/riot-web/pull/7552)
* Update chokidar to transitively get newer fsevents
[\#7598](https://github.com/vector-im/riot-web/pull/7598)
* Support WebAssembly version of Olm
[\#7385](https://github.com/vector-im/riot-web/pull/7385)
Changes in [0.17.5](https://github.com/vector-im/riot-web/releases/tag/v0.17.5) (2018-11-13)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.4...v0.17.5)
* Include change that was supposed to be included in orevious version
Changes in [0.17.4](https://github.com/vector-im/riot-web/releases/tag/v0.17.4) (2018-11-13)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.3...v0.17.4)
* Add banner with login/register links for users who aren't logged in
Changes in [0.17.3](https://github.com/vector-im/riot-web/releases/tag/v0.17.3) (2018-10-29)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.3-rc.1...v0.17.3)
* Fix for autocompleting text emoji from react-sdk v0.14.2
Changes in [0.17.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.3-rc.1) (2018-10-24)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.2...v0.17.3-rc.1)
* Update from Weblate.
[\#7549](https://github.com/vector-im/riot-web/pull/7549)
* Don't set tags on notifications
[\#7518](https://github.com/vector-im/riot-web/pull/7518)
* Update to latest electron builder
[\#7498](https://github.com/vector-im/riot-web/pull/7498)
* Fix Tinter.setTheme to not fire using Firefox
[\#6831](https://github.com/vector-im/riot-web/pull/6831)
Changes in [0.17.2](https://github.com/vector-im/riot-web/releases/tag/v0.17.2) (2018-10-19)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.1...v0.17.2)
* Update react-sdk version to "Apply the user's tint once the MatrixClientPeg is moderately ready"
* Electron: don't set tags on notifications
[\#7518](https://github.com/vector-im/riot-web/pull/7518)
Changes in [0.17.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.1) (2018-10-18)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.0...v0.17.1)
* Stop electron crashing
[\#7517](https://github.com/vector-im/riot-web/pull/7517)
Changes in [0.17.0](https://github.com/vector-im/riot-web/releases/tag/v0.17.0) (2018-10-16)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.17.0-rc.1...v0.17.0)
* Phased rollout of lazyloading
[\#7503](https://github.com/vector-im/riot-web/pull/7503)
* Update to latest electron builder
[\#7501](https://github.com/vector-im/riot-web/pull/7501)
Changes in [0.17.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.17.0-rc.1) (2018-10-11)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.5...v0.17.0-rc.1)
* Revert "also commit the lock file when bumping version as it is now
committed to the repo"
[\#7483](https://github.com/vector-im/riot-web/pull/7483)
* Update from Weblate.
[\#7478](https://github.com/vector-im/riot-web/pull/7478)
* Fix riot-web Promise.defer warnings (#7409)
[\#7444](https://github.com/vector-im/riot-web/pull/7444)
* Use HTTPS cloning for riot-web too
[\#7459](https://github.com/vector-im/riot-web/pull/7459)
* Disable webpack-dev-server auto reload
[\#7463](https://github.com/vector-im/riot-web/pull/7463)
* Silence bluebird warnings
[\#7462](https://github.com/vector-im/riot-web/pull/7462)
* Fix reskindex on matrix-react-side not being called if using build script
[\#7443](https://github.com/vector-im/riot-web/pull/7443)
* Fix double-closed tags
[\#7454](https://github.com/vector-im/riot-web/pull/7454)
* Document how to turn off Piwik and bug reports (#6738)
[\#7435](https://github.com/vector-im/riot-web/pull/7435)
* also commit the lock file when bumping version as it is now committed to the
repo
[\#7429](https://github.com/vector-im/riot-web/pull/7429)
* Update a bunch of deps
[\#7393](https://github.com/vector-im/riot-web/pull/7393)
* Don't show mobile guide if deep linking
[\#7415](https://github.com/vector-im/riot-web/pull/7415)
* Don't show custom server bit on matrix.org
[\#7408](https://github.com/vector-im/riot-web/pull/7408)
* Update Webpack to version 4
[\#6620](https://github.com/vector-im/riot-web/pull/6620)
* Webpack4
[\#7387](https://github.com/vector-im/riot-web/pull/7387)
Changes in [0.16.6](https://github.com/vector-im/riot-web/releases/tag/v0.16.6) (2018-10-08)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.5...v0.16.6)

View File

@@ -1,4 +1,4 @@
Contributing code to Riot
=========================
Riot follows the same pattern as https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.rst.
Riot follows the same pattern as https://github.com/matrix-org/matrix-js-sdk/blob/master/CONTRIBUTING.rst.

View File

@@ -28,7 +28,8 @@ 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
### Desktop Installation 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`
@@ -90,7 +91,7 @@ to build.
npm install
npm run build
```
Or just use https://riot.im/develop - the continuous integration release of the
Or just use https://riot.im/develop - the continuous integration release of the
develop branch. (Note that we don't reference the develop versions in git directly
due to https://github.com/npm/npm/issues/3055.)
1. Install the prerequisites: `npm install`.
@@ -129,12 +130,14 @@ For a good example, see https://riot.im/develop/config.json
1. `brand`: String to pass to your homeserver when configuring email notifications, to let the
homeserver know what email template to use when talking to you.
1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations
server is not Riot and normally not your Home Server either. The integration server settings
server is not Riot and normally not your homeserver either. The integration server settings
may be left blank to disable integrations.
1. `integrations_rest_url`: URL to the REST interface for the integrations server.
1. `integrations_widgets_urls`: list of URLs to the REST interface for the widget integrations server.
1. `bug_report_endpoint_url`: endpoint to send bug reports to (must be running a
https://github.com/matrix-org/rageshake server)
https://github.com/matrix-org/rageshake server). Bug reports are sent when a user clicks
"Send Logs" within the application. Bug reports can be disabled by leaving the
`bug_report_endpoint_url` out of your config file.
1. `roomDirectory`: config for the public room directory. This section is optional.
1. `roomDirectory.servers`: List of other homeservers' directories to include in the drop
down list. Optional.
@@ -147,13 +150,13 @@ For a good example, see https://riot.im/develop/config.json
anything else since it is used to isolate the privileges of file attachments to this
domain. Default: `https://usercontent.riot.im/v1.html`. This needs to contain v1.html from
https://github.com/matrix-org/usercontent/blob/master/v1.html
1. `piwik`: an object containing the following properties:
1. `url`: The URL of the Piwik instance to use for collecting Analytics
1. `whitelistedHSUrls`: a list of HS URLs to not redact from the Analytics
1. `whitelistedISUrls`: a list of IS URLs to not redact from the Analytics
1. `siteId`: The Piwik Site ID to use when sending Analytics to the Piwik server configured above
1. `teamServerConfig`, `teamTokenMap`, `referralBaseUrl`: an obsolete precursor to communities
with referral tracking; please ignore it.
1. `piwik`: Analytics can be disabled by setting `piwik: false` or by leaving the piwik config
option out of your config file. If you want to enable analytics, set `piwik` to be an object
containing the following properties:
1. `url`: The URL of the Piwik instance to use for collecting analytics
1. `whitelistedHSUrls`: a list of HS URLs to not redact from the analytics
1. `whitelistedISUrls`: a list of IS URLs to not redact from the analytics
1. `siteId`: The Piwik Site ID to use when sending analytics to the Piwik server configured above
1. `welcomeUserId`: the user ID of a bot to invite whenever users register that can give them a tour
@@ -230,6 +233,10 @@ Before attempting to develop on Riot you **must** read the developer guide
for `matrix-react-sdk` at https://github.com/matrix-org/matrix-react-sdk, which
also defines the design, architecture and style for Riot too.
You should also familiarise yourself with the "Here be Dragons" guide to the
tame & not-so-tame dragons (gotchas) which exist in the codebase:
https://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM
The idea of Riot is to be a relatively lightweight "skin" of customisations on
top of the underlying `matrix-react-sdk`. `matrix-react-sdk` provides both the
higher and lower level React components useful for building Matrix communication
@@ -270,7 +277,7 @@ Then similarly with `matrix-react-sdk`:
Finally, build and start Riot itself:
1. `git clone git@github.com:vector-im/riot-web.git`
1. `git clone https://github.com/vector-im/riot-web.git`
1. `cd riot-web`
1. `git checkout develop`
1. `npm install`

11
docs/shortcuts.md Normal file
View File

@@ -0,0 +1,11 @@
# Keyboard Shortcuts
The modifier is <kbd>Ctrl</kbd> on Windows & Linux and <kbd>⌘</kbd> on Mac.
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>m</kbd> - toggle markdown
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>d</kbd> - toggle mic mute
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>e</kbd> - toggle video on/off
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>k</kbd> - jump to named room
- <kbd>↑</kbd>/<kbd>↓</kbd> - navigate within room list
- <kbd>PageUp</kbd>/<kbd>PageDown</kbd> - scroll timeline up/down
- <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>Home</kbd>/<kbd>End</kbd> - jump to timeline start/end

View File

@@ -2,9 +2,9 @@
"name": "riot-web",
"productName": "Riot",
"main": "src/electron-main.js",
"version": "0.16.6",
"version": "0.17.9",
"description": "A feature-rich client for Matrix.org",
"author": "Vector Creations Ltd.",
"author": "New Vector Ltd.",
"dependencies": {
"auto-launch": "^5.0.1",
"electron-window-state": "^4.1.0",

View File

@@ -21,6 +21,15 @@
"siteId": 1,
"policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy"
},
"phasedRollOut": {
"feature_lazyloading": {
"offset": 1539684000000,
"period": 604800000
}
},
"features": {
"feature_lazyloading": "enable"
},
"enable_presence_by_hs_url": {
"https://matrix.org": false
}

View File

@@ -2,6 +2,7 @@
Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -23,16 +24,23 @@ const checkSquirrelHooks = require('./squirrelhooks');
if (checkSquirrelHooks()) return;
const argv = require('minimist')(process.argv);
const {app, ipcMain, powerSaveBlocker, BrowserWindow, Menu} = require('electron');
const {app, ipcMain, powerSaveBlocker, BrowserWindow, Menu, autoUpdater, protocol} = require('electron');
const AutoLaunch = require('auto-launch');
const path = require('path');
const tray = require('./tray');
const vectorMenu = require('./vectormenu');
const webContentsHandler = require('./webcontents-handler');
const updater = require('./updater');
const { migrateFromOldOrigin } = require('./originMigrator');
const windowStateKeeper = require('electron-window-state');
// boolean flag set whilst we are doing one-time origin migration
// We only serve the origin migration script while we're actually
// migrating to mitigate any risk of it being used maliciously.
let migratingOrigin = false;
if (argv['profile']) {
app.setPath('userData', `${app.getPath('userData')}-${argv['profile']}`);
}
@@ -97,27 +105,75 @@ ipcMain.on('app_onAction', function(ev, payload) {
}
});
autoUpdater.on('update-downloaded', (ev, releaseNotes, releaseName, releaseDate, updateURL) => {
if (!mainWindow) return;
// forward to renderer
mainWindow.webContents.send('update-downloaded', {
releaseNotes,
releaseName,
releaseDate,
updateURL,
});
});
ipcMain.on('ipcCall', async function(ev, payload) {
if (!mainWindow) return;
const args = payload.args || [];
let ret;
switch (payload.name) {
case 'getUpdateFeedUrl':
ret = autoUpdater.getFeedURL();
break;
case 'getAutoLaunchEnabled':
ret = launcher.isEnabled;
break;
case 'setAutoLaunchEnabled':
if (args[0]) {
launcher.enable();
} else {
launcher.disable();
}
break;
case 'getAppVersion':
ret = app.getVersion();
break;
case 'focusWindow':
if (mainWindow.isMinimized()) {
mainWindow.restore();
} else if (!mainWindow.isVisible()) {
mainWindow.show();
} else {
mainWindow.focus();
}
case 'origin_migrate':
migratingOrigin = true;
await migrateFromOldOrigin();
migratingOrigin = false;
break;
default:
mainWindow.webContents.send('ipcReply', {
id: payload.id,
error: "Unknown IPC Call: " + payload.name,
});
return;
}
mainWindow.webContents.send('ipcReply', {
id: payload.id,
reply: ret,
});
});
app.commandLine.appendSwitch('--enable-usermedia-screen-capturing');
const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => {
// If other instance launched with --hidden then skip showing window
if (commandLine.includes('--hidden')) return;
// 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) {
const gotLock = app.requestSingleInstanceLock();
if (!gotLock) {
console.log('Other instance detected: exiting');
app.exit();
}
const launcher = new AutoLaunch({
name: vectorConfig.brand || 'Riot',
isHidden: true,
@@ -126,39 +182,12 @@ const launcher = new AutoLaunch({
},
});
const settings = {
'auto-launch': {
get: launcher.isEnabled,
set: function(bool) {
if (bool) {
return launcher.enable();
} else {
return launcher.disable();
}
},
},
};
ipcMain.on('settings_get', async function(ev) {
const data = {};
try {
await Promise.all(Object.keys(settings).map(async function (setting) {
data[setting] = await settings[setting].get();
}));
ev.sender.send('settings', data);
} catch (e) {
console.error(e);
}
});
ipcMain.on('settings_set', function(ev, key, value) {
console.log(key, value);
if (settings[key] && settings[key].set) {
settings[key].set(value);
}
});
// Register the scheme the app is served from as 'standard'
// which allows things like relative URLs and IndexedDB to
// work.
// Also mark it as secure (ie. accessing resources from this
// protocol and HTTPS won't trigger mixed content warnings).
protocol.registerStandardSchemes(['vector'], {secure: true});
app.on('ready', () => {
if (argv['devtools']) {
@@ -175,6 +204,66 @@ app.on('ready', () => {
}
}
protocol.registerFileProtocol('vector', (request, callback) => {
if (request.method !== 'GET') {
callback({error: -322}); // METHOD_NOT_SUPPORTED from chromium/src/net/base/net_error_list.h
return null;
}
const parsedUrl = new URL(request.url);
if (parsedUrl.protocol !== 'vector:') {
callback({error: -302}); // UNKNOWN_URL_SCHEME
return;
}
if (parsedUrl.host !== 'vector') {
callback({error: -105}); // NAME_NOT_RESOLVED
return;
}
const target = parsedUrl.pathname.split('/');
// path starts with a '/'
if (target[0] !== '') {
callback({error: -6}); // FILE_NOT_FOUND
return;
}
if (target[target.length - 1] == '') {
target[target.length - 1] = 'index.html';
}
let baseDir;
// first part of the path determines where we serve from
if (migratingOrigin && target[1] === 'origin_migrator_dest') {
// the origin migrator destination page
// (only the destination script needs to come from the
// custom protocol: the source part is loaded from a
// file:// as that's the origin we're migrating from).
baseDir = __dirname + "/../../origin_migrator/dest";
} else if (target[1] === 'webapp') {
baseDir = __dirname + "/../../webapp";
} else {
callback({error: -6}); // FILE_NOT_FOUND
return;
}
// Normalise the base dir and the target path separately, then make sure
// the target path isn't trying to back out beyond its root
baseDir = path.normalize(baseDir);
const relTarget = path.normalize(path.join(...target.slice(2)));
if (relTarget.startsWith('..')) {
callback({error: -6}); // FILE_NOT_FOUND
return;
}
const absTarget = path.join(baseDir, relTarget);
callback({
path: absTarget,
});
}, (error) => {
if (error) console.error('Failed to register protocol')
});
if (vectorConfig['update_base_url']) {
console.log(`Starting auto update with base URL: ${vectorConfig['update_base_url']}`);
@@ -191,6 +280,7 @@ app.on('ready', () => {
defaultHeight: 768,
});
const preloadScript = path.normalize(`${__dirname}/preload.js`);
mainWindow = global.mainWindow = new BrowserWindow({
icon: iconPath,
show: false,
@@ -200,8 +290,20 @@ app.on('ready', () => {
y: mainWindowState.y,
width: mainWindowState.width,
height: mainWindowState.height,
webPreferences: {
preload: preloadScript,
nodeIntegration: false,
sandbox: true,
enableRemoteModule: false,
// We don't use this: it's useful for the preload script to
// share a context with the main page so we can give select
// objects to the main page. The sandbox option isolates the
// main page from the background script.
contextIsolation: false,
webgl: false,
},
});
mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`);
mainWindow.loadURL('vector://vector/webapp/');
Menu.setApplicationMenu(vectorMenu);
// explicitly hide because setApplicationMenu on Linux otherwise shows...
@@ -268,6 +370,18 @@ app.on('before-quit', () => {
}
});
app.on('second-instance', (ev, commandLine, workingDirectory) => {
// If other instance launched with --hidden then skip showing window
if (commandLine.includes('--hidden')) return;
// 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();
}
});
// 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

View File

@@ -0,0 +1,62 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const { BrowserWindow, ipcMain } = require('electron');
const path = require('path');
async function migrateFromOldOrigin() {
console.log("Attempting to migrate data between origins");
// We can use the same preload script: we just need ipcRenderer exposed
const preloadScript = path.normalize(`${__dirname}/preload.js`);
await new Promise(resolve => {
const migrateWindow = new BrowserWindow({
show: false,
webPreferences: {
preload: preloadScript,
nodeIntegration: false,
sandbox: true,
enableRemoteModule: false,
webgl: false,
},
});
ipcMain.on('origin_migration_complete', (e, success, sentSummary, storedSummary) => {
if (success) {
console.log("Origin migration completed successfully!");
} else {
console.error("Origin migration failed!");
}
console.error("Data sent", sentSummary);
console.error("Data stored", storedSummary);
migrateWindow.close();
resolve();
});
ipcMain.on('origin_migration_nodata', (e) => {
console.log("No session to migrate from old origin");
migrateWindow.close();
resolve();
});
// Normalise the path because in the distribution, __dirname will be inside the
// electron asar.
const sourcePagePath = path.normalize(__dirname + '/../../origin_migrator/source.html');
console.log("Loading path: " + sourcePagePath);
migrateWindow.loadURL('file://' + sourcePagePath);
});
}
module.exports = {
migrateFromOldOrigin,
};

View File

@@ -1,8 +1,5 @@
// @flow
/*
Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,13 +14,16 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
let Platform = null;
const { ipcRenderer, webFrame } = require('electron');
if (window && window.process && window.process && window.process.type === 'renderer') {
// we're running inside electron
Platform = require('./ElectronPlatform');
} else {
Platform = require('./WebPlatform');
}
// expose ipcRenderer to the renderer process
window.ipcRenderer = ipcRenderer;
export default Platform;
// Allow the fetch API to load resources from this
// protocol: this is necessary to load olm.wasm.
// (Also mark it a secure although we've already
// done this in the main process).
webFrame.registerURLSchemeAsPrivileged('vector', {
secure: true,
supportFetchAPI: true,
});

View File

@@ -1,10 +1,12 @@
const {clipboard, nativeImage, Menu, MenuItem, shell} = require('electron');
const url = require('url');
const MAILTO_PREFIX = "mailto:";
const PERMITTED_URL_SCHEMES = [
'http:',
'https:',
'mailto:',
MAILTO_PREFIX,
];
function safeOpenURL(target) {
@@ -47,7 +49,7 @@ function onLinkContextMenu(ev, params) {
if (params.mediaType && params.mediaType === 'image' && !url.startsWith('file://')) {
popupMenu.append(new MenuItem({
label: 'Copy Image',
label: 'Copy image',
click() {
if (url.startsWith('data:')) {
clipboard.writeImage(nativeImage.createFromDataURL(url));
@@ -58,14 +60,24 @@ function onLinkContextMenu(ev, params) {
}));
}
// No point offerring to copy a blob: URL either
// No point offering to copy a blob: URL either
if (!url.startsWith('blob:')) {
popupMenu.append(new MenuItem({
label: 'Copy Link Address',
click() {
clipboard.writeText(url);
},
}));
// Special-case e-mail URLs to strip the `mailto:` like modern browsers do
if (url.startsWith(MAILTO_PREFIX)) {
popupMenu.append(new MenuItem({
label: 'Copy email address',
click() {
clipboard.writeText(url.substr(MAILTO_PREFIX.length));
},
}));
} else {
popupMenu.append(new MenuItem({
label: 'Copy link address',
click() {
clipboard.writeText(url);
},
}));
}
}
// popup() requires an options object even for no options
popupMenu.popup({});
@@ -117,6 +129,18 @@ function onEditableContextMenu(ev, params) {
module.exports = (webContents) => {
webContents.on('new-window', onWindowOrNavigate);
// XXX: The below now does absolutely nothing because of
// https://github.com/electron/electron/issues/8841
// Whilst this isn't a security issue since without
// node integration and with the sandbox, it should be
// no worse than opening the site in Chrome, it obviously
// means the user has to restart Riot to make it usable
// again (often unintuitive because it minimises to the
// system tray). We therefore need to be vigilant about
// putting target="_blank" on links in Riot (although
// we should generally be doing this anyway since links
// navigating you away from Riot in the browser is
// also annoying).
webContents.on('will-navigate', onWindowOrNavigate);
webContents.on('context-menu', function(ev, params) {

View File

@@ -32,9 +32,12 @@ const olm_entry = webpack_config.entry['olm'];
// 'preprocessors' config below)
delete webpack_config['entry'];
// make sure we're flagged as development to avoid wasting time optimising
webpack_config.mode = 'development';
// add ./test as a search path for js
webpack_config.module.loaders.unshift({
test: /\.js$/, loader: "babel",
webpack_config.module.rules.unshift({
test: /\.js$/, use: "babel-loader",
include: [path.resolve('./src'), path.resolve('./test')],
});
@@ -46,8 +49,9 @@ webpack_config.module.noParse.push(/sinon\/pkg\/sinon\.js$/);
// ?
webpack_config.resolve.alias['sinon'] = 'sinon/pkg/sinon.js';
webpack_config.resolve.root = [
webpack_config.resolve.modules = [
path.resolve('./test'),
"node_modules"
];
webpack_config.devtool = 'inline-source-map';

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
<html>
<body>
<script src="browser-matrix.min.js"></script>
<script src="dest.js"></script>
</body>
</html>

View File

@@ -0,0 +1,125 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const SOURCE_ORIGIN = 'file://';
const IndexedDBCryptoStore = window.matrixcs.IndexedDBCryptoStore;
const cryptoStore = new IndexedDBCryptoStore(window.indexedDB, 'matrix-js-sdk:crypto');
let accountStored = 0;
let sessionsStored = 0;
let inboundGroupSessionsStored = 0;
let deviceDataStored = 0;
let roomsStored = 0;
let localStorageKeysStored = 0;
const promises = [];
async function onMessage(e) {
if (e.origin !== SOURCE_ORIGIN) return;
const data = e.data.data; // bleh, naming clash
switch (e.data.cmd) {
case 'init':
// start with clean stores before we migrate data in
window.localStorage.clear();
await cryptoStore.deleteAllData();
e.source.postMessage({
cmd: 'initOK',
}, SOURCE_ORIGIN);
break;
case 'storeAccount':
promises.push(cryptoStore.doTxn(
'readwrite', [IndexedDBCryptoStore.STORE_ACCOUNT],
(txn) => {
cryptoStore.storeAccount(txn, data);
},
).then(() => {
++accountStored;
}));
break;
case 'storeSessions':
promises.push(cryptoStore.doTxn(
'readwrite', [IndexedDBCryptoStore.STORE_SESSIONS],
(txn) => {
for (const sess of data) {
cryptoStore.storeEndToEndSession(sess.deviceKey, sess.sessionId, sess, txn);
}
},
).then(() => {
sessionsStored += data.length;
}));
break;
case 'storeInboundGroupSessions':
promises.push(cryptoStore.doTxn(
'readwrite', [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS],
(txn) => {
for (const sess of data) {
cryptoStore.addEndToEndInboundGroupSession(
sess.senderKey, sess.sessionId, sess.sessionData, txn,
);
}
},
).then(() => {
inboundGroupSessionsStored += data.length;
}));
break;
case 'storeDeviceData':
promises.push(cryptoStore.doTxn(
'readwrite', [IndexedDBCryptoStore.STORE_DEVICE_DATA],
(txn) => {
cryptoStore.storeEndToEndDeviceData(data, txn);
},
).then(() => {
++deviceDataStored;
}));
break;
case 'storeRooms':
promises.push(cryptoStore.doTxn(
'readwrite', [IndexedDBCryptoStore.STORE_ROOMS],
(txn) => {
for (const [roomId, roomInfo] of Object.entries(data)) {
cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn);
}
},
).then(() => {
++roomsStored;
}));
break;
case 'storeLocalStorage':
window.localStorage.setItem(data.key, data.val);
++localStorageKeysStored;
break;
case 'getSummary':
await Promise.all(promises);
e.source.postMessage({
cmd: 'summary',
data: {
accountStored,
sessionsStored,
inboundGroupSessionsStored,
deviceDataStored,
roomsStored,
localStorageKeysStored,
},
}, SOURCE_ORIGIN);
break;
}
}
window.addEventListener('message', onMessage);

View File

@@ -0,0 +1,7 @@
<html>
<body>
<script src="dest/browser-matrix.min.js"></script>
<script src="source.js"></script>
<iframe name="dest" src="vector://vector/origin_migrator_dest/dest.html" onload="doMigrate()"></iframe>
</body>
</html>

210
origin_migrator/source.js Normal file
View File

@@ -0,0 +1,210 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const TARGET_ORIGIN = 'vector://vector';
const BATCH_SIZE = 500;
let destFrame;
let initResolver = null;
let getSummaryResolver = null;
function onMessage(e) {
if (e.origin !== TARGET_ORIGIN) return;
if (e.data.cmd === 'initOK' && initResolver) {
initResolver();
initResolver = null;
} else if (e.data.cmd === 'summary' && getSummaryResolver) {
getSummaryResolver(e.data.data);
getSummaryResolver = null;
}
}
async function initDestFrame() {
return new Promise(resolve => {
initResolver = resolve;
destFrame.postMessage({
cmd: 'init',
}, TARGET_ORIGIN);
});
}
async function getSummary() {
return new Promise(resolve => {
getSummaryResolver = resolve;
destFrame.postMessage({
cmd: 'getSummary',
}, TARGET_ORIGIN);
});
}
async function doMigrate() {
let accountSent = 0;
let sessionsSent = 0;
let inboundGroupSessionsSent = 0;
let deviceDataSent = 0;
let roomsSent = 0;
let localStorageKeysSent = 0;
if (!window.ipcRenderer) {
console.error("ipcRenderer not found");
return;
}
if (window.localStorage.getItem('mx_user_id') === null) {
window.ipcRenderer.send("origin_migration_nodata");
return;
}
destFrame = window.parent.frames.dest;
await initDestFrame();
const IndexedDBCryptoStore = window.matrixcs.IndexedDBCryptoStore;
const cryptoStore = new IndexedDBCryptoStore(window.indexedDB, 'matrix-js-sdk:crypto');
await cryptoStore.doTxn(
'readonly', [IndexedDBCryptoStore.STORE_ACCOUNT],
(txn) => {
cryptoStore.getAccount(txn, (account) => {
destFrame.postMessage({
cmd: 'storeAccount',
data: account,
}, TARGET_ORIGIN);
++accountSent;
});
},
);
await cryptoStore.doTxn(
'readonly', [IndexedDBCryptoStore.STORE_SESSIONS],
(txn) => {
let sessBatch = [];
cryptoStore.getAllEndToEndSessions(txn, (sessInfo) => {
if (sessInfo) {
++sessionsSent;
sessBatch.push(sessInfo);
}
if (sessBatch.length >= BATCH_SIZE || sessInfo === null) {
destFrame.postMessage({
cmd: 'storeSessions',
data: sessBatch,
}, TARGET_ORIGIN);
sessBatch = [];
}
});
},
);
await cryptoStore.doTxn(
'readonly', [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS],
(txn) => {
let sessBatch = [];
cryptoStore.getAllEndToEndInboundGroupSessions(txn, (sessInfo) => {
if (sessInfo) {
++inboundGroupSessionsSent;
sessBatch.push(sessInfo);
}
if (sessBatch.length >= BATCH_SIZE || sessInfo === null) {
destFrame.postMessage({
cmd: 'storeInboundGroupSessions',
data: sessBatch,
}, TARGET_ORIGIN);
sessBatch = [];
}
});
},
);
await cryptoStore.doTxn(
'readonly', [IndexedDBCryptoStore.STORE_DEVICE_DATA],
(txn) => {
cryptoStore.getEndToEndDeviceData(txn, (deviceData) => {
destFrame.postMessage({
cmd: 'storeDeviceData',
data: deviceData,
}, TARGET_ORIGIN);
++deviceDataSent;
});
},
);
await cryptoStore.doTxn(
'readonly', [IndexedDBCryptoStore.STORE_ROOMS],
(txn) => {
cryptoStore.getEndToEndRooms(txn, (rooms) => {
destFrame.postMessage({
cmd: 'storeRooms',
data: rooms,
}, TARGET_ORIGIN);
++roomsSent;
});
},
);
// we don't bother migrating;
// * sync data (we can just initialsync again)
// * logs
// * key requests (worst case they'll just be re-sent)
// * sessions needing backup (feature isn't available on Electron)
for (let i = 0; i < window.localStorage.length; ++i) {
const key = window.localStorage.key(i);
const val = window.localStorage.getItem(key);
destFrame.postMessage({
cmd: 'storeLocalStorage',
data: { key, val },
}, TARGET_ORIGIN);
++localStorageKeysSent;
}
const summary = await getSummary();
let success = false;
if (
summary.accountStored === accountSent &&
summary.sessionsStored === sessionsSent &&
summary.inboundGroupSessionsStored === inboundGroupSessionsSent &&
summary.deviceDataStored === deviceDataSent &&
summary.roomsStored === roomsSent &&
summary.localStorageKeysStored === localStorageKeysSent
) {
success = true;
window.localStorage.clear();
await cryptoStore.deleteAllData();
// we don't bother migrating them, but also blow away the sync & logs db,
// otherwise they'll just hang about taking up space
await new Promise(resolve => {
const req = window.indexedDB.deleteDatabase('matrix-js-sdk:riot-web-sync');
req.onsuccess = resolve;
req.onerror = resolve;
});
await new Promise(resolve => {
const req = window.indexedDB.deleteDatabase('logs');
req.onsuccess = resolve;
req.onerror = resolve;
});
}
window.ipcRenderer.send("origin_migration_complete", success, {
accountSent, sessionsSent, inboundGroupSessionsSent,
deviceDataSent, roomsSent, localStorageKeysSent,
}, summary);
}
window.addEventListener('message', onMessage);

11415
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
"name": "riot-web",
"productName": "Riot",
"main": "electron_app/src/electron-main.js",
"version": "0.16.6",
"version": "0.17.9",
"description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.",
"repository": {
@@ -33,10 +33,10 @@
"build:res": "node scripts/copy-res.js",
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
"build:compile": "npm run reskindex && babel --source-maps -d lib src",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail",
"build:bundle:dev": "webpack --optimize-occurence-order --progress --bail",
"build:bundle": "cross-env NODE_ENV=production webpack -p --progress --bail --mode production",
"build:bundle:dev": "webpack --progress --bail --mode development",
"build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64",
"build:react-sdk": "node scripts/npm-sub.js matrix-react-sdk run start:init",
"build:react-sdk": "node scripts/npm-sub.js matrix-react-sdk run build",
"build:js-sdk": "node scripts/npm-sub.js matrix-js-sdk run start:init",
"build": "npm run build:js-sdk && npm run build:react-sdk && npm run reskindex && npm run build:res && npm run build:bundle",
"build:dev": "npm run build:js-sdk && npm run build:react-sdk && npm run reskindex && npm run build:res && npm run build:bundle:dev",
@@ -44,7 +44,7 @@
"install:electron": "install-app-deps",
"electron": "npm run install:electron && electron .",
"start:res": "node scripts/copy-res.js -w",
"start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress",
"start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development",
"start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress",
"start:js-sdk": "node scripts/npm-sub.js matrix-js-sdk run start:watch",
"start:js-sdk:prod": "cross-env NODE_ENV=production node scripts/npm-sub.js matrix-js-sdk run start:watch",
@@ -60,108 +60,106 @@
"test-multi": "karma start"
},
"dependencies": {
"babel-polyfill": "^6.5.0",
"babel-runtime": "^6.11.6",
"bluebird": "^3.5.0",
"babel-polyfill": "^6.26.0",
"babel-runtime": "^6.26.0",
"bluebird": "^3.5.2",
"browser-request": "^0.3.3",
"draft-js": "^0.11.0-alpha",
"extract-text-webpack-plugin": "^0.9.1",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"favico.js": "^0.3.10",
"gemini-scrollbar": "matrix-org/gemini-scrollbar#b302279",
"gfm.css": "^1.1.1",
"highlight.js": "^9.0.0",
"matrix-js-sdk": "0.11.1",
"matrix-react-sdk": "0.13.6",
"modernizr": "^3.1.0",
"prop-types": "^15.5.10",
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279",
"gfm.css": "^1.1.2",
"highlight.js": "^9.13.1",
"matrix-js-sdk": "0.14.3",
"matrix-react-sdk": "0.14.8",
"modernizr": "^3.6.0",
"prop-types": "^15.6.2",
"react": "^15.6.0",
"react-dom": "^15.6.0",
"sanitize-html": "^1.18.4",
"ua-parser-js": "^0.7.10",
"sanitize-html": "^1.19.1",
"ua-parser-js": "^0.7.19",
"url": "^0.11.0"
},
"devDependencies": {
"autoprefixer": "^6.6.0",
"babel-cli": "^6.5.2",
"babel-core": "^6.14.0",
"babel-eslint": "^6.1.0",
"babel-loader": "^6.2.5",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-eslint": "^8.1.1",
"babel-loader": "^7.1.5",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-transform-async-to-bluebird": "^1.1.1",
"babel-plugin-transform-class-properties": "^6.16.0",
"babel-plugin-transform-object-rest-spread": "^6.16.0",
"babel-plugin-transform-runtime": "^6.15.0",
"babel-preset-es2015": "^6.16.0",
"babel-preset-es2016": "^6.16.0",
"babel-preset-es2017": "^6.16.0",
"babel-preset-react": "^6.16.0",
"babel-preset-stage-2": "^6.17.0",
"chokidar": "^1.6.1",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2016": "^6.24.1",
"babel-preset-es2017": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"chokidar": "^2.0.4",
"concurrently": "^4.0.1",
"cpx": "^1.3.2",
"cross-env": "^4.0.0",
"css-raw-loader": "^0.1.1",
"electron-builder": "^11.2.4",
"electron-builder-squirrel-windows": "^11.2.1",
"electron-devtools-installer": "^2.2.0",
"css-loader": "^2.1.0",
"electron-builder": "^20.38.5",
"electron-builder-squirrel-windows": "^11.6.1",
"electron-devtools-installer": "^2.2.4",
"emojione": "^2.2.7",
"eslint": "^3.14.0",
"eslint": "^5.8.0",
"eslint-config-google": "^0.7.1",
"eslint-plugin-babel": "^4.1.1",
"eslint-plugin-flowtype": "^2.30.0",
"eslint-plugin-react": "^7.4.0",
"eslint-plugin-babel": "^4.1.2",
"eslint-plugin-flowtype": "^2.50.3",
"eslint-plugin-react": "^7.11.1",
"expect": "^1.16.0",
"file-loader": "^3.0.1",
"fs-extra": "^0.30.0",
"html-webpack-plugin": "^2.24.0",
"html-webpack-plugin": "^3.2.0",
"json-loader": "^0.5.3",
"karma": "^1.7.0",
"karma": "^3.1.1",
"karma-chrome-launcher": "^0.2.3",
"karma-cli": "^0.1.2",
"karma-junit-reporter": "^0.4.1",
"karma-cli": "^1.0.1",
"karma-junit-reporter": "^2.0.0",
"karma-logcapture-reporter": "0.0.1",
"karma-mocha": "^0.2.2",
"karma-mocha": "^1.3.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.31",
"karma-summary-reporter": "^1.3.3",
"karma-webpack": "^1.7.0",
"matrix-mock-request": "^1.2.0",
"karma-summary-reporter": "^1.5.1",
"karma-webpack": "4.0.0-beta.0",
"matrix-mock-request": "^1.2.2",
"matrix-react-test-utils": "^0.2.0",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
"mocha": "^2.4.5",
"mocha": "^5.2.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",
"postcss-simple-vars": "^3.0.0",
"postcss-import": "^11.1.0",
"postcss-loader": "^2.1.6",
"postcss-mixins": "^6.2.0",
"postcss-nested": "^3.0.0",
"postcss-scss": "^1.0.6",
"postcss-simple-vars": "^4.1.0",
"postcss-strip-inline-comments": "^0.1.5",
"react-addons-perf": "^15.4.0",
"react-addons-test-utils": "^15.6.0",
"rimraf": "^2.4.3",
"source-map-loader": "^0.2.3",
"webpack": "^1.12.14",
"webpack-dev-server": "^1.16.2"
"source-map-loader": "^0.2.4",
"webpack": "^4.23.1",
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.1.10"
},
"optionalDependencies": {
"olm": "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz"
"olm": "https://matrix.org/packages/npm/olm/olm-3.1.0-pre2.tgz"
},
"build": {
"appId": "im.riot.app",
"category": "Network",
"electronVersion": "2.0.8",
"//asar=false": "https://github.com/electron-userland/electron-builder/issues/675",
"asar": false,
"dereference": true,
"//files": "We bundle everything, so we only need to include webapp/",
"electronVersion": "4.0.1",
"files": [
"node_modules/**",
"src/**",
"img/**"
],
"extraResources": [
"webapp/**/*"
"webapp/**/*",
"origin_migrator/**/*"
],
"linux": {
"target": "deb",
@@ -171,8 +169,13 @@
"StartupWMClass": "riot"
}
},
"mac": {
"category": "public.app-category.social-networking"
},
"win": {
"target": "squirrel"
"target": {
"target": "squirrel"
}
},
"directories": {
"buildResources": "electron_app/build",

View File

@@ -47,4 +47,4 @@ git commit package.json -m "$tag"
cd ..
exec ./node_modules/matrix-js-sdk/release.sh -z "$orig_args"
exec ./node_modules/matrix-js-sdk/release.sh -u vector-im -z "$orig_args"

View File

@@ -4,289 +4,185 @@
* voodoo where we have to set display: none by default
*/
.mx_HomePage_header h1 {
margin-left: 0px;
margin-bottom: 0px;
margin-top: 20px;
margin-right: 20px;
color: #454545;
h1::after {
content: "!";
}
.mx_HomePage_header h2 {
margin-left: 0px;
margin-top: 5px;
margin-bottom: 20px;
margin-right: 20px;
color: #454545;
}
.mx_HomePage_header h1 a {
color: #454545;
}
.mx_HomePage h3 {
margin-top: 30px;
}
.mx_HomePage_header {
border: 1px solid #76CFA6;
background-color: #eaf5f0;
border-radius: 5px;
align-items: center;
}
.mx_HomePage_col {
.mx_HomePage_body {
display: flex;
flex-direction: row;
flex-direction: column;
justify-content: center;
height: 100%;
}
.mx_HomePage_toprow {
flex-wrap: wrap;
.mx_Parent {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
text-align: center;
margin-bottom: 50px;
}
.mx_HomePage_row {
flex: 1 1 0;
margin-right: 20px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
.mx_Well {
display: block;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
border-radius: 10px;
background-color: #F2F5F8;
}
.mx_HomePage_logo {
margin-top: 20px;
margin-left: 40px;
margin-right: 40px;
margin-bottom: 20px;
display: inline;
height: 100px;
.mx_ButtonParent {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
padding: 10px 20px;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
border-radius: 4px;
width: 150px;
background-repeat: no-repeat;
background-position: 10px center;
text-decoration: none;
color: #2e2f32 !important;
}
.mx_HomePage_room {
cursor: pointer;
float: left;
text-decoration: none;
text-align: center;
padding-left: 10px;
padding-right: 10px;
width: 120px;
.mx_ButtonRow {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
width: 480px;
-webkit-justify-content: space-around;
-ms-flex-pack: distribute;
justify-content: space-around;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
justify-content: space-between;
padding: 0 40px;
box-sizing: border-box;
margin: 28px 0;
}
.mx_HomePage_toprow .mx_HomePage_room {
width: 64px;
.mx_buttonheadline {
margin-bottom: 14px;
}
.mx_HomePage_room .mx_HomePage_icon {
border-radius: 50%;
width: 64px;
height: 64px;
.mx_buttonlabel {
margin-left: 20px;
}
.mx_HomePage_room .mx_HomePage_name {
display: block;
.mx_buttonwrappertext {
font-size: 13px;
margin-bottom: 10px;
}
.mx_HomePage_room .mx_HomePage_desc {
display: block;
font-size: 12px;
margin-top: 8px;
.mx_Header2 {
font-size: 32px;
font-weight: 600;
margin-top: 40px;
}
.mx_HomePage_comment {
display: flex;
align-items: center;
margin-left: 100px;
min-height: 64px;
.mx_Header22 {
font-size: 14px;
font-weight: 200;
margin-bottom: 40px;
}
.mx_HomePage_container h3::after,
.mx_HomePage_container h4::after {
content: ":";
.mx_ButtonSignIn {
background-color: #368BD6;
color: white !important;
}
.mx_HomePage_container {
display: block ! important;
margin: 20px;
.mx_ButtonCreateAccount {
background-color: #03B381;
color: white !important;
}
.mx_HomePage_container h1,
.mx_HomePage_container h2,
.mx_HomePage_container h3,
.mx_HomePage_container h4 {
font-weight: 600;
.mx_secondarybutton {
background-color: #FFFFFF;
color: #2E2F32;
}
.mx_Button_iconSignIn {
background-image: url('home/images/icon-sign-in.svg');
}
.mx_Button_iconCreateAccount {
background-image: url('home/images/icon-create-account.svg');
}
.mx_Button_iconHelp {
background-image: url('home/images/icon-help.svg');
}
.mx_Button_iconRoomDirectory {
background-image: url('home/images/icon-room-directory.svg');
}
</style>
<div class="mx_HomePage_container">
<div class="mx_HomePage_col mx_HomePage_header">
<a href="https://riot.im"><img src="home/images/logo.svg" class="mx_HomePage_logo"></a>
<div>
<h1>_t("Welcome to Riot.im")</h1>
<h2>_t("Decentralised, encrypted chat &amp; collaboration powered by [matrix]")</h2>
<div class="mx_Parent">
<a href="https://riot.im">
<img src="home/images/logo.svg" alt="" class="mx_logo"/>
</a>
<h1 class="mx_Header2">_t("Welcome to Riot.im")</h1>
<h4 class="mx_Header22">_t("Decentralised, encrypted chat &amp; collaboration powered by [matrix]")</h4>
<div class="mx_Well">
<div class="mx_ButtonRow">
<a href="#/login" class="mx_ButtonParent mx_ButtonSignIn mx_Button_iconSignIn">
<div class="mx_buttonlabel">_t("Sign In")</div>
</a>
<a href="#/register" class="mx_ButtonParent mx_ButtonCreateAccount mx_Button_iconCreateAccount">
<div class="mx_buttonlabel">_t("Create Account")</div>
</a>
</div>
</div>
<div class="mx_HomePage_col mx_HomePage_toprow">
<div class="mx_HomePage_row">
<div>
<h3>_t("Search the room directory")</h3>
<a class="mx_HomePage_room" href="#/directory">
<img class="mx_HomePage_icon" src="img/icons-directory.svg">
<div class="mx_ButtonRow">
<div class="mx_buttonwrapper">
<div class="mx_buttonwrappertext">_t("Need help?")</div>
<a href="#/user/@riot-bot:matrix.org?action=chat" class="mx_ButtonParent mx_secondarybutton mx_Button_iconHelp">
<div class="mx_buttonlabel">_t("Chat with Riot Bot")</div>
</a>
<span class="mx_HomePage_comment">
_t("Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!")
</span>
</div>
</div>
<div class="mx_HomePage_row">
<div>
<h3>_t("Chat with Riot Bot")</h3>
<a class="mx_HomePage_room" href="#/user/@riot-bot:matrix.org?action=chat">
<img class="mx_HomePage_icon" src="home/rooms/riot-bot.png">
<div class="mx_buttonwrapper">
<div class="mx_buttonwrappertext">_t("Explore rooms")</div>
<a href="#/directory" class="mx_ButtonParent mx_secondarybutton mx_Button_iconRoomDirectory">
<div class="mx_buttonlabel">_t("Room Directory")</div>
</a>
<span class="mx_HomePage_comment">
_t("Get started with some tips from Riot Bot!")
</span>
</div>
</div>
</div>
<h3>_t("General discussion about Matrix and Riot")</h3>
<div class="mx_HomePage_row">
<div class="mx_HomePage_room">
<a href="#/room/#matrix:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/matrix.png">
<span class="mx_HomePage_name">Matrix HQ</span>
</a>
<span class="mx_HomePage_desc">_t("Discussion of all things Matrix!")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#riot:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/riot.png">
<span class="mx_HomePage_name">Riot</span>
</a>
<span class="mx_HomePage_desc">_t("Riot/Web &amp; Desktop chat")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#riot-ios:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/riot-ios.png">
<span class="mx_HomePage_name">#riot-ios</span>
</a>
<span class="mx_HomePage_desc">_t("Riot/iOS &amp; matrix-ios-sdk chat")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#riot-android:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/riot-android.png">
<span class="mx_HomePage_name">#riot-android</span>
</a>
<span class="mx_HomePage_desc">_t("Riot/Android &amp; matrix-android-sdk chat")</span>
</div>
</div>
<h3>_t("Matrix technical discussions")</h3>
<h4>_t("Running Matrix services")</h4>
<div class="mx_HomePage_row">
<div class="mx_HomePage_room">
<a href="#/room/#synapse:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/matrix.png">
<span class="mx_HomePage_name">Synapse Support Community</span>
</a>
<span class="mx_HomePage_desc">_t("Community-run support for Synapse")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#dendrite:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/dendrite.png">
<span class="mx_HomePage_name">#dendrite:matrix.org</span>
</a>
<span class="mx_HomePage_desc">_t("Admin support for Dendrite")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#homeowners:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/homeowners.png">
<span class="mx_HomePage_name">Synapse Homeowners</span>
</a>
<span class="mx_HomePage_desc">_t("Announcements about Synapse releases")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#irc:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/irc.png">
<span class="mx_HomePage_name">IRC Matrix Bridges</span>
</a>
<span class="mx_HomePage_desc">_t("Support for those using and running matrix-appservice-irc")</span>
</div>
</div>
<h4>_t("Building services on Matrix")</h4>
<div class="mx_HomePage_row">
<div class="mx_HomePage_room">
<a href="#/room/#matrix-dev:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/matrix-dev.png">
<span class="mx_HomePage_name">#matrix-dev:matrix.org</span>
</a>
<span class="mx_HomePage_desc">_t("Support for those using the Matrix spec")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#e2e:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/e2e.png">
<span class="mx_HomePage_name">End-to-end crypto in Matrix</span>
</a>
<span class="mx_HomePage_desc">_t("Design and implementation of E2E in Matrix")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#vr:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/vr.png">
<span class="mx_HomePage_name">#vr:matrix.org</span>
</a>
<span class="mx_HomePage_desc">_t("Implementing VR services with Matrix")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#webrtc:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/webrtc.png">
<span class="mx_HomePage_name">#webrtc:matrix.org</span>
</a>
<span class="mx_HomePage_desc">_t("Implementing VoIP services with Matrix")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#matrix-identity:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/identity.jpg">
<span class="mx_HomePage_name">Matrix Identity</span>
</a>
<span class="mx_HomePage_desc">_t("Discussion of the Identity Service API")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#bridging:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/bridging.png">
<span class="mx_HomePage_name">Matrix Bridging</span>
</a>
<span class="mx_HomePage_desc">_t("Support for those using, running and writing other bridges")</span>
</div>
</div>
<h4>_t("Contributing code to Matrix and Riot")</h4>
<div class="mx_HomePage_row">
<div class="mx_HomePage_room">
<a href="#/room/#riot-dev:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/riot-dev.png">
<span class="mx_HomePage_name">#riot-dev</span>
</a>
<span class="mx_HomePage_desc">_t("Dev chat for the Riot/Web dev team")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#dendrite-dev:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/dendrite-dev.png">
<span class="mx_HomePage_name">#dendrite-dev</span>
</a>
<span class="mx_HomePage_desc">_t("Dev chat for the Dendrite dev team")</span>
</div>
<div class="mx_HomePage_room">
<a href="#/room/#riotweb-translations:matrix.org">
<img class="mx_HomePage_icon" src="home/rooms/riot-translations.png">
<span class="mx_HomePage_name">Riot Translations</span>
</a>
<span class="mx_HomePage_desc">_t("Co-ordination for Riot translators")</span>
</div>
</div>
</div>

View File

@@ -0,0 +1,17 @@
<svg width="24px" height="20px" viewBox="0 0 24 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Home" transform="translate(-880.000000, -478.000000)" stroke="#FFFFFF" stroke-width="1.6">
<g id="Group-11" transform="translate(621.000000, 176.000000)">
<g id="Group-7-Copy" transform="translate(243.000000, 290.000000)">
<g id="user-plus" transform="translate(17.000000, 13.000000)">
<path d="M15,18 L15,16 C15,13.790861 13.209139,12 11,12 L4,12 C1.790861,12 2.22044605e-16,13.790861 0,16 L0,18" id="Path"></path>
<circle id="Oval" cx="7.5" cy="4" r="4"></circle>
<path d="M19,5 L19,11" id="Path"></path>
<path d="M22,8 L16,8" id="Path"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,16 @@
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Home" transform="translate(-672.000000, -577.000000)" stroke="#000000" stroke-width="1.6">
<g id="Group-11" transform="translate(621.000000, 176.000000)">
<g id="Group-10" transform="translate(39.000000, 391.000000)">
<g id="help-circle" transform="translate(13.000000, 11.000000)">
<circle id="Oval" cx="10" cy="10" r="10"></circle>
<path d="M7.09,7 C7.57543688,5.62004444 8.98538362,4.79140632 10.4271763,5.0387121 C11.868969,5.28601788 12.9221794,6.53715293 12.92,8 C12.92,10 9.92,11 9.92,11" id="Path"></path>
<path d="M10,15 L10.0050017,15.0050017" id="Path"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,19 @@
<svg width="20px" height="14px" viewBox="0 0 20 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Home" transform="translate(-880.000000, -581.000000)" stroke="#000000" stroke-width="1.6">
<g id="Group-11" transform="translate(621.000000, 176.000000)">
<g id="Group-8" transform="translate(243.000000, 391.000000)">
<g id="list" transform="translate(15.000000, 14.000000)">
<path d="M7,1 L20,1" id="Path"></path>
<path d="M7,7 L20,7" id="Path"></path>
<path d="M7,13 L20,13" id="Path"></path>
<path d="M2,1 L2.02063964,1.02063964" id="Path"></path>
<path d="M2,7 L2,7.03169624" id="Path"></path>
<path d="M2,13 L2,13.0336048" id="Path"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,16 @@
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Experiments" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Home" transform="translate(-673.000000, -478.000000)" stroke="#FFFFFF" stroke-width="1.6">
<g id="Group-11" transform="translate(621.000000, 176.000000)">
<g id="Group-7" transform="translate(40.000000, 283.000000)">
<g id="log-in" transform="translate(13.000000, 20.000000)">
<path d="M12,0 L16,0 C17.1045695,0 18,0.8954305 18,2 L18,16 C18,17.1045695 17.1045695,18 16,18 L12,18" id="Path"></path>
<polyline id="Path" points="7 14 12 9 7 4"></polyline>
<path d="M12,9 L0,9" id="Path"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1000 B

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
<title>icons_directory</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Left-panel" transform="translate(-83.000000, -726.000000)">
<g id="icons_directory">
<g transform="translate(83.000000, 726.000000)">
<path d="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0 C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z" id="Oval-1-Copy-7" fill="#76CFA6"></path>
<g id="Lines" transform="translate(6.000000, 7.000000)" stroke="#FFFFFF" stroke-linecap="round">
<path d="M4,5.5 L9,5.5" id="Line"></path>
<path d="M4,1.5 L13,1.5" id="Line-Copy-4"></path>
<path d="M0,1.5 L2,1.5" id="Line" opacity="0.6"></path>
<path d="M0,5.5 L2,5.5" id="Line" opacity="0.6"></path>
<path d="M4,9.5 L11,9.5" id="Line-Copy-6"></path>
<path d="M0,9.5 L2,9.5" id="Line-Copy-3" opacity="0.6"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,158 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 163.60767 144.2"
xml:space="preserve"
sodipodi:docname="riot-im-logo-1.svg"
width="163.60767"
height="144.2"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
id="metadata3918"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs3916" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="2071"
id="namedview3914"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="81.80767"
inkscape:cy="72.1"
inkscape:window-x="1912"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style3856">
.st0{fill:#7DC8A2;}
.st1{fill:#AFDBC5;}
.st2{fill:#764D80;}
.st3{fill:#764D80;stroke:#764D80;stroke-miterlimit:10;}
</style><g
id="Layer_3"
transform="translate(-38.19233,-47.9)"><g
id="g3910"><g
id="g3886"><g
id="g3884"><path
class="st0"
d="M 100.6,48.1 H 59.7 c -0.1,0 -0.2,0 -0.3,0 -11.4,0 -20.6,9.2 -20.6,20.6 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.6 c 28.3,0 51.4,-23.1 51.4,-51.4 0,-28.3 -23.1,-51.4 -51.4,-51.4 z"
id="path3858"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="M 59.5,186.9 C 51,186.9 44.1,180 44.1,171.5 V 68.6 c 0,-8.5 6.9,-15.4 15.3,-15.4 0.1,0 0.2,0 0.3,0 h 40.9 c 25.5,0 46.3,20.8 46.3,46.3 0,25.5 -20.8,46.3 -46.3,46.3 H 74.9 v 25.7 c 0,8.4 -6.9,15.4 -15.4,15.4 z"
id="path3860"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 59.5,181.7 c -5.7,0 -10.3,-4.6 -10.3,-10.3 V 68.6 c 0,-5.6 4.5,-10.2 10.1,-10.3 0.1,0 0.2,0 0.3,0 h 41 c 22.7,0 41.1,18.5 41.1,41.1 0,22.6 -18.5,41.1 -41.1,41.1 H 69.8 v 30.8 c 0,5.8 -4.6,10.4 -10.3,10.4 z"
id="path3862"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="m 59.5,176.6 c -2.9,0 -5.2,-2.3 -5.2,-5.2 V 68.6 c 0,-2.8 2.2,-5.1 5,-5.2 h 0.2 41.1 c 19.9,0 36,16.2 36,36 0,19.8 -16.1,36 -36,36 H 64.7 v 36 c 0,2.9 -2.3,5.2 -5.2,5.2 z"
id="path3864"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 59.5,130.3 h 41.1 c 17,0 30.9,-13.8 30.9,-30.9 0,-17.1 -13.8,-30.9 -30.9,-30.9 H 59.5 Z"
id="path3866"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="M 64.7,125.2 V 73.7 h 36 c 14.2,0 25.7,11.5 25.7,25.7 0,14.2 -11.5,25.7 -25.7,25.7 z"
id="path3868"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="M 69.8,120.1 V 78.9 h 30.8 c 11.4,0 20.6,9.2 20.6,20.6 0,11.4 -9.2,20.6 -20.6,20.6 z"
id="path3870"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="M 74.9,115 V 84 h 25.7 c 8.5,0 15.5,6.9 15.5,15.5 0,8.6 -6.9,15.5 -15.5,15.5 z"
id="path3872"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="M 80,109.8 V 89.1 h 20.6 c 5.7,0 10.4,4.6 10.4,10.4 0,5.8 -4.6,10.4 -10.4,10.4 z"
id="path3874"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="M 85.2,104.7 V 94.2 h 15.4 c 2.9,0 5.2,2.3 5.2,5.2 0,2.9 -2.3,5.2 -5.2,5.2 z"
id="path3876"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><g
id="g3882"><circle
transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.7245,46.1263)"
class="st2"
cx="58.799999"
cy="68.599998"
id="ellipse3878"
r="20.6"
style="fill:#764d80" /><path
class="st2"
d="m 147.6,159.6 c 6.5,9.3 4.3,22.1 -5,28.6 -9.3,6.5 -22.1,4.3 -28.6,-5 l -30.8,-44 c -6.5,-9.3 -4.3,-22.1 5,-28.6 9.3,-6.5 22.1,-4.3 28.6,5 z"
id="path3880"
inkscape:connector-curvature="0"
style="fill:#764d80" /></g></g></g><g
id="g3908"><g
id="g3896"><path
class="st2"
d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z"
id="path3888"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st2"
d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z"
id="path3890"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st2"
d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z"
id="path3892"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st2"
d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z"
id="path3894"
inkscape:connector-curvature="0"
style="fill:#764d80" /></g><g
id="g3902"><path
class="st2"
d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z"
id="path3898"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st2"
d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z"
id="path3900"
inkscape:connector-curvature="0"
style="fill:#764d80" /></g><g
id="g3906"><path
class="st3"
d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z"
id="path3904"
inkscape:connector-curvature="0"
style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /></g></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -1,165 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 163.7 144.10001"
xml:space="preserve"
sodipodi:docname="riot-im-logo-2.svg"
width="163.7"
height="144.10001"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
id="metadata64"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs62" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview60"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="81.9"
inkscape:cy="72"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style2">
.st0{fill:#F69E98;}
.st1{fill:#764D80;}
</style><g
id="Layer_3"
transform="translate(-38.1,-47.9)"><g
id="g26"><g
id="g24"><g
id="g12"><path
class="st0"
d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#f69e98" /></g><g
id="g18"><path
class="st0"
d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z"
id="path14"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z"
id="path16"
inkscape:connector-curvature="0"
style="fill:#f69e98" /></g><g
id="g22"><path
class="st0"
d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z"
id="path20"
inkscape:connector-curvature="0"
style="fill:#f69e98" /></g></g></g></g><g
id="g57"
transform="translate(-38.1,-47.9)"><path
class="st1"
d="M 99.9,48 H 58.7 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.5 c 28.4,0 51.4,-23 51.4,-51.4 C 151.2,71 128.2,48 99.9,48 Z"
id="path29"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st0"
d="m 58.7,187.6 c -8.9,0 -16.2,-7.2 -16.2,-16.2 V 68.6 c 0,-8.9 7.1,-16.1 16,-16.2 h 41.3 c 26,0 47,21 47,47 0,26 -21,47 -47,47 H 74.9 v 25 c 0,9 -7.2,16.2 -16.2,16.2 z M 58.6,53.9 c -8,0.1 -14.5,6.6 -14.5,14.7 v 102.8 c 0,8.1 6.6,14.7 14.7,14.7 8.1,0 14.7,-6.6 14.7,-14.7 v -26.5 h 26.4 c 25.1,0 45.5,-20.4 45.5,-45.5 0,-25.1 -20.4,-45.5 -45.5,-45.5 0,0 -41.3,0 -41.3,0 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 58.7,182.4 c -6.1,0 -11,-4.9 -11,-11 V 68.6 c 0,-6 4.8,-10.8 10.8,-11 h 41.3 c 23.1,0 41.9,18.7 41.9,41.9 0,23.2 -18.7,41.8 -41.9,41.8 h -30 v 30.1 c 0,6.1 -4.9,11 -11.1,11 0.1,0 0.1,0 0,0 z M 58.5,59 c -5.2,0.1 -9.3,4.4 -9.3,9.6 v 102.8 c -0.2,5.3 4,9.7 9.2,9.8 5.2,0.1 9.7,-4 9.8,-9.2 0,-0.2 0,-0.4 0,-0.6 v -31.6 h 31.6 c 22.3,0 40.3,-18.1 40.3,-40.4 0,-22.3 -18.1,-40.3 -40.3,-40.3 z"
id="path33"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 58.7,177.3 c -3.2,0 -5.9,-2.6 -5.9,-5.9 V 68.6 c 0,-3.1 2.5,-5.7 5.6,-5.9 h 41.4 c 20.3,0 36.7,16.4 36.7,36.7 0,20.3 -16.4,36.7 -36.7,36.7 H 64.6 v 35.2 c 0,3.3 -2.6,6 -5.9,6 z M 58.5,64.2 c -2.3,0.2 -4.1,2.1 -4.1,4.4 v 102.8 c 0,2.4 2,4.4 4.4,4.4 2.4,0 4.4,-2 4.4,-4.4 v -36.8 h 36.7 c 19.4,0 35.2,-15.8 35.2,-35.2 0,-19.4 -15.8,-35.2 -35.2,-35.2 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="M 99.9,131 H 58 V 67.9 h 41.9 c 17.4,0 31.6,14.1 31.6,31.6 0,17.5 -14.2,31.5 -31.6,31.5 z M 59.5,129.5 H 99.9 C 116.5,129.5 130,116 130,99.4 130,82.8 116.5,69.3 99.9,69.3 H 59.5 Z"
id="path37"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="M 99.9,125.9 H 63.2 V 73 h 36.7 c 14.6,0.3 26.2,12.3 25.9,26.9 -0.3,14.3 -11.8,25.7 -25.9,26 z M 64.6,124.4 H 99.8 C 113.6,124.1 124.5,112.7 124.2,99 123.9,85.6 113.2,74.8 99.8,74.6 H 64.6 Z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="M 99.9,120.7 H 68.3 V 78.2 h 31.6 c 11.8,0.3 21.1,10 20.8,21.7 -0.3,11.4 -9.5,20.6 -20.8,20.8 z M 69.8,119.2 H 99.9 C 110.8,119 119.5,109.9 119.2,99 119,88.4 110.4,79.9 99.9,79.7 H 69.8 Z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="M 99.9,115.6 H 73.4 V 83.3 h 26.4 c 8.9,0 16.1,7.2 16.1,16.1 0,8.9 -7.1,16.2 -16,16.2 z m -25,-1.6 h 24.9 c 8.1,0 14.6,-6.6 14.6,-14.6 0,-8 -6.6,-14.6 -14.6,-14.6 v 0 H 74.9 Z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="M 99.9,110.4 H 78.6 v -22 h 21.3 c 6.1,0 11,4.9 11,11 0,6.1 -5,11 -11,11 z m -19.8,-1.5 h 19.8 c 5.2,0 9.5,-4.3 9.5,-9.5 0,-5.2 -4.3,-9.5 -9.5,-9.5 H 80.1 Z"
id="path45"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="M 99.9,105.3 H 83.7 V 93.6 h 16.1 c 3.2,0 5.9,2.6 5.9,5.9 0,3.3 -2.6,5.8 -5.8,5.8 0,0 0,0 0,0 z m -14.7,-1.5 h 14.7 c 2.4,0 4.4,-2 4.4,-4.4 0,-2.4 -2,-4.4 -4.4,-4.4 H 85.2 Z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 99.4,100.2 h -9.3 c -0.4,0 -0.8,-0.3 -0.8,-0.8 0,-0.5 0.3,-0.8 0.8,-0.8 h 9.3 c 0.4,0 0.8,0.3 0.8,0.8 0,0.5 -0.4,0.8 -0.8,0.8 z"
id="path49"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st0"
d="m 58.7,172.2 c -0.4,0 -0.8,-0.3 -0.8,-0.8 v -36 c 0,-0.4 0.3,-0.8 0.8,-0.8 0.4,0 0.8,0.3 0.8,0.8 v 36 c 0,0.4 -0.3,0.8 -0.8,0.8 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><circle
transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.7215,46.1209)"
class="st0"
cx="58.799999"
cy="68.599998"
id="ellipse53"
r="20.6"
style="fill:#f69e98" /><path
class="st0"
d="m 147.5,159.6 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 L 83,139.1 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#f69e98" /></g></svg>

Before

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -1,173 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 163.89999 144.3"
xml:space="preserve"
sodipodi:docname="riot-im-logo-3.svg"
width="163.89999"
height="144.3"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
id="metadata68"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs66" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview64"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="82.1"
inkscape:cy="72.2"
inkscape:window-x="1034"
inkscape:window-y="234"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style2">
.st0{fill:#FAC79E;}
.st1{fill:#E45E5D;}
.st2{fill:#F8A05F;}
</style><g
id="Layer_3"
transform="translate(-37.9,-47.9)"><g
id="g26"><g
id="g24"><g
id="g12"><path
class="st0"
d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#fac79e" /><path
class="st0"
d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#fac79e" /><path
class="st0"
d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#fac79e" /><path
class="st0"
d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#fac79e" /></g><g
id="g18"><path
class="st0"
d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z"
id="path14"
inkscape:connector-curvature="0"
style="fill:#fac79e" /><path
class="st0"
d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z"
id="path16"
inkscape:connector-curvature="0"
style="fill:#fac79e" /></g><g
id="g22"><path
class="st0"
d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z"
id="path20"
inkscape:connector-curvature="0"
style="fill:#fac79e" /></g></g></g></g><g
id="g61"
transform="translate(-37.9,-47.9)"><path
class="st1"
d="M 99.6,48.2 H 58.5 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 V 151 h 20.6 c 28.4,0 51.4,-23 51.4,-51.4 0,-28.4 -23.1,-51.4 -51.5,-51.4 z"
id="path29"
inkscape:connector-curvature="0"
style="fill:#e45e5d" /><polygon
class="st2"
points="37.9,96.3 37.9,104.3 85,48.2 78.3,48.2 "
id="polygon31"
style="fill:#f8a05f" /><polygon
class="st2"
points="37.9,112.3 37.9,120.2 98.4,48.2 91.7,48.2 "
id="polygon33"
style="fill:#f8a05f" /><path
class="st2"
d="m 110.8,49.5 c -1.9,-0.4 -3.9,-0.8 -5.9,-1 L 38,128.3 v 8 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><polygon
class="st2"
points="37.9,80.3 37.9,88.3 71.6,48.2 64.8,48.2 "
id="polygon37"
style="fill:#f8a05f" /><path
class="st2"
d="m 121.2,53 c -1.6,-0.8 -3.3,-1.4 -5,-2 l -78.3,93.2 v 8 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="m 79.1,151 h 0.2 L 144,73.8 c -0.9,-1.5 -1.9,-3 -2.9,-4.5 L 43.5,185.6 c 1.2,1.3 2.5,2.4 4,3.3 l 31.6,-37.7 z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="M 150.2,90.4 99.4,151 h 0.2 c 2.3,0 4.6,-0.2 6.9,-0.5 l 44.5,-53 c -0.2,-2.4 -0.4,-4.7 -0.8,-7.1 z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="m 78.7,175.7 -12.6,15 c 6.4,-2.6 11.2,-8.2 12.6,-15 z"
id="path45"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="m 147.9,117.1 c 1.3,-3.6 2.2,-7.4 2.7,-11.2 l -35.9,42.8 c 3.7,-1.1 7.3,-2.7 10.6,-4.6 z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="m 130.2,58.3 c -1.4,-1 -2.8,-2 -4.3,-2.9 l -88,104.8 v 8 z"
id="path49"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="m 137.8,65.2 c -1.2,-1.3 -2.4,-2.5 -3.6,-3.7 L 38.4,175.7 c 0.4,1.9 1.1,3.8 2,5.6 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="m 79.1,167.2 v -8 l -26.8,32 c 1.9,0.6 3.9,1 5.9,1 z"
id="path53"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><path
class="st2"
d="m 148.7,84.2 c -0.6,-1.9 -1.3,-3.7 -2.1,-5.5 L 85.9,151 h 6.7 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#f8a05f" /><circle
transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.8644,46.014)"
class="st0"
cx="58.5"
cy="68.800003"
id="ellipse57"
r="20.6"
style="fill:#fac79e" /><path
class="st0"
d="m 147.3,159.8 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 l -30.8,-44 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z"
id="path59"
inkscape:connector-curvature="0"
style="fill:#fac79e" /></g></svg>

Before

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -1,185 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 163.89999 144.10001"
xml:space="preserve"
sodipodi:docname="riot-im-logo-4.svg"
width="163.89999"
height="144.10001"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
id="metadata70"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs68" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview66"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="82.1"
inkscape:cy="72"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style2">
.st0{fill:#C7BDCD;}
.st1{fill:#E45E5D;}
.st2{fill:#F69E98;}
</style><g
id="Layer_3"
transform="translate(-37.9,-47.9)"><g
id="g26"><g
id="g24"><g
id="g12"><path
class="st0"
d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /><path
class="st0"
d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /><path
class="st0"
d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /><path
class="st0"
d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /></g><g
id="g18"><path
class="st0"
d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z"
id="path14"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /><path
class="st0"
d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z"
id="path16"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /></g><g
id="g22"><path
class="st0"
d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z"
id="path20"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /></g></g></g></g><g
id="g63"
transform="translate(-37.9,-47.9)"><path
class="st1"
d="M 99.6,48 H 58.5 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 V 150.8 H 99.6 C 128,150.8 151,127.8 151,99.4 151,71 128,48 99.6,48 Z"
id="path29"
inkscape:connector-curvature="0"
style="fill:#e45e5d" /><path
class="st2"
d="m 40.7,181.7 c 1.1,1.9 2.6,3.7 4.2,5.1 H 72 c 1.7,-1.5 3.1,-3.2 4.2,-5.1 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,140.6 v 5.1 h 84 c 3,-1.4 5.8,-3.2 8.4,-5.1 z"
id="path33"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><rect
x="37.900002"
y="150.8"
class="st2"
width="41.099998"
height="5.0999999"
id="rect35"
style="fill:#f69e98" /><rect
x="37.900002"
y="161.10001"
class="st2"
width="41.099998"
height="5.0999999"
id="rect37"
style="fill:#f69e98" /><path
class="st2"
d="m 38.6,63.4 h 97.6 c -1.8,-1.9 -3.8,-3.6 -5.9,-5.1 H 40.7 c -0.9,1.6 -1.6,3.3 -2.1,5.1 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,171.4 v 0 c 0,1.7 0.2,3.4 0.7,5.1 h 39.8 c 0.4,-1.7 0.7,-3.4 0.7,-5.1 0,0 -41.2,0 -41.2,0 z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,104.6 h 112.8 c 0.2,-1.7 0.3,-3.4 0.3,-5.1 H 37.9 Z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,130.3 v 5.1 h 98.3 c 1.6,-1.6 3.1,-3.3 4.4,-5.1 z"
id="path45"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,68.6 v 5.1 H 144 c -1,-1.8 -2.2,-3.5 -3.4,-5.1 z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 58.7,48 h -0.2 c -5,0 -9.8,1.8 -13.6,5.1 h 77 C 114.9,49.7 107.3,48 99.6,48 Z"
id="path49"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="M 37.9,78.9 V 84 h 110.7 c -0.6,-1.7 -1.2,-3.5 -1.9,-5.1 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,120 v 5.1 H 144 c 1,-1.7 1.8,-3.4 2.6,-5.1 z"
id="path53"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,109.7 v 5.1 h 110.7 c 0.5,-1.7 1,-3.4 1.3,-5.1 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><path
class="st2"
d="m 37.9,89.3 v 5.1 h 112.8 c -0.2,-1.7 -0.4,-3.4 -0.8,-5.1 z"
id="path57"
inkscape:connector-curvature="0"
style="fill:#f69e98" /><circle
transform="matrix(0.8192,-0.5736,0.5736,0.8192,-28.7665,45.9782)"
class="st0"
cx="58.5"
cy="68.599998"
id="ellipse59"
r="20.6"
style="fill:#c7bdcd" /><path
class="st0"
d="m 147.3,159.6 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 l -30.8,-44 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z"
id="path61"
inkscape:connector-curvature="0"
style="fill:#c7bdcd" /></g></svg>

Before

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -1,110 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 164.01289 144.2"
xml:space="preserve"
sodipodi:docname="riot-im-logo-5.svg"
width="164.01289"
height="144.2"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
id="metadata42"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs40" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview38"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="82.212895"
inkscape:cy="72.1"
inkscape:window-x="1100"
inkscape:window-y="295"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style2">
.st0{fill:#AFDBC5;}
.st1{fill:#764D80;}
</style><g
id="Layer_3"
transform="translate(-37.787105,-47.9)"><g
id="g26"><g
id="g24"><g
id="g12"><path
class="st0"
d="M 183.6,80.7 H 200 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 183.6,51.3 h 4.9 v 5 0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 0 c 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 200,123.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 191.8,94.5 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /></g><g
id="g18"><path
class="st0"
d="m 201.1,157 c -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.4,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.4 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.3,0 0.7,-0.1 1.1,-0.4 0.3,-0.3 0.4,-0.6 0.4,-1.1 0,-0.4 -0.1,-0.8 -0.4,-1.1 z"
id="path14"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 201.5,175.3 v -0.2 c 0,-0.4 -0.1,-0.8 -0.4,-1.1 -0.3,-0.3 -0.6,-0.4 -1.1,-0.4 h -16.5 c -0.3,0 -0.7,0 -1.1,0.3 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 h 12.1 l -7.3,4.9 c -0.4,0.4 -0.6,0.8 -0.6,1.3 0,0.5 0.3,1 0.7,1.3 l 7.3,5 h -12.1 c -0.3,0 -0.7,0.1 -1.1,0.4 -0.3,0.3 -0.4,0.6 -0.4,1.1 0,0.5 0.1,0.7 0.4,1.1 0.3,0.4 0.6,0.4 1.1,0.4 H 200 c 0.4,0 0.7,-0.1 1.1,-0.4 0.4,-0.3 0.4,-0.6 0.4,-1.1 v -0.2 c 0,-0.5 -0.1,-1.1 -0.7,-1.4 l -9.2,-6.1 9.2,-6.1 c 0.4,-0.3 0.7,-0.8 0.7,-1.4 z"
id="path16"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /></g><g
id="g22"><path
class="st0"
d="m 190.7,146.1 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z"
id="path20"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /></g></g></g></g><g
id="g35"
transform="translate(-37.787105,-47.9)"><path
class="st1"
d="M 99.5,48.1 H 58.4 c -11.4,0 -20.6,9.2 -20.6,20.6 0,0 0,0 0,0 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.6 c 28.4,0 51.4,-23 51.4,-51.4 0,-28.4 -23.2,-51.4 -51.5,-51.4 z"
id="path29"
inkscape:connector-curvature="0"
style="fill:#764d80" /><circle
transform="matrix(0.8211,-0.5708,0.5708,0.8211,-28.7968,45.5905)"
class="st0"
cx="58.299999"
cy="68.699997"
id="ellipse31"
r="20.5"
style="fill:#afdbc5" /><path
class="st0"
d="m 147.2,159.6 c 6.5,9.3 4.3,22.1 -5.1,28.6 -9.4,6.5 -22.1,4.3 -28.6,-5.1 l -30.8,-44 c -6.5,-9.3 -4.2,-22.1 5.1,-28.6 9.3,-6.5 22.1,-4.2 28.6,5.1 z"
id="path33"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /></g></svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.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>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.36 143.93"><defs><style type="text/css">.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>

Before

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.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>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 175.64 143.93"><defs><style type="text/css">.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>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.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>

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.99 143.93"><defs><style type="text/css">.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>

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -1,32 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,169 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
viewBox="0 0 163.57917 144.19999"
xml:space="preserve"
id="svg75"
sodipodi:docname="riot.im logo.svg"
width="163.57916"
height="144.2"
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
id="metadata81"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs79" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview77"
showgrid="false"
inkscape:zoom="0.28031832"
inkscape:cx="73.079153"
inkscape:cy="50.349988"
inkscape:window-x="1067"
inkscape:window-y="442"
inkscape:window-maximized="0"
inkscape:current-layer="svg75" /><style
type="text/css"
id="style2">
.st0{fill:#7DC8A2;}
.st1{fill:#AFDBC5;}
.st2{fill:#764D80;}
.st3{fill:#764D80;stroke:#764D80;stroke-miterlimit:10;}
</style><g
id="Grid"
transform="translate(-522.22083,-327.1)"><g
id="g4" /><g
id="g6" /><g
id="g8" /><g
id="g10" /><g
id="g12" /></g><g
id="Design"
transform="translate(-522.22083,-327.1)"><g
id="g17"><g
id="g15" /></g></g><g
id="Layer_3"
transform="translate(-522.22083,-327.1)"><g
id="g72"><g
id="g48"><g
id="g46"><path
class="st0"
d="m 584.6,327.3 h -40.9 c -0.1,0 -0.2,0 -0.3,0 -11.4,0 -20.6,9.2 -20.6,20.6 v 102.8 c 0,11.4 9.2,20.6 20.6,20.6 11.4,0 20.6,-9.2 20.6,-20.6 v -20.6 h 20.6 c 28.3,0 51.4,-23.1 51.4,-51.4 0,-28.3 -23.1,-51.4 -51.4,-51.4 z"
id="path20"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="m 543.5,466.1 c -8.5,0 -15.4,-6.9 -15.4,-15.4 V 347.8 c 0,-8.5 6.9,-15.4 15.3,-15.4 0.1,0 0.2,0 0.3,0 h 40.9 c 25.5,0 46.3,20.8 46.3,46.3 0,25.5 -20.8,46.3 -46.3,46.3 h -25.7 v 25.7 c 0,8.4 -6.9,15.4 -15.4,15.4 z"
id="path22"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 543.5,460.9 c -5.7,0 -10.3,-4.6 -10.3,-10.3 V 347.8 c 0,-5.6 4.5,-10.2 10.1,-10.3 0.1,0 0.2,0 0.3,0 h 41 c 22.7,0 41.1,18.5 41.1,41.1 0,22.6 -18.5,41.1 -41.1,41.1 h -30.8 v 30.8 c 0,5.8 -4.6,10.4 -10.3,10.4 z"
id="path24"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="m 543.5,455.8 c -2.9,0 -5.2,-2.3 -5.2,-5.2 V 347.8 c 0,-2.8 2.2,-5.1 5,-5.2 h 0.2 41.1 c 19.9,0 36,16.2 36,36 0,19.8 -16.1,36 -36,36 h -35.9 v 36 c 0,2.9 -2.3,5.2 -5.2,5.2 z"
id="path26"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 543.5,409.5 h 41.1 c 17,0 30.9,-13.8 30.9,-30.9 0,-17.1 -13.8,-30.9 -30.9,-30.9 h -41.1 z"
id="path28"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="m 548.7,404.4 v -51.5 h 36 c 14.2,0 25.7,11.5 25.7,25.7 0,14.2 -11.5,25.7 -25.7,25.7 h -36 z"
id="path30"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 553.8,399.3 v -41.2 h 30.8 c 11.4,0 20.6,9.2 20.6,20.6 0,11.4 -9.2,20.6 -20.6,20.6 z"
id="path32"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="m 558.9,394.2 v -31 h 25.7 c 8.5,0 15.5,6.9 15.5,15.5 0,8.6 -6.9,15.5 -15.5,15.5 z"
id="path34"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><path
class="st0"
d="m 564,389 v -20.7 h 20.6 c 5.7,0 10.4,4.6 10.4,10.4 0,5.8 -4.6,10.4 -10.4,10.4 H 564 Z"
id="path36"
inkscape:connector-curvature="0"
style="fill:#7dc8a2" /><path
class="st1"
d="m 569.2,383.9 v -10.5 h 15.4 c 2.9,0 5.2,2.3 5.2,5.2 0,2.9 -2.3,5.2 -5.2,5.2 h -15.4 z"
id="path38"
inkscape:connector-curvature="0"
style="fill:#afdbc5" /><g
id="g44"><circle
transform="matrix(0.8192,-0.5736,0.5736,0.8192,-101.3379,374.2691)"
class="st2"
cx="542.79999"
cy="347.79999"
id="ellipse40"
r="20.6"
style="fill:#764d80" /><path
class="st2"
d="m 631.6,438.8 c 6.5,9.3 4.3,22.1 -5,28.6 -9.3,6.5 -22.1,4.3 -28.6,-5 l -30.8,-44 c -6.5,-9.3 -4.3,-22.1 5,-28.6 9.3,-6.5 22.1,-4.3 28.6,5 z"
id="path42"
inkscape:connector-curvature="0"
style="fill:#764d80" /></g></g></g><g
id="g70"><g
id="g58"><path
class="st2"
d="M 667.6,359.9 H 684 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.9 -0.7,-1.6 -1.6,-1.6 h -16.4 c -0.9,0 -1.6,0.7 -1.6,1.6 0,0.9 0.7,1.6 1.6,1.6 z"
id="path50"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st2"
d="m 667.6,330.5 h 4.9 v 5 c 0,0 0,0 0,0 l -5.8,4 c -0.7,0.5 -0.9,1.5 -0.4,2.3 0.5,0.7 1.5,0.9 2.3,0.4 l 4.6,-3.2 c 1.1,2.2 3.3,3.6 5.9,3.6 3.6,0 6.6,-3 6.6,-6.6 v -7.2 c 0,0 0,0 0,0 0,-0.6 -0.3,-1.1 -0.7,-1.4 -0.3,-0.2 -0.6,-0.3 -0.9,-0.3 v 0 h -9.8 -6.5 c -0.9,0 -1.6,0.7 -1.6,1.6 -0.2,1.1 0.5,1.8 1.4,1.8 z m 14.7,5.6 c 0,1.8 -1.5,3.3 -3.3,3.3 -1.8,0 -3.3,-1.5 -3.3,-3.3 v -5.6 h 6.5 v 5.6 z"
id="path52"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st2"
d="m 684,402.9 c -0.9,0 -1.6,0.7 -1.6,1.6 v 4.9 h -14.7 c -0.9,0 -1.6,0.7 -1.6,1.6 v 0 c 0,0.9 0.7,1.6 1.6,1.6 h 14.7 v 5 c 0,0.9 0.7,1.6 1.6,1.6 0.9,0 1.6,-0.7 1.6,-1.6 v -6.6 0 -6.5 c 0,-0.9 -0.7,-1.6 -1.6,-1.6 z"
id="path54"
inkscape:connector-curvature="0"
style="fill:#764d80" /><path
class="st2"
d="m 675.8,373.7 c -5.5,0 -10,4.5 -10,10 0,5.5 4.5,10 10,10 5.5,0 10,-4.5 10,-10 0,-5.5 -4.5,-10 -10,-10 z m 0,16.7 c -3.7,0 -6.7,-3 -6.7,-6.7 0,-3.7 3,-6.7 6.7,-6.7 3.7,0 6.7,3 6.7,6.7 0,3.7 -3,6.7 -6.7,6.7 z"
id="path56"
inkscape:connector-curvature="0"
style="fill:#764d80" /></g><g
id="g64"><path
class="st3"
d="M 667.5,436.3 H 684 c 0.3,0 0.5,0.1 0.7,0.3 0.2,0.2 0.3,0.4 0.3,0.7 0,0.3 -0.1,0.5 -0.3,0.7 -0.2,0.2 -0.5,0.3 -0.7,0.3 h -16.5 c -0.3,0 -0.5,-0.1 -0.7,-0.3 -0.2,-0.2 -0.3,-0.4 -0.3,-0.7 0,-0.3 0.1,-0.5 0.3,-0.7 0.2,-0.2 0.4,-0.3 0.7,-0.3 z"
id="path60"
inkscape:connector-curvature="0"
style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /><path
class="st3"
d="M 667.5,453.3 H 684 c 0.3,0 0.5,0.1 0.7,0.3 0.2,0.2 0.3,0.4 0.3,0.7 v 0.2 c 0,0.4 -0.2,0.7 -0.5,1 l -9.8,6.5 9.8,6.5 c 0.4,0.2 0.5,0.5 0.5,1 v 0.2 c 0,0.3 -0.1,0.5 -0.3,0.7 -0.2,0.2 -0.4,0.3 -0.7,0.3 h -16.5 c -0.3,0 -0.5,-0.1 -0.7,-0.3 -0.2,-0.2 -0.3,-0.4 -0.3,-0.7 0,-0.3 0.1,-0.5 0.3,-0.7 0.2,-0.2 0.5,-0.3 0.7,-0.3 h 13.7 l -8.6,-5.9 c -0.3,-0.2 -0.5,-0.5 -0.5,-0.9 0,-0.3 0.2,-0.6 0.5,-0.9 l 8.6,-5.8 h -13.7 c -0.3,0 -0.5,-0.1 -0.7,-0.3 -0.2,-0.2 -0.3,-0.4 -0.3,-0.7 0,-0.3 0.1,-0.5 0.3,-0.7 0.2,-0.2 0.4,-0.2 0.7,-0.2 z"
id="path62"
inkscape:connector-curvature="0"
style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /></g><g
id="g68"><path
class="st3"
d="m 674.7,425.3 c 0.3,0 0.6,0.1 0.9,0.4 0.2,0.2 0.4,0.5 0.4,0.9 0,0.3 -0.1,0.6 -0.4,0.9 -0.2,0.2 -0.5,0.4 -0.9,0.4 h -0.5 c -0.3,0 -0.6,-0.1 -0.9,-0.4 -0.2,-0.2 -0.4,-0.5 -0.4,-0.9 0,-0.4 0.1,-0.7 0.4,-0.9 0.2,-0.2 0.5,-0.4 0.9,-0.4 z"
id="path66"
inkscape:connector-curvature="0"
style="fill:#764d80;stroke:#764d80;stroke-miterlimit:10" /></g></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -88,7 +88,7 @@ limitations under the License.
// overrides of .mx_Login
.mx_Login_box {
.mx_AuthPage_modal {
width: 330px;
min-height: initial;
padding-top: 40px;
@@ -100,13 +100,13 @@ limitations under the License.
font-size: 16px;
line-height: 25px;
background-color: $form-bg-color;
background-image: url(../../themes/status/img/dot.svg);
box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16);
background-image: url("$(status)/img/dot.svg");
box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16);
position: relative;
text-align: center;
}
.mx_Login_logo {
.mx_AuthHeader_logo {
background-color: #fff;
width: 74px;
height: 74px;
@@ -118,13 +118,13 @@ limitations under the License.
margin-left: -36px;
}
.mx_Login_logo img {
.mx_AuthHeader_logo img {
width: 36px;
height: 36px;
padding: 19px;
}
.mx_Login_box h2 {
.mx_AuthPage_modal h2 {
text-align: center;
color: $form-fg-color;
font-size: 25px;

View File

@@ -0,0 +1,15 @@
@font-face {
font-family:PostGrotesk-Medium;
src:url('https://status.im/fonts/PostGrotesk-Medium.eot');
src:url('https://status.im/fonts/PostGrotesk-Medium.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Medium.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium') format("svg");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family:PostGrotesk-Book;
src:url('https://status.im/fonts/PostGrotesk-Book.eot');
src:url('https://status.im/fonts/PostGrotesk-Book.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Book.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Book.svg#PostGrotesk-Book') format("svg");
font-weight: 400;
font-style: normal;
}

View File

@@ -0,0 +1,5 @@
// Path from root SCSS file (such as `status.scss`) to `res` dir in `matrix-react-sdk`
$res: ../../../../node_modules/matrix-react-sdk/res;
// Path from root SCSS file (such as `status.scss`) to `status` dir in `riot-web`
$status: ..;

View File

@@ -1,19 +1,3 @@
@font-face {
font-family:PostGrotesk-Medium;
src:url('https://status.im/fonts/PostGrotesk-Medium.eot');
src:url('https://status.im/fonts/PostGrotesk-Medium.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Medium.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium') format("svg");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family:PostGrotesk-Book;
src:url('https://status.im/fonts/PostGrotesk-Book.eot');
src:url('https://status.im/fonts/PostGrotesk-Book.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Book.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Book.svg#PostGrotesk-Book') format("svg");
font-weight: 400;
font-style: normal;
}
// We deliberately prioritise Arial over Helvetica here due to diacritic problems (see _base.scss)
// N.B. that the status.im website uses:
// font-family:PostGrotesk-Book,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
@@ -68,6 +52,8 @@ $focus-bg-color: #dddddd;
// button UI (white-on-green in light skin)
$accent-fg-color: #ffffff;
$accent-color: #6CC1F6;
$accent-color-alt: $accent-color;
$accent-color-50pct: #6CC1F67F;
$accent-hover-color: #84cfff;
$selection-fg-color: $primary-bg-color;
@@ -117,7 +103,11 @@ $primary-hairline-color: #e5e5e5;
// used for the border of input text fields
$input-border-color: #c9cfd4;
$input-darker-bg-color: #c1c9d6;
$input-darker-fg-color: #9fa9ba;
$button-bg-color: #7ac9a1;
$button-fg-color: white;
// apart from login forms, which have stronger border
$strong-input-border-color: #c7c7c7;
@@ -128,6 +118,7 @@ $input-fg-color: rgba(74, 74, 74, 0.9);
// context menus
$menu-border-color: rgba(187, 187, 187, 0.5);
$menu-bg-color: #f6f6f6;
$menu-selected-color: #f5f8fa;
$avatar-initial-color: #ffffff;
$avatar-bg-color: transparent;
@@ -162,6 +153,15 @@ $roomtile-name-color: #ffffff;
$roomtile-selected-bg-color: #465561;
$roomtile-focused-bg-color: #6d8597;
$username-variant1-color: #1e7ddc;
$username-variant2-color: #a756a8;
$username-variant3-color: #7ac9a1;
$username-variant4-color: #f2809d;
$username-variant5-color: #ffc666;
$username-variant6-color: #76ddd7;
$username-variant7-color: #45529b;
$username-variant8-color: #bfd251;
$roomsublist-background: rgba(0, 0, 0, 0.2);
$roomsublist-label-fg-color: #ffffff;
$roomsublist-label-bg-color: $secondary-accent-color;
@@ -187,8 +187,8 @@ $event-redacted-border-color: #cccccc;
// event timestamp
$event-timestamp-color: #acacac;
$edit-button-url: "../../img/icon_context_message.svg";
$copy-button-url: "../../img/icon_copy_message.svg";
$edit-button-url: "$(res)/img/icon_context_message.svg";
$copy-button-url: "$(res)/img/icon_copy_message.svg";
// e2e
$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color

View File

@@ -1,3 +1,5 @@
@import "_paths.scss";
@import "_fonts.scss";
@import "../../../../node_modules/matrix-react-sdk/res/themes/light/css/_base.scss";
@import "_status.scss";
@import "../../../../node_modules/matrix-react-sdk/res/css/_components.scss";

View File

@@ -25,6 +25,7 @@ const INCLUDE_LANGS = [
{'value': 'gl', 'label': 'Galego'},
{'value': 'hu', 'label': 'Magyar'},
{'value': 'it', 'label': 'Italiano'},
{'value': 'ja', 'label': '日本語'},
{'value': 'ko', 'label': '한국어'},
{'value': 'lv', 'label': 'Latviešu'},
{'value': 'nb_NO', 'label': 'Norwegian Bokmål'},
@@ -52,11 +53,12 @@ const COPY_LIST = [
["res/home.html", "webapp"],
["res/home-status.html", "webapp"],
["res/home/**", "webapp/home"],
["res/vector-icons/**", "webapp/vector-icons"],
["node_modules/matrix-react-sdk/res/{fonts,img,themes,media}/**", "webapp"],
["res/themes/**", "webapp/themes"],
["res/vector-icons/**", "webapp/vector-icons"],
["node_modules/matrix-react-sdk/res/media/**", "webapp/media"],
["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"],
["node_modules/emojione/assets/png/*", "webapp/emojione/png/"],
["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
["./config.json", "webapp", { directwatch: 1 }],
];

View File

@@ -100,7 +100,7 @@ mkdir -p "$projdir/electron_app/dist/unsigned/"
# 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/"
cp $distdir/*.dmg "$pubdir/install/macos/"
# Windows installers go to the dist dir because they need signing
mkdir -p "$pubdir/install/win32/ia32/"
@@ -111,7 +111,7 @@ cp $distdir/win/*.exe "$projdir/electron_app/dist/unsigned/"
# Packages for auto-update
mkdir -p "$pubdir/update/macos"
cp $distdir/mac/*.zip "$pubdir/update/macos/"
cp $distdir/*-mac.zip "$pubdir/update/macos/"
echo "$vername" > "$pubdir/update/macos/latest"
mkdir -p "$pubdir/update/win32/ia32/"

View File

@@ -9,45 +9,49 @@
set -e
GIT_CLONE_ARGS=("$@")
# Look in the many different CI env vars for which branch we're
# building
if [[ "$TRAVIS" == true ]]; then
curbranch="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
else
# ghprbSourceBranch for jenkins github pull request builder
# GIT_BRANCH for other jenkins builds
curbranch="${ghprbSourceBranch:-$GIT_BRANCH}"
# Otherwise look at the actual branch we're on
if [ -z "$curbranch" ]
then
curbranch=`git rev-parse --abbrev-ref HEAD`
fi
fi
# Chop 'origin' off the start as jenkins ends up using
# branches on the origin, but this doesn't work if we
# specify the branch when cloning.
curbranch=${curbranch#origin/}
echo "Determined branch to be $curbranch"
[ -z "$defbranch" ] && defbranch="develop"
# clone a specific branch of a github repo
function clone() {
org=$1
repo=$2
branch=$3
git clone https://github.com/$org/$repo.git $repo --branch $branch \
"${GIT_CLONE_ARGS[@]}"
# Chop 'origin' off the start as jenkins ends up using
# branches on the origin, but this doesn't work if we
# specify the branch when cloning.
branch=${branch#origin/}
if [ -n "$branch" ]
then
echo "Trying to use $org/$repo#$branch"
git clone https://github.com/$org/$repo.git $repo --branch $branch \
"${GIT_CLONE_ARGS[@]}"
return $?
fi
return 1
}
function dodep() {
org=$1
repo=$2
rm -rf $repo
clone $org $repo $curbranch || {
[ "$curbranch" != 'develop' ] && clone $org $repo develop
} || return $?
# Try the PR author's branch in case it exists on the deps as well.
# Try the target branch of the push or PR.
# Use the default branch as the last resort.
if [[ "$TRAVIS" == true ]]; then
clone $org $repo $TRAVIS_PULL_REQUEST_BRANCH ||
clone $org $repo $TRAVIS_BRANCH ||
clone $org $repo $defbranch ||
return $?
else
clone $org $repo $ghprbSourceBranch ||
clone $org $repo $GIT_BRANCH ||
clone $org $repo `git rev-parse --abbrev-ref HEAD` ||
clone $org $repo $defbranch ||
return $?
fi
echo "$repo set to branch "`git -C "$repo" rev-parse --abbrev-ref HEAD`

View File

@@ -4,21 +4,23 @@ set -e
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
nvm use 6
nvm use 10
set -x
# check out corresponding branches of dependencies.
#
# clone the deps with depth 1: we know we will only ever need that one
# commit.
`dirname $0`/fetch-develop.deps.sh --depth 1
npm install
# apparently npm 3.10.3 on node 6.4.0 doesn't upgrade #develop target with npm install unless explicitly asked.
npm install olm
# check out corresponding branches of dependencies.
#
# clone the deps with depth 1: we know we will only ever need that one
# commit.
# We need to do this after npm install otherwise modern node versions
# just reset it back.
`dirname $0`/fetch-develop.deps.sh --depth 1
# install olm. A naive 'npm i ./olm/olm-*.tgz' fails because it uses the url
# from our package.json (or even matrix-js-sdk's) in preference.
#

View File

@@ -17,7 +17,6 @@ limitations under the License.
'use strict';
import React from 'react';
import HomePage from 'matrix-react-sdk/lib/components/structures/HomePage';
import sanitizeHtml from 'sanitize-html';
import { _t } from 'matrix-react-sdk/lib/languageHandler';

View File

@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,28 +17,28 @@ limitations under the License.
'use strict';
var React = require('react');
const React = require('react');
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore';
module.exports = React.createClass({
displayName: 'VectorLoginFooter',
displayName: 'VectorAuthFooter',
statics: {
replaces: 'LoginFooter',
replaces: 'AuthFooter',
},
render: function() {
// FIXME: replace this with a proper Status skin
// ...except then we wouldn't be able to switch to the Status theme at runtime.
if (SettingsStore.getValue("theme") === 'status') return <div/>;
if (SettingsStore.getValue("theme") === 'status') return <div />;
return (
<div className="mx_Login_links">
<a href="https://medium.com/@RiotChat">blog</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="https://twitter.com/@RiotChat">twitter</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="https://github.com/vector-im/riot-web">github</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="https://matrix.org">{ _t('powered by Matrix') }</a>
<div className="mx_AuthFooter">
<a href="https://medium.com/@RiotChat" target="_blank" rel="noopener">blog</a>
<a href="https://twitter.com/@RiotChat" target="_blank" rel="noopener">twitter</a>
<a href="https://github.com/vector-im/riot-web" target="_blank" rel="noopener">github</a>
<a href="https://matrix.org" target="_blank" rel="noopener">{ _t('powered by Matrix') }</a>
</div>
);
}
},
});

View File

@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -19,13 +20,12 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
const i = [1, 2, 3, 4, 5][Math.floor(Math.random() * 5)];
const DEFAULT_LOGO_URI = "themes/riot/img/logos/riot-im-logo-" + i + ".svg";
const LOGO_URI = "themes/riot/img/logos/riot-im-logo-black-text.svg";
module.exports = React.createClass({
displayName: 'VectorLoginHeader',
displayName: 'VectorAuthHeaderLogo',
statics: {
replaces: 'LoginHeader',
replaces: 'AuthHeaderLogo',
},
propTypes: {
icon: PropTypes.string,
@@ -33,11 +33,9 @@ module.exports = React.createClass({
render: function() {
return (
<div className="mx_Login_header">
<div className="mx_Login_logo">
<img src={this.props.icon || DEFAULT_LOGO_URI} alt="Riot"/>
</div>
<div className="mx_AuthHeaderLogo">
<img src={LOGO_URI} alt="Riot" />
</div>
);
}
},
});

View File

@@ -0,0 +1,70 @@
/*
Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
'use strict';
const React = require('react');
import sdk from 'matrix-react-sdk/lib/index';
module.exports = React.createClass({
displayName: 'VectorAuthPage',
statics: {
replaces: 'AuthPage',
},
render: function() {
const AuthFooter = sdk.getComponent('auth.AuthFooter');
const pageStyle = {
background: 'center/cover fixed url(themes/riot/img/backgrounds/valley.jpg)',
};
const modalStyle = {
position: 'relative',
background: 'initial',
};
const blurStyle = {
position: 'absolute',
top: 0,
right: 0,
bottom: 0,
left: 0,
filter: 'blur(10px)',
background: pageStyle.background,
};
const modalContentStyle = {
display: 'flex',
zIndex: 1,
background: 'rgba(255, 255, 255, 0.59)',
borderRadius: '4px',
};
return (
<div className="mx_AuthPage" style={pageStyle}>
<div className="mx_AuthPage_modal" style={modalStyle}>
<div className="mx_AuthPage_modalBlur" style={blurStyle}></div>
<div className="mx_AuthPage_modalContent" style={modalContentStyle}>
{ this.props.children }
</div>
</div>
<AuthFooter />
</div>
);
},
});

View File

@@ -15,10 +15,13 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
var React = require("react");
var sanitizeHtml = require("sanitize-html");
const React = require("react");
import { _t } from 'matrix-react-sdk/lib/languageHandler';
/**
* This is identical to `CustomServerDialog` except for replacing "this app"
* with "Riot".
*/
module.exports = React.createClass({
displayName: 'VectorCustomServerDialog',
statics: {
@@ -32,13 +35,17 @@ module.exports = React.createClass({
{ _t('Custom Server Options') }
</div>
<div className="mx_Dialog_content">
<span dangerouslySetInnerHTML={{__html: sanitizeHtml(_t(
"You can use the custom server options to sign into other Matrix "+
"servers by specifying a different Home server URL.<br/>This allows "+
"you to use Riot with an existing Matrix account on a different home "+
"server.<br/><br/>You can also set a custom identity server but you won't "+
"be able to invite users by email address, or be invited by email address yourself.",
))}} />
<p>{_t(
"You can use the custom server options to sign into other " +
"Matrix servers by specifying a different homeserver URL. This " +
"allows you to use Riot with an existing Matrix account on a " +
"different homeserver.",
)}</p>
<p>{_t(
"You can also set a custom identity server, but you won't be " +
"able to invite users by email address, or be invited by email " +
"address yourself.",
)}</p>
</div>
<div className="mx_Dialog_buttons">
<button onClick={this.props.onFinished} autoFocus={true}>
@@ -47,5 +54,5 @@ module.exports = React.createClass({
</div>
</div>
);
}
},
});

View File

@@ -1,39 +1,21 @@
{
"Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?",
"Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s",
"Unknown device": "Unknown device",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",
"Custom Server Options": "Custom Server Options",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.",
"Dismiss": "Dismiss",
"powered by Matrix": "powered by Matrix",
"Custom Server Options": "Custom Server Options",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.",
"You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.",
"Dismiss": "Dismiss",
"Welcome to Riot.im": "Welcome to Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralised, encrypted chat &amp; collaboration powered by [matrix]",
"Search the room directory": "Search the room directory",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!",
"Sign In": "Sign In",
"Create Account": "Create Account",
"Need help?": "Need help?",
"Chat with Riot Bot": "Chat with Riot Bot",
"Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!",
"General discussion about Matrix and Riot": "General discussion about Matrix and Riot",
"Discussion of all things Matrix!": "Discussion of all things Matrix!",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; Desktop chat",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk chat",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android &amp; matrix-android-sdk chat",
"Matrix technical discussions": "Matrix technical discussions",
"Running Matrix services": "Running Matrix services",
"Community-run support for Synapse": "Community-run support for Synapse",
"Admin support for Dendrite": "Admin support for Dendrite",
"Announcements about Synapse releases": "Announcements about Synapse releases",
"Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc",
"Building services on Matrix": "Building services on Matrix",
"Support for those using the Matrix spec": "Support for those using the Matrix spec",
"Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix",
"Implementing VR services with Matrix": "Implementing VR services with Matrix",
"Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix",
"Discussion of the Identity Service API": "Discussion of the Identity Service API",
"Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges",
"Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot",
"Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team",
"Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team",
"Co-ordination for Riot translators": "Co-ordination for Riot translators"
"Explore rooms": "Explore rooms",
"Room Directory": "Room Directory",
"Search the room directory": "Search the room directory",
"Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!"
}

View File

@@ -34,5 +34,6 @@
"Dev chat for the Dendrite dev team": "Babilado por la programista skipo de Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Multaj ĉambroj jam ekzistas en Matrix; kaj sendependaj, kaj ligitaj kun jamaj retoj (Slock, IRC, Gitter, ktp.). Rigardu la ĉambrujon!",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s je %(osName)s",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem."
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.<br/>Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.<br/><br/>Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem.",
"Co-ordination for Riot translators": "Kunordigo por tradukantoj de Riot"
}

View File

@@ -1 +1,39 @@
{}
{
"Riot is not supported on mobile web. Install the app?": "रायट फ़ोन पर समर्थन नहीं हैं। एप्लिकेशन इनस्टॉल करना चाहेंगे ?",
"Riot Desktop on %(platformName)s": "%(platformName)s पर रायट डेस्कटॉप",
"Unknown device": "अज्ञात यन्त्र",
"%(appName)s via %(browserName)s on %(osName)s": "%(osName)s पर %(browserName)s के माध्यम से %(appName)s",
"You need to be using HTTPS to place a screen-sharing call.": "स्क्रीन साझा की कॉल करने के लिए आपको HTTPS का उपयोग करने की आवश्यकता है।",
"Custom Server Options": "कस्टम सर्वर विकल्प",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "आप एक अलग होम सर्वर यूआरएल निर्दिष्ट करके अन्य मैट्रिक्स सर्वरों में साइन इन करने के लिए कस्टम सर्वर विकल्प का उपयोग कर सकते हैं। <br/> यह आपको एक अलग होम सर्वर पर मौजूदा मैट्रिक्स खाते के साथ रायट का उपयोग करने की अनुमति देता है। <br/> <br/> आप अपना आइडेंटिटी सर्वर भी सेट कर सकते हैं लेकिन आप ईमेल पते से उपयोगकर्ताओं को आमंत्रित नहीं कर पाएंगे, या ईमेल पते से स्वयं आमंत्रित नहीं हों सकेंगे।",
"Dismiss": "खारिज",
"powered by Matrix": "मैट्रिक्स द्वारा संचालित",
"Welcome to Riot.im": "Riot.im में आपका स्वागत है",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "[मैट्रिक्स] द्वारा संचालित विकेंद्रीकृत, एन्क्रिप्टेड चैट और सहयोगिता",
"Search the room directory": "रूम डायरेक्टरी में खोजें",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "मौजूदा नेटवर्क से जुड़े मैट्रिक्स में बहुत से कमरे पहले से मौजूद हैं (स्लैक, आईआरसी, गिटर इत्यादि) या स्वतंत्र। डायरेक्टरी देखें!",
"Chat with Riot Bot": "रायट बॉट के साथ चैट करें",
"Get started with some tips from Riot Bot!": "रायट बॉट से कुछ सुझावों के साथ शुरू करें!",
"General discussion about Matrix and Riot": "मैट्रिक्स और रायट के बारे में सामान्य चर्चा",
"Discussion of all things Matrix!": "मैट्रिक्स की सभी चीजों की चर्चा!",
"Riot/Web &amp; Desktop chat": "रायट/वेब और डेस्कटॉप चैट",
"Riot/iOS &amp; matrix-ios-sdk chat": "रायट / iOS और matrix-ios-sdk चैट",
"Riot/Android &amp; matrix-android-sdk chat": "रायट / एंड्रॉइड और matrix-android-sdk चैट",
"Matrix technical discussions": "मैट्रिक्स तकनीकी चर्चाएं",
"Running Matrix services": "मैट्रिक्स सेवाएं चलाना",
"Community-run support for Synapse": "सामुदायिक चालित Synapse के लिए समर्थन",
"Admin support for Dendrite": "डेंडर्राइट के लिए व्यवस्थापक समर्थन",
"Announcements about Synapse releases": "Synapse रिलीज के बारे में घोषणाएं",
"Support for those using and running matrix-appservice-irc": "Matrix-appservice-irc का उपयोग और चलाने वाले लोगों के लिए समर्थन",
"Building services on Matrix": "मैट्रिक्स पर सेवाएं बनाना",
"Support for those using the Matrix spec": "मैट्रिक्स spec का उपयोग करने वालों के लिए समर्थन",
"Design and implementation of E2E in Matrix": "मैट्रिक्स में E2E के डिजाइन और कार्यान्वयन",
"Implementing VR services with Matrix": "मैट्रिक्स के साथ VR सेवाओं को लागू करना",
"Implementing VoIP services with Matrix": "मैट्रिक्स के साथ वीओआईपी सेवाओं को लागू करना",
"Discussion of the Identity Service API": "आइडेंटिटी सर्विस API की चर्चा",
"Support for those using, running and writing other bridges": "अन्य ब्रिज का उपयोग, चलाने और लिखने वालों के लिए समर्थन",
"Contributing code to Matrix and Riot": "मैट्रिक्स और रायट में कोड योगदान करना",
"Dev chat for the Riot/Web dev team": "रायट / वेब डेव टीम के लिए डेवलपर चैट",
"Dev chat for the Dendrite dev team": "डेन्ड्राइट देव टीम के लिए डेवलपर चैट",
"Co-ordination for Riot translators": "रायट अनुवादकों के लिए समन्वय"
}

39
src/i18n/strings/hr.json Normal file
View File

@@ -0,0 +1,39 @@
{
"Riot is not supported on mobile web. Install the app?": "Riot nije podržan na mobilnom pregledniku. Instalirati aplikaciju?",
"Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s",
"Unknown device": "Nepoznati uređaj",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s preko %(browserName)s na %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS kako biste pokrenuli poziv s dijeljenjem ekrana.",
"Custom Server Options": "Prilagođene opcije poslužitelja",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Možete koristiti prilagođene opcije poslužitelja za prijavu na ostale Matrix poslužitelje, navodeći drugačiji URL za Kućni poslužitelj.<br/>Ovo vam omogućuje da koristite Riot s postojećim Matrix računom na različitom kućnom poslužitelju.<br/><br/>Također možete postaviti prilagođeni poslužitelj identiteta, ali u tom slučaju nećete moći pozivati korisnike preko njihove email adrese, niti sami biti pozvani preko vase email adrese.",
"Dismiss": "Odbaci",
"powered by Matrix": "powered by Matrix",
"Welcome to Riot.im": "Dobrodošli u Riot.im",
"Chat with Riot Bot": "Razgovor s Riot Botom",
"Get started with some tips from Riot Bot!": "Krenite s par savjeta od Riot Bota!",
"General discussion about Matrix and Riot": "Opća rasprava o Matrixu i Riotu",
"Discussion of all things Matrix!": "Rasprava o svemu vezanome za Matrix!",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; Desktop chat",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk chat",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android &amp; matrix-android-sdk chat",
"Matrix technical discussions": "Tehničke rasprave o Matrixu",
"Running Matrix services": "Pokretanje Matrix usluga",
"Community-run support for Synapse": "Podrška zajednice za Synapse",
"Admin support for Dendrite": "Administratorska podrška za Dendrite",
"Announcements about Synapse releases": "Obavijesti o izdanjima Synapsea",
"Support for those using and running matrix-appservice-irc": "Podrška onima koji koriste i pokreću matrix-appservice-irc",
"Building services on Matrix": "Razvoj usluga na Matrixu",
"Support for those using the Matrix spec": "Podrška onima koji koriste Matrix spec",
"Design and implementation of E2E in Matrix": "Dizajn i implementacija E2E u Matrixu",
"Implementing VR services with Matrix": "Implementiranje VR usluga s Matrixom",
"Implementing VoIP services with Matrix": "Implementiranje VoIP usluga s Matrixom",
"Discussion of the Identity Service API": "Rasprava vezana za Identity Service API",
"Support for those using, running and writing other bridges": "Podrška onima koji koriste, pokreću i pišu ostale mostove",
"Contributing code to Matrix and Riot": "Doprinos kodu Matrixa i Riota",
"Dev chat for the Riot/Web dev team": "Dev chat za Riot/Web dev tim",
"Dev chat for the Dendrite dev team": "Dev chat za Dendrite dev team",
"Co-ordination for Riot translators": "Koordinacija Riot prevoditelja",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizirani, enkriptirani chat &amp; kolaboracija powered by [matrix]",
"Search the room directory": "Pretražite imenik soba",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Veliki broj soba već postoji na Matrixu, povezanih s postojećim mrežama (Slack, IRC, Gitter itd) ili nezavisnih. Zavirite u imenik!"
}

View File

@@ -22,18 +22,18 @@
"Support for those using and running matrix-appservice-irc": "Supporto per chi usa e amministra matrix-appservice-irc",
"Building services on Matrix": "Costruzione servizi su Matrix",
"Support for those using the Matrix spec": "Supporto per chi utilizza le specifiche Matrix",
"Design and implementation of E2E in Matrix": "Design e implementazione di E2E in Matrix",
"Design and implementation of E2E in Matrix": "Progetto e implementazione di E2E in Matrix",
"Implementing VR services with Matrix": "Implementazione servizi VR con Matrix",
"Implementing VoIP services with Matrix": "Implementazione servizi VoIP con Matrix",
"Discussion of the Identity Service API": "Discussione sull'Identity Service API",
"Support for those using, running and writing other bridges": "Supporto per chi usa, amministra e scrive altri bridge",
"Discussion of the Identity Service API": "Discussione API del servizio identità",
"Support for those using, running and writing other bridges": "Supporto per chi usa, amministra e scrive altri ponti (bridge)",
"Contributing code to Matrix and Riot": "Contributi di codice per Matrix e Riot",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s tramite %(browserName)s su %(osName)s",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat criptate e collaborazioni decentralizzate offerte da [matrix]",
"Discussion of all things Matrix!": "Discussione su tutto quanto riguardi Matrix!",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat criptate, decentralizzate e collaborazioni offerte da [matrix]",
"Discussion of all things Matrix!": "Discussione su tutto riguardo Matrix!",
"Dev chat for the Riot/Web dev team": "Chat per gli sviluppatori di Riot/Web",
"Dev chat for the Dendrite dev team": "Chat per gli sviluppatori di Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti già esistenti (Slack, IRC, Gitter ecc) o indipendenti. Dai un'occhiata all'elenco!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo dell'home server.<br/> Questo permette di usare Matrix con un account esistente su un home server diverso.<br/><br/>È anche possibile impostare un diverso identity server, ma in quel caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail.",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti esistenti (Slack, IRC, Gitter, ecc.) o indipendenti. Controlla l'elenco!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo del server home.<br/> Questo permette di usare Riot con un account Matrix esistente su un server home diverso.<br/><br/>È anche possibile impostare un diverso server identità, ma in tal caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail.",
"Co-ordination for Riot translators": "Coordinazione per i traduttori di Riot"
}

View File

@@ -15,7 +15,7 @@
"Chat with Riot Bot": "Riot Botと会話",
"Get started with some tips from Riot Bot!": "Riot Botにヒントをもらって始めましょう",
"General discussion about Matrix and Riot": "MatrixとRiotの概略",
"Discussion of all things Matrix!": "Matrixなんでも討論",
"Discussion of all things Matrix!": "Matrixなんでも議論!",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; デスクトップ版チャット",
"Riot/iOS &amp; matrix-ios-sdk chat": "Riot/iOS &amp; matrix-ios-sdk チャット",
"Riot/Android &amp; matrix-android-sdk chat": "Riot/Android &amp; matrix-android-sdk チャット",
@@ -25,14 +25,15 @@
"Admin support for Dendrite": "Dendriteの管理者サポート",
"Announcements about Synapse releases": "Synapseの公開についてのお知らせ",
"Support for those using and running matrix-appservice-irc": "matrix-appservice-ircを利用並びに運営している方へのサポート",
"Building services on Matrix": "Matrixでのサービスの開発",
"Building services on Matrix": "Matrixでのサービスの開発",
"Support for those using the Matrix spec": "Matrixスペックを利用する方へのサポート",
"Design and implementation of E2E in Matrix": "Matrixのデザインとエンドツーエンドの実装",
"Design and implementation of E2E in Matrix": "Matrixのデザインとエンドツーエンドの実装",
"Implementing VR services with Matrix": "MatrixでのVRサービスの実装",
"Implementing VoIP services with Matrix": "MatrixでのIP電話サービスの実装",
"Discussion of the Identity Service API": "Identity Service APIの議論",
"Support for those using, running and writing other bridges": "他のブリッジを利用、運営、作成している方へのサポート",
"Contributing code to Matrix and Riot": "MatrixとRiotにコードを提供する",
"Dev chat for the Riot/Web dev team": "Riot/Web開発者チームのための開発者チャット",
"Dev chat for the Dendrite dev team": "Dendrite開発者チームのための開発者チャット"
"Dev chat for the Dendrite dev team": "Dendrite開発者チームのための開発者チャット",
"Co-ordination for Riot translators": "Riot 翻訳者による共同作業"
}

39
src/i18n/strings/jbo.json Normal file
View File

@@ -0,0 +1,39 @@
{
"Riot is not supported on mobile web. Install the app?": ".i lo samfonxa na kakne lo nu pilno la kibro nu zunti .i .au pei kibycpa le samtci",
"Riot Desktop on %(platformName)s": "la skami nu zunti ci'e la'o gy. %(platformName)s .gy.",
"Unknown device": "lo na'e te djuno se pilno",
"%(appName)s via %(browserName)s on %(osName)s": "la'o gy. %(appName)s .gy. xe be'i la'o gy. %(browserName)s .gy. ci'e la'o gy. %(osName)s .gy.",
"You need to be using HTTPS to place a screen-sharing call.": ".i la .hytytypysys. sarcu lo nu co'a vidni jorne",
"Custom Server Options": "lo macnu se cuxna be fi lo'i samse'u",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": ".i zukte lo nu macnu cuxna lo samse'u kei goi ko'a lo nu pilno lo drata samse'u pe la nacmeimei<br/>.i ko'a se cumki lo nu do pilno lo pilno poi zvati lo drata samse'u pe la nacmeimei<br/><br/>.i ji'a cumki fa lo nu do pilno lo drata ke prenu datni samse'u kei goi ko'a .i ku'i ko'a to'e rinka la'a lo nu do zvacpe ja se zvacpe",
"Dismiss": "mipri",
"powered by Matrix": ".i la nacmeimei cu cumgau",
"Welcome to Riot.im": ".i fi'i lo pilno be la nu zunti",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": ".i la nacmeimei cu cumgau lo mifra je na'e se midju nu tavla je ke kansa gunka",
"Search the room directory": "sisku fi lo'i kumfa pe'a",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": ".i ci'e la nacmeimei cu kumfa pe'a fa so'i da noi jorne jo nai no'e jorne lo drata ciste no'u mu'a la .slak. jo'u lo te irci jo'u la .gityr. .i",
"Chat with Riot Bot": "tavla la nu zunti kei sampre",
"Get started with some tips from Riot Bot!": ".i .e'u la nu zunti kei sampre cu sidju ko",
"General discussion about Matrix and Riot": "lo nu casnu be la nacmeimei .e la nu zunti",
"Discussion of all things Matrix!": "lo nu casnu be ro me la nacmeimei",
"Riot/Web &amp; Desktop chat": "lo nu casnu be la kibro nu zunti .e la skami nu zunti",
"Running Matrix services": "lo nu ralte lo samtcise'u pe la nacmeimei",
"Community-run support for Synapse": "lo nu lo cecmu cu sidju fi tu'a la .sinaps.",
"Discussion of the Identity Service API": "lo nu casnu lo prenu datni favgau cimde",
"Contributing code to Matrix and Riot": "lo nu dunda lo samselpla la nacmeimei .a la nu zunti",
"Co-ordination for Riot translators": "lo nu lo fanva pe la nu zunti cu kansa gunka",
"Riot/iOS &amp; matrix-ios-sdk chat": "lo nu casnu la plisyfonkemsamcmu nu zunti .e la'o gy. matrix-ios-sdk .gy.",
"Riot/Android &amp; matrix-android-sdk chat": "lo nu casnu la guglyfonkemsamcmu nu zunti .e la'o gy. matrix-android-sdk .gy.",
"Matrix technical discussions": "lo nu casnu lo zbaske be la nacmeimei",
"Announcements about Synapse releases": "lo notci be lo farvi tcini pe la nirna",
"Support for those using and running matrix-appservice-irc": "lo nu sidju lo pilno ja admine be la'o gy. matrix-appservice-irc .gy.",
"Building services on Matrix": "lo nu finti lo te selfu ji'u la nacmeimei",
"Support for those using the Matrix spec": "lo nu sidju lo pilno be lo sarcu pe la nacmeimei",
"Design and implementation of E2E in Matrix": "lo nu finti lo mulno mifra te platu .a lo samtcise'u be my. ji'u la nacmeimei",
"Support for those using, running and writing other bridges": "lo nu sidju lo pilno ja admine ja finti be lo drata te jorne",
"Dev chat for the Riot/Web dev team": "lo nu lo favgau be la kibro nu zunti cu casnu",
"Dev chat for the Dendrite dev team": "lo nu lo favgau be la nirndendriti cu casnu",
"Implementing VoIP services with Matrix": "lo nu finti lo samtcise'u be fi la .voip. ji'u la nacmeimei",
"Implementing VR services with Matrix": "lo nu finti lo samtcise'u be fi lo na'e fatci munje ji'u la nacmeimei",
"Admin support for Dendrite": "lo nu sidju lo admine be la nirndendriti"
}

View File

@@ -33,5 +33,7 @@
"Contributing code to Matrix and Riot": "Matrix와 Riot에 코드 기여하기",
"Dev chat for the Riot/Web dev team": "Riot/웹 개발 팀을 위한 개발자 대화",
"Dev chat for the Dendrite dev team": "덴드라이트 개발 팀을 위한 개발자 대화",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "기존 네트워크(Slack, IRC, Gitter 등)에 연결되있거나 독립된 많은 방이 이미 Matrix에 있습니다. 목록을 확인해보세요!"
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "기존 네트워크(Slack, IRC, Gitter 등)에 연결되있거나 독립된 많은 방이 이미 Matrix에 있습니다. 목록을 확인해보세요!",
"Co-ordination for Riot translators": "Riot 번역자 조합",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "사용자정의 서버 설정에서 다른 홈서버 URL를 지정해 다른 Matrix 서버에 접속할 수 있습니다. <br/>이렇게하면 다른 홈서버에서 기존의 Matrix 계정으로 Riot을 이용할 수 있습니다.<br/><br/>사용자정의 아이덴티티 서버도 설정할 수 있지만 이메일 주소로 이용자를 초대하거나 자신이 이메일 주소로 초대받을 수 없습니다."
}

View File

@@ -34,6 +34,6 @@
"Support for those using, running and writing other bridges": "Ondersteuning voor het gebruiken, draaien en ontwikkelen aan andere bruggen",
"Dev chat for the Riot/Web dev team": "Dev-chat voor het Riot/Web ontwikkelteam",
"Dev chat for the Dendrite dev team": "Dev-chat voor het Dendrite-ontwikkelteam",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom server opties gebruiken om op andere Matrix server in te loggen door een andere Home server URL op te geven.<br/> Dit laat je toe om Riot te gebruiken met een bestaande Matrix account op een andere home server.<br/><br/>Je kan ook een custom identiteits-server opzetten maar dan kan je geen gebruikers uitnodigen via hun email adres, of zelf uitgenodigd worden via je email adres.",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom serveropties gebruiken om op andere Matrix-servers in te loggen door een andere thuisserver-URL op te geven.<br/> Dit laat je toe om Riot te gebruiken met een bestaand Matrix-account op een andere thuisserver.<br/><br/>Je kan ook een aangepaste-identiteitsserver opzetten maar dan kan je geen gebruikers uitnodigen via hun e-mailadres, of zelf uitgenodigd worden via je e-mailadres.",
"Co-ordination for Riot translators": "Coördinatie voor Riot vertalers"
}

View File

@@ -23,7 +23,7 @@
"Admin support for Dendrite": "Suporte de administração para o Dendrite",
"Announcements about Synapse releases": "Anúncios acerca de lançamentos do Synapse",
"Support for those using and running matrix-appservice-irc": "Suporte para aqueles a correr e a utilizar o matrix-appservice-irc",
"Building services on Matrix": "Construir serviços no Matrix",
"Building services on Matrix": "Construindo serviços no Matrix",
"Support for those using the Matrix spec": "Suporte para os utilizadores da especificação do Matrix",
"Design and implementation of E2E in Matrix": "Design e implementação de encriptação ponto-a-ponto (E2E) no Matrix",
"Implementing VR services with Matrix": "Implementar serviços de realidade virtual (VR) com o Matrix",
@@ -33,5 +33,7 @@
"Contributing code to Matrix and Riot": "Contribuir código para o Matrix e para o Riot",
"Dev chat for the Riot/Web dev team": "Conversa de desenvolvimento para a equipa do Riot/Web",
"Dev chat for the Dendrite dev team": "Conversa de desenvolvimento para a equipa do Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Já existem muitas salas no Matrix, ligadas a redes já existentes (Slack, IRC, Gitter, etc) ou independentes. Dê uma vista de olhos no diretório!"
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Já existem muitas salas no Matrix, ligadas a redes já existentes (Slack, IRC, Gitter, etc) ou independentes. Dê uma vista de olhos no diretório!",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Você pode usar as opções de servidor personalizado para entrar em outros servidores Matrix, especificando um diferente URL de servidor doméstico.<br/>Isto permite que você utilize Riot com uma conta Matrix existente em um servidor doméstico diferente.<br/><br/>Você também pode definir um servidor de identidade personalizado, porém não poderá convidar usuários por endereço de e-mail nem ser convidado por endereço de e-mail.",
"Co-ordination for Riot translators": "Coordenação para tradutores do Riot"
}

View File

@@ -1,7 +1,7 @@
{
"Custom Server Options": "Opções para Servidor Personalizado",
"Dismiss": "Descartar",
"powered by Matrix": "rodando a partir do Matrix",
"powered by Matrix": "oferecido por Matrix",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s",
"Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s",
"Riot is not supported on mobile web. Install the app?": "Riot versão web não é suportado a partir de celular. Quer instalar o app para celular?",
@@ -33,7 +33,7 @@
"Dev chat for the Riot/Web dev team": "Chat de desenvolvimento para o time devel do Riot/Web",
"Dev chat for the Dendrite dev team": "Chat de desenvolvimento para o time devel do Dendrite",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muitas salas já existem no Matrix, algumas independentes, e outras relacionadas a redes existentes (tais como Slack, IRC, Gitter, entre outras). Dê uma olhada na lista de salas públicas!",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo impulsionado por [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo oferecido por [matrix]",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Você pode usar as opções customizadas de servidor para conectar-se a outros servidores Matrix ao especificar uma outra URL de Servidor de Base (homeserver).<br/> Isso permite que você use o Riot com uma conta Matrix existente em outro servidor de base.<br/><br/>Você também pode definir um servidor de identidade customizado, mas neste caso você não poderá convidar outras pesoas por endereço de email, ou ser convidada/o pelo seu endereço de email.",
"Co-ordination for Riot translators": "Coordenação para tradutores Riot"
}

View File

@@ -1,5 +1,5 @@
{
"Riot is not supported on mobile web. Install the app?": "Riot-i nuk mbulohet nën web për celularët. Të instalohet aplikacioni?",
"Riot is not supported on mobile web. Install the app?": "Riot-i nuk mbulohet në web për celularë. Të instalohet aplikacioni?",
"Riot Desktop on %(platformName)s": "Riot Desktop në %(platformName)s",
"Unknown device": "Pajisje e panjohur",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s përmes %(browserName)s nën %(osName)s",
@@ -9,7 +9,7 @@
"Dismiss": "Mos e merr parasysh",
"powered by Matrix": "bazuar në Matrix",
"Welcome to Riot.im": "Mirë se vini te Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralised, encrypted Fjalosje &amp; bashkëpunim i decentralizuar, i fshehtëzuar, bazuar në [matrix]",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Fjalosje &amp; bashkëpunim i decentralizuar, i fshehtëzuar, bazuar në [matrix]",
"Search the room directory": "Kërkoni te drejtoria e dhomave",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Ka tashmë plot dhoma në Matrix, të lidhura me rrjete ekzistues (Slack, IRC, Gitter, etj) ose të pavarur. Hidhini një sy listës!",
"Chat with Riot Bot": "Fjalosuni me Robotin Riot",
@@ -27,12 +27,13 @@
"Support for those using and running matrix-appservice-irc": "Asistencë për ata që përdorin dhe xhirojnë matrix-appservice-irc",
"Building services on Matrix": "Ndërtim shërbimesh mbi Matrix",
"Support for those using the Matrix spec": "Asistencë për ata që përdorin specifikimet Matrix",
"Design and implementation of E2E in Matrix": "Konceptimi dhe sendërtimi i E2E në Matrix",
"Design and implementation of E2E in Matrix": "Konceptimi dhe sendërtimi i E2E-s në Matrix",
"Implementing VR services with Matrix": "Sendërtim shërbimesh VR me Matrix-in",
"Implementing VoIP services with Matrix": "Sendërtim shërbimesh VoIP me Matrix-in",
"Discussion of the Identity Service API": "Diskutime mbi Identity Service API",
"Discussion of the Identity Service API": "Diskutime mbi API-n Identity Service",
"Support for those using, running and writing other bridges": "Asistencë për ata që përdorin, xhirojnë ose programojnë ura të tjera",
"Contributing code to Matrix and Riot": "Kontribut me kod te Matrix dhe te Riot",
"Dev chat for the Riot/Web dev team": "Fjalosje mbi zhvillimin, për ekipin e zhvilluesve të Riot/Web-i",
"Dev chat for the Dendrite dev team": "Fjalosje zhvillimi, për ekipin e zhvilluesve të Dendrite-it"
"Dev chat for the Dendrite dev team": "Fjalosje mbi zhvillimi, për ekipin e zhvilluesve të Dendrite-it",
"Co-ordination for Riot translators": "Bashkërendim për përkthyes të Riot-it"
}

View File

@@ -1,9 +1,12 @@
{
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వర %(osName)s కి",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వర %(osName)s కి",
"Custom Server Options": "మలచిన సేవిక ఎంపికలు",
"Dismiss": "రద్దుచేసే",
"Riot Desktop on %(platformName)s": "రియట్ రంగస్థలం లో %(platformName)s",
"Welcome to Riot.im": "రిమోట్.ఇం కి స్వగతం",
"Search the room directory": "గది వివరాన్ని శోధించండి",
"Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి"
"Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి",
"Unknown device": "తెలుయని పరికరం",
"You need to be using HTTPS to place a screen-sharing call.": "తెర ని పంచే కాల్ కి HTTPS అవసరం.",
"Riot is not supported on mobile web. Install the app?": "మొబైల్ బ్రౌజర్ లో రియట్ పనిచేయదు. ఆప్ ఇన్స్టాల్ చేయాలా?"
}

20
src/i18n/strings/vi.json Normal file
View File

@@ -0,0 +1,20 @@
{
"Riot is not supported on mobile web. Install the app?": "Riot không được hỗ trợ trên mobile web. Hãy cài app?",
"Riot Desktop on %(platformName)s": "Riot Desktop trên %(platformName)s",
"Unknown device": "Thiết bị không được nhận biết",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s với %(browserName)s trên %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "Bạn phải sử dụng HTTPS để dùng chức năng chia sẻ màn hình.",
"Custom Server Options": "Các lựa chọn máy chủ",
"You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.<br/>This allows you to use Riot with an existing Matrix account on a different home server.<br/><br/>You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bạn có thể sử dụng các máy chủ khác để đăng nhập vào Matrix bằng cách khai báo đường dẫn Home server.<br/> Cách này cho phép bạn sử dụng tài khoản hiện tại trên một Home server khác.<br/><br/>Bạn cũng có thể chọn một Server định danh nhưng bạn không thể mời người dùng khác qua email.",
"Dismiss": "Bỏ qua",
"powered by Matrix": "tài trợ bởi Matrix",
"Welcome to Riot.im": "Chào mừng tới Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Chat phân tán, mã hóa &amp; giao tiếp được tài trợ bởi [matrix]",
"Search the room directory": "Tìm trong danh sách phòng",
"Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Rất nhiều phòng đã có sẵn trong Matrix, liên kết với các hệ thống mạng xã hội khác (Slack, IRC, Gitter,...) hoặc hoạt động độc lập. Hãy kiểm tra!",
"Chat with Riot Bot": "Chat với Riot Bot",
"Get started with some tips from Riot Bot!": "Bắt đầu với các hướng dẫn từ Riot Bot!",
"General discussion about Matrix and Riot": "Thảo luận chung về Matrix và Riot",
"Discussion of all things Matrix!": "Thào luận về mọi vấn đề liên quan đến Matrix!",
"Riot/Web &amp; Desktop chat": "Riot/Web &amp; Desktop chat"
}

View File

@@ -33,35 +33,33 @@ export async function getVectorConfig(relativeLocation) {
}
function getConfig(configJsonFilename) {
let deferred = Promise.defer();
request(
{ method: "GET", url: configJsonFilename },
(err, response, body) => {
if (err || response.status < 200 || response.status >= 300) {
// Lack of a config isn't an error, we should
// just use the defaults.
// Also treat a blank config as no config, assuming
// the status code is 0, because we don't get 404s
// from file: URIs so this is the only way we can
// not fail if the file doesn't exist when loading
// from a file:// URI.
if (response) {
if (response.status == 404 || (response.status == 0 && body == '')) {
deferred.resolve({});
return new Promise(function(resolve, reject) {
request(
{ method: "GET", url: configJsonFilename },
(err, response, body) => {
if (err || response.status < 200 || response.status >= 300) {
// Lack of a config isn't an error, we should
// just use the defaults.
// Also treat a blank config as no config, assuming
// the status code is 0, because we don't get 404s
// from file: URIs so this is the only way we can
// not fail if the file doesn't exist when loading
// from a file:// URI.
if (response) {
if (response.status == 404 || (response.status == 0 && body == '')) {
resolve({});
}
}
reject({err: err, response: response});
return;
}
deferred.reject({err: err, response: response});
return;
}
// We parse the JSON ourselves rather than use the JSON
// parameter, since this throws a parse error on empty
// which breaks if there's no config.json and we're
// loading from the filesystem (see above).
deferred.resolve(JSON.parse(body));
}
);
return deferred.promise;
// We parse the JSON ourselves rather than use the JSON
// parameter, since this throws a parse error on empty
// which breaks if there's no config.json and we're
// loading from the filesystem (see above).
resolve(JSON.parse(body));
},
);
});
}

View File

@@ -34,23 +34,13 @@
} %>
</head>
<body style="height: 100%;">
<section id="matrixchat" style="height: 100%;"></section>
<section id="matrixchat" style="height: 100%; overflow: auto;"></section>
<noscript>Sorry, Riot requires JavaScript to be enabled.</noscript> <!-- TODO: Translate this? -->
<% for (var i=0; i < htmlWebpackPlugin.files.js.length; i++) {
// Not a particularly graceful way of not putting the indexeddb worker script
// into the main page
if (_.endsWith(htmlWebpackPlugin.files.js[i], 'indexeddb-worker.js')) {
%>
<script>
window.vector_indexeddb_worker_script = '<%= htmlWebpackPlugin.files.js[i] %>';
</script>
<%
continue;
}
%>
<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;"/>
<script>
window.vector_indexeddb_worker_script = '<%= htmlWebpackPlugin.files.chunks['indexeddb-worker'].entry %>';
</script>
<script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script>
<img src="<%= require('matrix-react-sdk/res/img/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
<audio id="messageAudio">
<source src="media/message.ogg" type="audio/ogg" />
<source src="media/message.mp3" type="audio/mpeg" />
@@ -73,6 +63,6 @@
</audio>
<audio id="remoteAudio"></audio>
<!-- let CSS themes pass constants to the app -->
<div id="mx_theme_accentColor"></div><div id="mx_theme_secondaryAccentColor"/></div><div id="mx_theme_tertiaryAccentColor"/></div>
<div id="mx_theme_accentColor"></div><div id="mx_theme_secondaryAccentColor"></div><div id="mx_theme_tertiaryAccentColor"></div>
</body>
</html>

View File

@@ -24,6 +24,10 @@ require('gfm.css/gfm.css');
require('highlight.js/styles/github.css');
require('draft-js/dist/Draft.css');
import olmWasmPath from 'olm/olm.wasm';
import './rageshakesetup';
import React from 'react';
// add React and ReactPerf to the global namespace, to make them easier to
// access via the console
@@ -32,7 +36,7 @@ if (process.env.NODE_ENV !== 'production') {
global.Perf = require('react-addons-perf');
}
import RunModernizrTests from './modernizr'; // this side-effects a global
import './modernizr';
import ReactDOM from 'react-dom';
import sdk from 'matrix-react-sdk';
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
@@ -41,20 +45,20 @@ import VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandle
import Promise from 'bluebird';
import request from 'browser-request';
import * as languageHandler from 'matrix-react-sdk/lib/languageHandler';
// Also import _t directly so we can call it just `_t` as this is what gen-i18n.js expects
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import url from 'url';
import {parseQs, parseQsFromFragment} from './url_utils';
import Platform from './platform';
import ElectronPlatform from './platform/ElectronPlatform';
import WebPlatform from './platform/WebPlatform';
import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';
import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/SettingsStore";
import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore";
import Tinter from 'matrix-react-sdk/lib/Tinter';
import SdkConfig from "matrix-react-sdk/lib/SdkConfig";
import rageshake from "matrix-react-sdk/lib/rageshake/rageshake";
import Olm from 'olm';
import CallHandler from 'matrix-react-sdk/lib/CallHandler';
@@ -62,33 +66,21 @@ import {getVectorConfig} from './getconfig';
let lastLocationHashSet = null;
function initRageshake() {
rageshake.init().then(() => {
console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.");
window.addEventListener('beforeunload', (e) => {
console.log('riot-web closing');
// try to flush the logs to indexeddb
rageshake.flush();
});
rageshake.cleanup();
}, (err) => {
console.error("Failed to initialise rageshake: " + err);
});
}
// Disable warnings for now: we use deprecated bluebird functions
// and need to migrate, but they spam the console with warnings.
Promise.config({warnings: false});
function checkBrowserFeatures(featureList) {
if (!window.Modernizr) {
console.error("Cannot check features - Modernizr global is missing.");
return false;
}
var featureComplete = true;
for (var i = 0; i < featureList.length; i++) {
let featureComplete = true;
for (let i = 0; i < featureList.length; i++) {
if (window.Modernizr[featureList[i]] === undefined) {
console.error(
"Looked for feature '%s' but Modernizr has no results for this. " +
"Has it been configured correctly?", featureList[i]
"Has it been configured correctly?", featureList[i],
);
return false;
}
@@ -109,7 +101,7 @@ function getScreenFromLocation(location) {
return {
screen: fragparts.location.substring(1),
params: fragparts.params,
}
};
}
// Here, we do some crude URL analysis to allow
@@ -134,10 +126,10 @@ function onHashChange(ev) {
// so a web page can update the URL bar appropriately.
function onNewScreen(screen) {
console.log("newscreen "+screen);
var hash = '#/' + screen;
const hash = '#/' + screen;
lastLocationHashSet = hash;
window.location.hash = hash;
};
}
// We use this to work out what URL the SDK should
// pass through when registering to allow the user to
@@ -150,7 +142,7 @@ function onNewScreen(screen) {
// so in that instance, hardcode to use riot.im/app for now instead.
function makeRegistrationUrl(params) {
let url;
if (window.location.protocol === "file:") {
if (window.location.protocol === "vector:") {
url = 'https://riot.im/app/#/register';
} else {
url = (
@@ -174,66 +166,87 @@ function makeRegistrationUrl(params) {
return url;
}
function getConfig(configJsonFilename) {
let deferred = Promise.defer();
request(
{ method: "GET", url: configJsonFilename },
(err, response, body) => {
if (err || response.status < 200 || response.status >= 300) {
// Lack of a config isn't an error, we should
// just use the defaults.
// Also treat a blank config as no config, assuming
// the status code is 0, because we don't get 404s
// from file: URIs so this is the only way we can
// not fail if the file doesn't exist when loading
// from a file:// URI.
if (response) {
if (response.status == 404 || (response.status == 0 && body == '')) {
deferred.resolve({});
export function getConfig(configJsonFilename) {
return new Promise(function(resolve, reject) {
request(
{ method: "GET", url: configJsonFilename },
(err, response, body) => {
if (err || response.status < 200 || response.status >= 300) {
// Lack of a config isn't an error, we should
// just use the defaults.
// Also treat a blank config as no config, assuming
// the status code is 0, because we don't get 404s
// from file: URIs so this is the only way we can
// not fail if the file doesn't exist when loading
// from a file:// URI.
if (response) {
if (response.status == 404 || (response.status == 0 && body == '')) {
resolve({});
}
}
reject({err: err, response: response});
return;
}
deferred.reject({err: err, response: response});
return;
}
// We parse the JSON ourselves rather than use the JSON
// parameter, since this throws a parse error on empty
// which breaks if there's no config.json and we're
// loading from the filesystem (see above).
deferred.resolve(JSON.parse(body));
}
);
return deferred.promise;
// We parse the JSON ourselves rather than use the JSON
// parameter, since this throws a parse error on empty
// which breaks if there's no config.json and we're
// loading from the filesystem (see above).
resolve(JSON.parse(body));
},
);
});
}
function onTokenLoginCompleted() {
// if we did a token login, we're now left with the token, hs and is
// url as query params in the url; a little nasty but let's redirect to
// clear them.
var parsedUrl = url.parse(window.location.href);
const parsedUrl = url.parse(window.location.href);
parsedUrl.search = "";
var formatted = url.format(parsedUrl);
const formatted = url.format(parsedUrl);
console.log("Redirecting to " + formatted + " to drop loginToken " +
"from queryparams");
window.location.href = formatted;
}
async function loadApp() {
initRageshake();
if (window.vector_indexeddb_worker_script === undefined) {
// If this is missing, something has probably gone wrong with
// the bundling. The js-sdk will just fall back to accessing
// indexeddb directly with no worker script, but we want to
// make sure the indexeddb script is present, so fail hard.
throw new Error("Missing indexeddb worker script!");
}
MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script);
CallHandler.setConferenceHandler(VectorConferenceHandler);
window.addEventListener('hashchange', onHashChange);
await loadOlm();
await loadLanguage();
const fragparts = parseQsFromFragment(window.location);
const params = parseQs(window.location);
// set the platform for react sdk (our Platform object automatically picks the right one)
PlatformPeg.set(new Platform());
// set the platform for react sdk
if (window.ipcRenderer) {
console.log("Using Electron platform");
const plaf = new ElectronPlatform();
PlatformPeg.set(plaf);
// Electron only: see if we need to do a one-time data
// migration
if (window.localStorage.getItem('mx_user_id') === null) {
console.log("Migrating session from old origin...");
await plaf.migrateFromOldOrigin();
console.log("Origin migration complete");
}
} else {
console.log("Using Web platform");
PlatformPeg.set(new WebPlatform());
}
// Load the config file. First try to load up a domain-specific config of the
// form "config.$domain.json" and if that fails, fall back to config.json.
@@ -267,9 +280,8 @@ async function loadApp() {
}
// as quickly as we possibly can, set a default theme...
const styleElements = Object.create(null);
let a;
const theme = SettingsStore.getValue("theme");
const theme = "dharma";//SettingsStore.getValue("theme");
for (let i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
const href = a.getAttribute("href");
if (!href) continue;
@@ -287,12 +299,23 @@ async function loadApp() {
// in case the Tinter.tint() in MatrixChat fires before the
// CSS has actually loaded (which in practice happens)...
// FIXME: we should probably block loading the app or even
// showing a spinner until the theme is loaded, to avoid
// flashes of unstyled content.
a.onload = () => {
// This if fixes Tinter.setTheme to not fire on Firefox
// in case it is the first time loading Riot.
// `InstallTrigger` is a Object which only exists on Firefox
// (it is used for their Plugins) and can be used as a
// feature check.
// Firefox loads css always before js. This is why we dont use
// onload or it's EventListener as thoose will never trigger.
if (typeof InstallTrigger !== 'undefined') {
Tinter.setTheme(theme);
};
} else {
// FIXME: we should probably block loading the app or even
// showing a spinner until the theme is loaded, to avoid
// flashes of unstyled content.
a.onload = () => {
Tinter.setTheme(theme);
};
}
} else {
// Firefox requires this to not be done via `setAttribute`
// or via HTML.
@@ -332,23 +355,60 @@ async function loadApp() {
initialScreenAfterLogin={getScreenFromLocation(window.location)}
defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}
/>,
document.getElementById('matrixchat')
document.getElementById('matrixchat'),
);
} else {
console.error("Browser is missing required features.");
// take to a different landing page to AWOOOOOGA at the user
var CompatibilityPage = sdk.getComponent("structures.CompatibilityPage");
const CompatibilityPage = sdk.getComponent("structures.CompatibilityPage");
window.matrixChat = ReactDOM.render(
<CompatibilityPage onAccept={function() {
if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true);
console.log("User accepts the compatibility risks.");
loadApp();
}} />,
document.getElementById('matrixchat')
document.getElementById('matrixchat'),
);
}
}
function loadOlm() {
/* Load Olm. We try the WebAssembly version first, and then the legacy,
* asm.js version if that fails. For this reason we need to wait for this
* to finish before continuing to load the rest of the app. In future
* we could somehow pass a promise down to react-sdk and have it wait on
* that so olm can be loading in parallel with the rest of the app.
*
* We also need to tell the Olm js to look for its wasm file at the same
* level as index.html. It really should be in the same place as the js,
* ie. in the bundle directory, but as far as I can tell this is
* completely impossible with webpack. We do, however, use a hashed
* filename to avoid caching issues.
*/
return Olm.init({
locateFile: () => olmWasmPath,
}).then(() => {
console.log("Using WebAssembly Olm");
}).catch((e) => {
console.log("Failed to load Olm: trying legacy version");
return new Promise((resolve, reject) => {
const s = document.createElement('script');
s.src = 'olm_legacy.js'; // XXX: This should be cache-busted too
s.onload = resolve;
s.onerror = reject;
document.body.appendChild(s);
}).then(() => {
// Init window.Olm, ie. the one just loaded by the script tag,
// not 'Olm' which is still the failed wasm version.
return window.Olm.init();
}).then(() => {
console.log("Using legacy Olm");
}).catch((e) => {
console.log("Both WebAssembly and asm.js Olm failed!", e);
});
});
}
async function loadLanguage() {
const prefLang = SettingsStore.getValue("language", null, /*excludeDefault=*/true);
let langs = [];

View File

@@ -18,4 +18,4 @@ import {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';
const remoteWorker = new IndexedDBStoreWorker(postMessage);
onmessage = remoteWorker.onMessage;
global.onmessage = remoteWorker.onMessage;

View File

@@ -364,9 +364,9 @@ body {
</g>
</svg>
<p>Launch the app, and enable <strong>Use custom server options (advanced)</strong>.</p>
<p class="mx_Spacer">In the Home Server field, enter:</p>
<p class="mx_Spacer">In the homeserver field, enter:</p>
<p><strong id="hs_url"></strong></p>
<p class="mx_Spacer"><em>Note: You shouldn&apos;t need to modify the Identity Server field, which by default is set to https://vector.im.</em></p>
<p class="mx_Spacer"><em>Note: You shouldn&apos;t need to modify the identity server field, which by default is set to https://vector.im.</em></p>
</div>
</div>
</div>

View File

@@ -1,41 +0,0 @@
/*
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');

View File

@@ -3,6 +3,7 @@
/*
Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -21,44 +22,26 @@ import VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';
import dis from 'matrix-react-sdk/lib/dispatcher';
import { _t } from 'matrix-react-sdk/lib/languageHandler';
import Promise from 'bluebird';
import {remote, ipcRenderer, desktopCapturer} from 'electron';
import rageshake from 'matrix-react-sdk/lib/rageshake/rageshake';
remote.autoUpdater.on('update-downloaded', onUpdateDownloaded);
// try to flush the rageshake logs to indexeddb before quit.
ipcRenderer.on('before-quit', function () {
console.log('riot-desktop closing');
rageshake.flush();
});
function onUpdateDownloaded(ev: Event, releaseNotes: string, ver: string, date: Date, updateURL: string) {
dis.dispatch({
action: 'new_version',
currentVersion: remote.app.getVersion(),
newVersion: ver,
releaseNotes: releaseNotes,
});
}
const ipcRenderer = window.ipcRenderer;
function platformFriendlyName(): string {
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);
// used to use window.process but the same info is available here
if (navigator.userAgent.includes('Macintosh')) {
return 'macOS';
} else if (navigator.userAgent.includes('FreeBSD')) {
return 'FreeBSD';
} else if (navigator.userAgent.includes('OpenBSD')) {
return 'OpenBSD';
} else if (navigator.userAgent.includes('SunOS')) {
return 'SunOS';
} else if (navigator.userAgent.includes('Windows')) {
return 'Windows';
} else if (navigator.userAgent.includes('Linux')) {
return 'Linux';
} else {
return 'Unknown';
}
}
@@ -85,9 +68,11 @@ function getUpdateCheckStatus(status) {
export default class ElectronPlatform extends VectorBasePlatform {
constructor() {
super();
dis.register(_onAction);
this.updatable = Boolean(remote.autoUpdater.getFeedURL());
this._pendingIpcCalls = {};
this._nextIpcCallId = 0;
dis.register(_onAction);
/*
IPC Call `check_updates` returns:
true if there is an update available
@@ -103,10 +88,28 @@ export default class ElectronPlatform extends VectorBasePlatform {
this.showUpdateCheck = false;
});
// try to flush the rageshake logs to indexeddb before quit.
ipcRenderer.on('before-quit', function() {
console.log('riot-desktop closing');
rageshake.flush();
});
ipcRenderer.on('ipcReply', this._onIpcReply.bind(this));
ipcRenderer.on('update-downloaded', this.onUpdateDownloaded.bind(this));
this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
}
async onUpdateDownloaded(ev, updateInfo) {
dis.dispatch({
action: 'new_version',
currentVersion: await this.getAppVersion(),
newVersion: updateInfo,
releaseNotes: updateInfo.releaseNotes,
});
}
getHumanReadableName(): string {
return 'Electron Platform'; // no translation required: only used for analytics
}
@@ -133,7 +136,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
// maybe we should pass basic styling (italics, bold, underline) through from MD
// we only have to strip out < and > as the spec doesn't include anything about things like &amp;
// so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done.
if (window.process.platform === 'linux') {
if (navigator.userAgent.includes('Linux')) {
msg = msg.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
@@ -143,22 +146,17 @@ export default class ElectronPlatform extends VectorBasePlatform {
{
body: msg,
icon: avatarUrl,
tag: 'vector',
silent: true, // we play our own sounds
},
);
notification.onclick = function() {
notification.onclick = () => {
dis.dispatch({
action: 'view_room',
room_id: room.roomId,
});
global.focus();
const win = remote.getCurrentWindow();
if (win.isMinimized()) win.restore();
else if (!win.isVisible()) win.show();
else win.focus();
this._ipcCall('focusWindow');
};
return notification;
@@ -172,8 +170,25 @@ export default class ElectronPlatform extends VectorBasePlatform {
notif.close();
}
getAppVersion(): Promise<string> {
return Promise.resolve(remote.app.getVersion());
async getAppVersion(): Promise<string> {
return await this._ipcCall('getAppVersion');
}
supportsAutoLaunch() {
return true;
}
async getAutoLaunchEnabled() {
return await this._ipcCall('getAutoLaunchEnabled');
}
async setAutoLaunchEnabled(enabled) {
return await this._ipcCall('setAutoLaunchEnabled', enabled);
}
async canSelfUpdate(): boolean {
const feedUrl = await this._ipcCall('getUpdateFeedUrl');
return Boolean(feedUrl);
}
startUpdateCheck() {
@@ -198,52 +213,47 @@ export default class ElectronPlatform extends VectorBasePlatform {
return null;
}
isElectron(): boolean { return true; }
requestNotificationPermission(): Promise<string> {
return Promise.resolve('granted');
}
reload() {
remote.getCurrentWebContents().reload();
// we used to remote to the main process to get it to
// reload the webcontents, but in practice this is unnecessary:
// the normal way works fine.
window.location.reload(false);
}
/* BEGIN copied and slightly-modified code
* setupScreenSharingForIframe function from:
* https://github.com/jitsi/jitsi-meet-electron-utils
* Copied directly here to avoid the need for a native electron module for
* 'just a bit of JavaScript'
* NOTE: Apache v2.0 licensed
*/
setupScreenSharingForIframe(iframe: Object) {
iframe.contentWindow.JitsiMeetElectron = {
/**
* Get sources available for screensharing. The callback is invoked
* with an array of DesktopCapturerSources.
*
* @param {Function} callback - The success callback.
* @param {Function} errorCallback - The callback for errors.
* @param {Object} options - Configuration for getting sources.
* @param {Array} options.types - Specify the desktop source types
* to get, with valid sources being "window" and "screen".
* @param {Object} options.thumbnailSize - Specify how big the
* preview images for the sources should be. The valid keys are
* height and width, e.g. { height: number, width: number}. By
* default electron will return images with height and width of
* 150px.
*/
obtainDesktopStreams(callback, errorCallback, options = {}) {
desktopCapturer.getSources(options,
(error, sources) => {
if (error) {
errorCallback(error);
return;
}
callback(sources);
});
},
};
async migrateFromOldOrigin() {
return this._ipcCall('origin_migrate');
}
async _ipcCall(name, ...args) {
const ipcCallId = ++this._nextIpcCallId;
return new Promise((resolve, reject) => {
this._pendingIpcCalls[ipcCallId] = {resolve, reject};
window.ipcRenderer.send('ipcCall', {id: ipcCallId, name, args});
// Maybe add a timeout to these? Probably not necessary.
});
}
_onIpcReply(ev, payload) {
if (payload.id === undefined) {
console.warn("Ignoring IPC reply with no ID");
return;
}
if (this._pendingIpcCalls[payload.id] === undefined) {
console.warn("Unknown IPC payload ID: " + payload.id);
return;
}
const callbacks = this._pendingIpcCalls[payload.id];
delete this._pendingIpcCalls[payload.id];
if (payload.error) {
callbacks.reject(payload.error);
} else {
callbacks.resolve(payload.reply);
}
}
/* END of copied and slightly-modified code */
}

View File

@@ -3,6 +3,7 @@
/*
Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -45,7 +46,6 @@ export default class VectorBasePlatform extends BasePlatform {
this.favicon = new Favico({animation: 'none'});
this.showUpdateCheck = false;
this._updateFavicon();
this.updatable = true;
this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
@@ -60,8 +60,8 @@ export default class VectorBasePlatform extends BasePlatform {
// This needs to be in in a try block as it will throw
// if there are more than 100 badge count changes in
// its internal queue
let bgColor = "#d00",
notif = this.notificationCount;
let bgColor = "#d00";
let notif = this.notificationCount;
if (this.errorDidOccur) {
notif = notif || "×";
@@ -88,6 +88,19 @@ export default class VectorBasePlatform extends BasePlatform {
this._updateFavicon();
}
supportsAutoLaunch() {
return false;
}
// XXX: Surely this should be a setting like any other?
async getAutoLaunchEnabled() {
return false;
}
async setAutoLaunchEnabled(enabled) {
throw new Error("Unimplemented");
}
/**
* Begin update polling, if applicable
*/
@@ -97,8 +110,8 @@ export default class VectorBasePlatform extends BasePlatform {
/**
* Whether we can call checkForUpdate on this platform build
*/
canSelfUpdate(): boolean {
return this.updatable;
async canSelfUpdate(): boolean {
return false;
}
startUpdateCheck() {
@@ -114,7 +127,7 @@ export default class VectorBasePlatform extends BasePlatform {
dis.dispatch({
action: 'check_updates',
value: false,
})
});
}
getUpdateCheckStatusEnum() {
@@ -136,4 +149,12 @@ export default class VectorBasePlatform extends BasePlatform {
getDefaultDeviceDisplayName(): string {
return _t("Unknown device");
}
/**
* Migrate account data from a previous origin
* Used only for the electron app
*/
async migrateFromOldOrigin() {
return false;
}
}

View File

@@ -26,7 +26,7 @@ import Promise from 'bluebird';
import url from 'url';
import UAParser from 'ua-parser-js';
var POKE_RATE_MS = 10 * 60 * 1000; // 10 min
const POKE_RATE_MS = 10 * 60 * 1000; // 10 min
export default class WebPlatform extends VectorBasePlatform {
constructor() {
@@ -68,11 +68,11 @@ export default class WebPlatform extends VectorBasePlatform {
// annoyingly, the latest spec says this returns a
// promise, but this is only supported in Chrome 46
// and Firefox 47, so adapt the callback API.
const defer = Promise.defer();
global.Notification.requestPermission((result) => {
defer.resolve(result);
return new Promise(function(resolve, reject) {
global.Notification.requestPermission((result) => {
resolve(result);
});
});
return defer.promise;
}
displayNotification(title: string, msg: string, avatarUrl: string, room: Object) {
@@ -103,31 +103,31 @@ export default class WebPlatform extends VectorBasePlatform {
}
_getVersion(): Promise<string> {
const deferred = Promise.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",
qs: { cachebuster: Date.now() },
},
(err, response, body) => {
if (err || response.status < 200 || response.status >= 300) {
if (err === null) err = { status: response.status };
deferred.reject(err);
return;
}
const ver = body.trim();
deferred.resolve(ver);
},
);
return deferred.promise;
return new Promise(function(resolve, reject) {
request(
{
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 };
reject(err);
return;
}
const ver = body.trim();
resolve(ver);
},
);
});
}
getAppVersion(): Promise<string> {
@@ -142,6 +142,10 @@ export default class WebPlatform extends VectorBasePlatform {
setInterval(this.pollForUpdate.bind(this), POKE_RATE_MS);
}
async canSelfUpdate(): boolean {
return true;
}
pollForUpdate() {
return this._getVersion().then((ver) => {
if (this.runningVersion === null) {

View File

@@ -0,0 +1,64 @@
/*
Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* Separate file that sets up rageshake logging when imported.
* This is necessary so that rageshake logging is set up before
* anything else. Webpack puts all import statements at the top
* of the file before any code, so imports will always be
* evaluated first. Other imports can cause other code to be
* evaluated (eg. the loglevel library in js-sdk, which if set
* up before rageshake causes some js-sdk logging to be missing
* from the rageshake.)
*/
import rageshake from "matrix-react-sdk/lib/rageshake/rageshake";
import SdkConfig from "matrix-react-sdk/lib/SdkConfig";
function initRageshake() {
rageshake.init().then(() => {
console.log("Initialised rageshake.");
console.log("To fix line numbers in Chrome: " +
"Meatball menu → Settings → Blackboxing → Add /rageshake\\.js$");
window.addEventListener('beforeunload', (e) => {
console.log('riot-web closing');
// try to flush the logs to indexeddb
rageshake.flush();
});
rageshake.cleanup();
}, (err) => {
console.error("Failed to initialise rageshake: " + err);
});
}
initRageshake();
global.mxSendRageshake = function(text, withLogs) {
if (withLogs === undefined) withLogs = true;
require(['matrix-react-sdk/lib/rageshake/submit-rageshake'], (s) => {
s(SdkConfig.get().bug_report_endpoint_url, {
userText: text,
sendLogs: withLogs,
progressCallback: console.log.bind(console),
}).then(() => {
console.log("Bug report sent!");
}, (err) => {
console.error(err);
});
});
};

View File

@@ -23,16 +23,16 @@ import qs from 'querystring';
export function parseQsFromFragment(location) {
// if we have a fragment, it will start with '#', which we need to drop.
// (if we don't, this will return '').
var fragment = location.hash.substring(1);
const fragment = location.hash.substring(1);
// our fragment may contain a query-param-like section. we need to fish
// this out *before* URI-decoding because the params may contain ? and &
// characters which are only URI-encoded once.
var hashparts = fragment.split('?');
const hashparts = fragment.split('?');
var result = {
const result = {
location: decodeURIComponent(hashparts[0]),
params: {}
params: {},
};
if (hashparts.length > 1) {

View File

@@ -6,8 +6,8 @@
// ideally these unit tests could be run under nodejs rather than in a browser
// via karma, but having two separate test frameworks in the same project
// seems confusing
var unit_tests = require.context('./unit-tests', true, /\.js$/);
const unit_tests = require.context('./unit-tests', true, /\.js$/);
unit_tests.keys().forEach(unit_tests);
var app_tests = require.context('./app-tests', true, /\.jsx?$/);
const app_tests = require.context('./app-tests', true, /\.jsx?$/);
app_tests.keys().forEach(app_tests);

View File

@@ -17,40 +17,40 @@ limitations under the License.
/* joining.js: tests for the various paths when joining a room */
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
import Platform from '../../src/vector/platform';
import WebPlatform from '../../src/vector/platform/WebPlatform';
require('skin-sdk');
var jssdk = require('matrix-js-sdk');
const jssdk = require('matrix-js-sdk');
var sdk = require('matrix-react-sdk');
var peg = require('matrix-react-sdk/lib/MatrixClientPeg');
var dis = require('matrix-react-sdk/lib/dispatcher');
var PageTypes = require('matrix-react-sdk/lib/PageTypes');
var MatrixChat = sdk.getComponent('structures.MatrixChat');
var RoomDirectory = sdk.getComponent('structures.RoomDirectory');
var RoomPreviewBar = sdk.getComponent('rooms.RoomPreviewBar');
var RoomView = sdk.getComponent('structures.RoomView');
const sdk = require('matrix-react-sdk');
const peg = require('matrix-react-sdk/lib/MatrixClientPeg');
const dis = require('matrix-react-sdk/lib/dispatcher');
const PageTypes = require('matrix-react-sdk/lib/PageTypes');
const MatrixChat = sdk.getComponent('structures.MatrixChat');
const RoomDirectory = sdk.getComponent('structures.RoomDirectory');
const RoomPreviewBar = sdk.getComponent('rooms.RoomPreviewBar');
const RoomView = sdk.getComponent('structures.RoomView');
var React = require('react');
var ReactDOM = require('react-dom');
var ReactTestUtils = require('react-addons-test-utils');
var expect = require('expect');
const React = require('react');
const ReactDOM = require('react-dom');
const ReactTestUtils = require('react-addons-test-utils');
const expect = require('expect');
import Promise from 'bluebird';
var test_utils = require('../test-utils');
var MockHttpBackend = require('matrix-mock-request');
const test_utils = require('../test-utils');
const MockHttpBackend = require('matrix-mock-request');
var HS_URL='http://localhost';
var IS_URL='http://localhost';
var USER_ID='@me:localhost';
var ACCESS_TOKEN='access_token';
const HS_URL='http://localhost';
const IS_URL='http://localhost';
const USER_ID='@me:localhost';
const ACCESS_TOKEN='access_token';
describe('joining a room', function () {
describe('over federation', function () {
var parentDiv;
var httpBackend;
var matrixChat;
describe('joining a room', function() {
describe('over federation', function() {
let parentDiv;
let httpBackend;
let matrixChat;
beforeEach(function() {
test_utils.beforeEach(this);
@@ -71,9 +71,15 @@ describe('joining a room', function () {
}
});
it('should not get stuck at a spinner', function() {
var ROOM_ALIAS = '#alias:localhost';
var ROOM_ID = '!id:localhost';
// TODO: Re-enable test
// The test is currently disabled because the room directory now resides in a dialog,
// which is not accessible from the MatrixChat component anymore. Convincing react that
// the dialog does exist and is under a different tree is incredibly difficult though,
// so for now the test has been disabled. We should revisit this test when someone has
// the time to kill to figure this out. Problem area is highlighted within the test.
xit('should not get stuck at a spinner', function() {
const ROOM_ALIAS = '#alias:localhost';
const ROOM_ID = '!id:localhost';
httpBackend.when('GET', '/pushrules').respond(200, {});
httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' });
@@ -88,9 +94,9 @@ describe('joining a room', function () {
localStorage.setItem("mx_access_token", ACCESS_TOKEN );
localStorage.setItem("mx_user_id", USER_ID);
PlatformPeg.set(new Platform());
PlatformPeg.set(new WebPlatform());
var mc = (
const mc = (
<MatrixChat config={{}}
makeRegistrationUrl={()=>{throw new Error("unimplemented");}}
initialScreenAfterLogin={{
@@ -100,7 +106,7 @@ describe('joining a room', function () {
);
matrixChat = ReactDOM.render(mc, parentDiv);
var roomView;
let roomView;
// wait for /sync to happen. This may take some time, as the client
// has to initialise indexeddb.
@@ -118,11 +124,22 @@ describe('joining a room', function () {
}).then(() => {
console.log(`${Date.now()} App made requests for directory view; switching to a room.`);
var roomDir = ReactTestUtils.findRenderedComponentWithType(
matrixChat, RoomDirectory);
// TODO: Make this look in the right spot for the directory dialog.
// See the comment block at the top of the test for a bit more information. The short
// story here is that the RoomDirectory does not exist under matrixChat anymore, or even
// the parentDiv we have access to. Asking React to find the RoomDirectory as a child of
// the document results in it complaining that you didn't give it a component tree to
// search in. When you do get a reference to the component tree based off the document
// root and ask it to search, it races and can't find the component in time. To top it
// all off, MatrixReactTestUtils can't find the element in time either even with a very
// high number of attempts. Assuming we can get a reference to the RoomDirectory in a
// dialog, the rest of the test should be fine.
const roomDir = ReactTestUtils.findRenderedComponentWithType(
matrixChat, RoomDirectory,
);
// enter an alias in the input, and simulate enter
var input = ReactTestUtils.findRenderedDOMComponentWithTag(
const input = ReactTestUtils.findRenderedDOMComponentWithTag(
roomDir, 'input');
input.value = ROOM_ALIAS;
ReactTestUtils.Simulate.change(input);

View File

@@ -17,7 +17,7 @@ limitations under the License.
/* loading.js: test the myriad paths we have for loading the application */
import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';
import Platform from '../../src/vector/platform';
import WebPlatform from '../../src/vector/platform/WebPlatform';
import 'skin-sdk';
@@ -40,10 +40,21 @@ import * as test_utils from '../test-utils';
import MockHttpBackend from 'matrix-mock-request';
import {parseQs, parseQsFromFragment} from '../../src/vector/url_utils';
var DEFAULT_HS_URL='http://my_server';
var DEFAULT_IS_URL='http://my_is';
const DEFAULT_HS_URL='http://my_server';
const DEFAULT_IS_URL='http://my_is';
describe('loading:', function () {
expect.extend({
toStartWith(prefix) {
expect.assert(
this.actual.startsWith(prefix),
'expected %s to start with %s',
this.actual, prefix,
);
return this;
}
});
describe('loading:', function() {
let parentDiv;
let httpBackend;
@@ -74,7 +85,7 @@ describe('loading:', function () {
});
});
afterEach(async function () {
afterEach(async function() {
console.log(`${Date.now()}: loading: afterEach`);
if (parentDiv) {
ReactDOM.unmountComponentAtNode(parentDiv);
@@ -112,12 +123,12 @@ describe('loading:', function () {
toString: function() { return this.search + this.hash; },
};
let tokenLoginCompleteDefer = Promise.defer();
const tokenLoginCompleteDefer = Promise.defer();
tokenLoginCompletePromise = tokenLoginCompleteDefer.promise;
function onNewScreen(screen) {
console.log(Date.now() + " newscreen "+screen);
var hash = '#/' + screen;
const hash = '#/' + screen;
windowLocation.hash = hash;
console.log(Date.now() + " browser URI now "+ windowLocation);
}
@@ -129,7 +140,7 @@ describe('loading:', function () {
return {
screen: fragparts.location.substring(1),
params: fragparts.params,
}
};
}
const MatrixChat = sdk.getComponent('structures.MatrixChat');
@@ -140,9 +151,9 @@ describe('loading:', function () {
default_is_url: DEFAULT_IS_URL,
}, opts.config || {});
PlatformPeg.set(new Platform());
PlatformPeg.set(new WebPlatform());
var params = parseQs(windowLocation);
const params = parseQs(windowLocation);
matrixChat = ReactDOM.render(
<MatrixChat
onNewScreen={onNewScreen}
@@ -153,7 +164,7 @@ describe('loading:', function () {
onTokenLoginCompleted={() => tokenLoginCompleteDefer.resolve()}
initialScreenAfterLogin={getScreenFromLocation(windowLocation)}
makeRegistrationUrl={() => {throw new Error('Not implemented');}}
/>, parentDiv
/>, parentDiv,
);
}
@@ -179,7 +190,7 @@ describe('loading:', function () {
}
describe("Clean load with no stored credentials:", function() {
it('gives a login panel by default', function (done) {
it('gives a login panel by default', function(done) {
loadApp();
Promise.delay(1).then(() => {
@@ -243,7 +254,7 @@ describe('loading:', function () {
return awaitLoginComponent(matrixChat).then(() => {
// we expect a single <Login> component
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login'));
matrixChat, sdk.getComponent('structures.auth.Login'));
// the only outstanding request should be a GET /login
// (in particular there should be no /register request for
@@ -257,7 +268,6 @@ describe('loading:', function () {
}
return completeLogin(matrixChat);
}).then(() => {
// once the sync completes, we should have a room view
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.HomePage'));
@@ -333,40 +343,6 @@ describe('loading:', function () {
}).done(done, done);
});
it("logs in correctly with a Riot Team Server", function() {
sdk.setFetch(httpBackend.fetchFn); // XXX: ought to restore this!
httpBackend.when('GET', '/pushrules').respond(200, {});
httpBackend.when('POST', '/filter').respond(200, { filter_id: 'fid' });
loadApp({
config: {
teamServerConfig: {
teamServerURL: 'http://my_team_server',
},
},
});
return Promise.delay(1).then(() => {
// we expect a loading spinner while we log into the RTS
assertAtLoadingSpinner(matrixChat);
httpBackend.when('GET', 'my_team_server/login').respond(200, {
team_token: 'nom',
});
return httpBackend.flush();
}).then(() => {
return awaitSyncingSpinner(matrixChat)
}).then(() => {
// we got a sync spinner - let the sync complete
return expectAndAwaitSync();
}).then(() => {
// once the sync completes, we should have a home page
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.HomePage'));
});
});
describe('/#/login link:', function() {
beforeEach(function() {
loadApp({
@@ -380,7 +356,7 @@ describe('loading:', function () {
it('shows a login view', function() {
// we expect a single <Login> component
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login')
matrixChat, sdk.getComponent('structures.auth.Login'),
);
// the only outstanding request should be a GET /login
@@ -408,7 +384,7 @@ describe('loading:', function () {
});
describe('Guest auto-registration:', function() {
it('shows a home page by default', function (done) {
it('shows a home page by default', function(done) {
loadApp();
Promise.delay(1).then(() => {
@@ -438,10 +414,7 @@ describe('loading:', function () {
}).done(done, done);
});
it('uses the last known homeserver to register with', function (done) {
localStorage.setItem("mx_hs_url", "https://homeserver" );
localStorage.setItem("mx_is_url", "https://idserver" );
it('uses the default homeserver to register with', function(done) {
loadApp();
Promise.delay(1).then(() => {
@@ -450,7 +423,7 @@ describe('loading:', function () {
assertAtLoadingSpinner(matrixChat);
httpBackend.when('POST', '/register').check(function(req) {
expect(req.path).toMatch(new RegExp("^https://homeserver/"));
expect(req.path).toStartWith(DEFAULT_HS_URL);
expect(req.queryParams.kind).toEqual('guest');
}).respond(200, {
user_id: "@guest:localhost",
@@ -463,21 +436,21 @@ describe('loading:', function () {
}).then(() => {
return expectAndAwaitSync();
}).then((req) => {
expect(req.path).toMatch(new RegExp("^https://homeserver/"));
expect(req.path).toStartWith(DEFAULT_HS_URL);
// once the sync completes, we should have a home page
httpBackend.verifyNoOutstandingExpectation();
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.HomePage'));
expect(windowLocation.hash).toEqual("#/home");
expect(MatrixClientPeg.get().baseUrl).toEqual("https://homeserver");
expect(MatrixClientPeg.get().idBaseUrl).toEqual("https://idserver");
expect(MatrixClientPeg.get().baseUrl).toEqual(DEFAULT_HS_URL);
expect(MatrixClientPeg.get().idBaseUrl).toEqual(DEFAULT_IS_URL);
}).done(done, done);
});
it('shows a room view if we followed a room link', function(done) {
loadApp({
uriFragment: "#/room/!room:id"
uriFragment: "#/room/!room:id",
});
Promise.delay(1).then(() => {
// at this point, we're trying to do a guest registration;
@@ -547,7 +520,7 @@ describe('loading:', function () {
// we expect a single <Login> component
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login')
matrixChat, sdk.getComponent('structures.auth.Login'),
);
});
@@ -555,7 +528,7 @@ describe('loading:', function () {
// ILAG renders this obsolete. I think.
it('should allow us to return to the app', function() {
const login = ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login')
matrixChat, sdk.getComponent('structures.auth.Login')
);
const linkText = 'Return to app';
@@ -580,7 +553,7 @@ describe('loading:', function () {
});
describe('Token login:', function() {
it('logs in successfully', function (done) {
it('logs in successfully', function(done) {
loadApp({
queryString: "?loginToken=secretToken&homeserver=https%3A%2F%2Fhomeserver&identityServer=https%3A%2F%2Fidserver",
});
@@ -623,7 +596,7 @@ describe('loading:', function () {
function completeLogin(matrixChat) {
// we expect a single <Login> component
const login = ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login'));
matrixChat, sdk.getComponent('structures.auth.Login'));
httpBackend.when('POST', '/login').check(function(req) {
expect(req.data.type).toEqual('m.login.password');
@@ -658,7 +631,7 @@ describe('loading:', function () {
// assert that we are on the loading page
function assertAtLoadingSpinner(matrixChat) {
var domComponent = ReactDOM.findDOMNode(matrixChat);
const domComponent = ReactDOM.findDOMNode(matrixChat);
expect(domComponent.className).toEqual("mx_MatrixChat_splash");
// just the spinner
@@ -697,12 +670,12 @@ function awaitSyncingSpinner(matrixChat, retryLimit, retryCount) {
}
function assertAtSyncingSpinner(matrixChat) {
var domComponent = ReactDOM.findDOMNode(matrixChat);
const domComponent = ReactDOM.findDOMNode(matrixChat);
expect(domComponent.className).toEqual("mx_MatrixChat_splash");
ReactTestUtils.findRenderedComponentWithType(
matrixChat, sdk.getComponent('elements.Spinner'));
var logoutLink = ReactTestUtils.findRenderedDOMComponentWithTag(
const logoutLink = ReactTestUtils.findRenderedDOMComponentWithTag(
matrixChat, 'a');
expect(logoutLink.text).toEqual("Logout");
}
@@ -736,6 +709,6 @@ function awaitRoomView(matrixChat, retryLimit, retryCount) {
function awaitLoginComponent(matrixChat, attempts) {
return MatrixReactTestUtils.waitForRenderedComponentWithType(
matrixChat, sdk.getComponent('structures.login.Login'), attempts,
matrixChat, sdk.getComponent('structures.auth.Login'), attempts,
);
}

View File

@@ -4,5 +4,5 @@
* Skins the react-sdk with the vector components
*/
var sdk = require('matrix-react-sdk');
const sdk = require('matrix-react-sdk');
sdk.loadSkin(require('../src/component-index'));

View File

@@ -8,7 +8,7 @@ import Promise from 'bluebird';
* @param {Mocha.Context} context The test context
*/
export function beforeEach(context) {
var desc = context.currentTest.fullTitle();
const desc = context.currentTest.fullTitle();
console.log();
console.log(desc);
console.log(new Array(1 + desc.length).join("="));
@@ -22,7 +22,7 @@ export function beforeEach(context) {
* returns true if the current environment supports webrtc
*/
export function browserSupportsWebRTC() {
var n = global.window.navigator;
const n = global.window.navigator;
return n.getUserMedia || n.webkitGetUserMedia ||
n.mozGetUserMedia;
}

View File

@@ -4,7 +4,7 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
let og_image_url = process.env.RIOT_OG_IMAGE_URL;
if (!og_image_url) og_image_url = 'https://riot.im/app/themes/riot/img/logos/riot-im-logo-1.png';
if (!og_image_url) og_image_url = 'https://riot.im/app/themes/riot/img/logos/riot-im-logo-black-text.png';
module.exports = {
entry: {
@@ -15,43 +15,83 @@ module.exports = {
"mobileguide": "./src/vector/mobile_guide/index.js",
// We ship olm.js as a separate lump of javascript. This makes it get
// loaded via a separate <script/> tag in index.html (which loads it
// into the browser global `Olm`, where js-sdk expects to find it).
//
// (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": "./src/vector/olm-loader.js",
// CSS themes
"theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
"theme-dark": "./node_modules/matrix-react-sdk/res/themes/dark/css/dark.scss",
"theme-status": "./res/themes/status/css/status.scss",
//"theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
//"theme-dark": "./node_modules/matrix-react-sdk/res/themes/dark/css/dark.scss",
"theme-dharma": "./node_modules/matrix-react-sdk/res/themes/dharma/css/dharma.scss",
//"theme-status": "./res/themes/status/css/status.scss",
},
module: {
preLoaders: [
{ test: /\.js$/, loader: "source-map-loader" },
],
loaders: [
{ test: /\.json$/, loader: "json" },
{ test: /\.js$/, loader: "babel", include: path.resolve('./src') },
rules: [
{ enforce: 'pre', test: /\.js$/, use: "source-map-loader", exclude: /node_modules/, },
{ test: /\.js$/, use: "babel-loader", include: path.resolve(__dirname, 'src') },
{
test: /\.wasm$/,
loader: "file-loader",
type: "javascript/auto", // https://github.com/webpack/webpack/issues/6725
options: {
name: '[name].[hash:7].[ext]',
outputPath: '.',
},
},
{
test: /\.scss$/,
// 1. postcss-loader turns the SCSS into normal CSS.
// 2. 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.)
// 2. css-loader turns the CSS into a JS module whose default
// export is a string containing the CSS, while also adding
// the images and fonts from CSS as Webpack inputs.
// 3. ExtractTextPlugin turns that string into a separate asset.
loader: ExtractTextPlugin.extract("css-raw-loader!postcss-loader?config=postcss.config.js"),
use: ExtractTextPlugin.extract({
use: [
"css-loader",
{
loader: 'postcss-loader',
options: {
config: {
path: './postcss.config.js',
},
},
},
],
}),
},
{
// this works similarly to the scss case, without postcss.
test: /\.css$/,
loader: ExtractTextPlugin.extract("css-raw-loader"),
use: ExtractTextPlugin.extract({
use: "css-loader",
}),
},
{
test: /\.(gif|png|svg|ttf)$/,
// Use a content-based hash in the name so that we can set a long cache
// lifetime for assets while still delivering changes quickly.
oneOf: [
{
// Images referenced in CSS files
issuer: /\.(scss|css)$/,
loader: 'file-loader',
options: {
name: '[name].[hash:7].[ext]',
outputPath: getImgOutputPath,
publicPath: function(url, resourcePath) {
// CSS image usages end up in the `bundles/[hash]` output
// directory, so we adjust the final path to navigate up
// twice.
const outputPath = getImgOutputPath(url, resourcePath);
return toPublicPath(path.join("../..", outputPath));
},
},
},
{
// Images referenced in HTML and JS files
loader: 'file-loader',
options: {
name: '[name].[hash:7].[ext]',
outputPath: getImgOutputPath,
},
},
],
},
],
noParse: [
@@ -72,14 +112,13 @@ module.exports = {
output: {
path: path.join(__dirname, "webapp"),
// the generated js (and CSS, from the ExtractTextPlugin) are put in a
// The generated JS (and CSS, from the ExtractTextPlugin) are put in a
// unique subdirectory for the build. There will only be one such
// 'bundle' directory in the generated tarball; however, hosting
// servers can collect 'bundles' from multiple versions into one
// directory and symlink it into place - this allows users who loaded
// an older version of the application to continue to access webpack
// chunks even after the app is redeployed.
//
filename: "bundles/[hash]/[name].js",
chunkFilename: "bundles/[hash]/[name].js",
devtoolModuleFilenameTemplate: function(info) {
@@ -106,11 +145,6 @@ module.exports = {
"matrix-js-sdk": path.resolve('./node_modules/matrix-js-sdk'),
},
},
externals: {
// Don't try to bundle electron: leave it as a commonjs dependency
// (the 'commonjs' here means it will output a 'require')
"electron": "commonjs electron",
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
@@ -152,14 +186,35 @@ module.exports = {
// don't fill the console up with a mahoosive list of modules
chunks: false,
},
// hot mdule replacement doesn't work (I think we'd need react-hot-reload?)
// so webpack-dev-server reloads the page on every update which is quite
// tedious in Riot since that can take a while.
hot: false,
inline: false,
},
};
// olm is an optional dependency. Ignore it if it's not installed, to avoid a
// scary-looking error.
try {
require('olm');
} catch (e) {
console.log("Olm is not installed; not shipping it");
delete(module.exports.entry["olm"]);
/**
* Merge assets found via CSS and imports into a single tree, while also preserving
* directories under `res`.
*
* @param {string} url The adjusted name of the file, such as `warning.1234567.svg`.
* @param {string} resourcePath The absolute path to the source file with unmodified name.
* @return {string} The returned paths will look like `img/warning.1234567.svg`.
*/
function getImgOutputPath(url, resourcePath) {
const prefix = /^.*[/\\]res[/\\]/;
const outputDir = path.dirname(resourcePath).replace(prefix, "");
return path.join(outputDir, path.basename(url));
}
/**
* Convert path to public path format, which always uses forward slashes, since it will
* be placed directly into things like CSS files.
*
* @param {string} path Some path to a file.
*/
function toPublicPath(path) {
return path.replace(/\\/g, '/');
}