Compare commits
282 Commits
v1.6.1
...
jryans/ren
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ffab08bd60 | ||
|
|
0667ede7b7 | ||
|
|
2af008d5f0 | ||
|
|
c8a258b4bb | ||
|
|
acb22f4fe5 | ||
|
|
62d22f50ab | ||
|
|
a0494eeecb | ||
|
|
73d999cc95 | ||
|
|
5a34425360 | ||
|
|
5b31589b3a | ||
|
|
c135c819b7 | ||
|
|
c5f2965c52 | ||
|
|
5c74cbd694 | ||
|
|
6bfa9bc1da | ||
|
|
55e7aa6a22 | ||
|
|
d0f81b26ad | ||
|
|
b7ed883d96 | ||
|
|
b5d0047f39 | ||
|
|
d05dd3ed71 | ||
|
|
dbd62fb213 | ||
|
|
bc57e6fd70 | ||
|
|
2da0527c28 | ||
|
|
42c6b689ff | ||
|
|
747f379055 | ||
|
|
5909725623 | ||
|
|
85a9e90f21 | ||
|
|
826cb1d308 | ||
|
|
202bbf6a24 | ||
|
|
71b90f6dac | ||
|
|
cdbaa7f749 | ||
|
|
d9e3af067a | ||
|
|
eaf6ad598e | ||
|
|
da3739b15f | ||
|
|
e95036405b | ||
|
|
ac4770597d | ||
|
|
ef7182eb43 | ||
|
|
d8da805bac | ||
|
|
fd0205d17e | ||
|
|
f38148fe37 | ||
|
|
f72d683c0b | ||
|
|
42fd1113a9 | ||
|
|
449ac2e5e4 | ||
|
|
ebe1d7c336 | ||
|
|
a704451551 | ||
|
|
1f543994d4 | ||
|
|
8e81ee071f | ||
|
|
7815810cf8 | ||
|
|
14fc25e635 | ||
|
|
3879f92cf5 | ||
|
|
f4ee7eed93 | ||
|
|
eac86b6053 | ||
|
|
1726615b8a | ||
|
|
82f599714f | ||
|
|
a14cff6539 | ||
|
|
003a2942fe | ||
|
|
63a2caa091 | ||
|
|
0dc9cdadf9 | ||
|
|
2c0fef92ef | ||
|
|
f58c59553f | ||
|
|
935914e572 | ||
|
|
58c8ac05b9 | ||
|
|
4bbfdaa818 | ||
|
|
e0ab2bb96e | ||
|
|
6da70bdfbd | ||
|
|
8e3d1407c0 | ||
|
|
c9c402310a | ||
|
|
0b63f04b4b | ||
|
|
d6cb83eb7a | ||
|
|
af349a7ac5 | ||
|
|
d4fa099877 | ||
|
|
98f1536d45 | ||
|
|
70e981f588 | ||
|
|
d193c0909f | ||
|
|
ec49f4555b | ||
|
|
7a7abc74d9 | ||
|
|
87527d7b16 | ||
|
|
6413c3c2fa | ||
|
|
4b49fb49ad | ||
|
|
9d39a3aea7 | ||
|
|
628409d75e | ||
|
|
69f72e330a | ||
|
|
993155d56a | ||
|
|
3500bbe53d | ||
|
|
06852436e6 | ||
|
|
c8c99d7ded | ||
|
|
92eb687a75 | ||
|
|
76c93c8bf7 | ||
|
|
fe0ed2b4f3 | ||
|
|
2ce448943b | ||
|
|
2000f420bd | ||
|
|
979ce51208 | ||
|
|
9be380fdaf | ||
|
|
42c6a26e9f | ||
|
|
abc4f42f83 | ||
|
|
b1c106e8b2 | ||
|
|
ae7f354811 | ||
|
|
f3ef2aba2b | ||
|
|
429bd17906 | ||
|
|
01881f5ef4 | ||
|
|
42bbf4c517 | ||
|
|
931ca6e3bd | ||
|
|
cfee2a43fb | ||
|
|
1b1608c56d | ||
|
|
7fef41f3a7 | ||
|
|
5e834a50a9 | ||
|
|
cbf35a6060 | ||
|
|
a128961d03 | ||
|
|
d12f33fb58 | ||
|
|
b954292e06 | ||
|
|
d587a8e910 | ||
|
|
2c227f68d4 | ||
|
|
55c1f01f4c | ||
|
|
098984dd26 | ||
|
|
ad1d4cba43 | ||
|
|
36851a2aa3 | ||
|
|
59d37ec94b | ||
|
|
6558d6d828 | ||
|
|
754d849055 | ||
|
|
d75045e852 | ||
|
|
fdec64f59c | ||
|
|
9ed7c96df6 | ||
|
|
93da1f192b | ||
|
|
657fa847c6 | ||
|
|
7a237e7045 | ||
|
|
5900c7090f | ||
|
|
c32d3efd52 | ||
|
|
2419db5195 | ||
|
|
428f49bb7a | ||
|
|
b9560c8cfc | ||
|
|
a968389c85 | ||
|
|
5b63be6a57 | ||
|
|
bf174e3f0f | ||
|
|
7d800f9f38 | ||
|
|
3bc6b08cad | ||
|
|
34dab73150 | ||
|
|
59cefb6ac8 | ||
|
|
e8ebf886e4 | ||
|
|
6875ffe0d5 | ||
|
|
befc7589cd | ||
|
|
ca632fd2da | ||
|
|
3b28ebecef | ||
|
|
758e2d6bfd | ||
|
|
21dd4c99f3 | ||
|
|
45fb8adc5d | ||
|
|
4cf86fd50a | ||
|
|
88bb5a49ed | ||
|
|
5c5e7caacf | ||
|
|
97f45723a3 | ||
|
|
1942cad1f6 | ||
|
|
451138617b | ||
|
|
a0ea1bfda8 | ||
|
|
bf35dd2b46 | ||
|
|
bce0bf1b1d | ||
|
|
a607dc6822 | ||
|
|
cd829d3c1c | ||
|
|
1b7accddfd | ||
|
|
ddf3d92d43 | ||
|
|
faca8799db | ||
|
|
d86fd9e753 | ||
|
|
c75e888c90 | ||
|
|
19ff8dde1f | ||
|
|
801946782b | ||
|
|
5a77025dec | ||
|
|
d0413f0d15 | ||
|
|
d41fee06a1 | ||
|
|
bbe9a73266 | ||
|
|
c29dc0bad8 | ||
|
|
41738c322a | ||
|
|
d18b0f87d4 | ||
|
|
765927203d | ||
|
|
403fddcb99 | ||
|
|
f8dad68958 | ||
|
|
e37680b6c1 | ||
|
|
94fee233a8 | ||
|
|
e1f264c481 | ||
|
|
3869a4d22e | ||
|
|
d0679efe5d | ||
|
|
9e36e7f966 | ||
|
|
5c6efa4316 | ||
|
|
afd0d69ab5 | ||
|
|
8a971e59b9 | ||
|
|
e368007274 | ||
|
|
c6688f0245 | ||
|
|
d60f1553b1 | ||
|
|
cb48eb4933 | ||
|
|
a944262bb5 | ||
|
|
06cc1c45bf | ||
|
|
66272fc226 | ||
|
|
1fd74f22c8 | ||
|
|
fb62f6dfb4 | ||
|
|
bc4254574d | ||
|
|
a6683cec67 | ||
|
|
4252735db0 | ||
|
|
c68f35060a | ||
|
|
ec995fb151 | ||
|
|
154586f452 | ||
|
|
40cf610986 | ||
|
|
0f087f7a5a | ||
|
|
af8fb33b83 | ||
|
|
361cc4ab5c | ||
|
|
57d2026a40 | ||
|
|
7185ae17b1 | ||
|
|
332be9b4e1 | ||
|
|
061619929e | ||
|
|
74f798157f | ||
|
|
e7d22fa086 | ||
|
|
a2914cff94 | ||
|
|
c17bcda1ba | ||
|
|
b9794ea6e4 | ||
|
|
492dd42f4d | ||
|
|
29ff40eee5 | ||
|
|
3ad3c3ca0a | ||
|
|
6723e71eb2 | ||
|
|
43c0148123 | ||
|
|
f546d8bc15 | ||
|
|
48a618264a | ||
|
|
19a19cde2f | ||
|
|
733e38cab1 | ||
|
|
b4284b4c68 | ||
|
|
34e92adf05 | ||
|
|
ef60265bb6 | ||
|
|
aed4568882 | ||
|
|
7d517053b1 | ||
|
|
b9ea0af44c | ||
|
|
075299a7eb | ||
|
|
55cba2caa3 | ||
|
|
9e88a7d1c0 | ||
|
|
b7db59eeb2 | ||
|
|
6c92b26875 | ||
|
|
3bbd3e246a | ||
|
|
26c5cdf2c5 | ||
|
|
af76675552 | ||
|
|
134833c7d4 | ||
|
|
42a2f83603 | ||
|
|
6f7570d877 | ||
|
|
d7ee8e13cc | ||
|
|
cb0e3bba38 | ||
|
|
706972eff2 | ||
|
|
6ec613c2c2 | ||
|
|
9874c2c455 | ||
|
|
1412d11d67 | ||
|
|
cbbb53cc90 | ||
|
|
03414d92d0 | ||
|
|
199139efff | ||
|
|
aae5e4c234 | ||
|
|
3a7578b7ee | ||
|
|
18b5fbaa6e | ||
|
|
72513697af | ||
|
|
16ecc007d6 | ||
|
|
92b94af9ed | ||
|
|
4addf64551 | ||
|
|
ef0076bd83 | ||
|
|
81db5900f0 | ||
|
|
6d99c08e59 | ||
|
|
b513cafc98 | ||
|
|
1f1c1279ea | ||
|
|
8be2fdf99c | ||
|
|
c565af1ade | ||
|
|
4e92d09cca | ||
|
|
c442a89253 | ||
|
|
96a550b88a | ||
|
|
0da3534ef5 | ||
|
|
7a17172f50 | ||
|
|
343f19f3b0 | ||
|
|
40f40251f1 | ||
|
|
429494aad4 | ||
|
|
81010a4f2f | ||
|
|
e3f2e97b9f | ||
|
|
5feadbc18e | ||
|
|
4532ddbb2d | ||
|
|
5b59c67012 | ||
|
|
99df2d3126 | ||
|
|
7246d9f2d6 | ||
|
|
a21d6e651f | ||
|
|
6348b17e23 | ||
|
|
0d1b4afde8 | ||
|
|
911bd2e469 | ||
|
|
585cfbbaf9 | ||
|
|
4ec952f1f1 | ||
|
|
6d19d1b346 | ||
|
|
58bf82186c | ||
|
|
4f7081fc2b |
@@ -29,6 +29,7 @@
|
||||
"test/url/urlsearchparams",
|
||||
|
||||
"test/cors",
|
||||
"test/crypto",
|
||||
"test/iframe/sandbox",
|
||||
"test/json",
|
||||
"test/network/fetch",
|
||||
|
||||
161
CHANGELOG.md
@@ -1,3 +1,164 @@
|
||||
Changes in [1.6.8](https://github.com/vector-im/riot-web/releases/tag/v1.6.8) (2020-07-03)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.8-rc.1...v1.6.8)
|
||||
|
||||
* Upgrade to JS SDK 7.1.0 and React SDK 2.9.0
|
||||
|
||||
Changes in [1.6.8-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.6.8-rc.1) (2020-07-01)
|
||||
====================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.7...v1.6.8-rc.1)
|
||||
|
||||
* Upgrade to JS SDK 7.1.0-rc.1 and React SDK 2.9.0-rc.1
|
||||
* Update from Weblate
|
||||
[\#14282](https://github.com/vector-im/riot-web/pull/14282)
|
||||
* Show a download completed toast in electron
|
||||
[\#14248](https://github.com/vector-im/riot-web/pull/14248)
|
||||
* Add the new spinner feature labs flag
|
||||
[\#14213](https://github.com/vector-im/riot-web/pull/14213)
|
||||
* Fix loading-test for SSO plaf changes
|
||||
[\#14212](https://github.com/vector-im/riot-web/pull/14212)
|
||||
* Fix spelling on startup error page
|
||||
[\#14199](https://github.com/vector-im/riot-web/pull/14199)
|
||||
* Document fonts in custom theme
|
||||
[\#14175](https://github.com/vector-im/riot-web/pull/14175)
|
||||
* Update from Weblate
|
||||
[\#14129](https://github.com/vector-im/riot-web/pull/14129)
|
||||
* ElectronPlatform: Implement the isRoomIndexed method.
|
||||
[\#13957](https://github.com/vector-im/riot-web/pull/13957)
|
||||
* ElectronPlatform: Add support to set and get the index user version.
|
||||
[\#14080](https://github.com/vector-im/riot-web/pull/14080)
|
||||
* Mark the new room list as ready for general testing
|
||||
[\#14102](https://github.com/vector-im/riot-web/pull/14102)
|
||||
|
||||
Changes in [1.6.7](https://github.com/vector-im/riot-web/releases/tag/v1.6.7) (2020-06-29)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.6...v1.6.7)
|
||||
|
||||
* Upgrade to React SDK 2.8.1
|
||||
|
||||
Changes in [1.6.6](https://github.com/vector-im/riot-web/releases/tag/v1.6.6) (2020-06-23)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.6-rc.1...v1.6.6)
|
||||
|
||||
* Upgrade to JS SDK 7.0.0 and React SDK 2.8.0
|
||||
|
||||
Changes in [1.6.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.6.6-rc.1) (2020-06-17)
|
||||
====================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.5...v1.6.6-rc.1)
|
||||
|
||||
* Upgrade to JS SDK 7.0.0-rc.1 and React SDK 2.8.0-rc.1
|
||||
* Update from Weblate
|
||||
[\#14067](https://github.com/vector-im/riot-web/pull/14067)
|
||||
* Update from Weblate
|
||||
[\#14032](https://github.com/vector-im/riot-web/pull/14032)
|
||||
* Attempt to fix decoder ring for relative hosted riots
|
||||
[\#13987](https://github.com/vector-im/riot-web/pull/13987)
|
||||
* Upgrade deps
|
||||
[\#13952](https://github.com/vector-im/riot-web/pull/13952)
|
||||
* Fix riot-desktop manual update check getting stuck on Downloading...
|
||||
[\#13946](https://github.com/vector-im/riot-web/pull/13946)
|
||||
* Bump websocket-extensions from 0.1.3 to 0.1.4
|
||||
[\#13943](https://github.com/vector-im/riot-web/pull/13943)
|
||||
* Add e2ee-default:false docs
|
||||
[\#13914](https://github.com/vector-im/riot-web/pull/13914)
|
||||
* make IPC calls to get pickle key
|
||||
[\#13846](https://github.com/vector-im/riot-web/pull/13846)
|
||||
* fix loading test for new sso pattern
|
||||
[\#13913](https://github.com/vector-im/riot-web/pull/13913)
|
||||
* Fix login loop where the sso flow returns to `#/login`
|
||||
[\#13889](https://github.com/vector-im/riot-web/pull/13889)
|
||||
* Fix typo in docs
|
||||
[\#13905](https://github.com/vector-im/riot-web/pull/13905)
|
||||
* Remove cross-signing from labs
|
||||
[\#13904](https://github.com/vector-im/riot-web/pull/13904)
|
||||
* Add PWA Platform with PWA-specific badge controls
|
||||
[\#13890](https://github.com/vector-im/riot-web/pull/13890)
|
||||
* Modernizr check for subtle crypto as we require it all over the place
|
||||
[\#13828](https://github.com/vector-im/riot-web/pull/13828)
|
||||
|
||||
Changes in [1.6.5](https://github.com/vector-im/riot-web/releases/tag/v1.6.5) (2020-06-16)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.4...v1.6.5)
|
||||
|
||||
* Upgrade to JS SDK 6.2.2 and React SDK 2.7.2
|
||||
|
||||
Changes in [1.6.4](https://github.com/vector-im/riot-web/releases/tag/v1.6.4) (2020-06-05)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.3...v1.6.4)
|
||||
|
||||
* Upgrade to JS SDK 6.2.1 and React SDK 2.7.1
|
||||
|
||||
Changes in [1.6.3](https://github.com/vector-im/riot-web/releases/tag/v1.6.3) (2020-06-04)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.3-rc.1...v1.6.3)
|
||||
|
||||
## Security notice
|
||||
|
||||
Riot Web 1.6.3 fixes a vulnerability in single sign-on (SSO) deployments where Riot Web could be confused into sending authentication details to an attacker-controlled server. Thanks to Quentin Gliech for responsibly disclosing this via Matrix's Security Disclosure Policy.
|
||||
|
||||
## All changes
|
||||
|
||||
* Fix login loop where the sso flow returns to `#/login` to release
|
||||
[\#13915](https://github.com/vector-im/riot-web/pull/13915)
|
||||
|
||||
Changes in [1.6.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.6.3-rc.1) (2020-06-02)
|
||||
====================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.2...v1.6.3-rc.1)
|
||||
|
||||
* Upgrade to JS SDK 6.2.0-rc.1 and React SDK 2.7.0-rc.2
|
||||
* Get rid of welcome.html's Chat with Riot Bot button
|
||||
[\#13842](https://github.com/vector-im/riot-web/pull/13842)
|
||||
* Update from Weblate
|
||||
[\#13886](https://github.com/vector-im/riot-web/pull/13886)
|
||||
* Allow deferring of Update Toast until the next morning
|
||||
[\#13864](https://github.com/vector-im/riot-web/pull/13864)
|
||||
* Give contextual feedback for manual update check instead of banner
|
||||
[\#13862](https://github.com/vector-im/riot-web/pull/13862)
|
||||
* Add app-load doc
|
||||
[\#13834](https://github.com/vector-im/riot-web/pull/13834)
|
||||
* Update Modular hosting link
|
||||
[\#13777](https://github.com/vector-im/riot-web/pull/13777)
|
||||
* Replace New Version Bar with a Toast
|
||||
[\#13776](https://github.com/vector-im/riot-web/pull/13776)
|
||||
* Remove webpack-build-notifier from lockfile
|
||||
[\#13814](https://github.com/vector-im/riot-web/pull/13814)
|
||||
* Add media queries and mobile viewport (#12142)
|
||||
[\#13818](https://github.com/vector-im/riot-web/pull/13818)
|
||||
* Fix @types/react conflict in matrix-react-sdk
|
||||
[\#13809](https://github.com/vector-im/riot-web/pull/13809)
|
||||
* Fix manual update checking, super in arrow funcs doesn't work
|
||||
[\#13808](https://github.com/vector-im/riot-web/pull/13808)
|
||||
* Update from Weblate
|
||||
[\#13806](https://github.com/vector-im/riot-web/pull/13806)
|
||||
* Convert platforms to Typescript
|
||||
[\#13756](https://github.com/vector-im/riot-web/pull/13756)
|
||||
* Fix EventEmitter typescript signature in node typings
|
||||
[\#13764](https://github.com/vector-im/riot-web/pull/13764)
|
||||
* Add docs and labs flag for new room list implementation
|
||||
[\#13675](https://github.com/vector-im/riot-web/pull/13675)
|
||||
* Add font scaling labs setting.
|
||||
[\#13352](https://github.com/vector-im/riot-web/pull/13352)
|
||||
* Add labs flag for alternate message layouts
|
||||
[\#13350](https://github.com/vector-im/riot-web/pull/13350)
|
||||
* Move dispatcher references in support of TypeScript conversion
|
||||
[\#13666](https://github.com/vector-im/riot-web/pull/13666)
|
||||
* Update from Weblate
|
||||
[\#13704](https://github.com/vector-im/riot-web/pull/13704)
|
||||
* Replace favico.js dependency with simplified variant grown from it
|
||||
[\#13649](https://github.com/vector-im/riot-web/pull/13649)
|
||||
* Remove Electron packaging scripts
|
||||
[\#13688](https://github.com/vector-im/riot-web/pull/13688)
|
||||
* Fix postcss order to allow mixin variables to work
|
||||
[\#13674](https://github.com/vector-im/riot-web/pull/13674)
|
||||
* Pass screenAfterLogin through SSO in the callback url
|
||||
[\#13650](https://github.com/vector-im/riot-web/pull/13650)
|
||||
|
||||
Changes in [1.6.2](https://github.com/vector-im/riot-web/releases/tag/v1.6.2) (2020-05-22)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.1...v1.6.2)
|
||||
|
||||
* Upgrade to React SDK 2.6.1
|
||||
|
||||
Changes in [1.6.1](https://github.com/vector-im/riot-web/releases/tag/v1.6.1) (2020-05-19)
|
||||
==========================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.6.1-rc.1...v1.6.1)
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
"defaultCountryCode": "GB",
|
||||
"showLabsSettings": false,
|
||||
"features": {
|
||||
"feature_new_spinner": "labs",
|
||||
"feature_font_scaling": "labs",
|
||||
"feature_pinning": "labs",
|
||||
"feature_custom_status": "labs",
|
||||
"feature_custom_tags": "labs",
|
||||
|
||||
81
docs/app-load.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# App load order
|
||||
|
||||
Old slow flow:
|
||||

|
||||
|
||||
Current more parallel flow:
|
||||

|
||||
|
||||
<details><summary>Code</summary>
|
||||
<p>
|
||||
<pre><code>
|
||||
digraph G {
|
||||
node [shape=box];
|
||||
|
||||
subgraph cluster_0 {
|
||||
color=orange;
|
||||
node [style=filled];
|
||||
label = "index.ts";
|
||||
|
||||
entrypoint, s0, ready [shape=point];
|
||||
rageshake, config, i18n, theme, skin, olm [shape=parallelogram];
|
||||
mobile [shape=diamond, label="mobile"];
|
||||
modernizr [shape=diamond];
|
||||
redirect, incompatible [shape=egg];
|
||||
|
||||
entrypoint -> rageshake;
|
||||
rageshake -> mobile [color=blue];
|
||||
mobile -> s0 [label="No"];
|
||||
mobile -> redirect [label="Yes"];
|
||||
|
||||
s0 -> platform;
|
||||
s0 -> olm;
|
||||
platform -> config;
|
||||
|
||||
config -> i18n [color=blue];
|
||||
config -> theme [color=blue];
|
||||
config -> skin [color=blue];
|
||||
|
||||
i18n -> modernizr [color=blue];
|
||||
theme -> modernizr [color=blue];
|
||||
skin -> modernizr [color=blue];
|
||||
|
||||
modernizr -> ready [label="Yes"];
|
||||
modernizr -> incompatible [label="No"];
|
||||
incompatible -> ready [label="user ignore"];
|
||||
|
||||
olm -> ready [color=red];
|
||||
config -> ready [color=red];
|
||||
skin -> ready [color=red];
|
||||
theme -> ready [color=red];
|
||||
i18n -> ready [color=red];
|
||||
}
|
||||
|
||||
subgraph cluster_1 {
|
||||
color = green;
|
||||
node [style=filled];
|
||||
label = "init.tsx";
|
||||
|
||||
ready -> loadApp;
|
||||
loadApp -> matrixchat;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
Key:
|
||||
+ Parallelogram: async/await task
|
||||
+ Box: sync task
|
||||
+ Diamond: conditional branch
|
||||
+ Egg: user interaction
|
||||
+ Blue arrow: async task is allowed to settle but allowed to fail
|
||||
+ Red arrow: async task success is asserted
|
||||
|
||||
Notes:
|
||||
+ A task begins when all its dependencies (arrows going into it) are fulfilled.
|
||||
+ The success of setting up rageshake is never asserted, riot-web has a fallback path for running without IDB (and thus rageshake).
|
||||
+ Everything is awaited to be settled before the Modernizr check, to allow it to make use of things like i18n if they are successful.
|
||||
|
||||
Underlying dependencies:
|
||||

|
||||
@@ -91,7 +91,7 @@ For a good example, see https://riot.im/develop/config.json.
|
||||
call buttons - integration managers may use a different domain.
|
||||
1. `enable_presence_by_hs_url`: The property key should be the URL of the homeserver
|
||||
and its value defines whether to enable/disable the presence status display
|
||||
from that homeserver. If no options are configurd, presence is shown for all
|
||||
from that homeserver. If no options are configured, presence is shown for all
|
||||
homeservers.
|
||||
1. `disable_guests`: Disables guest access tokens and auto-guest registrations.
|
||||
Defaults to false (guests are allowed).
|
||||
|
||||
16
docs/e2ee.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# End to end encryption by default
|
||||
|
||||
By default, Riot will create encrypted DM rooms if the user you are chatting with has keys uploaded on their account.
|
||||
For private room creation, Riot will default to encryption on but give you the choice to opt-out.
|
||||
|
||||
## Disabling encryption by default
|
||||
|
||||
Set the following on your homeserver's
|
||||
`/.well-known/matrix/client` config:
|
||||
```json
|
||||
{
|
||||
"im.vector.riot.e2ee": {
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
```
|
||||
31
docs/labs.md
@@ -7,6 +7,15 @@ to `Settings->Labs`. This list is non-exhaustive and subject to change, chat in
|
||||
**Be warned! Labs features are not finalised, they may be fragile, they may change, they may be
|
||||
dropped. Ask in the room if you are unclear about any details here.**
|
||||
|
||||
## New spinner design (`feature_new_spinner`)
|
||||
|
||||
Replaces the old spinner image with a new, svg-based one featuring a sleeker design.
|
||||
|
||||
## Font scaling (`feature_font_scaling`)
|
||||
|
||||
Enables font scaling options for accessibility. To alter the scale check the
|
||||
appearance tab in settings.
|
||||
|
||||
## Message pinning (`feature_pinning`)
|
||||
|
||||
Allows you to pin messages in the room. To pin a message, use the 3 dots to the right of the message
|
||||
@@ -67,22 +76,6 @@ An implementation of [MSC2241](https://github.com/matrix-org/matrix-doc/pull/224
|
||||
|
||||
This also includes a new implementation of the user & member info panel, designed to share more code between showing community members & room members. Built on top of this new panel is also a new UX for verification from the member panel.
|
||||
|
||||
## Cross-signing
|
||||
|
||||
Cross-signing ([MSC1756](https://github.com/matrix-org/matrix-doc/pull/1756))
|
||||
improves the device verification experience by allowing you to verify a user
|
||||
instead of verifying each of their devices.
|
||||
|
||||
The feature is enabled by default and does not follow a traditional labs flag
|
||||
at the moment. If something goes wrong, add this to your config to disable it:
|
||||
```json
|
||||
{
|
||||
"settingDefaults": {
|
||||
"feature_cross_signing": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The setting will be removed in a future release, enabling it non-optionally for
|
||||
all users.
|
||||
|
||||
@@ -106,3 +99,9 @@ adds an ability for end users to add themes themselves by using a URL to the JSO
|
||||
theme definition.
|
||||
|
||||
For some sample themes, check out [aaronraimist/riot-web-themes](https://github.com/aaronraimist/riot-web-themes).
|
||||
|
||||
## New room list (`feature_new_room_list`)
|
||||
|
||||
A complete rewrite of the room list is underway to increase performance, stability,
|
||||
and general usability. This is still rapidly changing, but feel free to give it a test.
|
||||
|
||||
|
||||
@@ -41,6 +41,16 @@ eg. in config.json:
|
||||
{
|
||||
"name": "Electric Blue",
|
||||
"is_dark": false,
|
||||
"fonts": {
|
||||
"faces": [
|
||||
{
|
||||
"font-family": "Inter",
|
||||
"src": [{"url": "/fonts/Inter.ttf", "format": "ttf"}]
|
||||
}
|
||||
],
|
||||
"general": "Inter, sans",
|
||||
"monospace": "'Courier New'"
|
||||
},
|
||||
"colors": {
|
||||
"accent-color": "#3596fc",
|
||||
"primary-color": "#368bd6",
|
||||
@@ -84,3 +94,5 @@ eg. in config.json:
|
||||
`username-colors` is expected to contain 8 colors. `avatar-background-colors` is expected to contain 3 colors. Both values are optional and have fallbacks from the built-in theme.
|
||||
|
||||
These are exposed as `--username-colors_0`, ... and `--avatar-background-colors_0`, ... respectively in CSS.
|
||||
|
||||
All properties in `fonts` are optional, and will default to the standard Riot fonts.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"version": "1.6.1",
|
||||
"version": "1.6.8",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "New Vector Ltd.",
|
||||
"repository": {
|
||||
@@ -58,11 +58,10 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"browser-request": "^0.3.3",
|
||||
"favico.js": "^0.3.10",
|
||||
"gfm.css": "^1.1.2",
|
||||
"highlight.js": "^9.13.1",
|
||||
"matrix-js-sdk": "6.1.0",
|
||||
"matrix-react-sdk": "2.6.0",
|
||||
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
|
||||
"matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop",
|
||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz",
|
||||
"postcss-easings": "^2.0.0",
|
||||
"prop-types": "^15.7.2",
|
||||
@@ -89,7 +88,9 @@
|
||||
"@babel/preset-typescript": "^7.7.4",
|
||||
"@babel/register": "^7.7.4",
|
||||
"@babel/runtime": "^7.7.6",
|
||||
"@types/flux": "^3.1.9",
|
||||
"@types/modernizr": "^3.5.3",
|
||||
"@types/node": "^12.12.41",
|
||||
"@types/react": "16.9",
|
||||
"@types/react-dom": "^16.9.4",
|
||||
"autoprefixer": "^9.7.3",
|
||||
|
||||
@@ -4,8 +4,8 @@ class StartupError extends Error {}
|
||||
* We need to know the bundle path before we can fetch the sourcemap files. In a production environment, we can guess
|
||||
* it using this.
|
||||
*/
|
||||
async function getBundleName() {
|
||||
const res = await fetch("../index.html");
|
||||
async function getBundleName(baseUrl) {
|
||||
const res = await fetch(new URL("index.html", baseUrl).toString());
|
||||
if (!res.ok) {
|
||||
throw new StartupError(`Couldn't fetch index.html to prefill bundle; ${res.status} ${res.statusText}`);
|
||||
}
|
||||
@@ -25,7 +25,7 @@ function validateBundle(value) {
|
||||
* The purpose of this is just to validate that the user entered a real bundle, and provide feedback.
|
||||
*/
|
||||
const bundleCache = new Map();
|
||||
function bundleSubject(bundle) {
|
||||
function bundleSubject(baseUrl, bundle) {
|
||||
if (!bundle.match(/^[0-9a-f]{20}$/)) throw new Error("Bad input");
|
||||
if (bundleCache.has(bundle)) {
|
||||
return bundleCache.get(bundle);
|
||||
@@ -33,7 +33,7 @@ function bundleSubject(bundle) {
|
||||
const fetcher = new rxjs.BehaviorSubject(Pending.of());
|
||||
bundleCache.set(bundle, fetcher);
|
||||
|
||||
fetch(`/bundles/${bundle}/bundle.js.map`).then((res) => {
|
||||
fetch(new URL(`bundles/${bundle}/bundle.js.map`, baseUrl).toString()).then((res) => {
|
||||
res.body.cancel(); /* Bail on the download immediately - it could be big! */
|
||||
const status = res.ok;
|
||||
if (status) {
|
||||
@@ -145,6 +145,7 @@ function ProgressBar({ fetchStatus }) {
|
||||
* The main component.
|
||||
*/
|
||||
function BundlePicker() {
|
||||
const [baseUrl, setBaseUrl] = React.useState(new URL("..", window.location).toString());
|
||||
const [bundle, setBundle] = React.useState("");
|
||||
const [file, setFile] = React.useState("");
|
||||
const [line, setLine] = React.useState("1");
|
||||
@@ -153,19 +154,25 @@ function BundlePicker() {
|
||||
const [bundleFetchStatus, setBundleFetchStatus] = React.useState(None);
|
||||
const [fileFetchStatus, setFileFetchStatus] = React.useState(None);
|
||||
|
||||
/* At startup, try to fill in the bundle name for the user */
|
||||
/* On baseUrl change, try to fill in the bundle name for the user */
|
||||
React.useEffect(() => {
|
||||
getBundleName().then((name) => {
|
||||
console.log("DEBUG", baseUrl);
|
||||
getBundleName(baseUrl).then((name) => {
|
||||
console.log("DEBUG", name);
|
||||
if (bundle === "" && validateBundle(name) !== None) {
|
||||
setBundle(name);
|
||||
}
|
||||
}, console.log.bind(console));
|
||||
}, []);
|
||||
|
||||
}, [baseUrl]);
|
||||
|
||||
/* ------------------------- */
|
||||
/* Follow user state changes */
|
||||
/* ------------------------- */
|
||||
const onBaseUrlChange = React.useCallback((event) => {
|
||||
const value = event.target.value;
|
||||
setBaseUrl(value);
|
||||
}, []);
|
||||
|
||||
const onBundleChange = React.useCallback((event) => {
|
||||
const value = event.target.value;
|
||||
setBundle(value);
|
||||
@@ -195,14 +202,14 @@ function BundlePicker() {
|
||||
React.useEffect(() =>
|
||||
validateBundle(bundle).fold({
|
||||
some: (value) => {
|
||||
const subscription = bundleSubject(value)
|
||||
const subscription = bundleSubject(baseUrl, value)
|
||||
.pipe(rxjs.operators.map(Some.of))
|
||||
.subscribe(setBundleFetchStatus);
|
||||
return () => subscription.unsubscribe();
|
||||
},
|
||||
none: () => setBundleFetchStatus(None),
|
||||
}),
|
||||
[bundle]);
|
||||
[baseUrl, bundle]);
|
||||
|
||||
/* Whenever a valid javascript file is input, see if it corresponds to a sourcemap file and initiate a fetch
|
||||
* if so. */
|
||||
@@ -211,7 +218,7 @@ function BundlePicker() {
|
||||
setFileFetchStatus(None);
|
||||
return;
|
||||
}
|
||||
const observable = fetchAsSubject(`/bundles/${bundle}/${file}.map`)
|
||||
const observable = fetchAsSubject(new URL(`bundles/${bundle}/${file}.map`, baseUrl).toString())
|
||||
.pipe(
|
||||
rxjs.operators.map((fetchStatus) => fetchStatus.flatMap(value => {
|
||||
try {
|
||||
@@ -224,7 +231,7 @@ function BundlePicker() {
|
||||
);
|
||||
const subscription = observable.subscribe(setFileFetchStatus);
|
||||
return () => subscription.unsubscribe();
|
||||
}, [bundle, file]);
|
||||
}, [baseUrl, bundle, file]);
|
||||
|
||||
/*
|
||||
* Whenever we have a valid fetched sourcemap, and a valid line, attempt to find the original position from the
|
||||
@@ -255,6 +262,16 @@ function BundlePicker() {
|
||||
/* ------ */
|
||||
return e('div', {},
|
||||
e('div', { className: 'inputs' },
|
||||
e('div', { className: 'baseUrl' },
|
||||
e('label', { htmlFor: 'baseUrl'}, 'Base URL'),
|
||||
e('input', {
|
||||
name: 'baseUrl',
|
||||
required: true,
|
||||
pattern: ".+",
|
||||
onChange: onBaseUrlChange,
|
||||
value: baseUrl,
|
||||
}),
|
||||
),
|
||||
e('div', { className: 'bundle' },
|
||||
e('label', { htmlFor: 'bundle'}, 'Bundle'),
|
||||
e('input', {
|
||||
|
||||
@@ -6,67 +6,67 @@
|
||||
"start_url": "index.html",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/vector-icons/20587a91-30e9-d583-2b9b-5c4c2aca967f.webPlatform.png",
|
||||
"src": "/vector-icons/44.png",
|
||||
"sizes": "44x44",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/20522817-fde7-6a88-54a9-496b1c8aee53.webPlatform.png",
|
||||
"src": "/vector-icons/1240x600.png",
|
||||
"sizes": "1240x600",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/4168a7e5-9d94-e9a3-4e60-45a58cc8ee4e.webPlatform.png",
|
||||
"src": "/vector-icons/300.png",
|
||||
"sizes": "300x300",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/dd73cdd3-17c4-9b33-81b8-4789b7a4a250.webPlatform.png",
|
||||
"src": "/vector-icons/150.png",
|
||||
"sizes": "150x150",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/8f19f71b-ab84-4fe7-1866-8ee9fb1362da.webPlatform.png",
|
||||
"src": "/vector-icons/88.png",
|
||||
"sizes": "88x88",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/89ac632f-d735-868d-4b9b-cfe32121294c.webPlatform.png",
|
||||
"src": "/vector-icons/24.png",
|
||||
"sizes": "24x24",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/5c925eef-dd2e-aa16-b6d4-13c90b81af1f.webPlatform.png",
|
||||
"src": "/vector-icons/50.png",
|
||||
"sizes": "50x50",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/b3624ff1-eaf4-1082-4923-949bc8eb40ef.webPlatform.png",
|
||||
"src": "/vector-icons/620x300.png",
|
||||
"sizes": "620x300",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/32aa4ec4-8b3f-d7b8-e2df-a49ba887199a.webPlatform.png",
|
||||
"src": "/vector-icons/1024.png",
|
||||
"sizes": "1024x1024",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/a2e91e68-aa4e-45e7-e5e6-951e1d314675.webPlatform.png",
|
||||
"src": "/vector-icons/180.png",
|
||||
"sizes": "180x180",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/627721aa-5331-ded6-b4a5-0bb4799985ee.webPlatform.png",
|
||||
"src": "/vector-icons/152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/4f4b5190-3b9c-9173-3118-442179ae62d4.webPlatform.png",
|
||||
"src": "/vector-icons/120.png",
|
||||
"sizes": "120x120",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/vector-icons/552c9d70-ff13-2235-8ef9-00db0d2fda0c.webPlatform.png",
|
||||
"src": "/vector-icons/76.png",
|
||||
"sizes": "76x76",
|
||||
"type": "image/png"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 283 KiB After Width: | Height: | Size: 283 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
6
res/themes/element/img/logos/element-logo.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M414 204C414 180.804 432.804 162 456 162C610.64 162 736 287.36 736 442C736 465.196 717.196 484 694 484C670.804 484 652 465.196 652 442C652 333.752 564.248 246 456 246C432.804 246 414 227.196 414 204Z" fill="#0DBD8B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M610 820C610 843.196 591.196 862 568 862C413.36 862 288 736.64 288 582C288 558.804 306.804 540 330 540C353.196 540 372 558.804 372 582C372 690.248 459.752 778 568 778C591.196 778 610 796.804 610 820Z" fill="#0DBD8B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M204 610C180.804 610 162 591.196 162 568C162 413.36 287.36 288 442 288C465.196 288 484 306.804 484 330C484 353.196 465.196 372 442 372C333.752 372 246 459.752 246 568C246 591.196 227.196 610 204 610Z" fill="#0DBD8B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M820 414C843.196 414 862 432.804 862 456C862 610.64 736.64 736 582 736C558.804 736 540 717.196 540 694C540 670.804 558.804 652 582 652C690.248 652 778 564.248 778 456C778 432.804 796.804 414 820 414Z" fill="#0DBD8B"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
BIN
res/themes/element/img/logos/opengraph.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
@@ -1,6 +0,0 @@
|
||||
<svg width="42" height="50" viewBox="0 0 42 50" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.04021 42.174C1.04021 45.944 4.27657 49 8.26822 49C12.2603 49 15.4962 45.944 15.4962 42.174V35.2587L22.8119 35.2518C23.2234 35.2518 23.6386 35.2385 24.0415 35.2122C33.5209 34.6096 40.9465 27.1046 40.9465 18.1261C40.9465 8.68273 32.8114 1 22.8119 1H8.26822C4.27657 1 1.04021 4.05637 1.04021 7.82645V27.7141C1.01327 27.9548 0.999582 28.1987 1.00001 28.4459C1.00001 28.6887 1.01412 28.9286 1.04021 29.1645V42.174ZM15.4963 21.6066V14.6525H22.812C24.8405 14.6525 26.4901 16.2103 26.4901 18.1261C26.4901 19.9469 24.9881 21.4692 23.0665 21.5916C22.9822 21.5969 22.8975 21.5993 22.8047 21.5993L15.4963 21.6066Z" fill="#A2DDEF"/>
|
||||
<path d="M15.4963 14.6525V14.0405H14.8844V14.6525H15.4963ZM15.4963 21.6066H14.8844V22.2191L15.4969 22.2185L15.4963 21.6066ZM22.8047 21.5993V20.9874H22.8041L22.8047 21.5993ZM23.0665 21.5916L23.1045 22.2024L23.1053 22.2023L23.0665 21.5916ZM1.04021 29.1645H1.65214V29.1308L1.64843 29.0972L1.04021 29.1645ZM1.00001 28.4459H1.61194L1.61193 28.4449L1.00001 28.4459ZM1.04021 27.7141L1.64834 27.7821L1.65214 27.7482V27.7141H1.04021ZM24.0415 35.2122L24.0027 34.6015L24.0017 34.6016L24.0415 35.2122ZM22.8119 35.2518V34.6399H22.8113L22.8119 35.2518ZM15.4962 35.2587L15.4957 34.6467L14.8843 34.6473V35.2587H15.4962ZM14.8844 14.6525V21.6066H16.1082V14.6525H14.8844ZM15.4969 22.2185L22.8053 22.2112L22.8041 20.9874L15.4957 20.9946L15.4969 22.2185ZM22.8047 22.2112C22.9085 22.2112 23.006 22.2085 23.1045 22.2024L23.0284 20.9809C22.9584 20.9852 22.8865 20.9874 22.8047 20.9874V22.2112ZM23.1053 22.2023C25.3203 22.0612 27.1021 20.2979 27.1021 18.1261H25.8782C25.8782 19.5959 24.6559 20.8772 23.0276 20.9809L23.1053 22.2023ZM27.1021 18.1261C27.1021 15.8399 25.145 14.0405 22.812 14.0405V15.2644C24.536 15.2644 25.8782 16.5808 25.8782 18.1261H27.1021ZM22.812 14.0405H15.4963V15.2644H22.812V14.0405ZM8.26822 48.3881C4.58104 48.3881 1.65214 45.5735 1.65214 42.174H0.428288C0.428288 46.3145 3.97209 49.6119 8.26822 49.6119V48.3881ZM1.65214 42.174V29.1645H0.428288V42.174H1.65214ZM1.64843 29.0972C1.62467 28.8824 1.61193 28.665 1.61193 28.4459H0.388085C0.388085 28.7124 0.403576 28.9748 0.431997 29.2318L1.64843 29.0972ZM1.61193 28.4449C1.61155 28.221 1.62394 28.0001 1.64834 27.7821L0.432085 27.646C0.402599 27.9094 0.387617 28.1765 0.388085 28.447L1.61193 28.4449ZM1.65214 27.7141V7.82645H0.428288V27.7141H1.65214ZM1.65214 7.82645C1.65214 4.42682 4.58109 1.61193 8.26822 1.61193V0.388075C3.97204 0.388075 0.428288 3.68592 0.428288 7.82645H1.65214ZM8.26822 1.61193H22.8119V0.388075H8.26822V1.61193ZM22.8119 1.61193C32.5069 1.61193 40.3346 9.05321 40.3346 18.1261H41.5584C41.5584 8.31226 33.1159 0.388075 22.8119 0.388075V1.61193ZM40.3346 18.1261C40.3346 26.7525 33.1898 34.0175 24.0027 34.6015L24.0804 35.8229C33.8521 35.2017 41.5584 27.4566 41.5584 18.1261H40.3346ZM24.0017 34.6016C23.6124 34.6269 23.2104 34.6399 22.8119 34.6399V35.8637C23.2363 35.8637 23.6649 35.85 24.0813 35.8228L24.0017 34.6016ZM22.8113 34.6399L15.4957 34.6467L15.4968 35.8706L22.8125 35.8637L22.8113 34.6399ZM14.8843 35.2587V42.174H16.1082V35.2587H14.8843ZM14.8843 42.174C14.8843 45.5736 11.9558 48.3881 8.26822 48.3881V49.6119C12.5648 49.6119 16.1082 46.3145 16.1082 42.174H14.8843Z" fill="#368BD6"/>
|
||||
<path d="M8.26823 42.174V7.82642H22.8119C28.8351 7.82642 33.7181 12.4378 33.7181 18.1261C33.7181 23.5784 29.232 28.0412 23.5561 28.4019C23.3098 28.4176 23.0621 28.4257 22.8119 28.4257L8.22803 28.4395" stroke="#368BD6" stroke-width="1.22385" stroke-linecap="round"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.4227 9.0113C15.758 7.21673 15.3325 5.4048 14.2243 3.91155C11.9366 0.828522 7.41753 0.0768486 4.15037 2.23574C2.56747 3.28105 1.51106 4.84579 1.17575 6.64116C0.84001 8.43653 1.26557 10.2481 2.37372 11.7413C4.66146 14.8243 9.18092 15.576 12.4481 13.4171C14.0306 12.3714 15.087 10.8071 15.4227 9.0113ZM27.852 46.0868C29.2587 47.9824 31.4998 48.9962 33.7777 48.9962C35.21 48.9962 36.6569 48.5951 37.9195 47.7594C41.1883 45.5965 41.9817 41.3397 39.6905 38.2522L29.4751 24.4846C27.1843 21.3972 22.6769 20.6475 19.408 22.8121C16.1392 24.975 15.3458 29.2318 17.6365 32.3192L27.852 46.0868Z" fill="#368BD6"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.1 KiB |
BIN
res/vector-icons/1024.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
res/vector-icons/120.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
res/vector-icons/1240x600.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
res/vector-icons/150.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
res/vector-icons/152.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
res/vector-icons/180.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
BIN
res/vector-icons/24.png
Normal file
|
After Width: | Height: | Size: 651 B |
BIN
res/vector-icons/300.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 20 KiB |
BIN
res/vector-icons/44.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
BIN
res/vector-icons/50.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
BIN
res/vector-icons/620x300.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
BIN
res/vector-icons/76.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
res/vector-icons/88.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 802 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
BIN
res/vector-icons/apple-touch-icon-114.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
BIN
res/vector-icons/apple-touch-icon-120.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
BIN
res/vector-icons/apple-touch-icon-144.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
BIN
res/vector-icons/apple-touch-icon-152.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
BIN
res/vector-icons/apple-touch-icon-180.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
BIN
res/vector-icons/apple-touch-icon-57.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
BIN
res/vector-icons/apple-touch-icon-60.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
BIN
res/vector-icons/apple-touch-icon-72.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
BIN
res/vector-icons/apple-touch-icon-76.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 22 KiB |
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/vector-icons/mstile-70x70.png"/>
|
||||
<square150x150logo src="/vector-icons/mstile-150x150.png"/>
|
||||
<square310x310logo src="/vector-icons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="/vector-icons/mstile-310x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/vector-icons/mstile-70.png"/>
|
||||
<square150x150logo src="/vector-icons/mstile-150.png"/>
|
||||
<square310x310logo src="/vector-icons/mstile-310.png"/>
|
||||
<wide310x150logo src="/vector-icons/mstile-310x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
||||
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 744 B |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
BIN
res/vector-icons/mstile-150.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
BIN
res/vector-icons/mstile-300x150.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
res/vector-icons/mstile-310.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
BIN
res/vector-icons/mstile-70.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
@@ -96,19 +96,10 @@ h1::after {
|
||||
color: #2e2f32 !important;
|
||||
}
|
||||
|
||||
.mx_ButtonHeadline {
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.mx_ButtonLabel {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.mx_ButtonWrapperText {
|
||||
font-size: 13px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.mx_Header_title {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
@@ -158,13 +149,30 @@ we don't have an account and should hide them. No account == no guest account ei
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mx_ButtonRow.mx_WelcomePage_guestFunctions {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.mx_ButtonRow.mx_WelcomePage_guestFunctions > div {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 480px) {
|
||||
.mx_ButtonRow {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.mx_ButtonRow > * {
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="mx_Parent">
|
||||
<a href="https://riot.im" target="_blank" rel="noopener">
|
||||
<img src="welcome/images/logo.svg" alt="" class="mx_Logo"/>
|
||||
</a>
|
||||
<h1 class="mx_Header_title">_t("Welcome to Riot.im")</h1>
|
||||
<h1 class="mx_Header_title">_t("Welcome to Element")</h1>
|
||||
<h4 class="mx_Header_subtitle">_t("Decentralised, encrypted chat & collaboration powered by [matrix]")</h4>
|
||||
<div class="mx_ButtonGroup">
|
||||
<div class="mx_ButtonRow">
|
||||
@@ -182,15 +190,8 @@ we don't have an account and should hide them. No account == no guest account ei
|
||||
<!-- BEGIN Ansible: Remove these lines when guest access is disabled -->
|
||||
<div class="mx_ButtonRow mx_WelcomePage_guestFunctions">
|
||||
<div>
|
||||
<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>
|
||||
</div>
|
||||
<div>
|
||||
<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>
|
||||
<div class="mx_ButtonLabel">_t("Explore rooms")</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -10,7 +10,7 @@
|
||||
"https://scalar-staging.vector.im/api",
|
||||
"https://scalar-staging.riot.im/scalar/api"
|
||||
],
|
||||
"hosting_signup_link": "https://modular.im/?utm_source=riot-web&utm_medium=web",
|
||||
"hosting_signup_link": "https://modular.im/services/matrix-hosting-riot?utm_source=riot-web&utm_medium=web",
|
||||
"bug_report_endpoint_url": "https://riot.im/bugreports/submit",
|
||||
"features": {
|
||||
},
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
"https://scalar-staging.vector.im/api",
|
||||
"https://scalar-staging.riot.im/scalar/api"
|
||||
],
|
||||
"hosting_signup_link": "https://modular.im/?utm_source=riot-web&utm_medium=web",
|
||||
"hosting_signup_link": "https://modular.im/services/matrix-hosting-riot?utm_source=riot-web&utm_medium=web",
|
||||
"bug_report_endpoint_url": "https://riot.im/bugreports/submit",
|
||||
"features": {
|
||||
"feature_new_spinner": "labs",
|
||||
"feature_font_scaling": "labs",
|
||||
"feature_pinning": "labs",
|
||||
"feature_custom_status": "labs",
|
||||
"feature_custom_tags": "labs",
|
||||
@@ -22,7 +24,8 @@
|
||||
"feature_dm_verification": "labs",
|
||||
"feature_bridge_state": "labs",
|
||||
"feature_presence_in_room_list": "labs",
|
||||
"feature_custom_themes": "labs"
|
||||
"feature_custom_themes": "labs",
|
||||
"feature_new_room_list": "labs"
|
||||
},
|
||||
"piwik": {
|
||||
"url": "https://piwik.riot.im/",
|
||||
|
||||
@@ -1,170 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 -v <version> -d <config directory> [-n]"
|
||||
echo
|
||||
echo "version: commit-ish to check out and build"
|
||||
echo "config directory: a path to a directory containing"
|
||||
echo "config.json, a json config file to ship with the build"
|
||||
echo "and env.sh, a file to source environment variables"
|
||||
echo "from."
|
||||
echo "-n: build with no config file."
|
||||
echo
|
||||
echo "The update_base_url value from config.json is used to set up auto-update."
|
||||
echo
|
||||
echo "Environment variables:"
|
||||
echo " OSSLSIGNCODE_SIGNARGS: Arguments to pass to osslsigncode when signing"
|
||||
echo " NOTARIZE_APPLE_ID: Apple ID to use for notarisation. The password for"
|
||||
echo " this account must be set in NOTARIZE_CREDS in the keychain."
|
||||
}
|
||||
|
||||
confdir=
|
||||
version=
|
||||
skipcfg=0
|
||||
while getopts "d:v:n" opt; do
|
||||
case $opt in
|
||||
d)
|
||||
confdir=$OPTARG
|
||||
;;
|
||||
v)
|
||||
version=$OPTARG
|
||||
;;
|
||||
n)
|
||||
skipcfg=1
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
usage
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "$version" ]; then
|
||||
echo "No version supplied"
|
||||
usage
|
||||
exit
|
||||
fi
|
||||
|
||||
conffile="$confdir/config.json"
|
||||
|
||||
if [ -z "$conffile" ] && [ "$skipcfg" = 0 ]; then
|
||||
echo "No config file given. Use -c to supply a config file or"
|
||||
echo "-n to build with no config file (and no auto update)."
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -n "$conffile" ]; then
|
||||
update_base_url=`jq -r .update_base_url $conffile`
|
||||
|
||||
if [ -z "$update_base_url" ]; then
|
||||
echo "No update URL supplied. Use update_base_url: null if you really"
|
||||
echo "want a build with no auto-update."
|
||||
usage
|
||||
exit
|
||||
fi
|
||||
# Make sure the base URL ends in a slash if it doesn't already
|
||||
update_base_url=`echo $update_base_url | sed -e 's#\([^\/]\)$#\1\/#'`
|
||||
fi
|
||||
|
||||
if [ ! -f package.json ]; then
|
||||
echo "No package.json found. This script must be run from"
|
||||
echo "the riot-web directory."
|
||||
exit
|
||||
fi
|
||||
|
||||
[ -f "$confdir/env.sh" ] && . "$confdir/env.sh"
|
||||
|
||||
if [ -z "$NOTARIZE_APPLE_ID" ]; then
|
||||
echo "NOTARIZE_APPLE_ID is not set"
|
||||
exit
|
||||
fi
|
||||
|
||||
osslsigncode -h 2> /dev/null
|
||||
if [ $? -ne 255 ]; then # osslsigncode exits with 255 after printing usage...
|
||||
echo "osslsigncode not found"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Test that altool can get its credentials for notarising the mac app
|
||||
xcrun altool -u "$NOTARIZE_APPLE_ID" -p '@keychain:NOTARIZE_CREDS' --list-apps || exit
|
||||
|
||||
# Get the token password: we'll need it later, but get it now so we fail early if it's not there
|
||||
token_password=`security find-generic-password -s riot_signing_token -w`
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "riot_signing_token not found in keychain"
|
||||
exit
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
echo "Building $version using Update base URL $update_base_url"
|
||||
|
||||
projdir=`pwd`
|
||||
builddir=`mktemp -d 2>/dev/null || mktemp -d -t 'buildtmp'`
|
||||
pushd "$builddir"
|
||||
|
||||
git clone "$projdir" .
|
||||
git checkout "$version"
|
||||
|
||||
# Figure out what version we're building
|
||||
vername=`jq -r .version package.json`
|
||||
|
||||
if [ -n "$conffile" ]; then
|
||||
popd
|
||||
cp "$conffile" "$builddir/"
|
||||
pushd "$builddir"
|
||||
fi
|
||||
|
||||
# We use Git branch / commit dependencies for some packages, and Yarn seems
|
||||
# to have a hard time getting that right. See also
|
||||
# https://github.com/yarnpkg/yarn/issues/4734. As a workaround, we clean the
|
||||
# global cache here to ensure we get the right thing.
|
||||
yarn cache clean
|
||||
yarn install
|
||||
yarn build:electron
|
||||
|
||||
popd
|
||||
|
||||
distdir="$builddir/electron_app/dist"
|
||||
pubdir="$projdir/electron_app/pub"
|
||||
rm -r "$pubdir" || true
|
||||
mkdir -p "$pubdir"
|
||||
rm -r "$projdir/electron_app/dist" || true
|
||||
mkdir -p "$projdir/electron_app/dist"
|
||||
|
||||
# Install packages: what the user downloads the first time,
|
||||
# (DMGs for mac, exe installer for windows)
|
||||
mkdir -p "$pubdir/install/macos"
|
||||
cp $distdir/*.dmg "$pubdir/install/macos/"
|
||||
|
||||
mkdir -p "$pubdir/install/win32/ia32/"
|
||||
cp $distdir/squirrel-windows-ia32/*.exe "$pubdir/install/win32/ia32/"
|
||||
|
||||
mkdir -p "$pubdir/install/win32/x64/"
|
||||
cp $distdir/squirrel-windows/*.exe "$pubdir/install/win32/x64/"
|
||||
|
||||
# Packages for auto-update
|
||||
mkdir -p "$pubdir/update/macos"
|
||||
cp $distdir/*-mac.zip "$pubdir/update/macos/"
|
||||
echo "$vername" > "$pubdir/update/macos/latest"
|
||||
|
||||
mkdir -p "$pubdir/update/win32/ia32/"
|
||||
cp $distdir/squirrel-windows-ia32/*.nupkg "$pubdir/update/win32/ia32/"
|
||||
cp $distdir/squirrel-windows-ia32/RELEASES "$pubdir/update/win32/ia32/"
|
||||
|
||||
mkdir -p "$pubdir/update/win32/x64/"
|
||||
cp $distdir/squirrel-windows/*.nupkg "$pubdir/update/win32/x64/"
|
||||
cp $distdir/squirrel-windows/RELEASES "$pubdir/update/win32/x64/"
|
||||
|
||||
# Move the deb to the main project dir's dist folder
|
||||
# (just the 64 bit one - the 32 bit one still gets built because
|
||||
# it's one arch argument for all platforms and we still want 32 bit
|
||||
# windows, but 32 bit linux is unsupported as of electron 4 and no
|
||||
# longer appears to work).
|
||||
cp $distdir/*_amd64.deb "$projdir/electron_app/dist/"
|
||||
|
||||
rm -rf "$builddir"
|
||||
|
||||
echo "$pubdir can now be hosted on your web server."
|
||||
echo "deb archives are in electron_app/dist/ - these should be added into your debian repository"
|
||||
@@ -1,30 +0,0 @@
|
||||
const { notarize } = require('electron-notarize');
|
||||
|
||||
exports.default = async function(context) {
|
||||
const { electronPlatformName, appOutDir } = context;
|
||||
|
||||
if (electronPlatformName === 'darwin') {
|
||||
const appName = context.packager.appInfo.productFilename;
|
||||
// We get the password from keychain. The keychain stores
|
||||
// user IDs too, but apparently altool can't get the user ID
|
||||
// from the keychain, so we need to get it from the environment.
|
||||
const userId = process.env.NOTARIZE_APPLE_ID;
|
||||
if (userId === undefined) {
|
||||
console.warn(
|
||||
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
|
||||
"! Skipping macOS notarisation. !\n" +
|
||||
"! User ID not found, set NOTARIZE_APPLE_ID. !\n" +
|
||||
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("Notarising macOS app. This may be some time.");
|
||||
return await notarize({
|
||||
appBundleId: 'im.riot.app',
|
||||
appPath: `${appOutDir}/${appName}.app`,
|
||||
appleId: userId,
|
||||
appleIdPassword: '@keychain:NOTARIZE_CREDS',
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,77 +0,0 @@
|
||||
const { exec, execFile } = require('child_process');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const shellescape = require('shell-escape');
|
||||
|
||||
exports.default = async function(options) {
|
||||
const inPath = options.path;
|
||||
const appOutDir = path.dirname(inPath);
|
||||
|
||||
// get the token passphrase from the keychain
|
||||
let tokenPassphrase;
|
||||
try {
|
||||
tokenPassphrase = await new Promise((resolve, reject) => {
|
||||
execFile(
|
||||
'security',
|
||||
['find-generic-password', '-s', 'riot_signing_token', '-w'],
|
||||
{},
|
||||
(err, stdout) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(stdout.trim());
|
||||
}
|
||||
},
|
||||
);
|
||||
});
|
||||
} catch (err) {
|
||||
console.warn(
|
||||
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
|
||||
"! Skipping Windows signing. !\n" +
|
||||
"! Signing token not found in keychain. !\n" +
|
||||
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
let cmdLine = 'osslsigncode sign ';
|
||||
if (process.env.OSSLSIGNCODE_SIGNARGS) {
|
||||
cmdLine += process.env.OSSLSIGNCODE_SIGNARGS + ' ';
|
||||
}
|
||||
const tmpFile = path.join(
|
||||
appOutDir,
|
||||
'tmp_' + Math.random().toString(36).substring(2, 15) + '.exe',
|
||||
);
|
||||
const args = [
|
||||
'-h', options.hash,
|
||||
'-pass', tokenPassphrase,
|
||||
'-in', inPath,
|
||||
'-out', tmpFile,
|
||||
];
|
||||
if (options.isNest) args.push('-nest');
|
||||
cmdLine += shellescape(args);
|
||||
|
||||
let signStdout;
|
||||
const signproc = exec(cmdLine, {}, (error, stdout) => {
|
||||
signStdout = stdout;
|
||||
});
|
||||
signproc.on('exit', (code) => {
|
||||
if (code !== 0) {
|
||||
console.log("Running", cmdLine);
|
||||
console.log(signStdout);
|
||||
console.error("osslsigncode failed with code " + code);
|
||||
reject("osslsigncode failed with code " + code);
|
||||
return;
|
||||
}
|
||||
fs.rename(tmpFile, inPath, (err) => {
|
||||
if (err) {
|
||||
console.error("Error renaming file", err);
|
||||
reject(err);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
19
src/@types/global.d.ts
vendored
@@ -24,5 +24,24 @@ declare global {
|
||||
|
||||
// electron-only
|
||||
ipcRenderer: any;
|
||||
|
||||
// opera-only
|
||||
opera: any;
|
||||
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/InstallTrigger
|
||||
InstallTrigger: any;
|
||||
}
|
||||
|
||||
interface Navigator {
|
||||
// PWA badging extensions https://w3c.github.io/badging/
|
||||
setAppBadge?(count: number): Promise<void>;
|
||||
clearAppBadge?(): Promise<void>;
|
||||
}
|
||||
}
|
||||
|
||||
// add method which is missing from the node typing
|
||||
declare module "url" {
|
||||
interface Url {
|
||||
format(): string;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ limitations under the License.
|
||||
|
||||
import * as React from "react";
|
||||
import { _t } from "matrix-react-sdk/src/languageHandler";
|
||||
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
|
||||
|
||||
// directly import the style here as this layer does not support rethemedex at this time so no matrix-react-sdk
|
||||
// scss variables will be accessible.
|
||||
@@ -26,11 +27,12 @@ interface IProps {
|
||||
}
|
||||
|
||||
const CompatibilityView: React.FC<IProps> = ({ onAccept }) => {
|
||||
const brand = SdkConfig.get().brand;
|
||||
return <div className="mx_ErrorView">
|
||||
<div className="mx_ErrorView_container">
|
||||
<div className="mx_HomePage_header">
|
||||
<span className="mx_HomePage_logo">
|
||||
<img height="42" src="themes/riot/img/logos/riot-logo.svg" alt="Riot" />
|
||||
<img height="42" src="themes/element/img/logos/element-logo.svg" alt="Element" />
|
||||
</span>
|
||||
<h1>{ _t("Unsupported browser") }</h1>
|
||||
</div>
|
||||
@@ -38,10 +40,12 @@ const CompatibilityView: React.FC<IProps> = ({ onAccept }) => {
|
||||
<div className="mx_HomePage_col">
|
||||
<div className="mx_HomePage_row">
|
||||
<div>
|
||||
<h2 id="step1_heading">{ _t("Your browser can't run Riot") }</h2>
|
||||
<h2 id="step1_heading">{ _t("Your browser can't run %(brand)s", { brand }) }</h2>
|
||||
<p>
|
||||
{ _t(
|
||||
"Riot uses advanced browser features which aren't supported by your current browser.",
|
||||
"%(brand)s uses advanced browser features which aren't " +
|
||||
"supported by your current browser.",
|
||||
{ brand },
|
||||
) }
|
||||
</p>
|
||||
<p>
|
||||
@@ -72,20 +76,20 @@ const CompatibilityView: React.FC<IProps> = ({ onAccept }) => {
|
||||
<div className="mx_HomePage_col">
|
||||
<div className="mx_HomePage_row">
|
||||
<div>
|
||||
<h2 id="step2_heading">Use Riot on mobile</h2>
|
||||
<h2 id="step2_heading">Use Element on mobile</h2>
|
||||
<p><strong>iOS</strong> (iPhone or iPad)</p>
|
||||
<a href="https://itunes.apple.com/app/riot-im/id1083446067?mt=8" target="_blank"
|
||||
className="mx_ClearDecoration">
|
||||
<img height="48" src="themes/riot/img/download/apple.svg" alt="Apple App Store" />
|
||||
<img height="48" src="themes/element/img/download/apple.svg" alt="Apple App Store" />
|
||||
</a>
|
||||
<p className="mx_Spacer"><strong>Android</strong></p>
|
||||
<a href="https://play.google.com/store/apps/details?id=im.vector.app" target="_blank"
|
||||
className="mx_ClearDecoration">
|
||||
<img height="48" src="themes/riot/img/download/google.svg" alt="Google Play Store" />
|
||||
<img height="48" src="themes/element/img/download/google.svg" alt="Google Play Store" />
|
||||
</a>
|
||||
<a href="https://f-droid.org/repository/browse/?fdid=im.vector.alpha" target="_blank"
|
||||
className="mx_ClearDecoration">
|
||||
<img height="48" src="themes/riot/img/download/fdroid.svg" alt="F-Droid" />
|
||||
<img height="48" src="themes/element/img/download/fdroid.svg" alt="F-Droid" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -93,8 +97,8 @@ const CompatibilityView: React.FC<IProps> = ({ onAccept }) => {
|
||||
|
||||
<div className="mx_HomePage_row mx_Center mx_Spacer">
|
||||
<p className="mx_Spacer">
|
||||
<a href="https://riot.im" target="_blank" className="mx_FooterLink">
|
||||
{ _t("Go to Riot.im") }
|
||||
<a href="https://element.io" target="_blank" className="mx_FooterLink">
|
||||
{ _t("Go to element.io") }
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -32,7 +32,7 @@ const ErrorView: React.FC<IProps> = ({title, messages}) => {
|
||||
<div className="mx_ErrorView_container">
|
||||
<div className="mx_HomePage_header">
|
||||
<span className="mx_HomePage_logo">
|
||||
<img height="42" src="themes/riot/img/logos/riot-logo.svg" alt="Riot" />
|
||||
<img height="42" src="themes/element/img/logos/element-logo.svg" alt="Element" />
|
||||
</span>
|
||||
<h1>{ _t("Failed to start") }</h1>
|
||||
</div>
|
||||
@@ -48,8 +48,8 @@ const ErrorView: React.FC<IProps> = ({title, messages}) => {
|
||||
</div>
|
||||
<div className="mx_HomePage_row mx_Center mx_Spacer">
|
||||
<p className="mx_Spacer">
|
||||
<a href="https://riot.im" target="_blank" className="mx_FooterLink">
|
||||
{ _t("Go to Riot.im") }
|
||||
<a href="https://element.io" target="_blank" className="mx_FooterLink">
|
||||
{ _t("Go to element.io") }
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -25,7 +25,7 @@ import { _t } from 'matrix-react-sdk/src/languageHandler';
|
||||
export default class VectorEmbeddedPage extends EmbeddedPage {
|
||||
static replaces = 'EmbeddedPage';
|
||||
|
||||
// we're overriding the base component here, for Riot-specific tweaks
|
||||
// we're overriding the base component here, for Element-specific tweaks
|
||||
translate(s) {
|
||||
s = sanitizeHtml(_t(s));
|
||||
// ugly fix for https://github.com/vector-im/riot-web/issues/4243
|
||||
|
||||