mirror of
https://github.com/vector-im/riotX-android
synced 2025-10-06 00:02:48 +02:00
Compare commits
2786 Commits
v1.4.8
...
task/eric/
Author | SHA1 | Date | |
---|---|---|---|
|
92492c95c1 | ||
|
ed8212a8c0 | ||
|
427f53dce7 | ||
|
91008785cb | ||
|
c8e33532f7 | ||
|
8ef89958b3 | ||
|
067c485e4f | ||
|
8a68b31f1b | ||
|
1659ca001d | ||
|
7f1bcacd97 | ||
|
67d5289f01 | ||
|
3e770f9efa | ||
|
4126e6418b | ||
|
8abae6f917 | ||
|
7c3257942c | ||
|
19fc97ba0f | ||
|
2cbb5306f9 | ||
|
310c4b4a24 | ||
|
6f74f28561 | ||
|
6b8bbf2574 | ||
|
41a3a07bf6 | ||
|
09f158e85d | ||
|
89348995c2 | ||
|
7616912411 | ||
|
0743140973 | ||
|
d957e24747 | ||
|
03202080b3 | ||
|
b68e01cda4 | ||
|
b847d8cf36 | ||
|
16c6cdf108 | ||
|
3c092c4e2a | ||
|
4f19034a94 | ||
|
f58ba13ef0 | ||
|
a51d626fe8 | ||
|
35325db407 | ||
|
f0c8c3fd63 | ||
|
293a177148 | ||
|
3e42cec4ec | ||
|
57f42ed0f5 | ||
|
2c444527bd | ||
|
dd397b9a48 | ||
|
d43c802c90 | ||
|
1355178fee | ||
|
81505d3802 | ||
|
8811f752e5 | ||
|
be099dcae0 | ||
|
abf35d730d | ||
|
f3e7d0daff | ||
|
906fe8be76 | ||
|
2a36dc8ee5 | ||
|
941c2a792f | ||
|
daecd7d43a | ||
|
26aaf84806 | ||
|
cadd5c050b | ||
|
b8734a23a9 | ||
|
a53ad39e1a | ||
|
84bb11c1bf | ||
|
93b7e1094c | ||
|
f7a0615105 | ||
|
8dc57fe2f0 | ||
|
397614121c | ||
|
944b447d93 | ||
|
aae6e20f9c | ||
|
bdb49f5946 | ||
|
d281f9dde5 | ||
|
d5b375e82b | ||
|
6fd99dc302 | ||
|
90a4e71b06 | ||
|
f5e33ca980 | ||
|
82feda476d | ||
|
5e9e65e10f | ||
|
be3d419290 | ||
|
e6e079a071 | ||
|
e326188aa8 | ||
|
bfa50f186a | ||
|
f2db4be479 | ||
|
0bbc74b193 | ||
|
27b1bc9e66 | ||
|
7617309058 | ||
|
a8b73f0cf9 | ||
|
df6ebcacd1 | ||
|
a92fae6d25 | ||
|
1297ccd45c | ||
|
28ca03cc67 | ||
|
c6a89c738a | ||
|
529898d9fa | ||
|
9a2beb5017 | ||
|
08cb6de83d | ||
|
fb5f0cbd00 | ||
|
e7322e8524 | ||
|
5a67c39c7f | ||
|
a885ff5e47 | ||
|
b0907de582 | ||
|
ddd82441bd | ||
|
8e829c6aad | ||
|
d9fb58fbcb | ||
|
f64adeba7f | ||
|
34145f0374 | ||
|
df241dbdb8 | ||
|
010cf540b6 | ||
|
55fdff4242 | ||
|
d3a516b05d | ||
|
a9a7400fef | ||
|
fb352ffa38 | ||
|
d8d808d0b4 | ||
|
8c26592d46 | ||
|
9b8e45ebfe | ||
|
93aac8faea | ||
|
2e88998b05 | ||
|
3a5b737639 | ||
|
28dd507a74 | ||
|
96f0d52753 | ||
|
45c80de333 | ||
|
243463adbc | ||
|
395d48f946 | ||
|
497f7cf044 | ||
|
d6358dcb16 | ||
|
28a3ae264c | ||
|
dd3928f075 | ||
|
b3bfd05ecb | ||
|
e861edd544 | ||
|
6e57aeb9e5 | ||
|
98b55457b5 | ||
|
34713d5023 | ||
|
e2a55fb6f6 | ||
|
c77ecc6a21 | ||
|
58580f1e6a | ||
|
fbbd6b1a90 | ||
|
98a7f7df4d | ||
|
6d1dd089f0 | ||
|
415b0d4820 | ||
|
72c4af0026 | ||
|
fcc1838aed | ||
|
a9d704f273 | ||
|
054c0435a8 | ||
|
ea71a8b5c2 | ||
|
90e851a4bc | ||
|
2b629f130f | ||
|
18efa84e3a | ||
|
a8d43538f1 | ||
|
e53dd1e1a1 | ||
|
88346ffc68 | ||
|
6608264d15 | ||
|
0c98a2f81f | ||
|
2118eaea90 | ||
|
52b07021a7 | ||
|
4bdde101b8 | ||
|
6f38f9c2e6 | ||
|
0d084648a3 | ||
|
53a8098caa | ||
|
d0e5b3eb21 | ||
|
a815ac996b | ||
|
1556e5d078 | ||
|
55bb6fa21a | ||
|
9fb19af39c | ||
|
8da88f9263 | ||
|
778269f831 | ||
|
356718dc9a | ||
|
62a20ba69d | ||
|
5a02bca442 | ||
|
85504162a5 | ||
|
a903a19d2d | ||
|
fb2505fcfe | ||
|
fabb345107 | ||
|
45cb013e1a | ||
|
b446ceded8 | ||
|
c603b780cf | ||
|
7df7df7541 | ||
|
85264401cc | ||
|
d2fbe26182 | ||
|
33ca5753f1 | ||
|
4cf97d48c9 | ||
|
e75070be91 | ||
|
1361852721 | ||
|
a0025bc99b | ||
|
f5d3bcbb94 | ||
|
0a0eb08de9 | ||
|
65b949071a | ||
|
7c0d340bd0 | ||
|
80ec0aaf05 | ||
|
382a936e0a | ||
|
abea68557b | ||
|
f278e2884a | ||
|
ce718d9370 | ||
|
7c4df42aa8 | ||
|
e91be2b599 | ||
|
1a33f6e094 | ||
|
7d349bdfc3 | ||
|
9233007d97 | ||
|
61c5bbc444 | ||
|
63f0cce561 | ||
|
3a216759a1 | ||
|
bbe3613aa6 | ||
|
2a32a780cf | ||
|
ec65267750 | ||
|
e7a68907f9 | ||
|
d112f860a2 | ||
|
93559aee63 | ||
|
1a986e7437 | ||
|
69488642f8 | ||
|
3ec8c77d17 | ||
|
6fda2cc7b3 | ||
|
e44c9aa126 | ||
|
dc63d41c97 | ||
|
9941281107 | ||
|
f17129b660 | ||
|
7b0878daf9 | ||
|
ca7b469d28 | ||
|
324b3cc68c | ||
|
c2c58f81d8 | ||
|
667db71fb9 | ||
|
80b94821a0 | ||
|
87c650bcba | ||
|
c50c9b9ae8 | ||
|
70996655e1 | ||
|
8476fba5ff | ||
|
a2aa0471c5 | ||
|
2fe03a0016 | ||
|
5b3711b634 | ||
|
320915e0a1 | ||
|
65b634fe95 | ||
|
98df2d82db | ||
|
9866bfefed | ||
|
82e68472dc | ||
|
69920a6e46 | ||
|
af3718d202 | ||
|
0e463875f9 | ||
|
a8c1214417 | ||
|
a82ddf5d5c | ||
|
a398391908 | ||
|
2a46fbe77c | ||
|
1f34d368a2 | ||
|
8679ba9a38 | ||
|
2f8aeb991e | ||
|
e0b378e2be | ||
|
863cc7e0fc | ||
|
1df71d31e2 | ||
|
d17152cbe2 | ||
|
5fa3b3f168 | ||
|
4c3f6db55c | ||
|
ef4889a1b3 | ||
|
0488ce822f | ||
|
43f4dae62b | ||
|
3b09323ee4 | ||
|
353a8a70eb | ||
|
78a6e2354f | ||
|
95969253b5 | ||
|
c9a28c1cf1 | ||
|
30115fa2b9 | ||
|
8100a2e674 | ||
|
5bb397f35e | ||
|
0a0c322963 | ||
|
7971a74614 | ||
|
71d1024fe9 | ||
|
eb84072a05 | ||
|
f40f838a9f | ||
|
1d3b4e9829 | ||
|
0d80bdfd41 | ||
|
16481df0f7 | ||
|
4f9b361346 | ||
|
47cedfb522 | ||
|
7ef8193a93 | ||
|
3c03bae4c5 | ||
|
4200b4b5e9 | ||
|
7a4a6030db | ||
|
d7c2dbe83f | ||
|
9abf6e37d1 | ||
|
c3ae0c2251 | ||
|
dcffc35041 | ||
|
6f4e079a2e | ||
|
1d573e3f5d | ||
|
1a668da077 | ||
|
a9358e98b2 | ||
|
9929d6a4eb | ||
|
ccb4f2d1dd | ||
|
c4c62acdaa | ||
|
142c87314c | ||
|
622ada7125 | ||
|
abc0e51f1e | ||
|
5c64724bf8 | ||
|
b956615a23 | ||
|
d342a86cbc | ||
|
7e4b8ac868 | ||
|
484657ccf9 | ||
|
0e94bffd5c | ||
|
838b9477ef | ||
|
20d96eda85 | ||
|
bed5f28c2f | ||
|
e940736938 | ||
|
d3fb12da19 | ||
|
c581564bb1 | ||
|
f57c46de9a | ||
|
e63fa2d83f | ||
|
e655a54064 | ||
|
c6ef972e3c | ||
|
7ac46a2fd1 | ||
|
4f09160697 | ||
|
d9fd627bb1 | ||
|
6e3283cb34 | ||
|
2d44e47e6a | ||
|
62e8394218 | ||
|
a2646c56cf | ||
|
f21e30f7c7 | ||
|
c10254dbfa | ||
|
924e668023 | ||
|
532bc18b1e | ||
|
945026730c | ||
|
519d43ceb7 | ||
|
6b75e2c993 | ||
|
c7881fc55e | ||
|
81e14c7c3b | ||
|
3cffedd353 | ||
|
785ce03e67 | ||
|
9a39354332 | ||
|
96da695473 | ||
|
3ab941eace | ||
|
d50b0fbb6b | ||
|
8406b2a4eb | ||
|
cd72563d8b | ||
|
e26393b1b5 | ||
|
bd4263861e | ||
|
84ece3b575 | ||
|
a4cae9ef07 | ||
|
eef904b3d5 | ||
|
231bd6292a | ||
|
ec073552bd | ||
|
fb4c83b3c4 | ||
|
2ab2af90e9 | ||
|
1cfcc18407 | ||
|
4779b78616 | ||
|
1a898a8ad5 | ||
|
d6abd176fc | ||
|
2be43e9294 | ||
|
a7bc2ef3bc | ||
|
aab558af09 | ||
|
d0d2929a84 | ||
|
4e6e5041d8 | ||
|
29d4916a2e | ||
|
c4e578a653 | ||
|
37371ac024 | ||
|
9925cf9996 | ||
|
03d6ace3ae | ||
|
0aacde9d9d | ||
|
dff0f9d1bc | ||
|
8bb421a916 | ||
|
0f0492db3b | ||
|
8ada26529a | ||
|
23cd6dae42 | ||
|
2cf40cbcf2 | ||
|
a525ede25d | ||
|
4e42bedde9 | ||
|
5a948891f0 | ||
|
2c5ddca821 | ||
|
0fe4b9f07f | ||
|
8bea64bc0c | ||
|
8854b81977 | ||
|
a886e93c7e | ||
|
a8cd6ca497 | ||
|
6da4245efb | ||
|
cd6d06529e | ||
|
216de6c050 | ||
|
f1056898ed | ||
|
c81866f34e | ||
|
77dfd5f826 | ||
|
592f890fac | ||
|
bd9fa48312 | ||
|
9ddded4996 | ||
|
f56703abc4 | ||
|
0f29f7848b | ||
|
b07e0a47e8 | ||
|
41431cd1d2 | ||
|
8754f230d3 | ||
|
42be961681 | ||
|
a76b6e522b | ||
|
6d53bf667c | ||
|
b5aedd4626 | ||
|
ab34bb6df7 | ||
|
80abe1f675 | ||
|
13144f078a | ||
|
b37dce7da7 | ||
|
32c6281dd2 | ||
|
0948cab31f | ||
|
7ddec674fb | ||
|
9641ff132d | ||
|
65bc4acbab | ||
|
9047d9d62c | ||
|
082b39e651 | ||
|
eb503b8ab6 | ||
|
e1fc6fa727 | ||
|
3e05431e6f | ||
|
6c0b7f7b43 | ||
|
fc98057042 | ||
|
31bb9eaac8 | ||
|
9eba3034db | ||
|
e55c378683 | ||
|
b16ccf5098 | ||
|
dcca546c4b | ||
|
d0b598463f | ||
|
af039371e1 | ||
|
8860dac759 | ||
|
8d2a914c64 | ||
|
707507202d | ||
|
879cafc8d1 | ||
|
1ecc42c903 | ||
|
f981900cf3 | ||
|
fb7fbced39 | ||
|
7332c08bb4 | ||
|
7d4df8be09 | ||
|
752434acb4 | ||
|
7b159c5b71 | ||
|
9b61c1aead | ||
|
632064ffde | ||
|
29f48249e2 | ||
|
539d134b77 | ||
|
61ff944994 | ||
|
3db8e0b045 | ||
|
3dcec85dea | ||
|
ac4b33647d | ||
|
2c96179383 | ||
|
e3981f42e9 | ||
|
b9b1e2b397 | ||
|
6386c1603f | ||
|
dccc3b457d | ||
|
51b930147a | ||
|
dc95f4553e | ||
|
cd74f09d70 | ||
|
ba0898831b | ||
|
dee5dfd187 | ||
|
706e8e7627 | ||
|
705b55c57a | ||
|
9bf147e5b6 | ||
|
a278483f1c | ||
|
663812b90b | ||
|
daa571957a | ||
|
ba8fcf9de3 | ||
|
162fd0a840 | ||
|
a1aa337edb | ||
|
1b88cc39a9 | ||
|
755d743b06 | ||
|
260f73b0c2 | ||
|
45d3fe7c07 | ||
|
b686d30b1c | ||
|
a8c36e5e70 | ||
|
5e6422b64c | ||
|
c61412520d | ||
|
7860173fa2 | ||
|
0011eda8e0 | ||
|
242cc28daa | ||
|
674e538131 | ||
|
3942e9bfa9 | ||
|
a3774c1161 | ||
|
712a38e26a | ||
|
8238cd7f57 | ||
|
fe7515761a | ||
|
14a4a8edd7 | ||
|
16ca26569f | ||
|
d37b273eee | ||
|
3557121758 | ||
|
7558d71ec2 | ||
|
7bd2184b26 | ||
|
a1d35ae9e4 | ||
|
f13dfb8291 | ||
|
4f86ad0934 | ||
|
841b63b819 | ||
|
b558d14a48 | ||
|
94c0a020fb | ||
|
6a66125286 | ||
|
30f5e2bb6c | ||
|
19de43dd65 | ||
|
c6bae6812d | ||
|
d71d37c1ce | ||
|
b25fd4a540 | ||
|
f89b9305e8 | ||
|
3a97cfcc36 | ||
|
e0fe91f54b | ||
|
90f16c6736 | ||
|
17f8009ce0 | ||
|
825f14d919 | ||
|
d8814974c5 | ||
|
d978d0a6b4 | ||
|
b78fb532ff | ||
|
2f2dae89f7 | ||
|
3367c059e9 | ||
|
baae7375af | ||
|
7dbe472e79 | ||
|
135d879038 | ||
|
49b8c6f946 | ||
|
42272c7067 | ||
|
baefec80a0 | ||
|
9577be02bc | ||
|
34e4a082c2 | ||
|
73f3f68eff | ||
|
373a3008a9 | ||
|
5e5dc41088 | ||
|
450e917a1f | ||
|
c1a8183a54 | ||
|
2612c02ef1 | ||
|
cbd0a12422 | ||
|
fb2c9fb002 | ||
|
d545ed82ec | ||
|
c43eda932b | ||
|
0736e41ea7 | ||
|
ee23118079 | ||
|
d5a4e764f2 | ||
|
ec3248d714 | ||
|
934d860bea | ||
|
a4dd279352 | ||
|
24d59eba87 | ||
|
0abeb3306e | ||
|
514c4234f2 | ||
|
aea94d79eb | ||
|
e12103387d | ||
|
cbfe0d64b5 | ||
|
0ed9a1885c | ||
|
c9553d31e9 | ||
|
063f082fac | ||
|
c204f41bec | ||
|
64334c3437 | ||
|
2fbec133b6 | ||
|
155842f8bc | ||
|
b993bd9aef | ||
|
fa2d9e90ed | ||
|
6fc278eb2b | ||
|
49681982ae | ||
|
0147eb4b22 | ||
|
2174b1105f | ||
|
279b9b5d6a | ||
|
ded7b1e0d0 | ||
|
3390e206b0 | ||
|
8cee066ba3 | ||
|
2eeba285e8 | ||
|
c2707d4538 | ||
|
10eebff8a6 | ||
|
163212554b | ||
|
ba0c7abfc5 | ||
|
11b0ed99b5 | ||
|
134e86ecdd | ||
|
ecfd9a5eb3 | ||
|
c10d4a7382 | ||
|
7908c4ba2e | ||
|
979dec75de | ||
|
9725396582 | ||
|
53c0609c38 | ||
|
01c70e165d | ||
|
2fbbee2d65 | ||
|
1f04e73fcb | ||
|
56e6f512fc | ||
|
d1e2a903b4 | ||
|
55bac9ba0f | ||
|
0bf37abca1 | ||
|
5b35534c3d | ||
|
19de21535b | ||
|
cffa3270dd | ||
|
e08a78b396 | ||
|
b4723414a2 | ||
|
eba52ea54f | ||
|
2cc881a5d0 | ||
|
4ea4990177 | ||
|
aac2df85bb | ||
|
31bc66717f | ||
|
d876690fc7 | ||
|
c7d021ece6 | ||
|
eb49ceb803 | ||
|
4fa8e70276 | ||
|
2a9ac539e4 | ||
|
c384a3de8d | ||
|
b3adad8543 | ||
|
65bb1a7ddc | ||
|
91fc75fa5c | ||
|
2f70c1bd4d | ||
|
978de65124 | ||
|
e1ceb227c6 | ||
|
be51dba7cf | ||
|
75a6986770 | ||
|
fca06bd167 | ||
|
ad787d3914 | ||
|
d07557a5ee | ||
|
a7bb0efc93 | ||
|
0c3ea4f923 | ||
|
90c78ac401 | ||
|
88d2853a31 | ||
|
5689006c81 | ||
|
027619aa01 | ||
|
990a6832bd | ||
|
2d654da691 | ||
|
4ac314ab10 | ||
|
d8947f5c0b | ||
|
d84b768db3 | ||
|
c8afdfc731 | ||
|
f8f006d41c | ||
|
d1a3e02faf | ||
|
38126c6b4f | ||
|
6681d4fe17 | ||
|
b1e062a204 | ||
|
33911c880c | ||
|
4a54674159 | ||
|
890cc72ea3 | ||
|
f4f58703d3 | ||
|
70f100fa18 | ||
|
fef6da5efd | ||
|
8fb6957bc0 | ||
|
85306e0e27 | ||
|
1e59442da2 | ||
|
eee10642f5 | ||
|
f9f1b3e39a | ||
|
2f2ee1b894 | ||
|
c43122a6f8 | ||
|
2b8d1dd11c | ||
|
3560ac95d1 | ||
|
5846ad5768 | ||
|
3c72ee6e0c | ||
|
905934b9d4 | ||
|
a139756dbc | ||
|
87087197e5 | ||
|
639c570150 | ||
|
fc66e5f120 | ||
|
a5378d6e94 | ||
|
fb7df5bf46 | ||
|
420144dceb | ||
|
110c17e57d | ||
|
18b49068c1 | ||
|
80d42f0963 | ||
|
35e0a0af33 | ||
|
6cc2a36ee1 | ||
|
cdfb728a73 | ||
|
45768c5251 | ||
|
bbbeb4b283 | ||
|
bdb2d29666 | ||
|
3f6b5292d4 | ||
|
76bc6a5e0a | ||
|
fb8408c3da | ||
|
4018113c88 | ||
|
77601f61fb | ||
|
ff6aa1147c | ||
|
ad8cb22863 | ||
|
ddf6a69a69 | ||
|
399e95a247 | ||
|
cc80bf986c | ||
|
12d969b2c0 | ||
|
74de9c82c0 | ||
|
9216d8ba32 | ||
|
f1e57d2970 | ||
|
5e10449746 | ||
|
674e3a72c4 | ||
|
96acb61fa1 | ||
|
09a918bac4 | ||
|
42811751fb | ||
|
d88d27985e | ||
|
ee7fccf072 | ||
|
7eca405693 | ||
|
f774f46627 | ||
|
1069f77bd5 | ||
|
f00257f461 | ||
|
848adc415f | ||
|
04b297b261 | ||
|
befcfe8c5b | ||
|
88167a0287 | ||
|
ef1356f4dd | ||
|
ba18c6f3e2 | ||
|
928183ff64 | ||
|
0f0d828655 | ||
|
6c72139939 | ||
|
37618a2353 | ||
|
9b22880d57 | ||
|
2f9517f69d | ||
|
87053f2c70 | ||
|
6df88fba59 | ||
|
d0ab6af0b7 | ||
|
3f491018b4 | ||
|
3b2f9d9404 | ||
|
adde210cfd | ||
|
6ad672e04b | ||
|
9bc70399f1 | ||
|
a4721033c8 | ||
|
0b3dfab951 | ||
|
78da5017a9 | ||
|
b35a09906c | ||
|
ac61aeea29 | ||
|
1bad8f7741 | ||
|
d3784c8019 | ||
|
de960116b3 | ||
|
dd22cdf7f2 | ||
|
f62d598b79 | ||
|
73568dbc86 | ||
|
31b245b8e3 | ||
|
14ecdefebb | ||
|
8030a8ceaf | ||
|
733c2848a7 | ||
|
7274924977 | ||
|
c290dd6c1d | ||
|
462d3071de | ||
|
68c6e524d2 | ||
|
93bacc98fe | ||
|
49d1c1baee | ||
|
2946f2ec59 | ||
|
17d85840a7 | ||
|
5eac30d283 | ||
|
d43cff9d2f | ||
|
4b50058917 | ||
|
4ea2b19351 | ||
|
c2bf6ab7e3 | ||
|
26dcc9bc52 | ||
|
b2f67f971b | ||
|
ec1eb495a7 | ||
|
6513210904 | ||
|
a6113526d0 | ||
|
2fa25f8b5e | ||
|
d67f86a1e0 | ||
|
b284b92464 | ||
|
b455bf04aa | ||
|
ea714bbdaa | ||
|
4ffce89ef2 | ||
|
0602f58074 | ||
|
10125f4738 | ||
|
7acd917a2f | ||
|
0f7f4245e4 | ||
|
e51aaddb2c | ||
|
014afbf754 | ||
|
24c68147c0 | ||
|
4f1a40a750 | ||
|
9dc32bd957 | ||
|
5b3a476ce2 | ||
|
aae55992ac | ||
|
9d92b3346d | ||
|
4b862be9df | ||
|
c2ac07b1c9 | ||
|
23324990c0 | ||
|
e9cb417cef | ||
|
e506337522 | ||
|
56608d564e | ||
|
0ef67b6b64 | ||
|
fa21b6d224 | ||
|
d75bd140d9 | ||
|
edfabb0f26 | ||
|
fa5b7c66ca | ||
|
32389a9b33 | ||
|
93a247e0ce | ||
|
cc8f17b786 | ||
|
35163f77ba | ||
|
e3d46cfd15 | ||
|
a5f404f247 | ||
|
db3cb42cc3 | ||
|
06e67a313b | ||
|
49930773e7 | ||
|
bae830dd03 | ||
|
6fcbd24ce1 | ||
|
5d0d177a7a | ||
|
0b9db0ee6b | ||
|
0104fe70ab | ||
|
166d2a3ba0 | ||
|
d586f64338 | ||
|
6ed6b49d7f | ||
|
a5fd11c204 | ||
|
7d8590d85f | ||
|
5cc7deea4e | ||
|
9c1c87ba5d | ||
|
f3d7127f17 | ||
|
941d5844b5 | ||
|
b6b487dfa0 | ||
|
524dcbb3d1 | ||
|
e53c0909dc | ||
|
89b2753c7d | ||
|
cb2562da08 | ||
|
0e7167d2c7 | ||
|
b85e17ad1a | ||
|
bcd5269414 | ||
|
98938251ee | ||
|
5fb801b480 | ||
|
dbed8eb8e7 | ||
|
f75be10bd3 | ||
|
f036bb653e | ||
|
8d15f4c83a | ||
|
42e5e96f78 | ||
|
a3e9e46ff2 | ||
|
c68e3d89c8 | ||
|
cda71d2752 | ||
|
41db82a731 | ||
|
b822055e2d | ||
|
ffb1066a30 | ||
|
100da85e4a | ||
|
dc7d2d7482 | ||
|
f728d5ff74 | ||
|
095b220d99 | ||
|
7c50720b76 | ||
|
8e8d38c3bb | ||
|
4f8aedb038 | ||
|
b0c294b41b | ||
|
e18146a006 | ||
|
01dad8bef0 | ||
|
807e89521f | ||
|
966b3ce54a | ||
|
31db65e348 | ||
|
033b877269 | ||
|
10016fcb15 | ||
|
3b680e27e8 | ||
|
de3e0acb56 | ||
|
3756b2d240 | ||
|
4501c7cf45 | ||
|
b3841c9006 | ||
|
289ce7419d | ||
|
ea151b37f0 | ||
|
0287153e56 | ||
|
d002ab6a6b | ||
|
8d3c70f522 | ||
|
70c35304ce | ||
|
15765166fb | ||
|
28050488ba | ||
|
ac89495348 | ||
|
e89f9eae1a | ||
|
9110fe8a6a | ||
|
5934043d17 | ||
|
c48fd7708c | ||
|
e6beb73e3d | ||
|
8e709dbbdb | ||
|
1fe4ecee99 | ||
|
884525bef0 | ||
|
1c73e28226 | ||
|
ba5828711b | ||
|
e3c72876df | ||
|
bd970505f1 | ||
|
6f7f61f33f | ||
|
b5168f27dd | ||
|
3146920c04 | ||
|
19fa2f273d | ||
|
8e5c96adf5 | ||
|
fd5c30c8a9 | ||
|
5b985dc032 | ||
|
637b3bb5ba | ||
|
de185b94f3 | ||
|
b1750c1c21 | ||
|
102684ed88 | ||
|
9874bdeeab | ||
|
df23fd10bc | ||
|
2ca96a770d | ||
|
8af49891ff | ||
|
e6e05317e1 | ||
|
9cf9e10e5c | ||
|
b88ddbc854 | ||
|
4f3b4a71ce | ||
|
4fc6cb1de3 | ||
|
3f670045b3 | ||
|
9d60aff8a2 | ||
|
2ce64b8f87 | ||
|
3cc1951587 | ||
|
d6b68a33c9 | ||
|
aa753e4845 | ||
|
2271df9907 | ||
|
233fe21f26 | ||
|
90cda6b2be | ||
|
00002105cf | ||
|
e337035aec | ||
|
2e1a11e10e | ||
|
7dd5b801bb | ||
|
7fdf138e5a | ||
|
7f59efb876 | ||
|
2e7c7c94fb | ||
|
130ed63b03 | ||
|
9ed62ac9f7 | ||
|
4ebb26d3d3 | ||
|
c6c96677e2 | ||
|
373991915e | ||
|
8cddd9f575 | ||
|
483b1ab503 | ||
|
5de6771547 | ||
|
70bb2b7fee | ||
|
bd2cd3ad96 | ||
|
16554bf351 | ||
|
5b64946dfb | ||
|
4ccd242cbf | ||
|
fedc637dee | ||
|
b138ac8601 | ||
|
9d0fe46723 | ||
|
9b60ee70c5 | ||
|
f86362f065 | ||
|
2f983d46b7 | ||
|
ae94f45f34 | ||
|
353f290f0c | ||
|
afaa89ad42 | ||
|
75da9887be | ||
|
41a37ae83f | ||
|
769b217c7e | ||
|
84b3d5520c | ||
|
d757914225 | ||
|
73d78646ea | ||
|
a10e67c594 | ||
|
1e5b378fbf | ||
|
cb3e2b6a0c | ||
|
0806e7358a | ||
|
04679ea21d | ||
|
9a756f2b7a | ||
|
0670c3c6ee | ||
|
fb884e29b5 | ||
|
21abc3fa77 | ||
|
aa9b5ce0bd | ||
|
bc7a50124f | ||
|
3d437f94f1 | ||
|
b3a5812a61 | ||
|
828e13f9be | ||
|
a94bea3b91 | ||
|
816be72386 | ||
|
ab651cbe50 | ||
|
609cdf72ae | ||
|
292020e95d | ||
|
aa344b1ecd | ||
|
eeaf9fd616 | ||
|
b262aad3a8 | ||
|
17ccccc6e6 | ||
|
538c099913 | ||
|
67f1929784 | ||
|
e6198d7bf6 | ||
|
ec498cf054 | ||
|
c071dc502e | ||
|
d7a1ae3a00 | ||
|
ad60467ae7 | ||
|
cffdb7f7a6 | ||
|
5fbcec0c9c | ||
|
0b6f35b256 | ||
|
c7997edf9a | ||
|
00809027c1 | ||
|
289f27b738 | ||
|
3442829e11 | ||
|
8843fe0a54 | ||
|
8d7a54a6cf | ||
|
2b0077b138 | ||
|
6a728e3851 | ||
|
bfdc885d7f | ||
|
49a29fb56f | ||
|
12b3afbc50 | ||
|
1756fa26e1 | ||
|
eeb7d60e59 | ||
|
d18e7ad001 | ||
|
b8c0c61a4c | ||
|
7f2279c8a8 | ||
|
ead189a9c7 | ||
|
066c540eb7 | ||
|
f707f177d9 | ||
|
174e1fe332 | ||
|
f7f924ce6b | ||
|
c6751f00ab | ||
|
ff1dbf6f22 | ||
|
8bc7d3e073 | ||
|
90ab67e1fc | ||
|
8018ba3213 | ||
|
2eaf843031 | ||
|
83e79207c1 | ||
|
e54a82f658 | ||
|
a5dc8ec181 | ||
|
daa0734e5b | ||
|
8247b1dd7a | ||
|
924d7e10a1 | ||
|
44b2a7fb72 | ||
|
88de113a4e | ||
|
453aa28380 | ||
|
21225b8a28 | ||
|
b0f4c87d6b | ||
|
1d36269b03 | ||
|
1b8b4de690 | ||
|
ddd9749177 | ||
|
bbef119f62 | ||
|
c8b44bfd4c | ||
|
e84f012b73 | ||
|
03a8289a13 | ||
|
fe4abf9d78 | ||
|
9ce9ad6d3a | ||
|
913c6b0f14 | ||
|
d5432cd0e7 | ||
|
6a52ff4da2 | ||
|
c6e5a75448 | ||
|
897d28bb03 | ||
|
fc3ebca273 | ||
|
7a9b931a36 | ||
|
fef3cdaeb1 | ||
|
e6614fc4fc | ||
|
bc8432418d | ||
|
24dc5b10e8 | ||
|
e1285aa50b | ||
|
3336249b00 | ||
|
2802a714ab | ||
|
92a140b504 | ||
|
5735b094ac | ||
|
e1292c03a1 | ||
|
adb5b4c1b9 | ||
|
3332d827f0 | ||
|
29ff4d1e84 | ||
|
e18402f834 | ||
|
096db6c35d | ||
|
0675b7c16c | ||
|
927f526c6c | ||
|
8647400dda | ||
|
8b2d6c8dc2 | ||
|
d7c8abbe98 | ||
|
abb335c43d | ||
|
136d2e330a | ||
|
755da616ed | ||
|
9e084ec372 | ||
|
52eb48d808 | ||
|
6ec6d41aa9 | ||
|
b0ce32e97e | ||
|
9f4f3f482c | ||
|
f5b4e897fa | ||
|
fd5b7099af | ||
|
8f06415744 | ||
|
40e4c4ce1e | ||
|
c8fb034c57 | ||
|
ba109a486f | ||
|
86c9e60129 | ||
|
f6190b125c | ||
|
73c93958c2 | ||
|
75d038b058 | ||
|
797e0ee706 | ||
|
ea7df9b673 | ||
|
100aa24021 | ||
|
59afb5cf4c | ||
|
b8418f97dc | ||
|
690fda180c | ||
|
eda0aa97d0 | ||
|
aa65d82341 | ||
|
33151eef73 | ||
|
8d2debf47e | ||
|
1b8440d7c8 | ||
|
65d7ec8696 | ||
|
095cc12e10 | ||
|
d9480bb136 | ||
|
5efe26c7dd | ||
|
8145049315 | ||
|
c07bc0890f | ||
|
7ef91ce717 | ||
|
401027e919 | ||
|
bd473375a1 | ||
|
79212321a2 | ||
|
40d8d5c605 | ||
|
bec3f793f3 | ||
|
ca9591e423 | ||
|
3b06f18ccb | ||
|
81b90df909 | ||
|
7a7af40d61 | ||
|
5410b61ae3 | ||
|
d6029210d0 | ||
|
44ca82bbef | ||
|
cf90ff9fd2 | ||
|
f5a621a6d5 | ||
|
c59c5cfb4a | ||
|
580bbd60e7 | ||
|
946902719b | ||
|
59c13bf8c1 | ||
|
8c44c9828c | ||
|
8b2132c6dd | ||
|
137fe89938 | ||
|
bc2a99c3cf | ||
|
b76899a6e0 | ||
|
610c1d1150 | ||
|
d86c12dc7a | ||
|
fb1a686f90 | ||
|
d1bafc531e | ||
|
b2af918969 | ||
|
25b81c2952 | ||
|
c3ce887e33 | ||
|
b3bbb0329e | ||
|
4b6f74364d | ||
|
34e97112a4 | ||
|
fdaaed430e | ||
|
791d4fb1e8 | ||
|
8864a3cf2c | ||
|
cfdc18d421 | ||
|
b081429725 | ||
|
ae9922a731 | ||
|
71706bc6a6 | ||
|
d0628129f5 | ||
|
e1dde0cef1 | ||
|
5faa2ff205 | ||
|
20422a5451 | ||
|
5766414d79 | ||
|
d4af2a7a87 | ||
|
b4b2b97eb1 | ||
|
7913a42664 | ||
|
f95853a7b3 | ||
|
c3209d7049 | ||
|
6c21a6b48d | ||
|
bec72264cd | ||
|
3b1a7f93cb | ||
|
b131848b72 | ||
|
a59b8bf50c | ||
|
b05fc763ae | ||
|
683a9cdfff | ||
|
47eb7173f0 | ||
|
d76b93ced3 | ||
|
695c234139 | ||
|
a07c1b8afa | ||
|
f831252e35 | ||
|
b9b0e84704 | ||
|
9a38d59f9a | ||
|
fd252dbaff | ||
|
b3fdb5ed17 | ||
|
ff1099667a | ||
|
3f3662e605 | ||
|
98999c754f | ||
|
7bb73ffb57 | ||
|
b331521e93 | ||
|
721d7cb6a0 | ||
|
c46aaa24a5 | ||
|
0b35ee7c79 | ||
|
7e494786d4 | ||
|
71e14ea43b | ||
|
96e3544a47 | ||
|
76fc3b5336 | ||
|
5e359101d2 | ||
|
9779e9b9a5 | ||
|
94f2640f5c | ||
|
b1e045d911 | ||
|
62dd47b15d | ||
|
cd27ea69bb | ||
|
182fae77da | ||
|
bda822d2e5 | ||
|
90c78f1244 | ||
|
311374d642 | ||
|
afa0090c78 | ||
|
69aabb56a0 | ||
|
a7a1645abe | ||
|
ddd6fc214f | ||
|
7d9cb1dc0c | ||
|
b784c0fcc2 | ||
|
3826b7ba28 | ||
|
096e51951a | ||
|
79858a6560 | ||
|
b12e0cd9f3 | ||
|
946353aeb9 | ||
|
9710447ea3 | ||
|
165b8d1b93 | ||
|
d307349ae2 | ||
|
7ff9566788 | ||
|
49acc6704f | ||
|
aac075fa89 | ||
|
422487ea9f | ||
|
97b2dd3d14 | ||
|
53c83ab8d8 | ||
|
92d54dc733 | ||
|
0307e572c0 | ||
|
b86693580e | ||
|
827c7e58f6 | ||
|
8218d8f267 | ||
|
8d74acf060 | ||
|
268c41a0ee | ||
|
dc1eba2847 | ||
|
d92875e3c2 | ||
|
6e3979a32d | ||
|
740acda60b | ||
|
853c0a25bf | ||
|
ede784684f | ||
|
1ab4ae9eac | ||
|
d3d17ebbcb | ||
|
768df330b5 | ||
|
e6c8ffd1b8 | ||
|
cfd6456614 | ||
|
96c825e265 | ||
|
bad62be497 | ||
|
109b381e2e | ||
|
2d351aa60f | ||
|
85f3592938 | ||
|
f949c517b6 | ||
|
f90078c593 | ||
|
1bea28e27a | ||
|
e323caa233 | ||
|
c958d3a383 | ||
|
7bc880e6bf | ||
|
c71f9c81cd | ||
|
2378643071 | ||
|
4bcdaa309e | ||
|
9fddd09f1c | ||
|
47635aae6e | ||
|
bc5ebb20b5 | ||
|
0979d56a36 | ||
|
4dc8d23826 | ||
|
641c06f10d | ||
|
80b6b77a3a | ||
|
c414f80fa6 | ||
|
c4834a44d1 | ||
|
a4b5d1819d | ||
|
8136f57b5e | ||
|
c0efd9f1af | ||
|
735adf0c96 | ||
|
8e7ae5e9d2 | ||
|
350643c8a4 | ||
|
9cc646760a | ||
|
8a53eafa72 | ||
|
eb4d31e955 | ||
|
817d692471 | ||
|
4964c9f151 | ||
|
02b6916487 | ||
|
b2d8163aad | ||
|
074e5bcfb6 | ||
|
d4a5b71a4d | ||
|
2081e2c45b | ||
|
4094a66f3c | ||
|
13175212a0 | ||
|
99b3ec606c | ||
|
468cc30019 | ||
|
2b681a43c8 | ||
|
b547a49ab3 | ||
|
f5d0663b06 | ||
|
5b185152c6 | ||
|
dae0b66c90 | ||
|
51fe7b9a93 | ||
|
2a66e03742 | ||
|
e00a9278d5 | ||
|
b379ef46ec | ||
|
8c783f9414 | ||
|
30fe3773ae | ||
|
da764d7c9a | ||
|
a4fa65b4fd | ||
|
fe793798fa | ||
|
9adbeb8dd2 | ||
|
c518f59359 | ||
|
1605ae1607 | ||
|
f036d35829 | ||
|
4290945118 | ||
|
bc050d3030 | ||
|
2e2dffd9c9 | ||
|
a30912f688 | ||
|
18842b5e3d | ||
|
6bc97df0bb | ||
|
5b43257f35 | ||
|
28c4abb505 | ||
|
464735f829 | ||
|
51ac6f22d7 | ||
|
c093b3476f | ||
|
93264812c0 | ||
|
38641c88b7 | ||
|
86663ec073 | ||
|
6c569e6f9d | ||
|
5260e729ac | ||
|
d57841c0d0 | ||
|
94411ed60e | ||
|
9c99d12c44 | ||
|
12644e9915 | ||
|
e66284fbd3 | ||
|
7efd41e17a | ||
|
7ae3f6ea40 | ||
|
738ce18a2f | ||
|
3a6c03a895 | ||
|
5265856772 | ||
|
4864980a5a | ||
|
23e8cad10f | ||
|
26cddd2d0d | ||
|
54d7d47dfc | ||
|
52c0fa41c6 | ||
|
b2765e4b63 | ||
|
388e35e828 | ||
|
99d4bbe74b | ||
|
98221bab1c | ||
|
4ebd1ea138 | ||
|
5532e7dfa1 | ||
|
261dadb986 | ||
|
dc1a4ae3a2 | ||
|
3bf9ea5b06 | ||
|
6c8e047030 | ||
|
328d834851 | ||
|
b9adbb7d60 | ||
|
7ce093e239 | ||
|
123ad87eda | ||
|
5c9281bc7e | ||
|
5a1545058b | ||
|
fe27451532 | ||
|
aa64eb14b7 | ||
|
2dcc120cf7 | ||
|
a71c50c638 | ||
|
d12ab17516 | ||
|
61b8053b9b | ||
|
f7303789a0 | ||
|
e9d93194f1 | ||
|
adb537006a | ||
|
8f7789f269 | ||
|
4184aaba76 | ||
|
a1044763ec | ||
|
1d70004165 | ||
|
e14b9a445e | ||
|
1c7f95c196 | ||
|
03acf4505a | ||
|
86d808eb4f | ||
|
b6c7a59afc | ||
|
553f8aa37e | ||
|
ff46791df9 | ||
|
abbc57429a | ||
|
b33d8fe5e1 | ||
|
23d86b55fe | ||
|
d2ec615e2f | ||
|
c0c5d21d4f | ||
|
57ae714cbe | ||
|
a0a7d3e7f6 | ||
|
cbf8306c6f | ||
|
52a1fcb397 | ||
|
bc567fd45c | ||
|
6a3044cb2e | ||
|
5df0488cf2 | ||
|
edd35872f3 | ||
|
46e8737426 | ||
|
b12549831e | ||
|
4c079cc0ac | ||
|
32573881e4 | ||
|
00e800459d | ||
|
868c33a8b4 | ||
|
424fb5556d | ||
|
4adaa20f72 | ||
|
520c3e474c | ||
|
2e189a1ab0 | ||
|
5f2cb671e2 | ||
|
1ec99ee89e | ||
|
bc500a567a | ||
|
e706c5a3c8 | ||
|
324856d700 | ||
|
ea1607cf3f | ||
|
2f03526d37 | ||
|
271bc91303 | ||
|
41edd88d03 | ||
|
baa5c1319d | ||
|
444980395e | ||
|
51ffe26a91 | ||
|
6c3150edb7 | ||
|
1d6083b2c7 | ||
|
1f89cfbe44 | ||
|
a19c1d6fbe | ||
|
096cf9272a | ||
|
8950aa38ea | ||
|
4ced6ca179 | ||
|
fa26e2a23e | ||
|
70682b4931 | ||
|
78140af3f3 | ||
|
010be9184c | ||
|
012b20fca6 | ||
|
e06682dcda | ||
|
afd2804ed3 | ||
|
3674ae7e63 | ||
|
4065bce47a | ||
|
a893f5acdb | ||
|
12eb23b198 | ||
|
955f366690 | ||
|
dcbc85484c | ||
|
72a945ac13 | ||
|
0ed647d379 | ||
|
5387c9101e | ||
|
ebb9538372 | ||
|
fce1552349 | ||
|
480a60a655 | ||
|
d562ab35ad | ||
|
9e106990c8 | ||
|
1eb97f6cb8 | ||
|
dfe75de76e | ||
|
f1995503ff | ||
|
26e6d56cf1 | ||
|
6f29a7ab94 | ||
|
08c67eaf0e | ||
|
3fc4083aca | ||
|
11e1fdf332 | ||
|
92c0d97110 | ||
|
7040369529 | ||
|
2e08c07dad | ||
|
15366f8d2a | ||
|
90035de5f2 | ||
|
7051385c3f | ||
|
c25845b959 | ||
|
c27958d772 | ||
|
3d136112b2 | ||
|
b0773514ee | ||
|
83bd9bca86 | ||
|
7c1d1c3464 | ||
|
2aeee79c63 | ||
|
4a2310954a | ||
|
4c95aafe10 | ||
|
4123da8ebc | ||
|
f60bba28aa | ||
|
1e1205d3b6 | ||
|
23a874c674 | ||
|
9234c60155 | ||
|
50839c206b | ||
|
a3121150ef | ||
|
d40f8b0c56 | ||
|
491b3c351b | ||
|
9f033ed623 | ||
|
21fe5a23fb | ||
|
47f43a88f4 | ||
|
2bd89e6ec0 | ||
|
37db397e06 | ||
|
85708b7c60 | ||
|
251e3a0a83 | ||
|
cf3e34e548 | ||
|
7d5570fd6f | ||
|
d17a273cb4 | ||
|
b70bc20b99 | ||
|
03ec9946ff | ||
|
cad9d443be | ||
|
8077406cba | ||
|
5a323db7dc | ||
|
b25b30719a | ||
|
22e0506814 | ||
|
44e8974c02 | ||
|
6f3b9c78b0 | ||
|
c303b9afd3 | ||
|
f02bad5c79 | ||
|
c3b5ba5639 | ||
|
3bc84f0d38 | ||
|
aeb6495253 | ||
|
21904054a5 | ||
|
c19563bed2 | ||
|
cdbc9db890 | ||
|
a09e893a0b | ||
|
c5f9546605 | ||
|
824f029e20 | ||
|
d8cda04e14 | ||
|
7d6c27eed5 | ||
|
911bfe2081 | ||
|
9834371e18 | ||
|
817428e295 | ||
|
c02fb87bc9 | ||
|
3f8ddbec60 | ||
|
6a523ccc38 | ||
|
f54c865cf4 | ||
|
bea8b3d8d1 | ||
|
284fb639bf | ||
|
b95ca0ae53 | ||
|
52c404ac9c | ||
|
40de685f1a | ||
|
4309fdba7e | ||
|
704e86d843 | ||
|
e56f6e910c | ||
|
d3ecc8e5c3 | ||
|
cd509accdb | ||
|
deb0f1ad1b | ||
|
1ef5416b50 | ||
|
a963596a59 | ||
|
3769dad30e | ||
|
304cb07858 | ||
|
79982af8d1 | ||
|
3948f263df | ||
|
7f2484ca4c | ||
|
27dcb6ef9c | ||
|
a7d85cf9fd | ||
|
992f477ab1 | ||
|
2ec86fe9e6 | ||
|
546d6fe56d | ||
|
b2099b6b31 | ||
|
ff386c3de6 | ||
|
cb5c6ec35e | ||
|
019ec6c1c8 | ||
|
8570a1e0ad | ||
|
f1de116eff | ||
|
12ab4787f1 | ||
|
530d43bcbb | ||
|
04cadb94cf | ||
|
a3b6bb3ec3 | ||
|
f54aa60803 | ||
|
fe8648c7f8 | ||
|
67cd82385a | ||
|
5c7ee5ef58 | ||
|
7018fdb2f5 | ||
|
5ad2567633 | ||
|
eafe65b417 | ||
|
e65d3ee993 | ||
|
ece48baa9d | ||
|
185cd316c9 | ||
|
33c1e1ea11 | ||
|
a8c39e1d36 | ||
|
bb862cc509 | ||
|
3906ee371b | ||
|
05662d1c94 | ||
|
b566e15438 | ||
|
1e5a53e5c5 | ||
|
396d13c3f9 | ||
|
42513265cf | ||
|
e05684d078 | ||
|
dbcbf2e711 | ||
|
272135ddf3 | ||
|
c74edffc36 | ||
|
71b45947cb | ||
|
6ed20589fb | ||
|
d36eeb1a06 | ||
|
e8c61cf86f | ||
|
900e05c1a1 | ||
|
5bab32f6dc | ||
|
427a548e8b | ||
|
48c126515c | ||
|
f3eb8dd325 | ||
|
c63a5c0201 | ||
|
c04655cd36 | ||
|
901e397409 | ||
|
07c22e7a19 | ||
|
738d486f9d | ||
|
3900895fc7 | ||
|
e35bb772c1 | ||
|
f3d2949e87 | ||
|
96b0a3f760 | ||
|
aabd705161 | ||
|
baa8902acd | ||
|
381159ca2f | ||
|
eab146e373 | ||
|
8c37a46994 | ||
|
77977a0775 | ||
|
9aa251b252 | ||
|
aad0bb85cc | ||
|
4cd702a97d | ||
|
530aded2b9 | ||
|
2f39be37a0 | ||
|
30ee8faaa1 | ||
|
f7320b6233 | ||
|
80263bb790 | ||
|
3a02e8405d | ||
|
b73bb3783c | ||
|
e74476a997 | ||
|
66fe792d0e | ||
|
fa96d2a703 | ||
|
4d1378d0a1 | ||
|
f3b912a8e6 | ||
|
7aa958b9ff | ||
|
f2b4ad4a31 | ||
|
5bf35f0937 | ||
|
39c2b08065 | ||
|
c9677c8b5a | ||
|
9b4c861545 | ||
|
d567796928 | ||
|
41359a53f7 | ||
|
59567e39b4 | ||
|
92cb21ab6e | ||
|
24e36eb8af | ||
|
718516a0c3 | ||
|
a4a587b247 | ||
|
fc62861b02 | ||
|
ba687addc5 | ||
|
f5e3dbb642 | ||
|
bb54be5531 | ||
|
16be69ebae | ||
|
4862f8e7c9 | ||
|
82cbc351e5 | ||
|
6622651a90 | ||
|
0a21bd4b78 | ||
|
f2b66c5fb5 | ||
|
889e09a891 | ||
|
c10b2a405c | ||
|
a37edb591b | ||
|
370b6a81bc | ||
|
b0c1ca87df | ||
|
4a4ec47c49 | ||
|
d341611e54 | ||
|
3a36762632 | ||
|
b577f6ab8e | ||
|
077977b8bf | ||
|
adbc430ac8 | ||
|
8b628229ed | ||
|
c432985cb4 | ||
|
11d9579036 | ||
|
93634cd7af | ||
|
8c012145f9 | ||
|
bbec3a7c2e | ||
|
3acc139307 | ||
|
a412b2128d | ||
|
df1ba8ec88 | ||
|
431d86166f | ||
|
d44a6c50f1 | ||
|
68a44c4cc7 | ||
|
d89d6bc162 | ||
|
0561fe5b08 | ||
|
90aad44edf | ||
|
21fc4e31b4 | ||
|
867bd363fd | ||
|
9a1dbb27d4 | ||
|
e35ee03178 | ||
|
0b00f97879 | ||
|
924f73202d | ||
|
c0ed25c41b | ||
|
4ffd495811 | ||
|
a04b8985c6 | ||
|
ed1179b155 | ||
|
87e740973c | ||
|
89d0f7838a | ||
|
bb63638075 | ||
|
257492d94e | ||
|
d5560db45c | ||
|
4570676042 | ||
|
7d16b557d4 | ||
|
5fde962cea | ||
|
eb53022c77 | ||
|
eceaf9b150 | ||
|
06cfdb6076 | ||
|
186c507e9d | ||
|
d8b23d41ff | ||
|
25122db3da | ||
|
99c6cda2fd | ||
|
d03e3d6cc4 | ||
|
d2454e37a8 | ||
|
725f2c97a1 | ||
|
ec0e6691af | ||
|
f1c9e63002 | ||
|
e088b503e1 | ||
|
5bb725a21e | ||
|
0080ae494f | ||
|
95e7ca544b | ||
|
1e13fac375 | ||
|
35bdc0acb6 | ||
|
6a4f413459 | ||
|
83f8c31448 | ||
|
e1960e9593 | ||
|
3f56dad1eb | ||
|
e97cdb03fa | ||
|
3c9b5d2ec0 | ||
|
0138341486 | ||
|
bf8b534c82 | ||
|
cf3d145cd6 | ||
|
9f9c6fbc5b | ||
|
17c6f7c357 | ||
|
87c42898ee | ||
|
be0be699e4 | ||
|
6668814ab6 | ||
|
4266c330de | ||
|
1cb14d6be7 | ||
|
3fb03e2b2c | ||
|
135d56489d | ||
|
6cd92a5d77 | ||
|
59ab16651b | ||
|
82edf083f0 | ||
|
0683085398 | ||
|
6930923e2b | ||
|
94f15d109a | ||
|
fb19d6b83c | ||
|
8e319067ad | ||
|
e45c79378f | ||
|
26edf79aa2 | ||
|
133d1972a3 | ||
|
7a01e1bf65 | ||
|
c9bd1f32b9 | ||
|
b486559469 | ||
|
754208e164 | ||
|
0b30c28fe4 | ||
|
ced4146350 | ||
|
d454e3fd20 | ||
|
67bc7c93e6 | ||
|
66b32a74d5 | ||
|
ba4413e702 | ||
|
83f8a8f278 | ||
|
a5b007f147 | ||
|
47f4db847a | ||
|
9420d309a5 | ||
|
341456901d | ||
|
766e8a8076 | ||
|
00ad9ccc2a | ||
|
330d802079 | ||
|
c5fc1e579d | ||
|
f2c35adb60 | ||
|
b3b07752e2 | ||
|
a11c0b7ea1 | ||
|
ed7343e897 | ||
|
3faf0a238c | ||
|
2fb5f423a5 | ||
|
3ecde755e0 | ||
|
2d98cbd915 | ||
|
09e628f227 | ||
|
5ebc70e4bb | ||
|
7a8565db5d | ||
|
9fe75eacf1 | ||
|
de531a17d9 | ||
|
3a9f0232f0 | ||
|
5cdea33418 | ||
|
f7d006c13b | ||
|
faf5fc0012 | ||
|
ad50c22e97 | ||
|
48554a4769 | ||
|
9c558f1f15 | ||
|
f4b1e06ad1 | ||
|
88babbb17c | ||
|
4b746ee345 | ||
|
b358863a1e | ||
|
f42e6c0a3c | ||
|
78af67ee7e | ||
|
1d59f69a57 | ||
|
76a285e655 | ||
|
5c645c1937 | ||
|
d419e526cd | ||
|
dcc20bbfeb | ||
|
5076b2cdbd | ||
|
9fd56f0b5c | ||
|
b5a0c944d1 | ||
|
2ff6604555 | ||
|
12d7cee687 | ||
|
70c1310794 | ||
|
4889295361 | ||
|
97702317dd | ||
|
29dc114d1a | ||
|
1e3ad30422 | ||
|
63119ca2a3 | ||
|
f771a22161 | ||
|
00cc8decdb | ||
|
5ea4c0f8c9 | ||
|
c444a0bf67 | ||
|
3e9636e0d3 | ||
|
a96e8455e8 | ||
|
bc51ff051e | ||
|
6a2507e477 | ||
|
8602cbba7a | ||
|
9f520d4e8a | ||
|
166be43f23 | ||
|
3b022eee83 | ||
|
e5bb7ae5cd | ||
|
2f0e4e4f3d | ||
|
cdcaf93fc7 | ||
|
32bc93c87d | ||
|
40d3203297 | ||
|
45526c0e3a | ||
|
6a61e639e0 | ||
|
40e26900b0 | ||
|
8dd87321da | ||
|
d79a9c5b8b | ||
|
dd5d263847 | ||
|
fb7533b591 | ||
|
c09a93c171 | ||
|
0325754d12 | ||
|
38e652de8d | ||
|
837f49cebf | ||
|
2da109cb74 | ||
|
f57e20c73c | ||
|
e36c57ff29 | ||
|
a971b19f5c | ||
|
672023e94b | ||
|
b46794d4df | ||
|
c9b32fec44 | ||
|
7881f7f9ea | ||
|
1720dc1fac | ||
|
47493fcfa1 | ||
|
3201308125 | ||
|
11ebab094b | ||
|
0f415a56dd | ||
|
0fc2352c07 | ||
|
a27569770b | ||
|
d0bff5000c | ||
|
ac7dd2cef3 | ||
|
5f1aad76e6 | ||
|
99765bbcfd | ||
|
cd6807d9b2 | ||
|
5fecb1cb97 | ||
|
6e984ef68b | ||
|
9e4278a893 | ||
|
aa3c1bdefd | ||
|
e82e79d7e2 | ||
|
e8556ec830 | ||
|
1db0e71796 | ||
|
444d2c6491 | ||
|
3460df7ac8 | ||
|
f9220e4185 | ||
|
f70a24d257 | ||
|
61b1e84e61 | ||
|
a355b625e9 | ||
|
7cc79fef0f | ||
|
cbc29d0699 | ||
|
271eb31162 | ||
|
50a4d2ba0a | ||
|
a1e980d103 | ||
|
7fa1af3819 | ||
|
de580cc997 | ||
|
042ec3628f | ||
|
a2aafb9b6b | ||
|
4f1596d105 | ||
|
2a8134af89 | ||
|
779cbc8c08 | ||
|
f48be229c8 | ||
|
ec2525a8fa | ||
|
6e68a5187e | ||
|
f6fa794a18 | ||
|
65724fbdd4 | ||
|
f283a95c03 | ||
|
7e415e82b0 | ||
|
b788a82d0d | ||
|
962e9abc6b | ||
|
4784717b0c | ||
|
25ca50c7bd | ||
|
b280358077 | ||
|
33475602f8 | ||
|
87ad35dca6 | ||
|
70cded2733 | ||
|
3bcfd7c103 | ||
|
c2993a2a04 | ||
|
2ce92f0d41 | ||
|
9e53e6cc8f | ||
|
cd52df5d2e | ||
|
97bee949e1 | ||
|
246480eaed | ||
|
f4b7161db2 | ||
|
0f06368027 | ||
|
8eb290af4b | ||
|
8d7d44ed47 | ||
|
2cb3d7e66f | ||
|
cc4c3b55d5 | ||
|
3b2e61fa66 | ||
|
45afc04421 | ||
|
f04b67ba29 | ||
|
a27ecac598 | ||
|
d18ea43211 | ||
|
10aa753231 | ||
|
b319ef40ba | ||
|
250baf225c | ||
|
3d190bb2ac | ||
|
09e8c104bb | ||
|
9e2cae5643 | ||
|
01be02abb5 | ||
|
4b33751127 | ||
|
5ac0555c21 | ||
|
23f32aae84 | ||
|
942bc13ccc | ||
|
039c9c60fe | ||
|
1f9b9571fd | ||
|
5cfe218634 | ||
|
51b42929bd | ||
|
780f1ffc8c | ||
|
8920ed3de8 | ||
|
f5973fa840 | ||
|
521fd1fcd7 | ||
|
9c951687b0 | ||
|
6548c3cf6f | ||
|
e4cd31d5ab | ||
|
f6a03cdc63 | ||
|
728faaee19 | ||
|
012dfeb715 | ||
|
eaf104495d | ||
|
9385d19ad0 | ||
|
058d2e6b72 | ||
|
885f836adb | ||
|
effbc47bd3 | ||
|
631ea50bde | ||
|
3f5f2dc0f1 | ||
|
a60171ce29 | ||
|
f9dd3b96d6 | ||
|
54fb4ae8db | ||
|
88cf1a5e67 | ||
|
cc107498eb | ||
|
81b114fc82 | ||
|
1d948d6b20 | ||
|
6a509ce22d | ||
|
ae6df469e2 | ||
|
b1db6ca180 | ||
|
9747eb2432 | ||
|
9177cb11d5 | ||
|
d694ea16a8 | ||
|
8ff7acaec5 | ||
|
6ee0b62272 | ||
|
636f7fdc30 | ||
|
f863bdea37 | ||
|
a3367d4075 | ||
|
0250f61d10 | ||
|
40f3165d7f | ||
|
766059ffd1 | ||
|
f2bd93afe6 | ||
|
66fd100333 | ||
|
9e8e6c8b18 | ||
|
d4c0575f28 | ||
|
ba99d5c028 | ||
|
6059b71015 | ||
|
6b5822e3d5 | ||
|
ebcab189f2 | ||
|
da656ac470 | ||
|
b2f9d6778a | ||
|
343322ef21 | ||
|
17189f2d58 | ||
|
47c64024ac | ||
|
866168af5c | ||
|
c542619525 | ||
|
abdfd9deee | ||
|
1b387c8242 | ||
|
d2eca739f4 | ||
|
fb736281f0 | ||
|
cd06ba656a | ||
|
d2f6f0fa92 | ||
|
4af883f5d2 | ||
|
272bdf95cb | ||
|
0092a7057e | ||
|
016551f79f | ||
|
0449606f0b | ||
|
51f7c68d3f | ||
|
96b2254ac1 | ||
|
a52182490d | ||
|
b36955f6e2 | ||
|
e3198e5b25 | ||
|
b88a86a0cf | ||
|
e4b8530356 | ||
|
ec0b5a8593 | ||
|
47df16f7b9 | ||
|
8e96e8c2a3 | ||
|
ac3f5b5ff8 | ||
|
23232f6254 | ||
|
2712823273 | ||
|
03cabc0364 | ||
|
e6c54e29f4 | ||
|
f473e747ea | ||
|
ce899eae52 | ||
|
6b9b688072 | ||
|
c0da9f6bf0 | ||
|
ab924745de | ||
|
43c2b42a82 | ||
|
683cc599ca | ||
|
7939ecaedc | ||
|
3699a8e97d | ||
|
42d942d501 | ||
|
81c6b49650 | ||
|
fdc1fa4bd7 | ||
|
da3322dbc2 | ||
|
4960cb1c96 | ||
|
15dd035ee8 | ||
|
2839d1467f | ||
|
96350b0ed0 | ||
|
3ed6a90fde | ||
|
e368046b84 | ||
|
2951077979 | ||
|
eb844753a5 | ||
|
cc705d5458 | ||
|
cf8031bbc6 | ||
|
914db8c6be | ||
|
8eaa2f8dfb | ||
|
dbc558afbc | ||
|
7f09a37503 | ||
|
56b3e8aaa4 | ||
|
949d476623 | ||
|
c21ec983e8 | ||
|
8874f236e4 | ||
|
863ed2f15d | ||
|
4def1e6068 | ||
|
729a2e6372 | ||
|
543e274437 | ||
|
a5eca12824 | ||
|
534d55a24e | ||
|
aebdee1070 | ||
|
8e569af60c | ||
|
ed11ca99af | ||
|
de899bbb18 | ||
|
55740a1f6b | ||
|
7f3e72b9cb | ||
|
f6c34f8e12 | ||
|
0693e3c3aa | ||
|
b2e18a8591 | ||
|
6aa0be22c9 | ||
|
f9ee06cd2a | ||
|
78b1feae77 | ||
|
7947d128fe | ||
|
f4f9c85bf7 | ||
|
b658d6afc7 | ||
|
4ade5c1e18 | ||
|
42a90f6775 | ||
|
91d37ad093 | ||
|
220377fdbf | ||
|
4c6b53eb8b | ||
|
c48d04c48b | ||
|
20ee8437bd | ||
|
24533cb12c | ||
|
0367af218c | ||
|
ef6c585503 | ||
|
ed0ef4ad81 | ||
|
92d177a68e | ||
|
9b479ca8c0 | ||
|
441751a6ec | ||
|
3a9bacd7a8 | ||
|
d240e3c453 | ||
|
903c402cf5 | ||
|
7c7822a28a | ||
|
fa3476d6cd | ||
|
8ce3bcbf30 | ||
|
7c1aca8703 | ||
|
3ac99fd4e4 | ||
|
518a7585ab | ||
|
8eab24c53d | ||
|
f70b2a605c | ||
|
90b063f0de | ||
|
73754993a5 | ||
|
a46630fd05 | ||
|
7d4e647b3b | ||
|
e0556cd5e6 | ||
|
ebf821011b | ||
|
99cab794c4 | ||
|
00bbb94b3b | ||
|
e736bc73f4 | ||
|
0556a3d088 | ||
|
4a010a7a2a | ||
|
2d7b71f70d | ||
|
1a76b4d680 | ||
|
5b01290057 | ||
|
98dc4a57fc | ||
|
945d0ce035 | ||
|
459ae7276d | ||
|
8a2cd97df0 | ||
|
b96adadf1b | ||
|
abe07c73a4 | ||
|
48680c3e2d | ||
|
765bfd0570 | ||
|
cb577756f9 | ||
|
dc4f11a613 | ||
|
fb3e037ed5 | ||
|
f8a2b6cdf4 | ||
|
2bbecd4cc5 | ||
|
2c84f234a6 | ||
|
4305b21ba8 | ||
|
2138ec0799 | ||
|
cdd7db4174 | ||
|
a17e5010f0 | ||
|
e1bb4da978 | ||
|
b3cfc88773 | ||
|
a8bbf29b42 | ||
|
903e226e59 | ||
|
1a38b8c3c9 | ||
|
948566c625 | ||
|
09abab6ce3 | ||
|
cc8f086cc3 | ||
|
749976a9cd | ||
|
cf31381b60 | ||
|
2fdf71db64 | ||
|
68fe0516eb | ||
|
d24ba65b5b | ||
|
a50bf4582c | ||
|
0fbad92e8b | ||
|
cdcf57659f | ||
|
a39516534a | ||
|
3b454b9ad0 | ||
|
6b9f2965da | ||
|
6ed1516d90 | ||
|
ff28cb4349 | ||
|
b6f345aec2 | ||
|
614c2a347c | ||
|
aca653170f | ||
|
e58677a104 | ||
|
6a6f59a3be | ||
|
ace8ae6a37 | ||
|
dc5902e8f5 | ||
|
97f2206f2a | ||
|
a171a29bf1 | ||
|
c58b8acdcc | ||
|
eda1d9142c | ||
|
8b893c4106 | ||
|
b1cff1a5e8 | ||
|
7b7c509796 | ||
|
0bc557640a | ||
|
431651ba2f | ||
|
aa55b1f6b3 | ||
|
47b2ae5dfd | ||
|
8da5016767 | ||
|
5b8909b5d2 | ||
|
a712ffee68 | ||
|
9c132a3244 | ||
|
f49e7d9619 | ||
|
6d741c3844 | ||
|
1b95cd537b | ||
|
f6c0050e90 | ||
|
1468edd2f9 | ||
|
8a83064f5a | ||
|
d1db9a70f3 | ||
|
7441dad1c0 | ||
|
c8aaeea7f2 | ||
|
ebb2c7a250 | ||
|
6cb4eb7d49 | ||
|
84960a77a5 | ||
|
7f7b75cae9 | ||
|
2296b89faf | ||
|
eb44a3ccb6 | ||
|
04045d2b30 | ||
|
fe0332957b | ||
|
11ef4a7fec | ||
|
55c981f18b | ||
|
be22be53df | ||
|
538e6e453f | ||
|
1b33c03d91 | ||
|
a34b424b7b | ||
|
557808ef24 | ||
|
ee693b5ad4 | ||
|
13cc0a2e8d | ||
|
5001be9f21 | ||
|
c9e0868917 | ||
|
b76ec78c5d | ||
|
da843443ef | ||
|
197df34097 | ||
|
015438289e | ||
|
023a00d160 | ||
|
137d5e4093 | ||
|
7773b75834 | ||
|
3435357b1c | ||
|
10b47c33d1 | ||
|
13cf510e8a | ||
|
2858401a12 | ||
|
9b7e94ebab | ||
|
86b87e12d7 | ||
|
10be592094 | ||
|
91c896f566 | ||
|
2ac7c94cbb | ||
|
e109319b1e | ||
|
c7065fc123 | ||
|
36ad59dc0f | ||
|
3f735e4346 | ||
|
daaca4e46a | ||
|
619ac2a9d8 | ||
|
33e735cbdd | ||
|
4ee7332973 | ||
|
77da82c310 | ||
|
1ba838a58d | ||
|
45f6633e49 | ||
|
f23d7f60b2 | ||
|
4e56136993 | ||
|
215cac2aec | ||
|
1f6068976d | ||
|
059b2a5424 | ||
|
f45de34db4 | ||
|
06147967a4 | ||
|
11dbd0e80c | ||
|
f4747aa069 | ||
|
863b4b810f | ||
|
81a325b769 | ||
|
c98fe59965 | ||
|
773b9b7764 | ||
|
e7aaf12299 | ||
|
8bbb5e9c93 | ||
|
8b66034af5 | ||
|
2761b35b6f | ||
|
5075775c56 | ||
|
ea4515f90e | ||
|
2d3a8b4d57 | ||
|
e30c68fb82 | ||
|
c8aefd5828 | ||
|
eb3f704745 | ||
|
0bf84341af | ||
|
c832c1b848 | ||
|
a0ca8b6a13 | ||
|
9d2c704aef | ||
|
3c57916ec3 | ||
|
071340c868 | ||
|
7c0cd1dc52 | ||
|
594b442a21 | ||
|
4adb469b38 | ||
|
27be78002d | ||
|
4131465ff6 | ||
|
6f2cdd2a9d | ||
|
4bc75b2574 | ||
|
38bbbd62a4 | ||
|
a0eb4c144e | ||
|
4c07405220 | ||
|
bfbcef60e9 | ||
|
23d2a290ab | ||
|
46700723a8 | ||
|
c3fe782eb5 | ||
|
e50192910d | ||
|
d78ed3215b | ||
|
78a9bdeb4c | ||
|
6e61085b1f | ||
|
e2d56e2d87 | ||
|
26f89fa5f8 | ||
|
3da3589d5c | ||
|
aabfc81816 | ||
|
e93e51d03c | ||
|
a1fb85dcdb | ||
|
2a201b3c46 | ||
|
4e48c076e8 | ||
|
fd3bbabec5 | ||
|
7514edb399 | ||
|
73270476d2 | ||
|
150c64350e | ||
|
b6eafbe344 | ||
|
89f20e1cfb | ||
|
ed94d3ff1f | ||
|
7eaef934db | ||
|
d07f26904a | ||
|
6682170f6e | ||
|
cc1fc29e7c | ||
|
851708c1b4 | ||
|
f56ea8be37 | ||
|
a479e180ac | ||
|
11236501c4 | ||
|
2b7144cad9 | ||
|
c11194dcc5 | ||
|
90e6c07202 | ||
|
d0a4075238 | ||
|
d4d74d3e11 | ||
|
b5654d54b9 | ||
|
5c6b370c63 | ||
|
4e88b7fd11 | ||
|
c0aafab857 | ||
|
e91541333c | ||
|
e8bfbdd71a | ||
|
0107836e1b | ||
|
814ba43867 | ||
|
1403557213 | ||
|
74e475d92c | ||
|
0f6b47e511 | ||
|
02cc9d6d4e | ||
|
16c8296735 | ||
|
3735ac307f | ||
|
1402416338 | ||
|
f8d0a22edf | ||
|
363524b556 | ||
|
47dad42f08 | ||
|
9190b8b67f | ||
|
c51967453f | ||
|
ed8097ed92 | ||
|
a054080cee | ||
|
897c711afb | ||
|
4799326058 | ||
|
e6bc6305aa | ||
|
af2825eb39 | ||
|
e9161dd4af | ||
|
7644bd46ad | ||
|
e6fc723bee | ||
|
97c1929e12 | ||
|
36fd5706c2 | ||
|
229547fa49 | ||
|
4b7401062a | ||
|
1bc6bec973 | ||
|
d8eac14294 | ||
|
b1f4aa91e2 | ||
|
0720196ee6 | ||
|
f4fba2dd2d | ||
|
c9bbf6c53a | ||
|
d4ff273bc4 | ||
|
627a1291b0 | ||
|
ccce552097 | ||
|
0cb770334c | ||
|
03dba3bbba | ||
|
a3575fbc6b | ||
|
3895ac85d8 | ||
|
1684ba1d14 | ||
|
24d044b147 | ||
|
567f298bd0 | ||
|
7711eb584c | ||
|
73d22d0622 | ||
|
b4dbb389b1 | ||
|
83570dc24b | ||
|
dc092f889b | ||
|
4d49ccaf8c | ||
|
8ae130c0d0 | ||
|
1526c73dae | ||
|
047a45d77f | ||
|
9c696b8778 | ||
|
454a65602b | ||
|
0e4762e3de | ||
|
ff6f03b0d4 | ||
|
e1452c7d03 | ||
|
363afd0089 | ||
|
836a12d047 | ||
|
77dd697f53 | ||
|
4779dd1b0b | ||
|
f7e8c01121 | ||
|
417a0d683c | ||
|
c68045360e | ||
|
7a721a4d1d | ||
|
3eb97923cc | ||
|
9414a29b80 | ||
|
05e0a4c715 | ||
|
a9df474067 | ||
|
5f635de0ac | ||
|
4d65c42967 | ||
|
4d3ccd236a | ||
|
51c0ff7b7a | ||
|
1c5cf6b29e | ||
|
902d2f7338 | ||
|
53c7cec55d | ||
|
19328db2de | ||
|
9eb9b0b880 | ||
|
44446ce395 | ||
|
323954be33 | ||
|
b4e8b07381 | ||
|
f9a9c72c7b | ||
|
f8a3f7ffac | ||
|
03d6aa8cd3 | ||
|
bd3e98078c | ||
|
5f9d3e107d | ||
|
a2bcbfb7c7 | ||
|
05a7d40950 | ||
|
6304d5dc93 | ||
|
f70d61321c | ||
|
db50225538 | ||
|
21102a2f9f | ||
|
0ce2012b83 | ||
|
2ba3bd3375 | ||
|
1d92b4293b | ||
|
89f182ac35 | ||
|
c022a38dd4 | ||
|
8b2e2a16e2 | ||
|
e9f50038a4 | ||
|
1e520121ce | ||
|
f34df3997d | ||
|
51c294a6fc | ||
|
985dbfe97d | ||
|
7f90dda96f | ||
|
c3cf22158b | ||
|
28f483870f | ||
|
15e1c7bc37 | ||
|
c54a124d34 | ||
|
051cf101d1 | ||
|
7ae42d81c1 | ||
|
2b3e3cf7e6 | ||
|
e6e9681856 | ||
|
9fb71130a4 | ||
|
9e85abe8e6 | ||
|
b2b1e1ca0a | ||
|
9e39df111d | ||
|
5f30a66929 | ||
|
1a6de70d92 | ||
|
0167e3a222 | ||
|
fca0b042e8 | ||
|
de109c9772 | ||
|
833798bd25 | ||
|
c09cb3358a | ||
|
d538e2d9a9 | ||
|
661d95cf29 | ||
|
8b125923e9 | ||
|
2123112763 | ||
|
f2bbcddd5f | ||
|
23cdd4fac3 | ||
|
ff7c19537e | ||
|
aec196564d | ||
|
15cf0657e8 | ||
|
c2bdfe0f19 | ||
|
0e1c587eff | ||
|
4a2b573ef4 | ||
|
190a425aa6 | ||
|
504a242775 | ||
|
6b47db92dc | ||
|
eab3e5aefa | ||
|
7e67f3c88b | ||
|
79f5a7c666 | ||
|
45104f8cec | ||
|
72bd398ae0 | ||
|
dbf10a222f | ||
|
1a53d2c8da | ||
|
d4add052d9 | ||
|
90616de89d | ||
|
44c6d88c44 | ||
|
6708ed8b34 | ||
|
faa07513ec | ||
|
94099f4908 | ||
|
f9677d6c8c | ||
|
c56d21bf77 | ||
|
197b542030 | ||
|
c276d6ae74 | ||
|
c17599604b | ||
|
aae281a7ea | ||
|
84700d63d0 | ||
|
9c1cdf6488 | ||
|
1b9fd3bdd4 | ||
|
9d41508530 | ||
|
7cbe77eacb | ||
|
2a42eb8c87 | ||
|
4d19d0370d | ||
|
7e8c7f32fb | ||
|
85a00106c8 | ||
|
26e80ba70b | ||
|
785ccc8bc4 | ||
|
e8f421fe34 | ||
|
e27dcbc9b9 | ||
|
a648a06ad1 | ||
|
45bd1061d2 | ||
|
24915591f2 | ||
|
0b76beb241 | ||
|
c849cc5c5d | ||
|
930ce0629b | ||
|
d9f2033a38 | ||
|
415985094a | ||
|
02401f7f3d | ||
|
e7a2e654e5 | ||
|
bf24b86f71 | ||
|
ee63c75cec | ||
|
5429521c70 | ||
|
1ef2b1d05a | ||
|
fd76db9616 | ||
|
0f14652932 | ||
|
598892de53 | ||
|
37dc77cc3e | ||
|
02e3f0a359 | ||
|
247f59899a | ||
|
59d87df0ca | ||
|
5ee2579efc | ||
|
72d4c7612a | ||
|
e0d59efd86 | ||
|
c76dc7b62f | ||
|
fac317d122 | ||
|
ca418afcbb | ||
|
355db98146 | ||
|
dc36301070 | ||
|
bebe819c54 | ||
|
d484ba07cd | ||
|
6e06aed627 | ||
|
76b2cfdf40 | ||
|
a269aa5046 | ||
|
858623b5a4 | ||
|
157a14fdc2 | ||
|
bad0c0a2e1 | ||
|
7dd56244a9 | ||
|
99ad49498d | ||
|
67159f7dc9 | ||
|
aaf3f080d0 | ||
|
5e03526717 | ||
|
2e81f2ab2a | ||
|
3d9974ed82 | ||
|
be3b75e136 | ||
|
da32eb8a99 | ||
|
2b9dd88554 | ||
|
b19b100150 | ||
|
8f751af7e4 | ||
|
232c400c08 | ||
|
3d64f13c7e | ||
|
dbb43fe046 | ||
|
aef4cce3e7 | ||
|
b5f8d2c91f | ||
|
4ce4ef4631 | ||
|
eecaf9602d | ||
|
6567628b95 | ||
|
35a526a482 | ||
|
e3ac5ad8c1 | ||
|
2ac3306382 | ||
|
587752dffe | ||
|
5f3f31b62c | ||
|
7662abc5f7 | ||
|
2bb6e77be0 | ||
|
db45ebd012 | ||
|
f00fc1e5ab | ||
|
c26c9ff1cc | ||
|
e2481fa8e6 | ||
|
0664afdf9a | ||
|
1be09249f7 | ||
|
8c9d2410b1 | ||
|
9e48b02b73 | ||
|
031c1b409b | ||
|
d0155c9890 | ||
|
4f27ab263f | ||
|
a0899477e9 | ||
|
9050c488e4 | ||
|
3b8ffcf8a9 | ||
|
ff34ed9eb2 | ||
|
48d40d8ba2 | ||
|
273b4816db | ||
|
4c059e7819 | ||
|
921b562fd0 | ||
|
e1a08b82a3 | ||
|
5fcc3a9955 | ||
|
3aac59a5ae | ||
|
57bf044df0 | ||
|
45eb3bcbc5 | ||
|
664c3453be | ||
|
b894a58849 | ||
|
97de6de8f2 | ||
|
4d37aa232f | ||
|
34dcd70a64 | ||
|
27b727ed41 | ||
|
5120e7a8c6 | ||
|
922d68cfda | ||
|
3e3ddf706b | ||
|
49862d89a6 | ||
|
7067c50e79 | ||
|
be77363c34 | ||
|
5ec63858ed | ||
|
de59f9fb66 | ||
|
f5cecb3e00 | ||
|
224eb7a968 | ||
|
b3eed2f2cf | ||
|
13fb4e52af | ||
|
801fb90f7b | ||
|
c45c421e48 | ||
|
468a81e1c3 | ||
|
4c1c9a5af7 | ||
|
4e215facaf | ||
|
32b54e1e9c | ||
|
aa5054cddf | ||
|
c83882d903 | ||
|
d302875fb7 | ||
|
12ae35f5ac | ||
|
bc4566da4d | ||
|
53675b599d | ||
|
e8791fb3cf | ||
|
c3ab895a54 | ||
|
585ac4bf1f | ||
|
11983443fb | ||
|
7e5c3df7a7 | ||
|
2cbbfca73f | ||
|
b439322776 | ||
|
eb72587238 | ||
|
1d0a87be14 | ||
|
ced621d469 | ||
|
4629353314 | ||
|
b9934d7239 | ||
|
3c06d56b87 | ||
|
cc6cb41eac | ||
|
0f5343a614 | ||
|
acef51e415 | ||
|
a4b81524be | ||
|
a6a494170e | ||
|
265dd4a0c3 | ||
|
c18a9230e5 | ||
|
5abc196536 | ||
|
4da11bbdc0 | ||
|
d0a255819a | ||
|
f34225506a | ||
|
d448c62cad | ||
|
d05d697831 | ||
|
21541642ba | ||
|
f8a909b014 | ||
|
20cdf2bef1 | ||
|
fbbadc8138 | ||
|
9a2cc1a4c5 | ||
|
167fcb5366 | ||
|
558a72e58f | ||
|
0fe3cc3acc | ||
|
856a110aee | ||
|
acc9874bdf | ||
|
c44c637fba | ||
|
29c7ea11bd | ||
|
0d59a31788 | ||
|
9e3dc4c10f | ||
|
f4ef4c2e61 | ||
|
2b41096518 | ||
|
90c53b9dd5 | ||
|
78b2ccb2b5 | ||
|
e92a05abe7 | ||
|
cfce144b61 | ||
|
424f70bc58 | ||
|
93876737e7 | ||
|
9d3d574d28 | ||
|
f4f5beff15 | ||
|
8ad4f20d99 | ||
|
963b2dfa57 | ||
|
b9b5cab772 | ||
|
587948c1b9 | ||
|
6adf4878f7 | ||
|
0d2d1339e0 | ||
|
cc5e8f35a7 | ||
|
9c333c96c4 | ||
|
2055e7a27d | ||
|
0f7d6a1946 | ||
|
7999bd7523 | ||
|
539d198f8f | ||
|
ea96718af5 | ||
|
33d197a429 | ||
|
f58f3ad6d9 | ||
|
abbf798ccf | ||
|
dedbce8458 | ||
|
181c20d601 | ||
|
223cec53ff | ||
|
365c03e763 | ||
|
1b2e3502cb | ||
|
0bc223cfde | ||
|
2938fa92c0 | ||
|
2a4182ea84 | ||
|
6269a3357b | ||
|
01bb49d963 | ||
|
a7cd03d578 | ||
|
3ae4303ecd | ||
|
b4885629af | ||
|
ff1fb63bf6 | ||
|
ebee66cfaf | ||
|
4c40615871 | ||
|
2b3951fe04 | ||
|
ce579c1dd3 | ||
|
5499854ec0 | ||
|
6952552e5e | ||
|
152c921017 | ||
|
fa56a5efa9 | ||
|
32cf3feab8 | ||
|
3cf7765aaf | ||
|
3ba2419e9b | ||
|
b996e0eac0 | ||
|
9eccb9eaa0 | ||
|
a2e2cdc2f3 | ||
|
58cc3931b9 | ||
|
08476a91e4 | ||
|
9b271e4ffd | ||
|
bb19987314 | ||
|
4fe8650387 | ||
|
931c0e9826 | ||
|
8aaaf80262 | ||
|
a9b87de7a3 | ||
|
ee9c8d8626 | ||
|
cc8fd0c9a7 | ||
|
883c1816bc | ||
|
f38bf2548f | ||
|
531b62f634 | ||
|
7e930472e8 | ||
|
313595e496 | ||
|
bdbdfe52cd | ||
|
776cf24516 | ||
|
cfb3aa8a22 | ||
|
230c37597c | ||
|
88197991e1 | ||
|
7285bc6889 | ||
|
79afdf724f | ||
|
129c6aa7fb | ||
|
57ad361750 | ||
|
2602c7afb5 | ||
|
9004d23f38 | ||
|
44f064c484 | ||
|
345ce171ff | ||
|
37b17932ca | ||
|
d526724eb1 | ||
|
c042e5f3cf | ||
|
df1cc6a144 | ||
|
0e91511db1 | ||
|
9317d42c49 | ||
|
5e79c9367b | ||
|
237bb87955 | ||
|
6537f7f69a | ||
|
b2896dd248 | ||
|
604f38bfa3 | ||
|
b9d10c9d6e | ||
|
56fd8983c9 | ||
|
7352faa2d9 | ||
|
f3deb3e160 | ||
|
ce28da3ae4 | ||
|
47415a8ef1 | ||
|
c8a56d63e9 | ||
|
806af4798a | ||
|
82cde166db | ||
|
10974366fb | ||
|
3410e75790 | ||
|
3c7495bd60 | ||
|
3182c60d13 | ||
|
164ac0ee80 | ||
|
edfe81cc2b | ||
|
3525d82733 | ||
|
516e548fcd | ||
|
481274088c | ||
|
84b34f75de | ||
|
7a575ed062 | ||
|
af90adadf3 | ||
|
e7a1c20132 | ||
|
5aa35899bc | ||
|
373385b29f | ||
|
11cc284bcc | ||
|
7d80cfed0b | ||
|
2227df479c | ||
|
e3df9c4cef | ||
|
adf2c642da | ||
|
8d4830975d | ||
|
f7f115e4dc | ||
|
669d00c02a | ||
|
5f74442f57 | ||
|
f18a107df8 | ||
|
3b9cade1a7 | ||
|
96a2bc9ce4 | ||
|
3fa4aea506 | ||
|
82a6ea9d85 | ||
|
d232c49d65 | ||
|
6d0b823b66 | ||
|
7ead3f93f4 | ||
|
c478503c13 | ||
|
6568091f29 | ||
|
20b2af4432 | ||
|
8a1d008b3c | ||
|
d5a89fc4aa | ||
|
e549ce15af | ||
|
c6fe084507 | ||
|
5bbc9dc102 | ||
|
a8969b6dfa | ||
|
65732f3720 | ||
|
17d4e6c745 | ||
|
720d830f5f | ||
|
41de155fb5 | ||
|
040180478d | ||
|
fdf3cc36ce | ||
|
bfd31de05e | ||
|
72bc613f34 | ||
|
f8e7ba7355 | ||
|
b1c4ca7816 | ||
|
012cdf4b4d | ||
|
86829008c3 | ||
|
249db1820f | ||
|
f791ddb7bb | ||
|
03fee2a131 | ||
|
97bb5a9abb | ||
|
57bee40211 | ||
|
7502158ba9 | ||
|
ed62a2f1c9 | ||
|
f07c9bf105 | ||
|
e169c81a2c | ||
|
6f55a25a30 | ||
|
bc9a785a59 | ||
|
1e3b859f48 | ||
|
24bdad3ae1 | ||
|
c455912969 | ||
|
7449d15d2f | ||
|
70c8a8bf34 | ||
|
09a017aaa8 | ||
|
3c6dbd0843 | ||
|
52699357dd | ||
|
13d0b23663 | ||
|
6fd207764d | ||
|
b035911d8f | ||
|
06468a4365 | ||
|
c9946b6dd3 | ||
|
47dddd706c | ||
|
5a819bbafa | ||
|
ff26829d65 | ||
|
7a7d36d010 | ||
|
7e5c293ebc | ||
|
334368083e | ||
|
0479049476 | ||
|
277619d833 | ||
|
c63fc3d6c2 | ||
|
a959a15636 | ||
|
f6b38d2b49 | ||
|
6a8230239b | ||
|
2e716cb8a0 | ||
|
fab78c9a6e | ||
|
626395304d | ||
|
a1d27940cd | ||
|
d54b465b30 | ||
|
26176328c4 | ||
|
6878a973ed | ||
|
cde10ca032 | ||
|
00bced9500 | ||
|
fbb6f117d0 | ||
|
d11fc060ee | ||
|
9c8f29e853 | ||
|
682f4c35d2 | ||
|
f722b2eb85 | ||
|
5d496d5f3d | ||
|
82ead4f3f5 | ||
|
d74d569f4b | ||
|
a46901ad6c | ||
|
a2d18d460a | ||
|
5fcae7f4e6 | ||
|
98b7d194eb | ||
|
9806f1bf8f | ||
|
38f3b88395 | ||
|
21459db634 | ||
|
ef59faf160 | ||
|
a173accfa5 | ||
|
ae540297b1 | ||
|
84bd205014 | ||
|
06e0047c22 | ||
|
86765c9020 | ||
|
f24d8c2ada | ||
|
610c67c208 | ||
|
cd45248f40 | ||
|
6ba02629ec | ||
|
0564942b0c | ||
|
6a59007eb5 | ||
|
6db1c377c4 | ||
|
fe3c9cc09f | ||
|
df6ae4b848 | ||
|
628a160c3a | ||
|
080844dc9d | ||
|
6c4e404ba1 | ||
|
884ae1cedd | ||
|
1206c31e3a | ||
|
8efd389a3c | ||
|
70b5b9855a | ||
|
e4ce4ab1ab | ||
|
ec57ff1b03 | ||
|
6fef2f6d4e | ||
|
3156410965 | ||
|
6836a12557 | ||
|
04af8b2360 | ||
|
e1f227a545 | ||
|
0d75273121 | ||
|
085dd943ff | ||
|
e8432f3140 | ||
|
22b21b8c7f | ||
|
6338941885 | ||
|
858923846d | ||
|
9bd3254e41 | ||
|
7896bf9023 | ||
|
2d07b80ace | ||
|
c996f876a2 | ||
|
489670cf6b | ||
|
bcd802d335 | ||
|
2c611790db | ||
|
4cb432e497 | ||
|
e09b123a91 | ||
|
601f10a6fb | ||
|
bb2369dad2 | ||
|
aae75ce52f | ||
|
275505b3e6 | ||
|
92f87a3a5a | ||
|
2fda593c3c | ||
|
32bde5a344 | ||
|
5168d715ce | ||
|
ea53462107 | ||
|
3bd4a4ccd3 | ||
|
40dee006dd | ||
|
4254f46065 | ||
|
47d5d09af2 | ||
|
d3d99dd3ba | ||
|
b82efe95bd | ||
|
dffd568e14 | ||
|
d33081c349 | ||
|
187502c358 | ||
|
25e73e5bd0 | ||
|
209a442d5b | ||
|
243a714586 | ||
|
ab2001cd7f | ||
|
12dc8a8112 | ||
|
448e8e001f | ||
|
dab866d170 | ||
|
31ec8d39d8 |
911
.editorconfig
911
.editorconfig
@@ -1,14 +1,901 @@
|
||||
# For ktlint configuration. Ref: https://ktlint.github.io/
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
max_line_length = 160
|
||||
tab_width = 4
|
||||
ij_continuation_indent_size = 8
|
||||
ij_formatter_off_tag = @formatter:off
|
||||
ij_formatter_on_tag = @formatter:on
|
||||
ij_formatter_tags_enabled = false
|
||||
ij_smart_tabs = false
|
||||
ij_visual_guides = none
|
||||
ij_wrap_on_typing = false
|
||||
|
||||
[*.{kt,kts}]
|
||||
# possible values: number (e.g. 2), "unset" (makes ktlint ignore indentation completely)
|
||||
indent_size=unset
|
||||
# true (recommended) / false
|
||||
insert_final_newline=true
|
||||
# possible values: number (e.g. 120) (package name, imports & comments are ignored), "off"
|
||||
# it's automatically set to 100 on `ktlint --android ...` (per Android Kotlin Style Guide)
|
||||
max_line_length=off
|
||||
[*.java]
|
||||
ij_java_align_consecutive_assignments = false
|
||||
ij_java_align_consecutive_variable_declarations = false
|
||||
ij_java_align_group_field_declarations = false
|
||||
ij_java_align_multiline_annotation_parameters = false
|
||||
ij_java_align_multiline_array_initializer_expression = false
|
||||
ij_java_align_multiline_assignment = false
|
||||
ij_java_align_multiline_binary_operation = false
|
||||
ij_java_align_multiline_chained_methods = false
|
||||
ij_java_align_multiline_extends_list = false
|
||||
ij_java_align_multiline_for = true
|
||||
ij_java_align_multiline_method_parentheses = false
|
||||
ij_java_align_multiline_parameters = true
|
||||
ij_java_align_multiline_parameters_in_calls = false
|
||||
ij_java_align_multiline_parenthesized_expression = false
|
||||
ij_java_align_multiline_records = true
|
||||
ij_java_align_multiline_resources = true
|
||||
ij_java_align_multiline_ternary_operation = false
|
||||
ij_java_align_multiline_text_blocks = false
|
||||
ij_java_align_multiline_throws_list = false
|
||||
ij_java_align_subsequent_simple_methods = false
|
||||
ij_java_align_throws_keyword = false
|
||||
ij_java_annotation_parameter_wrap = off
|
||||
ij_java_array_initializer_new_line_after_left_brace = false
|
||||
ij_java_array_initializer_right_brace_on_new_line = false
|
||||
ij_java_array_initializer_wrap = off
|
||||
ij_java_assert_statement_colon_on_next_line = false
|
||||
ij_java_assert_statement_wrap = off
|
||||
ij_java_assignment_wrap = off
|
||||
ij_java_binary_operation_sign_on_next_line = false
|
||||
ij_java_binary_operation_wrap = off
|
||||
ij_java_blank_lines_after_anonymous_class_header = 0
|
||||
ij_java_blank_lines_after_class_header = 0
|
||||
ij_java_blank_lines_after_imports = 1
|
||||
ij_java_blank_lines_after_package = 1
|
||||
ij_java_blank_lines_around_class = 1
|
||||
ij_java_blank_lines_around_field = 0
|
||||
ij_java_blank_lines_around_field_in_interface = 0
|
||||
ij_java_blank_lines_around_initializer = 1
|
||||
ij_java_blank_lines_around_method = 1
|
||||
ij_java_blank_lines_around_method_in_interface = 1
|
||||
ij_java_blank_lines_before_class_end = 0
|
||||
ij_java_blank_lines_before_imports = 1
|
||||
ij_java_blank_lines_before_method_body = 0
|
||||
ij_java_blank_lines_before_package = 0
|
||||
ij_java_block_brace_style = end_of_line
|
||||
ij_java_block_comment_at_first_column = true
|
||||
ij_java_builder_methods = none
|
||||
ij_java_call_parameters_new_line_after_left_paren = false
|
||||
ij_java_call_parameters_right_paren_on_new_line = false
|
||||
ij_java_call_parameters_wrap = off
|
||||
ij_java_case_statement_on_separate_line = true
|
||||
ij_java_catch_on_new_line = false
|
||||
ij_java_class_annotation_wrap = split_into_lines
|
||||
ij_java_class_brace_style = end_of_line
|
||||
ij_java_class_count_to_use_import_on_demand = 99
|
||||
ij_java_class_names_in_javadoc = 1
|
||||
ij_java_do_not_indent_top_level_class_members = false
|
||||
ij_java_do_not_wrap_after_single_annotation = false
|
||||
ij_java_do_while_brace_force = never
|
||||
ij_java_doc_add_blank_line_after_description = true
|
||||
ij_java_doc_add_blank_line_after_param_comments = false
|
||||
ij_java_doc_add_blank_line_after_return = false
|
||||
ij_java_doc_add_p_tag_on_empty_lines = true
|
||||
ij_java_doc_align_exception_comments = true
|
||||
ij_java_doc_align_param_comments = true
|
||||
ij_java_doc_do_not_wrap_if_one_line = false
|
||||
ij_java_doc_enable_formatting = true
|
||||
ij_java_doc_enable_leading_asterisks = true
|
||||
ij_java_doc_indent_on_continuation = false
|
||||
ij_java_doc_keep_empty_lines = true
|
||||
ij_java_doc_keep_empty_parameter_tag = true
|
||||
ij_java_doc_keep_empty_return_tag = true
|
||||
ij_java_doc_keep_empty_throws_tag = true
|
||||
ij_java_doc_keep_invalid_tags = true
|
||||
ij_java_doc_param_description_on_new_line = false
|
||||
ij_java_doc_preserve_line_breaks = false
|
||||
ij_java_doc_use_throws_not_exception_tag = true
|
||||
ij_java_else_on_new_line = false
|
||||
ij_java_enum_constants_wrap = off
|
||||
ij_java_extends_keyword_wrap = off
|
||||
ij_java_extends_list_wrap = off
|
||||
ij_java_field_annotation_wrap = split_into_lines
|
||||
ij_java_finally_on_new_line = false
|
||||
ij_java_for_brace_force = never
|
||||
ij_java_for_statement_new_line_after_left_paren = false
|
||||
ij_java_for_statement_right_paren_on_new_line = false
|
||||
ij_java_for_statement_wrap = off
|
||||
ij_java_generate_final_locals = false
|
||||
ij_java_generate_final_parameters = false
|
||||
ij_java_if_brace_force = never
|
||||
ij_java_imports_layout = $android.**,$androidx.**,$com.**,$junit.**,$net.**,$org.**,$java.**,$javax.**,$*,|,android.**,|,androidx.**,|,com.**,|,junit.**,|,net.**,|,org.**,|,java.**,|,javax.**,|,*,|
|
||||
ij_java_indent_case_from_switch = true
|
||||
ij_java_insert_inner_class_imports = false
|
||||
ij_java_insert_override_annotation = true
|
||||
ij_java_keep_blank_lines_before_right_brace = 2
|
||||
ij_java_keep_blank_lines_between_package_declaration_and_header = 2
|
||||
ij_java_keep_blank_lines_in_code = 2
|
||||
ij_java_keep_blank_lines_in_declarations = 2
|
||||
ij_java_keep_builder_methods_indents = false
|
||||
ij_java_keep_control_statement_in_one_line = true
|
||||
ij_java_keep_first_column_comment = true
|
||||
ij_java_keep_indents_on_empty_lines = false
|
||||
ij_java_keep_line_breaks = true
|
||||
ij_java_keep_multiple_expressions_in_one_line = false
|
||||
ij_java_keep_simple_blocks_in_one_line = false
|
||||
ij_java_keep_simple_classes_in_one_line = false
|
||||
ij_java_keep_simple_lambdas_in_one_line = false
|
||||
ij_java_keep_simple_methods_in_one_line = false
|
||||
ij_java_label_indent_absolute = false
|
||||
ij_java_label_indent_size = 0
|
||||
ij_java_lambda_brace_style = end_of_line
|
||||
ij_java_layout_static_imports_separately = true
|
||||
ij_java_line_comment_add_space = false
|
||||
ij_java_line_comment_at_first_column = true
|
||||
ij_java_method_annotation_wrap = split_into_lines
|
||||
ij_java_method_brace_style = end_of_line
|
||||
ij_java_method_call_chain_wrap = off
|
||||
ij_java_method_parameters_new_line_after_left_paren = false
|
||||
ij_java_method_parameters_right_paren_on_new_line = false
|
||||
ij_java_method_parameters_wrap = off
|
||||
ij_java_modifier_list_wrap = false
|
||||
ij_java_names_count_to_use_import_on_demand = 99
|
||||
ij_java_new_line_after_lparen_in_record_header = false
|
||||
ij_java_parameter_annotation_wrap = off
|
||||
ij_java_parentheses_expression_new_line_after_left_paren = false
|
||||
ij_java_parentheses_expression_right_paren_on_new_line = false
|
||||
ij_java_place_assignment_sign_on_next_line = false
|
||||
ij_java_prefer_longer_names = true
|
||||
ij_java_prefer_parameters_wrap = false
|
||||
ij_java_record_components_wrap = normal
|
||||
ij_java_repeat_synchronized = true
|
||||
ij_java_replace_instanceof_and_cast = false
|
||||
ij_java_replace_null_check = true
|
||||
ij_java_replace_sum_lambda_with_method_ref = true
|
||||
ij_java_resource_list_new_line_after_left_paren = false
|
||||
ij_java_resource_list_right_paren_on_new_line = false
|
||||
ij_java_resource_list_wrap = off
|
||||
ij_java_rparen_on_new_line_in_record_header = false
|
||||
ij_java_space_after_closing_angle_bracket_in_type_argument = false
|
||||
ij_java_space_after_colon = true
|
||||
ij_java_space_after_comma = true
|
||||
ij_java_space_after_comma_in_type_arguments = true
|
||||
ij_java_space_after_for_semicolon = true
|
||||
ij_java_space_after_quest = true
|
||||
ij_java_space_after_type_cast = true
|
||||
ij_java_space_before_annotation_array_initializer_left_brace = false
|
||||
ij_java_space_before_annotation_parameter_list = false
|
||||
ij_java_space_before_array_initializer_left_brace = false
|
||||
ij_java_space_before_catch_keyword = true
|
||||
ij_java_space_before_catch_left_brace = true
|
||||
ij_java_space_before_catch_parentheses = true
|
||||
ij_java_space_before_class_left_brace = true
|
||||
ij_java_space_before_colon = true
|
||||
ij_java_space_before_colon_in_foreach = true
|
||||
ij_java_space_before_comma = false
|
||||
ij_java_space_before_do_left_brace = true
|
||||
ij_java_space_before_else_keyword = true
|
||||
ij_java_space_before_else_left_brace = true
|
||||
ij_java_space_before_finally_keyword = true
|
||||
ij_java_space_before_finally_left_brace = true
|
||||
ij_java_space_before_for_left_brace = true
|
||||
ij_java_space_before_for_parentheses = true
|
||||
ij_java_space_before_for_semicolon = false
|
||||
ij_java_space_before_if_left_brace = true
|
||||
ij_java_space_before_if_parentheses = true
|
||||
ij_java_space_before_method_call_parentheses = false
|
||||
ij_java_space_before_method_left_brace = true
|
||||
ij_java_space_before_method_parentheses = false
|
||||
ij_java_space_before_opening_angle_bracket_in_type_parameter = false
|
||||
ij_java_space_before_quest = true
|
||||
ij_java_space_before_switch_left_brace = true
|
||||
ij_java_space_before_switch_parentheses = true
|
||||
ij_java_space_before_synchronized_left_brace = true
|
||||
ij_java_space_before_synchronized_parentheses = true
|
||||
ij_java_space_before_try_left_brace = true
|
||||
ij_java_space_before_try_parentheses = true
|
||||
ij_java_space_before_type_parameter_list = false
|
||||
ij_java_space_before_while_keyword = true
|
||||
ij_java_space_before_while_left_brace = true
|
||||
ij_java_space_before_while_parentheses = true
|
||||
ij_java_space_inside_one_line_enum_braces = false
|
||||
ij_java_space_within_empty_array_initializer_braces = false
|
||||
ij_java_space_within_empty_method_call_parentheses = false
|
||||
ij_java_space_within_empty_method_parentheses = false
|
||||
ij_java_spaces_around_additive_operators = true
|
||||
ij_java_spaces_around_assignment_operators = true
|
||||
ij_java_spaces_around_bitwise_operators = true
|
||||
ij_java_spaces_around_equality_operators = true
|
||||
ij_java_spaces_around_lambda_arrow = true
|
||||
ij_java_spaces_around_logical_operators = true
|
||||
ij_java_spaces_around_method_ref_dbl_colon = false
|
||||
ij_java_spaces_around_multiplicative_operators = true
|
||||
ij_java_spaces_around_relational_operators = true
|
||||
ij_java_spaces_around_shift_operators = true
|
||||
ij_java_spaces_around_type_bounds_in_type_parameters = true
|
||||
ij_java_spaces_around_unary_operator = false
|
||||
ij_java_spaces_within_angle_brackets = false
|
||||
ij_java_spaces_within_annotation_parentheses = false
|
||||
ij_java_spaces_within_array_initializer_braces = false
|
||||
ij_java_spaces_within_braces = false
|
||||
ij_java_spaces_within_brackets = false
|
||||
ij_java_spaces_within_cast_parentheses = false
|
||||
ij_java_spaces_within_catch_parentheses = false
|
||||
ij_java_spaces_within_for_parentheses = false
|
||||
ij_java_spaces_within_if_parentheses = false
|
||||
ij_java_spaces_within_method_call_parentheses = false
|
||||
ij_java_spaces_within_method_parentheses = false
|
||||
ij_java_spaces_within_parentheses = false
|
||||
ij_java_spaces_within_record_header = false
|
||||
ij_java_spaces_within_switch_parentheses = false
|
||||
ij_java_spaces_within_synchronized_parentheses = false
|
||||
ij_java_spaces_within_try_parentheses = false
|
||||
ij_java_spaces_within_while_parentheses = false
|
||||
ij_java_special_else_if_treatment = true
|
||||
ij_java_subclass_name_suffix = Impl
|
||||
ij_java_ternary_operation_signs_on_next_line = false
|
||||
ij_java_ternary_operation_wrap = off
|
||||
ij_java_test_name_suffix = Test
|
||||
ij_java_throws_keyword_wrap = off
|
||||
ij_java_throws_list_wrap = off
|
||||
ij_java_use_external_annotations = false
|
||||
ij_java_use_fq_class_names = false
|
||||
ij_java_use_relative_indents = false
|
||||
ij_java_use_single_class_imports = true
|
||||
ij_java_variable_annotation_wrap = off
|
||||
ij_java_visibility = public
|
||||
ij_java_while_brace_force = never
|
||||
ij_java_while_on_new_line = false
|
||||
ij_java_wrap_comments = false
|
||||
ij_java_wrap_first_method_in_call_chain = false
|
||||
ij_java_wrap_long_lines = false
|
||||
|
||||
# From https://github.com/pinterest/ktlint#custom-ktlint-specific-editorconfig-properties
|
||||
# default IntelliJ IDEA style, same as alphabetical, but with "java", "javax", "kotlin" and alias imports in the end of the imports list
|
||||
ij_kotlin_imports_layout=*,java.**,javax.**,kotlin.**,^
|
||||
[*.properties]
|
||||
ij_properties_align_group_field_declarations = false
|
||||
ij_properties_keep_blank_lines = false
|
||||
ij_properties_key_value_delimiter = equals
|
||||
ij_properties_spaces_around_key_value_delimiter = false
|
||||
|
||||
[.editorconfig]
|
||||
ij_editorconfig_align_group_field_declarations = false
|
||||
ij_editorconfig_space_after_colon = false
|
||||
ij_editorconfig_space_after_comma = true
|
||||
ij_editorconfig_space_before_colon = false
|
||||
ij_editorconfig_space_before_comma = false
|
||||
ij_editorconfig_spaces_around_assignment_operators = true
|
||||
|
||||
[{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.rng,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}]
|
||||
ij_continuation_indent_size = 4
|
||||
ij_xml_align_attributes = false
|
||||
ij_xml_align_text = false
|
||||
ij_xml_attribute_wrap = normal
|
||||
ij_xml_block_comment_at_first_column = true
|
||||
ij_xml_keep_blank_lines = 2
|
||||
ij_xml_keep_indents_on_empty_lines = false
|
||||
ij_xml_keep_line_breaks = false
|
||||
ij_xml_keep_line_breaks_in_text = true
|
||||
ij_xml_keep_whitespaces = false
|
||||
ij_xml_keep_whitespaces_around_cdata = preserve
|
||||
ij_xml_keep_whitespaces_inside_cdata = false
|
||||
ij_xml_line_comment_at_first_column = true
|
||||
ij_xml_space_after_tag_name = false
|
||||
ij_xml_space_around_equals_in_attribute = false
|
||||
ij_xml_space_inside_empty_tag = true
|
||||
ij_xml_text_wrap = normal
|
||||
ij_xml_use_custom_settings = true
|
||||
|
||||
[{*.bash,*.sh,*.zsh}]
|
||||
indent_size = 2
|
||||
tab_width = 2
|
||||
ij_shell_binary_ops_start_line = false
|
||||
ij_shell_keep_column_alignment_padding = false
|
||||
ij_shell_minify_program = false
|
||||
ij_shell_redirect_followed_by_space = false
|
||||
ij_shell_switch_cases_indented = false
|
||||
ij_shell_use_unix_line_separator = true
|
||||
|
||||
[{*.c,*.c++,*.cc,*.cp,*.cpp,*.cu,*.cuh,*.cxx,*.h,*.h++,*.hh,*.hp,*.hpp,*.hxx,*.i,*.icc,*.ii,*.inl,*.ino,*.ipp,*.m,*.mm,*.pch,*.tcc,*.tpp}]
|
||||
ij_c_add_brief_tag = false
|
||||
ij_c_add_getter_prefix = true
|
||||
ij_c_add_setter_prefix = true
|
||||
ij_c_align_dictionary_pair_values = false
|
||||
ij_c_align_group_field_declarations = false
|
||||
ij_c_align_init_list_in_columns = true
|
||||
ij_c_align_multiline_array_initializer_expression = true
|
||||
ij_c_align_multiline_assignment = true
|
||||
ij_c_align_multiline_binary_operation = true
|
||||
ij_c_align_multiline_chained_methods = false
|
||||
ij_c_align_multiline_for = true
|
||||
ij_c_align_multiline_ternary_operation = true
|
||||
ij_c_array_initializer_comma_on_next_line = false
|
||||
ij_c_array_initializer_new_line_after_left_brace = false
|
||||
ij_c_array_initializer_right_brace_on_new_line = false
|
||||
ij_c_array_initializer_wrap = normal
|
||||
ij_c_assignment_wrap = off
|
||||
ij_c_binary_operation_sign_on_next_line = false
|
||||
ij_c_binary_operation_wrap = normal
|
||||
ij_c_blank_lines_after_class_header = 0
|
||||
ij_c_blank_lines_after_imports = 1
|
||||
ij_c_blank_lines_around_class = 1
|
||||
ij_c_blank_lines_around_field = 0
|
||||
ij_c_blank_lines_around_field_in_interface = 0
|
||||
ij_c_blank_lines_around_method = 1
|
||||
ij_c_blank_lines_around_method_in_interface = 1
|
||||
ij_c_blank_lines_around_namespace = 0
|
||||
ij_c_blank_lines_around_properties_in_declaration = 0
|
||||
ij_c_blank_lines_around_properties_in_interface = 0
|
||||
ij_c_blank_lines_before_imports = 1
|
||||
ij_c_blank_lines_before_method_body = 0
|
||||
ij_c_block_brace_placement = end_of_line
|
||||
ij_c_block_brace_style = end_of_line
|
||||
ij_c_block_comment_at_first_column = true
|
||||
ij_c_catch_on_new_line = false
|
||||
ij_c_class_brace_style = end_of_line
|
||||
ij_c_class_constructor_init_list_align_multiline = true
|
||||
ij_c_class_constructor_init_list_comma_on_next_line = false
|
||||
ij_c_class_constructor_init_list_new_line_after_colon = never
|
||||
ij_c_class_constructor_init_list_new_line_before_colon = if_long
|
||||
ij_c_class_constructor_init_list_wrap = normal
|
||||
ij_c_copy_is_deep = false
|
||||
ij_c_create_interface_for_categories = true
|
||||
ij_c_declare_generated_methods = true
|
||||
ij_c_description_include_member_names = true
|
||||
ij_c_discharged_short_ternary_operator = false
|
||||
ij_c_do_not_add_breaks = false
|
||||
ij_c_do_while_brace_force = never
|
||||
ij_c_else_on_new_line = false
|
||||
ij_c_enum_constants_comma_on_next_line = false
|
||||
ij_c_enum_constants_wrap = on_every_item
|
||||
ij_c_for_brace_force = never
|
||||
ij_c_for_statement_new_line_after_left_paren = false
|
||||
ij_c_for_statement_right_paren_on_new_line = false
|
||||
ij_c_for_statement_wrap = off
|
||||
ij_c_function_brace_placement = end_of_line
|
||||
ij_c_function_call_arguments_align_multiline = true
|
||||
ij_c_function_call_arguments_align_multiline_pars = false
|
||||
ij_c_function_call_arguments_comma_on_next_line = false
|
||||
ij_c_function_call_arguments_new_line_after_lpar = false
|
||||
ij_c_function_call_arguments_new_line_before_rpar = false
|
||||
ij_c_function_call_arguments_wrap = normal
|
||||
ij_c_function_non_top_after_return_type_wrap = normal
|
||||
ij_c_function_parameters_align_multiline = true
|
||||
ij_c_function_parameters_align_multiline_pars = false
|
||||
ij_c_function_parameters_comma_on_next_line = false
|
||||
ij_c_function_parameters_new_line_after_lpar = false
|
||||
ij_c_function_parameters_new_line_before_rpar = false
|
||||
ij_c_function_parameters_wrap = normal
|
||||
ij_c_function_top_after_return_type_wrap = normal
|
||||
ij_c_generate_additional_eq_operators = true
|
||||
ij_c_generate_additional_rel_operators = true
|
||||
ij_c_generate_class_constructor = true
|
||||
ij_c_generate_comparison_operators_use_std_tie = false
|
||||
ij_c_generate_instance_variables_for_properties = ask
|
||||
ij_c_generate_operators_as_members = true
|
||||
ij_c_header_guard_style_pattern = ${PROJECT_NAME}_${FILE_NAME}_${EXT}
|
||||
ij_c_if_brace_force = never
|
||||
ij_c_in_line_short_ternary_operator = true
|
||||
ij_c_indent_block_comment = true
|
||||
ij_c_indent_c_struct_members = 4
|
||||
ij_c_indent_case_from_switch = true
|
||||
ij_c_indent_class_members = 4
|
||||
ij_c_indent_directive_as_code = false
|
||||
ij_c_indent_implementation_members = 0
|
||||
ij_c_indent_inside_code_block = 4
|
||||
ij_c_indent_interface_members = 0
|
||||
ij_c_indent_interface_members_except_ivars_block = false
|
||||
ij_c_indent_namespace_members = 4
|
||||
ij_c_indent_preprocessor_directive = 0
|
||||
ij_c_indent_visibility_keywords = 0
|
||||
ij_c_insert_override = true
|
||||
ij_c_insert_virtual_with_override = false
|
||||
ij_c_introduce_auto_vars = false
|
||||
ij_c_introduce_const_params = false
|
||||
ij_c_introduce_const_vars = false
|
||||
ij_c_introduce_generate_property = false
|
||||
ij_c_introduce_generate_synthesize = true
|
||||
ij_c_introduce_globals_to_header = true
|
||||
ij_c_introduce_prop_to_private_category = false
|
||||
ij_c_introduce_static_consts = true
|
||||
ij_c_introduce_use_ns_types = false
|
||||
ij_c_ivars_prefix = _
|
||||
ij_c_keep_blank_lines_before_end = 2
|
||||
ij_c_keep_blank_lines_before_right_brace = 2
|
||||
ij_c_keep_blank_lines_in_code = 2
|
||||
ij_c_keep_blank_lines_in_declarations = 2
|
||||
ij_c_keep_case_expressions_in_one_line = false
|
||||
ij_c_keep_control_statement_in_one_line = true
|
||||
ij_c_keep_directive_at_first_column = true
|
||||
ij_c_keep_first_column_comment = true
|
||||
ij_c_keep_line_breaks = true
|
||||
ij_c_keep_nested_namespaces_in_one_line = false
|
||||
ij_c_keep_simple_blocks_in_one_line = true
|
||||
ij_c_keep_simple_methods_in_one_line = true
|
||||
ij_c_keep_structures_in_one_line = false
|
||||
ij_c_lambda_capture_list_align_multiline = false
|
||||
ij_c_lambda_capture_list_align_multiline_bracket = false
|
||||
ij_c_lambda_capture_list_comma_on_next_line = false
|
||||
ij_c_lambda_capture_list_new_line_after_lbracket = false
|
||||
ij_c_lambda_capture_list_new_line_before_rbracket = false
|
||||
ij_c_lambda_capture_list_wrap = off
|
||||
ij_c_line_comment_add_space = false
|
||||
ij_c_line_comment_at_first_column = true
|
||||
ij_c_method_brace_placement = end_of_line
|
||||
ij_c_method_call_arguments_align_by_colons = true
|
||||
ij_c_method_call_arguments_align_multiline = false
|
||||
ij_c_method_call_arguments_special_dictionary_pairs_treatment = true
|
||||
ij_c_method_call_arguments_wrap = off
|
||||
ij_c_method_call_chain_wrap = off
|
||||
ij_c_method_parameters_align_by_colons = true
|
||||
ij_c_method_parameters_align_multiline = false
|
||||
ij_c_method_parameters_wrap = off
|
||||
ij_c_namespace_brace_placement = end_of_line
|
||||
ij_c_parentheses_expression_new_line_after_left_paren = false
|
||||
ij_c_parentheses_expression_right_paren_on_new_line = false
|
||||
ij_c_place_assignment_sign_on_next_line = false
|
||||
ij_c_property_nonatomic = true
|
||||
ij_c_put_ivars_to_implementation = true
|
||||
ij_c_refactor_compatibility_aliases_and_classes = true
|
||||
ij_c_refactor_properties_and_ivars = true
|
||||
ij_c_release_style = ivar
|
||||
ij_c_retain_object_parameters_in_constructor = true
|
||||
ij_c_semicolon_after_method_signature = false
|
||||
ij_c_shift_operation_align_multiline = true
|
||||
ij_c_shift_operation_wrap = normal
|
||||
ij_c_show_non_virtual_functions = false
|
||||
ij_c_space_after_colon = true
|
||||
ij_c_space_after_colon_in_selector = false
|
||||
ij_c_space_after_comma = true
|
||||
ij_c_space_after_cup_in_blocks = false
|
||||
ij_c_space_after_dictionary_literal_colon = true
|
||||
ij_c_space_after_for_semicolon = true
|
||||
ij_c_space_after_init_list_colon = true
|
||||
ij_c_space_after_method_parameter_type_parentheses = false
|
||||
ij_c_space_after_method_return_type_parentheses = false
|
||||
ij_c_space_after_pointer_in_declaration = false
|
||||
ij_c_space_after_quest = true
|
||||
ij_c_space_after_reference_in_declaration = false
|
||||
ij_c_space_after_reference_in_rvalue = false
|
||||
ij_c_space_after_structures_rbrace = true
|
||||
ij_c_space_after_superclass_colon = true
|
||||
ij_c_space_after_type_cast = true
|
||||
ij_c_space_after_visibility_sign_in_method_declaration = true
|
||||
ij_c_space_before_autorelease_pool_lbrace = true
|
||||
ij_c_space_before_catch_keyword = true
|
||||
ij_c_space_before_catch_left_brace = true
|
||||
ij_c_space_before_catch_parentheses = true
|
||||
ij_c_space_before_category_parentheses = true
|
||||
ij_c_space_before_chained_send_message = true
|
||||
ij_c_space_before_class_left_brace = true
|
||||
ij_c_space_before_colon = true
|
||||
ij_c_space_before_comma = false
|
||||
ij_c_space_before_dictionary_literal_colon = false
|
||||
ij_c_space_before_do_left_brace = true
|
||||
ij_c_space_before_else_keyword = true
|
||||
ij_c_space_before_else_left_brace = true
|
||||
ij_c_space_before_for_left_brace = true
|
||||
ij_c_space_before_for_parentheses = true
|
||||
ij_c_space_before_for_semicolon = false
|
||||
ij_c_space_before_if_left_brace = true
|
||||
ij_c_space_before_if_parentheses = true
|
||||
ij_c_space_before_init_list = false
|
||||
ij_c_space_before_init_list_colon = true
|
||||
ij_c_space_before_method_call_parentheses = false
|
||||
ij_c_space_before_method_left_brace = true
|
||||
ij_c_space_before_method_parentheses = false
|
||||
ij_c_space_before_namespace_lbrace = true
|
||||
ij_c_space_before_pointer_in_declaration = true
|
||||
ij_c_space_before_property_attributes_parentheses = false
|
||||
ij_c_space_before_protocols_brackets = true
|
||||
ij_c_space_before_quest = true
|
||||
ij_c_space_before_reference_in_declaration = true
|
||||
ij_c_space_before_superclass_colon = true
|
||||
ij_c_space_before_switch_left_brace = true
|
||||
ij_c_space_before_switch_parentheses = true
|
||||
ij_c_space_before_template_call_lt = false
|
||||
ij_c_space_before_template_declaration_lt = false
|
||||
ij_c_space_before_try_left_brace = true
|
||||
ij_c_space_before_while_keyword = true
|
||||
ij_c_space_before_while_left_brace = true
|
||||
ij_c_space_before_while_parentheses = true
|
||||
ij_c_space_between_adjacent_brackets = false
|
||||
ij_c_space_between_operator_and_punctuator = false
|
||||
ij_c_space_within_empty_array_initializer_braces = false
|
||||
ij_c_spaces_around_additive_operators = true
|
||||
ij_c_spaces_around_assignment_operators = true
|
||||
ij_c_spaces_around_bitwise_operators = true
|
||||
ij_c_spaces_around_equality_operators = true
|
||||
ij_c_spaces_around_lambda_arrow = true
|
||||
ij_c_spaces_around_logical_operators = true
|
||||
ij_c_spaces_around_multiplicative_operators = true
|
||||
ij_c_spaces_around_pm_operators = false
|
||||
ij_c_spaces_around_relational_operators = true
|
||||
ij_c_spaces_around_shift_operators = true
|
||||
ij_c_spaces_around_unary_operator = false
|
||||
ij_c_spaces_within_array_initializer_braces = false
|
||||
ij_c_spaces_within_braces = true
|
||||
ij_c_spaces_within_brackets = false
|
||||
ij_c_spaces_within_cast_parentheses = false
|
||||
ij_c_spaces_within_catch_parentheses = false
|
||||
ij_c_spaces_within_category_parentheses = false
|
||||
ij_c_spaces_within_empty_braces = false
|
||||
ij_c_spaces_within_empty_function_call_parentheses = false
|
||||
ij_c_spaces_within_empty_function_declaration_parentheses = false
|
||||
ij_c_spaces_within_empty_lambda_capture_list_bracket = false
|
||||
ij_c_spaces_within_empty_template_call_ltgt = false
|
||||
ij_c_spaces_within_empty_template_declaration_ltgt = false
|
||||
ij_c_spaces_within_for_parentheses = false
|
||||
ij_c_spaces_within_function_call_parentheses = false
|
||||
ij_c_spaces_within_function_declaration_parentheses = false
|
||||
ij_c_spaces_within_if_parentheses = false
|
||||
ij_c_spaces_within_lambda_capture_list_bracket = false
|
||||
ij_c_spaces_within_method_parameter_type_parentheses = false
|
||||
ij_c_spaces_within_method_return_type_parentheses = false
|
||||
ij_c_spaces_within_parentheses = false
|
||||
ij_c_spaces_within_property_attributes_parentheses = false
|
||||
ij_c_spaces_within_protocols_brackets = false
|
||||
ij_c_spaces_within_send_message_brackets = false
|
||||
ij_c_spaces_within_switch_parentheses = false
|
||||
ij_c_spaces_within_template_call_ltgt = false
|
||||
ij_c_spaces_within_template_declaration_ltgt = false
|
||||
ij_c_spaces_within_template_double_gt = true
|
||||
ij_c_spaces_within_while_parentheses = false
|
||||
ij_c_special_else_if_treatment = true
|
||||
ij_c_superclass_list_after_colon = never
|
||||
ij_c_superclass_list_align_multiline = true
|
||||
ij_c_superclass_list_before_colon = if_long
|
||||
ij_c_superclass_list_comma_on_next_line = false
|
||||
ij_c_superclass_list_wrap = on_every_item
|
||||
ij_c_tag_prefix_of_block_comment = at
|
||||
ij_c_tag_prefix_of_line_comment = back_slash
|
||||
ij_c_template_call_arguments_align_multiline = false
|
||||
ij_c_template_call_arguments_align_multiline_pars = false
|
||||
ij_c_template_call_arguments_comma_on_next_line = false
|
||||
ij_c_template_call_arguments_new_line_after_lt = false
|
||||
ij_c_template_call_arguments_new_line_before_gt = false
|
||||
ij_c_template_call_arguments_wrap = off
|
||||
ij_c_template_declaration_function_body_indent = false
|
||||
ij_c_template_declaration_function_wrap = split_into_lines
|
||||
ij_c_template_declaration_struct_body_indent = false
|
||||
ij_c_template_declaration_struct_wrap = split_into_lines
|
||||
ij_c_template_parameters_align_multiline = false
|
||||
ij_c_template_parameters_align_multiline_pars = false
|
||||
ij_c_template_parameters_comma_on_next_line = false
|
||||
ij_c_template_parameters_new_line_after_lt = false
|
||||
ij_c_template_parameters_new_line_before_gt = false
|
||||
ij_c_template_parameters_wrap = off
|
||||
ij_c_ternary_operation_signs_on_next_line = true
|
||||
ij_c_ternary_operation_wrap = normal
|
||||
ij_c_type_qualifiers_placement = before
|
||||
ij_c_use_modern_casts = true
|
||||
ij_c_use_setters_in_constructor = true
|
||||
ij_c_while_brace_force = never
|
||||
ij_c_while_on_new_line = false
|
||||
ij_c_wrap_property_declaration = off
|
||||
|
||||
[{*.cmake,CMakeLists.txt}]
|
||||
ij_cmake_align_multiline_parameters_in_calls = false
|
||||
ij_cmake_force_commands_case = 2
|
||||
ij_cmake_keep_blank_lines_in_code = 2
|
||||
ij_cmake_space_before_for_parentheses = true
|
||||
ij_cmake_space_before_if_parentheses = true
|
||||
ij_cmake_space_before_method_call_parentheses = false
|
||||
ij_cmake_space_before_method_parentheses = false
|
||||
ij_cmake_space_before_while_parentheses = true
|
||||
ij_cmake_spaces_within_for_parentheses = false
|
||||
ij_cmake_spaces_within_if_parentheses = false
|
||||
ij_cmake_spaces_within_method_call_parentheses = false
|
||||
ij_cmake_spaces_within_method_parentheses = false
|
||||
ij_cmake_spaces_within_while_parentheses = false
|
||||
|
||||
[{*.gant,*.gradle,*.groovy,*.gy}]
|
||||
ij_groovy_align_group_field_declarations = false
|
||||
ij_groovy_align_multiline_array_initializer_expression = false
|
||||
ij_groovy_align_multiline_assignment = false
|
||||
ij_groovy_align_multiline_binary_operation = false
|
||||
ij_groovy_align_multiline_chained_methods = false
|
||||
ij_groovy_align_multiline_extends_list = false
|
||||
ij_groovy_align_multiline_for = true
|
||||
ij_groovy_align_multiline_list_or_map = true
|
||||
ij_groovy_align_multiline_method_parentheses = false
|
||||
ij_groovy_align_multiline_parameters = true
|
||||
ij_groovy_align_multiline_parameters_in_calls = false
|
||||
ij_groovy_align_multiline_resources = true
|
||||
ij_groovy_align_multiline_ternary_operation = false
|
||||
ij_groovy_align_multiline_throws_list = false
|
||||
ij_groovy_align_named_args_in_map = true
|
||||
ij_groovy_align_throws_keyword = false
|
||||
ij_groovy_array_initializer_new_line_after_left_brace = false
|
||||
ij_groovy_array_initializer_right_brace_on_new_line = false
|
||||
ij_groovy_array_initializer_wrap = off
|
||||
ij_groovy_assert_statement_wrap = off
|
||||
ij_groovy_assignment_wrap = off
|
||||
ij_groovy_binary_operation_wrap = off
|
||||
ij_groovy_blank_lines_after_class_header = 0
|
||||
ij_groovy_blank_lines_after_imports = 1
|
||||
ij_groovy_blank_lines_after_package = 1
|
||||
ij_groovy_blank_lines_around_class = 1
|
||||
ij_groovy_blank_lines_around_field = 0
|
||||
ij_groovy_blank_lines_around_field_in_interface = 0
|
||||
ij_groovy_blank_lines_around_method = 1
|
||||
ij_groovy_blank_lines_around_method_in_interface = 1
|
||||
ij_groovy_blank_lines_before_imports = 1
|
||||
ij_groovy_blank_lines_before_method_body = 0
|
||||
ij_groovy_blank_lines_before_package = 0
|
||||
ij_groovy_block_brace_style = end_of_line
|
||||
ij_groovy_block_comment_at_first_column = true
|
||||
ij_groovy_call_parameters_new_line_after_left_paren = false
|
||||
ij_groovy_call_parameters_right_paren_on_new_line = false
|
||||
ij_groovy_call_parameters_wrap = off
|
||||
ij_groovy_catch_on_new_line = false
|
||||
ij_groovy_class_annotation_wrap = split_into_lines
|
||||
ij_groovy_class_brace_style = end_of_line
|
||||
ij_groovy_class_count_to_use_import_on_demand = 5
|
||||
ij_groovy_do_while_brace_force = never
|
||||
ij_groovy_else_on_new_line = false
|
||||
ij_groovy_enum_constants_wrap = off
|
||||
ij_groovy_extends_keyword_wrap = off
|
||||
ij_groovy_extends_list_wrap = off
|
||||
ij_groovy_field_annotation_wrap = split_into_lines
|
||||
ij_groovy_finally_on_new_line = false
|
||||
ij_groovy_for_brace_force = never
|
||||
ij_groovy_for_statement_new_line_after_left_paren = false
|
||||
ij_groovy_for_statement_right_paren_on_new_line = false
|
||||
ij_groovy_for_statement_wrap = off
|
||||
ij_groovy_if_brace_force = never
|
||||
ij_groovy_import_annotation_wrap = 2
|
||||
ij_groovy_imports_layout = *,|,javax.**,java.**,|,$*
|
||||
ij_groovy_indent_case_from_switch = true
|
||||
ij_groovy_indent_label_blocks = true
|
||||
ij_groovy_insert_inner_class_imports = false
|
||||
ij_groovy_keep_blank_lines_before_right_brace = 2
|
||||
ij_groovy_keep_blank_lines_in_code = 2
|
||||
ij_groovy_keep_blank_lines_in_declarations = 2
|
||||
ij_groovy_keep_control_statement_in_one_line = true
|
||||
ij_groovy_keep_first_column_comment = true
|
||||
ij_groovy_keep_indents_on_empty_lines = false
|
||||
ij_groovy_keep_line_breaks = true
|
||||
ij_groovy_keep_multiple_expressions_in_one_line = false
|
||||
ij_groovy_keep_simple_blocks_in_one_line = false
|
||||
ij_groovy_keep_simple_classes_in_one_line = true
|
||||
ij_groovy_keep_simple_lambdas_in_one_line = true
|
||||
ij_groovy_keep_simple_methods_in_one_line = true
|
||||
ij_groovy_label_indent_absolute = false
|
||||
ij_groovy_label_indent_size = 0
|
||||
ij_groovy_lambda_brace_style = end_of_line
|
||||
ij_groovy_layout_static_imports_separately = true
|
||||
ij_groovy_line_comment_add_space = false
|
||||
ij_groovy_line_comment_at_first_column = true
|
||||
ij_groovy_method_annotation_wrap = split_into_lines
|
||||
ij_groovy_method_brace_style = end_of_line
|
||||
ij_groovy_method_call_chain_wrap = off
|
||||
ij_groovy_method_parameters_new_line_after_left_paren = false
|
||||
ij_groovy_method_parameters_right_paren_on_new_line = false
|
||||
ij_groovy_method_parameters_wrap = off
|
||||
ij_groovy_modifier_list_wrap = false
|
||||
ij_groovy_names_count_to_use_import_on_demand = 3
|
||||
ij_groovy_parameter_annotation_wrap = off
|
||||
ij_groovy_parentheses_expression_new_line_after_left_paren = false
|
||||
ij_groovy_parentheses_expression_right_paren_on_new_line = false
|
||||
ij_groovy_prefer_parameters_wrap = false
|
||||
ij_groovy_resource_list_new_line_after_left_paren = false
|
||||
ij_groovy_resource_list_right_paren_on_new_line = false
|
||||
ij_groovy_resource_list_wrap = off
|
||||
ij_groovy_space_after_assert_separator = true
|
||||
ij_groovy_space_after_colon = true
|
||||
ij_groovy_space_after_comma = true
|
||||
ij_groovy_space_after_comma_in_type_arguments = true
|
||||
ij_groovy_space_after_for_semicolon = true
|
||||
ij_groovy_space_after_quest = true
|
||||
ij_groovy_space_after_type_cast = true
|
||||
ij_groovy_space_before_annotation_parameter_list = false
|
||||
ij_groovy_space_before_array_initializer_left_brace = false
|
||||
ij_groovy_space_before_assert_separator = false
|
||||
ij_groovy_space_before_catch_keyword = true
|
||||
ij_groovy_space_before_catch_left_brace = true
|
||||
ij_groovy_space_before_catch_parentheses = true
|
||||
ij_groovy_space_before_class_left_brace = true
|
||||
ij_groovy_space_before_closure_left_brace = true
|
||||
ij_groovy_space_before_colon = true
|
||||
ij_groovy_space_before_comma = false
|
||||
ij_groovy_space_before_do_left_brace = true
|
||||
ij_groovy_space_before_else_keyword = true
|
||||
ij_groovy_space_before_else_left_brace = true
|
||||
ij_groovy_space_before_finally_keyword = true
|
||||
ij_groovy_space_before_finally_left_brace = true
|
||||
ij_groovy_space_before_for_left_brace = true
|
||||
ij_groovy_space_before_for_parentheses = true
|
||||
ij_groovy_space_before_for_semicolon = false
|
||||
ij_groovy_space_before_if_left_brace = true
|
||||
ij_groovy_space_before_if_parentheses = true
|
||||
ij_groovy_space_before_method_call_parentheses = false
|
||||
ij_groovy_space_before_method_left_brace = true
|
||||
ij_groovy_space_before_method_parentheses = false
|
||||
ij_groovy_space_before_quest = true
|
||||
ij_groovy_space_before_switch_left_brace = true
|
||||
ij_groovy_space_before_switch_parentheses = true
|
||||
ij_groovy_space_before_synchronized_left_brace = true
|
||||
ij_groovy_space_before_synchronized_parentheses = true
|
||||
ij_groovy_space_before_try_left_brace = true
|
||||
ij_groovy_space_before_try_parentheses = true
|
||||
ij_groovy_space_before_while_keyword = true
|
||||
ij_groovy_space_before_while_left_brace = true
|
||||
ij_groovy_space_before_while_parentheses = true
|
||||
ij_groovy_space_in_named_argument = true
|
||||
ij_groovy_space_in_named_argument_before_colon = false
|
||||
ij_groovy_space_within_empty_array_initializer_braces = false
|
||||
ij_groovy_space_within_empty_method_call_parentheses = false
|
||||
ij_groovy_spaces_around_additive_operators = true
|
||||
ij_groovy_spaces_around_assignment_operators = true
|
||||
ij_groovy_spaces_around_bitwise_operators = true
|
||||
ij_groovy_spaces_around_equality_operators = true
|
||||
ij_groovy_spaces_around_lambda_arrow = true
|
||||
ij_groovy_spaces_around_logical_operators = true
|
||||
ij_groovy_spaces_around_multiplicative_operators = true
|
||||
ij_groovy_spaces_around_regex_operators = true
|
||||
ij_groovy_spaces_around_relational_operators = true
|
||||
ij_groovy_spaces_around_shift_operators = true
|
||||
ij_groovy_spaces_within_annotation_parentheses = false
|
||||
ij_groovy_spaces_within_array_initializer_braces = false
|
||||
ij_groovy_spaces_within_braces = true
|
||||
ij_groovy_spaces_within_brackets = false
|
||||
ij_groovy_spaces_within_cast_parentheses = false
|
||||
ij_groovy_spaces_within_catch_parentheses = false
|
||||
ij_groovy_spaces_within_for_parentheses = false
|
||||
ij_groovy_spaces_within_gstring_injection_braces = false
|
||||
ij_groovy_spaces_within_if_parentheses = false
|
||||
ij_groovy_spaces_within_list_or_map = false
|
||||
ij_groovy_spaces_within_method_call_parentheses = false
|
||||
ij_groovy_spaces_within_method_parentheses = false
|
||||
ij_groovy_spaces_within_parentheses = false
|
||||
ij_groovy_spaces_within_switch_parentheses = false
|
||||
ij_groovy_spaces_within_synchronized_parentheses = false
|
||||
ij_groovy_spaces_within_try_parentheses = false
|
||||
ij_groovy_spaces_within_tuple_expression = false
|
||||
ij_groovy_spaces_within_while_parentheses = false
|
||||
ij_groovy_special_else_if_treatment = true
|
||||
ij_groovy_ternary_operation_wrap = off
|
||||
ij_groovy_throws_keyword_wrap = off
|
||||
ij_groovy_throws_list_wrap = off
|
||||
ij_groovy_use_flying_geese_braces = false
|
||||
ij_groovy_use_fq_class_names = false
|
||||
ij_groovy_use_fq_class_names_in_javadoc = true
|
||||
ij_groovy_use_relative_indents = false
|
||||
ij_groovy_use_single_class_imports = true
|
||||
ij_groovy_variable_annotation_wrap = off
|
||||
ij_groovy_while_brace_force = never
|
||||
ij_groovy_while_on_new_line = false
|
||||
ij_groovy_wrap_long_lines = false
|
||||
|
||||
[{*.gradle.kts,*.kt,*.kts,*.main.kts}]
|
||||
ij_kotlin_align_in_columns_case_branch = false
|
||||
ij_kotlin_align_multiline_binary_operation = false
|
||||
ij_kotlin_align_multiline_extends_list = false
|
||||
ij_kotlin_align_multiline_method_parentheses = false
|
||||
ij_kotlin_align_multiline_parameters = true
|
||||
ij_kotlin_align_multiline_parameters_in_calls = false
|
||||
ij_kotlin_allow_trailing_comma = false
|
||||
ij_kotlin_allow_trailing_comma_on_call_site = false
|
||||
ij_kotlin_assignment_wrap = off
|
||||
ij_kotlin_blank_lines_after_class_header = 0
|
||||
ij_kotlin_blank_lines_around_block_when_branches = 0
|
||||
ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1
|
||||
ij_kotlin_block_comment_at_first_column = true
|
||||
ij_kotlin_call_parameters_new_line_after_left_paren = false
|
||||
ij_kotlin_call_parameters_right_paren_on_new_line = false
|
||||
ij_kotlin_call_parameters_wrap = off
|
||||
ij_kotlin_catch_on_new_line = false
|
||||
ij_kotlin_class_annotation_wrap = off
|
||||
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
|
||||
ij_kotlin_continuation_indent_for_chained_calls = true
|
||||
ij_kotlin_continuation_indent_for_expression_bodies = true
|
||||
ij_kotlin_continuation_indent_in_argument_lists = true
|
||||
ij_kotlin_continuation_indent_in_elvis = true
|
||||
ij_kotlin_continuation_indent_in_if_conditions = true
|
||||
ij_kotlin_continuation_indent_in_parameter_lists = true
|
||||
ij_kotlin_continuation_indent_in_supertype_lists = true
|
||||
ij_kotlin_else_on_new_line = false
|
||||
ij_kotlin_enum_constants_wrap = off
|
||||
ij_kotlin_extends_list_wrap = off
|
||||
ij_kotlin_field_annotation_wrap = normal
|
||||
ij_kotlin_finally_on_new_line = false
|
||||
ij_kotlin_if_rparen_on_new_line = false
|
||||
ij_kotlin_import_nested_classes = false
|
||||
ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
|
||||
ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
|
||||
ij_kotlin_keep_blank_lines_before_right_brace = 0
|
||||
ij_kotlin_keep_blank_lines_in_code = 1
|
||||
ij_kotlin_keep_blank_lines_in_declarations = 1
|
||||
ij_kotlin_keep_first_column_comment = true
|
||||
ij_kotlin_keep_indents_on_empty_lines = false
|
||||
ij_kotlin_keep_line_breaks = true
|
||||
ij_kotlin_lbrace_on_next_line = false
|
||||
ij_kotlin_line_comment_add_space = false
|
||||
ij_kotlin_line_comment_at_first_column = true
|
||||
ij_kotlin_method_annotation_wrap = split_into_lines
|
||||
ij_kotlin_method_call_chain_wrap = off
|
||||
ij_kotlin_method_parameters_new_line_after_left_paren = true
|
||||
ij_kotlin_method_parameters_right_paren_on_new_line = true
|
||||
ij_kotlin_method_parameters_wrap = off
|
||||
ij_kotlin_name_count_to_use_star_import = 2147483647
|
||||
ij_kotlin_name_count_to_use_star_import_for_members = 2147483647
|
||||
ij_kotlin_packages_to_use_import_on_demand = kotlinx.android.synthetic.**
|
||||
ij_kotlin_parameter_annotation_wrap = off
|
||||
ij_kotlin_space_after_comma = true
|
||||
ij_kotlin_space_after_extend_colon = true
|
||||
ij_kotlin_space_after_type_colon = true
|
||||
ij_kotlin_space_before_catch_parentheses = true
|
||||
ij_kotlin_space_before_comma = false
|
||||
ij_kotlin_space_before_extend_colon = true
|
||||
ij_kotlin_space_before_for_parentheses = true
|
||||
ij_kotlin_space_before_if_parentheses = true
|
||||
ij_kotlin_space_before_lambda_arrow = true
|
||||
ij_kotlin_space_before_type_colon = false
|
||||
ij_kotlin_space_before_when_parentheses = true
|
||||
ij_kotlin_space_before_while_parentheses = true
|
||||
ij_kotlin_spaces_around_additive_operators = true
|
||||
ij_kotlin_spaces_around_assignment_operators = true
|
||||
ij_kotlin_spaces_around_equality_operators = true
|
||||
ij_kotlin_spaces_around_function_type_arrow = true
|
||||
ij_kotlin_spaces_around_logical_operators = true
|
||||
ij_kotlin_spaces_around_multiplicative_operators = true
|
||||
ij_kotlin_spaces_around_range = false
|
||||
ij_kotlin_spaces_around_relational_operators = true
|
||||
ij_kotlin_spaces_around_unary_operator = false
|
||||
ij_kotlin_spaces_around_when_arrow = true
|
||||
ij_kotlin_use_custom_formatting_for_modifiers = true
|
||||
ij_kotlin_variable_annotation_wrap = off
|
||||
ij_kotlin_while_on_new_line = false
|
||||
ij_kotlin_wrap_elvis_expressions = 1
|
||||
ij_kotlin_wrap_expression_body_functions = 0
|
||||
ij_kotlin_wrap_first_method_in_call_chain = false
|
||||
|
||||
[{*.har,*.json}]
|
||||
indent_size = 2
|
||||
ij_json_keep_blank_lines_in_code = 0
|
||||
ij_json_keep_indents_on_empty_lines = false
|
||||
ij_json_keep_line_breaks = true
|
||||
ij_json_space_after_colon = true
|
||||
ij_json_space_after_comma = true
|
||||
ij_json_space_before_colon = true
|
||||
ij_json_space_before_comma = false
|
||||
ij_json_spaces_within_braces = false
|
||||
ij_json_spaces_within_brackets = false
|
||||
ij_json_wrap_long_lines = false
|
||||
|
||||
[{*.htm,*.html,*.sht,*.shtm,*.shtml}]
|
||||
ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
|
||||
ij_html_align_attributes = true
|
||||
ij_html_align_text = false
|
||||
ij_html_attribute_wrap = normal
|
||||
ij_html_block_comment_at_first_column = true
|
||||
ij_html_do_not_align_children_of_min_lines = 0
|
||||
ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p
|
||||
ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot
|
||||
ij_html_enforce_quotes = false
|
||||
ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var
|
||||
ij_html_keep_blank_lines = 2
|
||||
ij_html_keep_indents_on_empty_lines = false
|
||||
ij_html_keep_line_breaks = true
|
||||
ij_html_keep_line_breaks_in_text = true
|
||||
ij_html_keep_whitespaces = false
|
||||
ij_html_keep_whitespaces_inside = span,pre,textarea
|
||||
ij_html_line_comment_at_first_column = true
|
||||
ij_html_new_line_after_last_attribute = never
|
||||
ij_html_new_line_before_first_attribute = never
|
||||
ij_html_quote_style = double
|
||||
ij_html_remove_new_line_before_tags = br
|
||||
ij_html_space_after_tag_name = false
|
||||
ij_html_space_around_equality_in_attribute = false
|
||||
ij_html_space_inside_empty_tag = false
|
||||
ij_html_text_wrap = normal
|
||||
ij_html_uniform_ident = false
|
||||
|
||||
[{*.yaml,*.yml}]
|
||||
indent_size = 2
|
||||
ij_yaml_align_values_properties = do_not_align
|
||||
ij_yaml_autoinsert_sequence_marker = true
|
||||
ij_yaml_block_mapping_on_new_line = false
|
||||
ij_yaml_indent_sequence_value = true
|
||||
ij_yaml_keep_indents_on_empty_lines = false
|
||||
ij_yaml_keep_line_breaks = true
|
||||
ij_yaml_sequence_on_new_line = false
|
||||
ij_yaml_space_before_colon = false
|
||||
ij_yaml_spaces_within_braces = true
|
||||
ij_yaml_spaces_within_brackets = true
|
||||
|
11
.github/ISSUE_TEMPLATE/bug.yml
vendored
11
.github/ISSUE_TEMPLATE/bug.yml
vendored
@@ -73,3 +73,14 @@ body:
|
||||
- 'No'
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: pr
|
||||
attributes:
|
||||
label: Are you willing to provide a PR?
|
||||
description: |
|
||||
Providing a PR can drastically speed up the process of fixing this bug. Don't worry, it's still OK to answer 'No' :).
|
||||
options:
|
||||
- 'Yes'
|
||||
- 'No'
|
||||
validations:
|
||||
required: true
|
||||
|
11
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
11
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
@@ -34,3 +34,14 @@ body:
|
||||
placeholder: Is there anything else you'd like to add?
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: pr
|
||||
attributes:
|
||||
label: Are you willing to provide a PR?
|
||||
description: |
|
||||
Don't worry, it's still OK to answer 'No' :).
|
||||
options:
|
||||
- 'Yes'
|
||||
- 'No'
|
||||
validations:
|
||||
required: true
|
||||
|
40
.github/ISSUE_TEMPLATE/release.yml
vendored
40
.github/ISSUE_TEMPLATE/release.yml
vendored
@@ -18,11 +18,13 @@ body:
|
||||
|
||||
- [ ] Weblate sync, fix lint issue if any (in a dedicated PR)
|
||||
- [ ] Check the update of the store descriptions (using Google Translate if necessary) to ensure that the changes are acceptable to be published to the stores.
|
||||
- [ ] While Weblate is locked, and after the PR from Weblate has been merged, handle all the TODOs in the main `strings.xml` file
|
||||
- [ ] Run the script `./tools/release/pushPlayStoreMetaData.sh`. You can check in the GooglePlay console the Activity log to check the effect.
|
||||
|
||||
### Do the release
|
||||
|
||||
- [ ] Create release with gitflow, branch name `release/1.2.3`
|
||||
- [ ] Make sure `develop` and `main` are up to date (git pull)
|
||||
- [ ] Checkout develop and create a release with gitflow, branch name `release/1.2.3`
|
||||
- [ ] Check the crashes from the PlayStore
|
||||
- [ ] Check the rageshake with the current dev version: https://github.com/matrix-org/element-android-rageshakes/labels/1.2.3-dev
|
||||
- [ ] Run the integration test, and especially `UiAllScreensSanityTest.allScreensTest()`
|
||||
@@ -47,24 +49,34 @@ body:
|
||||
|
||||
### Once tested and validated internally
|
||||
|
||||
- [ ] Create a new beta release on the GooglePlay console and upload the 4 signed Apks.
|
||||
- [ ] Create a new open testing release on the GooglePlay console and upload the 4 signed Apks.
|
||||
- [ ] Check that the version codes are correct
|
||||
- [ ] Copy the fastlane change to the GooglePlay console in the section en-GB.
|
||||
- [ ] Push to beta release to 100% of the users
|
||||
- [ ] Notify the F-Droid team so that they can schedule the publication on F-Droid
|
||||
- [ ] Push the open testing release to 100% of the users
|
||||
- [ ] Notify the F-Droid team [here](https://matrix.to/#/!LAAuJLQXYHjMNWKrCK:matrix.org?via=matrix.org&via=bubu1.eu&via=lant.uk) so that they can schedule the publication on F-Droid
|
||||
- [ ] The application is available to the PlayStore testers (live). Google can take between 1 hour and up to 7 days to approve the release.
|
||||
- [ ] The application is available to the F-Droid users.
|
||||
|
||||
### Once Live on PlayStore
|
||||
### Once open testing is live on PlayStore
|
||||
|
||||
- [ ] Ping the Android public room and update its topic
|
||||
- [ ] Add an entry in the internal diary
|
||||
|
||||
### After at least 2 days
|
||||
### Once Live on F-Droid
|
||||
|
||||
- [ ] Update the Android public room topic
|
||||
|
||||
### After at least 2 days (generally next Monday)
|
||||
|
||||
- [ ] Check the [rageshakes](https://github.com/matrix-org/element-android-rageshakes/issues)
|
||||
- [ ] Check the crash reports on the GooglePlay console
|
||||
- [ ] Check the Android Element room for any reported issues on the new version
|
||||
- [ ] If all is OK, push to production and notify Markus (Bubu) to release the F-Droid version
|
||||
- [ ] Ping the Android public room and update its topic with the new available version
|
||||
- [ ] If all is OK, promote the open testing release to production. Generally using a 100% roll out, but can be a smaller value depending on the release content.
|
||||
- [ ] The application is available to the PlayStore users (live). Google can take (again!) between 1 hour and up to 7 days to approve the release.
|
||||
|
||||
### Once production is live on PlayStore
|
||||
|
||||
- [ ] Ping the Android public room and update its topic
|
||||
- [ ] Add an entry in the internal diary
|
||||
|
||||
### Android SDK2
|
||||
|
||||
@@ -88,12 +100,20 @@ body:
|
||||
|
||||
##### Release on MavenCentral
|
||||
|
||||
- [ ] Checkout the branch `main`
|
||||
- [ ] Run the command `./gradlew publish --no-daemon --no-parallel`. You'll need some non-public element to do so
|
||||
- [ ] Run the command `./gradlew closeAndReleaseRepository`. If it is working well, you can jump directly to the final step of this section.
|
||||
|
||||
If `./gradlew closeAndReleaseRepository` fails (for instance, several repositories are waiting to be handled), you have to close and release the repository manually. Do the following steps:
|
||||
|
||||
- [ ] Connect to https://s01.oss.sonatype.org
|
||||
- [ ] Click on Staging Repositories and check the the files have been uploaded
|
||||
- [ ] Click on close
|
||||
- [ ] Wait (check Activity tab until step "Repository closed" is displayed)
|
||||
- [ ] Click on release. The staging repository will disappear
|
||||
|
||||
Final step
|
||||
|
||||
- [ ] Check that the release is available in https://repo1.maven.org/maven2/org/matrix/android/matrix-android-sdk2/ (it can take a few minutes)
|
||||
|
||||
##### Release on GitHub
|
||||
@@ -105,7 +125,7 @@ body:
|
||||
|
||||
https://github.com/matrix-org/matrix-android-sdk2-sample
|
||||
|
||||
- [ ] Update the dependency to the new version of the SDK2. It can take some time for MavenCentral to make the librarie available. You can check status on https://repo1.maven.org/maven2/org/matrix/android/matrix-android-sdk2/
|
||||
- [ ] Update the dependency to the new version of the SDK2. It can take a few minutes for MavenCentral to make the library available. You can check status on https://repo1.maven.org/maven2/org/matrix/android/matrix-android-sdk2/
|
||||
- [ ] Build and run the sample, you may have to fix some API break
|
||||
- [ ] Commit and push directly on `main`
|
||||
validations:
|
||||
|
12
.github/PULL_REQUEST_TEMPLATE.md
vendored
12
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -17,7 +17,17 @@
|
||||
|
||||
## Screenshots / GIFs
|
||||
|
||||
<!-- Only if UI have been changed -->
|
||||
<!-- Only if UI have been changed
|
||||
You can use a table like this to show screenshots comparison.
|
||||
Uncomment this markdown table below and edit the last line `|||`:
|
||||
|copy screenshot of before here|copy screenshot of after here|
|
||||
-->
|
||||
|
||||
<!--
|
||||
|Before|After|
|
||||
|-|-|
|
||||
|||
|
||||
-->
|
||||
|
||||
## Tests
|
||||
|
||||
|
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
@@ -10,6 +10,8 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
reviewers:
|
||||
- "vector-im/element-android-reviewers"
|
||||
ignore:
|
||||
- dependency-name: "*github-script*"
|
||||
# Updates for Gradle dependencies used in the app
|
||||
@@ -19,6 +21,6 @@ updates:
|
||||
interval: "daily"
|
||||
open-pull-requests-limit: 200
|
||||
reviewers:
|
||||
- "bmarty"
|
||||
- "vector-im/element-android-reviewers"
|
||||
ignore:
|
||||
- dependency-name: com.google.zxing:core
|
||||
|
42
.github/workflows/build.yml
vendored
42
.github/workflows/build.yml
vendored
@@ -8,8 +8,9 @@ on:
|
||||
# Enrich gradle.properties for CI/CD
|
||||
env:
|
||||
CI_GRADLE_ARG_PROPERTIES: >
|
||||
-Porg.gradle.jvmargs=-Xmx2g
|
||||
-Porg.gradle.jvmargs=-Xmx4g
|
||||
-Porg.gradle.parallel=false
|
||||
--no-daemon
|
||||
|
||||
jobs:
|
||||
debug:
|
||||
@@ -26,7 +27,7 @@ jobs:
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/cache@v2
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
@@ -37,7 +38,7 @@ jobs:
|
||||
- name: Assemble ${{ matrix.target }} debug apk
|
||||
run: ./gradlew assemble${{ matrix.target }}Debug $CI_GRADLE_ARG_PROPERTIES --stacktrace
|
||||
- name: Upload ${{ matrix.target }} debug APKs
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: vector-${{ matrix.target }}-debug
|
||||
path: |
|
||||
@@ -46,11 +47,12 @@ jobs:
|
||||
release:
|
||||
name: Build unsigned GPlay APKs
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref == 'refs/heads/main'
|
||||
# Only runs on main, no concurrency.
|
||||
concurrency:
|
||||
group: ${{ github.ref == 'refs/head/main' && format('build-release-apk-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('build-release-apk-develop-{0}', github.sha) || format('build-debug-{0}', github.ref) }}
|
||||
cancel-in-progress: ${{ github.ref != 'refs/head/main' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/cache@v2
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
@@ -59,12 +61,34 @@ jobs:
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Assemble GPlay unsigned apk
|
||||
run: ./gradlew clean assembleGplayRelease $CI_GRADLE_ARG_PROPERTIES --stacktrace
|
||||
run: ./gradlew clean assembleGplayRelease $CI_GRADLE_ARG_PROPERTIES --stacktrace
|
||||
- name: Upload Gplay unsigned APKs
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: vector-gplay-release-unsigned
|
||||
path: |
|
||||
vector/build/outputs/apk/*/release/*.apk
|
||||
|
||||
# TODO: add exodus checks
|
||||
exodus:
|
||||
runs-on: ubuntu-latest
|
||||
needs: release
|
||||
steps:
|
||||
- name: Obtain apk from artifact
|
||||
id: download
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: vector-gplay-release-unsigned
|
||||
- name: Show apks in artifact
|
||||
run: ls -R ${{steps.download.outputs.download-path}}
|
||||
- name: Execute exodus-standalone
|
||||
uses: docker://exodusprivacy/exodus-standalone:latest
|
||||
with:
|
||||
args: /github/workspace/gplay/release/vector-gplay-universal-release-unsigned.apk -j -o /github/workspace/exodus.json
|
||||
- name: Upload exodus json report
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: exodus.json
|
||||
path: |
|
||||
exodus.json
|
||||
- name: Check for trackers
|
||||
run: "jq -e '.trackers == []' exodus.json > /dev/null || { echo '::error static analysis identified user tracking library' ; exit 1; }"
|
||||
|
22
.github/workflows/docs.yml
vendored
Normal file
22
.github/workflows/docs.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
name: Documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ develop ]
|
||||
|
||||
jobs:
|
||||
docs:
|
||||
name: Generate and publish Android Matrix SDK documentation
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Build docs
|
||||
run: ./gradlew dokkaHtml
|
||||
|
||||
- name: Deploy docs
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: ./matrix-sdk-android/build/dokka/html
|
339
.github/workflows/nightly.yml
vendored
339
.github/workflows/nightly.yml
vendored
@@ -1,339 +0,0 @@
|
||||
name: Nightly Tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ release/* ]
|
||||
schedule:
|
||||
# At 20:00 every day UTC
|
||||
- cron: '0 20 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
# Enrich gradle.properties for CI/CD
|
||||
env:
|
||||
CI_GRADLE_ARG_PROPERTIES: >
|
||||
-Porg.gradle.jvmargs=-Xmx4g
|
||||
-Porg.gradle.parallel=false
|
||||
jobs:
|
||||
# Run Android Tests
|
||||
integration-tests:
|
||||
name: Matrix SDK - Running Integration Tests
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
api-level: [ 28 ]
|
||||
# No concurrency required, runs every time on a schedule.
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: gradle/wrapper-validation-action@v1
|
||||
- uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: 11
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: 3.8
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Start synapse server
|
||||
uses: michaelkaye/setup-matrix-synapse@v0.3.0
|
||||
with:
|
||||
uploadLogs: true
|
||||
httpPort: 8080
|
||||
disableRateLimiting: true
|
||||
# package: org.matrix.android.sdk.session
|
||||
- name: Run integration tests for Matrix SDK [org.matrix.android.sdk.session] API[${{ matrix.api-level }}]
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
emulator-build: 7425822
|
||||
script: |
|
||||
adb root
|
||||
adb logcat -c
|
||||
touch emulator-session.log
|
||||
chmod 777 emulator-session.log
|
||||
adb logcat >> emulator-session.log &
|
||||
./gradlew $CI_GRADLE_ARG_PROPERTIES -Pandroid.testInstrumentationRunnerArguments.package='org.matrix.android.sdk.session' matrix-sdk-android:connectedDebugAndroidTest
|
||||
- name: Read Results [org.matrix.android.sdk.session]
|
||||
if: always()
|
||||
id: get-comment-body-session
|
||||
run: python3 ./tools/ci/render_test_output.py session ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml
|
||||
- name: Remove adb logcat
|
||||
if: always()
|
||||
run: pkill -9 adb
|
||||
- name: Run integration tests for Matrix SDK [org.matrix.android.sdk.account] API[${{ matrix.api-level }}]
|
||||
if: always()
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
emulator-build: 7425822
|
||||
script: |
|
||||
adb root
|
||||
adb logcat -c
|
||||
touch emulator-account.log
|
||||
chmod 777 emulator-account.log
|
||||
adb logcat >> emulator-account.log &
|
||||
./gradlew $CI_GRADLE_ARG_PROPERTIES -Pandroid.testInstrumentationRunnerArguments.package='org.matrix.android.sdk.account' matrix-sdk-android:connectedDebugAndroidTest
|
||||
- name: Read Results [org.matrix.android.sdk.account]
|
||||
if: always()
|
||||
id: get-comment-body-account
|
||||
run: python3 ./tools/ci/render_test_output.py account ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml
|
||||
- name: Remove adb logcat
|
||||
if: always()
|
||||
run: pkill -9 adb
|
||||
# package: org.matrix.android.sdk.internal
|
||||
- name: Run integration tests for Matrix SDK [org.matrix.android.sdk.internal] API[${{ matrix.api-level }}]
|
||||
if: always()
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
emulator-build: 7425822
|
||||
script: |
|
||||
adb root
|
||||
adb logcat -c
|
||||
touch emulator-internal.log
|
||||
chmod 777 emulator-internal.log
|
||||
adb logcat >> emulator-internal.log &
|
||||
./gradlew $CI_GRADLE_ARG_PROPERTIES -Pandroid.testInstrumentationRunnerArguments.package='org.matrix.android.sdk.internal' matrix-sdk-android:connectedDebugAndroidTest
|
||||
- name: Read Results [org.matrix.android.sdk.internal]
|
||||
if: always()
|
||||
id: get-comment-body-internal
|
||||
run: python3 ./tools/ci/render_test_output.py internal ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml
|
||||
- name: Remove adb logcat
|
||||
if: always()
|
||||
run: pkill -9 adb
|
||||
# package: org.matrix.android.sdk.ordering
|
||||
- name: Run integration tests for Matrix SDK [org.matrix.android.sdk.ordering] API[${{ matrix.api-level }}]
|
||||
if: always()
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
emulator-build: 7425822
|
||||
script: |
|
||||
adb root
|
||||
adb logcat -c
|
||||
touch emulator-ordering.log
|
||||
chmod 777 emulator-ordering.log
|
||||
adb logcat >> emulator-ordering.log &
|
||||
./gradlew $CI_GRADLE_ARG_PROPERTIES -Pandroid.testInstrumentationRunnerArguments.package='org.matrix.android.sdk.ordering' matrix-sdk-android:connectedDebugAndroidTest
|
||||
- name: Read Results [org.matrix.android.sdk.ordering]
|
||||
if: always()
|
||||
id: get-comment-body-ordering
|
||||
run: python3 ./tools/ci/render_test_output.py ordering ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml
|
||||
- name: Remove adb logcat
|
||||
if: always()
|
||||
run: pkill -9 adb
|
||||
# package: class PermalinkParserTest
|
||||
- name: Run integration tests for Matrix SDK class [org.matrix.android.sdk.PermalinkParserTest] API[${{ matrix.api-level }}]
|
||||
if: always()
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
emulator-build: 7425822
|
||||
script: |
|
||||
adb root
|
||||
adb logcat -c
|
||||
touch emulator-permalink.log
|
||||
chmod 777 emulator-permalink.log
|
||||
adb logcat >> emulator-permalink.log &
|
||||
./gradlew $CI_GRADLE_ARG_PROPERTIES -Pandroid.testInstrumentationRunnerArguments.class='org.matrix.android.sdk.PermalinkParserTest' matrix-sdk-android:connectedDebugAndroidTest
|
||||
- name: Read Results [org.matrix.android.sdk.PermalinkParserTest]
|
||||
if: always()
|
||||
id: get-comment-body-permalink
|
||||
run: python3 ./tools/ci/render_test_output.py permalink ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml
|
||||
- name: Remove adb logcat
|
||||
if: always()
|
||||
run: pkill -9 adb
|
||||
# package: class PermalinkParserTest
|
||||
- name: Find Comment
|
||||
if: always() && github.event_name == 'pull_request'
|
||||
uses: peter-evans/find-comment@v1
|
||||
id: fc
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
comment-author: 'github-actions[bot]'
|
||||
body-includes: Integration Tests Results
|
||||
- name: Publish results to PR
|
||||
if: always() && github.event_name == 'pull_request'
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
with:
|
||||
comment-id: ${{ steps.fc.outputs.comment-id }}
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
body: |
|
||||
### Matrix SDK
|
||||
## Integration Tests Results:
|
||||
- `[org.matrix.android.sdk.session]`<br>${{ steps.get-comment-body-session.outputs.session }}
|
||||
- `[org.matrix.android.sdk.account]`<br>${{ steps.get-comment-body-account.outputs.account }}
|
||||
- `[org.matrix.android.sdk.internal]`<br>${{ steps.get-comment-body-internal.outputs.internal }}
|
||||
- `[org.matrix.android.sdk.ordering]`<br>${{ steps.get-comment-body-ordering.outputs.ordering }}
|
||||
- `[org.matrix.android.sdk.PermalinkParserTest]`<br>${{ steps.get-comment-body-permalink.outputs.permalink }}
|
||||
edit-mode: replace
|
||||
- name: Upload Test Report Log
|
||||
uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: integrationtest-error-results
|
||||
path: |
|
||||
emulator-permalink.log
|
||||
emulator-internal.log
|
||||
emulator-ordering.log
|
||||
emulator-account.log
|
||||
emulator-session.log
|
||||
|
||||
ui-tests:
|
||||
name: UI Tests (Synapse)
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
api-level: [ 28 ]
|
||||
# No concurrency required, runs every time on a schedule.
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: 3.8
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Start synapse server
|
||||
uses: michaelkaye/setup-matrix-synapse@v0.3.0
|
||||
with:
|
||||
uploadLogs: true
|
||||
httpPort: 8080
|
||||
disableRateLimiting: true
|
||||
- uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
- name: Run sanity tests on API ${{ matrix.api-level }}
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
emulator-build: 7425822 # workaround to emulator bug: https://github.com/ReactiveCircus/android-emulator-runner/issues/160
|
||||
script: |
|
||||
adb root
|
||||
adb logcat -c
|
||||
touch emulator.log
|
||||
chmod 777 emulator.log
|
||||
adb logcat >> emulator.log &
|
||||
./gradlew $CI_GRADLE_ARG_PROPERTIES connectedGplayDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=im.vector.app.ui.UiAllScreensSanityTest || (adb pull storage/emulated/0/Pictures/failure_screenshots && exit 1 )
|
||||
- name: Upload Test Report Log
|
||||
uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: uitest-error-results
|
||||
path: |
|
||||
emulator.log
|
||||
failure_screenshots/
|
||||
|
||||
codecov-units:
|
||||
name: Unit tests with code coverage
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- run: ./gradlew allCodeCoverageReport $CI_GRADLE_ARG_PROPERTIES
|
||||
- name: Upload Codecov data
|
||||
uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: codecov-xml
|
||||
path: |
|
||||
build/reports/jacoco/allCodeCoverageReport/allCodeCoverageReport.xml
|
||||
|
||||
sonarqube:
|
||||
name: Sonarqube upload
|
||||
runs-on: macos-latest
|
||||
if: always()
|
||||
needs:
|
||||
- codecov-units
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: codecov-xml # will restore to allCodeCoverageReport.xml by default; we restore to the same location in following tasks
|
||||
- run: mkdir -p build/reports/jacoco/allCodeCoverageReport/
|
||||
- run: mv allCodeCoverageReport.xml build/reports/jacoco/allCodeCoverageReport/
|
||||
- run: ./gradlew sonarqube $CI_GRADLE_ARG_PROPERTIES
|
||||
env:
|
||||
ORG_GRADLE_PROJECT_SONAR_LOGIN: ${{ secrets.SONAR_TOKEN }}
|
||||
|
||||
# Notify the channel about scheduled runs, do not notify for manually triggered runs
|
||||
notify:
|
||||
name: Notify matrix
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- integration-tests
|
||||
- ui-tests
|
||||
- sonarqube
|
||||
if: always() && github.event_name != 'workflow_dispatch'
|
||||
# No concurrency required, runs every time on a schedule.
|
||||
steps:
|
||||
- uses: michaelkaye/matrix-hookshot-action@v0.3.0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
matrix_access_token: ${{ secrets.ELEMENT_ANDROID_NOTIFICATION_ACCESS_TOKEN }}
|
||||
matrix_room_id: ${{ secrets.ELEMENT_ANDROID_INTERNAL_ROOM_ID }}
|
||||
text_template: "Nightly test run: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
|
||||
html_template: "Nightly test run results: {{#each job_statuses }}{{#with this }}{{#if completed }}<br />{{icon conclusion}} {{name}} <font color='{{color conclusion}}'>{{conclusion}} at {{completed_at}} <a href=\"{{html_url}}\">[details]</a></font>{{/if}}{{/with}}{{/each}}"
|
107
.github/workflows/post-pr.yml
vendored
Normal file
107
.github/workflows/post-pr.yml
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
name: Integration Tests
|
||||
|
||||
# This runs for all closed pull requests against main, including those closed without merge.
|
||||
# Further filtering occurs in 'should-i-run'
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [closed]
|
||||
branches: [develop]
|
||||
|
||||
# Enrich gradle.properties for CI/CD
|
||||
env:
|
||||
CI_GRADLE_ARG_PROPERTIES: >
|
||||
-Porg.gradle.jvmargs=-Xmx4g
|
||||
-Porg.gradle.parallel=false
|
||||
--no-daemon
|
||||
|
||||
jobs:
|
||||
|
||||
# More info on should-i-run:
|
||||
# If this fails to run (the IF doesn't complete) then the needs will not be satisfied for any of the
|
||||
# other jobs below, so none will run.
|
||||
# except for the notification job at the bottom which will run all the time, unless should-i-run isn't
|
||||
# successful, or all the other jobs have succeeded
|
||||
|
||||
should-i-run:
|
||||
name: Check if PR is suitable for analysis
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.merged # Additionally require PR to have been completely merged.
|
||||
steps:
|
||||
- run: echo "Run those tests!" # no-op success
|
||||
|
||||
ui-tests:
|
||||
name: UI Tests (Synapse)
|
||||
needs: should-i-run
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
api-level: [ 28 ]
|
||||
# No concurrency required, runs every time on a schedule.
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Start synapse server
|
||||
uses: michaelkaye/setup-matrix-synapse@v1.0.3
|
||||
with:
|
||||
uploadLogs: true
|
||||
httpPort: 8080
|
||||
disableRateLimiting: true
|
||||
public_baseurl: "http://10.0.2.2:8080/"
|
||||
- uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
- name: Run sanity tests on API ${{ matrix.api-level }}
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
with:
|
||||
api-level: ${{ matrix.api-level }}
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
emulator-build: 7425822 # workaround to emulator bug: https://github.com/ReactiveCircus/android-emulator-runner/issues/160
|
||||
script: |
|
||||
adb root
|
||||
adb logcat -c
|
||||
touch emulator.log
|
||||
chmod 777 emulator.log
|
||||
adb logcat >> emulator.log &
|
||||
./gradlew $CI_GRADLE_ARG_PROPERTIES connectedGplayDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=im.vector.app.ui.UiAllScreensSanityTest || (adb pull storage/emulated/0/Pictures/failure_screenshots && exit 1 )
|
||||
- name: Upload Test Report Log
|
||||
uses: actions/upload-artifact@v3
|
||||
if: always()
|
||||
with:
|
||||
name: uitest-error-results
|
||||
path: |
|
||||
emulator.log
|
||||
failure_screenshots/
|
||||
|
||||
# Notify the channel about delayed failures
|
||||
notify:
|
||||
name: Notify matrix
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- should-i-run
|
||||
- ui-tests
|
||||
if: always() && (needs.should-i-run.result == 'success' ) && ((needs.codecov-units.result != 'success' ) || (needs.ui-tests.result != 'success') || (needs.integration-tests.result != 'success'))
|
||||
# No concurrency required, runs every time on a schedule.
|
||||
steps:
|
||||
- uses: michaelkaye/matrix-hookshot-action@v1.0.0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
hookshot_url: ${{ secrets.ELEMENT_ANDROID_HOOKSHOT_URL }}
|
||||
text_template: "Post-merge validation of ${{ github.head_ref }} into ${{ github.base_ref }} by ${{ github.event.pull_request.merged_by.login }} failed: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
|
||||
html_template: "Post-merge validation of ${{ github.head_ref }} into ${{ github.base_ref }} by ${{ github.event.pull_request.merged_by.login }} failed: {{#each job_statuses }}{{#with this }}{{#if completed }}<br />{{icon conclusion}} {{name}} <font color='{{color conclusion}}'>{{conclusion}} at {{completed_at}} <a href=\"{{html_url}}\">[details]</a></font>{{/if}}{{/with}}{{/each}}"
|
74
.github/workflows/quality.yml
vendored
74
.github/workflows/quality.yml
vendored
@@ -5,6 +5,13 @@ on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
|
||||
# Enrich gradle.properties for CI/CD
|
||||
env:
|
||||
CI_GRADLE_ARG_PROPERTIES: >
|
||||
-Porg.gradle.jvmargs=-Xmx4g
|
||||
-Porg.gradle.parallel=false
|
||||
--no-daemon
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Project Check Suite
|
||||
@@ -14,6 +21,16 @@ jobs:
|
||||
- name: Run code quality check suite
|
||||
run: ./tools/check/check_code_quality.sh
|
||||
|
||||
# Knit for all the modules (https://github.com/Kotlin/kotlinx-knit)
|
||||
knit:
|
||||
name: Knit
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Run knit
|
||||
run: |
|
||||
./gradlew knit
|
||||
|
||||
# ktlint for all the modules
|
||||
ktlint:
|
||||
name: Kotlin Linter
|
||||
@@ -29,7 +46,7 @@ jobs:
|
||||
./gradlew ktlintCheck --continue
|
||||
- name: Upload reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ktlinting-report
|
||||
path: |
|
||||
@@ -59,7 +76,7 @@ jobs:
|
||||
fi
|
||||
- name: Find Comment
|
||||
if: always() && github.event_name == 'pull_request'
|
||||
uses: peter-evans/find-comment@v1
|
||||
uses: peter-evans/find-comment@v2
|
||||
id: fc
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
@@ -67,7 +84,7 @@ jobs:
|
||||
body-includes: Ktlint Results
|
||||
- name: Add comment if needed
|
||||
if: always() && github.event_name == 'pull_request' && steps.ktlint-results.outputs.add_comment == 'true'
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
with:
|
||||
comment-id: ${{ steps.fc.outputs.comment-id }}
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
@@ -87,6 +104,25 @@ jobs:
|
||||
comment_id: ${{ steps.fc.outputs.comment-id }}
|
||||
})
|
||||
|
||||
# Gradle dependency analysis using https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin
|
||||
dependency-analysis:
|
||||
name: Dependency analysis
|
||||
runs-on: ubuntu-latest
|
||||
# Allow all jobs on main and develop. Just one per PR.
|
||||
concurrency:
|
||||
group: ${{ github.ref == 'refs/heads/main' && format('dep-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('dep-develop-{0}', github.sha) || format('dep-{0}', github.ref) }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Dependency analysis
|
||||
run: ./gradlew dependencyCheckAnalyze $CI_GRADLE_ARG_PROPERTIES
|
||||
- name: Upload dependency analysis
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: dependency-analysis
|
||||
path: build/reports/dependency-check-report.html
|
||||
|
||||
# Lint for main module
|
||||
android-lint:
|
||||
name: Android Linter
|
||||
@@ -97,7 +133,7 @@ jobs:
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/cache@v2
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
@@ -106,10 +142,10 @@ jobs:
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Lint analysis
|
||||
run: ./gradlew clean :vector:lint --stacktrace
|
||||
run: ./gradlew clean :vector:lint --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
- name: Upload reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: lint-report
|
||||
path: |
|
||||
@@ -130,7 +166,7 @@ jobs:
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/cache@v2
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
@@ -139,11 +175,31 @@ jobs:
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Lint ${{ matrix.target }} release
|
||||
run: ./gradlew clean lint${{ matrix.target }}Release --stacktrace
|
||||
run: ./gradlew clean lint${{ matrix.target }}Release --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
- name: Upload ${{ matrix.target }} linting report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: release-lint-report-${{ matrix.target }}
|
||||
path: |
|
||||
vector/build/reports/*.*
|
||||
|
||||
detekt:
|
||||
name: Detekt Analysis
|
||||
runs-on: ubuntu-latest
|
||||
# Allow all jobs on main and develop. Just one per PR.
|
||||
concurrency:
|
||||
group: ${{ github.ref == 'refs/heads/main' && format('detekt-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('detekt-develop-{0}', github.sha) || format('detekt-{0}', github.ref) }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Run detekt
|
||||
run: |
|
||||
./gradlew detekt $CI_GRADLE_ARG_PROPERTIES
|
||||
- name: Upload reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: detekt-report
|
||||
path: |
|
||||
*/build/reports/detekt/detekt.html
|
||||
|
10
.github/workflows/sync-from-external-sources.yml
vendored
10
.github/workflows/sync-from-external-sources.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v3
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
- name: Install Prerequisite dependencies
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
- name: Run Emoji script
|
||||
run: ./tools/import_emojis.py
|
||||
- name: Create Pull Request for Emojis
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
with:
|
||||
commit-message: Sync Emojis
|
||||
title: Sync Emojis
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v3
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
- name: Install Prerequisite dependencies
|
||||
@@ -49,7 +49,7 @@ jobs:
|
||||
- name: Run SAS String script
|
||||
run: ./tools/import_sas_strings.py
|
||||
- name: Create Pull Request for SAS Strings
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
with:
|
||||
commit-message: Sync SAS Strings
|
||||
title: Sync SAS Strings
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
- name: Run analytics import script
|
||||
run: ./tools/import_analytic_plan.sh
|
||||
- name: Create Pull Request for analytics plan
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
with:
|
||||
commit-message: Sync analytics plan
|
||||
title: Sync analytics plan
|
||||
|
152
.github/workflows/tests.yml
vendored
152
.github/workflows/tests.yml
vendored
@@ -8,77 +8,111 @@ on:
|
||||
# Enrich gradle.properties for CI/CD
|
||||
env:
|
||||
CI_GRADLE_ARG_PROPERTIES: >
|
||||
-Porg.gradle.jvmargs=-Xmx2g
|
||||
-Porg.gradle.jvmargs=-Xmx4g
|
||||
-Porg.gradle.parallel=false
|
||||
--no-daemon
|
||||
|
||||
jobs:
|
||||
# Build Android Tests
|
||||
build-android-tests:
|
||||
name: Build Android Tests
|
||||
runs-on: ubuntu-latest
|
||||
concurrency:
|
||||
group: ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('build-android-tests-{0}', github.ref) }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: 11
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Build Android Tests
|
||||
run: ./gradlew clean assembleAndroidTest $CI_GRADLE_ARG_PROPERTIES --stacktrace
|
||||
|
||||
unit-tests:
|
||||
name: Run Unit Tests
|
||||
runs-on: ubuntu-latest
|
||||
tests:
|
||||
name: Runs all tests
|
||||
runs-on: macos-latest # for the emulator
|
||||
# Allow all jobs on main and develop. Just one per PR.
|
||||
concurrency:
|
||||
group: ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('unit-tests-{0}', github.ref) }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
- name: Run unit tests
|
||||
run: ./gradlew clean test $CI_GRADLE_ARG_PROPERTIES --stacktrace
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
- uses: gradle/gradle-build-action@v2
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
- uses: michaelkaye/setup-matrix-synapse@v1.0.3
|
||||
with:
|
||||
uploadLogs: true
|
||||
httpPort: 8080
|
||||
disableRateLimiting: true
|
||||
public_baseurl: "http://10.0.2.2:8080/"
|
||||
- name: Run all the codecoverage tests at once
|
||||
id: tests
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
continue-on-error: true
|
||||
with:
|
||||
api-level: 28
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
disable-animations: true
|
||||
emulator-build: 7425822
|
||||
script: |
|
||||
./gradlew unitTestsWithCoverage --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
./gradlew instrumentationTestsWithCoverage --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
./gradlew generateCoverageReport --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
# NB: continue-on-error marks steps.tests.conclusion = 'success' but leaves stes.tests.outcome = 'failure'
|
||||
- name: Run all the codecoverage tests at once (retry if emulator failed)
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
if: always() && steps.tests.outcome == 'failure' # don't run if previous step succeeded.
|
||||
with:
|
||||
api-level: 28
|
||||
arch: x86
|
||||
profile: Nexus 5X
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||
disable-animations: true
|
||||
emulator-build: 7425822
|
||||
script: |
|
||||
./gradlew unitTestsWithCoverage --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
./gradlew instrumentationTestsWithCoverage --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
./gradlew generateCoverageReport --stacktrace $CI_GRADLE_ARG_PROPERTIES
|
||||
- run: ./gradlew sonarqube $CI_GRADLE_ARG_PROPERTIES
|
||||
if: always() # we may have failed a previous step and retried, that's OK
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
|
||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||
ORG_GRADLE_PROJECT_SONAR_LOGIN: ${{ secrets.SONAR_TOKEN }}
|
||||
|
||||
- name: Format unit test results
|
||||
if: always()
|
||||
run: python3 ./tools/ci/render_test_output.py unit ./**/build/test-results/**/*.xml
|
||||
- name: Publish Unit Test Results
|
||||
uses: EnricoMi/publish-unit-test-result-action@v1
|
||||
if: always() &&
|
||||
github.event.sender.login != 'dependabot[bot]' &&
|
||||
( github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository )
|
||||
with:
|
||||
files: ./**/build/test-results/**/*.xml
|
||||
|
||||
# Notify the channel about runs against develop or main that have failures, as PRs should have caught these first.
|
||||
notify:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- unit-tests
|
||||
- build-android-tests
|
||||
if: ${{ (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' ) && failure() }}
|
||||
steps:
|
||||
- uses: michaelkaye/matrix-hookshot-action@v0.3.0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
matrix_access_token: ${{ secrets.ELEMENT_ANDROID_NOTIFICATION_ACCESS_TOKEN }}
|
||||
matrix_room_id: ${{ secrets.ELEMENT_ANDROID_INTERNAL_ROOM_ID }}
|
||||
text_template: "Build is broken for ${{ github.ref }}: {{#each job_statuses }}{{#with this }}{{#if completed }}{{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
|
||||
html_template: "Build is broken for ${{ github.ref }}: {{#each job_statuses }}{{#with this }}{{#if completed }}<br />{{icon conclusion }} {{name}} <font color='{{color conclusion }}'>{{conclusion}} at {{completed_at}} <a href=\"{{html_url}}\">[details]</a></font>{{/if}}{{/with}}{{/each}}"
|
||||
# can't be run on macos due to containers.
|
||||
# - name: Publish Unit Test Results
|
||||
# uses: EnricoMi/publish-unit-test-result-action@v1
|
||||
# if: always() &&
|
||||
# github.event.sender.login != 'dependabot[bot]' &&
|
||||
# ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository )
|
||||
# with:
|
||||
# files: ./**/build/test-results/**/*.xml
|
||||
|
||||
# Unneeded as part of the test suite above, kept around in case we want to re-enable them.
|
||||
#
|
||||
# # Build Android Tests
|
||||
# build-android-tests:
|
||||
# name: Build Android Tests
|
||||
# runs-on: ubuntu-latest
|
||||
# concurrency:
|
||||
# group: ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('build-android-tests-{0}', github.ref) }}
|
||||
# cancel-in-progress: true
|
||||
# steps:
|
||||
# - uses: actions/checkout@v3
|
||||
# - uses: actions/setup-java@v3
|
||||
# with:
|
||||
# distribution: 'adopt'
|
||||
# java-version: 11
|
||||
# - uses: actions/cache@v3
|
||||
# with:
|
||||
# path: |
|
||||
# ~/.gradle/caches
|
||||
# ~/.gradle/wrapper
|
||||
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-gradle-
|
||||
# - name: Build Android Tests
|
||||
# run: ./gradlew clean assembleAndroidTest $CI_GRADLE_ARG_PROPERTIES --stacktrace
|
||||
|
||||
|
55
.github/workflows/triage-labelled.yml
vendored
55
.github/workflows/triage-labelled.yml
vendored
@@ -9,16 +9,15 @@ jobs:
|
||||
name: Add Z-Labs label for features behind labs flags
|
||||
runs-on: ubuntu-latest
|
||||
if: >
|
||||
contains(github.event.issue.labels.*.name, 'A-Maths') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Message-Pinning') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Threads') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Polls') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Message-Bubbles') ||
|
||||
contains(github.event.issue.labels.*.name, 'Z-IA') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Themes-Custom') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Tags')
|
||||
contains(github.event.issue.labels.*.name, 'A-Maths') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Message-Pinning') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Polls') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Location-Sharing') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Message-Bubbles') ||
|
||||
contains(github.event.issue.labels.*.name, 'Z-IA') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Themes-Custom') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Tags')
|
||||
steps:
|
||||
- uses: actions/github-script@v5
|
||||
with:
|
||||
@@ -80,7 +79,7 @@ jobs:
|
||||
name: X-Needs-Product to Design project board
|
||||
runs-on: ubuntu-latest
|
||||
if: >
|
||||
contains(github.event.issue.labels.*.name, 'X-Needs-Product')
|
||||
contains(github.event.issue.labels.*.name, 'X-Needs-Product')
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: add_to_project
|
||||
@@ -106,10 +105,7 @@ jobs:
|
||||
# Skip in forks
|
||||
if: >
|
||||
github.repository == 'vector-im/element-android' &&
|
||||
(contains(github.event.issue.labels.*.name, 'A-Spaces') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Space-Settings') ||
|
||||
contains(github.event.issue.labels.*.name, 'A-Subspaces') ||
|
||||
contains(github.event.issue.labels.*.name, 'Z-IA'))
|
||||
(contains(github.event.issue.labels.*.name, 'Team: Delight'))
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
with:
|
||||
@@ -202,7 +198,7 @@ jobs:
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc3m-g"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
|
||||
move_ftue_issues:
|
||||
name: Z-FTUE to Mobile FTUE board
|
||||
runs-on: ubuntu-latest
|
||||
@@ -252,3 +248,30 @@ jobs:
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc4AArk0"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
||||
move_element_x_issues:
|
||||
name: ElementX issues to ElementX project board
|
||||
runs-on: ubuntu-latest
|
||||
# Skip in forks
|
||||
if: >
|
||||
github.repository == 'vector-im/element-android' &&
|
||||
(contains(github.event.issue.labels.*.name, 'Z-ElementX-Alpha') ||
|
||||
contains(github.event.issue.labels.*.name, 'Z-ElementX-Beta') ||
|
||||
contains(github.event.issue.labels.*.name, 'Z-ElementX'))
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
with:
|
||||
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||
query: |
|
||||
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
|
||||
projectNextItem {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
projectid: ${{ env.PROJECT_ID }}
|
||||
contentid: ${{ github.event.issue.node_id }}
|
||||
env:
|
||||
PROJECT_ID: "PN_kwDOAM0swc4ABTXY"
|
||||
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||
|
@@ -7,6 +7,8 @@ jobs:
|
||||
add_design_pr_to_project:
|
||||
name: Move PRs asking for design review to the design board
|
||||
runs-on: ubuntu-latest
|
||||
# Skip in forks
|
||||
if: github.repository == 'vector-im/element-android'
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: find_team_members
|
||||
@@ -74,6 +76,8 @@ jobs:
|
||||
add_product_pr_to_project:
|
||||
name: Move PRs asking for product review to the product board
|
||||
runs-on: ubuntu-latest
|
||||
# Skip in forks
|
||||
if: github.repository == 'vector-im/element-android'
|
||||
steps:
|
||||
- uses: octokit/graphql-action@v2.x
|
||||
id: find_team_members
|
||||
|
5
.github/workflows/triage-priority-bugs.yml
vendored
5
.github/workflows/triage-priority-bugs.yml
vendored
@@ -14,10 +14,7 @@ jobs:
|
||||
!contains(github.event.issue.labels.*.name, 'A-E2EE-Cross-Signing') &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-E2EE-Key-Backup') &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-E2EE-SAS-Verification') &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-Spaces') &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-Spaces-Settings') &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-Subspaces')) &&
|
||||
!contains(github.event.issue.labels.*.name, 'A-E2EE-SAS-Verification')) &&
|
||||
(contains(github.event.issue.labels.*.name, 'T-Defect') &&
|
||||
contains(github.event.issue.labels.*.name, 'S-Critical') &&
|
||||
(contains(github.event.issue.labels.*.name, 'O-Frequent') ||
|
||||
|
2
.github/workflows/update-gradle-wrapper.yml
vendored
2
.github/workflows/update-gradle-wrapper.yml
vendored
@@ -13,6 +13,8 @@ jobs:
|
||||
|
||||
- name: Update Gradle Wrapper
|
||||
uses: gradle-update/update-gradle-wrapper-action@v1
|
||||
# Skip in forks
|
||||
if: github.repository == 'vector-im/element-android'
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
target-branch: develop
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -16,4 +16,4 @@
|
||||
/fastlane/private
|
||||
/fastlane/report.xml
|
||||
|
||||
/library/build
|
||||
/**/build
|
||||
|
1
.idea/dictionaries/bmarty.xml
generated
1
.idea/dictionaries/bmarty.xml
generated
@@ -40,6 +40,7 @@
|
||||
<w>sygnal</w>
|
||||
<w>threepid</w>
|
||||
<w>uisi</w>
|
||||
<w>unifiedpush</w>
|
||||
<w>unpublish</w>
|
||||
<w>unwedging</w>
|
||||
<w>vctr</w>
|
||||
|
425
CHANGES.md
425
CHANGES.md
@@ -1,3 +1,428 @@
|
||||
Changes in Element v1.4.27 (2022-07-06)
|
||||
=======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fixes crash when sharing plain text, such as a url ([#6451](https://github.com/vector-im/element-android/issues/6451))
|
||||
- Fix crashes on Timeline [Thread] due to range validation ([#6461](https://github.com/vector-im/element-android/issues/6461))
|
||||
- Fix crashes when opening Thread ([#6463](https://github.com/vector-im/element-android/issues/6463))
|
||||
- Fix ConcurrentModificationException on BackgroundDetectionObserver ([#6469](https://github.com/vector-im/element-android/issues/6469))
|
||||
|
||||
|
||||
Changes in Element v1.4.26 (2022-06-30)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Use UnifiedPush and allows user to have push without FCM. ([#3448](https://github.com/vector-im/element-android/issues/3448))
|
||||
- Replace ffmpeg-kit with libopus and libopusenc. ([#6203](https://github.com/vector-im/element-android/issues/6203))
|
||||
- Improve lock screen implementation. ([#6217](https://github.com/vector-im/element-android/issues/6217))
|
||||
- Allow sharing text based content via android's share menu (eg .ics files) ([#6285](https://github.com/vector-im/element-android/issues/6285))
|
||||
- Promote live location labs flag ([#6350](https://github.com/vector-im/element-android/issues/6350))
|
||||
- [Location sharing] - Stop any active live before starting a new one ([#6364](https://github.com/vector-im/element-android/issues/6364))
|
||||
- Expose pusher profile tag in advanced settings ([#6369](https://github.com/vector-im/element-android/issues/6369))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fixes concurrent modification crash when signing out or launching the app ([#5821](https://github.com/vector-im/element-android/issues/5821))
|
||||
- Refactor - better naming, return native user id and not sip user id and create a dm with the native user instead of with the sip user. ([#6101](https://github.com/vector-im/element-android/issues/6101))
|
||||
- Fixed /upgraderoom command not doing anything ([#6154](https://github.com/vector-im/element-android/issues/6154))
|
||||
- Fixed crash when opening large images in the timeline ([#6290](https://github.com/vector-im/element-android/issues/6290))
|
||||
- [Location sharing] Fix crash when starting/stopping a live when offline ([#6315](https://github.com/vector-im/element-android/issues/6315))
|
||||
- Fix loop in timeline and simplify management of chunks and timeline events. ([#6318](https://github.com/vector-im/element-android/issues/6318))
|
||||
- Update design and behaviour on widget permission bottom sheet ([#6326](https://github.com/vector-im/element-android/issues/6326))
|
||||
- Fix | Some user verification requests couldn't be accepted/declined ([#6328](https://github.com/vector-im/element-android/issues/6328))
|
||||
- [Location sharing] Fix stop of a live not possible from another device ([#6349](https://github.com/vector-im/element-android/issues/6349))
|
||||
- Fix backslash escapes in formatted messages ([#6357](https://github.com/vector-im/element-android/issues/6357))
|
||||
- Fixes wrong error message when signing in with wrong credentials ([#6371](https://github.com/vector-im/element-android/issues/6371))
|
||||
- [Location Share] - Adding missing prefix "u=" for uncertainty in geo URI ([#6375](https://github.com/vector-im/element-android/issues/6375))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- FTUE - Adds automatic homeserver selection when typing a full matrix id during registration or login ([#6162](https://github.com/vector-im/element-android/issues/6162))
|
||||
|
||||
Improved Documentation 📚
|
||||
------------------------
|
||||
- Update the PR process doc to come back to one reviewer with optional additional reviewers. ([#6396](https://github.com/vector-im/element-android/issues/6396))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Group all location sharing related API into LocationSharingService ([#5864](https://github.com/vector-im/element-android/issues/5864))
|
||||
- Add support for MSC2457 - opting in or out of logging out all devices when changing password ([#6191](https://github.com/vector-im/element-android/issues/6191))
|
||||
- Create `QueryStateEventValue` to do query on `stateKey` for State Event. Also remove the default parameter values for those type. ([#6319](https://github.com/vector-im/element-android/issues/6319))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- - Notify of the latest known location in LocationTracker to avoid multiple locations at start
|
||||
- Debounce location updates
|
||||
- Improve location providers access ([#5913](https://github.com/vector-im/element-android/issues/5913))
|
||||
- Add unit tests for LiveLocationAggregationProcessor code ([#6155](https://github.com/vector-im/element-android/issues/6155))
|
||||
- Making screenshots in bug reports opt in instead of opt out ([#6261](https://github.com/vector-im/element-android/issues/6261))
|
||||
- Setup [Flipper](https://fbflipper.com/) ([#6300](https://github.com/vector-im/element-android/issues/6300))
|
||||
- CreatePollViewModel unit tests ([#6320](https://github.com/vector-im/element-android/issues/6320))
|
||||
- Fix flaky test in voice recording feature. ([#6329](https://github.com/vector-im/element-android/issues/6329))
|
||||
- Poll view state unit tests ([#6366](https://github.com/vector-im/element-android/issues/6366))
|
||||
- Let LoadRoomMembersTask insert by chunk to release db. ([#6394](https://github.com/vector-im/element-android/issues/6394))
|
||||
|
||||
|
||||
Changes in Element v1.4.25 (2022-06-27)
|
||||
=======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Second attempt to fix session database migration to version 30.
|
||||
|
||||
Changes in Element v1.4.24 (2022-06-22)
|
||||
=======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- First attempt to fix session database migration to version 30.
|
||||
|
||||
Changes in Element v1.4.23 (2022-06-21)
|
||||
=======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix loop in timeline and simplify management of chunks and timeline events. ([#6318](https://github.com/vector-im/element-android/issues/6318))
|
||||
|
||||
|
||||
Changes in Element v1.4.22 (2022-06-14)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Make read receipt avatar list more compact ([#5970](https://github.com/vector-im/element-android/issues/5970))
|
||||
- Allow .well-known configuration to override key sharing mode ([#6147](https://github.com/vector-im/element-android/issues/6147))
|
||||
- Re-organize location settings flags ([#6244](https://github.com/vector-im/element-android/issues/6244))
|
||||
- Add report action for live location messages ([#6280](https://github.com/vector-im/element-android/issues/6280))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix cases of missing, swapped, or duplicated messages ([#5528](https://github.com/vector-im/element-android/issues/5528))
|
||||
- Fix wrong status of live location sharing in timeline ([#6209](https://github.com/vector-im/element-android/issues/6209))
|
||||
- Fix StackOverflowError while recording voice message ([#6222](https://github.com/vector-im/element-android/issues/6222))
|
||||
- Text cropped: "Secure backup" ([#6232](https://github.com/vector-im/element-android/issues/6232))
|
||||
- Fix copyright attributions of map views ([#6247](https://github.com/vector-im/element-android/issues/6247))
|
||||
- Fix flickering bottom bar of live location item ([#6264](https://github.com/vector-im/element-android/issues/6264))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- FTUE - Adds Sign Up tracking ([#5285](https://github.com/vector-im/element-android/issues/5285))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Some methods from `Session` have been moved to a new `SyncService`, that you can retrieve from a `Session`.
|
||||
- `SyncStatusService` method has been moved to the new `SyncService`
|
||||
- `InitSyncStep` have been moved and renamed to `InitialSyncStep`
|
||||
- `SyncStatusService.Status` has been renamed to `SyncRequestState`
|
||||
- The existing `SyncService` has been renamed to `SyncAndroidService` because of name clash with the new SDK Service ([#6029](https://github.com/vector-im/element-android/issues/6029))
|
||||
- Allows `AuthenticationService.getLoginFlow` to fail without resetting state from previously successful calls ([#6093](https://github.com/vector-im/element-android/issues/6093))
|
||||
- Allows new passwords to be passed at the point of confirmation when resetting a password ([#6169](https://github.com/vector-im/element-android/issues/6169))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Adds support for parsing homeserver versions without a patch number ([#6017](https://github.com/vector-im/element-android/issues/6017))
|
||||
- Updating exit onboarding dialog copy formatting to match iOS ([#6087](https://github.com/vector-im/element-android/issues/6087))
|
||||
- Disables when arrow alignment in code style ([#6126](https://github.com/vector-im/element-android/issues/6126))
|
||||
|
||||
|
||||
Changes in Element 1.4.20 (2022-06-13)
|
||||
======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix: All rooms are shown in Home regardless of the switch state. ([#6272](https://github.com/vector-im/element-android/issues/6272))
|
||||
- Fix regression on EventInsertLiveObserver getting blocked so there is no event being processed anymore. ([#6278](https://github.com/vector-im/element-android/issues/6278))
|
||||
|
||||
|
||||
Changes in Element 1.4.19 (2022-06-07)
|
||||
======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix | performance regression on roomlist + proper display of space parents in explore rooms. ([#6233](https://github.com/vector-im/element-android/issues/6233))
|
||||
|
||||
|
||||
Changes in Element v1.4.18 (2022-05-31)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Space explore screen changes: removed space card, added rooms filtering ([#5658](https://github.com/vector-im/element-android/issues/5658))
|
||||
- Adds space or user id as a subtitle under rooms in search ([#5860](https://github.com/vector-im/element-android/issues/5860))
|
||||
- Adds up navigation in spaces ([#6073](https://github.com/vector-im/element-android/issues/6073))
|
||||
- Labs flag for enabling live location sharing ([#6098](https://github.com/vector-im/element-android/issues/6098))
|
||||
- Added support for mandatory backup or passphrase from .well-known configuration. ([#6133](https://github.com/vector-im/element-android/issues/6133))
|
||||
- Security - Asking for user confirmation when tapping URLs which contain unicode directional overrides ([#6163](https://github.com/vector-im/element-android/issues/6163))
|
||||
- Add settings switch to allow autoplaying animated images ([#6166](https://github.com/vector-im/element-android/issues/6166))
|
||||
- Live Location Sharing - User List Bottom Sheet ([#6170](https://github.com/vector-im/element-android/issues/6170))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix some notifications not clearing when read ([#4862](https://github.com/vector-im/element-android/issues/4862))
|
||||
- Do not switch away from home space on notification when "Show all Rooms in Home" is selected. ([#5827](https://github.com/vector-im/element-android/issues/5827))
|
||||
- Use fixed text size in read receipt counter ([#5856](https://github.com/vector-im/element-android/issues/5856))
|
||||
- Revert: Use member name instead of room name in DM creation item ([#6032](https://github.com/vector-im/element-android/issues/6032))
|
||||
- Poll refactoring with unit tests ([#6074](https://github.com/vector-im/element-android/issues/6074))
|
||||
- Correct .well-known/matrix/client handling for server_names which include ports. ([#6095](https://github.com/vector-im/element-android/issues/6095))
|
||||
- Glide - Use current drawable while loading new static map image ([#6103](https://github.com/vector-im/element-android/issues/6103))
|
||||
- Fix sending multiple invites to a room reaching only one or two people ([#6109](https://github.com/vector-im/element-android/issues/6109))
|
||||
- Prevent widget web view from reloading on screen / orientation change ([#6140](https://github.com/vector-im/element-android/issues/6140))
|
||||
- Fix decrypting redacted event from sending errors ([#6148](https://github.com/vector-im/element-android/issues/6148))
|
||||
- Make widget web view request system permissions for camera and microphone (PSF-1061) ([#6149](https://github.com/vector-im/element-android/issues/6149))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- Adds email input and verification screens to the new FTUE onboarding flow ([#5278](https://github.com/vector-im/element-android/issues/5278))
|
||||
- FTUE - Adds the redesigned Sign In screen ([#5283](https://github.com/vector-im/element-android/issues/5283))
|
||||
- [Live location sharing] Update message in timeline during the live ([#5689](https://github.com/vector-im/element-android/issues/5689))
|
||||
- FTUE - Overrides sign up flow ordering for matrix.org only ([#5783](https://github.com/vector-im/element-android/issues/5783))
|
||||
- Live location sharing: navigation from timeline to map screen
|
||||
Live location sharing: show user pins on map screen ([#6012](https://github.com/vector-im/element-android/issues/6012))
|
||||
- FTUE - Adds homeserver login/register deeplink support ([#6023](https://github.com/vector-im/element-android/issues/6023))
|
||||
- [Live location sharing] Update entity in DB when a live is timed out ([#6123](https://github.com/vector-im/element-android/issues/6123))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Notifies other devices when a verification request sent from an Android device is accepted.` ([#5724](https://github.com/vector-im/element-android/issues/5724))
|
||||
- Some `val` have been changed to `fun` to increase their visibility in the generated documentation. Just add `()` if you were using them.
|
||||
- `KeysBackupService.state` has been replaced by `KeysBackupService.getState()`
|
||||
- `KeysBackupService.isStucked` has been replaced by `KeysBackupService.isStuck()`
|
||||
- SDK documentation improved ([#5952](https://github.com/vector-im/element-android/issues/5952))
|
||||
- Improve replay attacks and reduce duplicate message index errors ([#6077](https://github.com/vector-im/element-android/issues/6077))
|
||||
- Remove `RoomSummaryQueryParams.roomId`. If you need to observe a single room, use the new API `RoomService.getRoomSummaryLive(roomId: String)`
|
||||
- `ActiveSpaceFilter` has been renamed to `SpaceFilter`
|
||||
- `RoomCategoryFilter.ALL` has been removed, just pass `null` to not filter on Room category. ([#6143](https://github.com/vector-im/element-android/issues/6143))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- leaving space experience changed to be aligned with iOS ([#5728](https://github.com/vector-im/element-android/issues/5728))
|
||||
- @Ignore a number of tests that are currently failing in CI. ([#6025](https://github.com/vector-im/element-android/issues/6025))
|
||||
- Remove ShortcutBadger lib and usage (it was dead code) ([#6041](https://github.com/vector-im/element-android/issues/6041))
|
||||
- Test: Ensure calling 'fail()' is not caught by the catch block ([#6089](https://github.com/vector-im/element-android/issues/6089))
|
||||
- Excludes transitive optional non FOSS google location dependency from fdroid builds ([#6100](https://github.com/vector-im/element-android/issues/6100))
|
||||
- Fixed grammar errors in /vector/src/main/res/values/strings.xml ([#6132](https://github.com/vector-im/element-android/issues/6132))
|
||||
- Downgrade gradle from 7.2.0 to 7.1.3 ([#6141](https://github.com/vector-im/element-android/issues/6141))
|
||||
- Add Lao language to the in-app settings. ([#6196](https://github.com/vector-im/element-android/issues/6196))
|
||||
- Remove the background location permission request ([#6198](https://github.com/vector-im/element-android/issues/6198))
|
||||
|
||||
|
||||
Changes in Element v1.4.16 (2022-05-17)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Use key backup before requesting keys + refactor & improvement of key request/forward ([#5494](https://github.com/vector-im/element-android/issues/5494))
|
||||
- Screen sharing over WebRTC ([#5911](https://github.com/vector-im/element-android/issues/5911))
|
||||
- Allow using the latest user Avatar and name for all messages in the timeline ([#5932](https://github.com/vector-im/element-android/issues/5932))
|
||||
- Added themed launch icons for Android 13 ([#5936](https://github.com/vector-im/element-android/issues/5936))
|
||||
- Add presence indicator busy and away. ([#6047](https://github.com/vector-im/element-android/issues/6047))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Changed copy and list order in member profile screen. ([#5825](https://github.com/vector-im/element-android/issues/5825))
|
||||
- Fix for audio only being received in one direction after an un-hold during a sip call. ([#5865](https://github.com/vector-im/element-android/issues/5865))
|
||||
- Desynchronized 4S | Megolm backup causing Unusable backup ([#5906](https://github.com/vector-im/element-android/issues/5906))
|
||||
- If animations are disable on the System, chat effects and confetti will be disabled too ([#5941](https://github.com/vector-im/element-android/issues/5941))
|
||||
- Multiple threads improvement (mainly UI) ([#5959](https://github.com/vector-im/element-android/issues/5959))
|
||||
|
||||
Improved Documentation 📚
|
||||
------------------------
|
||||
- Note public_baseurl requirement in integration tests documentation. ([#5973](https://github.com/vector-im/element-android/issues/5973))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- - New API to enable/disable key forwarding CryptoService#enableKeyGossiping()
|
||||
- New API to limit room key request only to own devices MXCryptoConfig#limitRoomKeyRequestsToMyDevices
|
||||
- Event Trail API has changed, now using AuditTrail events
|
||||
- New API to manually accept an incoming key request CryptoService#manuallyAcceptRoomKeyRequest() ([#5559](https://github.com/vector-im/element-android/issues/5559))
|
||||
- Small change in the Matrix class: deprecated methods have been removed and the constructor is now public. Also the fun `workerFactory()` has been renamed to `getWorkerFactory()` ([#5887](https://github.com/vector-im/element-android/issues/5887))
|
||||
- Including SSL/TLS error handing when doing WellKnown lookups without a custom HomeServerConnectionConfig ([#5965](https://github.com/vector-im/element-android/issues/5965))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Improve threads rendering in the main timeline ([#5151](https://github.com/vector-im/element-android/issues/5151))
|
||||
- Reformatted project code ([#5953](https://github.com/vector-im/element-android/issues/5953))
|
||||
- Update check for server-side threads support to match spec. ([#5997](https://github.com/vector-im/element-android/issues/5997))
|
||||
- Setup detekt ([#6038](https://github.com/vector-im/element-android/issues/6038))
|
||||
- Notify the user for each new message ([#4632](https://github.com/vector-im/element-android/issues/4632))
|
||||
|
||||
|
||||
Changes in Element v1.4.14 (2022-05-05)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Improve management of ignored users ([#5772](https://github.com/vector-im/element-android/issues/5772))
|
||||
- VoIP Screen Sharing Permission ([#5811](https://github.com/vector-im/element-android/issues/5811))
|
||||
- Live location sharing: updating beacon state event content structure ([#5814](https://github.com/vector-im/element-android/issues/5814))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fixes crash when accepting or receiving VOIP calls ([#5421](https://github.com/vector-im/element-android/issues/5421))
|
||||
- Improve/fix crashes on messages decryption ([#5592](https://github.com/vector-im/element-android/issues/5592))
|
||||
- Tentative fix of images crashing when being sent or shared from gallery ([#5652](https://github.com/vector-im/element-android/issues/5652))
|
||||
- Improving deactivation experience along with a crash fix ([#5721](https://github.com/vector-im/element-android/issues/5721))
|
||||
- Adds missing suggested tag for rooms in Explore Space ([#5826](https://github.com/vector-im/element-android/issues/5826))
|
||||
- Fixes missing call icons when threads are enabled ([#5847](https://github.com/vector-im/element-android/issues/5847))
|
||||
- Fix UX freezing when creating secure backup ([#5871](https://github.com/vector-im/element-android/issues/5871))
|
||||
- Fixes sign in via other requiring homeserver registration to be enabled ([#5874](https://github.com/vector-im/element-android/issues/5874))
|
||||
- Don't pause timer when call is held. ([#5885](https://github.com/vector-im/element-android/issues/5885))
|
||||
- Fix UISIDetector grace period bug ([#5886](https://github.com/vector-im/element-android/issues/5886))
|
||||
- Fix a crash with space invitations in the space list, and do not display space invitation twice. ([#5924](https://github.com/vector-im/element-android/issues/5924))
|
||||
- Fixes crash on android api 21/22 devices when opening messages due to Konfetti library ([#5925](https://github.com/vector-im/element-android/issues/5925))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- Reorders the registration steps to prioritise email, then terms for the FTUE onboarding ([#5783](https://github.com/vector-im/element-android/issues/5783))
|
||||
- [Live location sharing] Improve aggregation process of events ([#5862](https://github.com/vector-im/element-android/issues/5862))
|
||||
|
||||
Improved Documentation 📚
|
||||
------------------------
|
||||
- Update the PR process doc with 2 reviewers and a new reviewer team. ([#5836](https://github.com/vector-im/element-android/issues/5836))
|
||||
- Improve documentation of the project and of the SDK ([#5854](https://github.com/vector-im/element-android/issues/5854))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Added registrationCustom into RegistrationWizard to send custom auth params for sign up
|
||||
- Moved terms converter into api package to make it accessible in sdk ([#5575](https://github.com/vector-im/element-android/issues/5575))
|
||||
- Move package `org.matrix.android.sdk.api.pushrules` to `org.matrix.android.sdk.api.session.pushrules` ([#5812](https://github.com/vector-im/element-android/issues/5812))
|
||||
- Some `Session` apis are now available by requesting the service first. For instance `Session.updateAvatar(...)` is now `Session.profileService().updateAvatar(...)`
|
||||
- The shortcut `Room.search()` has been removed, you have to use `Session.searchService().search()` ([#5816](https://github.com/vector-im/element-android/issues/5816))
|
||||
- Add return type to RoomApi.sendStateEvent() to retrieve the created event id ([#5855](https://github.com/vector-im/element-android/issues/5855))
|
||||
- `Room` apis are now available by requesting the service first. For instance `Room.updateAvatar(...)` is now `Room.stateService().updateAvatar(...)` ([#5858](https://github.com/vector-im/element-android/issues/5858))
|
||||
- Remove unecessary field `eventId` from `EventAnnotationsSummary` and `ReferencesAggregatedSummary` ([#5890](https://github.com/vector-im/element-android/issues/5890))
|
||||
- Replace usage of `System.currentTimeMillis()` by a `Clock` interface ([#5907](https://github.com/vector-im/element-android/issues/5907))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Move "Ignored users" setting section into "Security & Privacy" ([#5773](https://github.com/vector-im/element-android/issues/5773))
|
||||
- Add a picto for ignored users in the room member list screen ([#5774](https://github.com/vector-im/element-android/issues/5774))
|
||||
- Autoformats entire project ([#5805](https://github.com/vector-im/element-android/issues/5805))
|
||||
- Add a GH workflow to push ElementX issues to the global board. ([#5832](https://github.com/vector-im/element-android/issues/5832))
|
||||
- Faster Olm decrypt when there is a lot of existing sessions ([#5872](https://github.com/vector-im/element-android/issues/5872))
|
||||
|
||||
|
||||
Changes in Element 1.4.13 (2022-04-26)
|
||||
======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Fix UI freeze observed after each incremental sync ([#5835](https://github.com/vector-im/element-android/issues/5835))
|
||||
|
||||
|
||||
Changes in Element v1.4.12 (2022-04-20)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Add a setting to be able to always appear offline ([#5582](https://github.com/vector-im/element-android/issues/5582))
|
||||
- Adds the ability for audio attachments to be played in the timeline ([#5586](https://github.com/vector-im/element-android/issues/5586))
|
||||
- Do not cancel the current incremental sync request and treatment when the app goes to background ([#5719](https://github.com/vector-im/element-android/issues/5719))
|
||||
- Improve user experience when home servers do not yet support threads ([#5761](https://github.com/vector-im/element-android/issues/5761))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Added text next to spinner when loading information after user is clicked on space members screen ([#4305](https://github.com/vector-im/element-android/issues/4305))
|
||||
- The string `ftue_auth_carousel_workplace_body` was declared not translatable by mistake ([#5262](https://github.com/vector-im/element-android/issues/5262))
|
||||
- Fix some cases where the read marker line would not show up ([#5475](https://github.com/vector-im/element-android/issues/5475))
|
||||
- Fix sometimes read marker not properly updating ([#5481](https://github.com/vector-im/element-android/issues/5481))
|
||||
- Fix sometimes endless loading timeline ([#5554](https://github.com/vector-im/element-android/issues/5554))
|
||||
- Use member name instead of room name in DM creation item ([#5570](https://github.com/vector-im/element-android/issues/5570))
|
||||
- Align auto-reporting of decryption errors implementation with web client. ([#5596](https://github.com/vector-im/element-android/issues/5596))
|
||||
- Choosing "leave all rooms and spaces" while leaving Space won't cause leaving DMs in this Space anymore ([#5609](https://github.com/vector-im/element-android/issues/5609))
|
||||
- Fixes display name being changed when using /myroomnick ([#5618](https://github.com/vector-im/element-android/issues/5618))
|
||||
- Fix endless loading if the event from a permalink is not found ([#5659](https://github.com/vector-im/element-android/issues/5659))
|
||||
- Redacted events are no longer visible. ([#5707](https://github.com/vector-im/element-android/issues/5707))
|
||||
- Don't wrongly show non-space invites in the space panel. ([#5731](https://github.com/vector-im/element-android/issues/5731))
|
||||
- Fixes the onboarding confetti rendering behind the content instead of in-front ([#5735](https://github.com/vector-im/element-android/issues/5735))
|
||||
- Fixes crash when navigating the app whilst processing new room keys ([#5746](https://github.com/vector-im/element-android/issues/5746))
|
||||
- Fix sorting of uploads in encrypted rooms ([#5757](https://github.com/vector-im/element-android/issues/5757))
|
||||
- Fixing setting transfer title in call transfer. ([#5765](https://github.com/vector-im/element-android/issues/5765))
|
||||
- Changes destination after joining a space to Explore Space Rooms screen ([#5766](https://github.com/vector-im/element-android/issues/5766))
|
||||
- Unignoring a user will perform an initial sync ([#5767](https://github.com/vector-im/element-android/issues/5767))
|
||||
- Open a room by link: use the actual roomId instead of the alias ([#5786](https://github.com/vector-im/element-android/issues/5786))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- FTUE - Adds a new homeserver selection screen when creating an account ([#2396](https://github.com/vector-im/element-android/issues/2396))
|
||||
- FTUE - Updates the Captcha and T&Cs registration screens UI style ([#5279](https://github.com/vector-im/element-android/issues/5279))
|
||||
- FTUE - Adds error handling within the server selection screen ([#5749](https://github.com/vector-im/element-android/issues/5749))
|
||||
- Live Location Sharing - Send location data ([#5697](https://github.com/vector-im/element-android/issues/5697))
|
||||
- Live Location Sharing - Show message on start of a live ([#5710](https://github.com/vector-im/element-android/issues/5710))
|
||||
- Live Location Sharing - Attach location data to beacon info state event ([#5711](https://github.com/vector-im/element-android/issues/5711))
|
||||
- Live Location Sharing - Update beacon info state event when sharing is ended ([#5758](https://github.com/vector-im/element-android/issues/5758))
|
||||
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Include original event in live decryption listeners and update sync status naming to InitialSyncProgressing for clarity. ([#5639](https://github.com/vector-im/element-android/issues/5639))
|
||||
- KeysBackupService.getCurrentVersion takes a new type `KeysBackupLastVersionResult` in the callback. ([#5703](https://github.com/vector-im/element-android/issues/5703))
|
||||
- A lot of classes which were exposed to the clients and were located in the package `org.matrix.android.sdk.internal` have been moved to the package `org.matrix.android.sdk.api`.
|
||||
All the classes which are in the package `org.matrix.android.sdk.internal` should now be declared `internal`.
|
||||
Some unused code and classes have been removed. ([#5744](https://github.com/vector-im/element-android/issues/5744))
|
||||
- Some data classes are now immutable, using `val` instead of `var` ([#5762](https://github.com/vector-im/element-android/issues/5762))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Upgrade konfetti lib from 1.3.2 to 2.0.2 ([#5079](https://github.com/vector-im/element-android/issues/5079))
|
||||
- Spaces feedback section is removed from left panel ([#5486](https://github.com/vector-im/element-android/issues/5486))
|
||||
- Reduce error logs ([#5703](https://github.com/vector-im/element-android/issues/5703))
|
||||
- Adds a complete editor config file for our current code style ([#5727](https://github.com/vector-im/element-android/issues/5727))
|
||||
- Updates the posthog dev environment url and api key ([#5732](https://github.com/vector-im/element-android/issues/5732))
|
||||
- Setup Dokka to be able to generate documentation of the SDK module. Run `./gradlew matrix-sdk-android:dokkaHtml` to do it. ([#5744](https://github.com/vector-im/element-android/issues/5744))
|
||||
|
||||
|
||||
Changes in Element v1.4.11 (2022-04-07)
|
||||
=======================================
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Choosing "leave all rooms and spaces" while leaving Space won't cause leaving DMs in this Space anymore ([#5609](https://github.com/vector-im/element-android/issues/5609))
|
||||
|
||||
|
||||
Changes in Element v1.4.10 (2022-04-05)
|
||||
=======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- Allow scrolling position of Voice Message playback ([#5426](https://github.com/vector-im/element-android/issues/5426))
|
||||
- Users will be able to provide feedback for threads ([#5647](https://github.com/vector-im/element-android/issues/5647))
|
||||
- Update Jitsi lib from 3.10.0 to 5.0.2 ([#5654](https://github.com/vector-im/element-android/issues/5654))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Replace "open settings" button by "disable" action in RageShake dialog if there is no session ([#4445](https://github.com/vector-im/element-android/issues/4445))
|
||||
- Fixes room summaries showing encrypted content after verifying device ([#4867](https://github.com/vector-im/element-android/issues/4867))
|
||||
- Fixes polls being votable after being ended ([#5473](https://github.com/vector-im/element-android/issues/5473))
|
||||
- [Subscribing] Blank display name ([#5497](https://github.com/vector-im/element-android/issues/5497))
|
||||
- Fixes voice call button disappearing in DM rooms with more than 2 members ([#5548](https://github.com/vector-im/element-android/issues/5548))
|
||||
- Add loader in thread list ([#5562](https://github.com/vector-im/element-android/issues/5562))
|
||||
- Fixed key export when overwriting existing files ([#5663](https://github.com/vector-im/element-android/issues/5663))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- Adding combined account creation and server selection screen as part of the new FTUE ([#5277](https://github.com/vector-im/element-android/issues/5277))
|
||||
- Finalising FTUE onboarding account creation personalization steps but keeping feature disabled until other parts are complete ([#5519](https://github.com/vector-im/element-android/issues/5519))
|
||||
- Live Location Sharing - Foreground Service and Notification ([#5595](https://github.com/vector-im/element-android/issues/5595))
|
||||
- Send beacon info state event when live location sharing started ([#5651](https://github.com/vector-im/element-android/issues/5651))
|
||||
- Show a banner in timeline while location sharing service is running ([#5660](https://github.com/vector-im/element-android/issues/5660))
|
||||
- Location sharing: adding possibility to choose duration of live sharing ([#5667](https://github.com/vector-im/element-android/issues/5667))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Improve main timeline thread summary rendering ([#5151](https://github.com/vector-im/element-android/issues/5151))
|
||||
- "Add space" copy is replaced with "create space" in left sliding panel ([#5516](https://github.com/vector-im/element-android/issues/5516))
|
||||
- Flattening the asynchronous onboarding state and passing all errors through the same pipeline ([#5517](https://github.com/vector-im/element-android/issues/5517))
|
||||
- Changed items order in space menu. Changed capitalization for "space" in those items ([#5524](https://github.com/vector-im/element-android/issues/5524))
|
||||
- Permalinks to root thread messages will now navigate you within the thread timeline ([#5567](https://github.com/vector-im/element-android/issues/5567))
|
||||
- Live location sharing: adding way to override feature activation in debug ([#5581](https://github.com/vector-im/element-android/issues/5581))
|
||||
- Adds unit tests around the login with matrix id flow ([#5628](https://github.com/vector-im/element-android/issues/5628))
|
||||
- Setup the plugin org.owasp.dependencycheck ([#5654](https://github.com/vector-im/element-android/issues/5654))
|
||||
- Implement threads beta opt-in mechanism to notify users about threads ([#5692](https://github.com/vector-im/element-android/issues/5692))
|
||||
|
||||
|
||||
Changes in Element v1.4.8 (2022-03-28)
|
||||
======================================
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
Please read https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md
|
||||
|
||||
Android support can be found in this [](https://matrix.to/#/#element-android:matrix.org) room.
|
||||
Element Android support can be found in this room: [](https://matrix.to/#/#element-android:matrix.org).
|
||||
|
||||
# Specific rules for Matrix Android projects
|
||||
|
||||
@@ -44,6 +44,8 @@ If you want to fix an issue in other languages, or add a missing translation, or
|
||||
|
||||
## I want to submit a PR to fix an issue
|
||||
|
||||
Please have a look in the [dedicated documentation](./docs/pull_request.md) about pull request.
|
||||
|
||||
Please check if a corresponding issue exists. If yes, please let us know in a comment that you're working on it.
|
||||
If an issue does not exist yet, it may be relevant to open a new issue and let us know that you're implementing it.
|
||||
|
||||
@@ -122,7 +124,9 @@ As a general rule, please never edit or add or remove translations to the projec
|
||||
|
||||
#### Adding new string
|
||||
|
||||
When adding new string resources, please only add new entries in file `value/strings.xml`. Translations will be added later by the community of translators using Weblate.
|
||||
When adding new string resources, please only add new entries in the file `value/strings.xml`. Translations will be added later by the community of translators using Weblate.
|
||||
|
||||
The file `value/strings.xml` must only contain American English (U. S. English) values, as this is the default language of the Android operating system. So for instance, please use "color" instead of "colour". Element Android will still use the language set on the system by the user, like any other Android applications which provide translations. The system language can be any other English language variants, or any other languages. Note that this is also possible to override the system language using the Element Android in-app language settings.
|
||||
|
||||
New strings can be added anywhere in the file `value/strings.xml`, not necessarily at the end of the file. Generally, it's even better to add the new strings in some dedicated section per feature, and not at the end of the file, to avoid merge conflict between 2 PR adding strings at the end of the same file.
|
||||
|
||||
@@ -142,6 +146,8 @@ Instead, please comment the original string with:
|
||||
```xml
|
||||
<!-- TODO TO BE REMOVED -->
|
||||
```
|
||||
And add `tools:ignore="UnusedResources"` to the string, to let lint ignore that the string is not used.
|
||||
|
||||
The string will be removed during the next sync with Weblate.
|
||||
|
||||
### Accessibility
|
||||
|
@@ -1,9 +1,9 @@
|
||||
[](https://buildkite.com/matrix-dot-org/element-android/builds?branch=develop)
|
||||
[](https://translate.element.io/engage/element-android/?utm_source=widget)
|
||||
[](https://matrix.to/#/#element-android:matrix.org)
|
||||
[](https://sonarcloud.io/dashboard?id=im.vector.app.android)
|
||||
[](https://sonarcloud.io/dashboard?id=im.vector.app.android)
|
||||
[](https://sonarcloud.io/dashboard?id=im.vector.app.android)
|
||||
[](https://sonarcloud.io/summary/new_code?id=vector-im_element-android)
|
||||
[](https://sonarcloud.io/summary/new_code?id=vector-im_element-android)
|
||||
[](https://sonarcloud.io/summary/new_code?id=vector-im_element-android)
|
||||
|
||||
# Element Android
|
||||
|
||||
@@ -14,7 +14,7 @@ It is a total rewrite of [Riot-Android](https://github.com/vector-im/riot-androi
|
||||
[<img src="resources/img/google-play-badge.png" alt="Get it on Google Play" height="60">](https://play.google.com/store/apps/details?id=im.vector.app)
|
||||
[<img src="resources/img/f-droid-badge.png" alt="Get it on F-Droid" height="60">](https://f-droid.org/app/im.vector.app)
|
||||
|
||||
Nightly build: [](https://buildkite.com/matrix-dot-org/element-android/builds?branch=develop) Nighly test status: [](https://github.com/vector-im/element-android/actions/workflows/nightly.yml)
|
||||
Nightly build: [](https://buildkite.com/matrix-dot-org/element-android/builds?branch=develop) Nightly test status: [](https://github.com/vector-im/element-android/actions/workflows/nightly.yml)
|
||||
|
||||
|
||||
# New Android SDK
|
||||
@@ -53,3 +53,4 @@ Come chat with the community in the dedicated Matrix [room](https://matrix.to/#/
|
||||
Issues are triaged by community members and the Android App Team, following the [triage process](https://github.com/vector-im/element-meta/wiki/Triage-process).
|
||||
|
||||
We use [issue labels](https://github.com/vector-im/element-meta/wiki/Issue-labelling) to sort all incoming issues.
|
||||
|
||||
|
145
build.gradle
145
build.gradle
@@ -5,10 +5,17 @@ buildscript {
|
||||
apply from: 'dependencies_groups.gradle'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
// Do not use `google()`, it prevents Dependabot from working properly
|
||||
maven {
|
||||
url 'https://maven.google.com'
|
||||
}
|
||||
maven {
|
||||
url "https://plugins.gradle.org/m2/"
|
||||
}
|
||||
// Do not use `mavenCentral()`, it prevents Dependabot from working properly
|
||||
maven {
|
||||
url 'https://repo1.maven.org/maven2'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -17,26 +24,46 @@ buildscript {
|
||||
classpath libs.gradle.gradlePlugin
|
||||
classpath libs.gradle.kotlinPlugin
|
||||
classpath libs.gradle.hiltPlugin
|
||||
classpath 'com.google.gms:google-services:4.3.10'
|
||||
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
|
||||
classpath 'com.google.gms:google-services:4.3.13'
|
||||
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.4.0.2513'
|
||||
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5'
|
||||
classpath "com.likethesalad.android:stem-plugin:2.0.0"
|
||||
|
||||
classpath "com.likethesalad.android:stem-plugin:2.1.1"
|
||||
classpath 'org.owasp:dependency-check-gradle:7.1.1'
|
||||
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.7.0"
|
||||
classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0"
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
// ktlint Plugin
|
||||
plugins {
|
||||
id "org.jlleitschuh.gradle.ktlint" version "10.2.1"
|
||||
// ktlint Plugin
|
||||
id "org.jlleitschuh.gradle.ktlint" version "10.3.0"
|
||||
// Detekt
|
||||
id "io.gitlab.arturbosch.detekt" version "1.20.0"
|
||||
|
||||
// Dependency Analysis
|
||||
id 'com.autonomousapps.dependency-analysis' version "1.9.0"
|
||||
}
|
||||
|
||||
// https://github.com/jeremylong/DependencyCheck
|
||||
apply plugin: 'org.owasp.dependencycheck'
|
||||
|
||||
dependencyCheck {
|
||||
// See https://jeremylong.github.io/DependencyCheck/general/suppression.html
|
||||
suppressionFiles = [
|
||||
"./tools/dependencycheck/suppressions.xml"
|
||||
]
|
||||
}
|
||||
|
||||
allprojects {
|
||||
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
||||
apply plugin: "io.gitlab.arturbosch.detekt"
|
||||
|
||||
repositories {
|
||||
mavenCentral {
|
||||
// Do not use `mavenCentral()`, it prevents Dependabot from working properly
|
||||
maven {
|
||||
url 'https://repo1.maven.org/maven2'
|
||||
content {
|
||||
groups.mavenCentral.regex.each { includeGroupByRegex it }
|
||||
groups.mavenCentral.group.each { includeGroup it }
|
||||
@@ -51,7 +78,7 @@ allprojects {
|
||||
}
|
||||
// Jitsi repo
|
||||
maven {
|
||||
url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-3.10.0"
|
||||
url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-5.0.2"
|
||||
// Note: to test Jitsi release you can use a local file like this:
|
||||
// url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-3.10.0"
|
||||
content {
|
||||
@@ -59,14 +86,18 @@ allprojects {
|
||||
groups.jitsi.group.each { includeGroup it }
|
||||
}
|
||||
}
|
||||
google {
|
||||
// Do not use `google()`, it prevents Dependabot from working properly
|
||||
maven {
|
||||
url 'https://maven.google.com'
|
||||
content {
|
||||
groups.google.regex.each { includeGroupByRegex it }
|
||||
groups.google.group.each { includeGroup it }
|
||||
}
|
||||
}
|
||||
//noinspection JcenterRepositoryObsolete
|
||||
jcenter {
|
||||
// Do not use `jcenter`, it prevents Dependabot from working properly
|
||||
maven {
|
||||
url 'https://jcenter.bintray.com'
|
||||
content {
|
||||
groups.jcenter.regex.each { includeGroupByRegex it }
|
||||
groups.jcenter.group.each { includeGroup it }
|
||||
@@ -87,18 +118,44 @@ allprojects {
|
||||
|
||||
// See https://github.com/JLLeitschuh/ktlint-gradle#configuration
|
||||
ktlint {
|
||||
// See https://github.com/pinterest/ktlint/releases/
|
||||
version = "0.45.1"
|
||||
android = true
|
||||
ignoreFailures = false
|
||||
enableExperimentalRules = true
|
||||
// display the corresponding rule
|
||||
verbose = true
|
||||
disabledRules = [
|
||||
// TODO Re-enable these 4 rules after reformatting project
|
||||
"indent",
|
||||
"experimental:argument-list-wrapping",
|
||||
"max-line-length",
|
||||
"parameter-list-wrapping",
|
||||
|
||||
"spacing-between-declarations-with-comments",
|
||||
"no-multi-spaces",
|
||||
"experimental:spacing-between-declarations-with-annotations",
|
||||
"experimental:annotation"
|
||||
"experimental:annotation",
|
||||
// - Missing newline after "("
|
||||
// - Missing newline before ")"
|
||||
"wrapping",
|
||||
// - Unnecessary trailing comma before ")"
|
||||
"experimental:trailing-comma",
|
||||
// - A block comment in between other elements on the same line is disallowed
|
||||
"experimental:comment-wrapping",
|
||||
// - A KDoc comment after any other element on the same line must be separated by a new line
|
||||
"experimental:kdoc-wrapping",
|
||||
]
|
||||
}
|
||||
|
||||
detekt {
|
||||
// preconfigure defaults
|
||||
buildUponDefaultConfig = true
|
||||
// activate all available (even unstable) rules.
|
||||
allRules = true
|
||||
// point to your custom config defining rules to run, overwriting default behavior
|
||||
config = files("$rootDir/tools/detekt/detekt.yml")
|
||||
}
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
@@ -111,7 +168,7 @@ def launchTask = getGradle()
|
||||
.toString()
|
||||
.toLowerCase()
|
||||
|
||||
if (launchTask.contains("codeCoverageReport".toLowerCase())) {
|
||||
if (launchTask.contains("coverage".toLowerCase())) {
|
||||
apply from: 'coverage.gradle'
|
||||
}
|
||||
|
||||
@@ -123,8 +180,8 @@ apply plugin: 'org.sonarqube'
|
||||
|
||||
sonarqube {
|
||||
properties {
|
||||
property "sonar.projectName", "Element-Android"
|
||||
property "sonar.projectKey", "im.vector.app.android"
|
||||
property "sonar.projectName", "element-android"
|
||||
property "sonar.projectKey", "vector-im_element-android"
|
||||
property "sonar.host.url", "https://sonarcloud.io"
|
||||
property "sonar.projectVersion", project(":vector").android.defaultConfig.versionName
|
||||
property "sonar.sourceEncoding", "UTF-8"
|
||||
@@ -134,7 +191,7 @@ sonarqube {
|
||||
property "sonar.links.issue", "https://github.com/vector-im/element-android/issues"
|
||||
property "sonar.organization", "new_vector_ltd_organization"
|
||||
property "sonar.java.coveragePlugin", "jacoco"
|
||||
property "sonar.coverage.jacoco.xmlReportPaths", "${project.buildDir}/reports/jacoco/allCodeCoverageReport/allCodeCoverageReport.xml"
|
||||
property "sonar.coverage.jacoco.xmlReportPaths", "${project.buildDir}/reports/jacoco/generateCoverageReport/generateCoverageReport.xml"
|
||||
property "sonar.login", project.hasProperty("SONAR_LOGIN") ? SONAR_LOGIN : "invalid"
|
||||
}
|
||||
}
|
||||
@@ -165,3 +222,59 @@ project(":library:diff-match-patch") {
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
dependencyAnalysis {
|
||||
dependencies {
|
||||
bundle("kotlin-stdlib") {
|
||||
includeGroup("org.jetbrains.kotlin")
|
||||
}
|
||||
bundle("react") {
|
||||
includeGroup("com.facebook.react")
|
||||
}
|
||||
}
|
||||
issues {
|
||||
all {
|
||||
ignoreKtx(true)
|
||||
onUsedTransitiveDependencies {
|
||||
// Transitively used dependencies that should be declared directly
|
||||
severity("ignore")
|
||||
}
|
||||
onUnusedDependencies {
|
||||
severity("fail")
|
||||
}
|
||||
onUnusedAnnotationProcessors {
|
||||
severity("fail")
|
||||
exclude("com.airbnb.android:epoxy-processor", "com.google.dagger:hilt-compiler") // False positives
|
||||
}
|
||||
}
|
||||
project(":library:jsonviewer") {
|
||||
onUnusedDependencies {
|
||||
exclude("org.json:json") // Used in unit tests, overwrites the one bundled into Android
|
||||
}
|
||||
}
|
||||
project(":library:ui-styles")
|
||||
project(":matrix-sdk-android") {
|
||||
onUnusedDependencies {
|
||||
exclude("io.reactivex.rxjava2:rxkotlin") // Transitively required for mocking realm as monarchy doesn't expose Rx
|
||||
}
|
||||
}
|
||||
project(":matrix-sdk-android-flow") {
|
||||
onUnusedDependencies {
|
||||
exclude("androidx.paging:paging-runtime-ktx") // False positive
|
||||
}
|
||||
}
|
||||
project(":vector") {
|
||||
onUnusedDependencies {
|
||||
// False positives
|
||||
exclude(
|
||||
"androidx.fragment:fragment-testing",
|
||||
"com.facebook.soloader:soloader",
|
||||
"com.vanniktech:emoji-google",
|
||||
"com.vanniktech:emoji-material",
|
||||
"org.maplibre.gl:android-plugin-annotation-v9",
|
||||
"org.maplibre.gl:android-sdk",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1
changelog.d/5284.wip
Normal file
1
changelog.d/5284.wip
Normal file
@@ -0,0 +1 @@
|
||||
FTUE - Adds support for resetting the password during the FTUE onboarding journey
|
1
changelog.d/5398.bugfix
Normal file
1
changelog.d/5398.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Adds LoginType to SessionParams to fix soft logout form not showing for SSO and Password type
|
1
changelog.d/5733.misc
Normal file
1
changelog.d/5733.misc
Normal file
@@ -0,0 +1 @@
|
||||
Communities/Groups are removed completely
|
1
changelog.d/5733.sdk
Normal file
1
changelog.d/5733.sdk
Normal file
@@ -0,0 +1 @@
|
||||
Communities/Groups are removed completely
|
1
changelog.d/5853.feature
Normal file
1
changelog.d/5853.feature
Normal file
@@ -0,0 +1 @@
|
||||
Improve user experience when he is first invited to a room. Users will be able to decrypt and view previous messages
|
1
changelog.d/6288.bugfix
Normal file
1
changelog.d/6288.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Use stable endpoint for alias management instead of MSC2432. Contributed by Nico.
|
1
changelog.d/6389.misc
Normal file
1
changelog.d/6389.misc
Normal file
@@ -0,0 +1 @@
|
||||
Replacing Epoxy annotation layout id references with getDefaultLayoutId
|
1
changelog.d/6392.misc
Normal file
1
changelog.d/6392.misc
Normal file
@@ -0,0 +1 @@
|
||||
Ensure `RealmList<T>.clearWith()` extension is correctly used.
|
1
changelog.d/6401.feature
Normal file
1
changelog.d/6401.feature
Normal file
@@ -0,0 +1 @@
|
||||
[Location sharing] - Reply action on a live message
|
1
changelog.d/6413.feature
Normal file
1
changelog.d/6413.feature
Normal file
@@ -0,0 +1 @@
|
||||
Show a loader if all the Room Members are not yet loaded.
|
1
changelog.d/6423.misc
Normal file
1
changelog.d/6423.misc
Normal file
@@ -0,0 +1 @@
|
||||
[Poll] - Add a description under undisclosed poll when not ended
|
1
changelog.d/6429.misc
Normal file
1
changelog.d/6429.misc
Normal file
@@ -0,0 +1 @@
|
||||
Add `android:hasFragileUserData="true"` in the manifest
|
1
changelog.d/6430.bugfix
Normal file
1
changelog.d/6430.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
[Poll] Fixes visible and wrong votes in closed poll after removing 2 previous polls
|
1
changelog.d/6434.misc
Normal file
1
changelog.d/6434.misc
Normal file
@@ -0,0 +1 @@
|
||||
Add code check to prevent modification of frozen class
|
1
changelog.d/6436.misc
Normal file
1
changelog.d/6436.misc
Normal file
@@ -0,0 +1 @@
|
||||
Let your Activity or Fragment implement `VectorMenuProvider` if they provide a menu.
|
1
changelog.d/6442.bugfix
Normal file
1
changelog.d/6442.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Fix HTML entities being displayed in messages
|
1
changelog.d/6450.bugfix
Normal file
1
changelog.d/6450.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Gallery picker can pick external images
|
1
changelog.d/6451.bugfix
Normal file
1
changelog.d/6451.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Fixes crash when sharing plain text, such as a url
|
1
changelog.d/6458.misc
Normal file
1
changelog.d/6458.misc
Normal file
@@ -0,0 +1 @@
|
||||
Rename Android Service to use `AndroidService` suffix
|
1
changelog.d/6461.bugfix
Normal file
1
changelog.d/6461.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Fix crashes on Timeline [Thread] due to range validation
|
1
changelog.d/6463.bugfix
Normal file
1
changelog.d/6463.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Fix crashes when opening Thread
|
1
changelog.d/6469.bugfix
Normal file
1
changelog.d/6469.bugfix
Normal file
@@ -0,0 +1 @@
|
||||
Fix ConcurrentModificationException on BackgroundDetectionObserver
|
@@ -1,9 +1,37 @@
|
||||
def excludes = [ ]
|
||||
def excludes = [
|
||||
// dependency injection graph
|
||||
'**/*Module.*',
|
||||
'**/*Module*.*',
|
||||
|
||||
// Framework entry points
|
||||
'**/*Activity*',
|
||||
'**/*Fragment*',
|
||||
'**/*Application*',
|
||||
'**/*AndroidService*',
|
||||
|
||||
// We would like to exclude android widgets as well but our naming is inconsistent
|
||||
|
||||
// Proof of concept
|
||||
'**/*Login2*',
|
||||
|
||||
// Generated
|
||||
'**/*JsonAdapter*',
|
||||
'**/*Item.*',
|
||||
'**/*$Holder.*',
|
||||
'**/*ViewHolder.*',
|
||||
'**/*View.*',
|
||||
'**/*BottomSheet.*'
|
||||
]
|
||||
|
||||
def initializeReport(report, projects, classExcludes) {
|
||||
projects.each { project -> project.apply plugin: 'jacoco' }
|
||||
report.executionData { fileTree(rootProject.rootDir.absolutePath).include("**/build/jacoco/*.exec") }
|
||||
|
||||
report.executionData {
|
||||
fileTree(rootProject.rootDir.absolutePath).include(
|
||||
"**/build/**/*.exec",
|
||||
"**/build/outputs/code_coverage/**/coverage.ec",
|
||||
)
|
||||
}
|
||||
report.reports {
|
||||
xml.enabled true
|
||||
html.enabled true
|
||||
@@ -17,7 +45,7 @@ def initializeReport(report, projects, classExcludes) {
|
||||
projects.each { project ->
|
||||
switch (project) {
|
||||
case { project.plugins.hasPlugin("com.android.application") }:
|
||||
androidClassDirs.add("${project.buildDir}/tmp/kotlin-classes/debug")
|
||||
androidClassDirs.add("${project.buildDir}/tmp/kotlin-classes/gplayDebug")
|
||||
androidSourceDirs.add("${project.projectDir}/src/main/kotlin")
|
||||
androidSourceDirs.add("${project.projectDir}/src/main/java")
|
||||
break
|
||||
@@ -43,13 +71,21 @@ def collectProjects(predicate) {
|
||||
return subprojects.findAll { it.buildFile.isFile() && predicate(it) }
|
||||
}
|
||||
|
||||
task allCodeCoverageReport(type: JacocoReport) {
|
||||
task generateCoverageReport(type: JacocoReport) {
|
||||
outputs.upToDateWhen { false }
|
||||
rootProject.apply plugin: 'jacoco'
|
||||
// to limit projects in a specific report, add
|
||||
// def excludedProjects = [ ... ]
|
||||
// def projects = collectProjects { !excludedProjects.contains(it.name) }
|
||||
def projects = collectProjects { true }
|
||||
dependsOn { projects*.test }
|
||||
def projects = collectProjects { ['vector', 'matrix-sdk-android'].contains(it.name) }
|
||||
initializeReport(it, projects, excludes)
|
||||
}
|
||||
|
||||
task unitTestsWithCoverage(type: GradleBuild) {
|
||||
// the 7.1.3 android gradle plugin has a bug where enableTestCoverage generates invalid coverage
|
||||
startParameter.projectProperties.coverage = [enableTestCoverage: false]
|
||||
tasks = [':vector:testGplayDebugUnitTest', ':matrix-sdk-android:testDebugUnitTest']
|
||||
}
|
||||
|
||||
task instrumentationTestsWithCoverage(type: GradleBuild) {
|
||||
startParameter.projectProperties.coverage = [enableTestCoverage: true]
|
||||
startParameter.projectProperties['android.testInstrumentationRunnerArguments.notPackage'] = 'im.vector.app.ui'
|
||||
tasks = [':vector:connectedGplayDebugAndroidTest', 'matrix-sdk-android:connectedDebugAndroidTest']
|
||||
}
|
||||
|
@@ -7,31 +7,35 @@ ext.versions = [
|
||||
'targetCompat' : JavaVersion.VERSION_11,
|
||||
]
|
||||
|
||||
def gradle = "7.0.4"
|
||||
|
||||
// Pinned to 7.1.3 because of https://github.com/vector-im/element-android/issues/6142
|
||||
// Please test carefully before upgrading again.
|
||||
def gradle = "7.1.3"
|
||||
// Ref: https://kotlinlang.org/releases.html
|
||||
def kotlin = "1.5.31"
|
||||
def kotlinCoroutines = "1.5.2"
|
||||
def dagger = "2.40.5"
|
||||
def kotlin = "1.6.21"
|
||||
def kotlinCoroutines = "1.6.3"
|
||||
def dagger = "2.42"
|
||||
def retrofit = "2.9.0"
|
||||
def arrow = "0.8.2"
|
||||
def markwon = "4.6.2"
|
||||
def moshi = "1.12.0"
|
||||
def lifecycle = "2.4.0"
|
||||
def moshi = "1.13.0"
|
||||
def lifecycle = "2.4.1"
|
||||
def flowBinding = "1.2.0"
|
||||
def flipper = "0.153.0"
|
||||
def epoxy = "4.6.2"
|
||||
def mavericks = "2.5.0"
|
||||
def glide = "4.12.0"
|
||||
def mavericks = "2.7.0"
|
||||
def glide = "4.13.2"
|
||||
def bigImageViewer = "1.8.1"
|
||||
def jjwt = "0.11.2"
|
||||
def vanniktechEmoji = "0.8.0"
|
||||
def jjwt = "0.11.5"
|
||||
def vanniktechEmoji = "0.15.0"
|
||||
|
||||
def fragment = "1.5.0"
|
||||
|
||||
// Testing
|
||||
def mockk = "1.12.1"
|
||||
def mockk = "1.12.3" // We need to use 1.12.3 to have mocking in androidTest until a new version is released: https://github.com/mockk/mockk/issues/819
|
||||
def espresso = "3.4.0"
|
||||
def androidxTest = "1.4.0"
|
||||
def androidxOrchestrator = "1.4.1"
|
||||
|
||||
|
||||
ext.libs = [
|
||||
gradle : [
|
||||
'gradlePlugin' : "com.android.tools.build:gradle:$gradle",
|
||||
@@ -45,15 +49,20 @@ ext.libs = [
|
||||
'coroutinesTest' : "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinCoroutines"
|
||||
],
|
||||
androidx : [
|
||||
'appCompat' : "androidx.appcompat:appcompat:1.4.0",
|
||||
'core' : "androidx.core:core-ktx:1.7.0",
|
||||
'annotation' : "androidx.annotation:annotation:1.4.0",
|
||||
'activity' : "androidx.activity:activity:1.5.0",
|
||||
'annotations' : "androidx.annotation:annotation:1.3.0",
|
||||
'appCompat' : "androidx.appcompat:appcompat:1.4.2",
|
||||
'biometric' : "androidx.biometric:biometric:1.1.0",
|
||||
'core' : "androidx.core:core-ktx:1.8.0",
|
||||
'recyclerview' : "androidx.recyclerview:recyclerview:1.2.1",
|
||||
'exifinterface' : "androidx.exifinterface:exifinterface:1.3.3",
|
||||
'fragmentKtx' : "androidx.fragment:fragment-ktx:1.4.0",
|
||||
'constraintLayout' : "androidx.constraintlayout:constraintlayout:2.1.2",
|
||||
'fragmentKtx' : "androidx.fragment:fragment-ktx:$fragment",
|
||||
'fragmentTesting' : "androidx.fragment:fragment-testing:$fragment",
|
||||
'constraintLayout' : "androidx.constraintlayout:constraintlayout:2.1.4",
|
||||
'work' : "androidx.work:work-runtime-ktx:2.7.1",
|
||||
'autoFill' : "androidx.autofill:autofill:1.1.0",
|
||||
'preferenceKtx' : "androidx.preference:preference-ktx:1.1.1",
|
||||
'preferenceKtx' : "androidx.preference:preference-ktx:1.2.0",
|
||||
'junit' : "androidx.test.ext:junit:1.1.3",
|
||||
'lifecycleCommon' : "androidx.lifecycle:lifecycle-common:$lifecycle",
|
||||
'lifecycleLivedata' : "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle",
|
||||
@@ -69,19 +78,27 @@ ext.libs = [
|
||||
'testRules' : "androidx.test:rules:$androidxTest",
|
||||
'espressoCore' : "androidx.test.espresso:espresso-core:$espresso",
|
||||
'espressoContrib' : "androidx.test.espresso:espresso-contrib:$espresso",
|
||||
'espressoIntents' : "androidx.test.espresso:espresso-intents:$espresso"
|
||||
'espressoIntents' : "androidx.test.espresso:espresso-intents:$espresso",
|
||||
'viewpager2' : "androidx.viewpager2:viewpager2:1.0.0",
|
||||
'transition' : "androidx.transition:transition:1.2.0",
|
||||
],
|
||||
google : [
|
||||
'material' : "com.google.android.material:material:1.5.0"
|
||||
'material' : "com.google.android.material:material:1.6.1"
|
||||
],
|
||||
dagger : [
|
||||
'dagger' : "com.google.dagger:dagger:$dagger",
|
||||
'daggerCompiler' : "com.google.dagger:dagger-compiler:$dagger",
|
||||
'hilt' : "com.google.dagger:hilt-android:$dagger",
|
||||
'hiltAndroidTesting' : "com.google.dagger:hilt-android-testing:$dagger",
|
||||
'hiltCompiler' : "com.google.dagger:hilt-compiler:$dagger"
|
||||
],
|
||||
flipper : [
|
||||
'flipper' : "com.facebook.flipper:flipper:$flipper",
|
||||
'flipperNetworkPlugin' : "com.facebook.flipper:flipper-network-plugin:$flipper",
|
||||
],
|
||||
squareup : [
|
||||
'moshi' : "com.squareup.moshi:moshi-adapters:$moshi",
|
||||
'moshi' : "com.squareup.moshi:moshi:$moshi",
|
||||
'moshiKt' : "com.squareup.moshi:moshi-kotlin:$moshi",
|
||||
'moshiKotlin' : "com.squareup.moshi:moshi-kotlin-codegen:$moshi",
|
||||
'retrofit' : "com.squareup.retrofit2:retrofit:$retrofit",
|
||||
'retrofitMoshi' : "com.squareup.retrofit2:converter-moshi:$retrofit"
|
||||
@@ -107,6 +124,10 @@ ext.libs = [
|
||||
'mavericks' : "com.airbnb.android:mavericks:$mavericks",
|
||||
'mavericksTesting' : "com.airbnb.android:mavericks-testing:$mavericks"
|
||||
],
|
||||
maplibre : [
|
||||
'androidSdk' : "org.maplibre.gl:android-sdk:9.5.2",
|
||||
'pluginAnnotation' : "org.maplibre.gl:android-plugin-annotation-v9:1.0.0"
|
||||
],
|
||||
mockk : [
|
||||
'mockk' : "io.mockk:mockk:$mockk",
|
||||
'mockkAndroid' : "io.mockk:mockk-android:$mockk"
|
||||
@@ -143,3 +164,5 @@ ext.libs = [
|
||||
'junit' : "junit:junit:4.13.2"
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
|
@@ -7,7 +7,9 @@ ext.groups = [
|
||||
'com.github.chrisbanes',
|
||||
'com.github.hyuwah',
|
||||
'com.github.jetradarmobile',
|
||||
'com.github.MatrixFrog',
|
||||
'com.github.tapadoo',
|
||||
'com.github.UnifiedPush',
|
||||
'com.github.vector-im',
|
||||
'com.github.yalantis',
|
||||
'com.github.Zhuinden',
|
||||
@@ -30,6 +32,7 @@ ext.groups = [
|
||||
],
|
||||
group: [
|
||||
'com.android',
|
||||
'com.android.ndk.thirdparty',
|
||||
'com.android.tools',
|
||||
'com.google.firebase',
|
||||
'com.google.testing.platform',
|
||||
@@ -39,6 +42,7 @@ ext.groups = [
|
||||
regex: [
|
||||
],
|
||||
group: [
|
||||
'ch.qos.logback',
|
||||
'com.adevinta.android',
|
||||
'com.airbnb.android',
|
||||
'com.almworks.sqlite4java',
|
||||
@@ -48,13 +52,20 @@ ext.groups = [
|
||||
'com.beust',
|
||||
'com.davemorrissey.labs',
|
||||
'com.dropbox.core',
|
||||
'com.soywiz.korlibs.korte',
|
||||
'com.facebook.fbjni',
|
||||
'com.facebook.flipper',
|
||||
'com.facebook.fresco',
|
||||
'com.facebook.infer.annotation',
|
||||
'com.facebook.soloader',
|
||||
'com.facebook.stetho',
|
||||
'com.facebook.yoga',
|
||||
'com.fasterxml',
|
||||
'com.fasterxml.jackson',
|
||||
'com.fasterxml.jackson.core',
|
||||
'com.fasterxml.jackson.dataformat',
|
||||
'com.fasterxml.jackson.module',
|
||||
'com.fasterxml.woodstox',
|
||||
'com.gabrielittner.threetenbp',
|
||||
'com.getkeepsafe.relinker',
|
||||
'com.github.bumptech.glide',
|
||||
@@ -85,6 +96,7 @@ ext.groups = [
|
||||
'com.ibm.icu',
|
||||
'com.jakewharton.android.repackaged',
|
||||
'com.jakewharton.timber',
|
||||
'com.kgurgul.flipper',
|
||||
'com.linkedin.dexmaker',
|
||||
'com.mapbox.mapboxsdk',
|
||||
'com.nulab-inc',
|
||||
@@ -113,7 +125,9 @@ ext.groups = [
|
||||
'info.picocli',
|
||||
'io.arrow-kt',
|
||||
'io.github.detekt.sarif4k',
|
||||
'io.github.microutils',
|
||||
'io.github.reactivecircus.flowbinding',
|
||||
'io.gitlab.arturbosch.detekt',
|
||||
'io.grpc',
|
||||
'io.jsonwebtoken',
|
||||
'io.kindedj',
|
||||
@@ -131,7 +145,6 @@ ext.groups = [
|
||||
'jline',
|
||||
'jp.wasabeef',
|
||||
'junit',
|
||||
'me.leolin',
|
||||
'me.saket',
|
||||
'net.bytebuddy',
|
||||
'net.java',
|
||||
@@ -152,12 +165,16 @@ ext.groups = [
|
||||
'org.codehaus',
|
||||
'org.codehaus.groovy',
|
||||
'org.codehaus.mojo',
|
||||
'org.codehaus.woodstox',
|
||||
'org.eclipse.ee4j',
|
||||
'org.ec4j.core',
|
||||
'org.freemarker',
|
||||
'org.glassfish.jaxb',
|
||||
'org.hamcrest',
|
||||
'org.jacoco',
|
||||
'org.java-websocket',
|
||||
'org.jetbrains',
|
||||
'org.jetbrains.dokka',
|
||||
'org.jetbrains.intellij.deps',
|
||||
'org.jetbrains.kotlin',
|
||||
'org.jetbrains.kotlinx',
|
||||
@@ -183,6 +200,7 @@ ext.groups = [
|
||||
'org.testng',
|
||||
'org.threeten',
|
||||
'org.webjars',
|
||||
'org.yaml',
|
||||
'ru.noties',
|
||||
'xerces',
|
||||
'xml-apis',
|
||||
@@ -203,4 +221,3 @@ ext.groups = [
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
@@ -1,5 +1,34 @@
|
||||
# Adding and removing ThreePids to an account
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Add email](#add-email)
|
||||
* [User enter the email](#user-enter-the-email)
|
||||
* [The email is already added to an account](#the-email-is-already-added-to-an-account)
|
||||
* [The email is free](#the-email-is-free)
|
||||
* [User receives an e-mail](#user-receives-an-e-mail)
|
||||
* [User clicks on the link](#user-clicks-on-the-link)
|
||||
* [User returns on Element](#user-returns-on-element)
|
||||
* [User enters his password](#user-enters-his-password)
|
||||
* [The link has not been clicked](#the-link-has-not-been-clicked)
|
||||
* [Wrong password](#wrong-password)
|
||||
* [The link has been clicked and the account password is correct](#the-link-has-been-clicked-and-the-account-password-is-correct)
|
||||
* [Remove email](#remove-email)
|
||||
* [User want to remove an email from his account](#user-want-to-remove-an-email-from-his-account)
|
||||
* [Email was not bound to an identity server](#email-was-not-bound-to-an-identity-server)
|
||||
* [Email was bound to an identity server](#email-was-bound-to-an-identity-server)
|
||||
* [Add phone number](#add-phone-number)
|
||||
* [The phone number is already added to an account](#the-phone-number-is-already-added-to-an-account)
|
||||
* [The phone number is free](#the-phone-number-is-free)
|
||||
* [User receive a text message](#user-receive-a-text-message)
|
||||
* [User enter the code to the app](#user-enter-the-code-to-the-app)
|
||||
* [Wrong code](#wrong-code)
|
||||
* [Correct code](#correct-code)
|
||||
* [Remove phone number](#remove-phone-number)
|
||||
* [User wants to remove a phone number from his account](#user-wants-to-remove-a-phone-number-from-his-account)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Add email
|
||||
|
||||
### User enter the email
|
||||
@@ -37,9 +66,9 @@ Wording: "We've sent you an email to verify your address. Please follow the inst
|
||||
}
|
||||
```
|
||||
|
||||
## User receive an e-mail
|
||||
## User receives an e-mail
|
||||
|
||||
> [homeserver.org] Validate your email
|
||||
> `homeserver.org` Validate your email
|
||||
>
|
||||
> A request to add an email address to your Matrix account has been received. If this was you, please click the link below to confirm adding this email:
|
||||
https://homeserver.org/_matrix/client/unstable/add_threepid/email/submit_token?token=WUnEhQAmJrXupdEbXgdWvnVIKaGYZFsU&client_secret=TixzvOnw7nLEUdiQEmkHzkXKrY4HhiGh&sid=bxyDHuJKsdkjMlTJ
|
||||
|
@@ -1,5 +1,13 @@
|
||||
# Analytics in Element
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Solution](#solution)
|
||||
* [How to add a new Event](#how-to-add-a-new-event)
|
||||
* [Forks of Element](#forks-of-element)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Solution
|
||||
|
||||
Element is using PostHog to send analytics event.
|
||||
|
@@ -1,5 +1,14 @@
|
||||
# Color migration
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Changes](#changes)
|
||||
* [Main change for developers](#main-change-for-developers)
|
||||
* [Remaining work](#remaining-work)
|
||||
* [Migration guide](#migration-guide)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
### Changes
|
||||
|
||||
- use colors defined in https://www.figma.com/file/X4XTH9iS2KGJ2wFKDqkyed/Compound?node-id=557%3A0
|
||||
|
@@ -1,5 +1,31 @@
|
||||
# Element Android design
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Introduction](#introduction)
|
||||
* [How to import from Figma to the Element Android project](#how-to-import-from-figma-to-the-element-android-project)
|
||||
* [Colors](#colors)
|
||||
* [Text](#text)
|
||||
* [Dimension, position and margin](#dimension-position-and-margin)
|
||||
* [Icons](#icons)
|
||||
* [Export drawable from Figma](#export-drawable-from-figma)
|
||||
* [Import in Android Studio](#import-in-android-studio)
|
||||
* [Images](#images)
|
||||
* [Figma links](#figma-links)
|
||||
* [Coumpound](#coumpound)
|
||||
* [Login](#login)
|
||||
* [Login v2](#login-v2)
|
||||
* [Room list](#room-list)
|
||||
* [Timeline](#timeline)
|
||||
* [Voice message](#voice-message)
|
||||
* [Room settings](#room-settings)
|
||||
* [VoIP](#voip)
|
||||
* [Presence](#presence)
|
||||
* [Spaces](#spaces)
|
||||
* [List to be continued...](#list-to-be-continued)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Introduction
|
||||
|
||||
Design at element.io is done using Figma - https://www.figma.com
|
||||
|
58
docs/flipper.md
Normal file
58
docs/flipper.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Flipper
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Introduction](#introduction)
|
||||
* [Setup](#setup)
|
||||
* [Troubleshoot](#troubleshoot)
|
||||
* [No device found issue](#no-device-found-issue)
|
||||
* [Diagnostic Activity](#diagnostic-activity)
|
||||
* [Other](#other)
|
||||
* [Links](#links)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Introduction
|
||||
|
||||
[Flipper](https://fbflipper.com) is a powerful tool from Meta, which allow to inspect the running application details and states from your computer.
|
||||
|
||||
Flipper is configured in the Element Android project to let the developers be able to:
|
||||
- inspect all the Realm databases content;
|
||||
- do layout inspection;
|
||||
- see the crash logs;
|
||||
- see the logcat;
|
||||
- see all the network requests;
|
||||
- see all the SharedPreferences;
|
||||
- take screenshots and record videos of the device;
|
||||
- and more!
|
||||
|
||||
## Setup
|
||||
|
||||
- Install Flipper on your computer. Follow instructions here: https://fbflipper.com/docs/getting-started/index/
|
||||
- Run the debug version of Element on an emulator or on a real device.
|
||||
|
||||
### Troubleshoot
|
||||
|
||||
#### No device found issue
|
||||
|
||||
The configuration of the Flipper application has to be updated. The issue has been asked and answered here: https://stackoverflow.com/questions/71744103/android-emulator-unable-to-connect-to-flipper/72608113#72608113
|
||||
|
||||
#### Diagnostic Activity
|
||||
|
||||
Flipper comes with a Diagnostic Activity that you can start from command line using:
|
||||
|
||||
```shell
|
||||
adb shell am start -n im.vector.app.debug/com.facebook.flipper.android.diagnostics.FlipperDiagnosticActivity
|
||||
```
|
||||
|
||||
It provides some log which can help to figure out what's going on client side.
|
||||
|
||||
#### Other
|
||||
|
||||
https://fbflipper.com/docs/getting-started/troubleshooting/android/ may help.
|
||||
|
||||
## Links
|
||||
|
||||
- Official Flipper website: https://fbflipper.com
|
||||
- Realm Plugin for Flipper: https://github.com/kamgurgul/Flipper-Realm
|
||||
- Dedicated Matrix room: https://matrix.to/#/#unifiedpush:matrix.org
|
@@ -1,5 +1,19 @@
|
||||
# Identity server
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Introduction](#introduction)
|
||||
* [Implementation](#implementation)
|
||||
* [Related MSCs](#related-mscs)
|
||||
* [Steps and requirements](#steps-and-requirements)
|
||||
* [Screens](#screens)
|
||||
* [Settings](#settings)
|
||||
* [Discovery screen](#discovery-screen)
|
||||
* [Set identity server screen](#set-identity-server-screen)
|
||||
* [Ref:](#ref:)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
Issue: #607
|
||||
PR: #1354
|
||||
|
||||
|
@@ -1,5 +1,18 @@
|
||||
# Integration tests
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Pre requirements](#pre-requirements)
|
||||
* [Install and run Synapse](#install-and-run-synapse)
|
||||
* [Run the test](#run-the-test)
|
||||
* [Stop Synapse](#stop-synapse)
|
||||
* [Troubleshoot](#troubleshoot)
|
||||
* [Android Emulator does cannot reach the homeserver](#android-emulator-does-cannot-reach-the-homeserver)
|
||||
* [Tests partially run but some fail with "Unable to contact localhost:8080"](#tests-partially-run-but-some-fail-with-"unable-to-contact-localhost:8080")
|
||||
* [virtualenv command fails](#virtualenv-command-fails)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
Integration tests are useful to ensure that the code works well for any use cases.
|
||||
|
||||
They can also be used as sample on how to use the Matrix SDK.
|
||||
@@ -43,14 +56,17 @@ virtualenv -p python3 env
|
||||
source env/bin/activate
|
||||
pip install -e .
|
||||
demo/start.sh --no-rate-limit
|
||||
|
||||
```
|
||||
|
||||
Alternatively, to install the latest Synapse release package (and not a cloned branch) you can run the following instead of `pip install -e .`:
|
||||
Alternatively, to install the latest Synapse release package (and not a cloned branch) you can run the following instead of `git clone` and `pip install -e .`:
|
||||
|
||||
```bash
|
||||
pip install matrix-synapse
|
||||
```
|
||||
|
||||
On your first run, you will want to stop the demo and edit the config to correct the `public_baseurl` to http://10.0.2.2:8080 and restart the server.
|
||||
|
||||
You should now have 3 running federated Synapse instances 🎉, at http://127.0.0.1:8080/, http://127.0.0.1:8081/ and http://127.0.0.1:8082/, which should display a "It Works! Synapse is running" message.
|
||||
|
||||
## Run the test
|
||||
@@ -87,6 +103,18 @@ You'll need python3 to be able to run synapse
|
||||
|
||||
Try on the Emulator browser to open "http://10.0.2.2:8080". You should see the "Synapse is running" message.
|
||||
|
||||
### Tests partially run but some fail with "Unable to contact localhost:8080"
|
||||
|
||||
This is because the `public_baseurl` of synapse is not consistent with the endpoint that the tests are connecting to.
|
||||
|
||||
Ensure you have the following configuration in `demo/etc/8080.config`.
|
||||
|
||||
```
|
||||
public_baseurl: http://10.0.2.2:8080/
|
||||
```
|
||||
|
||||
After changing this you will need to restart synapse using `demo/stop.sh` and `demo/start.sh` to load the new configuration.
|
||||
|
||||
### virtualenv command fails
|
||||
|
||||
You can try using
|
||||
|
@@ -1,26 +1,40 @@
|
||||
# Jitsi in Element Android
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Native Jitsi SDK](#native-jitsi-sdk)
|
||||
* [How to build the Jitsi Meet SDK](#how-to-build-the-jitsi-meet-sdk)
|
||||
* [Jitsi version](#jitsi-version)
|
||||
* [Run the build script](#run-the-build-script)
|
||||
* [Link with the new generated library](#link-with-the-new-generated-library)
|
||||
* [Sanity tests](#sanity-tests)
|
||||
* [Export the build library](#export-the-build-library)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
Native Jitsi support has been added to Element Android by the PR [#1914](https://github.com/vector-im/element-android/pull/1914). The description of the PR contains some documentation about the behaviour in each possible room configuration.
|
||||
|
||||
Also, ensure to have a look on [the documentation from Element Web](https://github.com/vector-im/element-web/blob/develop/docs/jitsi.md)
|
||||
|
||||
The official documentation about how to integrate the Jitsi SDK in an Android app is available here: https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-android-sdk.
|
||||
|
||||
# Native Jitsi SDK
|
||||
## Native Jitsi SDK
|
||||
|
||||
The Jitsi SDK is built by ourselves with the flag LIBRE_BUILD, to be able to be integrated on the F-Droid version of Element Android.
|
||||
|
||||
The generated maven repository is then host in the project https://github.com/vector-im/jitsi_libre_maven
|
||||
|
||||
## How to build the Jitsi Meet SDK
|
||||
### How to build the Jitsi Meet SDK
|
||||
|
||||
### Jitsi version
|
||||
#### Jitsi version
|
||||
|
||||
Update the script `./tools/jitsi/build_jisti_libs.sh` with the tag of the project `https://github.com/jitsi/jitsi-meet`.
|
||||
|
||||
Latest tag can be found from this page: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md
|
||||
|
||||
Currently we are building the version with the tag `android-sdk-3.10.0`.
|
||||
|
||||
### Run the build script
|
||||
#### Run the build script
|
||||
|
||||
At the root of the Element Android, run the following script:
|
||||
|
||||
@@ -30,7 +44,7 @@ At the root of the Element Android, run the following script:
|
||||
|
||||
It will build the Jitsi Meet Android library and put every generated files in the folder `/tmp/jitsi`
|
||||
|
||||
### Link with the new generated library
|
||||
#### Link with the new generated library
|
||||
|
||||
- Update the file `./build.gradle` to use the previously created local Maven repository. Currently we have this line:
|
||||
|
||||
@@ -55,7 +69,7 @@ implementation('com.facebook.react:react-native-webrtc:1.92.1-jitsi-9093212@aar'
|
||||
- Perform a gradle sync and build the project
|
||||
- Perform test
|
||||
|
||||
### Sanity tests
|
||||
#### Sanity tests
|
||||
|
||||
In order to validate that the upgrade of the Jitsi and WebRTC dependency does not break anything, the following sanity tests have to be performed, using two devices:
|
||||
- Make 1-1 audio call (so using WebRTC)
|
||||
@@ -63,7 +77,7 @@ In order to validate that the upgrade of the Jitsi and WebRTC dependency does no
|
||||
- Create and join a conference call with audio only (so using Jitsi library). Leave the conference. Join it again.
|
||||
- Create and join a conference call with audio and video (so using Jitsi library) Leave the conference. Join it again.
|
||||
|
||||
### Export the build library
|
||||
#### Export the build library
|
||||
|
||||
If all the tests are passed, you can export the generated Jitsi library to our Maven repository.
|
||||
|
||||
@@ -79,4 +93,4 @@ url "https://github.com/vector-im/jitsi_libre_maven/raw/master/android-sdk-3.10.
|
||||
|
||||
- Build the project and perform the sanity tests again.
|
||||
|
||||
- Update the file `/CHANGES.md` to notify about the library upgrade, and create a regular PR for project Element Android.
|
||||
- Update the file `/CHANGES.md` to notify about the library upgrade, and create a regular PR for project Element Android.
|
||||
|
@@ -1,37 +1,42 @@
|
||||
This document aims to describe how Element android displays notifications to the end user. It also clarifies notifications and background settings in the app.
|
||||
|
||||
# Table of Contents
|
||||
1. [Prerequisites Knowledge](#prerequisites-knowledge)
|
||||
* [How does a matrix client get a message from a homeserver?](#how-does-a-matrix-client-get-a-message-from-a-homeserver)
|
||||
* [How does a mobile app receives push notification?](#how-does-a-mobile-app-receives-push-notification)
|
||||
* [Push VS Notification](#push-vs-notification)
|
||||
* [Push in the matrix federated world](#push-in-the-matrix-federated-world)
|
||||
* [How does the homeserver know when to notify a client?](#how-does-the-homeserver-know-when-to-notify-a-client)
|
||||
* [Push vs privacy, and mitigation](#push-vs-privacy-and-mitigation)
|
||||
* [Background processing limitations](#background-processing-limitations)
|
||||
2. [Element Notification implementations](#element-notification-implementations)
|
||||
* [Requirements](#requirements)
|
||||
* [Foreground sync mode (Gplay & F-Droid)](#foreground-sync-mode-gplay-f-droid)
|
||||
* [Push (FCM) received in background](#push-fcm-received-in-background)
|
||||
* [FCM Fallback mode](#fcm-fallback-mode)
|
||||
* [F-Droid background Mode](#f-droid-background-mode)
|
||||
3. [Application Settings](#application-settings)
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Prerequisites Knowledge](#prerequisites-knowledge)
|
||||
* [How does a matrix client get a message from a homeserver?](#how-does-a-matrix-client-get-a-message-from-a-homeserver?)
|
||||
* [How does a mobile app receives push notification](#how-does-a-mobile-app-receives-push-notification)
|
||||
* [Push VS Notification](#push-vs-notification)
|
||||
* [Push in the matrix federated world](#push-in-the-matrix-federated-world)
|
||||
* [How does the homeserver know when to notify a client?](#how-does-the-homeserver-know-when-to-notify-a-client?)
|
||||
* [Push vs privacy, and mitigation](#push-vs-privacy-and-mitigation)
|
||||
* [Background processing limitations](#background-processing-limitations)
|
||||
* [Element Notification implementations](#element-notification-implementations)
|
||||
* [Requirements](#requirements)
|
||||
* [Foreground sync mode (Gplay and F-Droid)](#foreground-sync-mode-gplay-and-f-droid)
|
||||
* [Push (FCM) received in background](#push-fcm-received-in-background)
|
||||
* [FCM Fallback mode](#fcm-fallback-mode)
|
||||
* [F-Droid background Mode](#f-droid-background-mode)
|
||||
* [Application Settings](#application-settings)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
|
||||
First let's start with some prerequisite knowledge
|
||||
|
||||
# Prerequisites Knowledge
|
||||
## Prerequisites Knowledge
|
||||
|
||||
## How does a matrix client get a message from a homeserver?
|
||||
### How does a matrix client get a message from a homeserver?
|
||||
|
||||
In order to get messages from a homeserver, a matrix client need to perform a ``sync`` operation.
|
||||
|
||||
`To read events, the intended flow of operation is for clients to first call the /sync API without a since parameter. This returns the most recent message events for each room, as well as the state of the room at the start of the returned timeline. `
|
||||
|
||||
The client need to call the `sync`API periodically in order to get incremental updates of the server state (new messages).
|
||||
The client need to call the `sync` API periodically in order to get incremental updates of the server state (new messages).
|
||||
This mechanism is known as **HTTP long Polling**.
|
||||
|
||||
Using the **HTTP Long Polling** mechanism a client polls a server requesting new information.
|
||||
Using the **HTTP Long Polling** mechanism a client polls a server requesting new information.
|
||||
The server *holds the request open until new data is available*.
|
||||
Once available, the server responds and sends the new information.
|
||||
When the client receives the new information, it immediately sends another request, and the operation is repeated.
|
||||
@@ -52,7 +57,7 @@ By default, this is 0, so the server will return immediately even if the respons
|
||||
|
||||
When the Element Android app is open (i.e in foreground state), the default timeout is 30 seconds, and delay is 0.
|
||||
|
||||
## How does a mobile app receives push notification
|
||||
### How does a mobile app receives push notification
|
||||
|
||||
Push notification is used as a way to wake up a mobile application when some important information is available and should be processed.
|
||||
|
||||
@@ -66,22 +71,22 @@ FCM will only work on android devices that have Google plays services installed
|
||||
(In simple terms, Google Play Services is a background service that runs on Android, which in turn helps in integrating Google’s advanced functionalities to other applications)
|
||||
|
||||
De-Googlified devices need to rely on something else in order to stay up to date with a server.
|
||||
There some cases when devices with google services cannot use FCM (network infrastructure limitations -firewalls- ,
|
||||
privacy and or independency requirement, source code licence)
|
||||
There some cases when devices with google services cannot use FCM (network infrastructure limitations -firewalls-,
|
||||
privacy and or independence requirement, source code licence)
|
||||
|
||||
## Push VS Notification
|
||||
### Push VS Notification
|
||||
|
||||
This need some disambiguation, because it is the source of common confusion:
|
||||
|
||||
|
||||
*The fact that you see a notification on your screen does not mean that you have successfully configured your PUSH plateform.*
|
||||
*The fact that you see a notification on your screen does not mean that you have successfully configured your PUSH platform.*
|
||||
|
||||
Technically there is a difference between a push and a notification. A notification is what you see on screen and/or in the notification Menu/Drawer (in the top bar of the phone).
|
||||
|
||||
Notifications are not always triggered by a push (One can display a notification locally triggered by an alarm)
|
||||
|
||||
|
||||
## Push in the matrix federated world
|
||||
### Push in the matrix federated world
|
||||
|
||||
In order to send a push to a mobile, App developers need to have a server that will use the FCM APIs, and these APIs requires authentication!
|
||||
This server is called a **Push Gateway** in the matrix world
|
||||
@@ -118,11 +123,11 @@ Client/Server API + | | | | |
|
||||
```
|
||||
|
||||
Recommended reading:
|
||||
* https://thomask.sdf.org/blog/2016/12/11/riots-magical-push-notifications-in-ios.html
|
||||
* https://thomask.sdf.org/blog/2016/12/11/riots-magical-push-notifications-in-ios.html
|
||||
* https://matrix.org/docs/spec/client_server/r0.4.0.html#id128
|
||||
|
||||
|
||||
## How does the homeserver know when to notify a client?
|
||||
### How does the homeserver know when to notify a client?
|
||||
|
||||
This is defined by [**push rules**](https://matrix.org/docs/spec/client_server/r0.4.0.html#push-rules-).
|
||||
|
||||
@@ -140,14 +145,14 @@ Of course, content patterns matching cannot be used for encrypted messages serve
|
||||
|
||||
That is why clients are able to **process the push rules client side** to decide what kind of notification should be presented for a given event.
|
||||
|
||||
## Push vs privacy, and mitigation
|
||||
### Push vs privacy, and mitigation
|
||||
|
||||
As seen previously, App developers don't directly send a push to the end user's device, they use a Push Provider as intermediary. So technically this intermediary is able to read the content of what is sent.
|
||||
|
||||
App developers usually mitigate this by sending a `silent notification`, that is a notification with no identifiable data, or with an encrypted payload. When the push is received the app can then synchronise to it's server in order to generate a local notification.
|
||||
|
||||
|
||||
## Background processing limitations
|
||||
### Background processing limitations
|
||||
|
||||
A mobile applications process live in a managed word, meaning that its process can be limited (e.g no network access), stopped or killed at almost anytime by the Operating System.
|
||||
|
||||
@@ -167,15 +172,15 @@ The documentation on this subject is vague, and as per our experiments not alway
|
||||
|
||||
It is getting more and more complex to have reliable notifications when FCM is not used.
|
||||
|
||||
# Element Notification implementations
|
||||
## Element Notification implementations
|
||||
|
||||
## Requirements
|
||||
### Requirements
|
||||
|
||||
Element Android must work with and without FCM.
|
||||
* The Element android app published on F-Droid do not rely on FCM (all related dependencies are not present)
|
||||
* The Element android app published on google play rely on FCM, with a fallback mode when FCM registration has failed (e.g outdated or missing Google Play Services)
|
||||
|
||||
## Foreground sync mode (Gplay & F-Droid)
|
||||
### Foreground sync mode (Gplay and F-Droid)
|
||||
|
||||
When in foreground, Element performs sync continuously with a timeout value set to 10 seconds (see HttpPooling).
|
||||
|
||||
@@ -183,9 +188,9 @@ As this mode does not need to live beyond the scope of the application, and as p
|
||||
|
||||
This mode is turned on when the app enters foreground, and off when enters background.
|
||||
|
||||
In background, and depending on wether push is available or not, Element will use different methods to perform the syncs (Workers / Alarms / Service)
|
||||
In background, and depending on whether push is available or not, Element will use different methods to perform the syncs (Workers / Alarms / Service)
|
||||
|
||||
## Push (FCM) received in background
|
||||
### Push (FCM) received in background
|
||||
|
||||
In order to enable Push, Element must first get a push token from the firebase SDK, then register a pusher with this token on the homeserver.
|
||||
|
||||
@@ -225,10 +230,10 @@ Upon reception of the FCM push, Element will perform a sync call to the homeserv
|
||||
|
||||
Element implements several strategies in these cases (TODO document)
|
||||
|
||||
## FCM Fallback mode
|
||||
### FCM Fallback mode
|
||||
|
||||
It is possible that Element is not able to get a FCM push token.
|
||||
Common errors (amoung several others) that can cause that:
|
||||
Common errors (among several others) that can cause that:
|
||||
* Google Play Services is outdated
|
||||
* Google Play Service fails in someways with FCM servers (infamous `SERVICE_NOT_AVAILABLE`)
|
||||
|
||||
@@ -246,7 +251,7 @@ Usually in this mode, what happen is when you take back your phone in your hand,
|
||||
|
||||
The fallback mode is supposed to be a temporary state waiting for the user to fix issues for FCM, or for App Developers that has done a fork to correctly configure their FCM settings.
|
||||
|
||||
## F-Droid background Mode
|
||||
### F-Droid background Mode
|
||||
|
||||
The F-Droid Element flavor has no dependencies to FCM, therefore cannot relies on Push.
|
||||
|
||||
@@ -256,7 +261,7 @@ Only solution left is to use `AlarmManager`, that offers new API to allow launch
|
||||
|
||||
Notice that these alarms, due to their potential impact on battery life, can still be restricted by the system. Documentation says that they will not be triggered more than every minutes under normal system operation, and when in low power mode about every 15 mn.
|
||||
|
||||
These restrictions can be relaxed by requirering the app to be white listed from battery optimization.
|
||||
These restrictions can be relaxed by requiring the app to be white listed from battery optimization.
|
||||
|
||||
F-Droid version will schedule alarms that will then trigger a Broadcast Receiver, that in turn will launch a Service (in the classic android way), and the reschedule an alarm for next time.
|
||||
|
||||
@@ -266,9 +271,7 @@ That is why on Element F-Droid, the broadcast receiver will acquire a temporary
|
||||
|
||||
Note that foreground services require to put a notification informing the user that the app is doing something even if not launched).
|
||||
|
||||
|
||||
|
||||
# Application Settings
|
||||
## Application Settings
|
||||
|
||||
**Notifications > Enable notifications for this account**
|
||||
|
||||
|
290
docs/pull_request.md
Normal file
290
docs/pull_request.md
Normal file
@@ -0,0 +1,290 @@
|
||||
# Pull requests
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Introduction](#introduction)
|
||||
* [Who should read this document?](#who-should-read-this-document?)
|
||||
* [Submitting PR](#submitting-pr)
|
||||
* [Who can submit pull requests?](#who-can-submit-pull-requests?)
|
||||
* [Humans](#humans)
|
||||
* [Draft PR?](#draft-pr?)
|
||||
* [Base branch](#base-branch)
|
||||
* [PR Review Assignment](#pr-review-assignment)
|
||||
* [PR review time](#pr-review-time)
|
||||
* [Re-request PR review](#re-request-pr-review)
|
||||
* [When create split PR?](#when-create-split-pr?)
|
||||
* [Avoid fixing other unrelated issue in a big PR](#avoid-fixing-other-unrelated-issue-in-a-big-pr)
|
||||
* [Bots](#bots)
|
||||
* [Dependabot](#dependabot)
|
||||
* [Gradle wrapper](#gradle-wrapper)
|
||||
* [Sync analytics plan](#sync-analytics-plan)
|
||||
* [Reviewing PR](#reviewing-pr)
|
||||
* [Who can review pull requests?](#who-can-review-pull-requests?)
|
||||
* [What to have in mind when reviewing a PR](#what-to-have-in-mind-when-reviewing-a-pr)
|
||||
* [Rules](#rules)
|
||||
* [Check the form](#check-the-form)
|
||||
* [PR title](#pr-title)
|
||||
* [PR description](#pr-description)
|
||||
* [File change](#file-change)
|
||||
* [Check the commit](#check-the-commit)
|
||||
* [Check the substance](#check-the-substance)
|
||||
* [Make a dedicated meeting to review the PR](#make-a-dedicated-meeting-to-review-the-pr)
|
||||
* [What happen to the issue(s)?](#what-happen-to-the-issues?)
|
||||
* [Merge conflict](#merge-conflict)
|
||||
* [When and who can merge PR](#when-and-who-can-merge-pr)
|
||||
* [Merge type](#merge-type)
|
||||
* [Resolve conversation](#resolve-conversation)
|
||||
* [Responsibility](#responsibility)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Introduction
|
||||
|
||||
This document gives some clue about how to efficiently manage Pull Requests (PR). This document is a first draft and may be improved later.
|
||||
|
||||
## Who should read this document?
|
||||
|
||||
Every pull request reviewers, but also probably every ones who submit PRs.
|
||||
|
||||
## Submitting PR
|
||||
|
||||
### Who can submit pull requests?
|
||||
|
||||
Basically every one who wants to contribute to the project! But there are some rules to follow.
|
||||
|
||||
#### Humans
|
||||
|
||||
People with write access to the project can directly clone the project, push their branches and create PR.
|
||||
|
||||
External contributors must first fork the project and create PR to the mainline from there.
|
||||
|
||||
##### Draft PR?
|
||||
|
||||
Draft PR can be created when the submitter does not expect the PR to be reviewed and merged yet. It can be useful to publicly show the work, or to do a self-review first.
|
||||
|
||||
Draft PR can also be created when it depends on other un-merged PR.
|
||||
|
||||
In any case, it is better to explicitly declare in the description why the PR is a draft PR.
|
||||
|
||||
Also, draft PR should not stay indefinitely in this state. It may be removed if it is the case and the submitter does not update it after a few days.
|
||||
|
||||
##### Base branch
|
||||
|
||||
The `develop` branch is generally the base branch for every PRs.
|
||||
|
||||
Exceptions can occur:
|
||||
|
||||
- if a feature implementation is split into multiple PRs. We can have a chain of PRs in this case. PR can be merged one by one on develop, and GitHub change the target branch to `develop` for the next PR automatically.
|
||||
- we want to merge a PR from the community, but there is still work to do, and the PR is not updated by the submitter. First, we can kindly ask the submitter if they will update their PR, by commenting it. If there is no answer after a few days (including a week-end), we can create a new branch, push it, and change the target branch of the PR to this new branch. The PR can then be merged, and we can add more commits to fix the issues. After that a new PR can be created with `develop` as a target branch.
|
||||
|
||||
**Important notice 1:** Releases are created from the `develop` branch. So `develop` branch should always contain a "releasable" source code. So when a feature is being implemented with several PRs, it has to be disabled by default (using a feature flag for instance), until the feature is fully implemented. A last PR to enable the feature can then be created.
|
||||
|
||||
**Important notice 2:** Database migration: some developers and some people from the community are using the nightly build from `develop`. Multiple database migrations should be properly handled for them. This is OK to have multiple migrations between 2 releases, this is not OK to add steps to the pending database migration on `develop`. So for instance `develop` users will migrate from version 11 to version 12, then 13, then 14, and `main` users will do all those steps after they get the app upgrade.
|
||||
|
||||
##### PR Review Assignment
|
||||
|
||||
We use automatic assignment for PR reviews. **A PR is automatically routed by GitHub to one team member** using the round robin algorithm. Additional reviewers can be used for complex changes or when the first reviewer is not confident enough on the changes.
|
||||
The process is the following:
|
||||
|
||||
- The PR creator selects the [element-android-reviewers](https://github.com/orgs/vector-im/teams/element-android-reviewers) team as a reviewer.
|
||||
- GitHub automatically assign the reviewer. If the reviewer is not available (holiday, etc.), remove them and set again the team, GitHub will select another reviewer.
|
||||
- Alternatively, the PR creator can directly assign specific people if they have another Android developer in their team or they think a specific reviewer should take a look at their PR.
|
||||
- Reviewers get a notification to make the review: they review the code following the good practice (see the rest of this document).
|
||||
- After making their own review, if they feel not confident enough, they can ask another person for a full review, or they can tag someone within a PR comment to check specific lines.
|
||||
|
||||
For PRs coming from the community, the issue wrangler can assign either the team [element-android-reviewers](https://github.com/orgs/vector-im/teams/element-android-reviewers) or any member directly.
|
||||
|
||||
##### PR review time
|
||||
|
||||
As a PR submitter, you deserve a quick review. As a reviewer, you should do your best to unblock others.
|
||||
|
||||
Some tips to achieve it:
|
||||
|
||||
- Set up your GH notifications correctly
|
||||
- Check your pulls page: [https://github.com/pulls](https://github.com/pulls)
|
||||
- Check your pending assigned PRs before starting or resuming your day to day tasks
|
||||
- If you are busy with high priority tasks, inform the author. They will find another developer
|
||||
|
||||
It is hard to define a deadline for a review. It depends on the PR size and the complexity. Let's start with a goal of 24h (working day!) for a PR smaller than 500 lines. If bigger, the submitter and the reviewer should discuss.
|
||||
|
||||
After this time, the submitter can ping the reviewer to get a status of the review.
|
||||
|
||||
##### Re-request PR review
|
||||
|
||||
Once all the remarks have been handled, it's possible to re-request a review from the (same) reviewer to let them know that the PR has been updated the PR is ready to be reviewed again. Use the double arrow next to the reviewer name to do that.
|
||||
|
||||
##### When create split PR?
|
||||
|
||||
To implement big new feature, it may be efficient to split the work into several smaller and scoped PRs. They will be easier to review, and they can be merged on `develop` faster.
|
||||
|
||||
Big PR can take time, and there is a risk of future merge conflict.
|
||||
|
||||
Feature flag can be used to avoid half implemented feature to be available in the application.
|
||||
|
||||
That said, splitting into several PRs should not have the side effect to have more review to do, for instance if some code is added, then finally removed.
|
||||
|
||||
##### Avoid fixing other unrelated issue in a big PR
|
||||
|
||||
Each PR should focus on a single task. If other issues may be fixed when working in the area of it, it's preferable to open a dedicated PR.
|
||||
|
||||
It will have the advantage to be reviewed and merged faster, and not interfere with the main PR.
|
||||
|
||||
It's also applicable for code rework (such as renaming for instance), or code formatting. Sometimes, it is more efficient to extract that work to a dedicated PR, and rebase your branch once this "rework" PR has been merged.
|
||||
|
||||
#### Bots
|
||||
|
||||
Some bots can create PR, but they still have to be reviewed by the team
|
||||
|
||||
##### Dependabot
|
||||
|
||||
Dependabot is a tool which maintain all our external dependencies up to date. A dedicated PR is created for each new available release for one of our external dependency.Dependabot
|
||||
|
||||
To review such PR, you have to
|
||||
- **IMPORTANT** check the diff files (as always).
|
||||
- Check the release note. Some existing bugs in Element project may be fixed by the upgrade
|
||||
- Make sure that the CI is happy
|
||||
- If the code does not compile (API break for instance), you have to checkout the branch and push new commits
|
||||
- Do some smoke test, depending of the library which has been upgraded
|
||||
|
||||
For some reason dependabot sometimes does not upgrade some dependencies. In this case, and when detected, the upgrade has to be done manually.
|
||||
|
||||
##### Gradle wrapper
|
||||
|
||||
`Update Gradle Wrapper` is a tool which can create PR to upgrade our gradle.properties file.
|
||||
Review such PR is the same recipe than for PR from Dependabot
|
||||
|
||||
##### Sync analytics plan
|
||||
|
||||
This tools imports any update in the analytics plan. See instruction in the PR itself to handle it.
|
||||
More info can be found in the file [analytics.md](./analytics.md)
|
||||
|
||||
## Reviewing PR
|
||||
|
||||
### Who can review pull requests?
|
||||
|
||||
As an open source project, every one can review each others PR. Of course an approval from internal developer is mandatory for a PR to be merged.
|
||||
But comment in PR from the community are always appreciated!
|
||||
|
||||
### What to have in mind when reviewing a PR
|
||||
|
||||
1. User experience: is the UX and UI correct? You will probably be the second person to test the new thing, the first one is the developer.
|
||||
2. Developer experience: does the code look nice and decoupled? No big functions, new classes added to the right module, etc.
|
||||
3. Code maintenance. A bit similar to point 2. Tricky code must be documented for instance
|
||||
4. Fork consideration. Will configuration of forks be easy? Some documentation may help in some cases.
|
||||
5. We are building long term products. "Quick and dirty" code must be avoided.
|
||||
6. The PR includes new tests for the added code, updated test for the existing code
|
||||
7. All PRs from external contributors **MUST** include a sign-off. It's in the checklist, and sometimes it's checked by the submitter, but there is actually no sign-off. In this case, ask nicely for a sign-off and request changes (do not approve the PR, even if everything else is fine).
|
||||
|
||||
### Rules
|
||||
|
||||
#### Check the form
|
||||
|
||||
##### PR title
|
||||
|
||||
PR title should describe in one line what's brought by the PR. Reviewer can edit the title if it's not clear enough, or to add suffix like `[BLOCKED]` or similar. Fixing typo is also a good practice, since GitHub search is quite not efficient, so the words must be spelled without any issue. Adding suffix will help when viewing the PR list.
|
||||
|
||||
It's free form, but prefix tags could also be used to help understand what's in the PR.
|
||||
|
||||
Examples of prefixes:
|
||||
- `[Refacto]`
|
||||
- `[Feature]`
|
||||
- `[Bugfix]`
|
||||
- etc.
|
||||
|
||||
Also, it's still possible to add labels to the PRs, such as `A-` or `T-` labels, even if this is not a strong requirement. We prefer to spend time to add labels on issues.
|
||||
|
||||
##### PR description
|
||||
|
||||
PR description should follow the PR template, and at least provide some context about the code change.
|
||||
|
||||
##### File change
|
||||
|
||||
1. Code should follow the guidelines
|
||||
2. Code should be formatted correctly
|
||||
3. XML attribute must be sorted
|
||||
4. New code is added at the correct location
|
||||
5. New classes are added to the correct location
|
||||
6. Naming is correct. Naming is really important, it's considered part of the documentation
|
||||
7. Architecture is followed. For instance, the logic is in the ViewModel and not in the Fragment
|
||||
8. There is at least one file for the changelog. Exception if the PR fixes something which has not been released yet. Changelog content should target their audience: `.sdk` extension are mainly targeted for developers, other extensions are targeted for users and forks maintainers. It should generally describe visual change rather than give technical details. More details can be found [here](../CONTRIBUTING.md#changelog).
|
||||
9. PR includes tests. allScreensTest when applicable, and unit tests
|
||||
10. Avoid over complicating things. Keep it simple (KISS)!
|
||||
11. PR contains only the expected change. Sometimes, the diff is showing changes that are already on `develop`. This is not good, submitter has to fix that up.
|
||||
|
||||
##### Check the commit
|
||||
|
||||
Commit message must be short, one line and valuable. "WIP" is not a good commit message. Commit message can contain issue number, starting with `#`. GitHub will add some link between the issue and such commit, which can be useful. It's possible to change a commit message at any time (may require a force push).
|
||||
|
||||
Commit messages can contain extra lines with more details, links, etc. But keep in mind that those lines are quite less visible than the first line.
|
||||
|
||||
Also commit history should be nice. Having commits like "Adding temporary code" then later "Removing temporary code" is not good. The branch has to be rebased and those commit have to be dropped.
|
||||
|
||||
PR merger could decide to squash and merge if commit history is not good.
|
||||
|
||||
Commit like "Code review fixes" is good when reviewing the PR, since new changes can be reviewed easily, but is less valuable when looking at git history. To avoid this, PR submitter should always push new commits after a review (no commit amend with force push), and when the PR is approved decide to interactive rebase the PR to improve the git history and reduce noise.
|
||||
|
||||
##### Check the substance
|
||||
|
||||
1. Test the changes!
|
||||
2. Test the nominal case and the edge cases
|
||||
3. Run the sanity test for critical PR
|
||||
|
||||
##### Make a dedicated meeting to review the PR
|
||||
|
||||
Sometimes a big PR can be hard to review. Setting up a call with the PR submitter can speed up the communication, rather than putting comments and questions in GitHub comments. It has the inconvenience of making the discussion non-public, consider including a summary of the main points of the "offline" conversation in the PR.
|
||||
|
||||
### What happen to the issue(s)?
|
||||
|
||||
The issue(s) should be referenced in the PR description using keywords like `Closes` of `Fixes` followed by the issue number.
|
||||
|
||||
Example:
|
||||
> Closes #1
|
||||
|
||||
Note that you have to repeat the keyword in case of a list of issue
|
||||
|
||||
> Closes #1, Closes #2, etc.
|
||||
|
||||
When PR will be merged, such referenced issue will be automatically closed.
|
||||
It is up to the person who has merged the PR to go to the (closed) issue(s) and to add a comment to inform in which version the issue fix will be available. Use the current version of `develop` branch.
|
||||
|
||||
> Closed in Element Android v1.x.y
|
||||
|
||||
### Merge conflict
|
||||
|
||||
It's up to the submitter to handle merge conflict. Sometimes, they can be fixed directly from GitHub, sometimes this is not possible. The branch can be rebased on `develop`, or the `develop` branch can be merged on the branch, it's up to the submitter to decide what is best.
|
||||
Keep in mind that Github Actions are not run in case of conflict.
|
||||
|
||||
### When and who can merge PR
|
||||
|
||||
PR can be merged by the submitter, if and only if at least one approval from another developer is done. Approval from all people added as reviewer is also a good thing to have. Approval from design team may be mandatory, but is not sufficient to merge a PR.
|
||||
|
||||
PR can also be merged by the reviewer, to reduce the time the PR is open. But only if the PR is not in draft and the change are quite small, or behind a feature flag.
|
||||
|
||||
Dangerous PR should not be merged just before a release. Dangerous PR are PR that could break the app. Update of Realm library, rework in the chunk of Events management in the SDK, etc.
|
||||
|
||||
We prefer to merge such PR after a release so that it can be tested during several days by the team before behind included in a release candidate.
|
||||
|
||||
PR from bots will always be merged by the reviewer, right after approving the changes, or in case of critical changes, right after a release.
|
||||
|
||||
#### Merge type
|
||||
|
||||
Generally we use "Create a merge commit", which has the advantage to keep the branch visible.
|
||||
|
||||
If git history is noisy (code added, then removed, etc.), it's possible to use "Squash and merge". But the branch will not be visible anymore, a commit will be added on top of develop. Git commit message can (and probably must) be edited from the GitHub web app. It's better if the submitter do the work to cleanup the git history by using a git interactive rebase of their branch.
|
||||
|
||||
### Resolve conversation
|
||||
|
||||
Generally we do not close conversation added during PR review and update by clicking on "Resolve conversation"
|
||||
If the submitter or the reviewer do so, it will more difficult for further readers to see again the content. They will have to open the conversation to see it again. it's a waste of time.
|
||||
|
||||
When remarks are handled, a small comment like "done" is enough, commit hash can also be added to the conversation.
|
||||
|
||||
Exception: for big PRs with lots of conversations, using "Resolve conversation" may help to see the remaining remarks.
|
||||
|
||||
Also "Resolve conversation" should probably be hit by the creator of the conversation.
|
||||
|
||||
## Responsibility
|
||||
|
||||
PR submitter is responsible of the incoming change. PR reviewers who approved the PR take a part of responsibility on the code which will land to develop, and then be used by our users, and the user of our forks.
|
||||
|
||||
That said, bug may still be merged on `develop`, this is still acceptable of course. In this case, please make sure an issue is created and correctly labelled. Ideally, such issues should be fixed before the next release candidate, i.e. with a higher priority. But as we release the application every 10 working days, it can be hard to fix every bugs. That's why PR should be fully tested and reviewed before being merge and we should never comment code review remark with "will be handled later", or similar comments.
|
@@ -2,6 +2,27 @@
|
||||
|
||||
This document describes the flow of signin to a homeserver, and also the flow when user want to reset his password. Examples come from the `matrix.org` homeserver.
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Sign in flows](#sign-in-flows)
|
||||
* [Get the flow](#get-the-flow)
|
||||
* [Login with username](#login-with-username)
|
||||
* [Incorrect password](#incorrect-password)
|
||||
* [Correct password:](#correct-password:)
|
||||
* [Login with email](#login-with-email)
|
||||
* [Unknown email](#unknown-email)
|
||||
* [Known email, wrong password](#known-email-wrong-password)
|
||||
* [Known email, correct password](#known-email-correct-password)
|
||||
* [Login with Msisdn](#login-with-msisdn)
|
||||
* [Login with SSO](#login-with-sso)
|
||||
* [Reset password](#reset-password)
|
||||
* [Send email](#send-email)
|
||||
* [When the email is not known](#when-the-email-is-not-known)
|
||||
* [When the email is known](#when-the-email-is-known)
|
||||
* [User clicks on the link](#user-clicks-on-the-link)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Sign in flows
|
||||
|
||||
### Get the flow
|
||||
@@ -322,4 +343,4 @@ curl -X POST --data $'{"auth":{"type":"m.login.email.identity","threepid_creds":
|
||||
{}
|
||||
```
|
||||
|
||||
The password has been changed, and all the existing token are invalidated. User can now login with the new password.
|
||||
The password has been changed, and all the existing token are invalidated. User can now login with the new password.
|
||||
|
@@ -4,6 +4,20 @@ This document describes the flow of registration to a homeserver. Examples come
|
||||
|
||||
*Ref*: https://matrix.org/docs/spec/client_server/latest#account-registration-and-management
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Sign up flows](#sign-up-flows)
|
||||
* [First step](#first-step)
|
||||
* [Step 1: entering user name and password](#step-1:-entering-user-name-and-password)
|
||||
* [If username already exists](#if-username-already-exists)
|
||||
* [Step 2: entering email](#step-2:-entering-email)
|
||||
* [Step 2 bis: user enters an email](#step-2-bis:-user-enters-an-email)
|
||||
* [Step 3: Accepting T&C](#step-3:-accepting-t&c)
|
||||
* [Step 4: Captcha](#step-4:-captcha)
|
||||
* [Step 5: MSISDN](#step-5:-msisdn)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Sign up flows
|
||||
|
||||
### First step
|
||||
|
@@ -10,6 +10,20 @@ Currently the test are covering a small set of application flows:
|
||||
- Self verification via emoji
|
||||
- Self verification via passphrase
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Prerequisites:](#prerequisites:)
|
||||
* [Run the tests](#run-the-tests)
|
||||
* [From the source code](#from-the-source-code)
|
||||
* [From command line](#from-command-line)
|
||||
* [Recipes](#recipes)
|
||||
* [Wait for initial sync](#wait-for-initial-sync)
|
||||
* [Accessing current activity](#accessing-current-activity)
|
||||
* [Interact with other session](#interact-with-other-session)
|
||||
* [Contributing to the UiAllScreensSanityTest](#contributing-to-the-uiallscreenssanitytest)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Prerequisites:
|
||||
|
||||
Out of the box, the tests use one of the homeservers (located at http://localhost:8080) of the "Demo Federation of Homeservers" (https://github.com/matrix-org/synapse#running-a-demo-federation-of-synapses).
|
||||
@@ -176,4 +190,4 @@ class SettingsAdvancedRobot {
|
||||
clickOn(R.string.settings_developer_mode_summary)
|
||||
}
|
||||
}
|
||||
```
|
||||
```
|
||||
|
58
docs/unifiedpush.md
Normal file
58
docs/unifiedpush.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# UnifiedPush
|
||||
|
||||
<!--- TOC -->
|
||||
|
||||
* [Introduction](#introduction)
|
||||
* [Configuration in Element-Android and their forks](#configuration-in-element-android-and-their-forks)
|
||||
* [Enabling and disabling the feature](#enabling-and-disabling-the-feature)
|
||||
* [Override the configuration at runtime](#override-the-configuration-at-runtime)
|
||||
* [Enabling the feature](#enabling-the-feature)
|
||||
* [Disabling the feature](#disabling-the-feature)
|
||||
* [Useful links](#useful-links)
|
||||
|
||||
<!--- END -->
|
||||
|
||||
## Introduction
|
||||
|
||||
The recently started UnifiedPush project is an Android protocol and library for apps to be able to receive distributor-agnostic push notifications.
|
||||
|
||||
The *F-Droid* and *Gplay* flavors of Element Android support UnifiedPush, so the user can use any distributor installed on their devices. This would make it possible to have push notifications without depending on Google services or libraries. Currently, the main distributors are [ntfy](https://ntfy.sh) which does not require any setup (like manual registration) to use the public server and [NextPush](https://github.com/UP-NextPush/android), available as a nextcloud application.
|
||||
|
||||
The *Gplay* variant uses a UnifiedPush library which basically embed a FCM distributor built into the application (so a user doesn't need to do anything other than install the app to get FCM notifications). This variant uses Google Services to receive notifications if the user has not installed any distributor.
|
||||
|
||||
The *F-Droid* variant does not use this library to avoid any proprietary blob. It will use a polling service if the user has not installed any distributor.
|
||||
|
||||
In all cases, if there are other distributors available, the user will have to opt-in to one of them in the preferences.
|
||||
|
||||
## Configuration in Element-Android and their forks
|
||||
|
||||
### Enabling and disabling the feature
|
||||
|
||||
Allowing the user to use an alternative distributor can be changed in [Config](../vector-config/src/main/java/im/vector/app/config/Config.kt). The flag is named `ALLOW_EXTERNAL_UNIFIED_PUSH_DISTRIBUTORS`. Default value is `true`.
|
||||
|
||||
#### Override the configuration at runtime
|
||||
|
||||
On debug version, it is possible to override this configuration at runtime, using the `Feature` screen. The Feature is named `Allow external UnifiedPush distributors`.
|
||||
|
||||
#### Enabling the feature
|
||||
|
||||
This is the default behavior of Element Android.
|
||||
|
||||
If `ALLOW_EXTERNAL_UNIFIED_PUSH_DISTRIBUTORS` is set to true, it allows any available external UnifiedPush distributor to be chosen by the user.
|
||||
- For Gplay variant it means that FCM will be used by default, but user can choose another UnifiedPush distributor;
|
||||
- For F-Droid variant, it means that background polling will be used by default, but user can choose another UnifiedPush distributor.
|
||||
- On the UI, the setting to choose an alternative distributor will be visible to the user, and some tests in the notification troubleshoot screen will shown.
|
||||
- For F-Droid, if the user has chosen a distributor, the settings to configure the background polling will be hidden.
|
||||
|
||||
#### Disabling the feature
|
||||
|
||||
If `ALLOW_EXTERNAL_UNIFIED_PUSH_DISTRIBUTORS` is set to false, it prevents the usage of external UnifiedPush distributors.
|
||||
- For Gplay variant it means that only FCM will be used;
|
||||
- For F-Droid variant, it means that only background polling will be used.
|
||||
- On the UI, the setting to choose an alternative distributor will be hidden to the user, and some tests in the notification troubleshoot screen will be hidden.
|
||||
|
||||
### Useful links
|
||||
|
||||
- UnifiedPush official website: [https://unifiedpush.org/](https://unifiedpush.org/)
|
||||
- List of available distributors can be retrieved here: [https://unifiedpush.org/users/distributors/](https://unifiedpush.org/users/distributors/)
|
||||
- UnifiedPush project discussion can occurs here: [#unifiedpush:matrix.org](https://matrix.to/#/#unifiedpush:matrix.org)
|
@@ -1,64 +1,49 @@
|
||||
fastlane documentation
|
||||
----
|
||||
|
||||
================
|
||||
# Installation
|
||||
|
||||
Make sure you have the latest version of the Xcode command line tools installed:
|
||||
|
||||
```sh
|
||||
```
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
|
||||
Install _fastlane_ using
|
||||
```
|
||||
[sudo] gem install fastlane -NV
|
||||
```
|
||||
or alternatively using `brew install fastlane`
|
||||
|
||||
# Available Actions
|
||||
|
||||
## Android
|
||||
|
||||
### android test
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android test
|
||||
```
|
||||
|
||||
fastlane android test
|
||||
```
|
||||
Runs all the tests
|
||||
|
||||
### android beta
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android beta
|
||||
```
|
||||
|
||||
fastlane android beta
|
||||
```
|
||||
Submit a new Beta Build to Crashlytics Beta
|
||||
|
||||
### android deploy
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android deploy
|
||||
```
|
||||
|
||||
fastlane android deploy
|
||||
```
|
||||
Deploy a new version to the Google Play
|
||||
|
||||
### android deployMeta
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android deployMeta
|
||||
```
|
||||
|
||||
fastlane android deployMeta
|
||||
```
|
||||
Deploy Google Play metadata
|
||||
|
||||
### android getVersionCode
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android getVersionCode
|
||||
```
|
||||
|
||||
fastlane android getVersionCode
|
||||
```
|
||||
Get version code
|
||||
|
||||
----
|
||||
|
||||
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
||||
|
||||
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
|
||||
|
||||
The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
|
||||
More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
|
||||
The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
|
||||
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104040.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104040.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: vylepšení indikátoru psaní. Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases/tag/v1.4.4
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104060.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104060.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Časová osa vláken je nyní živá a rychlejší. Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases/tag/v1.4.6
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104070.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104070.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases/tag/v1.4.7
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104080.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104080.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Časová osa vlákna je nyní živá a rychlejší. Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104100.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104100.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Posun přehrávání v hlasových zprávách. Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104110.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104110.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104120.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104120.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Umožňuje uživatelům zobrazovat se offline a přidává zvukový přehrávač pro zvukové přílohy
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104130.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104130.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Umožňuje uživatelům zobrazovat se offline a přidává zvukový přehrávač pro zvukové přílohy
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104140.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104140.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Zlepšení správy ignorovaných uživatelů. Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104160.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104160.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Vylepšena správa šifrovaných zpráv. Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104180.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104180.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104190.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104190.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/cs-CZ/changelogs/40104200.txt
Normal file
2
fastlane/metadata/android/cs-CZ/changelogs/40104200.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hlavní změny v této verzi: Opravy různých chyb a vylepšení stability.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40104040.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104040.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Neuer Tippindikator und Bugfixes
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases/tag/v1.4.4
|
2
fastlane/metadata/android/de-DE/changelogs/40104060.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104060.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hauptänderungen: Threads sind jetzt schneller, Fehlerbehebungen.
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40104070.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104070.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Änderungen: Fehlerbehebungen
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases/tag/v1.4.7
|
2
fastlane/metadata/android/de-DE/changelogs/40104080.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104080.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hauptänderungen: Schnellere Threads, Fehlerbehebungen.
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40104100.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104100.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hauptänderungen: Scrollen in Sprachnachrichten, Fehlerbehebungen.
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40104110.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104110.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Änderungen: Fehlerbehebungen und Stabilitätsverbesserungen
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40104120.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104120.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hauptänderungen: Nutzer können ihren Status auf „Offline“ setzen, Gesendete Audiodateien können nun in der App abgespielt werden
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/de-DE/changelogs/40104130.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/40104130.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Hauptänderungen: Nutzer können ihren Status auf „Offline“ setzen, Gesendete Audiodateien können nun in der App abgespielt werden
|
||||
Alle Änderungen: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104100.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104100.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Scroll in voice message. Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104110.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104110.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104120.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104120.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Allows users to appear offline and adds an audio player for audio attachments
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104130.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104130.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Allows users to appear offline and adds an audio player for audio attachments
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104140.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104140.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Improve management of ignored users. Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104160.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104160.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Better management of encrypted messages. Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104180.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104180.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104190.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104190.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104200.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104200.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104220.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104220.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104230.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104230.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104240.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104240.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104250.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104250.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104260.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104260.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Use UnifiedPush and allows user to have push without FCM.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/en-US/changelogs/40104270.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40104270.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Main changes in this version: Various bug fixes and stability improvements.
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
2
fastlane/metadata/android/es-ES/changelogs/40103030.txt
Normal file
2
fastlane/metadata/android/es-ES/changelogs/40103030.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
Cambios principales en esta versión: Hacer la política de servidores de indentidad visible en los ajusted. Temporalmente quitar soporte para Android Auto.
|
||||
Registro de cambios: https://github.com/vector-im/element-android/releases/tag/v1.3.3
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user