Compare commits
744 Commits
release-v1
...
travis/inl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6fd28421b3 | ||
|
|
e13cb66e32 | ||
|
|
ba28c6d57a | ||
|
|
36789fbd65 | ||
|
|
1c7828e7c2 | ||
|
|
597c18932b | ||
|
|
84b21576bd | ||
|
|
0c14e45d65 | ||
|
|
9789f411d0 | ||
|
|
127683e98a | ||
|
|
b7e9da9e40 | ||
|
|
8aba3cf437 | ||
|
|
bb10b7ad48 | ||
|
|
101e0592fe | ||
|
|
c10e8984e7 | ||
|
|
52e54b408f | ||
|
|
779a4912d5 | ||
|
|
cc81cc714c | ||
|
|
e2ce4239bd | ||
|
|
b8b13a6316 | ||
|
|
1c7cf8645e | ||
|
|
d9627cbe67 | ||
|
|
134618f4cd | ||
|
|
c191eb5462 | ||
|
|
dccbb79340 | ||
|
|
a67b2329ba | ||
|
|
4b092d49c6 | ||
|
|
49d103aab6 | ||
|
|
6afd289bcb | ||
|
|
4fc499b9e3 | ||
|
|
0469805eb1 | ||
|
|
df2654f94a | ||
|
|
3da0957859 | ||
|
|
5056e14060 | ||
|
|
655c7a9b29 | ||
|
|
bd60faec1f | ||
|
|
6b40714d80 | ||
|
|
f4e98baf16 | ||
|
|
53e8f5d3ff | ||
|
|
b910fcd38a | ||
|
|
4f0fccfe96 | ||
|
|
86d7652d93 | ||
|
|
c745991a9a | ||
|
|
0f7a42258c | ||
|
|
c7bb6b2272 | ||
|
|
b0bc4b2816 | ||
|
|
3586142d69 | ||
|
|
06798f3030 | ||
|
|
594c07b2d9 | ||
|
|
f94f97d83a | ||
|
|
799f60c0ee | ||
|
|
06af1f056f | ||
|
|
621e09ebbc | ||
|
|
8a0ed198e6 | ||
|
|
322cdb1bec | ||
|
|
8fadfb0a57 | ||
|
|
5417d70340 | ||
|
|
a9850008cf | ||
|
|
83f28d465b | ||
|
|
f0a8f166c9 | ||
|
|
f941169da3 | ||
|
|
4f13b707bb | ||
|
|
aff0c9823e | ||
|
|
c3c1a5da8d | ||
|
|
d35d6f253b | ||
|
|
29fb984062 | ||
|
|
6c3530d249 | ||
|
|
d63f5a2282 | ||
|
|
2b7dbb4fce | ||
|
|
aaecbab4b9 | ||
|
|
220ee62d38 | ||
|
|
8cf2ab436d | ||
|
|
4961037dbe | ||
|
|
5f15ee4ea5 | ||
|
|
9953bc3b22 | ||
|
|
29fd47d611 | ||
|
|
e18bf6be86 | ||
|
|
7562fd3703 | ||
|
|
57f0d5191d | ||
|
|
dd0e2e52f8 | ||
|
|
2e00314dc0 | ||
|
|
afb469ce42 | ||
|
|
31ec953a92 | ||
|
|
94a5cd3f83 | ||
|
|
c67951f254 | ||
|
|
aface37853 | ||
|
|
46af8ba17a | ||
|
|
beb922cbfa | ||
|
|
19a07bc4a2 | ||
|
|
438eef0acd | ||
|
|
e15d1c1501 | ||
|
|
92a5787528 | ||
|
|
af2da9d371 | ||
|
|
68c36ebb49 | ||
|
|
c4c1b728cc | ||
|
|
402f97b430 | ||
|
|
f998f85c3c | ||
|
|
78d6ad8f29 | ||
|
|
72e60efadc | ||
|
|
e91e513224 | ||
|
|
a500240d04 | ||
|
|
3e57378631 | ||
|
|
42e2ea877a | ||
|
|
2332cecb59 | ||
|
|
27a92a5c89 | ||
|
|
4ce13765f7 | ||
|
|
e562c54ddc | ||
|
|
993c2e50b5 | ||
|
|
11cc33c8d2 | ||
|
|
9f4d75f2ed | ||
|
|
52f469d7c9 | ||
|
|
29639bb0e6 | ||
|
|
0d4958319b | ||
|
|
dfd17fedfe | ||
|
|
cfadc616b2 | ||
|
|
816ea3d904 | ||
|
|
cefe8cf379 | ||
|
|
4acdb7c715 | ||
|
|
105d1c8c41 | ||
|
|
4f852f3d69 | ||
|
|
1b276c9e00 | ||
|
|
fb67a14486 | ||
|
|
ab828ac6d9 | ||
|
|
b22484d203 | ||
|
|
ff9df5dd1f | ||
|
|
5523d7e0f5 | ||
|
|
f2bb636373 | ||
|
|
b617cb78e7 | ||
|
|
c6e94c61db | ||
|
|
9a32dd7071 | ||
|
|
8d604ced78 | ||
|
|
56caad3ef2 | ||
|
|
0bce2de538 | ||
|
|
7c8ecaaca3 | ||
|
|
db0897f78e | ||
|
|
a34361fcd7 | ||
|
|
d2c161b451 | ||
|
|
93f1cb6ecb | ||
|
|
1f71eb1b33 | ||
|
|
92d63579af | ||
|
|
59f82eaf0a | ||
|
|
50adc958c3 | ||
|
|
173ca66f29 | ||
|
|
ade9babb80 | ||
|
|
d4627576c8 | ||
|
|
49d3d5dffe | ||
|
|
341c806ac1 | ||
|
|
2f9395e4a4 | ||
|
|
4b25054d92 | ||
|
|
e010e27f9d | ||
|
|
e31051e5ea | ||
|
|
3d47540846 | ||
|
|
d5a824d6dd | ||
|
|
75f6c017c1 | ||
|
|
8f0537f9a3 | ||
|
|
024549cef4 | ||
|
|
5af530c24e | ||
|
|
8cb5e47ee7 | ||
|
|
313e82ac2d | ||
|
|
9133b80f2b | ||
|
|
97925a6ad9 | ||
|
|
e40fa8823a | ||
|
|
bf5a69d3a0 | ||
|
|
4517e6512e | ||
|
|
86310a4de0 | ||
|
|
8140a9618e | ||
|
|
0f3623393f | ||
|
|
c34a36a9e2 | ||
|
|
d03edb91ea | ||
|
|
ab0677530b | ||
|
|
e7c722bb99 | ||
|
|
48613027fc | ||
|
|
d47948fb7b | ||
|
|
a47be2236b | ||
|
|
49b2f37dc8 | ||
|
|
089afaad93 | ||
|
|
86b0f898ec | ||
|
|
e66d500b02 | ||
|
|
9a1b667c27 | ||
|
|
b04f76dc27 | ||
|
|
cd8a9e44b3 | ||
|
|
5052f9bc43 | ||
|
|
c4c51945f0 | ||
|
|
4ab84d3b59 | ||
|
|
851d8e4265 | ||
|
|
151c365fd8 | ||
|
|
f728189445 | ||
|
|
b2a93c3b64 | ||
|
|
adac68ed13 | ||
|
|
342d0474fd | ||
|
|
f8b9958010 | ||
|
|
2a0a9c5f9e | ||
|
|
18c5d9a3a9 | ||
|
|
40f2ba8205 | ||
|
|
ec3b2c99e2 | ||
|
|
065fb13a56 | ||
|
|
5cb323feed | ||
|
|
12e2200b11 | ||
|
|
0aa6fbe3e2 | ||
|
|
51361acb1a | ||
|
|
c0bfc4eeb3 | ||
|
|
953b4675e0 | ||
|
|
a72ab0da04 | ||
|
|
cdc97a220a | ||
|
|
668abba95a | ||
|
|
042ce153ae | ||
|
|
2ff3f2d577 | ||
|
|
c5217b6d6d | ||
|
|
fff8ac231e | ||
|
|
0f126d88ec | ||
|
|
b0fc8572ad | ||
|
|
1da652ede3 | ||
|
|
532caff989 | ||
|
|
238ed786fd | ||
|
|
3275a0d819 | ||
|
|
a9abad3cfd | ||
|
|
4c574d63db | ||
|
|
8c98921842 | ||
|
|
92e55ac1c1 | ||
|
|
8bdbb5c989 | ||
|
|
2040ea2b82 | ||
|
|
0bbcda09af | ||
|
|
e077d9ca5f | ||
|
|
87e67d8168 | ||
|
|
0e14dc06fb | ||
|
|
58eca1aa7d | ||
|
|
f31b3c1c18 | ||
|
|
50fe0d26e5 | ||
|
|
21cadb8a3b | ||
|
|
1fe8f27cf7 | ||
|
|
dd5f9f4978 | ||
|
|
66145fca93 | ||
|
|
3cd5ad910d | ||
|
|
c4531585cb | ||
|
|
ecd8e627f2 | ||
|
|
96e097ebcb | ||
|
|
9bb657ada5 | ||
|
|
32e953a5a6 | ||
|
|
66080b5751 | ||
|
|
a728961631 | ||
|
|
1c51100c6c | ||
|
|
b302e14554 | ||
|
|
77482432c9 | ||
|
|
a5f7d75999 | ||
|
|
35d1c0d980 | ||
|
|
482c1b4db1 | ||
|
|
750082c37d | ||
|
|
852b7d0b89 | ||
|
|
b4c8cd5a4a | ||
|
|
3dc3d4a8d4 | ||
|
|
a7a70c2246 | ||
|
|
c395061a3d | ||
|
|
625e001592 | ||
|
|
2861089193 | ||
|
|
872a7d9699 | ||
|
|
554a9de7c7 | ||
|
|
5a5b820fe5 | ||
|
|
463de7f689 | ||
|
|
8ba51df384 | ||
|
|
e31b8ce85e | ||
|
|
a68306777d | ||
|
|
48884c711b | ||
|
|
799a14ebc6 | ||
|
|
6a84aa9403 | ||
|
|
d5325e203d | ||
|
|
e097a24afb | ||
|
|
567a4a6a1c | ||
|
|
0d6f4794d0 | ||
|
|
e1357879f0 | ||
|
|
b43d6536f5 | ||
|
|
e0e29996e0 | ||
|
|
9b119e3bc3 | ||
|
|
8c02abc88a | ||
|
|
7da72b219b | ||
|
|
2918ee3e1b | ||
|
|
edd85ad9e3 | ||
|
|
bf4df74c69 | ||
|
|
d8408933f1 | ||
|
|
ea498d663e | ||
|
|
b495af97e9 | ||
|
|
c667473258 | ||
|
|
ec781b3ebe | ||
|
|
c2e25fa427 | ||
|
|
02ffbd6f32 | ||
|
|
c41f164c75 | ||
|
|
d0b9b211c9 | ||
|
|
ed255e48f9 | ||
|
|
79303ec387 | ||
|
|
3360f02ed9 | ||
|
|
c4fa2d2585 | ||
|
|
c4545341ea | ||
|
|
ef839c45a7 | ||
|
|
9a8f9307fe | ||
|
|
a991156608 | ||
|
|
1b481c2a13 | ||
|
|
44fefec9ea | ||
|
|
110f4dc907 | ||
|
|
dab75ec0c2 | ||
|
|
c67906c3c6 | ||
|
|
aed9721936 | ||
|
|
344363d29d | ||
|
|
aef2ffb01b | ||
|
|
24cc106d90 | ||
|
|
ccc3038793 | ||
|
|
6844c8f92e | ||
|
|
a63bd875bc | ||
|
|
9084a70e2e | ||
|
|
1c63db6441 | ||
|
|
1a635f6bf0 | ||
|
|
ed05f9deae | ||
|
|
b4167eaeaf | ||
|
|
512212b021 | ||
|
|
d3b3bb42aa | ||
|
|
1c9d25986a | ||
|
|
a8a422105b | ||
|
|
078a1223b2 | ||
|
|
3419140bee | ||
|
|
13a5192995 | ||
|
|
7ae86af7df | ||
|
|
d8e0ea5791 | ||
|
|
11d54e926e | ||
|
|
301ea6a5f3 | ||
|
|
e743a12f30 | ||
|
|
8f409a8277 | ||
|
|
bb370f143c | ||
|
|
2d1d5e5066 | ||
|
|
354898376b | ||
|
|
899bcc067f | ||
|
|
58445efdde | ||
|
|
6e7826f416 | ||
|
|
f1e89bf833 | ||
|
|
d05c022d4f | ||
|
|
06611cb9cb | ||
|
|
64fd07ec73 | ||
|
|
deb40fe172 | ||
|
|
2ab0745063 | ||
|
|
278c81fbc6 | ||
|
|
7bdd2fd204 | ||
|
|
8d93991193 | ||
|
|
8c916721d2 | ||
|
|
40998b799a | ||
|
|
6583064cb4 | ||
|
|
6d251868a9 | ||
|
|
5b86aa3a7a | ||
|
|
4c1752e18c | ||
|
|
80e5c22065 | ||
|
|
9e2648877a | ||
|
|
19cc55f95d | ||
|
|
f5d35462e4 | ||
|
|
0c1a4c9a24 | ||
|
|
c1d3b46259 | ||
|
|
06355213ad | ||
|
|
ab95183e4f | ||
|
|
1e1a14c9a9 | ||
|
|
0ed6c550c2 | ||
|
|
cd20ff15b1 | ||
|
|
09bfe1a7e6 | ||
|
|
2b45efbdda | ||
|
|
b506d418ea | ||
|
|
a568f2ee02 | ||
|
|
ca73b06cc4 | ||
|
|
21b5eb722b | ||
|
|
b59cdaa741 | ||
|
|
2ea3e67a65 | ||
|
|
501f17a4ca | ||
|
|
f2b51848b7 | ||
|
|
893b874c10 | ||
|
|
ca312254d5 | ||
|
|
83b9adadd7 | ||
|
|
8d4ba9c02d | ||
|
|
c431177bda | ||
|
|
c8a3901633 | ||
|
|
cefe77befc | ||
|
|
fcb6444771 | ||
|
|
a12d617469 | ||
|
|
70bbeeee3b | ||
|
|
9baa3961aa | ||
|
|
f759c9b0a0 | ||
|
|
156752a220 | ||
|
|
b6dca76ad6 | ||
|
|
69bdb52c02 | ||
|
|
9c94f9f1ca | ||
|
|
f528301435 | ||
|
|
47c8c5507a | ||
|
|
5ae93b6916 | ||
|
|
90d86312e7 | ||
|
|
262b856813 | ||
|
|
a84925259f | ||
|
|
9c3325fb67 | ||
|
|
56761020bb | ||
|
|
6b31c14c97 | ||
|
|
67d82f2695 | ||
|
|
35327ff6a4 | ||
|
|
a3fdb1c2a2 | ||
|
|
98acd1b059 | ||
|
|
4bff37b16c | ||
|
|
098d8b154b | ||
|
|
cc7e64375d | ||
|
|
9d6bbef04e | ||
|
|
f821b7c8bb | ||
|
|
469df236d9 | ||
|
|
d64639c70a | ||
|
|
71206e8e3d | ||
|
|
ce44cbb2dc | ||
|
|
be1e4552aa | ||
|
|
d297ee5c7e | ||
|
|
b9a7531926 | ||
|
|
5de910a9eb | ||
|
|
dda3779ad8 | ||
|
|
0bdf979c46 | ||
|
|
7c895bd8c0 | ||
|
|
fe98a8b0c2 | ||
|
|
90d5c202c6 | ||
|
|
d8a7af0e7e | ||
|
|
7fe1acfd91 | ||
|
|
e9b7b36c87 | ||
|
|
6cef14e6cc | ||
|
|
212e4f831f | ||
|
|
059366f07a | ||
|
|
40384ffe42 | ||
|
|
5a9cc764c6 | ||
|
|
13330c5b8c | ||
|
|
beb98e9ebb | ||
|
|
9856978d0a | ||
|
|
d005d1f1c6 | ||
|
|
6f6c6d7b75 | ||
|
|
dae2f6c442 | ||
|
|
33c93e55c6 | ||
|
|
4d2e4d30ca | ||
|
|
6420120dd4 | ||
|
|
c5ba9de9c7 | ||
|
|
e391eea779 | ||
|
|
66a20f5356 | ||
|
|
36bd39fd21 | ||
|
|
78dd07cbfd | ||
|
|
ab5c00e8c4 | ||
|
|
a4e28cce88 | ||
|
|
68c4d005f1 | ||
|
|
588566cae7 | ||
|
|
847c15b2cd | ||
|
|
2716629642 | ||
|
|
74b0200337 | ||
|
|
593a56e2d7 | ||
|
|
55153ba7d2 | ||
|
|
2d97ff4eba | ||
|
|
ea4985819f | ||
|
|
231e87aca2 | ||
|
|
69c7d08941 | ||
|
|
06aa5a9aa9 | ||
|
|
0f76c858ac | ||
|
|
dfb1579625 | ||
|
|
94ffd69ce4 | ||
|
|
325ddbf5ca | ||
|
|
477886551d | ||
|
|
19ce3c99a0 | ||
|
|
b8662b43d8 | ||
|
|
44bf49d414 | ||
|
|
d1a6b656bc | ||
|
|
7f4f9b2cf1 | ||
|
|
e71180bf11 | ||
|
|
acca9005a9 | ||
|
|
4053d598f8 | ||
|
|
f37b63a6cb | ||
|
|
7793f07c81 | ||
|
|
8fd92b43ed | ||
|
|
c2a9157258 | ||
|
|
917a85ead9 | ||
|
|
3daec2a422 | ||
|
|
427328f934 | ||
|
|
0507cd2d90 | ||
|
|
5350c5e551 | ||
|
|
97314f2c9e | ||
|
|
f8e84c42ad | ||
|
|
fd2895eb40 | ||
|
|
dc73505c84 | ||
|
|
d4d1b957af | ||
|
|
04f95cc555 | ||
|
|
2d03ccfa57 | ||
|
|
ed86341ba5 | ||
|
|
4ee538117b | ||
|
|
3402236a0c | ||
|
|
89ce904ebb | ||
|
|
1dae7df28a | ||
|
|
c0143e58a2 | ||
|
|
75c9bad10d | ||
|
|
b5f114c157 | ||
|
|
27ff4e9488 | ||
|
|
54f92bd483 | ||
|
|
aeca2571e8 | ||
|
|
25eb587e3b | ||
|
|
ea059bbd7d | ||
|
|
06f434c313 | ||
|
|
07c0b20075 | ||
|
|
72aeb6ea5d | ||
|
|
520e6e5fef | ||
|
|
e710346fd6 | ||
|
|
49fd9f827d | ||
|
|
5fdeb23ca0 | ||
|
|
9700ff9083 | ||
|
|
7b209bdf9f | ||
|
|
910ab3583f | ||
|
|
5f353c4907 | ||
|
|
9cb823b210 | ||
|
|
947c6b2365 | ||
|
|
7b71db94e0 | ||
|
|
ad95d1fa64 | ||
|
|
cfee4c925a | ||
|
|
1edbe36547 | ||
|
|
87c42934ea | ||
|
|
daa755017e | ||
|
|
cdf9547220 | ||
|
|
408766366c | ||
|
|
7b93c56bd0 | ||
|
|
b29498bfae | ||
|
|
ca78985abc | ||
|
|
aa2f3918cc | ||
|
|
11e676cee0 | ||
|
|
0191d65bac | ||
|
|
8f1a641e6d | ||
|
|
7a2b103165 | ||
|
|
77c64fa03c | ||
|
|
184c37077b | ||
|
|
4753a49819 | ||
|
|
db08128954 | ||
|
|
1d06496bd1 | ||
|
|
48f71f26e7 | ||
|
|
7e404ace8c | ||
|
|
f54d265f90 | ||
|
|
fe535fc1e3 | ||
|
|
2a5b389053 | ||
|
|
991a1e743c | ||
|
|
c710cde50c | ||
|
|
05551219ac | ||
|
|
e0b05678e5 | ||
|
|
0564f4097b | ||
|
|
313489801d | ||
|
|
e65351073e | ||
|
|
8892ad9bb0 | ||
|
|
c9733c568e | ||
|
|
d8dea01ae5 | ||
|
|
8414dbdb99 | ||
|
|
4b137b639e | ||
|
|
53c5626bc8 | ||
|
|
3c13a5c6c6 | ||
|
|
f703124895 | ||
|
|
10d6fbaef7 | ||
|
|
92382e11ef | ||
|
|
a3eaa9d7fa | ||
|
|
831c81fcd5 | ||
|
|
21329f17c9 | ||
|
|
d5d3bcfac3 | ||
|
|
b440a263bd | ||
|
|
513c7075ab | ||
|
|
9f6a9e101c | ||
|
|
407777539f | ||
|
|
64a0d5eca1 | ||
|
|
2d58f74c02 | ||
|
|
6295ca2b12 | ||
|
|
a1ec01cd08 | ||
|
|
79ba7ab67e | ||
|
|
050b7ad961 | ||
|
|
9be700afa4 | ||
|
|
c56368cdbb | ||
|
|
15a8ee6663 | ||
|
|
d42e5ea1d8 | ||
|
|
20c6e6dd73 | ||
|
|
b8b5c30eb6 | ||
|
|
7d3ccb6242 | ||
|
|
7ef0702df4 | ||
|
|
a1e6b019d2 | ||
|
|
97afe18310 | ||
|
|
736c575f1b | ||
|
|
aa9b517664 | ||
|
|
984f5ac901 | ||
|
|
6a89776404 | ||
|
|
11600238ed | ||
|
|
802829f0ea | ||
|
|
a42eb0ce42 | ||
|
|
4d84df11c4 | ||
|
|
191fd2fb2d | ||
|
|
0f7a207c3e | ||
|
|
6c92e794f9 | ||
|
|
c114932da0 | ||
|
|
4eb5bb2bae | ||
|
|
82749c3de3 | ||
|
|
a40cc4fa3e | ||
|
|
c988988a70 | ||
|
|
b31bf6cfca | ||
|
|
c47532fe2a | ||
|
|
7b8010f23a | ||
|
|
14daccecfc | ||
|
|
b9b859dd28 | ||
|
|
477b7a362b | ||
|
|
7f6c2bbe44 | ||
|
|
63a5156fa0 | ||
|
|
3939a1dc1e | ||
|
|
b0de2d9108 | ||
|
|
6223d0742d | ||
|
|
7f327009bb | ||
|
|
df712626ca | ||
|
|
df48e3f359 | ||
|
|
9e7ff5e126 | ||
|
|
429e498b17 | ||
|
|
48a1c49b73 | ||
|
|
c7617c2538 | ||
|
|
465a2ce314 | ||
|
|
307f7c23e9 | ||
|
|
e409d61c6f | ||
|
|
76463e836e | ||
|
|
c364215d53 | ||
|
|
72d1950bea | ||
|
|
05d5e3f680 | ||
|
|
737fa7dca5 | ||
|
|
13ad72af50 | ||
|
|
ba1af283f6 | ||
|
|
88459b976c | ||
|
|
cad03d0c47 | ||
|
|
60fe779f42 | ||
|
|
8c31911677 | ||
|
|
40813a6b33 | ||
|
|
c76a5f2c52 | ||
|
|
85979079f1 | ||
|
|
fd11b12652 | ||
|
|
df5cb15cf9 | ||
|
|
82cfc751af | ||
|
|
62bfc35a8d | ||
|
|
2f4299e836 | ||
|
|
3d53908686 | ||
|
|
0eccd03a78 | ||
|
|
ebe0d2469e | ||
|
|
8b2560dbef | ||
|
|
451842f2bf | ||
|
|
6879addc7a | ||
|
|
cd392425a4 | ||
|
|
70febe3109 | ||
|
|
9ed26c66a6 | ||
|
|
6d124e6c28 | ||
|
|
c8a0d94b61 | ||
|
|
9f15bc2bbf | ||
|
|
4cd9560d21 | ||
|
|
c88ba8e212 | ||
|
|
f14bd05cfb | ||
|
|
d1aed25815 | ||
|
|
743c869055 | ||
|
|
a700502086 | ||
|
|
fa7eaedaa7 | ||
|
|
7262b372b3 | ||
|
|
6853cabca2 | ||
|
|
ac447fd318 | ||
|
|
cf448f1f0a | ||
|
|
ff2fe80537 | ||
|
|
2ad02e4feb | ||
|
|
fcdda7a956 | ||
|
|
eaa46d1794 | ||
|
|
0f633d922e | ||
|
|
5a5be814b6 | ||
|
|
bbfbef7f24 | ||
|
|
da0afeda9b | ||
|
|
7018a498a7 | ||
|
|
579650a1dd | ||
|
|
a7abd8599e | ||
|
|
3309b2ec55 | ||
|
|
151dd5709c | ||
|
|
21c862fe2b | ||
|
|
3b434a70d2 | ||
|
|
acfd7252bd | ||
|
|
4164df647c | ||
|
|
2205f0611e | ||
|
|
0410a6b3be | ||
|
|
8534328921 | ||
|
|
2fa8b0f8b2 | ||
|
|
69745bbd40 | ||
|
|
5108697ac8 | ||
|
|
e608c92506 | ||
|
|
e5a4092adc | ||
|
|
3ed750a9ab | ||
|
|
7f8326e245 | ||
|
|
a89661de44 | ||
|
|
9104a07324 | ||
|
|
a20b9c4c24 | ||
|
|
a09ab52be3 | ||
|
|
c71b8d61c4 | ||
|
|
7bdb8104dc | ||
|
|
ae8595690d | ||
|
|
23622db74b | ||
|
|
cbe0cd12af | ||
|
|
cb94a89411 | ||
|
|
4ad02dc202 | ||
|
|
5be2df1fb2 | ||
|
|
e6d4f09099 | ||
|
|
bc1cad01c4 | ||
|
|
669a5e6d01 | ||
|
|
172514f278 | ||
|
|
9163aee0fc | ||
|
|
de4550099e | ||
|
|
eda43aa488 | ||
|
|
66e073f599 | ||
|
|
71d32d1f7d | ||
|
|
46879e2976 | ||
|
|
a3b8c67e79 | ||
|
|
3800fe0c9b | ||
|
|
a329dd6669 | ||
|
|
b99b647538 | ||
|
|
a5fd3114c2 | ||
|
|
3d8fe4a9bc | ||
|
|
c1faa54102 | ||
|
|
c032067a30 | ||
|
|
77ee12ec77 | ||
|
|
85726c604e | ||
|
|
c038a9b443 | ||
|
|
8a8c684ef9 | ||
|
|
b4173f3e08 | ||
|
|
d9f4b7c5e7 | ||
|
|
01e0d5ed70 | ||
|
|
5f03004664 | ||
|
|
7435175a76 | ||
|
|
8cfb0a71a0 | ||
|
|
fa265e498f | ||
|
|
8b0eafe50f | ||
|
|
5b5f205892 | ||
|
|
c4fae201e9 | ||
|
|
48b994d87c | ||
|
|
46f2793563 | ||
|
|
2c952b422b | ||
|
|
3e924941c3 | ||
|
|
2a25c6aaa4 | ||
|
|
02e23e48b3 | ||
|
|
d969a96cd2 | ||
|
|
4a7c2318dd | ||
|
|
cc31d336dd | ||
|
|
730e3077c1 | ||
|
|
76a6aad354 | ||
|
|
c58a11c537 | ||
|
|
570eacc8e1 | ||
|
|
305570d8e3 | ||
|
|
993fd04353 | ||
|
|
6092bb3ae0 | ||
|
|
65f37665e4 | ||
|
|
02ca5011a3 | ||
|
|
b06de25898 | ||
|
|
62a152b68a | ||
|
|
fe831dc8dd | ||
|
|
7ff2b598af | ||
|
|
1b8fe9e782 |
@@ -8,7 +8,7 @@ module.exports = {
|
|||||||
"quotes": "off",
|
"quotes": "off",
|
||||||
},
|
},
|
||||||
"overrides": [{
|
"overrides": [{
|
||||||
"files": ["src/**/*.{ts, tsx}"],
|
"files": ["src/**/*.{ts,tsx}"],
|
||||||
"extends": ["matrix-org/ts", "matrix-org/react"],
|
"extends": ["matrix-org/ts", "matrix-org/react"],
|
||||||
"env": {
|
"env": {
|
||||||
"browser": true,
|
"browser": true,
|
||||||
|
|||||||
6
.github/ISSUE_TEMPLATE.md
vendored
6
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,3 +1,5 @@
|
|||||||
|
<!-- A picture's worth a thousand words: PLEASE INCLUDE A SCREENSHOT :P -->
|
||||||
|
|
||||||
<!-- Please report security issues by email to security@matrix.org -->
|
<!-- Please report security issues by email to security@matrix.org -->
|
||||||
|
|
||||||
<!-- This is a bug report template. By following the instructions below and
|
<!-- This is a bug report template. By following the instructions below and
|
||||||
@@ -36,9 +38,9 @@ file a bug here too! -->
|
|||||||
|
|
||||||
For the web app:
|
For the web app:
|
||||||
|
|
||||||
- **Browser**: Chrome, Safari, Firefox? which version?
|
- **Browser**: Chrome, Firefox, Safari, Edge? which version?
|
||||||
- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
|
- **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?
|
- **URL**: develop.element.io / app.element.io / somewhere else? If a private server, what version of Element Web?
|
||||||
|
|
||||||
For the desktop app:
|
For the desktop app:
|
||||||
|
|
||||||
|
|||||||
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -2,11 +2,13 @@
|
|||||||
name: Bug report
|
name: Bug report
|
||||||
about: Create a report to help us improve
|
about: Create a report to help us improve
|
||||||
title: ''
|
title: ''
|
||||||
labels: bug
|
labels: T-Defect
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- A picture's worth a thousand words: PLEASE INCLUDE A SCREENSHOT :P -->
|
||||||
|
|
||||||
<!-- Please report security issues by email to security@matrix.org -->
|
<!-- Please report security issues by email to security@matrix.org -->
|
||||||
|
|
||||||
<!-- This is a bug report template. By following the instructions below and
|
<!-- This is a bug report template. By following the instructions below and
|
||||||
@@ -46,9 +48,9 @@ Logs being sent: yes/no
|
|||||||
|
|
||||||
For the web app:
|
For the web app:
|
||||||
|
|
||||||
- **Browser**: Chrome, Safari, Firefox? which version?
|
- **Browser**: Chrome, Firefox, Safari, Edge? which version?
|
||||||
- **OS**: Windows, macOS, Ubuntu, Arch Linux, etc?
|
- **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?
|
- **URL**: develop.element.io / app.element.io / somewhere else? If a private server, what version of Element Web?
|
||||||
|
|
||||||
For the desktop app:
|
For the desktop app:
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name: Suggestion or Feature request
|
name: Suggestion or Feature request
|
||||||
about: Suggest an idea for this project
|
about: Suggest an idea for this project
|
||||||
title: ''
|
title: ''
|
||||||
labels: suggestion
|
labels: T-Enhancement
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
name: User Interface or Usability Bug report
|
|
||||||
about: Please include screenshots in UI/UX bug reports
|
|
||||||
title: ''
|
|
||||||
labels: bug, ui/ux
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- A picture's worth a thousand words: PLEASE INCLUDE A SCREENSHOT :P -->
|
|
||||||
|
|
||||||
<!-- 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.
|
|
||||||
|
|
||||||
<!-- Please send us logs for your bug report. They're very important for bugs
|
|
||||||
which are hard to reproduce. To do this, create this issue then go to your
|
|
||||||
account settings and click 'Submit Debug Logs' from the Help & About tab -->
|
|
||||||
Logs being sent: yes/no
|
|
||||||
|
|
||||||
<!-- 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**: 1.x.y <!-- check the user settings panel if unsure -->
|
|
||||||
@@ -19,7 +19,7 @@ module.exports = {
|
|||||||
"at-rule-no-unknown": null,
|
"at-rule-no-unknown": null,
|
||||||
"no-descending-specificity": null,
|
"no-descending-specificity": null,
|
||||||
"scss/at-rule-no-unknown": [true, {
|
"scss/at-rule-no-unknown": [true, {
|
||||||
// https://github.com/vector-im/riot-web/issues/10544
|
// https://github.com/vector-im/element-web/issues/10544
|
||||||
"ignoreAtRules": ["define-mixin"],
|
"ignoreAtRules": ["define-mixin"],
|
||||||
}],
|
}],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,3 +16,6 @@ include:
|
|||||||
|
|
||||||
* Alexandr Korsak (https://github.com/oivoodoo)
|
* Alexandr Korsak (https://github.com/oivoodoo)
|
||||||
Improved multiple file uploading
|
Improved multiple file uploading
|
||||||
|
|
||||||
|
* Thom Cleary (https://github.com/thomcatdotrocks)
|
||||||
|
Small update for tarball deployment
|
||||||
|
|||||||
483
CHANGELOG.md
483
CHANGELOG.md
@@ -1,3 +1,486 @@
|
|||||||
|
Changes in [1.7.23](https://github.com/vector-im/element-web/releases/tag/v1.7.23) (2021-03-15)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.23-rc.1...v1.7.23)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.16.0 and JS SDK 9.9.0
|
||||||
|
|
||||||
|
Changes in [1.7.23-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.23-rc.1) (2021-03-10)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.22...v1.7.23-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.16.0-rc.2 and JS SDK 9.9.0-rc.1
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#16655](https://github.com/vector-im/element-web/pull/16655)
|
||||||
|
* Improve docs for customisations
|
||||||
|
[\#16652](https://github.com/vector-im/element-web/pull/16652)
|
||||||
|
* Update triage guide to match the new label scheme
|
||||||
|
[\#16612](https://github.com/vector-im/element-web/pull/16612)
|
||||||
|
* Remove a couple useless 'use strict' calls
|
||||||
|
[\#16650](https://github.com/vector-im/element-web/pull/16650)
|
||||||
|
* Remove old conferencing doc
|
||||||
|
[\#16648](https://github.com/vector-im/element-web/pull/16648)
|
||||||
|
* Bump elliptic from 6.5.3 to 6.5.4
|
||||||
|
[\#16644](https://github.com/vector-im/element-web/pull/16644)
|
||||||
|
* Add option for audio live streaming
|
||||||
|
[\#16604](https://github.com/vector-im/element-web/pull/16604)
|
||||||
|
* Update velocity-animate dependency
|
||||||
|
[\#16605](https://github.com/vector-im/element-web/pull/16605)
|
||||||
|
* Add Edge to the supported tier
|
||||||
|
[\#16611](https://github.com/vector-im/element-web/pull/16611)
|
||||||
|
* Add multi language spell check
|
||||||
|
[\#15851](https://github.com/vector-im/element-web/pull/15851)
|
||||||
|
* Document feature_spaces
|
||||||
|
[\#16538](https://github.com/vector-im/element-web/pull/16538)
|
||||||
|
|
||||||
|
Changes in [1.7.22](https://github.com/vector-im/element-web/releases/tag/v1.7.22) (2021-03-01)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.22-rc.1...v1.7.22)
|
||||||
|
|
||||||
|
## Security notice
|
||||||
|
|
||||||
|
Element Web 1.7.22 fixes (by upgrading to matrix-react-sdk 3.15.0) a low
|
||||||
|
severity issue (CVE-2021-21320) where the user content sandbox can be abused to
|
||||||
|
trick users into opening unexpected documents. The content is opened with a
|
||||||
|
`blob` origin that cannot access Matrix user data, so messages and secrets are
|
||||||
|
not at risk. Thanks to @keerok for responsibly disclosing this via Matrix's
|
||||||
|
Security Disclosure Policy.
|
||||||
|
|
||||||
|
## All changes
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.15.0 and JS SDK 9.8.0
|
||||||
|
|
||||||
|
Changes in [1.7.22-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.22-rc.1) (2021-02-24)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.21...v1.7.22-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.15.0-rc.1 and JS SDK 9.8.0-rc.1
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#16529](https://github.com/vector-im/element-web/pull/16529)
|
||||||
|
* Add hostSignup config for element.io clients
|
||||||
|
[\#16515](https://github.com/vector-im/element-web/pull/16515)
|
||||||
|
* VoIP virtual rooms, mkII
|
||||||
|
[\#16442](https://github.com/vector-im/element-web/pull/16442)
|
||||||
|
* Jitsi widget: Read room name from query parameters
|
||||||
|
[\#16456](https://github.com/vector-im/element-web/pull/16456)
|
||||||
|
* fix / sso: make sure to delete only loginToken after redirect
|
||||||
|
[\#16415](https://github.com/vector-im/element-web/pull/16415)
|
||||||
|
* Disable Countly
|
||||||
|
[\#16433](https://github.com/vector-im/element-web/pull/16433)
|
||||||
|
|
||||||
|
Changes in [1.7.21](https://github.com/vector-im/element-web/releases/tag/v1.7.21) (2021-02-16)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.21-rc.1...v1.7.21)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.14.0 and JS SDK 9.7.0
|
||||||
|
|
||||||
|
Changes in [1.7.21-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.21-rc.1) (2021-02-10)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.20...v1.7.21-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.14.0-rc.1 and JS SDK 9.7.0-rc.1
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#16427](https://github.com/vector-im/element-web/pull/16427)
|
||||||
|
* Add RegExp dotAll feature test
|
||||||
|
[\#16408](https://github.com/vector-im/element-web/pull/16408)
|
||||||
|
* Fix Electron type merging
|
||||||
|
[\#16405](https://github.com/vector-im/element-web/pull/16405)
|
||||||
|
* README: remove Jenkins reference
|
||||||
|
[\#16381](https://github.com/vector-im/element-web/pull/16381)
|
||||||
|
* Enable PostCSS Calc in webpack builds
|
||||||
|
[\#16307](https://github.com/vector-im/element-web/pull/16307)
|
||||||
|
* Add configuration security best practices to the README.
|
||||||
|
[\#16367](https://github.com/vector-im/element-web/pull/16367)
|
||||||
|
* Upgrade matrix-widget-api
|
||||||
|
[\#16347](https://github.com/vector-im/element-web/pull/16347)
|
||||||
|
|
||||||
|
Changes in [1.7.20](https://github.com/vector-im/element-web/releases/tag/v1.7.20) (2021-02-04)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.19...v1.7.20)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.13.1
|
||||||
|
|
||||||
|
Changes in [1.7.19](https://github.com/vector-im/element-web/releases/tag/v1.7.19) (2021-02-03)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.19-rc.1...v1.7.19)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.13.0 and JS SDK 9.6.0
|
||||||
|
* [Release] Upgrade matrix-widget-api
|
||||||
|
[\#16348](https://github.com/vector-im/element-web/pull/16348)
|
||||||
|
|
||||||
|
Changes in [1.7.19-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.19-rc.1) (2021-01-29)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.18...v1.7.19-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.13.0-rc.1 and JS SDK 9.6.0-rc.1
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#16314](https://github.com/vector-im/element-web/pull/16314)
|
||||||
|
* Use history replaceState instead of redirect for SSO flow
|
||||||
|
[\#16292](https://github.com/vector-im/element-web/pull/16292)
|
||||||
|
* Document the mobile guide toast option
|
||||||
|
[\#16301](https://github.com/vector-im/element-web/pull/16301)
|
||||||
|
* Update widget-api to beta.12
|
||||||
|
[\#16303](https://github.com/vector-im/element-web/pull/16303)
|
||||||
|
* Upgrade deps 2021-01
|
||||||
|
[\#16294](https://github.com/vector-im/element-web/pull/16294)
|
||||||
|
* Move to newer base image for Docker builds
|
||||||
|
[\#16275](https://github.com/vector-im/element-web/pull/16275)
|
||||||
|
* Docs for the VoIP translate pattern option
|
||||||
|
[\#16236](https://github.com/vector-im/element-web/pull/16236)
|
||||||
|
* Fix Riot->Element in permalinkPrefix docs
|
||||||
|
[\#16227](https://github.com/vector-im/element-web/pull/16227)
|
||||||
|
* Supply server_name for optional federation-capable Jitsi auth
|
||||||
|
[\#16215](https://github.com/vector-im/element-web/pull/16215)
|
||||||
|
* Fix Widget API version confusion
|
||||||
|
[\#16212](https://github.com/vector-im/element-web/pull/16212)
|
||||||
|
* Add Hebrew language
|
||||||
|
[\#16210](https://github.com/vector-im/element-web/pull/16210)
|
||||||
|
* Update widget-api to beta 11
|
||||||
|
[\#16177](https://github.com/vector-im/element-web/pull/16177)
|
||||||
|
* Fix develop Docker builds
|
||||||
|
[\#16192](https://github.com/vector-im/element-web/pull/16192)
|
||||||
|
* Skip the service worker for Electron
|
||||||
|
[\#16157](https://github.com/vector-im/element-web/pull/16157)
|
||||||
|
* Use isolated IPC API
|
||||||
|
[\#16137](https://github.com/vector-im/element-web/pull/16137)
|
||||||
|
|
||||||
|
Changes in [1.7.18](https://github.com/vector-im/element-web/releases/tag/v1.7.18) (2021-01-26)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.17...v1.7.18)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.12.1 and JS SDK 9.5.1
|
||||||
|
|
||||||
|
Changes in [1.7.17](https://github.com/vector-im/element-web/releases/tag/v1.7.17) (2021-01-18)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.17-rc.1...v1.7.17)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.12.0 and JS SDK 9.5.0
|
||||||
|
|
||||||
|
Changes in [1.7.17-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.17-rc.1) (2021-01-13)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.16...v1.7.17-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.12.0-rc.1 and JS SDK 9.5.0-rc.1
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#16131](https://github.com/vector-im/element-web/pull/16131)
|
||||||
|
* webplatform: Fix notification closing
|
||||||
|
[\#16028](https://github.com/vector-im/element-web/pull/16028)
|
||||||
|
* Stop building code and types for Element layer
|
||||||
|
[\#15999](https://github.com/vector-im/element-web/pull/15999)
|
||||||
|
|
||||||
|
Changes in [1.7.16](https://github.com/vector-im/element-web/releases/tag/v1.7.16) (2020-12-21)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.16-rc.1...v1.7.16)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.11.1 and JS SDK 9.4.1
|
||||||
|
|
||||||
|
Changes in [1.7.16-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.16-rc.1) (2020-12-16)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.15...v1.7.16-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.11.0-rc.2 and JS SDK 9.4.0-rc.2
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#15979](https://github.com/vector-im/element-web/pull/15979)
|
||||||
|
* Bump ini from 1.3.5 to 1.3.7
|
||||||
|
[\#15949](https://github.com/vector-im/element-web/pull/15949)
|
||||||
|
* Document pull request previews
|
||||||
|
[\#15937](https://github.com/vector-im/element-web/pull/15937)
|
||||||
|
* Improve asset path for KaTeX fonts
|
||||||
|
[\#15939](https://github.com/vector-im/element-web/pull/15939)
|
||||||
|
* Fix an important semicolon
|
||||||
|
[\#15912](https://github.com/vector-im/element-web/pull/15912)
|
||||||
|
* Bump highlight.js from 10.1.2 to 10.4.1
|
||||||
|
[\#15898](https://github.com/vector-im/element-web/pull/15898)
|
||||||
|
* Add gitter.im to room directory
|
||||||
|
[\#15894](https://github.com/vector-im/element-web/pull/15894)
|
||||||
|
* Extend Platform to support idpId for SSO flows
|
||||||
|
[\#15771](https://github.com/vector-im/element-web/pull/15771)
|
||||||
|
* Include KaTeX CSS as a dependency
|
||||||
|
[\#15843](https://github.com/vector-im/element-web/pull/15843)
|
||||||
|
|
||||||
|
Changes in [1.7.15](https://github.com/vector-im/element-web/releases/tag/v1.7.15) (2020-12-07)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.15-rc.1...v1.7.15)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.10.0 and JS SDK 9.3.0
|
||||||
|
|
||||||
|
Changes in [1.7.15-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.15-rc.1) (2020-12-02)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.14...v1.7.15-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.10.0-rc.1 and JS SDK 9.3.0-rc.1
|
||||||
|
* Include KaTeX CSS as a dependency
|
||||||
|
[\#15843](https://github.com/vector-im/element-web/pull/15843)
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#15884](https://github.com/vector-im/element-web/pull/15884)
|
||||||
|
* added katex.min.css to webpack for math support (main PR in matrix-react-
|
||||||
|
sdk)
|
||||||
|
[\#15277](https://github.com/vector-im/element-web/pull/15277)
|
||||||
|
* Rebrand package name and other details
|
||||||
|
[\#15828](https://github.com/vector-im/element-web/pull/15828)
|
||||||
|
* Bump highlight.js from 9.18.1 to 10.1.2
|
||||||
|
[\#15819](https://github.com/vector-im/element-web/pull/15819)
|
||||||
|
* Update branding of packaging artifacts
|
||||||
|
[\#15810](https://github.com/vector-im/element-web/pull/15810)
|
||||||
|
* Update the react-sdk reference in the lockfile
|
||||||
|
[\#15814](https://github.com/vector-im/element-web/pull/15814)
|
||||||
|
* Update widget API for good measure in Element Web
|
||||||
|
[\#15812](https://github.com/vector-im/element-web/pull/15812)
|
||||||
|
* Stop publishing Element to NPM
|
||||||
|
[\#15811](https://github.com/vector-im/element-web/pull/15811)
|
||||||
|
* Add inotify instance limit info to README
|
||||||
|
[\#15795](https://github.com/vector-im/element-web/pull/15795)
|
||||||
|
|
||||||
|
Changes in [1.7.14](https://github.com/vector-im/element-web/releases/tag/v1.7.14) (2020-11-23)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.14-rc.1...v1.7.14)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.9.0 and JS SDK 9.2.0
|
||||||
|
|
||||||
|
Changes in [1.7.14-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.14-rc.1) (2020-11-18)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.13...v1.7.14-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.9.0-rc.1 and JS SDK 9.2.0-rc.1
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#15767](https://github.com/vector-im/element-web/pull/15767)
|
||||||
|
* Update the widget-api for element-web
|
||||||
|
[\#15717](https://github.com/vector-im/element-web/pull/15717)
|
||||||
|
|
||||||
|
Changes in [1.7.13](https://github.com/vector-im/element-web/releases/tag/v1.7.13) (2020-11-09)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.13-rc.1...v1.7.13)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.8.0 and JS SDK 9.1.0
|
||||||
|
|
||||||
|
Changes in [1.7.13-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.13-rc.1) (2020-11-04)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.12...v1.7.13-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.8.0-rc.1 and JS SDK 9.1.0-rc.1
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#15644](https://github.com/vector-im/element-web/pull/15644)
|
||||||
|
* Add countly experiment to develop/nightly configs
|
||||||
|
[\#15614](https://github.com/vector-im/element-web/pull/15614)
|
||||||
|
* Add documentation for new UIFeature flag regarding room history settings
|
||||||
|
[\#15592](https://github.com/vector-im/element-web/pull/15592)
|
||||||
|
* Rename Docker repo in docs
|
||||||
|
[\#15590](https://github.com/vector-im/element-web/pull/15590)
|
||||||
|
* Fix Jitsi regressions with custom themes
|
||||||
|
[\#15575](https://github.com/vector-im/element-web/pull/15575)
|
||||||
|
|
||||||
|
Changes in [1.7.12](https://github.com/vector-im/element-web/releases/tag/v1.7.12) (2020-10-28)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.11...v1.7.12)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.7.1 and JS SDK 9.0.1
|
||||||
|
* [Release] Fix Jitsi regressions with custom themes
|
||||||
|
[\#15577](https://github.com/vector-im/element-web/pull/15577)
|
||||||
|
|
||||||
|
Changes in [1.7.11](https://github.com/vector-im/element-web/releases/tag/v1.7.11) (2020-10-26)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.11-rc.1...v1.7.11)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.7.0 and JS SDK 9.0.0
|
||||||
|
|
||||||
|
Changes in [1.7.11-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.11-rc.1) (2020-10-21)
|
||||||
|
=========================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.10...v1.7.11-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.7.0-rc.2 and JS SDK 9.0.0-rc.1
|
||||||
|
* Update Weblate URL
|
||||||
|
[\#15516](https://github.com/vector-im/element-web/pull/15516)
|
||||||
|
* Translations update from Weblate
|
||||||
|
[\#15517](https://github.com/vector-im/element-web/pull/15517)
|
||||||
|
* Jitsi accept theme variable and restyle
|
||||||
|
[\#15499](https://github.com/vector-im/element-web/pull/15499)
|
||||||
|
* Skip editor confirmation of upgrades
|
||||||
|
[\#15506](https://github.com/vector-im/element-web/pull/15506)
|
||||||
|
* Adjust for new widget messaging APIs
|
||||||
|
[\#15495](https://github.com/vector-im/element-web/pull/15495)
|
||||||
|
* Use HTTPS_PROXY environment variable for downloading external_api.min…
|
||||||
|
[\#15479](https://github.com/vector-im/element-web/pull/15479)
|
||||||
|
* Document customisation points
|
||||||
|
[\#15475](https://github.com/vector-im/element-web/pull/15475)
|
||||||
|
* Don't fatally end the Jitsi widget when it's not being used as a widget
|
||||||
|
[\#15466](https://github.com/vector-im/element-web/pull/15466)
|
||||||
|
* electron-platform: Pass the user/devce id pair when initializing the event
|
||||||
|
index.
|
||||||
|
[\#15455](https://github.com/vector-im/element-web/pull/15455)
|
||||||
|
|
||||||
|
Changes in [1.7.10](https://github.com/vector-im/element-web/releases/tag/v1.7.10) (2020-10-20)
|
||||||
|
===============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.9...v1.7.10)
|
||||||
|
|
||||||
|
* [Release] Adjust for new widget messaging APIs
|
||||||
|
[\#15497](https://github.com/vector-im/element-web/pull/15497)
|
||||||
|
* Upgrade to React SDK 3.6.1
|
||||||
|
|
||||||
|
Changes in [1.7.9](https://github.com/vector-im/element-web/releases/tag/v1.7.9) (2020-10-12)
|
||||||
|
=============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.9-rc.1...v1.7.9)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.6.0 and JS SDK 8.5.0
|
||||||
|
|
||||||
|
Changes in [1.7.9-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.9-rc.1) (2020-10-07)
|
||||||
|
=======================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.8...v1.7.9-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.6.0-rc.1 and JS SDK 8.5.0-rc.1
|
||||||
|
* Update from Weblate
|
||||||
|
[\#15406](https://github.com/vector-im/element-web/pull/15406)
|
||||||
|
* Update Jest and JSDOM
|
||||||
|
[\#15402](https://github.com/vector-im/element-web/pull/15402)
|
||||||
|
* Add support for dehydration/fallback keys
|
||||||
|
[\#15398](https://github.com/vector-im/element-web/pull/15398)
|
||||||
|
* Remove riot-bot from sample config
|
||||||
|
[\#15376](https://github.com/vector-im/element-web/pull/15376)
|
||||||
|
* Switch to using the Widget API SDK for Jitsi widgets
|
||||||
|
[\#15102](https://github.com/vector-im/element-web/pull/15102)
|
||||||
|
* Remove workbox
|
||||||
|
[\#15352](https://github.com/vector-im/element-web/pull/15352)
|
||||||
|
* Disable workbox when running in webpack dev server, not in dev mode
|
||||||
|
[\#15345](https://github.com/vector-im/element-web/pull/15345)
|
||||||
|
* Update Riot -> Element in contribute.json
|
||||||
|
[\#15326](https://github.com/vector-im/element-web/pull/15326)
|
||||||
|
* Update Riot -> Element in redeploy.py
|
||||||
|
[\#15336](https://github.com/vector-im/element-web/pull/15336)
|
||||||
|
* Update Riot -> Element in docs/feature-flags.md
|
||||||
|
[\#15325](https://github.com/vector-im/element-web/pull/15325)
|
||||||
|
* Update Riot -> Element in element.io/README.md
|
||||||
|
[\#15327](https://github.com/vector-im/element-web/pull/15327)
|
||||||
|
* Update Riot -> Element in VectorAuthFooter
|
||||||
|
[\#15328](https://github.com/vector-im/element-web/pull/15328)
|
||||||
|
* Update Riot -> Element in VectorEmbeddedPage
|
||||||
|
[\#15329](https://github.com/vector-im/element-web/pull/15329)
|
||||||
|
* Update Riot -> Element in docs/review.md
|
||||||
|
[\#15330](https://github.com/vector-im/element-web/pull/15330)
|
||||||
|
* Update Riot -> Element in welcome.html
|
||||||
|
[\#15332](https://github.com/vector-im/element-web/pull/15332)
|
||||||
|
* Update Riot -> Element in issues-burndown.pl
|
||||||
|
[\#15333](https://github.com/vector-im/element-web/pull/15333)
|
||||||
|
* Update Riot -> Element in redeploy.py
|
||||||
|
[\#15334](https://github.com/vector-im/element-web/pull/15334)
|
||||||
|
* Update Riot -> Element in index.ts
|
||||||
|
[\#15335](https://github.com/vector-im/element-web/pull/15335)
|
||||||
|
* Update Riot -> Element Web in issue templates
|
||||||
|
[\#15324](https://github.com/vector-im/element-web/pull/15324)
|
||||||
|
* Give the Jitsi widget an icon to help with discovery
|
||||||
|
[\#15316](https://github.com/vector-im/element-web/pull/15316)
|
||||||
|
* Jitsi widget wrapper updates for hangup button
|
||||||
|
[\#15219](https://github.com/vector-im/element-web/pull/15219)
|
||||||
|
* Tidy up Service Worker, only run Workbox in production
|
||||||
|
[\#15271](https://github.com/vector-im/element-web/pull/15271)
|
||||||
|
* Remove conference handler
|
||||||
|
[\#15274](https://github.com/vector-im/element-web/pull/15274)
|
||||||
|
* Rebrand the webpack pipeline for Element
|
||||||
|
[\#15266](https://github.com/vector-im/element-web/pull/15266)
|
||||||
|
* Replace dummy sw.js with pre-caching and runtime-caching workbox SW
|
||||||
|
[\#15196](https://github.com/vector-im/element-web/pull/15196)
|
||||||
|
|
||||||
|
Changes in [1.7.8](https://github.com/vector-im/element-web/releases/tag/v1.7.8) (2020-09-28)
|
||||||
|
=============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.8-rc.1...v1.7.8)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.5.0 and JS SDK 8.4.1
|
||||||
|
|
||||||
|
Changes in [1.7.8-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.8-rc.1) (2020-09-23)
|
||||||
|
=======================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.7...v1.7.8-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.5.0-rc.1 and JS SDK 8.4.0-rc.1
|
||||||
|
* Update from Weblate
|
||||||
|
[\#15262](https://github.com/vector-im/element-web/pull/15262)
|
||||||
|
* Upgrade sanitize-html
|
||||||
|
[\#15260](https://github.com/vector-im/element-web/pull/15260)
|
||||||
|
* Document config for preferring Secure Backup setup methods
|
||||||
|
[\#15251](https://github.com/vector-im/element-web/pull/15251)
|
||||||
|
* Add end-user documentation for UI features
|
||||||
|
[\#15190](https://github.com/vector-im/element-web/pull/15190)
|
||||||
|
* Update git checkout instructions
|
||||||
|
[\#15218](https://github.com/vector-im/element-web/pull/15218)
|
||||||
|
* If no bug_report_endpoint_url, hide rageshaking from the App
|
||||||
|
[\#15201](https://github.com/vector-im/element-web/pull/15201)
|
||||||
|
* Bump node-fetch from 2.6.0 to 2.6.1
|
||||||
|
[\#15153](https://github.com/vector-im/element-web/pull/15153)
|
||||||
|
* Remove references to Travis CI
|
||||||
|
[\#15137](https://github.com/vector-im/element-web/pull/15137)
|
||||||
|
* Fix onNewScreen to use replace when going from roomId->roomAlias
|
||||||
|
[\#15127](https://github.com/vector-im/element-web/pull/15127)
|
||||||
|
* Enable Estonian in language menu
|
||||||
|
[\#15136](https://github.com/vector-im/element-web/pull/15136)
|
||||||
|
|
||||||
|
Changes in [1.7.7](https://github.com/vector-im/element-web/releases/tag/v1.7.7) (2020-09-14)
|
||||||
|
=============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.6...v1.7.7)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.4.1
|
||||||
|
|
||||||
|
Changes in [1.7.6](https://github.com/vector-im/element-web/releases/tag/v1.7.6) (2020-09-14)
|
||||||
|
=============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.6-rc.1...v1.7.6)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.4.0 and JS SDK 8.3.0
|
||||||
|
|
||||||
|
Changes in [1.7.6-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.6-rc.1) (2020-09-09)
|
||||||
|
=======================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.5...v1.7.6-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.4.0-rc.1 and JS SDK 8.3.0-rc.1
|
||||||
|
* Update from Weblate
|
||||||
|
[\#15125](https://github.com/vector-im/element-web/pull/15125)
|
||||||
|
* Support usage of Jitsi widgets with "openidtoken-jwt" auth
|
||||||
|
[\#15114](https://github.com/vector-im/element-web/pull/15114)
|
||||||
|
* Fix eslint ts override tsx matching and delint
|
||||||
|
[\#15064](https://github.com/vector-im/element-web/pull/15064)
|
||||||
|
* Add testing to review guidelines
|
||||||
|
[\#15050](https://github.com/vector-im/element-web/pull/15050)
|
||||||
|
|
||||||
|
Changes in [1.7.5](https://github.com/vector-im/element-web/releases/tag/v1.7.5) (2020-09-01)
|
||||||
|
=============================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.5-rc.1...v1.7.5)
|
||||||
|
|
||||||
|
## Security notice
|
||||||
|
|
||||||
|
Element Web 1.7.5 fixes an issue where encrypted state events could break incoming call handling.
|
||||||
|
Thanks to @awesome-michael from Awesome Technologies for responsibly disclosing this via Matrix's
|
||||||
|
Security Disclosure Policy.
|
||||||
|
|
||||||
|
## All changes
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.3.0 and JS SDK 8.2.0
|
||||||
|
|
||||||
|
Changes in [1.7.5-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.5-rc.1) (2020-08-26)
|
||||||
|
=======================================================================================================
|
||||||
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.4...v1.7.5-rc.1)
|
||||||
|
|
||||||
|
* Upgrade to React SDK 3.3.0-rc.1 and JS SDK 8.2.0-rc.1
|
||||||
|
* Update from Weblate
|
||||||
|
[\#15045](https://github.com/vector-im/element-web/pull/15045)
|
||||||
|
* Document .well-known E2EE secure backup setting
|
||||||
|
[\#15003](https://github.com/vector-im/element-web/pull/15003)
|
||||||
|
* Add docs for communities v2 prototyping feature flag
|
||||||
|
[\#15013](https://github.com/vector-im/element-web/pull/15013)
|
||||||
|
* Update links in README.md to point to Element
|
||||||
|
[\#14973](https://github.com/vector-im/element-web/pull/14973)
|
||||||
|
* Make kabyle translation available
|
||||||
|
[\#15027](https://github.com/vector-im/element-web/pull/15027)
|
||||||
|
* Change Riot to Element in readme
|
||||||
|
[\#15016](https://github.com/vector-im/element-web/pull/15016)
|
||||||
|
* Update links to element in the readme
|
||||||
|
[\#15014](https://github.com/vector-im/element-web/pull/15014)
|
||||||
|
* Link to Element in F-Droid as well
|
||||||
|
[\#15002](https://github.com/vector-im/element-web/pull/15002)
|
||||||
|
* Settings v3: Update documentation and configs for new feature flag behaviour
|
||||||
|
[\#14986](https://github.com/vector-im/element-web/pull/14986)
|
||||||
|
* Update jitsi.md with Element Android details
|
||||||
|
[\#14952](https://github.com/vector-im/element-web/pull/14952)
|
||||||
|
* TypeScript: enable es2019 lib for newer definitions
|
||||||
|
[\#14983](https://github.com/vector-im/element-web/pull/14983)
|
||||||
|
* Add reaction preview labs flags to develop
|
||||||
|
[\#14979](https://github.com/vector-im/element-web/pull/14979)
|
||||||
|
* Document new labs tweaks
|
||||||
|
[\#14958](https://github.com/vector-im/element-web/pull/14958)
|
||||||
|
|
||||||
Changes in [1.7.4](https://github.com/vector-im/element-web/releases/tag/v1.7.4) (2020-08-17)
|
Changes in [1.7.4](https://github.com/vector-im/element-web/releases/tag/v1.7.4) (2020-08-17)
|
||||||
=============================================================================================
|
=============================================================================================
|
||||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.4-rc.1...v1.7.4)
|
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.4-rc.1...v1.7.4)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Contributing code to Riot
|
Contributing code to Element
|
||||||
=========================
|
============================
|
||||||
|
|
||||||
Riot follows the same pattern as https://github.com/matrix-org/matrix-js-sdk/blob/master/CONTRIBUTING.rst.
|
Element follows the same pattern as https://github.com/matrix-org/matrix-js-sdk/blob/master/CONTRIBUTING.rst.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# Builder
|
# Builder
|
||||||
FROM node:12 as builder
|
FROM node:14-buster as builder
|
||||||
|
|
||||||
# Support custom branches of the react-sdk and js-sdk. This also helps us build
|
# Support custom branches of the react-sdk and js-sdk. This also helps us build
|
||||||
# images of riot-web develop.
|
# images of element-web develop.
|
||||||
ARG USE_CUSTOM_SDKS=false
|
ARG USE_CUSTOM_SDKS=false
|
||||||
ARG REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git"
|
ARG REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git"
|
||||||
ARG REACT_SDK_BRANCH="master"
|
ARG REACT_SDK_BRANCH="master"
|
||||||
|
|||||||
232
README.md
232
README.md
@@ -11,7 +11,7 @@ Element has several tiers of support for different environments:
|
|||||||
|
|
||||||
* Supported
|
* Supported
|
||||||
* Definition: Issues **actively triaged**, regressions **block** the release
|
* Definition: Issues **actively triaged**, regressions **block** the release
|
||||||
* Last 2 major versions of Chrome, Firefox, and Safari on desktop OSes
|
* Last 2 major versions of Chrome, Firefox, Safari, and Edge on desktop OSes
|
||||||
* Latest release of official Element Desktop app on desktop OSes
|
* Latest release of official Element Desktop app on desktop OSes
|
||||||
* Desktop OSes means macOS, Windows, and Linux versions for desktop devices
|
* Desktop OSes means macOS, Windows, and Linux versions for desktop devices
|
||||||
that are actively supported by the OS vendor and receive security updates
|
that are actively supported by the OS vendor and receive security updates
|
||||||
@@ -24,29 +24,29 @@ Element has several tiers of support for different environments:
|
|||||||
* Everything else
|
* Everything else
|
||||||
|
|
||||||
For accessing Element on an Android or iOS device, we currently recommend the
|
For accessing Element on an Android or iOS device, we currently recommend the
|
||||||
native apps [riot-android](https://github.com/vector-im/riot-android)
|
native apps [element-android](https://github.com/vector-im/element-android)
|
||||||
and [riot-ios](https://github.com/vector-im/riot-ios).
|
and [element-ios](https://github.com/vector-im/element-ios).
|
||||||
|
|
||||||
Getting Started
|
Getting Started
|
||||||
===============
|
===============
|
||||||
|
|
||||||
The easiest way to test Element is to just use the hosted copy at https://app.element.io.
|
The easiest way to test Element is to just use the hosted copy at https://app.element.io.
|
||||||
The `develop` branch is continuously deployed by Jenkins at https://develop.element.io
|
The `develop` branch is continuously deployed to https://develop.element.io
|
||||||
for those who like living dangerously.
|
for those who like living dangerously.
|
||||||
|
|
||||||
To host your own copy of Element, the quickest bet is to use a pre-built
|
To host your own copy of Element, the quickest bet is to use a pre-built
|
||||||
released version of Element:
|
released version of Element:
|
||||||
|
|
||||||
1. Download the latest version from https://github.com/vector-im/riot-web/releases
|
1. Download the latest version from https://github.com/vector-im/element-web/releases
|
||||||
1. Untar the tarball on your web server
|
1. Untar the tarball on your web server
|
||||||
1. Move (or symlink) the `riot-x.x.x` directory to an appropriate name
|
1. Move (or symlink) the `element-x.x.x` directory to an appropriate name
|
||||||
1. Configure the correct caching headers in your webserver (see below)
|
1. Configure the correct caching headers in your webserver (see below)
|
||||||
1. If desired, copy `config.sample.json` to `config.json` and edit it
|
1. If desired, copy `config.sample.json` to `config.json` and edit it
|
||||||
as desired. See the [configuration docs](docs/config.md) for details.
|
as desired. See the [configuration docs](docs/config.md) for details.
|
||||||
1. Enter the URL into your browser and log into Element!
|
1. Enter the URL into your browser and log into Element!
|
||||||
|
|
||||||
Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located
|
Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located
|
||||||
at https://packages.riot.im/riot-release-key.asc.
|
at https://packages.riot.im/element-release-key.asc.
|
||||||
|
|
||||||
Note that for the security of your chats will need to serve Element
|
Note that for the security of your chats will need to serve Element
|
||||||
over HTTPS. Major browsers also do not allow you to use VoIP/video
|
over HTTPS. Major browsers also do not allow you to use VoIP/video
|
||||||
@@ -58,8 +58,11 @@ and thus allowed.
|
|||||||
To install Element as a desktop application, see [Running as a desktop
|
To install Element as a desktop application, see [Running as a desktop
|
||||||
app](#running-as-a-desktop-app) below.
|
app](#running-as-a-desktop-app) below.
|
||||||
|
|
||||||
Important Security Note
|
Important Security Notes
|
||||||
=======================
|
========================
|
||||||
|
|
||||||
|
Separate domains
|
||||||
|
----------------
|
||||||
|
|
||||||
We do not recommend running Element from the same domain name as your Matrix
|
We do not recommend running Element from the same domain name as your Matrix
|
||||||
homeserver. The reason is the risk of XSS (cross-site-scripting)
|
homeserver. The reason is the risk of XSS (cross-site-scripting)
|
||||||
@@ -69,7 +72,46 @@ access to Element (or other apps) due to sharing the same domain.
|
|||||||
|
|
||||||
We have put some coarse mitigations into place to try to protect against this
|
We have put some coarse mitigations into place to try to protect against this
|
||||||
situation, but it's still not good practice to do it in the first place. See
|
situation, but it's still not good practice to do it in the first place. See
|
||||||
https://github.com/vector-im/riot-web/issues/1977 for more details.
|
https://github.com/vector-im/element-web/issues/1977 for more details.
|
||||||
|
|
||||||
|
Configuration best practices
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Unless you have special requirements, you will want to add the following to
|
||||||
|
your web server configuration when hosting Element Web:
|
||||||
|
|
||||||
|
- The `X-Frame-Options: SAMEORIGIN` header, to prevent Element Web from being
|
||||||
|
framed and protect from [clickjacking][owasp-clickjacking].
|
||||||
|
- The `frame-ancestors 'none'` directive to your `Content-Security-Policy`
|
||||||
|
header, as the modern replacement for `X-Frame-Options` (though both should be
|
||||||
|
included since not all browsers support it yet, see
|
||||||
|
[this][owasp-clickjacking-csp]).
|
||||||
|
- The `X-Content-Type-Options: nosniff` header, to [disable MIME
|
||||||
|
sniffing][mime-sniffing].
|
||||||
|
- The `X-XSS-Protection: 1; mode=block;` header, for basic XSS protection in
|
||||||
|
legacy browsers.
|
||||||
|
|
||||||
|
[mime-sniffing]:
|
||||||
|
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing>
|
||||||
|
|
||||||
|
[owasp-clickjacking-csp]:
|
||||||
|
<https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html#content-security-policy-frame-ancestors-examples>
|
||||||
|
|
||||||
|
[owasp-clickjacking]:
|
||||||
|
<https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html>
|
||||||
|
|
||||||
|
If you are using nginx, this would look something like the following:
|
||||||
|
|
||||||
|
```
|
||||||
|
add_header X-Frame-Options SAMEORIGIN;
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
|
add_header Content-Security-Policy "frame-ancestors 'none'";
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: In case you are already setting a `Content-Security-Policy` header
|
||||||
|
elsewhere, you should modify it to include the `frame-ancestors` directive
|
||||||
|
instead of adding that last line.
|
||||||
|
|
||||||
Building From Source
|
Building From Source
|
||||||
====================
|
====================
|
||||||
@@ -82,8 +124,8 @@ guide](https://classic.yarnpkg.com/en/docs/install) if you do not have it alread
|
|||||||
|
|
||||||
1. Install or update `node.js` so that your `node` is at least v10.x.
|
1. Install or update `node.js` so that your `node` is at least v10.x.
|
||||||
1. Install `yarn` if not present already.
|
1. Install `yarn` if not present already.
|
||||||
1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`.
|
1. Clone the repo: `git clone https://github.com/vector-im/element-web.git`.
|
||||||
1. Switch to the riot-web directory: `cd riot-web`.
|
1. Switch to the element-web directory: `cd element-web`.
|
||||||
1. Install the prerequisites: `yarn install`.
|
1. Install the prerequisites: `yarn install`.
|
||||||
* If you're using the `develop` branch, then it is recommended to set up a
|
* If you're using the `develop` branch, then it is recommended to set up a
|
||||||
proper development environment (see [Setting up a dev
|
proper development environment (see [Setting up a dev
|
||||||
@@ -99,16 +141,17 @@ guide](https://classic.yarnpkg.com/en/docs/install) if you do not have it alread
|
|||||||
Note that `yarn dist` is not supported on Windows, so Windows users can run `yarn build`,
|
Note that `yarn dist` is not supported on Windows, so Windows users can run `yarn build`,
|
||||||
which will build all the necessary files into the `webapp` directory. The version of Element
|
which will build all the necessary files into the `webapp` directory. The version of Element
|
||||||
will not appear in Settings without using the dist script. You can then mount the
|
will not appear in Settings without using the dist script. You can then mount the
|
||||||
`webapp` directory on your webserver to actually serve up the app, which is entirely static content.
|
`webapp` directory on your web server to actually serve up the app, which is
|
||||||
|
entirely static content.
|
||||||
|
|
||||||
Running as a Desktop app
|
Running as a Desktop app
|
||||||
========================
|
========================
|
||||||
|
|
||||||
Element can also be run as a desktop app, wrapped in Electron. You can download a
|
Element can also be run as a desktop app, wrapped in Electron. You can download a
|
||||||
pre-built version from https://riot.im/download/desktop/ or, if you prefer,
|
pre-built version from https://element.io/get-started or, if you prefer,
|
||||||
build it yourself.
|
build it yourself.
|
||||||
|
|
||||||
To build it yourself, follow the instructions at https://github.com/vector-im/riot-desktop.
|
To build it yourself, follow the instructions at https://github.com/vector-im/element-desktop.
|
||||||
|
|
||||||
Many thanks to @aviraldg for the initial work on the Electron integration.
|
Many thanks to @aviraldg for the initial work on the Electron integration.
|
||||||
|
|
||||||
@@ -126,31 +169,31 @@ override the desktop app's default settings if desired.
|
|||||||
Running from Docker
|
Running from Docker
|
||||||
===================
|
===================
|
||||||
|
|
||||||
The Docker image can be used to serve riot-web as a web server. The easiest way to use
|
The Docker image can be used to serve element-web as a web server. The easiest way to use
|
||||||
it is to use the prebuilt image:
|
it is to use the prebuilt image:
|
||||||
```bash
|
```bash
|
||||||
docker run -p 80:80 vectorim/riot-web
|
docker run -p 80:80 vectorim/element-web
|
||||||
```
|
```
|
||||||
|
|
||||||
To supply your own custom `config.json`, map a volume to `/app/config.json`. For example,
|
To supply your own custom `config.json`, map a volume to `/app/config.json`. For example,
|
||||||
if your custom config was located at `/etc/riot-web/config.json` then your Docker command
|
if your custom config was located at `/etc/element-web/config.json` then your Docker command
|
||||||
would be:
|
would be:
|
||||||
```bash
|
```bash
|
||||||
docker run -p 80:80 -v /etc/riot-web/config.json:/app/config.json vectorim/riot-web
|
docker run -p 80:80 -v /etc/element-web/config.json:/app/config.json vectorim/element-web
|
||||||
```
|
```
|
||||||
|
|
||||||
To build the image yourself:
|
To build the image yourself:
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/vector-im/riot-web.git riot-web
|
git clone https://github.com/vector-im/element-web.git element-web
|
||||||
cd riot-web
|
cd element-web
|
||||||
git checkout master
|
git checkout master
|
||||||
docker build -t vectorim/riot-web .
|
docker build .
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're building a custom branch, or want to use the develop branch, check out the appropriate
|
If you're building a custom branch, or want to use the develop branch, check out the appropriate
|
||||||
riot-web branch and then run:
|
element-web branch and then run:
|
||||||
```bash
|
```bash
|
||||||
docker build -t vectorim/riot-web:develop \
|
docker build -t \
|
||||||
--build-arg USE_CUSTOM_SDKS=true \
|
--build-arg USE_CUSTOM_SDKS=true \
|
||||||
--build-arg REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git" \
|
--build-arg REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git" \
|
||||||
--build-arg REACT_SDK_BRANCH="develop" \
|
--build-arg REACT_SDK_BRANCH="develop" \
|
||||||
@@ -169,7 +212,7 @@ Labs Features
|
|||||||
=============
|
=============
|
||||||
|
|
||||||
Some features of Element may be enabled by flags in the `Labs` section of the settings.
|
Some features of Element may be enabled by flags in the `Labs` section of the settings.
|
||||||
Some of these features are described in [labs.md](https://github.com/vector-im/riot-web/blob/develop/docs/labs.md).
|
Some of these features are described in [labs.md](https://github.com/vector-im/element-web/blob/develop/docs/labs.md).
|
||||||
|
|
||||||
Caching requirements
|
Caching requirements
|
||||||
====================
|
====================
|
||||||
@@ -186,13 +229,13 @@ Element requires the following URLs not to be cached, when/if you are serving El
|
|||||||
Development
|
Development
|
||||||
===========
|
===========
|
||||||
|
|
||||||
Before attempting to develop on Riot you **must** read the [developer guide
|
Before attempting to develop on Element you **must** read the [developer guide
|
||||||
for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk#developer-guide), which
|
for `matrix-react-sdk`](https://github.com/matrix-org/matrix-react-sdk#developer-guide), which
|
||||||
also defines the design, architecture and style for Element too.
|
also defines the design, architecture and style for Element too.
|
||||||
|
|
||||||
Before starting work on a feature, it's best to ensure your plan aligns well
|
Before starting work on a feature, it's best to ensure your plan aligns well
|
||||||
with our vision for Riot. Please chat with the team in
|
with our vision for Element. Please chat with the team in
|
||||||
[#riot-dev:matrix.org](https://matrix.to/#/#riot-dev:matrix.org) before you
|
[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) before you
|
||||||
start so we can ensure it's something we'd be willing to merge.
|
start so we can ensure it's something we'd be willing to merge.
|
||||||
|
|
||||||
You should also familiarise yourself with the ["Here be Dragons" guide
|
You should also familiarise yourself with the ["Here be Dragons" guide
|
||||||
@@ -225,7 +268,6 @@ First clone and build `matrix-js-sdk`:
|
|||||||
``` bash
|
``` bash
|
||||||
git clone https://github.com/matrix-org/matrix-js-sdk.git
|
git clone https://github.com/matrix-org/matrix-js-sdk.git
|
||||||
pushd matrix-js-sdk
|
pushd matrix-js-sdk
|
||||||
git checkout develop
|
|
||||||
yarn link
|
yarn link
|
||||||
yarn install
|
yarn install
|
||||||
popd
|
popd
|
||||||
@@ -236,7 +278,6 @@ Then similarly with `matrix-react-sdk`:
|
|||||||
```bash
|
```bash
|
||||||
git clone https://github.com/matrix-org/matrix-react-sdk.git
|
git clone https://github.com/matrix-org/matrix-react-sdk.git
|
||||||
pushd matrix-react-sdk
|
pushd matrix-react-sdk
|
||||||
git checkout develop
|
|
||||||
yarn link
|
yarn link
|
||||||
yarn link matrix-js-sdk
|
yarn link matrix-js-sdk
|
||||||
yarn install
|
yarn install
|
||||||
@@ -246,9 +287,8 @@ popd
|
|||||||
Finally, build and start Element itself:
|
Finally, build and start Element itself:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/vector-im/riot-web.git
|
git clone https://github.com/vector-im/element-web.git
|
||||||
cd riot-web
|
cd element-web
|
||||||
git checkout develop
|
|
||||||
yarn link matrix-js-sdk
|
yarn link matrix-js-sdk
|
||||||
yarn link matrix-react-sdk
|
yarn link matrix-react-sdk
|
||||||
yarn install
|
yarn install
|
||||||
@@ -275,25 +315,32 @@ bundle.css.map 116 kB 0 [emitted] main
|
|||||||
Configure the app by copying `config.sample.json` to `config.json` and
|
Configure the app by copying `config.sample.json` to `config.json` and
|
||||||
modifying it. See the [configuration docs](docs/config.md) for details.
|
modifying it. See the [configuration docs](docs/config.md) for details.
|
||||||
|
|
||||||
Open http://127.0.0.1:8080/ in your browser to see your newly built Riot.
|
Open http://127.0.0.1:8080/ in your browser to see your newly built Element.
|
||||||
|
|
||||||
**Note**: The build script uses inotify by default on Linux to monitor directories
|
**Note**: The build script uses inotify by default on Linux to monitor directories
|
||||||
for changes. If the inotify watch limit is too low your build will silently fail.
|
for changes. If the inotify limits are too low your build will fail silently or with
|
||||||
To avoid this issue, we recommend a limit of at least 128M.
|
`Error: EMFILE: too many open files`. To avoid these issues, we recommend a watch limit
|
||||||
|
of at least `128M` and instance limit around `512`.
|
||||||
|
|
||||||
To set a new inotify watch limit, execute:
|
You may be interested in issues [#15750](https://github.com/vector-im/element-web/issues/15750) and
|
||||||
|
[#15774](https://github.com/vector-im/element-web/issues/15774) for further details.
|
||||||
|
|
||||||
|
To set a new inotify watch and instance limit, execute:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo sysctl fs.inotify.max_user_watches=131072
|
sudo sysctl fs.inotify.max_user_watches=131072
|
||||||
$ sudo sysctl -p
|
sudo sysctl fs.inotify.max_user_instances=512
|
||||||
|
sudo sysctl -p
|
||||||
```
|
```
|
||||||
|
|
||||||
If you wish, you can make this new limit permanent, by executing:
|
If you wish, you can make the new limits permanent, by executing:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
|
echo fs.inotify.max_user_watches=131072 | sudo tee -a /etc/sysctl.conf
|
||||||
$ sudo sysctl -p
|
echo fs.inotify.max_user_instances=512 | sudo tee -a /etc/sysctl.conf
|
||||||
|
sudo sysctl -p
|
||||||
```
|
```
|
||||||
|
|
||||||
___
|
___
|
||||||
|
|
||||||
When you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be
|
When you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be
|
||||||
@@ -336,56 +383,81 @@ To add a new translation, head to the [translating doc](docs/translating.md).
|
|||||||
|
|
||||||
For a developer guide, see the [translating dev doc](docs/translating-dev.md).
|
For a developer guide, see the [translating dev doc](docs/translating-dev.md).
|
||||||
|
|
||||||
[<img src="https://translate.riot.im/widgets/riot-web/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.riot.im/engage/riot-web/?utm_source=widget)
|
[<img src="https://translate.element.io/widgets/element-web/-/multi-auto.svg" alt="translationsstatus" width="340">](https://translate.element.io/engage/element-web/?utm_source=widget)
|
||||||
|
|
||||||
Triaging issues
|
Triaging issues
|
||||||
===============
|
===============
|
||||||
|
|
||||||
Issues will be triaged by the core team using the below set of tags.
|
We strive to completely cover all applicable issues with these core labels:
|
||||||
|
|
||||||
Tags are meant to be used in combination - e.g.:
|
1. __Type__ — Every issue is assigned a type:
|
||||||
* P1 critical bug == really urgent stuff that should be next in the bugfixing todo list
|
- __[T-Defect](https://github.com/vector-im/element-web/labels/T-Defect):__
|
||||||
* "release blocker" == stuff which is blocking us from cutting the next release.
|
Bugs, crashes, hangs, vulnerabilities, or other reported problems
|
||||||
* P1 feature type:voip == what VoIP features should we be working on next?
|
- __[T-Enhancement](https://github.com/vector-im/element-web/labels/T-Enhancement):__
|
||||||
|
New features, changes in functionality, performance boosts, user-facing
|
||||||
|
improvements
|
||||||
|
- __[T-Task](https://github.com/vector-im/element-web/labels/T-Task):__
|
||||||
|
Refactoring, enabling or disabling functionality, other engineering tasks
|
||||||
|
- __[T-Other](https://github.com/vector-im/element-web/labels/T-Other):__
|
||||||
|
Questions, user support, anything else
|
||||||
|
|
||||||
priority: **compulsory**
|
2. __Severity__ — All issues labeled `T-Defect` are also assigned a severity:
|
||||||
|
* __[S-Critical](https://github.com/vector-im/element-web/labels/S-Critical):__
|
||||||
|
Prevents work, causes data loss, affects many users, and/or has no
|
||||||
|
workaround
|
||||||
|
* __[S-Major](https://github.com/vector-im/element-web/labels/S-Major):__
|
||||||
|
Severely degrades major functionality or product features, with no
|
||||||
|
satisfactory workaround
|
||||||
|
* __[S-Minor](https://github.com/vector-im/element-web/labels/S-Minor):__
|
||||||
|
Impairs non-critical functionality, or suitable workarounds exist
|
||||||
|
* __[S-Tolerable](https://github.com/vector-im/element-web/labels/S-Tolerable):__
|
||||||
|
Purely cosmetic or low / no impact to users
|
||||||
|
|
||||||
* P1: top priority - i.e. pool of stuff which we should be working on next
|
3. __Priority__ — All issues which are not `T-Other` are assigned a priority:
|
||||||
* P2: still need to fix, but lower than P1
|
* __[P1](https://github.com/vector-im/element-web/labels/P1):__ Next
|
||||||
* P3: non-urgent
|
* __[P2](https://github.com/vector-im/element-web/labels/P2):__ Later
|
||||||
* P4: interesting idea - bluesky some day
|
* __[P3](https://github.com/vector-im/element-web/labels/P3):__ Eventually
|
||||||
* P5: recorded for posterity/to avoid duplicates. No intention to resolves right now.
|
* __[P4](https://github.com/vector-im/element-web/labels/P4):__ Interesting —
|
||||||
|
Not yet scheduled, will accept patches
|
||||||
|
* __[P5](https://github.com/vector-im/element-web/labels/P5):__ Dubious —
|
||||||
|
Will not schedule, would consider patches
|
||||||
|
|
||||||
bug or feature: **compulsory**
|
4. __Area__ — Most issues are assigned one or several "areas" using one of the
|
||||||
|
many `A-` prefixed labels, e.g. `A-Composer` or `A-Spaces`. Each area label
|
||||||
|
maps to a group of features or portion of the UI surface in the app.
|
||||||
|
|
||||||
* bug
|
### Other common labels
|
||||||
* feature
|
|
||||||
|
|
||||||
bug severity: **compulsory, if bug**
|
We have a handful of other labels which are added on an as-needed basis, and not expected to be exhaustive:
|
||||||
|
|
||||||
* critical - whole app doesn't work
|
* __Exceptions__ — Special flags for issues and pull requests:
|
||||||
* major - entire feature doesn't work
|
* __[X-Needs-Info](https://github.com/vector-im/element-web/labels/X-Needs-Info):__
|
||||||
* minor - partially broken feature (but still usable)
|
This issue is blocked pending further information from the reporter
|
||||||
* cosmetic - feature works functionally but UI/UX is broken
|
* __[X-Regression](https://github.com/vector-im/element-web/labels/X-Regression):__
|
||||||
|
Denotes things breaking which previously worked
|
||||||
|
* __[X-Release-Blocker](https://github.com/vector-im/element-web/labels/X-Release-Blocker):__
|
||||||
|
Issues which must be resolved before making a release
|
||||||
|
|
||||||
types
|
* __[Easy](https://github.com/vector-im/element-web/labels/Easy)__ / __[Help
|
||||||
* type:* - refers to a particular part of the app; used to filter bugs
|
Wanted](https://github.com/vector-im/element-web/labels/Help%20Wanted)__ —
|
||||||
on a given topic - e.g. VOIP, signup, timeline, etc.
|
Well-defined issues which are suitable for folks new to the codebase
|
||||||
|
|
||||||
additional categories (self-explanatory):
|
* __[A11y](https://github.com/vector-im/element-web/labels/A11y)__ /
|
||||||
|
__[Meta](https://github.com/vector-im/element-web/labels/Meta)__ /
|
||||||
|
__[I18n](https://github.com/vector-im/element-web/labels/I18n)__ /
|
||||||
|
__[Privacy](https://github.com/vector-im/element-web/labels/Privacy)__ /
|
||||||
|
__[Security](https://github.com/vector-im/element-web/labels/Security)__ —
|
||||||
|
Issues which fall under these conceptual themes (which apply to many software
|
||||||
|
projects and are not specific to Element)
|
||||||
|
|
||||||
* release blocker
|
* __[Sponsored](https://github.com/vector-im/element-web/labels/Sponsored)__ —
|
||||||
* ui/ux (think of this as cosmetic)
|
Used internally by Element to denote issues with external funding
|
||||||
* network (specific to network conditions)
|
|
||||||
* platform specific
|
|
||||||
* accessibility
|
|
||||||
* maintenance
|
|
||||||
* performance
|
|
||||||
* i18n
|
|
||||||
* blocked - whether this issue currently can't be progressed due to outside factors
|
|
||||||
|
|
||||||
community engagement
|
### Ad hoc labels (`Z-`)
|
||||||
* easy
|
|
||||||
* hacktoberfest
|
We have reserved the `Z-` prefix for ad hoc labels.
|
||||||
* bounty? - proposal to be included in a bounty programme
|
|
||||||
* bounty - included in Status Open Bounty
|
Any member of the core team is welcome to create labels beginning with `Z-` for
|
||||||
|
any purpose, such as tracking personal areas of interest or providing a common
|
||||||
|
way to label cross-repo initiatives. The prefix avoids interference with the
|
||||||
|
project's main labels.
|
||||||
|
|||||||
@@ -3,12 +3,15 @@ module.exports = {
|
|||||||
"presets": [
|
"presets": [
|
||||||
["@babel/preset-env", {
|
["@babel/preset-env", {
|
||||||
"targets": [
|
"targets": [
|
||||||
"last 2 Chrome versions", "last 2 Firefox versions", "last 2 Safari versions"
|
"last 2 Chrome versions",
|
||||||
|
"last 2 Firefox versions",
|
||||||
|
"last 2 Safari versions",
|
||||||
|
"last 2 Edge versions",
|
||||||
],
|
],
|
||||||
}],
|
}],
|
||||||
"@babel/preset-typescript",
|
"@babel/preset-typescript",
|
||||||
"@babel/preset-flow",
|
"@babel/preset-flow",
|
||||||
"@babel/preset-react"
|
"@babel/preset-react",
|
||||||
],
|
],
|
||||||
"plugins": [
|
"plugins": [
|
||||||
["@babel/plugin-proposal-decorators", {legacy: true}],
|
["@babel/plugin-proposal-decorators", {legacy: true}],
|
||||||
@@ -16,8 +19,10 @@ module.exports = {
|
|||||||
"@babel/plugin-proposal-numeric-separator",
|
"@babel/plugin-proposal-numeric-separator",
|
||||||
"@babel/plugin-proposal-class-properties",
|
"@babel/plugin-proposal-class-properties",
|
||||||
"@babel/plugin-proposal-object-rest-spread",
|
"@babel/plugin-proposal-object-rest-spread",
|
||||||
|
"@babel/plugin-proposal-optional-chaining",
|
||||||
|
"@babel/plugin-proposal-nullish-coalescing-operator",
|
||||||
"@babel/plugin-transform-flow-comments",
|
"@babel/plugin-transform-flow-comments",
|
||||||
"@babel/plugin-syntax-dynamic-import",
|
"@babel/plugin-syntax-dynamic-import",
|
||||||
"@babel/plugin-transform-runtime"
|
"@babel/plugin-transform-runtime",
|
||||||
]
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,11 +26,7 @@
|
|||||||
"defaultCountryCode": "GB",
|
"defaultCountryCode": "GB",
|
||||||
"showLabsSettings": false,
|
"showLabsSettings": false,
|
||||||
"features": {
|
"features": {
|
||||||
"feature_new_spinner": "labs",
|
"feature_new_spinner": false
|
||||||
"feature_pinning": "labs",
|
|
||||||
"feature_custom_status": "labs",
|
|
||||||
"feature_custom_tags": "labs",
|
|
||||||
"feature_state_counters": "labs"
|
|
||||||
},
|
},
|
||||||
"default_federate": true,
|
"default_federate": true,
|
||||||
"default_theme": "light",
|
"default_theme": "light",
|
||||||
@@ -39,7 +35,6 @@
|
|||||||
"matrix.org"
|
"matrix.org"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"welcomeUserId": "@riot-bot:matrix.org",
|
|
||||||
"piwik": {
|
"piwik": {
|
||||||
"url": "https://piwik.riot.im/",
|
"url": "https://piwik.riot.im/",
|
||||||
"whitelistedHSUrls": ["https://matrix.org"],
|
"whitelistedHSUrls": ["https://matrix.org"],
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "Riot",
|
"name": "Element",
|
||||||
"description": "A glossy Matrix collaboration client for the web.",
|
"description": "A glossy Matrix collaboration client for the web.",
|
||||||
"repository": {
|
"repository": {
|
||||||
"url": "https://github.com/vector-im/riot-web",
|
"url": "https://github.com/vector-im/element-web",
|
||||||
"license": "Apache License 2.0"
|
"license": "Apache License 2.0"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"list": "https://github.com/vector-im/riot-web/issues",
|
"list": "https://github.com/vector-im/element-web/issues",
|
||||||
"report": "https://github.com/vector-im/riot-web/issues/new/choose"
|
"report": "https://github.com/vector-im/element-web/issues/new/choose"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"chat",
|
"chat",
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ Key:
|
|||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
+ A task begins when all its dependencies (arrows going into it) are fulfilled.
|
+ 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).
|
+ The success of setting up rageshake is never asserted, element-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.
|
+ 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:
|
Underlying dependencies:
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
# VoIP Conferencing
|
|
||||||
|
|
||||||
This is a draft proposal for a naive voice/video conferencing implementation for
|
|
||||||
Matrix clients. There are many possible conferencing architectures possible for
|
|
||||||
Matrix (Multipoint Conferencing Unit (MCU); Stream Forwarding Unit (SFU); Peer-
|
|
||||||
to-Peer mesh (P2P), etc; events shared in the group room; events shared 1:1;
|
|
||||||
possibly even out-of-band signalling).
|
|
||||||
|
|
||||||
This is a starting point for a naive MCU implementation which could provide one
|
|
||||||
possible Matrix-wide solution in future, which retains backwards compatibility
|
|
||||||
with standard 1:1 calling.
|
|
||||||
|
|
||||||
* A client chooses to initiate a conference for a given room by starting a
|
|
||||||
voice or video call with a 'conference focus' user. This is a virtual user
|
|
||||||
(typically Application Service) which implements a conferencing bridge. It
|
|
||||||
isn't defined how the client discovers or selects this user.
|
|
||||||
|
|
||||||
* The conference focus user MUST join the room in which the client has
|
|
||||||
initiated the conference - this may require the client to invite the
|
|
||||||
conference focus user to the room, depending on the room's `join_rules`. The
|
|
||||||
conference focus user needs to be in the room to let the bridge eject users
|
|
||||||
from the conference who have left the room in which it was initiated, and aid
|
|
||||||
discovery of the conference by other users in the room. The bridge
|
|
||||||
identifies the room to join based on the user ID by which it was invited.
|
|
||||||
The format of this identifier is implementation dependent for now.
|
|
||||||
|
|
||||||
* If a client leaves the group chat room, they MUST be ejected from the
|
|
||||||
conference. If a client leaves the 1:1 room with the conference focus user,
|
|
||||||
they SHOULD be ejected from the conference.
|
|
||||||
|
|
||||||
* For now, rooms can contain multiple conference focus users - it's left to
|
|
||||||
user or client implementation to select which to converge on. In future this
|
|
||||||
could be mediated using a state event (e.g. `im.vector.call.mcu`), but we
|
|
||||||
can't do that right now as by default normal users can't set arbitrary state
|
|
||||||
events on a room.
|
|
||||||
|
|
||||||
* To participate in the conference, other clients initiates a standard 1:1
|
|
||||||
voice or video call to the conference focus user.
|
|
||||||
|
|
||||||
* For best UX, clients SHOULD show the ongoing voice/video call in the UI
|
|
||||||
context of the group room rather than 1:1 with the focus user. If a client
|
|
||||||
recognises a conference user present in the room, it MAY chose to highlight
|
|
||||||
this in the UI (e.g. with a "conference ongoing" notification, to aid
|
|
||||||
discovery). Clients MAY hide the 1:1 room with the focus user (although in
|
|
||||||
future this room could be used for floor control or other direct
|
|
||||||
communication with the conference focus)
|
|
||||||
|
|
||||||
* When all users have left the conference, the 'conference focus' user SHOULD
|
|
||||||
leave the room.
|
|
||||||
|
|
||||||
* If a conference focus user joins a room but does not receive a 1:1 voice or
|
|
||||||
video call, it SHOULD time out after a period of time and leave the room.
|
|
||||||
@@ -22,12 +22,12 @@ For a good example, see https://develop.element.io/config.json.
|
|||||||
`default_hs_url` is specified. When multiple sources are specified, it is unclear
|
`default_hs_url` is specified. When multiple sources are specified, it is unclear
|
||||||
which should take priority and therefore the application cannot continue.
|
which should take priority and therefore the application cannot continue.
|
||||||
* As of Element 1.4.0, identity servers are optional. See [Identity servers](#identity-servers) below.
|
* As of Element 1.4.0, identity servers are optional. See [Identity servers](#identity-servers) below.
|
||||||
1. `features`: Lookup of optional features that may be `enable`d, `disable`d, or
|
1. `features`: Lookup of optional features that may be force-enabled (`true`) or force-disabled (`false`).
|
||||||
exposed to the user in the `labs` section of settings. The available
|
When features are not listed here, their defaults will be used, and users can turn them on/off if `showLabsSettings`
|
||||||
optional experimental features vary from release to release and are [documented](labs.md). The feature flag process is
|
allows them to. The available optional experimental features vary from release to release and are
|
||||||
[documented](feature-flags.md) as well.
|
[documented](labs.md). The feature flag process is [documented](feature-flags.md) as well.
|
||||||
1. `showLabsSettings`: Shows the "labs" tab of user settings even when no `features` are enabled
|
1. `showLabsSettings`: Shows the "labs" tab of user settings. Useful to allow users to turn on experimental features
|
||||||
or present. Useful for getting at settings which may be otherwise hidden.
|
they might not otherwise have access to.
|
||||||
1. `brand`: String to pass to your homeserver when configuring email notifications, to let the
|
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.
|
homeserver know what email template to use when talking to you.
|
||||||
1. `branding`: Configures various branding and logo details, such as:
|
1. `branding`: Configures various branding and logo details, such as:
|
||||||
@@ -48,7 +48,7 @@ For a good example, see https://develop.element.io/config.json.
|
|||||||
1. `integrations_widgets_urls`: list of URLs to the REST interface for the widget 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
|
1. `bug_report_endpoint_url`: endpoint to send bug reports to (must be running a
|
||||||
https://github.com/matrix-org/rageshake server). Bug reports are sent when a user clicks
|
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
|
"Send Logs" within the application. Bug reports can be disabled/hidden by leaving the
|
||||||
`bug_report_endpoint_url` out of your config file.
|
`bug_report_endpoint_url` out of your config file.
|
||||||
1. `roomDirectory`: config for the public room directory. This section is optional.
|
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
|
1. `roomDirectory.servers`: List of other homeservers' directories to include in the drop
|
||||||
@@ -82,8 +82,8 @@ For a good example, see https://develop.element.io/config.json.
|
|||||||
default homeserver when signing up or logging in.
|
default homeserver when signing up or logging in.
|
||||||
1. `permalinkPrefix`: Used to change the URL that Element generates permalinks with.
|
1. `permalinkPrefix`: Used to change the URL that Element generates permalinks with.
|
||||||
By default, this is "https://matrix.to" to generate matrix.to (spec) permalinks.
|
By default, this is "https://matrix.to" to generate matrix.to (spec) permalinks.
|
||||||
Set this to your Riot instance URL if you run an unfederated server (eg:
|
Set this to your Element instance URL if you run an unfederated server (eg:
|
||||||
"https://riot.example.org").
|
"https://element.example.org").
|
||||||
1. `jitsi`: Used to change the default conference options. Learn more about the
|
1. `jitsi`: Used to change the default conference options. Learn more about the
|
||||||
Jitsi options at [jitsi.md](./jitsi.md).
|
Jitsi options at [jitsi.md](./jitsi.md).
|
||||||
1. `preferredDomain`: The domain name of the preferred Jitsi instance. Defaults
|
1. `preferredDomain`: The domain name of the preferred Jitsi instance. Defaults
|
||||||
@@ -101,6 +101,21 @@ For a good example, see https://develop.element.io/config.json.
|
|||||||
Defaults to false (3rd party identity options are shown).
|
Defaults to false (3rd party identity options are shown).
|
||||||
1. `default_federate`: Default option for room federation when creating a room
|
1. `default_federate`: Default option for room federation when creating a room
|
||||||
Defaults to true (room federation enabled).
|
Defaults to true (room federation enabled).
|
||||||
|
1. `desktopBuilds`: Used to alter promotional links to the desktop app. By default
|
||||||
|
the builds are considered available and accessible from https://element.io. This
|
||||||
|
config option is typically used in the context of encouraging encrypted message
|
||||||
|
search capabilities (Seshat). All the options listed below are required if this
|
||||||
|
option is specified.
|
||||||
|
1. `available`: When false, the desktop app will not be promoted to the user.
|
||||||
|
1. `logo`: An HTTP URL to the avatar for the desktop build. Should be 24x24, ideally
|
||||||
|
an SVG.
|
||||||
|
1. `url`: An HTTP URL for where to send the user to download the desktop build.
|
||||||
|
1. `mobileGuideToast`: Whether to show a toast a startup which nudges users on
|
||||||
|
iOS and Android towards the native mobile apps. The toast redirects to the
|
||||||
|
mobile guide if they accept. Defaults to false.
|
||||||
|
1. `audioStreamUrl`: If supplied, show an option on Jitsi widgets to stream
|
||||||
|
audio using Jitsi's live streaming feature. This option is experimental and
|
||||||
|
may be removed at any time without notice.
|
||||||
|
|
||||||
Note that `index.html` also has an og:image meta tag that is set to an image
|
Note that `index.html` also has an og:image meta tag that is set to an image
|
||||||
hosted on riot.im. This is the image used if links to your copy of Element
|
hosted on riot.im. This is the image used if links to your copy of Element
|
||||||
@@ -143,4 +158,45 @@ decentralised.
|
|||||||
Desktop app configuration
|
Desktop app configuration
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
See https://github.com/vector-im/riot-desktop#user-specified-configjson
|
See https://github.com/vector-im/element-desktop#user-specified-configjson
|
||||||
|
|
||||||
|
UI Features
|
||||||
|
===========
|
||||||
|
|
||||||
|
Parts of the UI can be disabled using UI features. These are settings which appear
|
||||||
|
under `settingDefaults` and can only be `true` (default) or `false`. When `false`,
|
||||||
|
parts of the UI relating to that feature will be disabled regardless of the user's
|
||||||
|
preferences.
|
||||||
|
|
||||||
|
Currently, the following UI feature flags are supported:
|
||||||
|
|
||||||
|
* `UIFeature.urlPreviews` - Whether URL previews are enabled across the entire application.
|
||||||
|
* `UIFeature.feedback` - Whether prompts to supply feedback are shown.
|
||||||
|
* `UIFeature.voip` - Whether or not VoIP is shown readily to the user. When disabled,
|
||||||
|
Jitsi widgets will still work though they cannot easily be added.
|
||||||
|
* `UIFeature.widgets` - Whether or not widgets will be shown.
|
||||||
|
* `UIFeature.flair` - Whether or not community flair is shown in rooms.
|
||||||
|
* `UIFeature.communities` - Whether or not to show any UI related to communities. Implicitly
|
||||||
|
disables `UIFeature.flair` when disabled.
|
||||||
|
* `UIFeature.advancedSettings` - Whether or not sections titled "advanced" in room and
|
||||||
|
user settings are shown to the user.
|
||||||
|
* `UIFeature.shareQrCode` - Whether or not the QR code on the share room/event dialog
|
||||||
|
is shown.
|
||||||
|
* `UIFeature.shareSocial` - Whether or not the social icons on the share room/event dialog
|
||||||
|
are shown.
|
||||||
|
* `UIFeature.identityServer` - Whether or not functionality requiring an identity server
|
||||||
|
is shown. When disabled, the user will not be able to interact with the identity
|
||||||
|
server (sharing email addresses, 3PID invites, etc).
|
||||||
|
* `UIFeature.thirdPartyId` - Whether or not UI relating to third party identifiers (3PIDs)
|
||||||
|
is shown. Typically this is considered "contact information" on the homeserver, and is
|
||||||
|
not directly related to the identity server.
|
||||||
|
* `UIFeature.registration` - Whether or not the registration page is accessible. Typically
|
||||||
|
useful if accounts are managed externally.
|
||||||
|
* `UIFeature.passwordReset` - Whether or not the password reset page is accessible. Typically
|
||||||
|
useful if accounts are managed externally.
|
||||||
|
* `UIFeature.deactivate` - Whether or not the deactivate account button is accessible. Typically
|
||||||
|
useful if accounts are managed externally.
|
||||||
|
* `UIFeature.advancedEncryption` - Whether or not advanced encryption options are shown to the
|
||||||
|
user.
|
||||||
|
* `UIFeature.roomHistorySettings` - Whether or not the room history settings are shown to the user.
|
||||||
|
This should only be used if the room history visibility options are managed by the server.
|
||||||
|
|||||||
34
docs/customisations.md
Normal file
34
docs/customisations.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Customisations
|
||||||
|
|
||||||
|
Element Web and the React SDK support "customisation points" that can be used to
|
||||||
|
easily add custom logic specific to a particular deployment of Element Web.
|
||||||
|
|
||||||
|
An example of this is the [security customisations
|
||||||
|
module](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/customisations/Security.ts).
|
||||||
|
This module in the React SDK only defines some empty functions and their types:
|
||||||
|
it does not do anything by default.
|
||||||
|
|
||||||
|
To make use of these customisation points, you will first need to fork Element
|
||||||
|
Web so that you can add your own code. Even though the default module is part of
|
||||||
|
the React SDK, you can still override it from the Element Web layer:
|
||||||
|
|
||||||
|
1. Copy the default customisation module to
|
||||||
|
`element-web/src/customisations/YourNameSecurity.ts`
|
||||||
|
2. Edit customisations points and make sure export the ones you actually want to
|
||||||
|
activate
|
||||||
|
3. Tweak the Element build process to use the customised module instead of the
|
||||||
|
default by adding this to the `additionalPlugins` array in `webpack.config.js`:
|
||||||
|
|
||||||
|
```js
|
||||||
|
new webpack.NormalModuleReplacementPlugin(
|
||||||
|
/src[\/\\]customisations[\/\\]Security\.ts/,
|
||||||
|
path.resolve(__dirname, 'src/customisations/YourNameSecurity.ts'),
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
|
If we add more customisation modules in the future, we'll likely improve these
|
||||||
|
steps to remove the need for build changes like the above.
|
||||||
|
|
||||||
|
By isolating customisations to their own module, this approach should remove the
|
||||||
|
chance of merge conflicts when updating your fork, and thus simplify ongoing
|
||||||
|
maintenance.
|
||||||
49
docs/e2ee.md
49
docs/e2ee.md
@@ -7,10 +7,57 @@ For private room creation, Element will default to encryption on but give you th
|
|||||||
|
|
||||||
Set the following on your homeserver's
|
Set the following on your homeserver's
|
||||||
`/.well-known/matrix/client` config:
|
`/.well-known/matrix/client` config:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"im.vector.riot.e2ee": {
|
"io.element.e2ee": {
|
||||||
"default": false
|
"default": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Secure backup
|
||||||
|
|
||||||
|
By default, Element strongly encourages (but does not require) users to set up
|
||||||
|
Secure Backup so that cross-signing identity key and message keys can be
|
||||||
|
recovered in case of a disaster where you lose access to all active devices.
|
||||||
|
|
||||||
|
## Requiring secure backup
|
||||||
|
|
||||||
|
To require Secure Backup to be configured before Element can be used, set the
|
||||||
|
following on your homeserver's `/.well-known/matrix/client` config:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"io.element.e2ee": {
|
||||||
|
"secure_backup_required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Preferring setup methods
|
||||||
|
|
||||||
|
By default, Element offers users a choice of a random key or user-chosen
|
||||||
|
passphrase when setting up Secure Backup. If a homeserver admin would like to
|
||||||
|
only offer one of these, you can signal this via the
|
||||||
|
`/.well-known/matrix/client` config, for example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"io.element.e2ee": {
|
||||||
|
"secure_backup_setup_methods": ["passphrase"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The field `secure_backup_setup_methods` is an array listing the methods the
|
||||||
|
client should display. Supported values currently include `key` and
|
||||||
|
`passphrase`. If the `secure_backup_setup_methods` field is not present or
|
||||||
|
exists but does not contain any supported methods, Element will fallback to the
|
||||||
|
default value of: `["key", "passphrase"]`.
|
||||||
|
|
||||||
|
# Compatibility
|
||||||
|
|
||||||
|
The settings above were first proposed under a `im.vector.riot.e2ee` key, which
|
||||||
|
is now deprecated. Element will check for either key, preferring
|
||||||
|
`io.element.e2ee` if both exist.
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ For example, flags make the following things possible:
|
|||||||
* Extended testing of a feature via labs on develop
|
* Extended testing of a feature via labs on develop
|
||||||
* Enabling features when ready instead of the first moment the code is released
|
* Enabling features when ready instead of the first moment the code is released
|
||||||
* Testing a feature with a specific set of users (by enabling only on a specific
|
* Testing a feature with a specific set of users (by enabling only on a specific
|
||||||
Riot instance)
|
Element instance)
|
||||||
|
|
||||||
The size of the feature controlled by a feature flag may vary widely: it could
|
The size of the feature controlled by a feature flag may vary widely: it could
|
||||||
be a large project like reactions or a smaller change to an existing algorithm.
|
be a large project like reactions or a smaller change to an existing algorithm.
|
||||||
@@ -35,7 +35,7 @@ clients commit to doing the associated clean up work once a feature stabilises.
|
|||||||
When starting work on a feature, we should create a matching feature flag:
|
When starting work on a feature, we should create a matching feature flag:
|
||||||
|
|
||||||
1. Add a new
|
1. Add a new
|
||||||
[setting](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.js)
|
[setting](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.ts)
|
||||||
of the form:
|
of the form:
|
||||||
```js
|
```js
|
||||||
"feature_cats": {
|
"feature_cats": {
|
||||||
@@ -47,17 +47,9 @@ When starting work on a feature, we should create a matching feature flag:
|
|||||||
```
|
```
|
||||||
2. Check whether the feature is enabled as appropriate:
|
2. Check whether the feature is enabled as appropriate:
|
||||||
```js
|
```js
|
||||||
SettingsStore.isFeatureEnabled("feature_cats")
|
SettingsStore.getValue("feature_cats")
|
||||||
```
|
```
|
||||||
3. Add the feature to the set of labs on
|
3. Document the feature in the [labs documentation](https://github.com/vector-im/element-web/blob/develop/docs/labs.md)
|
||||||
[develop](https://github.com/vector-im/riot-web/blob/develop/riot.im/develop/config.json)
|
|
||||||
and [nightly](https://github.com/vector-im/riot-desktop/blob/develop/riot.im/nightly/config.json):
|
|
||||||
```json
|
|
||||||
"features": {
|
|
||||||
"feature_cats": "labs"
|
|
||||||
},
|
|
||||||
```
|
|
||||||
4. Document the feature in the [labs documentation](https://github.com/vector-im/riot-web/blob/develop/docs/labs.md)
|
|
||||||
|
|
||||||
With these steps completed, the feature is disabled by default, but can be
|
With these steps completed, the feature is disabled by default, but can be
|
||||||
enabled on develop and nightly by interested users for testing.
|
enabled on develop and nightly by interested users for testing.
|
||||||
@@ -67,69 +59,49 @@ The following lists a few common options.
|
|||||||
|
|
||||||
## Enabling by default on develop and nightly
|
## Enabling by default on develop and nightly
|
||||||
|
|
||||||
Set the feature to `enable` in the
|
Set the feature to `true` in the
|
||||||
[develop](https://github.com/vector-im/riot-web/blob/develop/riot.im/develop/config.json)
|
[develop](https://github.com/vector-im/element-web/blob/develop/element.io/develop/config.json)
|
||||||
and
|
and
|
||||||
[nightly](https://github.com/vector-im/riot-desktop/blob/develop/riot.im/nightly/config.json)
|
[nightly](https://github.com/vector-im/element-desktop/blob/develop/element.io/nightly/config.json)
|
||||||
configs:
|
configs:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"features": {
|
"features": {
|
||||||
"feature_cats": "enable"
|
"feature_cats": true
|
||||||
},
|
},
|
||||||
```
|
```
|
||||||
|
|
||||||
## Enabling by default on staging, app, and release
|
## Enabling by default on staging, app, and release
|
||||||
|
|
||||||
Set the feature to `enable` in the
|
Set the feature to `true` in the
|
||||||
[staging / app](https://github.com/vector-im/riot-web/blob/develop/riot.im/app/config.json)
|
[staging / app](https://github.com/vector-im/element-web/blob/develop/element.io/app/config.json)
|
||||||
and
|
and
|
||||||
[release](https://github.com/vector-im/riot-desktop/blob/develop/riot.im/release/config.json)
|
[release](https://github.com/vector-im/element-desktop/blob/develop/element.io/release/config.json)
|
||||||
configs.
|
configs.
|
||||||
|
|
||||||
**Warning:** While this does mean the feature is enabled by default for
|
**Note:** The above will only enable the feature for https://app.element.io and official Element
|
||||||
https://app.element.io and official Element Desktop builds, it will not be enabled by
|
Desktop builds. It will not be enabled for self-hosted installed, custom desktop builds, etc. To
|
||||||
default for self-hosted installs, custom desktop builds, etc. To cover those
|
cover these cases, change the setting's `default` in `Settings.ts` to `true`.
|
||||||
cases as well, the best options at the moment are converting to a regular
|
|
||||||
setting defaulted on or to remove the flag. Simply enabling the existing flag by
|
|
||||||
default in `Settings.js`
|
|
||||||
[does not work currently](https://github.com/vector-im/riot-web/issues/10360).
|
|
||||||
|
|
||||||
## Feature deployed successfully
|
## Feature deployed successfully
|
||||||
|
|
||||||
Once we're confident that a feature is working well, we should remove the flag:
|
Once we're confident that a feature is working well, we should remove or convert the flag.
|
||||||
|
|
||||||
1. Remove the [setting](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.js)
|
If the feature is meant to be turned off/on by the user:
|
||||||
2. Remove all `isFeatureEnabled` lines that test for the feature's setting
|
1. Remove `isFeature` from the [setting](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.ts)
|
||||||
3. Remove the feature from the [labs documentation](https://github.com/vector-im/riot-web/blob/develop/docs/labs.md)
|
2. Change the `default` to `true` (if desired).
|
||||||
4. Remove feature state from
|
3. Remove the feature from the [labs documentation](https://github.com/vector-im/element-web/blob/develop/docs/labs.md)
|
||||||
[develop](https://github.com/vector-im/riot-web/blob/develop/riot.im/develop/config.json),
|
4. Celebrate! 🥳
|
||||||
[nightly](https://github.com/vector-im/riot-desktop/blob/develop/riot.im/nightly/config.json),
|
|
||||||
[staging / app](https://github.com/vector-im/riot-web/blob/develop/riot.im/app/config.json),
|
If the feature is meant to be forced on (non-configurable):
|
||||||
|
1. Remove the [setting](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.ts)
|
||||||
|
2. Remove all `getValue` lines that test for the feature.
|
||||||
|
3. Remove the feature from the [labs documentation](https://github.com/vector-im/element-web/blob/develop/docs/labs.md)
|
||||||
|
4. If applicable, remove the feature state from
|
||||||
|
[develop](https://github.com/vector-im/element-web/blob/develop/element.io/develop/config.json),
|
||||||
|
[nightly](https://github.com/vector-im/element-desktop/blob/develop/element.io/nightly/config.json),
|
||||||
|
[staging / app](https://github.com/vector-im/element-web/blob/develop/element.io/app/config.json),
|
||||||
and
|
and
|
||||||
[release](https://github.com/vector-im/riot-desktop/blob/develop/riot.im/release/config.json)
|
[release](https://github.com/vector-im/element-desktop/blob/develop/element.io/release/config.json)
|
||||||
configs
|
configs
|
||||||
5. Celebrate! 🥳
|
5. Celebrate! 🥳
|
||||||
|
|
||||||
## Convert to a regular setting (optional)
|
|
||||||
|
|
||||||
Sometimes we decide a feature should always be user-controllable as a setting
|
|
||||||
even after it has been fully deployed. In that case, we would craft a new,
|
|
||||||
regular setting:
|
|
||||||
|
|
||||||
1. Remove the feature flag from
|
|
||||||
[settings](https://github.com/matrix-org/matrix-react-sdk/blob/develop/src/settings/Settings.js)
|
|
||||||
and add a regular setting with the appropriate levels for your feature
|
|
||||||
2. Replace the `isFeatureEnabled` lines with `getValue` or similar calls
|
|
||||||
according to the [settings
|
|
||||||
docs](https://github.com/matrix-org/matrix-react-sdk/blob/develop/docs/settings.md)
|
|
||||||
(checking carefully, as we may want a different mix of code paths when the
|
|
||||||
feature is always present but gated by a setting)
|
|
||||||
3. Remove the feature from the [labs documentation](https://github.com/vector-im/riot-web/blob/develop/docs/labs.md)
|
|
||||||
4. Remove feature state from
|
|
||||||
[develop](https://github.com/vector-im/riot-web/blob/develop/riot.im/develop/config.json),
|
|
||||||
[nightly](https://github.com/vector-im/riot-desktop/blob/develop/riot.im/nightly/config.json),
|
|
||||||
[staging / app](https://github.com/vector-im/riot-web/blob/develop/riot.im/app/config.json),
|
|
||||||
and
|
|
||||||
[release](https://github.com/vector-im/riot-desktop/blob/develop/riot.im/release/config.json)
|
|
||||||
configs
|
|
||||||
|
|||||||
BIN
docs/img/pr-checks.png
Normal file
BIN
docs/img/pr-checks.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 155 KiB |
@@ -40,7 +40,7 @@ should start a new conference on your Jitsi server.
|
|||||||
domain will appear later in the URL as a configuration parameter.
|
domain will appear later in the URL as a configuration parameter.
|
||||||
|
|
||||||
**Hint**: If you want everyone on your homeserver to use the same Jitsi server by
|
**Hint**: If you want everyone on your homeserver to use the same Jitsi server by
|
||||||
default, and you are using riot-web 1.6 or newer, set the following on your homeserver's
|
default, and you are using element-web 1.6 or newer, set the following on your homeserver's
|
||||||
`/.well-known/matrix/client` config:
|
`/.well-known/matrix/client` config:
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -50,7 +50,22 @@ default, and you are using riot-web 1.6 or newer, set the following on your home
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Mobile app support
|
## Element Android
|
||||||
|
|
||||||
|
Element Android (1.0.5+) supports custom Jitsi domains, similar to Element Web above.
|
||||||
|
|
||||||
|
1:1 calls, or calls between you and one other person, do not use Jitsi. Instead, those
|
||||||
|
calls work directly between clients or via TURN servers configured on the respective
|
||||||
|
homeservers.
|
||||||
|
|
||||||
|
For rooms with more than 2 joined members, when creating a Jitsi conference via call/video buttons of the toolbar (not via integration manager), Element Android will create a widget using the [wrapper](https://github.com/vector-im/element-web/blob/develop/docs/jitsi-dev.md) hosted on `app.element.io`.
|
||||||
|
The domain used is the one specified by the `/.well-known/matrix/client` endpoint, and if not present it uses the fallback defined in `config.xml` (jitsi.riot.im)
|
||||||
|
|
||||||
|
For active Jitsi widgets in the room, a native Jitsi widget UI is created and points to the instance specified in the `domain` key of the widget content data.
|
||||||
|
|
||||||
|
Element Android manages allowed native widgets permissions a bit differently than web widgets (as the data shared are different and never shared with the widget URL). For Jitsi widgets, permissions are requested only once per domain (consent saved in account data).
|
||||||
|
|
||||||
|
## Element iOS
|
||||||
|
|
||||||
Currently the Element mobile apps do not support custom Jitsi servers and will instead
|
Currently the Element mobile apps do not support custom Jitsi servers and will instead
|
||||||
use the default `jitsi.riot.im` server. When users on the mobile apps join the call,
|
use the default `jitsi.riot.im` server. When users on the mobile apps join the call,
|
||||||
|
|||||||
36
docs/labs.md
36
docs/labs.md
@@ -7,6 +7,18 @@ 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
|
**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.**
|
dropped. Ask in the room if you are unclear about any details here.**
|
||||||
|
|
||||||
|
## Matrix Spaces [MSC1772](https://github.com/matrix-org/matrix-doc/pull/1772) support (`feature_spaces`)
|
||||||
|
|
||||||
|
Enables showing, using, creating, and managing spaces. Create Spaces from the all new Space Panel (to left of Room List).
|
||||||
|
|
||||||
|
Incompatible with (will disable) `feature_custom_tags`, `feature_communities_v2_prototypes` and stable Communities/Groups support.
|
||||||
|
|
||||||
|
Still in heavy development.
|
||||||
|
|
||||||
|
## Render LaTeX maths in messages (`feature_latex_maths`)
|
||||||
|
|
||||||
|
Enables rendering of LaTeX maths in messages using [KaTeX](https://katex.org/). LaTeX between single dollar-signs is interpreted as inline maths and double dollar-signs as display maths (i.e. centred on its own line).
|
||||||
|
|
||||||
## New spinner design (`feature_new_spinner`)
|
## New spinner design (`feature_new_spinner`)
|
||||||
|
|
||||||
Replaces the old spinner image with a new, svg-based one featuring a sleeker design.
|
Replaces the old spinner image with a new, svg-based one featuring a sleeker design.
|
||||||
@@ -65,6 +77,13 @@ Ban lists are rooms within Matrix, proposed as [MSC2313](https://github.com/matr
|
|||||||
[Mjolnir](https://github.com/matrix-org/mjolnir) is a set of moderation tools which support
|
[Mjolnir](https://github.com/matrix-org/mjolnir) is a set of moderation tools which support
|
||||||
ban lists.
|
ban lists.
|
||||||
|
|
||||||
|
## Inline widgets
|
||||||
|
|
||||||
|
`feature_inline_widgets` allows rendering and sending of inline widgets. Inline
|
||||||
|
widgets are typically polls or rich embedded content in rooms.
|
||||||
|
|
||||||
|
[#riot-web:matrix.org]: https://matrix.to/#/#riot-web:matrix.org
|
||||||
|
|
||||||
## Verifications in DMs (`feature_dm_verification`)
|
## Verifications in DMs (`feature_dm_verification`)
|
||||||
|
|
||||||
An implementation of [MSC2241](https://github.com/matrix-org/matrix-doc/pull/2241). When enabled, verification might not work with devices which don't support MSC2241.
|
An implementation of [MSC2241](https://github.com/matrix-org/matrix-doc/pull/2241). When enabled, verification might not work with devices which don't support MSC2241.
|
||||||
@@ -94,3 +113,20 @@ adds an ability for end users to add themes themselves by using a URL to the JSO
|
|||||||
theme definition.
|
theme definition.
|
||||||
|
|
||||||
For some sample themes, check out [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes).
|
For some sample themes, check out [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes).
|
||||||
|
|
||||||
|
## Message preview tweaks
|
||||||
|
|
||||||
|
To enable message previews for reactions in all rooms, enable `feature_roomlist_preview_reactions_all`.
|
||||||
|
To enable message previews for reactions in DMs, enable `feature_roomlist_preview_reactions_dms`, ignored when it is enabled for all rooms.
|
||||||
|
|
||||||
|
## Communities v2 prototyping (`feature_communities_v2_prototypes`) [In Development]
|
||||||
|
|
||||||
|
**This is a highly experimental implementation for parts of the communities v2 experience.** It does not
|
||||||
|
represent what communities v2 will look/feel like and can/will change without notice. Due to the early
|
||||||
|
stages this feature is in and the requirement for a compatible homeserver, we will not be accepting issues
|
||||||
|
or feedback for this functionality at this time.
|
||||||
|
|
||||||
|
## Dehydrated devices (`feature_dehydration`)
|
||||||
|
|
||||||
|
Allows users to receive encrypted messages by creating a device that is stored
|
||||||
|
encrypted on the server, as described in [MSC2697](https://github.com/matrix-org/matrix-doc/pull/2697).
|
||||||
|
|||||||
33
docs/pr-previews.md
Normal file
33
docs/pr-previews.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# Pull Request Previews
|
||||||
|
|
||||||
|
Pull requests to the React SDK layer (and in the future other layers as well)
|
||||||
|
automatically set up a preview site with a full deployment of Element with the
|
||||||
|
changes from the pull request added in so that anyone can easily test and review
|
||||||
|
them. This is especially useful for checking visual and interactive changes.
|
||||||
|
|
||||||
|
To access the preview site, scroll down to the bottom of the PR where the
|
||||||
|
various CI results are displayed:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
The checks section could be collapsed at first, so you may need to click "Show
|
||||||
|
all checks" to reveal them. Look for an entry that mentions `deploy-preview`. It
|
||||||
|
may be at the end of the list, so you may need scroll a bit to see it. To access
|
||||||
|
the preview site, click the "Details" link in the deploy preview row.
|
||||||
|
|
||||||
|
**Important:** Please always use test accounts when logging into preview sites,
|
||||||
|
as they may contain unreviewed and potentially dangerous code that could damage
|
||||||
|
your account, exfiltrate encryption keys, etc.
|
||||||
|
|
||||||
|
## FAQs
|
||||||
|
|
||||||
|
### Are preview sites created for pull requests from contributors?
|
||||||
|
|
||||||
|
Yes, they are created for all PRs from any author.
|
||||||
|
|
||||||
|
### Do preview sites expire after some time period?
|
||||||
|
|
||||||
|
No, there is no expiry date, so they should remain accessible indefinitely, but
|
||||||
|
of course they obviously aren't meant to live beyond the development workflow,
|
||||||
|
so please don't rely on them for anything important. They may disappear at any
|
||||||
|
time without notice.
|
||||||
@@ -14,6 +14,7 @@ When reviewing code, here are some things we look for and also things we avoid:
|
|||||||
* Performance
|
* Performance
|
||||||
* Accessibility
|
* Accessibility
|
||||||
* Security
|
* Security
|
||||||
|
* Quality via automated and manual testing
|
||||||
* Comments and documentation where needed
|
* Comments and documentation where needed
|
||||||
* Sharing knowledge of different areas among the team
|
* Sharing knowledge of different areas among the team
|
||||||
* Ensuring it's something we're comfortable maintaining for the long term
|
* Ensuring it's something we're comfortable maintaining for the long term
|
||||||
@@ -34,6 +35,7 @@ When reviewing code, here are some things we look for and also things we avoid:
|
|||||||
* Reviewers should be explicit about required versus optional changes
|
* Reviewers should be explicit about required versus optional changes
|
||||||
* Reviews are conversations and the PR author should feel comfortable
|
* Reviews are conversations and the PR author should feel comfortable
|
||||||
discussing and pushing back on changes before making them
|
discussing and pushing back on changes before making them
|
||||||
|
* Reviewers are encouraged to ask for tests where they believe it is reasonable
|
||||||
* Core team should lead by example through their tone and language
|
* Core team should lead by example through their tone and language
|
||||||
* Take the time to thank and point out good code changes
|
* Take the time to thank and point out good code changes
|
||||||
* Using softer language like "please" and "what do you think?" goes a long way
|
* Using softer language like "please" and "what do you think?" goes a long way
|
||||||
@@ -41,7 +43,7 @@ When reviewing code, here are some things we look for and also things we avoid:
|
|||||||
|
|
||||||
### Workflow
|
### Workflow
|
||||||
|
|
||||||
* Authors should request review from the riot-web team by default (if someone on
|
* Authors should request review from the element-web team by default (if someone on
|
||||||
the team is clearly the expert in an area, a direct review request to them may
|
the team is clearly the expert in an area, a direct review request to them may
|
||||||
be more appropriate)
|
be more appropriate)
|
||||||
* Reviewers should remove the team review request and request review from
|
* Reviewers should remove the team review request and request review from
|
||||||
@@ -71,10 +73,9 @@ functionality is:
|
|||||||
required (though may still be useful) since we can continue tweaking
|
required (though may still be useful) since we can continue tweaking
|
||||||
|
|
||||||
As it can be difficult to review design work from looking at just the changed
|
As it can be difficult to review design work from looking at just the changed
|
||||||
files in a PR, authors should be prepared for Design and / or Product teams to
|
files in a PR, a [preview site](./pr-previews.md) that includes your changes
|
||||||
request a link to an ad-hoc build of Element (hosted anywhere) that can be used for
|
will be added automatically so that anyone who's interested can try them out
|
||||||
the review. In the future, we [hope to automate
|
easily.
|
||||||
this](https://github.com/vector-im/riot-web/issues/12624) for every PR.
|
|
||||||
|
|
||||||
Before starting work on a feature, it's best to ensure your plan aligns well
|
Before starting work on a feature, it's best to ensure your plan aligns well
|
||||||
with our vision for Element. Please chat with the team in
|
with our vision for Element. Please chat with the team in
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ other changes:
|
|||||||
- skins/vector/themes/foo/css
|
- skins/vector/themes/foo/css
|
||||||
- skins/vector/themes/foo/img
|
- skins/vector/themes/foo/img
|
||||||
- skins/vector/themes/foo/fonts
|
- skins/vector/themes/foo/fonts
|
||||||
- ideally riot-web would contain almost nothing but skins/vector directory.
|
- ideally element-web would contain almost nothing but skins/vector directory.
|
||||||
- ability to entirely replace CSS rather than override it for a given theme
|
- ability to entirely replace CSS rather than override it for a given theme
|
||||||
- e.g. if we replace `Login.js` with `StatusLogin.js`, then we should similarly be able to replace `_Login.scss` with `_StatusLogin.scss`.
|
- e.g. if we replace `Login.js` with `StatusLogin.js`, then we should similarly be able to replace `_Login.scss` with `_StatusLogin.scss`.
|
||||||
|
|
||||||
|
|||||||
@@ -6,27 +6,27 @@
|
|||||||
- Be able to understand English
|
- Be able to understand English
|
||||||
- Be able to understand the language you want to translate Element into
|
- Be able to understand the language you want to translate Element into
|
||||||
|
|
||||||
## Step 0: Join #riotweb-translations:matrix.org
|
## Step 0: Join #element-translations:matrix.org
|
||||||
|
|
||||||
1. Come and join https://matrix.to/#/#riotweb-translations:matrix.org
|
1. Come and join https://matrix.to/#/#element-translations:matrix.org
|
||||||
2. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :)
|
2. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :)
|
||||||
|
|
||||||
## Step 1: Preparing your Weblate Profile
|
## Step 1: Preparing your Weblate Profile
|
||||||
|
|
||||||
1. Head to https://translate.riot.im and register either via Github or email
|
1. Head to https://translate.element.io and register either via Github or email
|
||||||
2. After registering check if you got an email to verify your account and click the link (if there is none head to step 1.4)
|
2. After registering check if you got an email to verify your account and click the link (if there is none head to step 1.4)
|
||||||
3. Log into weblate
|
3. Log into weblate
|
||||||
4. Head to https://translate.riot.im/accounts/profile/ and select the languages you know and maybe another language you know too.
|
4. Head to https://translate.element.io/accounts/profile/ and select the languages you know and maybe another language you know too.
|
||||||
6. Head to https://translate.riot.im/accounts/profile/#subscriptions and select Element Web as Project
|
6. Head to https://translate.element.io/accounts/profile/#subscriptions and select Element Web as Project
|
||||||
|
|
||||||
## How to check if your language already is being translated
|
## How to check if your language already is being translated
|
||||||
|
|
||||||
Go to https://translate.riot.im/projects/riot-web/ and visit the 2 sub-projects.
|
Go to https://translate.element.io/projects/element-web/ and visit the 2 sub-projects.
|
||||||
If your language is listed go to Step 2a and if not go to Step 2b
|
If your language is listed go to Step 2a and if not go to Step 2b
|
||||||
|
|
||||||
## Step 2a: Helping on existing languages.
|
## Step 2a: Helping on existing languages.
|
||||||
|
|
||||||
1. Head to one of the projects listed https://translate.riot.im/projects/riot-web/
|
1. Head to one of the projects listed https://translate.element.io/projects/element-web/
|
||||||
2. Click on the ``translate`` button on the right side of your language
|
2. Click on the ``translate`` button on the right side of your language
|
||||||
3. Fill in the translations in the writeable field. You will see the original English string and the string of your second language above.
|
3. Fill in the translations in the writeable field. You will see the original English string and the string of your second language above.
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ Head to the explanations under Steb 2b
|
|||||||
|
|
||||||
## Step 2b: Adding a new language
|
## Step 2b: Adding a new language
|
||||||
|
|
||||||
1. Go to one of the projects listed https://translate.riot.im/projects/riot-web/
|
1. Go to one of the projects listed https://translate.element.io/projects/element-web/
|
||||||
2. Click the ``Start new translation`` button at the bottom
|
2. Click the ``Start new translation`` button at the bottom
|
||||||
3. Select a language
|
3. Select a language
|
||||||
4. Start translating like in 2a.3
|
4. Start translating like in 2a.3
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ official element.io distribution, but these files may be useful if you want to
|
|||||||
inspect the configuration used there.
|
inspect the configuration used there.
|
||||||
|
|
||||||
Element Desktop uses a separate config (see
|
Element Desktop uses a separate config (see
|
||||||
https://github.com/vector-im/riot-desktop/tree/develop/element.io).
|
https://github.com/vector-im/element-desktop/tree/develop/element.io).
|
||||||
|
|
||||||
Deployment scripts (such as app/deploy.py) are meant to be run on the web server
|
Deployment scripts (such as app/deploy.py) are meant to be run on the web server
|
||||||
hosting the Element installation.
|
hosting the Element installation.
|
||||||
|
|||||||
@@ -12,8 +12,7 @@
|
|||||||
],
|
],
|
||||||
"hosting_signup_link": "https://element.io/matrix-services?utm_source=element-web&utm_medium=web",
|
"hosting_signup_link": "https://element.io/matrix-services?utm_source=element-web&utm_medium=web",
|
||||||
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
|
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
|
||||||
"features": {
|
"showLabsSettings": false,
|
||||||
},
|
|
||||||
"piwik": {
|
"piwik": {
|
||||||
"url": "https://piwik.riot.im/",
|
"url": "https://piwik.riot.im/",
|
||||||
"siteId": 1,
|
"siteId": 1,
|
||||||
@@ -21,7 +20,8 @@
|
|||||||
},
|
},
|
||||||
"roomDirectory": {
|
"roomDirectory": {
|
||||||
"servers": [
|
"servers": [
|
||||||
"matrix.org"
|
"matrix.org",
|
||||||
|
"gitter.im"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"enable_presence_by_hs_url": {
|
"enable_presence_by_hs_url": {
|
||||||
@@ -37,5 +37,15 @@
|
|||||||
"url": "https://element.io/cookie-policy",
|
"url": "https://element.io/cookie-policy",
|
||||||
"text": "Cookie Policy"
|
"text": "Cookie Policy"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"hostSignup": {
|
||||||
|
"brand": "Element Home",
|
||||||
|
"cookiePolicyUrl": "https://element.io/cookie-policy",
|
||||||
|
"domains": [
|
||||||
|
"matrix.org"
|
||||||
|
],
|
||||||
|
"privacyPolicyUrl": "https://element.io/privacy",
|
||||||
|
"termsOfServiceUrl": "https://element.io/terms-of-service",
|
||||||
|
"url": "https://ems.element.io/element-home/in-app-loader"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#
|
#
|
||||||
# download and unpack a riot-web tarball.
|
# download and unpack a element-web tarball.
|
||||||
#
|
#
|
||||||
# Allows `bundles` to be extracted to a common directory, and a link to
|
# Allows `bundles` to be extracted to a common directory, and a link to
|
||||||
# config.json to be added.
|
# config.json to be added.
|
||||||
|
|||||||
@@ -12,19 +12,7 @@
|
|||||||
],
|
],
|
||||||
"hosting_signup_link": "https://element.io/matrix-services?utm_source=element-web&utm_medium=web",
|
"hosting_signup_link": "https://element.io/matrix-services?utm_source=element-web&utm_medium=web",
|
||||||
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
|
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
|
||||||
"features": {
|
"showLabsSettings": true,
|
||||||
"feature_new_spinner": "labs",
|
|
||||||
"feature_pinning": "labs",
|
|
||||||
"feature_custom_status": "labs",
|
|
||||||
"feature_custom_tags": "labs",
|
|
||||||
"feature_state_counters": "labs",
|
|
||||||
"feature_many_integration_managers": "labs",
|
|
||||||
"feature_mjolnir": "labs",
|
|
||||||
"feature_dm_verification": "labs",
|
|
||||||
"feature_bridge_state": "labs",
|
|
||||||
"feature_presence_in_room_list": "labs",
|
|
||||||
"feature_custom_themes": "labs"
|
|
||||||
},
|
|
||||||
"piwik": {
|
"piwik": {
|
||||||
"url": "https://piwik.riot.im/",
|
"url": "https://piwik.riot.im/",
|
||||||
"siteId": 1,
|
"siteId": 1,
|
||||||
@@ -32,7 +20,8 @@
|
|||||||
},
|
},
|
||||||
"roomDirectory": {
|
"roomDirectory": {
|
||||||
"servers": [
|
"servers": [
|
||||||
"matrix.org"
|
"matrix.org",
|
||||||
|
"gitter.im"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"enable_presence_by_hs_url": {
|
"enable_presence_by_hs_url": {
|
||||||
@@ -48,5 +37,15 @@
|
|||||||
"url": "https://element.io/cookie-policy",
|
"url": "https://element.io/cookie-policy",
|
||||||
"text": "Cookie Policy"
|
"text": "Cookie Policy"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"hostSignup": {
|
||||||
|
"brand": "Element Home",
|
||||||
|
"cookiePolicyUrl": "https://element.io/cookie-policy",
|
||||||
|
"domains": [
|
||||||
|
"matrix.org"
|
||||||
|
],
|
||||||
|
"privacyPolicyUrl": "https://element.io/privacy",
|
||||||
|
"termsOfServiceUrl": "https://element.io/terms-of-service",
|
||||||
|
"url": "https://ems.element.io/element-home/in-app-loader"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
155
package.json
155
package.json
@@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "riot-web",
|
"name": "element-web",
|
||||||
"productName": "Riot",
|
"version": "1.7.23",
|
||||||
"version": "1.7.4",
|
|
||||||
"description": "A feature-rich client for Matrix.org",
|
"description": "A feature-rich client for Matrix.org",
|
||||||
"author": "New Vector Ltd.",
|
"author": "New Vector Ltd.",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/vector-im/riot-web"
|
"url": "https://github.com/vector-im/element-web"
|
||||||
},
|
},
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"files": [
|
"files": [
|
||||||
@@ -35,18 +34,16 @@
|
|||||||
"reskindex:watch": "reskindex -h src/header -w",
|
"reskindex:watch": "reskindex -h src/header -w",
|
||||||
"reskindex:watch-react": "node scripts/yarn-sub.js matrix-react-sdk reskindex:watch",
|
"reskindex:watch-react": "node scripts/yarn-sub.js matrix-react-sdk reskindex:watch",
|
||||||
"clean": "rimraf lib webapp",
|
"clean": "rimraf lib webapp",
|
||||||
"build": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle",
|
"build": "yarn clean && yarn build:genfiles && yarn build:bundle",
|
||||||
"build-stats": "yarn clean && yarn build:genfiles && yarn build:compile && yarn build:types && yarn build:bundle-stats",
|
"build-stats": "yarn clean && yarn build:genfiles && yarn build:bundle-stats",
|
||||||
"build:jitsi": "node scripts/build-jitsi.js",
|
"build:jitsi": "node scripts/build-jitsi.js",
|
||||||
"build:res": "node scripts/copy-res.js",
|
"build:res": "node scripts/copy-res.js",
|
||||||
"build:genfiles": "yarn reskindex && yarn build:res && yarn build:jitsi",
|
"build:genfiles": "yarn reskindex && yarn build:res && yarn build:jitsi",
|
||||||
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
|
"build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js",
|
||||||
"build:compile": "babel -d lib --verbose --extensions \".ts,.js,.tsx\" src",
|
|
||||||
"build:bundle": "webpack --progress --bail --mode production",
|
"build:bundle": "webpack --progress --bail --mode production",
|
||||||
"build:bundle-stats": "webpack --progress --bail --mode production --json > webpack-stats.json",
|
"build:bundle-stats": "webpack --progress --bail --mode production --json > webpack-stats.json",
|
||||||
"build:types": "tsc --emitDeclarationOnly --jsx react",
|
|
||||||
"dist": "scripts/package.sh",
|
"dist": "scripts/package.sh",
|
||||||
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,riot-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js\"",
|
"start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,element-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js\"",
|
||||||
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w",
|
"start:res": "yarn build:jitsi && node scripts/copy-res.js -w",
|
||||||
"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": "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",
|
||||||
"lint": "yarn lint:types && yarn lint:js && yarn lint:style",
|
"lint": "yarn lint:types && yarn lint:js && yarn lint:style",
|
||||||
@@ -58,93 +55,103 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browser-request": "^0.3.3",
|
"browser-request": "^0.3.3",
|
||||||
"gfm.css": "^1.1.2",
|
"gfm.css": "^1.1.2",
|
||||||
"highlight.js": "^9.13.1",
|
"highlight.js": "^10.5.0",
|
||||||
"matrix-js-sdk": "8.1.0",
|
"jsrsasign": "^10.1.5",
|
||||||
"matrix-react-sdk": "3.2.0",
|
"katex": "^0.12.0",
|
||||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz",
|
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
|
||||||
|
"matrix-react-sdk": "github:matrix-org/matrix-react-sdk#develop",
|
||||||
|
"matrix-widget-api": "^0.1.0-beta.13",
|
||||||
|
"olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.7.2",
|
||||||
"react": "^16.9.0",
|
"random-string": "^0.2.0",
|
||||||
"react-dom": "^16.9.0",
|
"react": "^16.14.0",
|
||||||
"sanitize-html": "^1.19.1",
|
"react-dom": "^16.14.0",
|
||||||
"ua-parser-js": "^0.7.19",
|
"sanitize-html": "github:apostrophecms/sanitize-html#3c7f93f2058f696f5359e3e58d464161647226db",
|
||||||
"url": "^0.11.0"
|
"ua-parser-js": "^0.7.23"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/cli": "^7.7.5",
|
"@babel/core": "^7.12.10",
|
||||||
"@babel/core": "^7.7.5",
|
"@babel/plugin-proposal-class-properties": "^7.12.1",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.7.4",
|
"@babel/plugin-proposal-decorators": "^7.12.12",
|
||||||
"@babel/plugin-proposal-decorators": "^7.7.4",
|
"@babel/plugin-proposal-export-default-from": "^7.12.1",
|
||||||
"@babel/plugin-proposal-export-default-from": "^7.7.4",
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
|
||||||
"@babel/plugin-proposal-numeric-separator": "^7.7.4",
|
"@babel/plugin-proposal-numeric-separator": "^7.12.7",
|
||||||
"@babel/plugin-proposal-object-rest-spread": "^7.7.4",
|
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
|
||||||
"@babel/plugin-syntax-dynamic-import": "^7.7.4",
|
"@babel/plugin-proposal-optional-chaining": "^7.12.7",
|
||||||
"@babel/plugin-transform-flow-comments": "^7.7.4",
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
||||||
"@babel/plugin-transform-runtime": "^7.7.6",
|
"@babel/plugin-transform-flow-comments": "^7.12.1",
|
||||||
"@babel/preset-env": "^7.7.6",
|
"@babel/plugin-transform-runtime": "^7.12.10",
|
||||||
"@babel/preset-flow": "^7.7.4",
|
"@babel/preset-env": "^7.12.11",
|
||||||
"@babel/preset-react": "^7.7.4",
|
"@babel/preset-flow": "^7.12.1",
|
||||||
"@babel/preset-typescript": "^7.7.4",
|
"@babel/preset-react": "^7.12.10",
|
||||||
"@babel/register": "^7.7.4",
|
"@babel/preset-typescript": "^7.12.7",
|
||||||
"@babel/runtime": "^7.7.6",
|
"@babel/register": "^7.12.10",
|
||||||
|
"@babel/runtime": "^7.12.5",
|
||||||
"@types/flux": "^3.1.9",
|
"@types/flux": "^3.1.9",
|
||||||
"@types/modernizr": "^3.5.3",
|
"@types/modernizr": "^3.5.3",
|
||||||
"@types/node": "^12.12.41",
|
"@types/node": "^14.14.22",
|
||||||
"@types/react": "16.9",
|
"@types/react": "^16.9",
|
||||||
"@types/react-dom": "^16.9.4",
|
"@types/react-dom": "^16.9.10",
|
||||||
"autoprefixer": "^9.7.3",
|
"@types/sanitize-html": "^1.27.1",
|
||||||
"babel-eslint": "^10.0.3",
|
"autoprefixer": "^9.8.6",
|
||||||
"babel-jest": "^24.9.0",
|
"babel-eslint": "^10.1.0",
|
||||||
"babel-loader": "^8.0.6",
|
"babel-jest": "^26.6.3",
|
||||||
|
"babel-loader": "^8.2.2",
|
||||||
"canvas": "^2.6.1",
|
"canvas": "^2.6.1",
|
||||||
"chokidar": "^3.3.1",
|
"chokidar": "^3.5.1",
|
||||||
"concurrently": "^4.0.1",
|
"concurrently": "^5.3.0",
|
||||||
"cpx": "^1.3.2",
|
"cpx": "^1.5.0",
|
||||||
"css-loader": "^3.3.2",
|
"css-loader": "^3.6.0",
|
||||||
"eslint": "7.3.1",
|
"eslint": "7.18.0",
|
||||||
"eslint-config-matrix-org": "^0.1.2",
|
"eslint-config-matrix-org": "^0.2.0",
|
||||||
"eslint-plugin-babel": "^4.1.2",
|
"eslint-plugin-babel": "^5.3.1",
|
||||||
"eslint-plugin-flowtype": "^2.50.3",
|
"eslint-plugin-flowtype": "^5.2.0",
|
||||||
"eslint-plugin-react": "^7.11.1",
|
"eslint-plugin-react": "^7.22.0",
|
||||||
"eslint-plugin-react-hooks": "^2.2.0",
|
"eslint-plugin-react-hooks": "^4.2.0",
|
||||||
"extract-text-webpack-plugin": "^4.0.0-beta.0",
|
"extract-text-webpack-plugin": "^4.0.0-beta.0",
|
||||||
"fake-indexeddb": "^3.0.0",
|
"fake-indexeddb": "^3.1.2",
|
||||||
"file-loader": "^5.0.2",
|
"file-loader": "^5.1.0",
|
||||||
"fs-extra": "^0.30.0",
|
"fs-extra": "^0.30.0",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
"jest": "^24.9.0",
|
"jest": "^26.6.3",
|
||||||
"jest-environment-jsdom-fourteen": "^1.0.1",
|
"jest-environment-jsdom-sixteen": "^1.0.3",
|
||||||
"json-loader": "^0.5.3",
|
"json-loader": "^0.5.7",
|
||||||
"loader-utils": "^1.2.3",
|
"loader-utils": "^1.4.0",
|
||||||
"matrix-mock-request": "^1.2.3",
|
"matrix-mock-request": "^1.2.3",
|
||||||
"matrix-react-test-utils": "^0.2.2",
|
"matrix-react-test-utils": "^0.2.2",
|
||||||
"mini-css-extract-plugin": "^0.8.0",
|
"mini-css-extract-plugin": "^0.12.0",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.5",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^1.0.4",
|
||||||
"modernizr": "^3.6.0",
|
"modernizr": "^3.11.4",
|
||||||
"node-fetch": "^2.6.0",
|
"node-fetch": "^2.6.1",
|
||||||
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
"optimize-css-assets-webpack-plugin": "^5.0.4",
|
||||||
|
"postcss-calc": "^7.0.5",
|
||||||
"postcss-easings": "^2.0.0",
|
"postcss-easings": "^2.0.0",
|
||||||
"postcss-extend": "^1.0.5",
|
"postcss-extend": "^1.0.5",
|
||||||
"postcss-hexrgba": "^2.0.0",
|
"postcss-hexrgba": "^2.0.1",
|
||||||
"postcss-import": "^12.0.1",
|
"postcss-import": "^12.0.1",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^3.0.0",
|
||||||
"postcss-mixins": "^6.2.3",
|
"postcss-mixins": "^6.2.3",
|
||||||
"postcss-nested": "^4.2.1",
|
"postcss-nested": "^4.2.3",
|
||||||
"postcss-preset-env": "^6.7.0",
|
"postcss-preset-env": "^6.7.0",
|
||||||
"postcss-scss": "^2.0.0",
|
"postcss-scss": "^2.1.1",
|
||||||
"postcss-simple-vars": "^5.0.2",
|
"postcss-simple-vars": "^5.0.2",
|
||||||
"postcss-strip-inline-comments": "^0.1.5",
|
"postcss-strip-inline-comments": "^0.1.5",
|
||||||
"rimraf": "^2.4.3",
|
"rimraf": "^3.0.2",
|
||||||
"shell-escape": "^0.2.0",
|
"shell-escape": "^0.2.0",
|
||||||
"stylelint": "^12.0.1",
|
"simple-proxy-agent": "^1.1.0",
|
||||||
"terser-webpack-plugin": "^2.3.0",
|
"stylelint": "^13.9.0",
|
||||||
"typescript": "^3.7.3",
|
"terser-webpack-plugin": "^2.3.8",
|
||||||
"webpack": "^4.41.2",
|
"typescript": "^4.1.3",
|
||||||
"webpack-cli": "^3.3.10",
|
"webpack": "^4.46.0",
|
||||||
"webpack-dev-server": "^3.9.0"
|
"webpack-cli": "^3.3.12",
|
||||||
|
"webpack-dev-server": "^3.11.2"
|
||||||
|
},
|
||||||
|
"resolutions": {
|
||||||
|
"**/@types/react": "^16.14"
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"testEnvironment": "jest-environment-jsdom-fourteen",
|
"testEnvironment": "jest-environment-jsdom-sixteen",
|
||||||
"testMatch": [
|
"testMatch": [
|
||||||
"<rootDir>/test/**/*-test.js"
|
"<rootDir>/test/**/*-test.js"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -38,14 +38,12 @@ do
|
|||||||
echo "Upgrading $i to $latestver..."
|
echo "Upgrading $i to $latestver..."
|
||||||
yarn add -E $i@$latestver
|
yarn add -E $i@$latestver
|
||||||
git add -u
|
git add -u
|
||||||
# The `-e` flag opens the editor and gives you a chance to check
|
git commit -m "Upgrade $i to $latestver"
|
||||||
# the upgrade for correctness.
|
|
||||||
git commit -m "Upgrade $i to $latestver" -e
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
./node_modules/matrix-js-sdk/release.sh -u vector-im -z "$orig_args"
|
./node_modules/matrix-js-sdk/release.sh -n -z "$orig_args"
|
||||||
|
|
||||||
release="${1#v}"
|
release="${1#v}"
|
||||||
tag="v${release}"
|
tag="v${release}"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
self.addEventListener('fetch',() => {});
|
self.addEventListener('fetch', () => {});
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ we don't have an account and should hide them. No account == no guest account ei
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="mx_Parent">
|
<div class="mx_Parent">
|
||||||
<a href="https://riot.im" target="_blank" rel="noopener">
|
<a href="https://element.io" target="_blank" rel="noopener">
|
||||||
<img src="welcome/images/logo.svg" alt="" class="mx_Logo"/>
|
<img src="welcome/images/logo.svg" alt="" class="mx_Logo"/>
|
||||||
</a>
|
</a>
|
||||||
<h1 class="mx_Header_title">_t("Welcome to Element")</h1>
|
<h1 class="mx_Header_title">_t("Welcome to Element")</h1>
|
||||||
@@ -185,7 +185,7 @@ we don't have an account and should hide them. No account == no guest account ei
|
|||||||
</div>
|
</div>
|
||||||
<!-- The comments below are meant to be used by Ansible as a quick way
|
<!-- The comments below are meant to be used by Ansible as a quick way
|
||||||
to strip out the marked content when desired.
|
to strip out the marked content when desired.
|
||||||
See https://github.com/vector-im/riot-web/issues/8622.
|
See https://github.com/vector-im/element-web/issues/8622.
|
||||||
TODO: Strip out these comments and rely on the guest flag -->
|
TODO: Strip out these comments and rely on the guest flag -->
|
||||||
<!-- BEGIN Ansible: Remove these lines when guest access is disabled -->
|
<!-- BEGIN Ansible: Remove these lines when guest access is disabled -->
|
||||||
<div class="mx_ButtonRow mx_WelcomePage_guestFunctions">
|
<div class="mx_ButtonRow mx_WelcomePage_guestFunctions">
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const fs = require("fs");
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
const mkdirp = require("mkdirp");
|
const mkdirp = require("mkdirp");
|
||||||
const fetch = require("node-fetch");
|
const fetch = require("node-fetch");
|
||||||
|
const ProxyAgent = require("simple-proxy-agent");
|
||||||
|
|
||||||
console.log("Making webapp directory");
|
console.log("Making webapp directory");
|
||||||
mkdirp.sync("webapp");
|
mkdirp.sync("webapp");
|
||||||
@@ -14,7 +15,13 @@ mkdirp.sync("webapp");
|
|||||||
// curl -s https://jitsi.riot.im/libs/external_api.min.js > ./webapp/jitsi_external_api.min.js
|
// curl -s https://jitsi.riot.im/libs/external_api.min.js > ./webapp/jitsi_external_api.min.js
|
||||||
console.log("Downloading Jitsi script");
|
console.log("Downloading Jitsi script");
|
||||||
const fname = path.join("webapp", "jitsi_external_api.min.js");
|
const fname = path.join("webapp", "jitsi_external_api.min.js");
|
||||||
fetch("https://jitsi.riot.im/libs/external_api.min.js").then(res => {
|
|
||||||
|
const options = {};
|
||||||
|
if (process.env.HTTPS_PROXY) {
|
||||||
|
options.agent = new ProxyAgent(process.env.HTTPS_PROXY, {tunnel: true});
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch("https://jitsi.riot.im/libs/external_api.min.js", options).then(res => {
|
||||||
const stream = fs.createWriteStream(fname);
|
const stream = fs.createWriteStream(fname);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
res.body.pipe(stream);
|
res.body.pipe(stream);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
rm dist/riot-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist
|
rm dist/element-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist
|
||||||
|
|
||||||
# Since the deps are fetched from git, we can rev-parse
|
# Since the deps are fetched from git, we can rev-parse
|
||||||
REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD)
|
REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD)
|
||||||
|
|||||||
@@ -21,16 +21,19 @@ const INCLUDE_LANGS = [
|
|||||||
{'value': 'en_US', 'label': 'English (US)'},
|
{'value': 'en_US', 'label': 'English (US)'},
|
||||||
{'value': 'eo', 'label': 'Esperanto'},
|
{'value': 'eo', 'label': 'Esperanto'},
|
||||||
{'value': 'es', 'label': 'Español'},
|
{'value': 'es', 'label': 'Español'},
|
||||||
|
{'value': 'et', 'label': 'Eesti'},
|
||||||
{'value': 'eu', 'label': 'Euskara'},
|
{'value': 'eu', 'label': 'Euskara'},
|
||||||
{'value': 'fi', 'label': 'Suomi'},
|
{'value': 'fi', 'label': 'Suomi'},
|
||||||
{'value': 'fr', 'label': 'Français'},
|
{'value': 'fr', 'label': 'Français'},
|
||||||
{'value': 'gl', 'label': 'Galego'},
|
{'value': 'gl', 'label': 'Galego'},
|
||||||
|
{'value': 'he', 'label': 'עברית'},
|
||||||
{'value': 'hi', 'label': 'हिन्दी'},
|
{'value': 'hi', 'label': 'हिन्दी'},
|
||||||
{'value': 'hu', 'label': 'Magyar'},
|
{'value': 'hu', 'label': 'Magyar'},
|
||||||
{'value': 'is', 'label': 'íslenska'},
|
{'value': 'is', 'label': 'íslenska'},
|
||||||
{'value': 'it', 'label': 'Italiano'},
|
{'value': 'it', 'label': 'Italiano'},
|
||||||
{'value': 'ja', 'label': '日本語'},
|
{'value': 'ja', 'label': '日本語'},
|
||||||
{'value': 'jbo', 'label': 'banjubu\'o'},
|
{'value': 'jbo', 'label': 'banjubu\'o'},
|
||||||
|
{'value': 'kab', 'label': 'Taqbaylit'},
|
||||||
{'value': 'ko', 'label': '한국어'},
|
{'value': 'ko', 'label': '한국어'},
|
||||||
{'value': 'lt', 'label': 'Lietuvių'},
|
{'value': 'lt', 'label': 'Lietuvių'},
|
||||||
{'value': 'lv', 'label': 'Latviešu'},
|
{'value': 'lv', 'label': 'Latviešu'},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#
|
#
|
||||||
# download and unpack a riot-web tarball.
|
# download and unpack a element-web tarball.
|
||||||
#
|
#
|
||||||
# Allows `bundles` to be extracted to a common directory, and a link to
|
# Allows `bundles` to be extracted to a common directory, and a link to
|
||||||
# config.json to be added.
|
# config.json to be added.
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ cd react-sdk
|
|||||||
yarn link
|
yarn link
|
||||||
yarn link matrix-js-sdk
|
yarn link matrix-js-sdk
|
||||||
yarn --network-timeout=100000 install
|
yarn --network-timeout=100000 install
|
||||||
|
yarn reskindex
|
||||||
cd ../
|
cd ../
|
||||||
|
|
||||||
echo "Setting up element-web with react-sdk and js-sdk packages"
|
echo "Setting up element-web with react-sdk and js-sdk packages"
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ function dodep() {
|
|||||||
|
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
echo -en 'travis_fold:start:matrix-js-sdk\r'
|
|
||||||
echo 'Setting up matrix-js-sdk'
|
echo 'Setting up matrix-js-sdk'
|
||||||
|
|
||||||
dodep matrix-org matrix-js-sdk
|
dodep matrix-org matrix-js-sdk
|
||||||
@@ -78,16 +77,12 @@ dodep matrix-org matrix-js-sdk
|
|||||||
pushd matrix-js-sdk
|
pushd matrix-js-sdk
|
||||||
yarn link
|
yarn link
|
||||||
yarn install
|
yarn install
|
||||||
yarn build
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
yarn link matrix-js-sdk
|
yarn link matrix-js-sdk
|
||||||
|
|
||||||
echo -en 'travis_fold:end:matrix-js-sdk\r'
|
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
echo -en 'travis_fold:start:matrix-react-sdk\r'
|
|
||||||
echo 'Setting up matrix-react-sdk'
|
echo 'Setting up matrix-react-sdk'
|
||||||
|
|
||||||
dodep matrix-org matrix-react-sdk
|
dodep matrix-org matrix-react-sdk
|
||||||
@@ -96,13 +91,11 @@ pushd matrix-react-sdk
|
|||||||
yarn link
|
yarn link
|
||||||
yarn link matrix-js-sdk
|
yarn link matrix-js-sdk
|
||||||
yarn install
|
yarn install
|
||||||
yarn build
|
yarn reskindex
|
||||||
popd
|
popd
|
||||||
|
|
||||||
yarn link matrix-react-sdk
|
yarn link matrix-react-sdk
|
||||||
|
|
||||||
echo -en 'travis_fold:end:matrix-react-sdk\r'
|
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
# Link the reskindex binary in place: if we used `yarn link`,
|
# Link the reskindex binary in place: if we used `yarn link`,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ my $gh = Net::GitHub->new(
|
|||||||
login => 'ara4n', pass => read_password("github password: "),
|
login => 'ara4n', pass => read_password("github password: "),
|
||||||
);
|
);
|
||||||
|
|
||||||
$gh->set_default_user_repo('vector-im', 'riot-web');
|
$gh->set_default_user_repo('vector-im', 'element-web');
|
||||||
|
|
||||||
#my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 });
|
#my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 });
|
||||||
my @issues = $gh->issue->repos_issues({ state => 'all' });
|
my @issues = $gh->issue->repos_issues({ state => 'all' });
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ my $gh = Net::GitHub->new(
|
|||||||
login => 'ara4n', pass => read_password("github password: "),
|
login => 'ara4n', pass => read_password("github password: "),
|
||||||
);
|
);
|
||||||
|
|
||||||
$gh->set_default_user_repo('vector-im', 'riot-web');
|
$gh->set_default_user_repo('vector-im', 'element-web');
|
||||||
|
|
||||||
#my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 });
|
#my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 });
|
||||||
my @issues = $gh->issue->repos_issues({ state => 'all' });
|
my @issues = $gh->issue->repos_issues({ state => 'all' });
|
||||||
|
|||||||
@@ -16,20 +16,20 @@ yarn build
|
|||||||
cp config.sample.json webapp/
|
cp config.sample.json webapp/
|
||||||
|
|
||||||
mkdir -p dist
|
mkdir -p dist
|
||||||
cp -r webapp riot-$version
|
cp -r webapp element-$version
|
||||||
|
|
||||||
# Just in case you have a local config, remove it before packaging
|
# Just in case you have a local config, remove it before packaging
|
||||||
rm riot-$version/config.json || true
|
rm element-$version/config.json || true
|
||||||
|
|
||||||
# if $version looks like semver with leading v, strip it before writing to file
|
# if $version looks like semver with leading v, strip it before writing to file
|
||||||
if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then
|
if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then
|
||||||
echo ${version:1} > riot-$version/version
|
echo ${version:1} > element-$version/version
|
||||||
else
|
else
|
||||||
echo ${version} > riot-$version/version
|
echo ${version} > element-$version/version
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tar chvzf dist/riot-$version.tar.gz riot-$version
|
tar chvzf dist/element-$version.tar.gz element-$version
|
||||||
rm -r riot-$version
|
rm -r element-$version
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Packaged dist/riot-$version.tar.gz"
|
echo "Packaged dist/element-$version.tar.gz"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#
|
#
|
||||||
# auto-deploy script for https://riot.im/develop
|
# auto-deploy script for https://develop.element.io
|
||||||
#
|
#
|
||||||
# Listens for buildkite webhook pokes (https://buildkite.com/docs/apis/webhooks)
|
# Listens for buildkite webhook pokes (https://buildkite.com/docs/apis/webhooks)
|
||||||
# When it gets one, downloads the artifact from buildkite
|
# When it gets one, downloads the artifact from buildkite
|
||||||
@@ -191,7 +191,7 @@ def deploy_tarball(artifact, build_dir):
|
|||||||
|
|
||||||
# Download the tarball here as buildkite needs auth to do this
|
# Download the tarball here as buildkite needs auth to do this
|
||||||
# we don't pgp-sign buildkite artifacts, relying on HTTPS and buildkite
|
# we don't pgp-sign buildkite artifacts, relying on HTTPS and buildkite
|
||||||
# not being evil. If that's not good enough for you, don't use riot.im/develop.
|
# not being evil. If that's not good enough for you, don't use develop.element.io.
|
||||||
resp = requests.get(artifact['download_url'], stream=True, headers=req_headers())
|
resp = requests.get(artifact['download_url'], stream=True, headers=req_headers())
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
with open(artifact['filename'], 'wb') as ofp:
|
with open(artifact['filename'], 'wb') as ofp:
|
||||||
|
|||||||
27
src/@types/global.d.ts
vendored
27
src/@types/global.d.ts
vendored
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2020 New Vector Ltd
|
Copyright 2020, 2021 New Vector Ltd
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -17,21 +17,42 @@ limitations under the License.
|
|||||||
import "matrix-react-sdk/src/@types/global"; // load matrix-react-sdk's type extensions first
|
import "matrix-react-sdk/src/@types/global"; // load matrix-react-sdk's type extensions first
|
||||||
import type {Renderer} from "react-dom";
|
import type {Renderer} from "react-dom";
|
||||||
|
|
||||||
|
type ElectronChannel =
|
||||||
|
"app_onAction" |
|
||||||
|
"before-quit" |
|
||||||
|
"check_updates" |
|
||||||
|
"install_update" |
|
||||||
|
"ipcCall" |
|
||||||
|
"ipcReply" |
|
||||||
|
"loudNotification" |
|
||||||
|
"preferences" |
|
||||||
|
"seshat" |
|
||||||
|
"seshatReply" |
|
||||||
|
"setBadgeCount" |
|
||||||
|
"update-downloaded" |
|
||||||
|
"userDownloadCompleted" |
|
||||||
|
"userDownloadOpen";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Window {
|
interface Window {
|
||||||
mxSendRageshake: (text: string, withLogs?: boolean) => void;
|
mxSendRageshake: (text: string, withLogs?: boolean) => void;
|
||||||
matrixChat: ReturnType<Renderer>;
|
matrixChat: ReturnType<Renderer>;
|
||||||
|
|
||||||
// electron-only
|
// electron-only
|
||||||
ipcRenderer: any;
|
electron?: Electron;
|
||||||
|
|
||||||
// opera-only
|
// opera-only
|
||||||
opera: any;
|
opera?: any;
|
||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/API/InstallTrigger
|
// https://developer.mozilla.org/en-US/docs/Web/API/InstallTrigger
|
||||||
InstallTrigger: any;
|
InstallTrigger: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface Electron {
|
||||||
|
on(channel: ElectronChannel, listener: (event: Event, ...args: any[]) => void): void;
|
||||||
|
send(channel: ElectronChannel, ...args: any[]): void;
|
||||||
|
}
|
||||||
|
|
||||||
interface Navigator {
|
interface Navigator {
|
||||||
// PWA badging extensions https://w3c.github.io/badging/
|
// PWA badging extensions https://w3c.github.io/badging/
|
||||||
setAppBadge?(count: number): Promise<void>;
|
setAppBadge?(count: number): Promise<void>;
|
||||||
|
|||||||
@@ -78,17 +78,26 @@ const CompatibilityView: React.FC<IProps> = ({ onAccept }) => {
|
|||||||
<div>
|
<div>
|
||||||
<h2 id="step2_heading">Use Element on mobile</h2>
|
<h2 id="step2_heading">Use Element on mobile</h2>
|
||||||
<p><strong>iOS</strong> (iPhone or iPad)</p>
|
<p><strong>iOS</strong> (iPhone or iPad)</p>
|
||||||
<a href="https://apps.apple.com/app/vector/id1083446067" target="_blank"
|
<a
|
||||||
className="mx_ClearDecoration">
|
href="https://apps.apple.com/app/vector/id1083446067"
|
||||||
|
target="_blank"
|
||||||
|
className="mx_ClearDecoration"
|
||||||
|
>
|
||||||
<img height="48" src="themes/element/img/download/apple.svg" alt="Apple App Store" />
|
<img height="48" src="themes/element/img/download/apple.svg" alt="Apple App Store" />
|
||||||
</a>
|
</a>
|
||||||
<p className="mx_Spacer"><strong>Android</strong></p>
|
<p className="mx_Spacer"><strong>Android</strong></p>
|
||||||
<a href="https://play.google.com/store/apps/details?id=im.vector.app" target="_blank"
|
<a
|
||||||
className="mx_ClearDecoration">
|
href="https://play.google.com/store/apps/details?id=im.vector.app"
|
||||||
|
target="_blank"
|
||||||
|
className="mx_ClearDecoration"
|
||||||
|
>
|
||||||
<img height="48" src="themes/element/img/download/google.svg" alt="Google Play Store" />
|
<img height="48" src="themes/element/img/download/google.svg" alt="Google Play Store" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://f-droid.org/repository/browse/?fdid=im.vector.alpha" target="_blank"
|
<a
|
||||||
className="mx_ClearDecoration">
|
href="https://f-droid.org/repository/browse/?fdid=im.vector.app"
|
||||||
|
target="_blank"
|
||||||
|
className="mx_ClearDecoration"
|
||||||
|
>
|
||||||
<img height="48" src="themes/element/img/download/fdroid.svg" alt="F-Droid" />
|
<img height="48" src="themes/element/img/download/fdroid.svg" alt="F-Droid" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import EmbeddedPage from 'matrix-react-sdk/src/components/structures/EmbeddedPage';
|
import EmbeddedPage from 'matrix-react-sdk/src/components/structures/EmbeddedPage';
|
||||||
import sanitizeHtml from 'sanitize-html';
|
import sanitizeHtml from 'sanitize-html';
|
||||||
import { _t } from 'matrix-react-sdk/src/languageHandler';
|
import { _t } from 'matrix-react-sdk/src/languageHandler';
|
||||||
@@ -28,7 +26,7 @@ export default class VectorEmbeddedPage extends EmbeddedPage {
|
|||||||
// we're overriding the base component here, for Element-specific tweaks
|
// we're overriding the base component here, for Element-specific tweaks
|
||||||
translate(s) {
|
translate(s) {
|
||||||
s = sanitizeHtml(_t(s));
|
s = sanitizeHtml(_t(s));
|
||||||
// ugly fix for https://github.com/vector-im/riot-web/issues/4243
|
// ugly fix for https://github.com/vector-im/element-web/issues/4243
|
||||||
// eslint-disable-next-line max-len
|
// eslint-disable-next-line max-len
|
||||||
s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noreferrer noopener"><img width="79" height="34" alt="Matrix" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>');
|
s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noreferrer noopener"><img width="79" height="34" alt="Matrix" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>');
|
||||||
return s;
|
return s;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ const VectorAuthFooter = () => {
|
|||||||
let links = [
|
let links = [
|
||||||
{"text": "Blog", "url": "https://element.io/blog"},
|
{"text": "Blog", "url": "https://element.io/blog"},
|
||||||
{"text": "Twitter", "url": "https://twitter.com/element_hq"},
|
{"text": "Twitter", "url": "https://twitter.com/element_hq"},
|
||||||
{"text": "GitHub", "url": "https://github.com/vector-im/riot-web"},
|
{"text": "GitHub", "url": "https://github.com/vector-im/element-web"},
|
||||||
];
|
];
|
||||||
|
|
||||||
if (brandingConfig && brandingConfig.authFooterLinks) {
|
if (brandingConfig && brandingConfig.authFooterLinks) {
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
|
import SdkConfig from 'matrix-react-sdk/src/SdkConfig';
|
||||||
|
|||||||
1
src/customisations/README.md
Symbolic link
1
src/customisations/README.md
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../docs/customisations.md
|
||||||
@@ -1,35 +1,36 @@
|
|||||||
{
|
{
|
||||||
"Dismiss": "تجاهل",
|
"Dismiss": "أهمِل",
|
||||||
"Unknown device": "جهاز مجهول",
|
"Unknown device": "جهاز مجهول",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "تحتاج الى استخدام الاتصال الآمن (HTTPS) للسماح بمشاركة الشاشة.",
|
"You need to be using HTTPS to place a screen-sharing call.": "عليك استعمال ميفاق HTTPS للاتصال بمشاركة الشاشة.",
|
||||||
"powered by Matrix": "مشغل بواسطة Matrix",
|
"powered by Matrix": "مشغل بواسطة Matrix",
|
||||||
"Welcome to Element": "مرحبا بك في Element",
|
"Welcome to Element": "مرحبًا بك في Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "دردشة مشفرة غير مركزية &تطبيق تعاوني مدعوم بواسطة [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "دردشة وتعاون غير مركزي معمّى، تدعمه [matrix]",
|
||||||
"Create Account": "انشاء حساب",
|
"Create Account": "أنشِئ حسابًا",
|
||||||
"Explore rooms": "استكشف غرف المحادثات",
|
"Explore rooms": "استكشِف الغرف",
|
||||||
"Sign In": "الدخول",
|
"Sign In": "لِج",
|
||||||
"Missing indexeddb worker script!": "منفذ السكريبت الخاص ب Indexeddb غير موجود!",
|
"Missing indexeddb worker script!": "سكربت عامل indexeddb ناقص!",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "خطأ في الاعدادات: يمكنك فقط تحديد واحد فقط من: default_server_config، default_server_name، أو default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "الضبط غير صالح: يمكنك تحديد واحدًا من الآتي فقط: default_server_config أو default_server_name أو default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "اعدادات خاطئة: لم يتم تحديد السيرفر الافتراضي.",
|
"Invalid configuration: no default server specified.": "الضبط غير صالح: لم تحدّد خادومًا مبدئيًا.",
|
||||||
"Your Element is misconfigured": "تطبيقك معد بطريقة خاطئة",
|
"Your Element is misconfigured": "لم يُضبط تطبيق Element كما ينبغي",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "اعداداتك تحتوى على بنية JSON غير صحيحة. يرجى تصحيح المشكلة واعادة تحديث الصفحة.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "يحتوي ضبط تطبيق Element على تنسيق JSON غير صالح. من فضلك صحّح المشكلة وأعِد تحميل الصفحة.",
|
||||||
"The message from the parser is: %(message)s": "الرسالة من المدقق هي:%(message)s",
|
"The message from the parser is: %(message)s": "الرسالة القادمة من المحلّل: %(message)s",
|
||||||
"Invalid JSON": "JSON خاطئ",
|
"Invalid JSON": "تنسيق JSON غير صالح",
|
||||||
"Unable to load config file: please refresh the page to try again.": "لم نستطع تحميل ملف الاعداد: يرجى تحديث الصفحة للمحاولة مرة اخرى.",
|
"Unable to load config file: please refresh the page to try again.": "تعذّر تحميل ملف الضبط: من فضلك أنعِش الصفحة لمعاودة المحاولة.",
|
||||||
"Unexpected error preparing the app. See console for details.": "حدث خطأ غير متوقع عند تجهيز التطبيق. انظر الى منصة التحكم للمزيد من التفاصيل.",
|
"Unexpected error preparing the app. See console for details.": "حدث عُطل غير متوقع أثناء تجهيز التطبيق. طالِع المِعراض للتفاصيل.",
|
||||||
"Download Completed": "تم اكتمال التحميل",
|
"Download Completed": "اكتمل التنزيل",
|
||||||
"Open": "فتح",
|
"Open": "افتح",
|
||||||
"Open user settings": "فتح اعدادات المستخدم",
|
"Open user settings": "افتح إعدادات المستخدم",
|
||||||
"Previous/next recently visited room or community": "السابقة/اللاحقة الغرفة او المجتمع الذي تمت زيارته مؤخرا",
|
"Previous/next recently visited room or community": "الغرفة أو المجتمع التالي/السابق الذي زرته حديثًا",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s سطح المكتب (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s لسطح المكتب (%(platformName)s)",
|
||||||
"Go to your browser to complete Sign In": "اذهب الى المتصفح لاكمال تسجيل الدخول",
|
"Go to your browser to complete Sign In": "افتح المتصفح لإكمال الولوج",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s، %(osName)s)",
|
||||||
"Unsupported browser": "متصفح غير متوافق",
|
"Unsupported browser": "متصفح غير مدعوم",
|
||||||
"Your browser can't run %(brand)s": "متصفحك لايمكنه تشغيل %(brand)s",
|
"Your browser can't run %(brand)s": "لا يمكن لمتصفحك تشغيل %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s يستخدم مزايا المتصفح المتقدمة والتي لا يدعمها متصفحك الحالي.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "يستعمل %(brand)s ميزات متقدمة في المتصفحات لا يدعمها متصفحك الحالي.",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "يرجى تثبيت <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "من فضلك ثبّت <chromeLink>كروم</chromeLink> أو <firefoxLink>فَيَرفُكس</firefoxLink> أو <safariLink>سفاري</safariLink> لأفضل تجربة.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "يمكنك الاستمرار في استخدام متصفحك الحالي، ولكن بعض او كل المزايا ربما لا تعمل ويكون شكل التطبيق وشعورك تجاهه غير صحيح.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "يمكنك مواصل استعمال متصفحك الحالي ولكن قد لا تعمل بعض المزايا (أو كلها) وقد لا يظهر التطبيق كما ينبغي له أن يظهر.",
|
||||||
"I understand the risks and wish to continue": "ادرك المخاطر وارغب في الاستمرار",
|
"I understand the risks and wish to continue": "أفهم المخاطرة وأود المواصلة",
|
||||||
"Go to element.io": "اذهب الى Element.io",
|
"Go to element.io": "انتقل إلى element.io",
|
||||||
"Failed to start": "فشل الاقلاع"
|
"Failed to start": "فشل البدء",
|
||||||
|
"Powered by Matrix": "تدعمه «ماترِكس»"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,5 +31,6 @@
|
|||||||
"Download Completed": "Свалянето завърши",
|
"Download Completed": "Свалянето завърши",
|
||||||
"Open": "Отвори",
|
"Open": "Отвори",
|
||||||
"Your browser can't run %(brand)s": "Браузърът ви не може да изпълни %(brand)s",
|
"Your browser can't run %(brand)s": "Браузърът ви не може да изпълни %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s използва модерни функции на браузъра, които не се поддържат от Вашия."
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s използва модерни функции на браузъра, които не се поддържат от Вашия.",
|
||||||
|
"Powered by Matrix": "Базирано на Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1,35 @@
|
|||||||
{}
|
{
|
||||||
|
"Missing indexeddb worker script!": "Nedostaje indexeddb radna skripta!",
|
||||||
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neispravna konfiguracija: navesti se samo može jedan od default_server_config, default_server_name ili default_hs_url.",
|
||||||
|
"Invalid configuration: no default server specified.": "Neispravna konfiguracija: nije naveden zadani server.",
|
||||||
|
"Your Element is misconfigured": "Vaš element je pogrešno konfiguriran",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfiguracija vašeg elementa sadrži nevažeći JSON. Ispravite problem i ponovo učitajte stranicu.",
|
||||||
|
"The message from the parser is: %(message)s": "Poruka parsera je: %(message)s",
|
||||||
|
"Invalid JSON": "Nevažeći JSON",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Nije moguće učitati konfiguracijsku datoteku: osvježite stranicu i pokušajte ponovo.",
|
||||||
|
"Unexpected error preparing the app. See console for details.": "Neočekivana greška prilikom pripreme aplikacije. Pogledajte konzolu za detalje.",
|
||||||
|
"Download Completed": "Preuzimanje završeno",
|
||||||
|
"Open": "Otvori",
|
||||||
|
"Dismiss": "Odbaci",
|
||||||
|
"Open user settings": "Otvori korisničke postavke",
|
||||||
|
"Previous/next recently visited room or community": "Prethodna / sljedeća nedavno posjećena soba ili zajednica",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Radna povrsina (%(platformName)s)",
|
||||||
|
"Go to your browser to complete Sign In": "Idite na svoj pretraživač da biste dovršili prijavu",
|
||||||
|
"Unknown device": "Nepoznat uređaj",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS za upućivanje poziva za dijeljenje ekrana.",
|
||||||
|
"Powered by Matrix": "Pokretano uz Matrix",
|
||||||
|
"Unsupported browser": "Nepodržani pretraživač",
|
||||||
|
"Your browser can't run %(brand)s": "Vaš pretraživač ne može pokretati %(brand)s",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s koristi napredne funkcije pretraživača koje vaš trenutni pretraživač ne podržava.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Molimo instalirajte <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ili <safariLink>Safari</safariLink> za najbolje iskustvo.",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Možete nastaviti koristiti svoj trenutni pretraživač, ali neke ili sve funkcije možda neće raditi, a izgled i dojam aplikacije mogu biti neispravani.",
|
||||||
|
"I understand the risks and wish to continue": "Razumijem rizike i želim nastaviti",
|
||||||
|
"Go to element.io": "Idite na element.io",
|
||||||
|
"Failed to start": "Pokretanje nije uspjelo",
|
||||||
|
"Welcome to Element": "Dobrodošli u Element",
|
||||||
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirani, šifrirani razgovor & suradnja pokrenuta [matrix]",
|
||||||
|
"Sign In": "Prijavite se",
|
||||||
|
"Create Account": "Otvori račun",
|
||||||
|
"Explore rooms": "Istražite sobe"
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,14 +1,36 @@
|
|||||||
{
|
{
|
||||||
"Dismiss": "Omet",
|
"Dismiss": "Omet",
|
||||||
"Unknown device": "Dispositiu desconegut",
|
"Unknown device": "Dispositiu desconegut",
|
||||||
"Welcome to Element": "Us donem la benvinguda a Element",
|
"Welcome to Element": "Benvingut/da a Element",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Heu d'utilitzar HTTPS per poder fer una trucada amb pantalla compartida.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Has d'utilitzar HTTPS per poder fer una trucada amb pantalla compartida.",
|
||||||
"powered by Matrix": "amb tecnologia de Matrix",
|
"powered by Matrix": "amb tecnologia de Matrix",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Xat descentralitzat, encriptat i col·laboratiu amb tecnologia de [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Xat descentralitzat, xifrat i col·laboratiu amb tecnologia de [matrix]",
|
||||||
"Create Account": "Crea un compte",
|
"Create Account": "Crea un compte",
|
||||||
"Explore rooms": "Exploreu les sales",
|
"Explore rooms": "Explora sales",
|
||||||
"Sign In": "Inicia la sessió",
|
"Sign In": "Inicia sessió",
|
||||||
"Invalid configuration: no default server specified.": "Configuració no vàlida: no s'ha especificat cap servidor per defecte.",
|
"Invalid configuration: no default server specified.": "Configuració invàlida: no s'ha especificat cap servidor predeterminat.",
|
||||||
"Invalid JSON": "JSON no vàlid",
|
"Invalid JSON": "JSON invàlid",
|
||||||
"Go to your browser to complete Sign In": "Aneu al vostre navegador per completar l'inici de sessió"
|
"Go to your browser to complete Sign In": "Vés al navegador per completar l'inici de sessió",
|
||||||
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuració invàlida: només pots especificar una únic default_server_config, default_server_name, o default_hs_url.",
|
||||||
|
"Your Element is misconfigured": "Element està mal configurat",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configuració d'Element conté un JSON invàlid. Soluciona el problema i actualitza la pàgina.",
|
||||||
|
"The message from the parser is: %(message)s": "El missatge de l'analitzador és: %(message)s",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "No s'ha pogut carregar el fitxer de configuració: actualitza la pàgina per tornar-ho a provar.",
|
||||||
|
"Unexpected error preparing the app. See console for details.": "Error inesperat durant la preparació de l'aplicació. Consulta la consola pels a més detalls.",
|
||||||
|
"Download Completed": "Baixada completada",
|
||||||
|
"Open": "Obre",
|
||||||
|
"Open user settings": "Obre la configuració d'usuari",
|
||||||
|
"Previous/next recently visited room or community": "Anterior/següent sala o comunitat visitada recentment",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s d'escriptori (%(platformName)s)",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"Powered by Matrix": "Amb tecnologia de Matrix",
|
||||||
|
"Unsupported browser": "Navegador no compatible",
|
||||||
|
"Your browser can't run %(brand)s": "El teu navegador no pot executar %(brand)s",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utilitza funcions del navegador avançades que no són compatibles amb el teu navegador actual.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Instal·la <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, o <safariLink>Safari</safariLink> per obtenir la millor experiència.",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Pots continuar utilitzant el teu navegador actual, però algunes o totes les funcions podrien no funcionar i l'aspecte de l'aplicació podria ser incorrecte.",
|
||||||
|
"I understand the risks and wish to continue": "Entenc els riscos i vull continuar",
|
||||||
|
"Go to element.io": "Vés a element.io",
|
||||||
|
"Failed to start": "Ha fallat l'inici",
|
||||||
|
"Missing indexeddb worker script!": "Falta l'script del treballador indexeddb!"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,5 +28,9 @@
|
|||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Pro nejlepší zážitek si prosím nainstalujte prohlížeč <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, nebo <safariLink>Safari</safariLink>.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Pro nejlepší zážitek si prosím nainstalujte prohlížeč <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, nebo <safariLink>Safari</safariLink>.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Můžete pokračovat v užívání vašeho současného prohlížeče, ale některé (nebo dokonce všechny) funkce nemusí fungovat a vzhled a chování aplikace nemusí být správné.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Můžete pokračovat v užívání vašeho současného prohlížeče, ale některé (nebo dokonce všechny) funkce nemusí fungovat a vzhled a chování aplikace nemusí být správné.",
|
||||||
"I understand the risks and wish to continue": "Rozumím a přesto chci pokračovat",
|
"I understand the risks and wish to continue": "Rozumím a přesto chci pokračovat",
|
||||||
"Go to element.io": "Přejít na element.io"
|
"Go to element.io": "Přejít na element.io",
|
||||||
|
"Failed to start": "Nepovedlo se nastartovat",
|
||||||
|
"Powered by Matrix": "Běží na Matrixu",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s pro desktopový počítač (%(platformName)s)",
|
||||||
|
"Missing indexeddb worker script!": "Nenačetl se skript spravující indexdb!"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,13 +9,28 @@
|
|||||||
"Invalid JSON": "Ugyldig JSON",
|
"Invalid JSON": "Ugyldig JSON",
|
||||||
"Unexpected error preparing the app. See console for details.": "Uventet fejl ved forberedelse af appen. Se konsollen for detaljer.",
|
"Unexpected error preparing the app. See console for details.": "Uventet fejl ved forberedelse af appen. Se konsollen for detaljer.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfiguration: kan kun angive en af default_server_config, default_server_name eller default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfiguration: kan kun angive en af default_server_config, default_server_name eller default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Ugyldig konfiguration: ingen standardserver angivet.",
|
"Invalid configuration: no default server specified.": "Ugyldig konfiguration: Ingen standardserver er angivet.",
|
||||||
"Sign In": "Log ind",
|
"Sign In": "Log ind",
|
||||||
"Create Account": "Opret brugerkonto",
|
"Create Account": "Opret brugerkonto",
|
||||||
"Explore rooms": "Udforsk rum",
|
"Explore rooms": "Udforsk rum",
|
||||||
"Missing indexeddb worker script!": "Manglende indexeddb worker script!",
|
"Missing indexeddb worker script!": "Manglende indexeddb worker script!",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Ikke i stand til at loade config fil: genopfrisk venligst siden for at prøve igen.",
|
"Unable to load config file: please refresh the page to try again.": "Ikke i stand til at indlæse konfigurationsfil: Genopfrisk venligst siden for at prøve igen.",
|
||||||
"Open user settings": "Åbn brugerindstillinger",
|
"Open user settings": "Åbn brugerindstillinger",
|
||||||
"Previous/next recently visited room or community": "Forrige/næste besøgte rum eller fællesskab",
|
"Previous/next recently visited room or community": "Forrige/næste besøgte rum eller fællesskab",
|
||||||
"Go to your browser to complete Sign In": "Gå til din browser for at færdiggøre Log ind"
|
"Go to your browser to complete Sign In": "Gå til din browser for at færdiggøre Log ind",
|
||||||
|
"Go to element.io": "Gå til element.io",
|
||||||
|
"I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker at fortsætte",
|
||||||
|
"Unsupported browser": "Browser ikke understøttet",
|
||||||
|
"Open": "Åbn",
|
||||||
|
"Download Completed": "Hentning færdig",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Din Element konfiguration indeholder ugyldig JSON. Løs venligst problemet og genindlæs siden.",
|
||||||
|
"Your Element is misconfigured": "Din Element er konfigureret forkert",
|
||||||
|
"Your browser can't run %(brand)s": "Din browser kan ikke køre %(brand)s",
|
||||||
|
"Powered by Matrix": "Drevet af Matrix",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"Failed to start": "Opstart mislykkedes",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop %(platformName)s",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kan fortsætte med at bruge din nuværende browser, men du kan opleve at visse eller alle funktioner ikke vil fungere korrekt.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Venligst installer <chromeLink>Chrome</chromeLink>,<firefoxLink>Firefox</firefoxLink> eller <safariLink>Safari</safariLink> for den bedste oplevelse.",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s bruger avanceret browser funktioner som ikke er understøttet af din nuværende browser."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,18 +4,18 @@
|
|||||||
"Unknown device": "Unbekanntes Gerät",
|
"Unknown device": "Unbekanntes Gerät",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen um einen Anruf mit Bildschirmfreigabe durchzuführen.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen um einen Anruf mit Bildschirmfreigabe durchzuführen.",
|
||||||
"Welcome to Element": "Willkommen bei Element",
|
"Welcome to Element": "Willkommen bei Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- & Kollaborationslösung unterstützt von [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- & Kollaborationslösung mittels [matrix]",
|
||||||
"Sign In": "Anmelden",
|
"Sign In": "Anmelden",
|
||||||
"Create Account": "Account erstellen",
|
"Create Account": "Account erstellen",
|
||||||
"Explore rooms": "Erkunde Räume",
|
"Explore rooms": "Räume erkunden",
|
||||||
"Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe Konsole für Details.",
|
"Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe in die Konsole für mehr Details.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ungültige Konfiguration: Es kann nur eine der Optionen default_server_config, default_server_name oder default_hs_url angegeben werden.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ungültige Konfiguration: Es kann nur eine der Optionen default_server_config, default_server_name oder default_hs_url angegeben werden.",
|
||||||
"Invalid configuration: no default server specified.": "Ungültige Konfiguration: Es wurde kein Standardserver angegeben.",
|
"Invalid configuration: no default server specified.": "Ungültige Konfiguration: Es wurde kein Standardserver angegeben.",
|
||||||
"The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s",
|
"The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s",
|
||||||
"Invalid JSON": "Ungültiges JSON",
|
"Invalid JSON": "Ungültiges JSON",
|
||||||
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen",
|
"Go to your browser to complete Sign In": "Gehe in deinen Browser, um die Anmeldung abzuschließen",
|
||||||
"Open user settings": "Öffne Nutzer-Einstellungen",
|
"Open user settings": "Öffne Nutzer-Einstellungen",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Konfigurationsdatei kann nicht geladen werden: Bitte aktualisieren Sie die Seite, um es erneut zu versuchen.",
|
"Unable to load config file: please refresh the page to try again.": "Konfigurationsdatei kann nicht geladen werden: Bitte aktualisiere die Seite, um es erneut zu versuchen.",
|
||||||
"Missing indexeddb worker script!": "Fehlendes indexeddb Worker-Skript!",
|
"Missing indexeddb worker script!": "Fehlendes indexeddb Worker-Skript!",
|
||||||
"Previous/next recently visited room or community": "Vorheriger/nächster kürzlich besuchter Raum oder Community",
|
"Previous/next recently visited room or community": "Vorheriger/nächster kürzlich besuchter Raum oder Community",
|
||||||
"Unsupported browser": "Nicht unterstützter Browser",
|
"Unsupported browser": "Nicht unterstützter Browser",
|
||||||
@@ -24,13 +24,13 @@
|
|||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Bitte installiere <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, oder <safariLink>Safari</safariLink> für das beste Erlebnis.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Bitte installiere <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, oder <safariLink>Safari</safariLink> für das beste Erlebnis.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kannst mit diesem Browser weitermachen, aber einiges könnte nicht funktionieren und die Darstellung könnte fehlerhaft sein.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kannst deinen aktuellen Browser weiterhin verwenden, es kann aber sein, dass einige oder alle Funktionen nicht verfügbar stehen oder dass das Aussehen und die Bedienung der Anwendung nicht korrekt ist.",
|
||||||
"I understand the risks and wish to continue": "Ich verstehe die Risiken und möchte fortfahren",
|
"I understand the risks and wish to continue": "Ich verstehe die Risiken und möchte fortfahren",
|
||||||
"Your Element is misconfigured": "Dein Element ist fehlkonfiguriert",
|
"Your Element is misconfigured": "Dein Element ist falsch konfiguriert",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Element Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Element Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.",
|
||||||
"Download Completed": "Download fertiggestellt",
|
"Download Completed": "Download fertiggestellt",
|
||||||
"Open": "Öffnen",
|
"Open": "Öffnen",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s verwendet erweiterte Browserfunktionen, die von Ihrem aktuellen Browser nicht unterstützt werden.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s verwendet erweiterte Browserfunktionen, die von Ihrem aktuellen Browser nicht unterstützt werden.",
|
||||||
"Your browser can't run %(brand)s": "Dein Browser kann %(brand)s nicht ausführen",
|
"Your browser can't run %(brand)s": "Dein Browser kann %(brand)s nicht ausführen",
|
||||||
"Powered by Matrix": "Betrieben von Matrix"
|
"Powered by Matrix": "Betrieben mit Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,33 @@
|
|||||||
"You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για την πραγματοποίηση κλήσης διαμοιρασμού επιφάνειας εργασίας.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για την πραγματοποίηση κλήσης διαμοιρασμού επιφάνειας εργασίας.",
|
||||||
"powered by Matrix": "λειτουργεί με το Matrix",
|
"powered by Matrix": "λειτουργεί με το Matrix",
|
||||||
"Welcome to Element": "Καλώς ήλθατε στο Element",
|
"Welcome to Element": "Καλώς ήλθατε στο Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Αποκεντρωμένη, κρυπτογραφημένη συνομιλία και συνεργασία χρησιμοποιώντας το [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Αποκεντρωμένη, κρυπτογραφημένη συνεργασία συνομιλίας χρησιμοποιώντας το [matrix]",
|
||||||
"Sign In": "Σύνδεση",
|
"Sign In": "Σύνδεση",
|
||||||
"Create Account": "Δημιουργία Λογαριασμού",
|
"Create Account": "Δημιουργία Λογαριασμού",
|
||||||
"The message from the parser is: %(message)s": "Το μήνυμα από τον αναλυτή είναι: %(message)s",
|
"The message from the parser is: %(message)s": "Το μήνυμα από τον αναλυτή είναι: %(message)s",
|
||||||
"Invalid JSON": "Μη έγκυρο JSON",
|
"Invalid JSON": "Μη έγκυρο JSON",
|
||||||
"Unexpected error preparing the app. See console for details.": "Απρόοπτο σφάλμα κατά την προετοιμασία της εφαρμογής. Δείτε το τερματικό για λεπτομέρειες.",
|
"Unexpected error preparing the app. See console for details.": "Απρόοπτο σφάλμα κατά την προετοιμασία της εφαρμογής. Δείτε το τερματικό για λεπτομέρειες.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Μη έγκυρη ρύθμιση παραμέτρων: δυνατότητα ορισμού μόνο ένα από τα default_server_config, default_server_name, ή default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Μη έγκυρη ρύθμιση: δυνατότητα ορισμού μόνο ένα από τα default_server_config, default_server_name, ή default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Μη έγκυρη ρύθμιση παραμέτρων: δεν έχει οριστεί προκαθορισμένος διακομιστής.",
|
"Invalid configuration: no default server specified.": "Μη έγκυρη ρύθμιση παραμέτρων: δεν έχει οριστεί προκαθορισμένος διακομιστής.",
|
||||||
"Explore rooms": "Εξερευνήστε δωμάτια"
|
"Explore rooms": "Εξερευνήστε δωμάτια",
|
||||||
|
"Open": "Άνοιγμα",
|
||||||
|
"Go to your browser to complete Sign In": "Μεταβείτε στο πρόγραμμα περιήγησής σας για να ολοκληρώσετε τη σύνδεση",
|
||||||
|
"Powered by Matrix": "Με την υποστήριξη του Matrix",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Παρακαλούμε εγκαταστήστε <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, ή <safariLink>Safari</safariLink> για καλύτερη εμπειρία χρήσης.",
|
||||||
|
"Your Element is misconfigured": "Το Element σας δεν εχει ρυθμιστεί σωστά",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Η ρύθμιση του Element περιέχει μη έγκυρο JSON. Διορθώστε το πρόβλημα και φορτώστε ξανά τη σελίδα.",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Δεν είναι δυνατή η φόρτωση του αρχείου config: ανανεώστε τη σελίδα για να δοκιμάσετε ξανά.",
|
||||||
|
"Download Completed": "Η λήψη ολοκληρώθηκε",
|
||||||
|
"Open user settings": "Ανοίξτε τις ρυθμίσεις χρήστη",
|
||||||
|
"Previous/next recently visited room or community": "Προηγούμενο / επόμενο δωμάτιο ή κοινότητα που επισκεφτήκατε πρόσφατα",
|
||||||
|
"Unsupported browser": "Μη υποστηριζόμενο πρόγραμμα περιήγησης",
|
||||||
|
"Your browser can't run %(brand)s": "Το πρόγραμμα περιήγησής σας δεν μπορεί να εκτελέσει %(brand)s",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s χρησιμοποιεί προηγμένες δυνατότητες προγράμματος περιήγησης που δεν υποστηρίζονται από το τρέχον πρόγραμμα περιήγησής σας.",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Μπορείτε να συνεχίσετε να χρησιμοποιείτε το τρέχον πρόγραμμα περιήγησής σας, αλλά ορισμένες ή όλες οι λειτουργίες ενδέχεται να μην λειτουργούν και η εμφάνιση και η αίσθηση της εφαρμογής ενδέχεται να είναι λανθασμένη.",
|
||||||
|
"I understand the risks and wish to continue": "Κατανοώ τους κινδύνους και επιθυμώ να συνεχίσω",
|
||||||
|
"Go to element.io": "Πήγαινε στο element.io",
|
||||||
|
"Failed to start": "Αποτυχία έναρξης",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
||||||
|
"Missing indexeddb worker script!": "Απουσία indexeddb worker script!"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,5 +12,25 @@
|
|||||||
"Invalid JSON": "Invalid JSON",
|
"Invalid JSON": "Invalid JSON",
|
||||||
"Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.",
|
"Unexpected error preparing the app. See console for details.": "Unexpected error preparing the app. See console for details.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Invalid configuration: no default server specified."
|
"Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.",
|
||||||
|
"Failed to start": "Failed to start",
|
||||||
|
"Go to element.io": "Go to element.io",
|
||||||
|
"I understand the risks and wish to continue": "I understand the risks and wish to continue",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.",
|
||||||
|
"%(brand)s 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.",
|
||||||
|
"Your browser can't run %(brand)s": "Your browser can't run %(brand)s",
|
||||||
|
"Unsupported browser": "Unsupported browser",
|
||||||
|
"Powered by Matrix": "Powered by Matrix",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"Go to your browser to complete Sign In": "Go to your browser to complete Sign In",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
||||||
|
"Previous/next recently visited room or community": "Previous/next recently visited room or community",
|
||||||
|
"Open user settings": "Open user settings",
|
||||||
|
"Open": "Open",
|
||||||
|
"Download Completed": "Download Completed",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Unable to load config file: please refresh the page to try again.",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.",
|
||||||
|
"Your Element is misconfigured": "Your Element is misconfigured",
|
||||||
|
"Missing indexeddb worker script!": "Missing indexeddb worker script!"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,33 +3,34 @@
|
|||||||
"Dismiss": "Omitir",
|
"Dismiss": "Omitir",
|
||||||
"powered by Matrix": "con el poder de Matrix",
|
"powered by Matrix": "con el poder de Matrix",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.",
|
||||||
"Welcome to Element": "Bienvenido a Element",
|
"Welcome to Element": "Te damos la bienvenida a Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas y colaboración con el poder de [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas. Funciona con [matrix]",
|
||||||
"Sign In": "Iniciar sesión",
|
"Sign In": "Iniciar sesión",
|
||||||
"Create Account": "Crear cuenta",
|
"Create Account": "Crear cuenta",
|
||||||
"Explore rooms": "Explorar salas",
|
"Explore rooms": "Explorar salas",
|
||||||
"Unexpected error preparing the app. See console for details.": "Error inesperado preparando la aplicación. Vea la consola para más detalles.",
|
"Unexpected error preparing the app. See console for details.": "Error inesperado preparando la aplicación. Ver la consola para más detalles.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración errónea: sólo puede especificar uno de default_server_config, default_server_name, o default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración errónea: sólo puede especificar uno de default_server_config, default_server_name, o default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Configuración errónea: no se ha especificado servidor.",
|
"Invalid configuration: no default server specified.": "Configuración errónea: no se ha especificado servidor.",
|
||||||
"The message from the parser is: %(message)s": "El mensaje del parser es: %(message)s",
|
"The message from the parser is: %(message)s": "El mensaje del parser es: %(message)s",
|
||||||
"Invalid JSON": "JSON inválido",
|
"Invalid JSON": "JSON inválido",
|
||||||
"Open user settings": "Abrir opciones de usuario",
|
"Open user settings": "Abrir opciones de usuario",
|
||||||
"Go to your browser to complete Sign In": "Abre tu navegador web para completar el registro",
|
"Go to your browser to complete Sign In": "Abre tu navegador web para completar el registro",
|
||||||
"Missing indexeddb worker script!": "¡Worker script “indexeddb” faltante!",
|
"Missing indexeddb worker script!": "¡Falta el Worker script “indexeddb”!",
|
||||||
"Unable to load config file: please refresh the page to try again.": "No se ha podido cargar el archivo de configuración. Recarga la página para intentar nuevamente.",
|
"Unable to load config file: please refresh the page to try again.": "No se ha podido cargar el archivo de configuración. Recarga la página para intentarlo otra vez.",
|
||||||
"Previous/next recently visited room or community": "Anterior/siguiente sala o comunidad visitada recientemente",
|
"Previous/next recently visited room or community": "Anterior/siguiente sala o comunidad visitada recientemente",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s de escritorio (%(platformName)s)",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Unsupported browser": "Navegador no soportado",
|
"Unsupported browser": "Navegador no compatible",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor, instale <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, o <safariLink>Safari</safariLink> para la mejor experiencia.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor, instale <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, o <safariLink>Safari</safariLink> para la mejor experiencia.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Puedes seguir utilizando tu navegador actual, pero puede que algunas funcionalidades no estén disponibles o que algunas partes de la aplicación se muestren de forma incorrecta.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Puedes seguir utilizando tu navegador actual, pero puede que algunas funcionalidades no estén disponibles o que algunas partes de la aplicación se muestren de forma incorrecta.",
|
||||||
"I understand the risks and wish to continue": "Entiendo los riesgos y deseo continuar",
|
"I understand the risks and wish to continue": "Entiendo los riesgos y quiero continuar",
|
||||||
"Go to element.io": "Ir a element.io",
|
"Go to element.io": "Ir a element.io",
|
||||||
"Failed to start": "Fallo al iniciar",
|
"Failed to start": "Fallo al iniciar",
|
||||||
"Your Element is misconfigured": "Su Element está mal configurado",
|
"Your Element is misconfigured": "Tu aplicación Element está mal configurada",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Su configuración de Element contiene JSON inválido. Por favor corríjalo e inténtelo de nuevo.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Tu configuración de Element contiene JSON inválido. Por favor corrígelo e inténtelo de nuevo.",
|
||||||
"Download Completed": "Descarga completada",
|
"Download Completed": "Descarga completada",
|
||||||
"Open": "Abrir",
|
"Open": "Abrir",
|
||||||
"Your browser can't run %(brand)s": "Su navegador es compatible con %(brand)s",
|
"Your browser can't run %(brand)s": "Tu navegador no es compatible con %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza funciones avanzadas no soportadas por su navegador."
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funciones avanzadas que su navegador actual no soporta.",
|
||||||
|
"Powered by Matrix": "Funciona con Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"Invalid JSON": "Vigane JSON",
|
"Invalid JSON": "Vigane JSON",
|
||||||
"Unknown device": "Tundmatu seade",
|
"Unknown device": "Tundmatu seade",
|
||||||
"Invalid configuration: no default server specified.": "Vigane seadistus: vaikimisi server on määramata.",
|
"Invalid configuration: no default server specified.": "Vigane seadistus: vaikimisi server on määramata.",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Seadistuste faili laadimine ei õnnestunud: uuesti proovimiseks palun lae leht uuesti.",
|
"Unable to load config file: please refresh the page to try again.": "Seadistuste faili laadimine ei õnnestunud: uuesti proovimiseks palun laadi leht uuesti.",
|
||||||
"Unexpected error preparing the app. See console for details.": "Rakenduse ettevalmistamisel tekkis ootamatu viga. Täpsema teabe leiad konsoolist.",
|
"Unexpected error preparing the app. See console for details.": "Rakenduse ettevalmistamisel tekkis ootamatu viga. Täpsema teabe leiad konsoolist.",
|
||||||
"Open user settings": "Ava kasutaja seadistused",
|
"Open user settings": "Ava kasutaja seadistused",
|
||||||
"Go to your browser to complete Sign In": "Sisselogimiseks ava oma brauser",
|
"Go to your browser to complete Sign In": "Sisselogimiseks ava oma brauser",
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
"Previous/next recently visited room or community": "Eelmine/järgmine hiljuti kasutatud jututuba või kogukond",
|
"Previous/next recently visited room or community": "Eelmine/järgmine hiljuti kasutatud jututuba või kogukond",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Ekraani jagava kõne jaoks pead kasutama HTTPS-ühendust.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Ekraani jagava kõne jaoks pead kasutama HTTPS-ühendust.",
|
||||||
"powered by Matrix": "põhineb Matrix'il",
|
"powered by Matrix": "põhineb Matrix'il",
|
||||||
"Welcome to Element": "Tere tulemast Element kasutajaks",
|
"Welcome to Element": "Tere tulemast kasutama suhtlusrakendust Element",
|
||||||
"Sign In": "Logi sisse",
|
"Sign In": "Logi sisse",
|
||||||
"Create Account": "Loo konto",
|
"Create Account": "Loo konto",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s'i töölauaversioon (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s'i töölauaversioon (%(platformName)s)",
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"Download Completed": "Allalaadimine on lõpetatud",
|
"Download Completed": "Allalaadimine on lõpetatud",
|
||||||
"Open": "Ava",
|
"Open": "Ava",
|
||||||
"Your Element is misconfigured": "Sinu Element on valesti seadistatud",
|
"Your Element is misconfigured": "Sinu Element on valesti seadistatud",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Sinu Element'i seadistustes on vigased JSON-vormingus andmed. Palun paranda see viga ja lae leht uuesti.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Sinu Element'i seadistustes on vigased JSON-vormingus andmed. Palun paranda see viga ja laadi leht uuesti.",
|
||||||
"Your browser can't run %(brand)s": "%(brand)s ei toimi sinu brauseris",
|
"Your browser can't run %(brand)s": "%(brand)s ei toimi sinu brauseris",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s kasutab mitmeid uusi brauseri-põhiseid tehnoloogiaid, mis ei ole veel sinu veebibrauseris toetatud.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s kasutab mitmeid uusi brauseri-põhiseid tehnoloogiaid, mis ei ole veel sinu veebibrauseris toetatud.",
|
||||||
"Powered by Matrix": "Põhineb Matrix'il"
|
"Powered by Matrix": "Põhineb Matrix'il"
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
"Unknown device": "Appareil inconnu",
|
"Unknown device": "Appareil inconnu",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel avec partage d’écran.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel avec partage d’écran.",
|
||||||
"Welcome to Element": "Bienvenue sur Element",
|
"Welcome to Element": "Bienvenue sur Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Discussion & collaboration décentralisées et chiffrées, propulsées par [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Messagerie et collaboration décentralisées et chiffrées, propulsées par [matrix]",
|
||||||
"Sign In": "Se connecter",
|
"Sign In": "Se connecter",
|
||||||
"Create Account": "Créer un compte",
|
"Create Account": "Créer un compte",
|
||||||
"Explore rooms": "Explorer les salons",
|
"Explore rooms": "Explorer les salons",
|
||||||
"Unexpected error preparing the app. See console for details.": "Une erreur inattendue est survenue pendant la préparation de l’application. Consultez la console pour avoir des détails.",
|
"Unexpected error preparing the app. See console for details.": "Une erreur inattendue est survenue pendant la préparation de l’application. Consultez la console pour avoir des détails.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuration invalide : il ne faut spécifier qu’un des trois champs entre default_server_config, default_server_name et default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuration invalide : il ne faut spécifier qu’un des trois champs parmis default_server_config, default_server_name et default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Configuration invalide : aucun serveur par défaut spécifié.",
|
"Invalid configuration: no default server specified.": "Configuration invalide : aucun serveur par défaut spécifié.",
|
||||||
"The message from the parser is: %(message)s": "Le message de l’analyseur est : %(message)s",
|
"The message from the parser is: %(message)s": "Le message de l’analyseur est : %(message)s",
|
||||||
"Invalid JSON": "JSON non valide",
|
"Invalid JSON": "JSON non valide",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Unsupported browser": "Navigateur non pris en charge",
|
"Unsupported browser": "Navigateur non pris en charge",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Veuillez installer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ou <safariLink>Safari</safariLink> pour une expérience optimale.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Veuillez installer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ou <safariLink>Safari</safariLink> pour une expérience optimale.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Vous pouvez continuer à utiliser votre navigateur actuel, mais vous risquez de trouver que certaines fonctionnalités et/ou l'apparence de l'application sont incorrectes.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Vous pouvez continuer à utiliser votre navigateur actuel, mais vous risquez de trouver que certaines fonctionnalités et/ou l’apparence de l’application sont incorrectes.",
|
||||||
"I understand the risks and wish to continue": "Je comprends les risques et souhaite continuer",
|
"I understand the risks and wish to continue": "Je comprends les risques et souhaite continuer",
|
||||||
"Go to element.io": "Aller vers element.io",
|
"Go to element.io": "Aller vers element.io",
|
||||||
"Failed to start": "Échec au démarrage",
|
"Failed to start": "Échec au démarrage",
|
||||||
@@ -31,5 +31,6 @@
|
|||||||
"Your Element is misconfigured": "Votre Element est mal configuré",
|
"Your Element is misconfigured": "Votre Element est mal configuré",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configuration de votre Element contient du JSON invalide. Veuillez corriger le problème et recharger la page.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configuration de votre Element contient du JSON invalide. Veuillez corriger le problème et recharger la page.",
|
||||||
"Your browser can't run %(brand)s": "Votre navigateur ne peut pas exécuter %(brand)s",
|
"Your browser can't run %(brand)s": "Votre navigateur ne peut pas exécuter %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s nécessite des fonctionnalités avancées que votre navigateur actuel ne supporte pas."
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s nécessite des fonctionnalités avancées que votre navigateur actuel ne prend pas en charge.",
|
||||||
|
"Powered by Matrix": "Propulsé par Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"Invalid JSON": "JSON non válido",
|
"Invalid JSON": "JSON non válido",
|
||||||
"Unexpected error preparing the app. See console for details.": "Fallo non agardado ao preparar a app. Detalles na consola.",
|
"Unexpected error preparing the app. See console for details.": "Fallo non agardado ao preparar a app. Detalles na consola.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración non válida: só se pode indicar un de default_server_config, default_server_name, ou default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuración non válida: só se pode indicar un de default_server_config, default_server_name, ou default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Configuración non válida: non se indicou servidor por omisión.",
|
"Invalid configuration: no default server specified.": "Configuración non válida: non se indicou servidor por defecto.",
|
||||||
"Missing indexeddb worker script!": "Falta o script indexeddb!",
|
"Missing indexeddb worker script!": "Falta o script indexeddb!",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Non se cargou o ficheiro de configuración: actualiza a páxina para reintentalo.",
|
"Unable to load config file: please refresh the page to try again.": "Non se cargou o ficheiro de configuración: actualiza a páxina para reintentalo.",
|
||||||
"Open user settings": "Abrir axustes da usuaria",
|
"Open user settings": "Abrir axustes da usuaria",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"Dismiss": "שחרר",
|
"Dismiss": "התעלם",
|
||||||
"powered by Matrix": "מופעל ע\"י Matrix",
|
"powered by Matrix": "מופעל ע\"י Matrix",
|
||||||
"Unknown device": "מכשיר לא ידוע",
|
"Unknown device": "מכשיר לא ידוע",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "עליך להשתמש ב HTTPS בכדי לבצע שיחת ווידאו משותפת.",
|
"You need to be using HTTPS to place a screen-sharing call.": "עליך להשתמש ב HTTPS בכדי לבצע שיחת ווידאו משותפת.",
|
||||||
@@ -8,6 +8,29 @@
|
|||||||
"Invalid JSON": "JSON לא חוקי",
|
"Invalid JSON": "JSON לא חוקי",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "תצורה שגויה: ניתן לציין רק אחד מהבאים, default_server_config, default_server_name, או default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "תצורה שגויה: ניתן לציין רק אחד מהבאים, default_server_config, default_server_name, או default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "תצורה שגויה: לא צוין שרת ברירת מחדל.",
|
"Invalid configuration: no default server specified.": "תצורה שגויה: לא צוין שרת ברירת מחדל.",
|
||||||
"Open user settings": "פתיחת הגדרות משתמש",
|
"Open user settings": "פתח הגדרות משתמש",
|
||||||
"Go to your browser to complete Sign In": "עבור לדפדפן להמשך ההתחברות"
|
"Go to your browser to complete Sign In": "עבור לדפדפן להמשך ההתחברות",
|
||||||
|
"Explore rooms": "שיטוט בחדרים",
|
||||||
|
"Create Account": "יצירת חשבון",
|
||||||
|
"Sign In": "כניסה",
|
||||||
|
"Previous/next recently visited room or community": "הבא\\קודם חדרים וקהילות שביקרתם לאחרונה",
|
||||||
|
"Open": "פתח",
|
||||||
|
"Download Completed": "ההורדה הושלמה",
|
||||||
|
"Unexpected error preparing the app. See console for details.": "שגיאה לא צפויה במהלך הכנת האפליקציה. ראו קונסול לפרטים נוספים.",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "לא יכול לקרוא את קובץ ההגדרות: אנא אתחלו את הדף לנסות שנית.",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "האלמנט מכיל הגדרת JSON שגויה, אנא תקנו את הבעיה ואתחלו את הדף.",
|
||||||
|
"Your Element is misconfigured": "האלמנט מוגדר באופן שגוי",
|
||||||
|
"Go to element.io": "חזור לאתר הראשי: element.io",
|
||||||
|
"I understand the risks and wish to continue": "הסיכונים מובנים לי ואני מעוניינ/ת להמשיך",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "ניתן להמשיך ולהשתמש בדפדפן זה, אך ייתכן שחלק מן התכונות והמאפיינים לא יעבדו כשורה או ייראו כשגויים.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "נא התקן את דפדפן <chromeLink>כרום</chromeLink>, <firefoxLink>פיירפוקס</firefoxLink> או <safariLink>סאפרי</safariLink> בשביל החוויה הטובה ביותר.",
|
||||||
|
"Failed to start": "כשל בהעלאת התוכנה",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s משתמש בתכונות דפדפן מתקדמות שאינן נתמכות בדפדפן הנוכחי שלך.",
|
||||||
|
"Your browser can't run %(brand)s": "הדפדפן שלך לא יכול להריץ %(brand)s",
|
||||||
|
"Unsupported browser": "דפדפן לא נתמך",
|
||||||
|
"Powered by Matrix": "מופעל על ידי מטריקס",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s שולחן עבודה %(platformName)s",
|
||||||
|
"The message from the parser is: %(message)s": "ההודעה מהניתוח היא: %(message)s",
|
||||||
|
"Missing indexeddb worker script!": "סקריפט indexeddb worker חסר!"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,35 +2,35 @@
|
|||||||
"Dismiss": "Eltüntetés",
|
"Dismiss": "Eltüntetés",
|
||||||
"powered by Matrix": "a gépházban: Matrix",
|
"powered by Matrix": "a gépházban: Matrix",
|
||||||
"Unknown device": "Ismeretlen eszköz",
|
"Unknown device": "Ismeretlen eszköz",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnod.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnia.",
|
||||||
"Welcome to Element": "Üdvözöl a Element",
|
"Welcome to Element": "Üdvözli az Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon",
|
||||||
"Sign In": "Bejelentkezés",
|
"Sign In": "Bejelentkezés",
|
||||||
"Create Account": "Fiók létrehozása",
|
"Create Account": "Fiók létrehozása",
|
||||||
"Explore rooms": "Szobák felderítése",
|
"Explore rooms": "Szobák felderítése",
|
||||||
"Unexpected error preparing the app. See console for details.": "Váratlan hiba történt az alkalmazás előkészítésénél. A részletekért nézd meg a konzolt.",
|
"Unexpected error preparing the app. See console for details.": "Váratlan hiba történt az alkalmazás előkészítésénél. A részletekért lásd a konzolt.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Érvénytelen konfiguráció: csak egyet lehet megadni a default_server_config, default_server_name és default_hs_url közül.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Érvénytelen konfiguráció: csak egyet lehet megadni a default_server_config, default_server_name és default_hs_url közül.",
|
||||||
"Invalid configuration: no default server specified.": "Érvénytelen konfiguráció: nincs megadva alapértelmezett kiszolgáló.",
|
"Invalid configuration: no default server specified.": "Érvénytelen konfiguráció: nincs megadva alapértelmezett kiszolgáló.",
|
||||||
"The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s",
|
"The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s",
|
||||||
"Invalid JSON": "Érvénytelen JSON",
|
"Invalid JSON": "Érvénytelen JSON",
|
||||||
"Go to your browser to complete Sign In": "A böngészőben fejezd be a bejelentkezést",
|
"Go to your browser to complete Sign In": "A böngészőben fejezze be a bejelentkezést",
|
||||||
"Open user settings": "Felhasználói beállítások megnyitása",
|
"Open user settings": "Felhasználói beállítások megnyitása",
|
||||||
"Missing indexeddb worker script!": "Hiányzó indexeddb worker parancsfájl!",
|
"Missing indexeddb worker script!": "Hiányzó indexeddb worker parancsfájl!",
|
||||||
"Unable to load config file: please refresh the page to try again.": "A konfigurációs fájlt nem sikerült betölteni: frissítsd az oldalt és próbáld meg újra.",
|
"Unable to load config file: please refresh the page to try again.": "A konfigurációs fájlt nem sikerült betölteni: frissítse az oldalt és próbálja meg újra.",
|
||||||
"Previous/next recently visited room or community": "Előző/következő nemrég meglátogatott szobák vagy közösségek",
|
"Previous/next recently visited room or community": "Előző/következő nemrég meglátogatott szobák vagy közösségek",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "Asztali %(brand)s (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "Asztali %(brand)s (%(platformName)s)",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Unsupported browser": "A böngésző nem támogatott",
|
"Unsupported browser": "A böngésző nem támogatott",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "A legjobb élmény eléréséhez kérlek telepíts <chromeLink>Chrome-ot</chromeLink>, <firefoxLink>Firefoxot</firefoxLink> vagy <safariLink>Safarit</safariLink>.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "A legjobb élmény érdékében telepítsen <chromeLink>Chrome-ot</chromeLink>, <firefoxLink>Firefoxot</firefoxLink> vagy <safariLink>Safarit</safariLink>.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Folytathatod a jelenlegi böngésződdel, de néhány vagy az összes funkció használhatatlan lehet, vagy hibák lehetnek az alkalmazás kinézetében és viselkedésében.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Folytathatja a jelenlegi böngészőjével, de néhány vagy az összes funkció használhatatlan lehet, vagy hibák lehetnek az alkalmazás kinézetében és viselkedésében.",
|
||||||
"I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom",
|
"I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom",
|
||||||
"Go to element.io": "Irány a element.io",
|
"Go to element.io": "Irány a element.io",
|
||||||
"Failed to start": "Az indítás sikertelen",
|
"Failed to start": "Az indítás sikertelen",
|
||||||
"Download Completed": "A letöltés befejeződött",
|
"Download Completed": "A letöltés befejeződött",
|
||||||
"Open": "Megnyitás",
|
"Open": "Megnyitás",
|
||||||
"Your Element is misconfigured": "Az Element hibásan van beállítva",
|
"Your Element is misconfigured": "Az Element hibásan van beállítva",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Az Element érvénytelen JSON-t tartalmazó konfigurációval rendelkezik. Kérlek javítsd és töltsd újra az oldalt.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Az Element érvénytelen JSON-t tartalmazó konfigurációval rendelkezik. Javítsa és töltse újra az oldalt.",
|
||||||
"Your browser can't run %(brand)s": "A böngésződ nem tudja futtatni ezt: %(brand)s",
|
"Your browser can't run %(brand)s": "A böngészője nem tudja futtatni ezt: %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s haladó böngésző funkciókat használ amiket a jelenlegi böngésződ nem támogat.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s speciális böngészőfunkciókat használ, amelyeket a jelenlegi böngészője nem támogat.",
|
||||||
"Powered by Matrix": "A gépházban: Matrix"
|
"Powered by Matrix": "A gépházban: Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"powered by Matrix": "keyrt með Matrix",
|
"powered by Matrix": "keyrt með Matrix",
|
||||||
"Welcome to Element": "Velkomin í Element",
|
"Welcome to Element": "Velkomin í Element",
|
||||||
"Unknown device": "Óþekkt tæki",
|
"Unknown device": "Óþekkt tæki",
|
||||||
"Dismiss": "Hafna",
|
"Dismiss": "Hunsa",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Þú verður að nota HTTPS til að hringja samtal með deilingu á skjá.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Þú verður að nota HTTPS til að hringja samtal með deilingu á skjá.",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Dulritað dreifvinnsluspjall & samstarfstól keyrt með [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Dulritað dreifvinnsluspjall & samstarfstól keyrt með [matrix]",
|
||||||
"Open": "Opna",
|
"Open": "Opna",
|
||||||
@@ -18,5 +18,19 @@
|
|||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "vinsamlegast setja upp <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eða <safariLink>Safari</safariLink> fyrir besta reynsluna.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "vinsamlegast setja upp <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eða <safariLink>Safari</safariLink> fyrir besta reynsluna.",
|
||||||
"I understand the risks and wish to continue": "Ég skil áhættuna og óska að halda áfram",
|
"I understand the risks and wish to continue": "Ég skil áhættuna og óska að halda áfram",
|
||||||
"Go to element.io": "farðu í element.io"
|
"Go to element.io": "farðu í element.io",
|
||||||
|
"Unexpected error preparing the app. See console for details.": "Óvænt villa við undirbúning appsins. Sjá nánar í textaskrá vafra.",
|
||||||
|
"Failed to start": "Mistókst að ræsa",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Þú getur haldið áfram að nota núverandi vafra, en sumar eða allir eiginleikar virka ekki og útlit og tilfinning forritsins geta verið röng.",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s notar háþróaða vafraeiginleika sem eru ekki studdir af núverandi vafra þínum.",
|
||||||
|
"Powered by Matrix": "Keyrt af Matrix",
|
||||||
|
"Go to your browser to complete Sign In": "Farðu í vafrann þinn til að ljúka innskráningu",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Borðtölva (%(platformName)s)",
|
||||||
|
"Previous/next recently visited room or community": "Fyrra/næsta nýlega heimsótt herbergi eða samfélag",
|
||||||
|
"Open user settings": "Opna notandastillingar",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Ekki er hægt að hlaða stillingaskrána: endurnýjaðu síðuna til að reyna aftur.",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element stillingar þínar innihalda ógilda JSON. Vinsamlegast leiðréttu vandamálið og endurhladdu síðuna.",
|
||||||
|
"Your Element is misconfigured": "Element þitt er rangt stillt",
|
||||||
|
"Invalid configuration: no default server specified.": "Ógild stilling: enginn sjálfgefinn þjónn tilgreindur.",
|
||||||
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ógild stilling: getur aðeins tilgreint einn af default_server_config, default_server_name eða default_hs_url."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
"Unexpected error preparing the app. See console for details.": "アプリケーションの準備中に予期しないエラーが発生しました。詳細はコンソールを参照してください。",
|
"Unexpected error preparing the app. See console for details.": "アプリケーションの準備中に予期しないエラーが発生しました。詳細はコンソールを参照してください。",
|
||||||
"Invalid configuration: no default server specified.": "不正な設定です:デフォルトのサーバーが設定されていません。",
|
"Invalid configuration: no default server specified.": "不正な設定です:デフォルトのサーバーが設定されていません。",
|
||||||
"Sign In": "サインイン",
|
"Sign In": "サインイン",
|
||||||
"Create Account": "アカウント作成",
|
"Create Account": "アカウントの作成",
|
||||||
"Explore rooms": "部屋を探索する",
|
"Explore rooms": "部屋を探す",
|
||||||
"The message from the parser is: %(message)s": "パーザーのメッセージ: %(message)s",
|
"The message from the parser is: %(message)s": "パーザーのメッセージ: %(message)s",
|
||||||
"Invalid JSON": "妥当でないJSON",
|
"Invalid JSON": "妥当でないJSON",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "無効な設定: default_server_config、default_server_name、または default_hs_urlのいずれか一つのみが指定できます。",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "無効な設定: default_server_config、default_server_name、または default_hs_urlのいずれか一つのみが指定できます。",
|
||||||
@@ -30,5 +30,7 @@
|
|||||||
"Your Element is misconfigured": "Elementの設定が間違っています",
|
"Your Element is misconfigured": "Elementの設定が間違っています",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Elementの設定ファイルに不正なJSONが含まれています。問題を修正してからページを再読込してください。",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Elementの設定ファイルに不正なJSONが含まれています。問題を修正してからページを再読込してください。",
|
||||||
"Your browser can't run %(brand)s": "このブラウザでは%(brand)sが動きません",
|
"Your browser can't run %(brand)s": "このブラウザでは%(brand)sが動きません",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)sはブラウザの高度な機能を使う必要がありますが、このブラウザではその機能がサポートされていないようです。"
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)sはブラウザの高度な機能を使う必要がありますが、このブラウザではその機能がサポートされていないようです。",
|
||||||
|
"Powered by Matrix": "Powered by Matrix",
|
||||||
|
"Previous/next recently visited room or community": "最近利用したルームまたはコミュニティ"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
"Missing indexeddb worker script!": "Trūksta indexeddb worker skripto!",
|
"Missing indexeddb worker script!": "Trūksta indexeddb worker skripto!",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Nepavyko įkelti konfigūracijos failo: atnaujinkite puslapį, kad pabandytumėte dar kartą.",
|
"Unable to load config file: please refresh the page to try again.": "Nepavyko įkelti konfigūracijos failo: atnaujinkite puslapį, kad pabandytumėte dar kartą.",
|
||||||
"Previous/next recently visited room or community": "Ankstesnis/sekantis neseniai lankytas kambarys ar bendruomenė",
|
"Previous/next recently visited room or community": "Ankstesnis/sekantis neseniai lankytas kambarys ar bendruomenė",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Kompiuteriui (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Kompiuteryje (%(platformName)s)",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Unsupported browser": "Nepalaikoma naršyklė",
|
"Unsupported browser": "Nepalaikoma naršyklė",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Jūs galite toliau naudotis savo dabartine naršykle, bet kai kurios arba visos funkcijos gali neveikti ir programos išvaizda bei sąsaja gali būti neteisingai rodoma.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Jūs galite toliau naudotis savo dabartine naršykle, bet kai kurios arba visos funkcijos gali neveikti ir programos išvaizda bei sąsaja gali būti neteisingai rodoma.",
|
||||||
@@ -31,5 +31,6 @@
|
|||||||
"Open": "Atidaryti",
|
"Open": "Atidaryti",
|
||||||
"Your browser can't run %(brand)s": "Jūsų naršyklė negali paleisti %(brand)s",
|
"Your browser can't run %(brand)s": "Jūsų naršyklė negali paleisti %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s naudoja išplėstines naršyklės funkcijas, kurių jūsų dabartinė naršyklė nepalaiko.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s naudoja išplėstines naršyklės funkcijas, kurių jūsų dabartinė naršyklė nepalaiko.",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Geriausiam veikimui suinstaliuokite <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, arba <safariLink>Safari</safariLink>."
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Geriausiam veikimui suinstaliuokite <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, arba <safariLink>Safari</safariLink>.",
|
||||||
|
"Powered by Matrix": "Veikia su Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,36 @@
|
|||||||
{
|
{
|
||||||
"Dismiss": "Atteikt",
|
"Dismiss": "Aizvērt",
|
||||||
"powered by Matrix": "Tiek darbināta ar Matrix",
|
"powered by Matrix": "Tiek darbināta ar Matrix",
|
||||||
"Unknown device": "Nezināma ierīce",
|
"Unknown device": "Nezināma ierīce",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Lai izmantotu ekrāna kopīgošanas zvanu, nepieciešams izmantot HTTPS savienojumu.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Lai veiktu ekrāna kopīgošanas zvanu, nepieciešams izmantot HTTPS savienojumu.",
|
||||||
"Welcome to Element": "Esiet gaidīti Element",
|
"Welcome to Element": "Esiet laipni gaidīti Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizēta, šifrēta čata & kopdarbošanās sistēma uz [matrix] bāzes",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizēta, šifrēta čata & kopdarbošanās sistēma uz [matrix] bāzes",
|
||||||
"Sign In": "Ienākt",
|
"Sign In": "Pierakstīties",
|
||||||
"Create Account": "Izveidot kontu",
|
"Create Account": "Izveidot kontu",
|
||||||
"Explore rooms": "Atklāt istabas",
|
"Explore rooms": "Pārlūkot istabas",
|
||||||
"Unexpected error preparing the app. See console for details.": "Negaidīta kļūda, sagatavojot lietotni. Sīkāku informāciju skatiet konsolē.",
|
"Unexpected error preparing the app. See console for details.": "Negaidīta kļūda, sagatavojot lietotni. Sīkāku informāciju skatiet konsolē.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Nederīga konfigurācija: var norādīt tikai vienu no default_server_config, default_server_name, vai default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Kļūdaina konfigurācija: var norādīt tikai vienu no parametriem default_server_config, default_server_name, vai default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Nekorekta konfigurācija: nav norādīts noklusējuma serveris.",
|
"Invalid configuration: no default server specified.": "Kļūdaina konfigurācija: nav norādīts noklusējuma serveris.",
|
||||||
"The message from the parser is: %(message)s": "Ziņojums no parsētāja ir: %(message)s",
|
"The message from the parser is: %(message)s": "Ziņojums no parsētāja ir: %(message)s",
|
||||||
"Invalid JSON": "Nederīgs JSON",
|
"Invalid JSON": "Kļūdains JSON",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Neizdevās ielādēt config datni: lūdzu pārlādē lapu lai mēģinātu vēlreiz.",
|
"Unable to load config file: please refresh the page to try again.": "Neizdevās ielādēt konfigurācijas datni. Lūdzu, pārlādējiet lapu, lai mēģinātu vēlreiz.",
|
||||||
"Open user settings": "Atver lietotāja iestatījumus",
|
"Open user settings": "Atvērt lietotāja iestatījumus",
|
||||||
"Go to your browser to complete Sign In": "Aizej uz savu pārlūku lai pabeigtu Piekļuvi",
|
"Go to your browser to complete Sign In": "Pārejiet uz pārlūku, lai pabeigtu pierakstīšanos",
|
||||||
"Unsupported browser": "Neatbalstīts pārlūks",
|
"Unsupported browser": "Neatbalstīts pārlūks",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Lūdzu instalē <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, vai <safariLink>Safari</safariLink> priekš labākās pieredzes.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Labākajai izmantošanas pieredzei, lūdzu, instalējiet <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> vai <safariLink>Safari</safariLink> pārlūku.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Tu vari turpināt izmantot savu pašreizējo pārlūku, bet dažas vai visas funkcijas nestrādās, un lietotnes izskats var būt nepareizs.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Jūs varat turpināt lietot savu pašreizējo pārlūku, bet dažas vai visas funkcijas nestrādās, un lietotnes izskats var būt nepareizs.",
|
||||||
"I understand the risks and wish to continue": "Es pieņemu riskus un vēlos turpināt",
|
"I understand the risks and wish to continue": "Es pieņemu riskus un vēlos turpināt",
|
||||||
"Go to element.io": "Ej uz element.io",
|
"Go to element.io": "Ej uz element.io",
|
||||||
"Failed to start": "Neizdevās palaist"
|
"Failed to start": "Neizdevās palaist",
|
||||||
|
"Powered by Matrix": "Darbojas uz Matrix",
|
||||||
|
"Previous/next recently visited room or community": "Iepriekšējā/nākošā nesen apmeklētā istaba vai kopiena",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s izmanto pārlūku papildus funkcijas, kas netiek atbalstītas šajā pārlūkā.",
|
||||||
|
"Your browser can't run %(brand)s": "Jūsu pārlūks nevar palaist %(brand)s",
|
||||||
|
"Missing indexeddb worker script!": "Trūkst indexeddb worker skripta!",
|
||||||
|
"Open": "Atvērt",
|
||||||
|
"Download Completed": "Lejupielāde pabeigta",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Jūsu Element konfigurācija satur kļūdainu JSON. Lūdzu, salabojiet problēmu un pārlādējiet lapu.",
|
||||||
|
"Your Element is misconfigured": "Jūsu Element ir nokonfigurēts kļūdaini",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,5 +3,21 @@
|
|||||||
"powered by Matrix": "മാട്രിക്സില് പ്രവര്ത്തിക്കുന്നു",
|
"powered by Matrix": "മാട്രിക്സില് പ്രവര്ത്തിക്കുന്നു",
|
||||||
"Unknown device": "അപരിചിത ഡിവൈസ്",
|
"Unknown device": "അപരിചിത ഡിവൈസ്",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "സ്ക്രീന് ഷെയറിങ്ങ് കോള് നടത്തണമെങ്കില് https ഉപയോഗിക്കണം.",
|
"You need to be using HTTPS to place a screen-sharing call.": "സ്ക്രീന് ഷെയറിങ്ങ് കോള് നടത്തണമെങ്കില് https ഉപയോഗിക്കണം.",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "വികേന്ദ്രീകൃത , എന്ക്രിപ്റ്റഡ് ചാറ്റ് & മാട്രിക്സ് നല്കുന്ന കൊളാബൊറേഷന്"
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "വികേന്ദ്രീകൃത , എന്ക്രിപ്റ്റഡ് ചാറ്റ് & മാട്രിക്സ് നല്കുന്ന കൊളാബൊറേഷന്",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s%(browserName)s%(osName)s",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "ദയവായി <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, അല്ലെങ്കിൽ <safariLink>Safari</safariLink> ഇൻസ്റ്റാൾ ചെയ്യുക.",
|
||||||
|
"Your Element is misconfigured": "നിങ്ങളുടെ Element തെറ്റായിട്ടാണ് കോൺഫിഗർ ചെയ്തിരിക്കുന്നത്",
|
||||||
|
"Invalid configuration: no default server specified.": "അസാധുവായ കോൺഫിഗറേഷൻ: സ്ഥിര സെർവർ ഒന്നും വ്യക്തമാക്കിയില്ല.",
|
||||||
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "അസാധുവായ കോൺഫിഗറേഷൻ: default_server_config, default_server_name, or default_hs_url-ൽ ഒരെണ്ണം മാത്രമേ വ്യക്തമാക്കാൻ കഴിയൂ.",
|
||||||
|
"Missing indexeddb worker script!": "indexeddb worker സ്ക്രിപ്റ്റ് കണ്ടെത്താനായില്ല!",
|
||||||
|
"Open user settings": "യൂസർ ക്രമീകരങ്ങൾ തുറക്കുക",
|
||||||
|
"Download Completed": "ഡൗൺലോഡ് പൂർത്തിയായി",
|
||||||
|
"Unsupported browser": "പിന്തുണയ്ക്കാത്ത ബ്രൗസർ",
|
||||||
|
"I understand the risks and wish to continue": "ഞാൻ അപകടസാധ്യതകൾ മനസിലാക്കുകയും തുടരാൻ ആഗ്രഹിക്കുകയും ചെയ്യുന്നു",
|
||||||
|
"Go to element.io": "element.io-ലേക്ക് പോവുക",
|
||||||
|
"Failed to start": "ആരംഭിക്കാൻ പരാജയപെട്ടു",
|
||||||
|
"Welcome to Element": "Element-ലേക്ക് സ്വാഗതം",
|
||||||
|
"Sign In": "പ്രവേശിക്കുക",
|
||||||
|
"Create Account": "അക്കൗണ്ട് സൃഷ്ടിക്കുക",
|
||||||
|
"Explore rooms": "മുറികൾ കണ്ടെത്തുക"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,26 @@
|
|||||||
"The message from the parser is: %(message)s": "Meldingen fra parseren er: %(message)s",
|
"The message from the parser is: %(message)s": "Meldingen fra parseren er: %(message)s",
|
||||||
"Invalid JSON": "Ugyldig JSON",
|
"Invalid JSON": "Ugyldig JSON",
|
||||||
"Invalid configuration: no default server specified.": "Ugyldig konfigurasjon: ingen standardserver spesifisert.",
|
"Invalid configuration: no default server specified.": "Ugyldig konfigurasjon: ingen standardserver spesifisert.",
|
||||||
"Unexpected error preparing the app. See console for details.": "Uventet feil oppsto mens appen ble gjort klar. Se konsollen for detaljer.",
|
"Unexpected error preparing the app. See console for details.": "Uventet feil ved klargjøring av appen. Se konsollen for detaljer.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfigurasjon: Spesifiser kun en av følgende: default_server_config, default_server_name eller default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfigurasjon: Spesifiser kun en av følgende: default_server_config, default_server_name eller default_hs_url.",
|
||||||
"Open user settings": "Åpne brukerinnstillinger",
|
"Open user settings": "Åpne brukerinnstillinger",
|
||||||
"Go to your browser to complete Sign In": "Gå til nettleseren din for å fullføre innloggingen"
|
"Go to your browser to complete Sign In": "Gå til nettleseren din for å fullføre innloggingen",
|
||||||
|
"Failed to start": "Kunne ikke starte",
|
||||||
|
"Go to element.io": "Gå til element.io",
|
||||||
|
"I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker å fortsette",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kan fortsette å bruke din nåværende nettleser, men noen eller alle funksjonene fungerer kanskje ikke, og utseendet og følelsen av applikasjonen kan være feil.",
|
||||||
|
"Your browser can't run %(brand)s": "Nettleseren din kan ikke kjøre %(brand)s",
|
||||||
|
"Unsupported browser": "Ustøttet nettleser",
|
||||||
|
"Powered by Matrix": "Drevet av Matrix",
|
||||||
|
"Previous/next recently visited room or community": "Forrige/neste nylig besøkte rom eller samfunn",
|
||||||
|
"Download Completed": "Nedlasting Fullført",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Kan ikke laste inn konfigurasjonsfil: oppdater siden for å prøve igjen.",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Ditt Element konfigurasjonen inneholder ugyldig JSON. Løs problemet og last siden på nytt.",
|
||||||
|
"Your Element is misconfigured": "Ditt Element er feilkonfigurert",
|
||||||
|
"Missing indexeddb worker script!": "Mangler indexeddb arbeiderskript!",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Vennligst installer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eller <safariLink>Safari</safariLink> for den beste opplevelsen.",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s bruker avanserte nettleserfunksjoner som ikke støttes av din nåværende nettleser.",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Skrivebord (%(platformName)s)",
|
||||||
|
"Open": "Åpne"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,8 +22,15 @@
|
|||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Unsupported browser": "Niet-ondersteunde browser",
|
"Unsupported browser": "Niet-ondersteunde browser",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Installeer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, of <safariLink>Safari</safariLink> voor de beste gebruikservaring.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Installeer <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, of <safariLink>Safari</safariLink> voor de beste gebruikservaring.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "U kunt uw huidige browser blijven gebruiken, maar sommige of alle features zouden niet kunnen werken en de uitstraling van het programma kan verkeerd zijn.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Je kunt je huidige browser blijven gebruiken, maar sommige of alle functies zouden niet kunnen werken en de uitstraling van het programma kan verkeerd zijn.",
|
||||||
"I understand the risks and wish to continue": "Ik begrijp de risico's en wil verder gaan",
|
"I understand the risks and wish to continue": "Ik begrijp de risico's en wil verder gaan",
|
||||||
"Go to element.io": "Ga naar element.io",
|
"Go to element.io": "Ga naar element.io",
|
||||||
"Failed to start": "Opstarten gefaald"
|
"Failed to start": "Opstarten mislukt",
|
||||||
|
"Open": "Openen",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Je Element configuratie bevat ongeldige JSON. Gelieve het probleem te corrigeren daarna de pagina te herladen.",
|
||||||
|
"Download Completed": "Download voltooid",
|
||||||
|
"Your Element is misconfigured": "Je Element is verkeerd geconfigureerd",
|
||||||
|
"Your browser can't run %(brand)s": "Je browser kan %(brand)s niet draaien",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s gebruikt geavanceerde functies die niet ondersteund worden in je huidige browser.",
|
||||||
|
"Powered by Matrix": "Gebruikt Matrix technologie"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,5 +25,12 @@
|
|||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Możesz kontynuować używanie obecnej przeglądarki, lecz niektóre lub wszystkie funkcje mogą nie działać oraz wygląd aplikacji może być niepoprawny.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Możesz kontynuować używanie obecnej przeglądarki, lecz niektóre lub wszystkie funkcje mogą nie działać oraz wygląd aplikacji może być niepoprawny.",
|
||||||
"I understand the risks and wish to continue": "Rozumiem ryzyko i chcę kontynuować",
|
"I understand the risks and wish to continue": "Rozumiem ryzyko i chcę kontynuować",
|
||||||
"Go to element.io": "Przejdź do element.io",
|
"Go to element.io": "Przejdź do element.io",
|
||||||
"Failed to start": "Nie udało się wystartować"
|
"Failed to start": "Nie udało się wystartować",
|
||||||
|
"Download Completed": "Pobieranie Zakończone",
|
||||||
|
"Open": "Otwórz",
|
||||||
|
"Your browser can't run %(brand)s": "Twoja przeglądarka nie obsługuje %(brand)s",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s używa zaawansowanych funkcji przeglądarki, które nie są dostępne w twojej przeglądarce.",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfiguracja Elementa zawiera niepoprawny JSON. Popraw konfiguracje i odśwież stronę.",
|
||||||
|
"Your Element is misconfigured": "Element jest nieprawidłowo skonfigurowany",
|
||||||
|
"Powered by Matrix": "Zasilane przez Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"powered by Matrix": "powered by Matrix",
|
"powered by Matrix": "powered by Matrix",
|
||||||
"Unknown device": "Dispositivo desconhecido",
|
"Unknown device": "Dispositivo desconhecido",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã.",
|
||||||
"Welcome to Element": "Bem-vindo ao Element",
|
"Welcome to Element": "Boas-vindas ao Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, encriptado & colaborativo powered by [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, encriptado & colaborativo powered by [matrix]",
|
||||||
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
|
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
|
||||||
"Invalid JSON": "JSON inválido",
|
"Invalid JSON": "JSON inválido",
|
||||||
@@ -13,5 +13,19 @@
|
|||||||
"Sign In": "Iniciar sessão",
|
"Sign In": "Iniciar sessão",
|
||||||
"Create Account": "Criar conta",
|
"Create Account": "Criar conta",
|
||||||
"Explore rooms": "Explorar rooms",
|
"Explore rooms": "Explorar rooms",
|
||||||
"Go to your browser to complete Sign In": "Abra o seu navegador para completar o inicio de sessão"
|
"Go to your browser to complete Sign In": "Abra o seu navegador para completar o inicio de sessão",
|
||||||
|
"Open": "Abrir",
|
||||||
|
"Download Completed": "Transferência concluída",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Não foi possível carregar o ficheiro de configuração: atualize a página para tentar novamente.",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "A configuração do Element contém um JSON inválido. Corrija o problema e recarregue a página.",
|
||||||
|
"Your Element is misconfigured": "O Element está configurado incorretamente",
|
||||||
|
"Powered by Matrix": "Desenvolvido por Matrix",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (2%(browserName)s, 3%(osName)s)",
|
||||||
|
"Go to element.io": "Visite element.io",
|
||||||
|
"I understand the risks and wish to continue": "Compreendo os riscos e pretendo continuar",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Podes continuar a utilizar teu browser atual, mas algumas funcionalidades podem não funcionar ou aparecerem de forma incorrecta.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor, instala <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, ou <safariLink>Safari</safariLink> para uma melhor experiência.",
|
||||||
|
"Unsupported browser": "Browser não suportado",
|
||||||
|
"Previous/next recently visited room or community": "Anterior/seguinte comunidade ou sala recentemente visitado",
|
||||||
|
"Open user settings": "Abrir definições do utilizador"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
"powered by Matrix": "oferecido por Matrix",
|
"powered by Matrix": "oferecido por Matrix",
|
||||||
"Unknown device": "Aparelho desconhecido",
|
"Unknown device": "Aparelho desconhecido",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Você precisa usar HTTPS para compartilhar a tela durante uma chamada.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Você precisa usar HTTPS para compartilhar a tela durante uma chamada.",
|
||||||
"Welcome to Element": "Seja bem-vinda(o) a Element",
|
"Welcome to Element": "Boas-vindas ao Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo construído com [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo construído com [matrix]",
|
||||||
"Sign In": "Entrar",
|
"Sign In": "Entrar",
|
||||||
"Create Account": "Criar Conta",
|
"Create Account": "Criar Conta",
|
||||||
"Explore rooms": "Explore as salas",
|
"Explore rooms": "Explorar salas",
|
||||||
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
|
"The message from the parser is: %(message)s": "A mensagem do parser é: %(message)s",
|
||||||
"Invalid JSON": "JSON inválido",
|
"Invalid JSON": "JSON inválido",
|
||||||
"Unexpected error preparing the app. See console for details.": "Erro inesperado preparando o aplicativo. Veja o console para mais detalhes.",
|
"Unexpected error preparing the app. See console for details.": "Erro inesperado preparando o aplicativo. Veja o console para mais detalhes.",
|
||||||
@@ -26,11 +26,11 @@
|
|||||||
"Missing indexeddb worker script!": "O script indexeddb não foi encontrado!",
|
"Missing indexeddb worker script!": "O script indexeddb não foi encontrado!",
|
||||||
"Open": "Abrir",
|
"Open": "Abrir",
|
||||||
"Previous/next recently visited room or community": "Anterior/Próxima sala ou comunidade visitada recentemente",
|
"Previous/next recently visited room or community": "Anterior/Próxima sala ou comunidade visitada recentemente",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s para Computador (%(platformName)s)",
|
||||||
"Go to your browser to complete Sign In": "Vá para o seu navegador para concluir o login",
|
"Go to your browser to complete Sign In": "Vá para o seu navegador para concluir o login",
|
||||||
"Your Element is misconfigured": "Seu Element está desconfigurado",
|
"Your Element is misconfigured": "Seu Element está desconfigurado",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Sua configuração do Element contém JSON inválido. Por favor, corrija o problema e recarregue a página.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Sua configuração do Element contém JSON inválido. Por favor, corrija o problema e recarregue a página.",
|
||||||
"Your browser can't run %(brand)s": "Seu navegador não consegue rodar %(brand)s",
|
"Your browser can't run %(brand)s": "Seu navegador não consegue rodar o %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funcionalidades avançadas de navegador que não são suportadas pelo seu navegador atual.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa recursos avançados que não são suportados pelo seu navegador de internet atual.",
|
||||||
"Powered by Matrix": "Construído com tecnologia Matrix"
|
"Powered by Matrix": "Construído com tecnologia Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
{
|
{
|
||||||
"Unknown device": "නොදන්නා උපකරණය",
|
"Unknown device": "නොදන්නා උපාංගයකි",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)"
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"Welcome to Element": "ඉලමන්ට් වෙත සාදරයෙන් පිළිගනිමු",
|
||||||
|
"Open": "විවෘත කරන්න",
|
||||||
|
"Powered by Matrix": "මැට්රික්ස් මඟින් බලගන්වා ඇත",
|
||||||
|
"Sign In": "පිවිසෙන්න"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,8 @@
|
|||||||
"Download Completed": "Preberanie dokončené",
|
"Download Completed": "Preberanie dokončené",
|
||||||
"Open": "Otvoriť",
|
"Open": "Otvoriť",
|
||||||
"Your Element is misconfigured": "Váš Element je nesprávne nastavený",
|
"Your Element is misconfigured": "Váš Element je nesprávne nastavený",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Vaša konfigurácia Elementu obsahuje nesprávne JSON. Prosím, opravte chybu a obnovte stránku.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Vaša konfigurácia Elementu obsahuje nesprávny údaj JSON. Prosím, opravte chybu a obnovte stránku.",
|
||||||
"Your browser can't run %(brand)s": "Váš prehliadač nerozbehne %(brand)s",
|
"Your browser can't run %(brand)s": "Váš prehliadač nerozbehne %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s používa pokročilé funkcie prehliadača, ktoré nie sú podporované vaším aktuálnym prehliadačom."
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s používa pokročilé funkcie prehliadača, ktoré nie sú podporované vaším aktuálnym prehliadačom.",
|
||||||
|
"Powered by Matrix": "používa protokol Matrix"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,5 +7,30 @@
|
|||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirano šifrirano sporočanje & sodelovanje s pomočjo [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirano šifrirano sporočanje & sodelovanje s pomočjo [matrix]",
|
||||||
"Sign In": "Prijava",
|
"Sign In": "Prijava",
|
||||||
"Create Account": "Registracija",
|
"Create Account": "Registracija",
|
||||||
"Explore rooms": "Raziščite sobe"
|
"Explore rooms": "Raziščite sobe",
|
||||||
|
"Missing indexeddb worker script!": "Manjka skripta za IndexDB!",
|
||||||
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neveljavna konfiguracija: lahko izberete samo eno izmed default_server_config, default_server_name ali default_hs_url.",
|
||||||
|
"Invalid configuration: no default server specified.": "Neveljavna konfiguracija: privzeti strežnik ni nastavljen.",
|
||||||
|
"Your Element is misconfigured": "Vaš Element je napačno nastavljen",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfiguracije vašega Elementa vsebujejo neveljaven JSON. Prosim, popravite napako in znova naložite stran.",
|
||||||
|
"The message from the parser is: %(message)s": "Sporočilo parserja je: %(message)s",
|
||||||
|
"Invalid JSON": "Neveljaven JSON",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Ni uspelo naložiti konfiguracijske datoteke: prosim, ponovno naložite stran.",
|
||||||
|
"Unexpected error preparing the app. See console for details.": "Nepričakovana napaka pri pripravi aplikacije: Za več poglejte konzolo.",
|
||||||
|
"Download Completed": "Prenos zaključen",
|
||||||
|
"Open": "Odpri",
|
||||||
|
"Open user settings": "Odpri uporabniške nastavitve",
|
||||||
|
"Previous/next recently visited room or community": "Prejšnja/naslednja soba ali skupnost, ki je bila pred kratkim odprta",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s namizje za (%(platformName)s)",
|
||||||
|
"Go to your browser to complete Sign In": "Nadaljujte s prijavo v spletnem brskalniku",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"Powered by Matrix": "Poganja Matrix",
|
||||||
|
"Unsupported browser": "Nepodprt brskalnik",
|
||||||
|
"Your browser can't run %(brand)s": "Vaš brskalnik ne more poganjati %(brand)s",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s uporablja napredne lastnosti brskalnika, ki jih vaš trenutni brskalnik ne podpira.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Za najboljšo izkušnjo, prosim namestite <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ali <safariLink>Safari</safariLink>.",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Lahko nadaljujete z uporabo vašega trenutnega brskalnika, vendar lahko to privede do manjkajočih funkcionalnosti ali napačnega izgleda aplikacije.",
|
||||||
|
"I understand the risks and wish to continue": "Razumem riziko in želim vseeno nadaljevati",
|
||||||
|
"Go to element.io": "Pojdi na element.io",
|
||||||
|
"Failed to start": "Neuspel zagon"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,23 +3,23 @@
|
|||||||
"You need to be using HTTPS to place a screen-sharing call.": "Морате користити HTTPS да бисте започели позив са дељењем екрана.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Морате користити HTTPS да бисте започели позив са дељењем екрана.",
|
||||||
"Dismiss": "Одбаци",
|
"Dismiss": "Одбаци",
|
||||||
"powered by Matrix": "покреће Матрикс",
|
"powered by Matrix": "покреће Матрикс",
|
||||||
"Welcome to Element": "Добродошли у Element",
|
"Welcome to Element": "Добродошли у Елемент",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализовано, шифровано ћаскање и сарадња коју покреће [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализовано, шифровано ћаскање и сарадња коју покреће [matrix]",
|
||||||
"Sign In": "Пријава",
|
"Sign In": "Пријави се",
|
||||||
"Create Account": "Направи налог",
|
"Create Account": "Направи налог",
|
||||||
"Explore rooms": "Истражи собе",
|
"Explore rooms": "Истражи собе",
|
||||||
"Invalid configuration: no default server specified.": "Погрешно подешавање: подразумевани сервер није наведен.",
|
"Invalid configuration: no default server specified.": "Погрешно подешавање: подразумевани сервер није наведен.",
|
||||||
"The message from the parser is: %(message)s": "Порука из парсера: %(message)s",
|
"The message from the parser is: %(message)s": "Порука из парсера: %(message)s",
|
||||||
"Invalid JSON": "Погрешан JSON",
|
"Invalid JSON": "Погрешан JSON",
|
||||||
"Unexpected error preparing the app. See console for details.": "Неочекивана грешка приликом припреме апликације. Погледајте конзолу за више детаља.",
|
"Unexpected error preparing the app. See console for details.": "Неочекивана грешка приликом припреме апликације. Погледајте конзолу за више детаља.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Погрешно подешавање: можете навести само једну вредност од default_server_config, default_server_name, or default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Погрешно подешавање: можете навести само једну вредност од default_server_config, default_server_name, или default_hs_url.",
|
||||||
"Missing indexeddb worker script!": "Недостаје скрипта indexeddb радника!",
|
"Missing indexeddb worker script!": "Недостаје скрипта indexeddb радника!",
|
||||||
"Your Element is misconfigured": "Ваша Елемент апликација је лоше подешена",
|
"Your Element is misconfigured": "Ваша Елемент апликација је лоше подешена",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Подешавање ваше Елемент апликације садржи неисправни JSON. Поправите проблем па поново учитајте ову страницу.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Подешавање ваше Елемент апликације садржи неисправни „JSON“. Поправите проблем па поново учитајте ову страницу.",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Не могу да учитам датотеку подешавања: освежите страницу и покушајте поново.",
|
"Unable to load config file: please refresh the page to try again.": "Не могу да учитам датотеку подешавања: освежите страницу и покушајте поново.",
|
||||||
"Download Completed": "Преузимање завршено",
|
"Download Completed": "Преузимање завршено",
|
||||||
"Open": "Отвори",
|
"Open": "Отвори",
|
||||||
"Open user settings": "Отвори корисничка подешавања",
|
"Open user settings": "Отвори корисничке поставке",
|
||||||
"Previous/next recently visited room or community": "Претходно/следеће недавно посећене собе или заједнице",
|
"Previous/next recently visited room or community": "Претходно/следеће недавно посећене собе или заједнице",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s радна површ (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s радна површ (%(platformName)s)",
|
||||||
"Go to your browser to complete Sign In": "Отворите ваш прегледач за довршавање пријаве",
|
"Go to your browser to complete Sign In": "Отворите ваш прегледач за довршавање пријаве",
|
||||||
@@ -29,7 +29,8 @@
|
|||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s користи напредне могућности које нису подржане у вашем тренутном прегледачу.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s користи напредне могућности које нису подржане у вашем тренутном прегледачу.",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Инсталирајте <chromeLink>Хром</chromeLink>, <firefoxLink>Фајерфокс</firefoxLink>, или <safariLink>Сафари</safariLink> за најбољи доживљај.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Инсталирајте <chromeLink>Хром</chromeLink>, <firefoxLink>Фајерфокс</firefoxLink>, или <safariLink>Сафари</safariLink> за најбољи доживљај.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Можете наставити користећи тренутни прегледач али неке могућности можда неће радити и изглед и доживљај апликације може бити лош.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Можете наставити користећи тренутни прегледач али неке могућности можда неће радити и изглед и доживљај апликације може бити лош.",
|
||||||
"I understand the risks and wish to continue": "Разумем могуће последице и желим наставити",
|
"I understand the risks and wish to continue": "Разумем ризике и желим да наставим",
|
||||||
"Go to element.io": "Иди на element.io",
|
"Go to element.io": "Иди на element.io",
|
||||||
"Failed to start": "Неуспех при покретању"
|
"Failed to start": "Неуспех при покретању",
|
||||||
|
"Powered by Matrix": "Оснажен од стране Матрикса"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,31 +4,31 @@
|
|||||||
"Unknown device": "Okänd enhet",
|
"Unknown device": "Okänd enhet",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att ringa med skärmdelning.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att ringa med skärmdelning.",
|
||||||
"Welcome to Element": "Välkommen till Element",
|
"Welcome to Element": "Välkommen till Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliserad, krypterad chatt & samarbetsplattform möjliggjort med [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliserad, krypterad chatt & samarbetsplattform baserad på [matrix]",
|
||||||
"Sign In": "Logga in",
|
"Sign In": "Logga in",
|
||||||
"Create Account": "Skapa konto",
|
"Create Account": "Skapa konto",
|
||||||
"Explore rooms": "Utforska rum",
|
"Explore rooms": "Utforska rum",
|
||||||
"The message from the parser is: %(message)s": "Medelandet från parsern är: %(message)s",
|
"The message from the parser is: %(message)s": "Meddelandet från parsern är: %(message)s",
|
||||||
"Invalid JSON": "Ogiltig JSON",
|
"Invalid JSON": "Ogiltig JSON",
|
||||||
"Unexpected error preparing the app. See console for details.": "Oväntat fel vid appstart. Se konsollen för mer information.",
|
"Unexpected error preparing the app. See console for details.": "Oväntat fel vid appstart. Se konsolen för mer information.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ogilitiga inställningar: enbart möjligt att specificera en default_config, default_server, eller default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ogiltiga inställningar: det är enbart möjligt att specificera en default_config, default_server, eller default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Ogilitiga inställningar: ingen standardserver specificerad.",
|
"Invalid configuration: no default server specified.": "Ogiltiga inställningar: ingen standardserver specificerad.",
|
||||||
"Open user settings": "Öppna användarinställningar",
|
"Open user settings": "Öppna användarinställningar",
|
||||||
"Go to your browser to complete Sign In": "Gå till din webbläsare för att slutföra inloggningen",
|
"Go to your browser to complete Sign In": "Gå till din webbläsare för att slutföra inloggningen",
|
||||||
"Missing indexeddb worker script!": "Saknar indexeddb worker skript!",
|
"Missing indexeddb worker script!": "Saknar IndexedDB-workerscript!",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Kan inte ladda konfigurationsfilen: var god ladda om sidan för att försöka igen.",
|
"Unable to load config file: please refresh the page to try again.": "Kan inte ladda konfigurationsfilen: ladda om sidan för att försöka igen.",
|
||||||
"Previous/next recently visited room or community": "Föregående/nästa nyligen besökt rum eller community",
|
"Previous/next recently visited room or community": "Föregående/nästa nyligen besökt rum eller gemenskap",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s skrivbord (%(platformName)s)",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Unsupported browser": "Webbläsaren stöds ej",
|
"Unsupported browser": "Webbläsaren stöds ej",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Installera <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eller <safariLink>Safari</safariLink> för den bästa upplevelsen.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Installera <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, eller <safariLink>Safari</safariLink> för den bästa upplevelsen.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kan fortsätta använda din nuvarande webbläsare, men vissa eller alla funktioner kanske inte fungerar och uteseendet samt känslan av applikationen kan var felaktig.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kan fortsätta använda din nuvarande webbläsare, men vissa eller alla funktioner kanske inte fungerar och utseendet och känslan av applikationen kan var felaktig.",
|
||||||
"I understand the risks and wish to continue": "Jag förstår riskerna och vill fortsätta",
|
"I understand the risks and wish to continue": "Jag förstår riskerna och vill fortsätta",
|
||||||
"Go to element.io": "Gå till element.io",
|
"Go to element.io": "Gå till element.io",
|
||||||
"Failed to start": "Misslyckade att starta",
|
"Failed to start": "Misslyckade att starta",
|
||||||
"Your Element is misconfigured": "Din Element är felkonfigurerad",
|
"Your Element is misconfigured": "Din Element är felkonfigurerad",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Din Element konfiguration innehåller ogiltig JSON. Vänligen rätta till problemet och ladda om sidan igen.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Din Elementkonfiguration innehåller ogiltig JSON. Vänligen rätta till problemet och ladda om sidan.",
|
||||||
"Download Completed": "Nedladdning Slutförd",
|
"Download Completed": "Nedladdning slutförd",
|
||||||
"Open": "Öppna",
|
"Open": "Öppna",
|
||||||
"Powered by Matrix": "Drivs av Matrix",
|
"Powered by Matrix": "Drivs av Matrix",
|
||||||
"Your browser can't run %(brand)s": "Din webbläsare kan inte köra %(brand)s",
|
"Your browser can't run %(brand)s": "Din webbläsare kan inte köra %(brand)s",
|
||||||
|
|||||||
1
src/i18n/strings/szl.json
Normal file
1
src/i18n/strings/szl.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
1
src/i18n/strings/tlh.json
Normal file
1
src/i18n/strings/tlh.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -20,11 +20,17 @@
|
|||||||
"Unable to load config file: please refresh the page to try again.": "Yapılandırma (config) dosyası yüklenemedi: lütfen yeniden denemek için sayfayı yenileyin.",
|
"Unable to load config file: please refresh the page to try again.": "Yapılandırma (config) dosyası yüklenemedi: lütfen yeniden denemek için sayfayı yenileyin.",
|
||||||
"Download Completed": "İndirme Tamamlandı",
|
"Download Completed": "İndirme Tamamlandı",
|
||||||
"Unsupported browser": "Desteklenmeyen tarayıcı",
|
"Unsupported browser": "Desteklenmeyen tarayıcı",
|
||||||
"Your browser can't run %(brand)s": "",
|
"Your browser can't run %(brand)s": "Tarayıcınız %(brand)s uygulamasını çalıştıramıyor",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s, kullandığınız tarayıcı tarafından desteklenmeyen, gelişmiş tarayıcı özellikleri kullanıyor.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s, kullandığınız tarayıcı tarafından desteklenmeyen, gelişmiş tarayıcı özellikleri kullanıyor.",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Daha iyi bir deneyim için lütfen <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ya da <safariLink>Safari</safariLink> tarayıcılarından birini yükleyin.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Daha iyi bir deneyim için lütfen <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ya da <safariLink>Safari</safariLink> tarayıcılarından birini yükleyin.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Şu anda kullanmış olduğunuz tarayıcınızı kullanmaya devam edebilirsiniz ancak uygulamanın sunduğu bazı ya da bütün özellikler çalışmayabilir ve deneyiminizi kötü yönde etkileyebilir.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Şu anda kullanmış olduğunuz tarayıcınızı kullanmaya devam edebilirsiniz ancak uygulamanın sunduğu bazı ya da bütün özellikler çalışmayabilir ve deneyiminizi kötü yönde etkileyebilir.",
|
||||||
"I understand the risks and wish to continue": "Riskleri anlıyorum ve devam etmek istiyorum",
|
"I understand the risks and wish to continue": "Riskleri anlıyorum ve devam etmek istiyorum",
|
||||||
"Go to element.io": "element.io adresine git",
|
"Go to element.io": "element.io adresine git",
|
||||||
"Failed to start": "Başlatılamadı"
|
"Failed to start": "Başlatılamadı",
|
||||||
|
"Previous/next recently visited room or community": "Yakında ziyaret edilen önceki/sonraki oda veya topluluk",
|
||||||
|
"Powered by Matrix": "Matrix tarafından güçlendirildi",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Masaüstü (%(platformName)s)",
|
||||||
|
"Open": "Aç",
|
||||||
|
"Missing indexeddb worker script!": "Indexeddb worker kodu eksik!"
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/i18n/strings/tzm.json
Normal file
14
src/i18n/strings/tzm.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"Create Account": "Ssenflul amiḍan",
|
||||||
|
"Download Completed": "Ittusmed wagam",
|
||||||
|
"Powered by Matrix": "Ittusker s Matrix",
|
||||||
|
"Sign In": "Kcem",
|
||||||
|
"Go to your browser to complete Sign In": "Ddu ɣer umessara fad ad tsemded azemmem",
|
||||||
|
"Welcome to Element": "Azul g Element",
|
||||||
|
"Go to element.io": "Ddu ɣer element.io",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"Unknown device": "Allal arussin",
|
||||||
|
"Open user settings": "Ṛẓem tisɣal n unessemres",
|
||||||
|
"Dismiss": "Nexxel",
|
||||||
|
"Open": "Ṛẓem"
|
||||||
|
}
|
||||||
@@ -2,35 +2,35 @@
|
|||||||
"Dismiss": "Відхилити",
|
"Dismiss": "Відхилити",
|
||||||
"powered by Matrix": "працює на Matrix",
|
"powered by Matrix": "працює на Matrix",
|
||||||
"Unknown device": "Невідомий пристрій",
|
"Unknown device": "Невідомий пристрій",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "Ви маєте використовувати HTTPS щоб зробити виклик із поширенням екрану.",
|
"You need to be using HTTPS to place a screen-sharing call.": "Ви маєте використовувати HTTPS щоб зробити виклик із спільним доступом до екрану.",
|
||||||
"Welcome to Element": "Ласкаво просимо до Element",
|
"Welcome to Element": "Ласкаво просимо до Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентралізована, зашифрована балачка та засіб для співробітництва, що працює на [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентралізований, зашифрований чат та засіб для співпраці, заснований на [matrix]",
|
||||||
"Sign In": "Увійти",
|
"Sign In": "Увійти",
|
||||||
"Create Account": "Створити обліковий запис",
|
"Create Account": "Створити обліковий запис",
|
||||||
"Explore rooms": "Шукати кімнати",
|
"Explore rooms": "Каталог кімнат",
|
||||||
"Unexpected error preparing the app. See console for details.": "Неочікувана помилка при готуванні програми. Дивіться деталі у виводі консолі.",
|
"Unexpected error preparing the app. See console for details.": "Неочікувана помилка при підготовці програми. Дивіться деталі у виводі консолі.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Невірна конфігурація: можна вказати лише default_server_config, default_server_name або default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Невірна конфігурація: можна вказати лише default_server_config, default_server_name або default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Невірна конфігурація: не вказано усталений сервер.",
|
"Invalid configuration: no default server specified.": "Невірна конфігурація: не вказано сервер за замовчуванням.",
|
||||||
"The message from the parser is: %(message)s": "Аналізатор повідомляє: %(message)s",
|
"The message from the parser is: %(message)s": "Повідомлення від аналізатора : %(message)s",
|
||||||
"Invalid JSON": "Хибний JSON",
|
"Invalid JSON": "Хибний JSON",
|
||||||
"Unsupported browser": "Непідтримуваний переглядач",
|
"Unsupported browser": "Непідтримуваний браузер",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Для найкращих вражень від користування встановіть, будь ласка, <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, або <safariLink>Safari</safariLink>.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Для найкращих вражень від користування встановіть, будь ласка, <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, або <safariLink>Safari</safariLink>.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Ви можете продовжити, користуючись вашим поточним переглядачем, але деякі функції можуть не працювати, а застосунок може виглядати неправильно.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Ви можете продовжити, користуючись вашим поточним браузером, але деякі функції можуть не працювати, а застосунок може виглядати неправильно.",
|
||||||
"I understand the risks and wish to continue": "Я усвідомлюю ризик і бажаю продовжити",
|
"I understand the risks and wish to continue": "Я усвідомлюю ризик і бажаю продовжити",
|
||||||
"Go to element.io": "Перейти на element.io",
|
"Go to element.io": "Перейти на element.io",
|
||||||
"Failed to start": "Запуск не вдався",
|
"Failed to start": "Запуск не вдався",
|
||||||
"Download Completed": "Завантаження завершено",
|
"Download Completed": "Завантаження завершено",
|
||||||
"Missing indexeddb worker script!": "Відсутній скрипт воркеру для IndexedDB!",
|
"Missing indexeddb worker script!": "Відсутній робочий сценарій IndexedDB!",
|
||||||
"Your Element is misconfigured": "Ваш Element налаштовано неправильно",
|
"Your Element is misconfigured": "Ваш Element налаштовано невірно",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Ваша конфігурація Element містить хибний JSON. Виправте проблему та оновіть сторінку.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Ваша конфігурація Element містить хибний JSON. Виправте проблему та оновіть сторінку.",
|
||||||
"Unable to load config file: please refresh the page to try again.": "Неможливо завантажити файл конфігурації. Оновіть, будь ласка, сторінку.",
|
"Unable to load config file: please refresh the page to try again.": "Неможливо завантажити файл конфігурації. Оновіть, будь ласка, сторінку, щоб спробувати знову.",
|
||||||
"Open": "Відкрити",
|
"Open": "Відкрити",
|
||||||
"Open user settings": "Відкрити користувацькі налаштування",
|
"Open user settings": "Відкрити налаштування користувача",
|
||||||
"Previous/next recently visited room or community": "Попередня/наступна нещодавно відвідана кімната чи спільнота",
|
"Previous/next recently visited room or community": "Попередня/наступна нещодавно відвідана кімната чи спільнота",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
||||||
"Go to your browser to complete Sign In": "Перейдіть у ваш переглядач щоб завершити входження",
|
"Go to your browser to complete Sign In": "Перейдіть у ваш браузер щоб завершити вхід",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
"Powered by Matrix": "Працює на Matrix",
|
"Powered by Matrix": "Працює на Matrix",
|
||||||
"Your browser can't run %(brand)s": "Ваш переглядач неспроможний запустити %(brand)s",
|
"Your browser can't run %(brand)s": "Ваш переглядач неспроможний запустити %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s використовує передові властивості, які ваш переглядач не підтримує."
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s використовує передові властивості, які ваш браузер не підтримує."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,5 +12,19 @@
|
|||||||
"Invalid configuration: no default server specified.": "Cấu hình không hợp lệ: máy chủ mặc định không được thiết lập.",
|
"Invalid configuration: no default server specified.": "Cấu hình không hợp lệ: máy chủ mặc định không được thiết lập.",
|
||||||
"Sign In": "Đăng nhập",
|
"Sign In": "Đăng nhập",
|
||||||
"Create Account": "Tạo tài khoản",
|
"Create Account": "Tạo tài khoản",
|
||||||
"Explore rooms": "Khám phá phòng chat"
|
"Explore rooms": "Khám phá phòng chat",
|
||||||
|
"Download Completed": "Đã hoàn thành tải xuống",
|
||||||
|
"Go to element.io": "Đi đến element.io",
|
||||||
|
"I understand the risks and wish to continue": "Tôi hiểu các rủi ro và muốn tiếp tục",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Bạn có thể tiếp tục sử dụng trình duyệt hiện tại của bạn, nhưng một số tính năng có thể không hoạt động và trải nghiệm ứng dụng sẽ không được chính xác.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Vui lòng cài đặt <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, hoặc <safariLink>Safari</safariLink> để có trải nghiệm tốt nhất.",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s dùng tính năng cao cấp của trình duyệt không được hỗ trợ bởi trình duyệt của bạn.",
|
||||||
|
"Your browser can't run %(brand)s": "Trình duyệt của bạn không thể chạy %(brand)s",
|
||||||
|
"Unsupported browser": "Trình duyệt không được hỗ trợ",
|
||||||
|
"Go to your browser to complete Sign In": "Mở trình duyệt web để hoàn thành đăng nhập",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Máy tính để bàn (%(platformName)s)",
|
||||||
|
"Previous/next recently visited room or community": "Phòng chat hoặc cộng đồng gần đây trước/tiếp theo",
|
||||||
|
"Open user settings": "Mở cài đặt người dùng",
|
||||||
|
"Open": "Mở",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Không thể tải tệp cấu hình: hãy làm mới trang để thử lại."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"Welcome to Element": "欢迎来到 Element",
|
"Welcome to Element": "欢迎来到 Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、加密聊天&与协作,由 [matrix] 驱动",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、加密聊天&与协作,由 [matrix] 驱动",
|
||||||
"Sign In": "登入",
|
"Sign In": "登入",
|
||||||
"Create Account": "创建帐号",
|
"Create Account": "创建账户",
|
||||||
"Explore rooms": "探索聊天室",
|
"Explore rooms": "探索聊天室",
|
||||||
"The message from the parser is: %(message)s": "语法分析器的信息:%(message)s",
|
"The message from the parser is: %(message)s": "语法分析器的信息:%(message)s",
|
||||||
"Invalid JSON": "无效的 JSON",
|
"Invalid JSON": "无效的 JSON",
|
||||||
@@ -32,5 +32,5 @@
|
|||||||
"Open": "打开",
|
"Open": "打开",
|
||||||
"Your browser can't run %(brand)s": "浏览器无法运行%(brand)s",
|
"Your browser can't run %(brand)s": "浏览器无法运行%(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "当前浏览器不支持%(brand)s调用的高级浏览器特性。",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "当前浏览器不支持%(brand)s调用的高级浏览器特性。",
|
||||||
"Powered by Matrix": "Powered by Matrix"
|
"Powered by Matrix": "由 Matrix 驱动"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,5 +32,5 @@
|
|||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element 的配置中包含無效JSON,請更正錯誤並重新加載網頁。",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element 的配置中包含無效JSON,請更正錯誤並重新加載網頁。",
|
||||||
"Your browser can't run %(brand)s": "當前瀏覽器無法運行%(brand)s",
|
"Your browser can't run %(brand)s": "當前瀏覽器無法運行%(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "當前瀏覽器不支持%(brand)s使用的高級特性。",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "當前瀏覽器不支持%(brand)s使用的高級特性。",
|
||||||
"Powered by Matrix": "威力本源 Matrix"
|
"Powered by Matrix": "由 Matrix 提供"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,8 @@ import React from 'react';
|
|||||||
// this incidentally means we can forget our React imports in JSX files without penalty.
|
// this incidentally means we can forget our React imports in JSX files without penalty.
|
||||||
window.React = React;
|
window.React = React;
|
||||||
|
|
||||||
import url from 'url';
|
|
||||||
import * as sdk from 'matrix-react-sdk';
|
import * as sdk from 'matrix-react-sdk';
|
||||||
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
|
import PlatformPeg from 'matrix-react-sdk/src/PlatformPeg';
|
||||||
import * as VectorConferenceHandler from 'matrix-react-sdk/src/VectorConferenceHandler';
|
|
||||||
import {_td, newTranslatableError} from 'matrix-react-sdk/src/languageHandler';
|
import {_td, newTranslatableError} from 'matrix-react-sdk/src/languageHandler';
|
||||||
import AutoDiscoveryUtils from 'matrix-react-sdk/src/utils/AutoDiscoveryUtils';
|
import AutoDiscoveryUtils from 'matrix-react-sdk/src/utils/AutoDiscoveryUtils';
|
||||||
import {AutoDiscovery} from "matrix-js-sdk/src/autodiscovery";
|
import {AutoDiscovery} from "matrix-js-sdk/src/autodiscovery";
|
||||||
@@ -34,7 +32,6 @@ import * as Lifecycle from "matrix-react-sdk/src/Lifecycle";
|
|||||||
import type MatrixChatType from "matrix-react-sdk/src/components/structures/MatrixChat";
|
import type MatrixChatType from "matrix-react-sdk/src/components/structures/MatrixChat";
|
||||||
import {MatrixClientPeg} from 'matrix-react-sdk/src/MatrixClientPeg';
|
import {MatrixClientPeg} from 'matrix-react-sdk/src/MatrixClientPeg';
|
||||||
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
|
import SdkConfig from "matrix-react-sdk/src/SdkConfig";
|
||||||
import CallHandler from 'matrix-react-sdk/src/CallHandler';
|
|
||||||
|
|
||||||
import {parseQs, parseQsFromFragment} from './url_utils';
|
import {parseQs, parseQsFromFragment} from './url_utils';
|
||||||
import VectorBasePlatform from "./platform/VectorBasePlatform";
|
import VectorBasePlatform from "./platform/VectorBasePlatform";
|
||||||
@@ -71,11 +68,16 @@ function onHashChange(ev: HashChangeEvent) {
|
|||||||
|
|
||||||
// This will be called whenever the SDK changes screens,
|
// This will be called whenever the SDK changes screens,
|
||||||
// so a web page can update the URL bar appropriately.
|
// so a web page can update the URL bar appropriately.
|
||||||
function onNewScreen(screen: string) {
|
function onNewScreen(screen: string, replaceLast = false) {
|
||||||
console.log("newscreen " + screen);
|
console.log("newscreen " + screen);
|
||||||
const hash = '#/' + screen;
|
const hash = '#/' + screen;
|
||||||
lastLocationHashSet = hash;
|
lastLocationHashSet = hash;
|
||||||
window.location.hash = hash;
|
|
||||||
|
if (replaceLast) {
|
||||||
|
window.location.replace(hash);
|
||||||
|
} else {
|
||||||
|
window.location.assign(hash);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We use this to work out what URL the SDK should
|
// We use this to work out what URL the SDK should
|
||||||
@@ -117,11 +119,12 @@ function onTokenLoginCompleted() {
|
|||||||
// if we did a token login, we're now left with the token, hs and is
|
// 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
|
// url as query params in the url; a little nasty but let's redirect to
|
||||||
// clear them.
|
// clear them.
|
||||||
const parsedUrl = url.parse(window.location.href);
|
const url = new URL(window.location.href);
|
||||||
parsedUrl.search = "";
|
|
||||||
const formatted = url.format(parsedUrl);
|
url.searchParams.delete("loginToken");
|
||||||
console.log(`Redirecting to ${formatted} to drop loginToken from queryparams`);
|
|
||||||
window.location.href = formatted;
|
console.log(`Redirecting to ${url.href} to drop loginToken from queryparams`);
|
||||||
|
window.history.replaceState(null, "", url.href);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loadApp(fragParams: {}) {
|
export async function loadApp(fragParams: {}) {
|
||||||
@@ -136,7 +139,6 @@ export async function loadApp(fragParams: {}) {
|
|||||||
throw newTranslatableError(_td("Missing indexeddb worker script!"));
|
throw newTranslatableError(_td("Missing indexeddb worker script!"));
|
||||||
}
|
}
|
||||||
MatrixClientPeg.setIndexedDbWorkerScript(vectorIndexeddbWorkerScript);
|
MatrixClientPeg.setIndexedDbWorkerScript(vectorIndexeddbWorkerScript);
|
||||||
CallHandler.setConferenceHandler(VectorConferenceHandler);
|
|
||||||
|
|
||||||
window.addEventListener('hashchange', onHashChange);
|
window.addEventListener('hashchange', onHashChange);
|
||||||
|
|
||||||
@@ -155,7 +157,6 @@ export async function loadApp(fragParams: {}) {
|
|||||||
return <MatrixChat
|
return <MatrixChat
|
||||||
onNewScreen={onNewScreen}
|
onNewScreen={onNewScreen}
|
||||||
makeRegistrationUrl={makeRegistrationUrl}
|
makeRegistrationUrl={makeRegistrationUrl}
|
||||||
ConferenceHandler={VectorConferenceHandler}
|
|
||||||
config={config}
|
config={config}
|
||||||
realQueryParams={params}
|
realQueryParams={params}
|
||||||
startingFragmentQueryParams={fragParams}
|
startingFragmentQueryParams={fragParams}
|
||||||
@@ -235,7 +236,7 @@ async function verifyServerConfig() {
|
|||||||
|
|
||||||
validatedConfig = AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, discoveryResult, true);
|
validatedConfig = AutoDiscoveryUtils.buildValidatedConfigFromDiscovery(serverName, discoveryResult, true);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
const {hsUrl, isUrl, userId} = Lifecycle.getLocalStorageSessionVars();
|
const {hsUrl, isUrl, userId} = await Lifecycle.getStoredSessionVars();
|
||||||
if (hsUrl && userId) {
|
if (hsUrl && userId) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
console.warn("A session was found - suppressing config error and using the session's homeserver");
|
console.warn("A session was found - suppressing config error and using the session's homeserver");
|
||||||
|
|||||||
@@ -23,16 +23,12 @@ limitations under the License.
|
|||||||
// in webpack.config.js
|
// in webpack.config.js
|
||||||
require('gfm.css/gfm.css');
|
require('gfm.css/gfm.css');
|
||||||
require('highlight.js/styles/github.css');
|
require('highlight.js/styles/github.css');
|
||||||
|
require('katex/dist/katex.css');
|
||||||
|
|
||||||
// These are things that can run before the skin loads - be careful not to reference the react-sdk though.
|
// These are things that can run before the skin loads - be careful not to reference the react-sdk though.
|
||||||
import {parseQsFromFragment} from "./url_utils";
|
import {parseQsFromFragment} from "./url_utils";
|
||||||
import './modernizr';
|
import './modernizr';
|
||||||
|
|
||||||
// load service worker if available on this platform
|
|
||||||
if ('serviceWorker' in navigator) {
|
|
||||||
navigator.serviceWorker.register('sw.js');
|
|
||||||
}
|
|
||||||
|
|
||||||
async function settled(...promises: Array<Promise<any>>) {
|
async function settled(...promises: Array<Promise<any>>) {
|
||||||
for (const prom of promises) {
|
for (const prom of promises) {
|
||||||
try {
|
try {
|
||||||
@@ -49,14 +45,20 @@ function checkBrowserFeatures() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// custom checks atop Modernizr because it doesn't have ES2018/ES2019 checks in it for some features we depend on,
|
// Custom checks atop Modernizr because it doesn't have ES2018/ES2019 checks
|
||||||
// Modernizr requires rules to be lowercase with no punctuation:
|
// in it for some features we depend on.
|
||||||
// ES2018: http://www.ecma-international.org/ecma-262/9.0/#sec-promise.prototype.finally
|
// Modernizr requires rules to be lowercase with no punctuation.
|
||||||
|
// ES2018: http://262.ecma-international.org/9.0/#sec-promise.prototype.finally
|
||||||
window.Modernizr.addTest("promiseprototypefinally", () =>
|
window.Modernizr.addTest("promiseprototypefinally", () =>
|
||||||
window.Promise && window.Promise.prototype && typeof window.Promise.prototype.finally === "function");
|
typeof window.Promise?.prototype?.finally === "function");
|
||||||
// ES2019: http://www.ecma-international.org/ecma-262/10.0/#sec-object.fromentries
|
// ES2018: https://262.ecma-international.org/9.0/#sec-get-regexp.prototype.dotAll
|
||||||
|
window.Modernizr.addTest("regexpdotall", () => (
|
||||||
|
window.RegExp?.prototype &&
|
||||||
|
!!Object.getOwnPropertyDescriptor(window.RegExp.prototype, "dotAll")?.get
|
||||||
|
));
|
||||||
|
// ES2019: http://262.ecma-international.org/10.0/#sec-object.fromentries
|
||||||
window.Modernizr.addTest("objectfromentries", () =>
|
window.Modernizr.addTest("objectfromentries", () =>
|
||||||
window.Object && typeof window.Object.fromEntries === "function");
|
typeof window.Object?.fromEntries === "function");
|
||||||
|
|
||||||
const featureList = Object.keys(window.Modernizr);
|
const featureList = Object.keys(window.Modernizr);
|
||||||
|
|
||||||
@@ -85,7 +87,7 @@ const supportedBrowser = checkBrowserFeatures();
|
|||||||
// try in react but fallback to an `alert`
|
// try in react but fallback to an `alert`
|
||||||
// We start loading stuff but don't block on it until as late as possible to allow
|
// We start loading stuff but don't block on it until as late as possible to allow
|
||||||
// the browser to use as much parallelism as it can.
|
// the browser to use as much parallelism as it can.
|
||||||
// Load parallelism is based on research in https://github.com/vector-im/riot-web/issues/12253
|
// Load parallelism is based on research in https://github.com/vector-im/element-web/issues/12253
|
||||||
async function start() {
|
async function start() {
|
||||||
// load init.ts async so that its code is not executed immediately and we can catch any exceptions
|
// load init.ts async so that its code is not executed immediately and we can catch any exceptions
|
||||||
const {
|
const {
|
||||||
@@ -114,7 +116,7 @@ async function start() {
|
|||||||
// don't try to redirect to the native apps if we're
|
// don't try to redirect to the native apps if we're
|
||||||
// verifying a 3pid (but after we've loaded the config)
|
// verifying a 3pid (but after we've loaded the config)
|
||||||
// or if the user is following a deep link
|
// or if the user is following a deep link
|
||||||
// (https://github.com/vector-im/riot-web/issues/7378)
|
// (https://github.com/vector-im/element-web/issues/7378)
|
||||||
const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;
|
const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;
|
||||||
|
|
||||||
if (!preventRedirect) {
|
if (!preventRedirect) {
|
||||||
@@ -154,7 +156,7 @@ async function start() {
|
|||||||
// error handling begins here
|
// error handling begins here
|
||||||
// ##########################
|
// ##########################
|
||||||
if (!acceptBrowser) {
|
if (!acceptBrowser) {
|
||||||
await new Promise(resolve => {
|
await new Promise<void>(resolve => {
|
||||||
console.error("Browser is missing required features.");
|
console.error("Browser is missing required features.");
|
||||||
// take to a different landing page to AWOOOOOGA at the user
|
// take to a different landing page to AWOOOOOGA at the user
|
||||||
showIncompatibleBrowser(() => {
|
showIncompatibleBrowser(() => {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015, 2016 OpenMarket Ltd
|
Copyright 2015, 2016 OpenMarket Ltd
|
||||||
Copyright 2017 Vector Creations Ltd
|
Copyright 2017 Vector Creations Ltd
|
||||||
Copyright 2018, 2019, 2020 New Vector Ltd
|
|
||||||
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
|
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
|
||||||
|
Copyright 2018 - 2021 New Vector Ltd
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -17,6 +17,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import olmWasmPath from "olm/olm.wasm";
|
import olmWasmPath from "olm/olm.wasm";
|
||||||
import Olm from 'olm';
|
import Olm from 'olm';
|
||||||
@@ -38,7 +39,7 @@ import { initRageshake } from "./rageshakesetup";
|
|||||||
export const rageshakePromise = initRageshake();
|
export const rageshakePromise = initRageshake();
|
||||||
|
|
||||||
export function preparePlatform() {
|
export function preparePlatform() {
|
||||||
if (window.ipcRenderer) {
|
if (window.electron) {
|
||||||
console.log("Using Electron platform");
|
console.log("Using Electron platform");
|
||||||
PlatformPeg.set(new ElectronPlatform());
|
PlatformPeg.set(new ElectronPlatform());
|
||||||
} else if (window.matchMedia('(display-mode: standalone)').matches) {
|
} else if (window.matchMedia('(display-mode: standalone)').matches) {
|
||||||
@@ -125,8 +126,9 @@ export async function loadSkin() {
|
|||||||
/* webpackPreload: true */
|
/* webpackPreload: true */
|
||||||
"matrix-react-sdk"),
|
"matrix-react-sdk"),
|
||||||
import(
|
import(
|
||||||
/* webpackChunkName: "riot-web-component-index" */
|
/* webpackChunkName: "element-web-component-index" */
|
||||||
/* webpackPreload: true */
|
/* webpackPreload: true */
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore - this module is generated so may fail lint
|
// @ts-ignore - this module is generated so may fail lint
|
||||||
"../component-index"),
|
"../component-index"),
|
||||||
]);
|
]);
|
||||||
@@ -141,7 +143,7 @@ export async function loadTheme() {
|
|||||||
export async function loadApp(fragParams: {}) {
|
export async function loadApp(fragParams: {}) {
|
||||||
// load app.js async so that its code is not executed immediately and we can catch any exceptions
|
// load app.js async so that its code is not executed immediately and we can catch any exceptions
|
||||||
const module = await import(
|
const module = await import(
|
||||||
/* webpackChunkName: "riot-web-app" */
|
/* webpackChunkName: "element-web-app" */
|
||||||
/* webpackPreload: true */
|
/* webpackPreload: true */
|
||||||
"./app");
|
"./app");
|
||||||
window.matrixChat = ReactDOM.render(await module.loadApp(fragParams),
|
window.matrixChat = ReactDOM.render(await module.loadApp(fragParams),
|
||||||
|
|||||||
105
src/vector/inline_widget_wrapper/WidgetApi.js
Normal file
105
src/vector/inline_widget_wrapper/WidgetApi.js
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import randomString from "random-string";
|
||||||
|
|
||||||
|
// Dev note: This is largely inspired by Dimension. Used with permission.
|
||||||
|
// https://github.com/turt2live/matrix-dimension/blob/4f92d560266635e5a3c824606215b84e8c0b19f5/web/app/shared/services/scalar/scalar-widget.api.ts#L1
|
||||||
|
export default class WidgetApi {
|
||||||
|
|
||||||
|
_origin;
|
||||||
|
_widgetId;
|
||||||
|
_capabilities;
|
||||||
|
_inFlightRequests = {}; // { reqId => replyFn(payload) }
|
||||||
|
|
||||||
|
constructor(origin, widgetId, capabilities) {
|
||||||
|
this._origin = new URL(origin).origin;
|
||||||
|
this._widgetId = widgetId;
|
||||||
|
this._capabilities = capabilities;
|
||||||
|
|
||||||
|
const toWidgetActions = {
|
||||||
|
"capabilities": this._onCapabilitiesRequest.bind(this),
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener("message", event => {
|
||||||
|
if (event.origin !== this._origin) return; // ignore due to invalid origin
|
||||||
|
if (!event.data) return;
|
||||||
|
if (event.data.widgetId !== this._widgetId) return;
|
||||||
|
|
||||||
|
const payload = event.data;
|
||||||
|
if (payload.api === "toWidget" && payload.action) {
|
||||||
|
console.log("[Inline Widget] Got toWidget: " + JSON.stringify(payload));
|
||||||
|
const handler = toWidgetActions[payload.action];
|
||||||
|
if (handler) handler(payload);
|
||||||
|
}
|
||||||
|
if (payload.api === "fromWidget" && this._inFlightRequests[payload.requestId]) {
|
||||||
|
console.log("[Inline Widget] Got fromWidget reply: " + JSON.stringify(payload));
|
||||||
|
const handler = this._inFlightRequests[payload.requestId];
|
||||||
|
delete this._inFlightRequests[payload.requestId];
|
||||||
|
handler(payload);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
sendText(text) {
|
||||||
|
this.sendEvent("m.room.message", {msgtype: "m.text", body: text});
|
||||||
|
}
|
||||||
|
|
||||||
|
sendNotice(text) {
|
||||||
|
this.sendEvent("m.room.message", {msgtype: "m.notice", body: text});
|
||||||
|
}
|
||||||
|
|
||||||
|
sendEvent(eventType, content) {
|
||||||
|
this._callAction("send_event", {
|
||||||
|
type: eventType,
|
||||||
|
content: content,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_callAction(action, payload) {
|
||||||
|
if (!window.parent) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const request = {
|
||||||
|
api: "fromWidget",
|
||||||
|
widgetId: this._widgetId,
|
||||||
|
action: action,
|
||||||
|
requestId: randomString({length: 16}),
|
||||||
|
data: payload,
|
||||||
|
};
|
||||||
|
|
||||||
|
this._inFlightRequests[request.requestId] = () => {};
|
||||||
|
|
||||||
|
console.log("[Inline Widget] Sending fromWidget: ", request);
|
||||||
|
window.parent.postMessage(request, this._origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
_replyPayload(incPayload, payload) {
|
||||||
|
if (!window.parent) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let request = JSON.parse(JSON.stringify(incPayload));
|
||||||
|
request["response"] = payload;
|
||||||
|
|
||||||
|
window.parent.postMessage(request, this._origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onCapabilitiesRequest(payload) {
|
||||||
|
this._replyPayload(payload, {capabilities: this._capabilities});
|
||||||
|
}
|
||||||
|
}
|
||||||
5
src/vector/inline_widget_wrapper/index.html
Normal file
5
src/vector/inline_widget_wrapper/index.html
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<body>
|
||||||
|
<div id="widgetHtml"></div>
|
||||||
|
</body>
|
||||||
|
|
||||||
71
src/vector/inline_widget_wrapper/index.js
Normal file
71
src/vector/inline_widget_wrapper/index.js
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
import queryString from "querystring";
|
||||||
|
import WidgetApi from "./WidgetApi";
|
||||||
|
|
||||||
|
let widgetApi;
|
||||||
|
try {
|
||||||
|
const qs = queryString.parse(window.location.search.substring(1));
|
||||||
|
if (!qs["widgetId"]) {
|
||||||
|
// noinspection ExceptionCaughtLocallyJS
|
||||||
|
throw new Error("Missing widgetId in query string");
|
||||||
|
}
|
||||||
|
if (!qs["parentUrl"]) {
|
||||||
|
// noinspection ExceptionCaughtLocallyJS
|
||||||
|
throw new Error("Missing parentUrl in query string");
|
||||||
|
}
|
||||||
|
|
||||||
|
const widgetOpts = JSON.parse(atob(window.location.hash
|
||||||
|
.substring(1)
|
||||||
|
.replace(/-/g, '+')
|
||||||
|
.replace(/_/g, '/')));
|
||||||
|
|
||||||
|
// This widget wrapper is always on the same origin as the client itself
|
||||||
|
widgetApi = new WidgetApi(qs["parentUrl"], qs["widgetId"], widgetOpts["capabilities"]);
|
||||||
|
|
||||||
|
document.getElementById("widgetHtml").innerHTML = widgetOpts['html'];
|
||||||
|
bindButtons();
|
||||||
|
} catch (e) {
|
||||||
|
console.error("[Inline Widget Wrapper] Error loading widget from URL: ", e);
|
||||||
|
document.getElementById("widgetHtml").innerText = "Failed to load widget";
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindButtons() {
|
||||||
|
const buttons = document.getElementsByTagName("button");
|
||||||
|
if (!buttons) return;
|
||||||
|
for (const button of buttons) {
|
||||||
|
button.addEventListener("click", onClick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClick(event) {
|
||||||
|
if (!event.target) return;
|
||||||
|
|
||||||
|
const action = event.target.getAttribute("data-mx-action");
|
||||||
|
if (!action) return; // TODO: Submit form or something?
|
||||||
|
|
||||||
|
const value = event.target.getAttribute("data-mx-value");
|
||||||
|
if (!value) return; // ignore - no value
|
||||||
|
|
||||||
|
if (action === "m.send_text") {
|
||||||
|
widgetApi.sendText(value);
|
||||||
|
} else if (action === "m.send_notice") {
|
||||||
|
widgetApi.sendNotice(value);
|
||||||
|
} else if (action === "m.send_hidden") {
|
||||||
|
widgetApi.sendEvent("m.room.hidden", {body: value});
|
||||||
|
} // else ignore
|
||||||
|
}
|
||||||
|
// TODO: Binding of forms, etc
|
||||||
@@ -9,9 +9,12 @@
|
|||||||
<div id="joinButtonContainer">
|
<div id="joinButtonContainer">
|
||||||
<div class="joinConferenceFloating">
|
<div class="joinConferenceFloating">
|
||||||
<div class="joinConferencePrompt">
|
<div class="joinConferencePrompt">
|
||||||
|
<span class="icon"><!-- managed by CSS --></span>
|
||||||
<!-- TODO: i18n -->
|
<!-- TODO: i18n -->
|
||||||
<h2>Jitsi Video Conference</h2>
|
<h2>Jitsi Video Conference</h2>
|
||||||
<button type="button" id="joinButton">Join Conference</button>
|
<div id="widgetActionContainer">
|
||||||
|
<button type="button" id="joinButton">Join Conference</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TODO: Match the user's theme: https://github.com/vector-im/riot-web/issues/12794
|
// TODO: Match the user's theme: https://github.com/vector-im/element-web/issues/12794
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Nunito';
|
font-family: 'Nunito';
|
||||||
@@ -23,10 +23,19 @@ limitations under the License.
|
|||||||
src: url('~matrix-react-sdk/res/fonts/Nunito/Nunito-Regular.ttf') format('truetype');
|
src: url('~matrix-react-sdk/res/fonts/Nunito/Nunito-Regular.ttf') format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$dark-fg: #edf3ff;
|
||||||
|
$dark-bg: #363c43;
|
||||||
|
$light-fg: #2e2f32;
|
||||||
|
$light-bg: #fff;
|
||||||
body {
|
body {
|
||||||
font-family: Nunito, Arial, Helvetica, sans-serif;
|
font-family: Nunito, Arial, Helvetica, sans-serif;
|
||||||
background-color: #181b21;
|
background-color: $dark-bg;
|
||||||
color: #edf3ff;
|
color: $dark-fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-light {
|
||||||
|
background-color: $light-bg;
|
||||||
|
color: $light-fg;
|
||||||
}
|
}
|
||||||
|
|
||||||
body, html {
|
body, html {
|
||||||
@@ -73,3 +82,26 @@ body, html {
|
|||||||
background-color: #03b381;
|
background-color: #03b381;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
$icon-size: 42px;
|
||||||
|
margin-top: -$icon-size; // to visually center the form
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
background-size: contain;
|
||||||
|
background-color: $dark-fg;
|
||||||
|
mask-repeat: no-repeat;
|
||||||
|
mask-position: center;
|
||||||
|
mask-image: url("~matrix-react-sdk/res/img/element-icons/call/video-call.svg");
|
||||||
|
mask-size: $icon-size;
|
||||||
|
display: block;
|
||||||
|
width: $icon-size;
|
||||||
|
height: $icon-size;
|
||||||
|
margin: 0 auto; // center
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body.theme-light .icon::before {
|
||||||
|
background-color: $light-fg;
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,7 +18,16 @@ limitations under the License.
|
|||||||
require("./index.scss");
|
require("./index.scss");
|
||||||
|
|
||||||
import * as qs from 'querystring';
|
import * as qs from 'querystring';
|
||||||
import { Capability, WidgetApi } from "matrix-react-sdk/src/widgets/WidgetApi";
|
import {KJUR} from 'jsrsasign';
|
||||||
|
import {
|
||||||
|
IOpenIDCredentials,
|
||||||
|
IWidgetApiRequest,
|
||||||
|
VideoConferenceCapabilities,
|
||||||
|
WidgetApi,
|
||||||
|
} from "matrix-widget-api";
|
||||||
|
import { ElementWidgetActions } from "matrix-react-sdk/src/stores/widgets/ElementWidgetActions";
|
||||||
|
|
||||||
|
const JITSI_OPENIDTOKEN_JWT_AUTH = 'openidtoken-jwt';
|
||||||
|
|
||||||
// Dev note: we use raw JS without many dependencies to reduce bundle size.
|
// Dev note: we use raw JS without many dependencies to reduce bundle size.
|
||||||
// We do not need all of React to render a Jitsi conference.
|
// We do not need all of React to render a Jitsi conference.
|
||||||
@@ -33,8 +42,13 @@ let conferenceId: string;
|
|||||||
let displayName: string;
|
let displayName: string;
|
||||||
let avatarUrl: string;
|
let avatarUrl: string;
|
||||||
let userId: string;
|
let userId: string;
|
||||||
|
let jitsiAuth: string;
|
||||||
|
let roomId: string;
|
||||||
|
let openIdToken: IOpenIDCredentials;
|
||||||
|
let roomName: string;
|
||||||
|
|
||||||
let widgetApi: WidgetApi;
|
let widgetApi: WidgetApi;
|
||||||
|
let meetApi: any; // JitsiMeetExternalAPI
|
||||||
|
|
||||||
(async function() {
|
(async function() {
|
||||||
try {
|
try {
|
||||||
@@ -54,13 +68,33 @@ let widgetApi: WidgetApi;
|
|||||||
// out into a browser.
|
// out into a browser.
|
||||||
const parentUrl = qsParam('parentUrl', true);
|
const parentUrl = qsParam('parentUrl', true);
|
||||||
const widgetId = qsParam('widgetId', true);
|
const widgetId = qsParam('widgetId', true);
|
||||||
|
const theme = qsParam('theme', true);
|
||||||
|
|
||||||
|
if (theme) {
|
||||||
|
document.body.classList.add(`theme-${theme.replace(" ", "_")}`);
|
||||||
|
}
|
||||||
|
|
||||||
// Set this up as early as possible because Element will be hitting it almost immediately.
|
// Set this up as early as possible because Element will be hitting it almost immediately.
|
||||||
|
let readyPromise: Promise<[void, void]>;
|
||||||
if (parentUrl && widgetId) {
|
if (parentUrl && widgetId) {
|
||||||
widgetApi = new WidgetApi(qsParam('parentUrl'), qsParam('widgetId'), [
|
const parentOrigin = new URL(qsParam('parentUrl')).origin;
|
||||||
Capability.AlwaysOnScreen,
|
widgetApi = new WidgetApi(qsParam("widgetId"), parentOrigin);
|
||||||
|
widgetApi.requestCapabilities(VideoConferenceCapabilities);
|
||||||
|
readyPromise = Promise.all([
|
||||||
|
new Promise<void>(resolve => {
|
||||||
|
widgetApi.once(`action:${ElementWidgetActions.ClientReady}`, ev => {
|
||||||
|
ev.preventDefault();
|
||||||
|
widgetApi.transport.reply(ev.detail, {});
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
new Promise<void>(resolve => {
|
||||||
|
widgetApi.once("ready", () => resolve());
|
||||||
|
}),
|
||||||
]);
|
]);
|
||||||
widgetApi.expectingExplicitReady = true;
|
widgetApi.start();
|
||||||
|
} else {
|
||||||
|
console.warn("No parent URL or no widget ID - assuming no widget API is available");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Populate the Jitsi params now
|
// Populate the Jitsi params now
|
||||||
@@ -69,40 +103,130 @@ let widgetApi: WidgetApi;
|
|||||||
displayName = qsParam('displayName', true);
|
displayName = qsParam('displayName', true);
|
||||||
avatarUrl = qsParam('avatarUrl', true); // http not mxc
|
avatarUrl = qsParam('avatarUrl', true); // http not mxc
|
||||||
userId = qsParam('userId');
|
userId = qsParam('userId');
|
||||||
|
jitsiAuth = qsParam('auth', true);
|
||||||
|
roomId = qsParam('roomId', true);
|
||||||
|
roomName = qsParam('roomName', true);
|
||||||
|
|
||||||
if (widgetApi) {
|
if (widgetApi) {
|
||||||
await widgetApi.waitReady();
|
await readyPromise;
|
||||||
await widgetApi.setAlwaysOnScreen(false); // start off as detachable from the screen
|
await widgetApi.setAlwaysOnScreen(false); // start off as detachable from the screen
|
||||||
|
|
||||||
|
// See https://github.com/matrix-org/prosody-mod-auth-matrix-user-verification
|
||||||
|
if (jitsiAuth === JITSI_OPENIDTOKEN_JWT_AUTH) {
|
||||||
|
// Request credentials, give callback to continue when received
|
||||||
|
openIdToken = await widgetApi.requestOpenIDConnectToken();
|
||||||
|
console.log("Got OpenID Connect token");
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/element-web/issues/12795)
|
||||||
|
|
||||||
|
widgetApi.on(`action:${ElementWidgetActions.HangupCall}`,
|
||||||
|
(ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
if (meetApi) meetApi.executeCommand('hangup');
|
||||||
|
widgetApi.transport.reply(ev.detail, {}); // ack
|
||||||
|
},
|
||||||
|
);
|
||||||
|
widgetApi.on(`action:${ElementWidgetActions.StartLiveStream}`,
|
||||||
|
(ev: CustomEvent<IWidgetApiRequest>) => {
|
||||||
|
if (meetApi) {
|
||||||
|
meetApi.executeCommand('startRecording', {
|
||||||
|
mode: 'stream',
|
||||||
|
// this looks like it should be rtmpStreamKey but we may be on too old
|
||||||
|
// a version of jitsi meet
|
||||||
|
//rtmpStreamKey: ev.detail.data.rtmpStreamKey,
|
||||||
|
youtubeStreamKey: ev.detail.data.rtmpStreamKey,
|
||||||
|
});
|
||||||
|
widgetApi.transport.reply(ev.detail, {}); // ack
|
||||||
|
} else {
|
||||||
|
widgetApi.transport.reply(ev.detail, {error: {message: "Conference not joined"}});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/riot-web/issues/12795)
|
enableJoinButton(); // always enable the button
|
||||||
|
|
||||||
document.getElementById("joinButton").onclick = () => joinConference();
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Error setting up Jitsi widget", e);
|
console.error("Error setting up Jitsi widget", e);
|
||||||
document.getElementById("jitsiContainer").innerText = "Failed to load Jitsi widget";
|
document.getElementById("widgetActionContainer").innerText = "Failed to load Jitsi widget";
|
||||||
switchVisibleContainers();
|
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
function enableJoinButton() {
|
||||||
|
document.getElementById("joinButton").onclick = () => joinConference();
|
||||||
|
}
|
||||||
|
|
||||||
function switchVisibleContainers() {
|
function switchVisibleContainers() {
|
||||||
inConference = !inConference;
|
inConference = !inConference;
|
||||||
document.getElementById("jitsiContainer").style.visibility = inConference ? 'unset' : 'hidden';
|
document.getElementById("jitsiContainer").style.visibility = inConference ? 'unset' : 'hidden';
|
||||||
document.getElementById("joinButtonContainer").style.visibility = inConference ? 'hidden' : 'unset';
|
document.getElementById("joinButtonContainer").style.visibility = inConference ? 'hidden' : 'unset';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a JWT token fot jitsi openidtoken-jwt auth
|
||||||
|
*
|
||||||
|
* See https://github.com/matrix-org/prosody-mod-auth-matrix-user-verification
|
||||||
|
*/
|
||||||
|
function createJWTToken() {
|
||||||
|
// Header
|
||||||
|
const header = {alg: 'HS256', typ: 'JWT'};
|
||||||
|
// Payload
|
||||||
|
const payload = {
|
||||||
|
// As per Jitsi token auth, `iss` needs to be set to something agreed between
|
||||||
|
// JWT generating side and Prosody config. Since we have no configuration for
|
||||||
|
// the widgets, we can't set one anywhere. Using the Jitsi domain here probably makes sense.
|
||||||
|
iss: jitsiDomain,
|
||||||
|
sub: jitsiDomain,
|
||||||
|
aud: `https://${jitsiDomain}`,
|
||||||
|
room: "*",
|
||||||
|
context: {
|
||||||
|
matrix: {
|
||||||
|
token: openIdToken.access_token,
|
||||||
|
room_id: roomId,
|
||||||
|
server_name: openIdToken.matrix_server_name,
|
||||||
|
},
|
||||||
|
user: {
|
||||||
|
avatar: avatarUrl,
|
||||||
|
name: displayName,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
// Sign JWT
|
||||||
|
// The secret string here is irrelevant, we're only using the JWT
|
||||||
|
// to transport data to Prosody in the Jitsi stack.
|
||||||
|
return KJUR.jws.JWS.sign(
|
||||||
|
'HS256',
|
||||||
|
JSON.stringify(header),
|
||||||
|
JSON.stringify(payload),
|
||||||
|
'notused',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function joinConference() { // event handler bound in HTML
|
function joinConference() { // event handler bound in HTML
|
||||||
|
let jwt;
|
||||||
|
if (jitsiAuth === JITSI_OPENIDTOKEN_JWT_AUTH) {
|
||||||
|
if (!openIdToken?.access_token) { // eslint-disable-line camelcase
|
||||||
|
// We've failing to get a token, don't try to init conference
|
||||||
|
console.warn('Expected to have an OpenID credential, cannot initialize widget.');
|
||||||
|
document.getElementById("widgetActionContainer").innerText = "Failed to load Jitsi widget";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
jwt = createJWTToken();
|
||||||
|
}
|
||||||
|
|
||||||
switchVisibleContainers();
|
switchVisibleContainers();
|
||||||
|
|
||||||
// noinspection JSIgnoredPromiseFromCall
|
if (widgetApi) {
|
||||||
if (widgetApi) widgetApi.setAlwaysOnScreen(true); // ignored promise because we don't care if it works
|
// ignored promise because we don't care if it works
|
||||||
|
// noinspection JSIgnoredPromiseFromCall
|
||||||
|
widgetApi.setAlwaysOnScreen(true);
|
||||||
|
}
|
||||||
|
|
||||||
console.warn(
|
console.warn(
|
||||||
"[Jitsi Widget] The next few errors about failing to parse URL parameters are fine if " +
|
"[Jitsi Widget] The next few errors about failing to parse URL parameters are fine if " +
|
||||||
"they mention 'external_api' or 'jitsi' in the stack. They're just Jitsi Meet trying to parse " +
|
"they mention 'external_api' or 'jitsi' in the stack. They're just Jitsi Meet trying to parse " +
|
||||||
"our fragment values and not recognizing the options.",
|
"our fragment values and not recognizing the options.",
|
||||||
);
|
);
|
||||||
const meetApi = new JitsiMeetExternalAPI(jitsiDomain, {
|
const options = {
|
||||||
width: "100%",
|
width: "100%",
|
||||||
height: "100%",
|
height: "100%",
|
||||||
parentNode: document.querySelector("#jitsiContainer"),
|
parentNode: document.querySelector("#jitsiContainer"),
|
||||||
@@ -113,17 +237,25 @@ function joinConference() { // event handler bound in HTML
|
|||||||
MAIN_TOOLBAR_BUTTONS: [],
|
MAIN_TOOLBAR_BUTTONS: [],
|
||||||
VIDEO_LAYOUT_FIT: "height",
|
VIDEO_LAYOUT_FIT: "height",
|
||||||
},
|
},
|
||||||
});
|
jwt: jwt,
|
||||||
|
};
|
||||||
|
|
||||||
|
meetApi = new JitsiMeetExternalAPI(jitsiDomain, options);
|
||||||
if (displayName) meetApi.executeCommand("displayName", displayName);
|
if (displayName) meetApi.executeCommand("displayName", displayName);
|
||||||
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
|
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
|
||||||
if (userId) meetApi.executeCommand("email", userId);
|
if (userId) meetApi.executeCommand("email", userId);
|
||||||
|
if (roomName) meetApi.executeCommand("subject", roomName);
|
||||||
|
|
||||||
meetApi.on("readyToClose", () => {
|
meetApi.on("readyToClose", () => {
|
||||||
switchVisibleContainers();
|
switchVisibleContainers();
|
||||||
|
|
||||||
// noinspection JSIgnoredPromiseFromCall
|
if (widgetApi) {
|
||||||
if (widgetApi) widgetApi.setAlwaysOnScreen(false); // ignored promise because we don't care if it works
|
// ignored promise because we don't care if it works
|
||||||
|
// noinspection JSIgnoredPromiseFromCall
|
||||||
|
widgetApi.setAlwaysOnScreen(false);
|
||||||
|
}
|
||||||
|
|
||||||
document.getElementById("jitsiContainer").innerHTML = "";
|
document.getElementById("jitsiContainer").innerHTML = "";
|
||||||
|
meetApi = null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ body {
|
|||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
<a href="https://f-droid.org/repository/browse/?fdid=im.vector.alpha" target="_blank" class="mx_ClearDecoration">
|
<a href="https://f-droid.org/repository/browse/?fdid=im.vector.app" target="_blank" class="mx_ClearDecoration">
|
||||||
<svg width="164px" height="48px" viewBox="0 0 157 46" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
<svg width="164px" height="48px" viewBox="0 0 157 46" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
<desc>Get it on F-Droid.</desc>
|
<desc>Get it on F-Droid.</desc>
|
||||||
<defs>
|
<defs>
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2016 Aviral Dasgupta
|
Copyright 2016 Aviral Dasgupta
|
||||||
Copyright 2016 OpenMarket Ltd
|
Copyright 2016 OpenMarket Ltd
|
||||||
Copyright 2018 New Vector Ltd
|
|
||||||
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
|
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
|
||||||
Copyright 2020 The Matrix.org Foundation C.I.C.
|
Copyright 2018 - 2021 New Vector Ltd
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@@ -27,7 +26,7 @@ import BaseEventIndexManager, {
|
|||||||
MatrixEvent,
|
MatrixEvent,
|
||||||
MatrixProfile,
|
MatrixProfile,
|
||||||
SearchArgs,
|
SearchArgs,
|
||||||
SearchResult
|
SearchResult,
|
||||||
} from 'matrix-react-sdk/src/indexing/BaseEventIndexManager';
|
} from 'matrix-react-sdk/src/indexing/BaseEventIndexManager';
|
||||||
import dis from 'matrix-react-sdk/src/dispatcher/dispatcher';
|
import dis from 'matrix-react-sdk/src/dispatcher/dispatcher';
|
||||||
import {_t, _td} from 'matrix-react-sdk/src/languageHandler';
|
import {_t, _td} from 'matrix-react-sdk/src/languageHandler';
|
||||||
@@ -49,7 +48,7 @@ import {CheckUpdatesPayload} from "matrix-react-sdk/src/dispatcher/payloads/Chec
|
|||||||
import ToastStore from "matrix-react-sdk/src/stores/ToastStore";
|
import ToastStore from "matrix-react-sdk/src/stores/ToastStore";
|
||||||
import GenericExpiringToast from "matrix-react-sdk/src/components/views/toasts/GenericExpiringToast";
|
import GenericExpiringToast from "matrix-react-sdk/src/components/views/toasts/GenericExpiringToast";
|
||||||
|
|
||||||
const ipcRenderer = window.ipcRenderer;
|
const electron = window.electron;
|
||||||
const isMac = navigator.platform.toUpperCase().includes('MAC');
|
const isMac = navigator.platform.toUpperCase().includes('MAC');
|
||||||
|
|
||||||
function platformFriendlyName(): string {
|
function platformFriendlyName(): string {
|
||||||
@@ -74,7 +73,7 @@ function platformFriendlyName(): string {
|
|||||||
function _onAction(payload: ActionPayload) {
|
function _onAction(payload: ActionPayload) {
|
||||||
// Whitelist payload actions, no point sending most across
|
// Whitelist payload actions, no point sending most across
|
||||||
if (['call_state'].includes(payload.action)) {
|
if (['call_state'].includes(payload.action)) {
|
||||||
ipcRenderer.send('app_onAction', payload);
|
electron.send('app_onAction', payload);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,12 +98,12 @@ interface IPCPayload {
|
|||||||
|
|
||||||
class SeshatIndexManager extends BaseEventIndexManager {
|
class SeshatIndexManager extends BaseEventIndexManager {
|
||||||
private pendingIpcCalls: Record<number, { resolve, reject }> = {};
|
private pendingIpcCalls: Record<number, { resolve, reject }> = {};
|
||||||
private nextIpcCallId: number = 0;
|
private nextIpcCallId = 0;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
ipcRenderer.on('seshatReply', this._onIpcReply);
|
electron.on('seshatReply', this._onIpcReply);
|
||||||
}
|
}
|
||||||
|
|
||||||
async _ipcCall(name: string, ...args: any[]): Promise<any> {
|
async _ipcCall(name: string, ...args: any[]): Promise<any> {
|
||||||
@@ -112,7 +111,7 @@ class SeshatIndexManager extends BaseEventIndexManager {
|
|||||||
const ipcCallId = ++this.nextIpcCallId;
|
const ipcCallId = ++this.nextIpcCallId;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.pendingIpcCalls[ipcCallId] = {resolve, reject};
|
this.pendingIpcCalls[ipcCallId] = {resolve, reject};
|
||||||
window.ipcRenderer.send('seshat', {id: ipcCallId, name, args});
|
window.electron.send('seshat', {id: ipcCallId, name, args});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,8 +139,8 @@ class SeshatIndexManager extends BaseEventIndexManager {
|
|||||||
return this._ipcCall('supportsEventIndexing');
|
return this._ipcCall('supportsEventIndexing');
|
||||||
}
|
}
|
||||||
|
|
||||||
async initEventIndex(): Promise<void> {
|
async initEventIndex(userId: string, deviceId: string): Promise<void> {
|
||||||
return this._ipcCall('initEventIndex');
|
return this._ipcCall('initEventIndex', userId, deviceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
async addEventToIndex(ev: MatrixEvent, profile: MatrixProfile): Promise<void> {
|
async addEventToIndex(ev: MatrixEvent, profile: MatrixProfile): Promise<void> {
|
||||||
@@ -216,7 +215,7 @@ class SeshatIndexManager extends BaseEventIndexManager {
|
|||||||
export default class ElectronPlatform extends VectorBasePlatform {
|
export default class ElectronPlatform extends VectorBasePlatform {
|
||||||
private eventIndexManager: BaseEventIndexManager = new SeshatIndexManager();
|
private eventIndexManager: BaseEventIndexManager = new SeshatIndexManager();
|
||||||
private pendingIpcCalls: Record<number, { resolve, reject }> = {};
|
private pendingIpcCalls: Record<number, { resolve, reject }> = {};
|
||||||
private nextIpcCallId: number = 0;
|
private nextIpcCallId = 0;
|
||||||
// this is the opaque token we pass to the HS which when we get it in our callback we can resolve to a profile
|
// this is the opaque token we pass to the HS which when we get it in our callback we can resolve to a profile
|
||||||
private ssoID: string = randomString(32);
|
private ssoID: string = randomString(32);
|
||||||
|
|
||||||
@@ -230,7 +229,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
false if there is not
|
false if there is not
|
||||||
or the error if one is encountered
|
or the error if one is encountered
|
||||||
*/
|
*/
|
||||||
ipcRenderer.on('check_updates', (event, status) => {
|
electron.on('check_updates', (event, status) => {
|
||||||
dis.dispatch<CheckUpdatesPayload>({
|
dis.dispatch<CheckUpdatesPayload>({
|
||||||
action: Action.CheckUpdates,
|
action: Action.CheckUpdates,
|
||||||
...getUpdateCheckStatus(status),
|
...getUpdateCheckStatus(status),
|
||||||
@@ -238,21 +237,21 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// try to flush the rageshake logs to indexeddb before quit.
|
// try to flush the rageshake logs to indexeddb before quit.
|
||||||
ipcRenderer.on('before-quit', function() {
|
electron.on('before-quit', function() {
|
||||||
console.log('riot-desktop closing');
|
console.log('element-desktop closing');
|
||||||
rageshake.flush();
|
rageshake.flush();
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcRenderer.on('ipcReply', this._onIpcReply);
|
electron.on('ipcReply', this._onIpcReply);
|
||||||
ipcRenderer.on('update-downloaded', this.onUpdateDownloaded);
|
electron.on('update-downloaded', this.onUpdateDownloaded);
|
||||||
|
|
||||||
ipcRenderer.on('preferences', () => {
|
electron.on('preferences', () => {
|
||||||
dis.fire(Action.ViewUserSettings);
|
dis.fire(Action.ViewUserSettings);
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcRenderer.on('userDownloadCompleted', (ev, {path, name}) => {
|
electron.on('userDownloadCompleted', (ev, {path, name}) => {
|
||||||
const onAccept = () => {
|
const onAccept = () => {
|
||||||
ipcRenderer.send('userDownloadOpen', {path});
|
electron.send('userDownloadOpen', {path});
|
||||||
};
|
};
|
||||||
|
|
||||||
ToastStore.sharedInstance().addOrReplaceToast({
|
ToastStore.sharedInstance().addOrReplaceToast({
|
||||||
@@ -324,11 +323,21 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
return 'Electron Platform'; // no translation required: only used for analytics
|
return 'Electron Platform'; // no translation required: only used for analytics
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if platform supports multi-language
|
||||||
|
* spell-checking, otherwise false.
|
||||||
|
*/
|
||||||
|
supportsMultiLanguageSpellCheck(): boolean {
|
||||||
|
// Electron uses OS spell checking on macOS, so no need for in-app options
|
||||||
|
if (isMac) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
setNotificationCount(count: number) {
|
setNotificationCount(count: number) {
|
||||||
if (this.notificationCount === count) return;
|
if (this.notificationCount === count) return;
|
||||||
super.setNotificationCount(count);
|
super.setNotificationCount(count);
|
||||||
|
|
||||||
ipcRenderer.send('setBadgeCount', count);
|
electron.send('setBadgeCount', count);
|
||||||
}
|
}
|
||||||
|
|
||||||
supportsNotifications(): boolean {
|
supportsNotifications(): boolean {
|
||||||
@@ -371,7 +380,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loudNotification(ev: Event, room: Object) {
|
loudNotification(ev: Event, room: Object) {
|
||||||
ipcRenderer.send('loudNotification');
|
electron.send('loudNotification');
|
||||||
}
|
}
|
||||||
|
|
||||||
async getAppVersion(): Promise<string> {
|
async getAppVersion(): Promise<string> {
|
||||||
@@ -423,14 +432,14 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
|
|
||||||
startUpdateCheck() {
|
startUpdateCheck() {
|
||||||
super.startUpdateCheck();
|
super.startUpdateCheck();
|
||||||
ipcRenderer.send('check_updates');
|
electron.send('check_updates');
|
||||||
}
|
}
|
||||||
|
|
||||||
installUpdate() {
|
installUpdate() {
|
||||||
// IPC to the main process to install the update, since quitAndInstall
|
// IPC to the main process to install the update, since quitAndInstall
|
||||||
// doesn't fire the before-quit event so the main process needs to know
|
// doesn't fire the before-quit event so the main process needs to know
|
||||||
// it should exit.
|
// it should exit.
|
||||||
ipcRenderer.send('install_update');
|
electron.send('install_update');
|
||||||
}
|
}
|
||||||
|
|
||||||
getDefaultDeviceDisplayName(): string {
|
getDefaultDeviceDisplayName(): string {
|
||||||
@@ -460,7 +469,7 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
const ipcCallId = ++this.nextIpcCallId;
|
const ipcCallId = ++this.nextIpcCallId;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.pendingIpcCalls[ipcCallId] = {resolve, reject};
|
this.pendingIpcCalls[ipcCallId] = {resolve, reject};
|
||||||
window.ipcRenderer.send('ipcCall', {id: ipcCallId, name, args});
|
window.electron.send('ipcCall', {id: ipcCallId, name, args});
|
||||||
// Maybe add a timeout to these? Probably not necessary.
|
// Maybe add a timeout to these? Probably not necessary.
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -489,13 +498,21 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
return this.eventIndexManager;
|
return this.eventIndexManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
setLanguage(preferredLangs: string[]) {
|
setSpellCheckLanguages(preferredLangs: string[]) {
|
||||||
this._ipcCall('setLanguage', preferredLangs).catch(error => {
|
this._ipcCall('setSpellCheckLanguages', preferredLangs).catch(error => {
|
||||||
console.log("Failed to send setLanguage IPC to Electron");
|
console.log("Failed to send setSpellCheckLanguages IPC to Electron");
|
||||||
console.error(error);
|
console.error(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getSpellCheckLanguages(): Promise<string[]> {
|
||||||
|
return this._ipcCall('getSpellCheckLanguages');
|
||||||
|
}
|
||||||
|
|
||||||
|
async getAvailableSpellCheckLanguages(): Promise<string[]> {
|
||||||
|
return this._ipcCall('getAvailableSpellCheckLanguages');
|
||||||
|
}
|
||||||
|
|
||||||
getSSOCallbackUrl(fragmentAfterLogin: string): URL {
|
getSSOCallbackUrl(fragmentAfterLogin: string): URL {
|
||||||
const url = super.getSSOCallbackUrl(fragmentAfterLogin);
|
const url = super.getSSOCallbackUrl(fragmentAfterLogin);
|
||||||
url.protocol = "element";
|
url.protocol = "element";
|
||||||
@@ -503,9 +520,9 @@ export default class ElectronPlatform extends VectorBasePlatform {
|
|||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
startSingleSignOn(mxClient: MatrixClient, loginType: "sso" | "cas", fragmentAfterLogin: string) {
|
startSingleSignOn(mxClient: MatrixClient, loginType: "sso" | "cas", fragmentAfterLogin: string, idpId?: string) {
|
||||||
// this will get intercepted by electron-main will-navigate
|
// this will get intercepted by electron-main will-navigate
|
||||||
super.startSingleSignOn(mxClient, loginType, fragmentAfterLogin);
|
super.startSingleSignOn(mxClient, loginType, fragmentAfterLogin, idpId);
|
||||||
Modal.createTrackedDialog('Electron', 'SSO', InfoDialog, {
|
Modal.createTrackedDialog('Electron', 'SSO', InfoDialog, {
|
||||||
title: _t("Go to your browser to complete Sign In"),
|
title: _t("Go to your browser to complete Sign In"),
|
||||||
description: <Spinner />,
|
description: <Spinner />,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user