mirror of https://github.com/tasks/tasks
Compare commits
1659 Commits
Author | SHA1 | Date |
---|---|---|
Alex Baker | 08da2f56a6 | 8 hours ago |
Alex Baker | 7d52d58f3d | 8 hours ago |
Alex Baker | 282042538c | 10 hours ago |
Alex Baker | 8ccab99f23 | 1 day ago |
Alex Baker | f459541902 | 1 day ago |
renovate[bot] | c2feb2144f | 1 day ago |
renovate[bot] | 22366a8de6 | 1 day ago |
renovate[bot] | 5ae53e63ff | 1 day ago |
CSharpest | 00c3a117ac | 1 day ago |
Rami Lehtinen | 922dd861b0 | 1 day ago |
Alex Baker | 4770acbd65 | 4 days ago |
Alex Baker | 45911b149a | 4 days ago |
Alex Baker | 9f7dfc11ec | 6 days ago |
Alex Baker | 0b76553122 | 6 days ago |
Alex Baker | 8ac5d51308 | 6 days ago |
Alex Baker | 4f2d676ae4 | 1 week ago |
Alex Baker | 59d81f5755 | 1 week ago |
Alex Baker | 8547fa2459 | 1 week ago |
Milo Ivir | 6bb1a9748c | 1 week ago |
gallegonovato | 81a0034cba | 1 week ago |
renovate[bot] | 475ff37d70 | 1 week ago |
renovate[bot] | 2015f8d0ef | 1 week ago |
Alex Baker | 8c9b996cb8 | 1 week ago |
Alex Baker | 87ae179efc | 1 week ago |
Alex Baker | 79ebc9a2c7 | 1 week ago |
Alex Baker | bf4167651b | 1 week ago |
renovate[bot] | b990716502 | 1 week ago |
Alex Baker | 285b0a9486 | 1 week ago |
Alex Baker | 01a788bdb6 | 1 week ago |
大王叫我来巡山 | 12c7170a0b | 1 week ago |
Oğuz Ersen | aa278922f5 | 1 week ago |
Jose Delvani | 2be5d3bbbc | 1 week ago |
renovate[bot] | 7673710d44 | 1 week ago |
Alex Baker | cb31651c2a | 2 weeks ago |
Alex Baker | fb7960bf26 | 2 weeks ago |
renovate[bot] | fecfea8df5 | 2 weeks ago |
Alex Baker | 6ce170533e | 2 weeks ago |
Alex Baker | ad4d938b94 | 2 weeks ago |
renovate[bot] | 1702249abc | 2 weeks ago |
renovate[bot] | b52d954731 | 2 weeks ago |
Alex Baker | a1a02faf3d | 2 weeks ago |
Alex Baker | 9307b8fb7d | 2 weeks ago |
Alex Baker | 8b345316a8 | 2 weeks ago |
Alex Baker | ab0f123c8a | 2 weeks ago |
renovate[bot] | 36a28b6210 | 2 weeks ago |
renovate[bot] | d2ae1008f5 | 2 weeks ago |
Alex Baker | 17af8ab373 | 2 weeks ago |
renovate[bot] | e78d452d7b | 2 weeks ago |
renovate[bot] | e9ddf29b9c | 2 weeks ago |
renovate[bot] | 898c88bec9 | 2 weeks ago |
renovate[bot] | 184e7def49 | 2 weeks ago |
Alex Baker | d8186e5fe4 | 2 weeks ago |
Alex Baker | a4cd0829b0 | 2 weeks ago |
Alex Baker | 9a693177db | 2 weeks ago |
Alex Baker | 58955bd0a1 | 2 weeks ago |
renovate[bot] | 95ecac8e7c | 2 weeks ago |
renovate[bot] | 57395423c6 | 2 weeks ago |
renovate[bot] | b1613e9845 | 2 weeks ago |
renovate[bot] | dcd70c7bc2 | 2 weeks ago |
Alex Baker | c1e2eb7cd0 | 2 weeks ago |
Alex Baker | 145ea03714 | 2 weeks ago |
Alex Baker | bada09f5c2 | 2 weeks ago |
Alex Baker | 007c536312 | 2 weeks ago |
renovate[bot] | 28de989a05 | 2 weeks ago |
Alex Baker | 97c3852f2f | 2 weeks ago |
hugoalh | f739cac8b4 | 2 weeks ago |
min7-i | cd6a474cce | 2 weeks ago |
Jose Delvani | 4ffc11903e | 2 weeks ago |
Jose Delvani | 70d6cc63ca | 2 weeks ago |
islam2hamy | 6e97e602c9 | 2 weeks ago |
Alex Baker | 3251becf9b | 2 weeks ago |
Alex Baker | d9293c7262 | 2 weeks ago |
Alex Baker | 929a01cd8c | 2 weeks ago |
Alex Baker | 0d5803b9ca | 2 weeks ago |
Alex Baker | bbaaf27386 | 2 weeks ago |
Alex Baker | 4c1121869d | 3 weeks ago |
Alex Baker | b918e87e05 | 3 weeks ago |
Alex Baker | df8f637239 | 3 weeks ago |
Alex Baker | 9fad43c6c9 | 3 weeks ago |
Alex Baker | eb95cd24d7 | 3 weeks ago |
Alex Baker | 30cb374a21 | 3 weeks ago |
Alex Baker | b09a8967e4 | 3 weeks ago |
Alex Baker | 39b56296bd | 3 weeks ago |
Alex Baker | 1d8d2efce6 | 4 weeks ago |
Alex Baker | c9af39b6ba | 4 weeks ago |
renovate[bot] | f8bb045d76 | 4 weeks ago |
renovate[bot] | 4040a2379b | 4 weeks ago |
Alex Baker | c4ee7479ca | 4 weeks ago |
Alex Baker | be861597ef | 4 weeks ago |
Alex Baker | f27332595d | 4 weeks ago |
Alex Baker | ea7f051d85 | 4 weeks ago |
Alex Baker | 8be7fab033 | 4 weeks ago |
Alex Baker | d6e0c0bdcf | 4 weeks ago |
Alex Baker | 5ec02011f8 | 4 weeks ago |
Alex Baker | b35090cd43 | 4 weeks ago |
renovate[bot] | 92f62450ae | 4 weeks ago |
renovate[bot] | 3ca6912492 | 4 weeks ago |
renovate[bot] | 080b1428dd | 4 weeks ago |
Alex Baker | f67c3bc56c | 4 weeks ago |
renovate[bot] | 5d0e88a620 | 4 weeks ago |
renovate[bot] | c5d5795fe2 | 4 weeks ago |
renovate[bot] | 3bbc0e0ab0 | 4 weeks ago |
Alex Baker | 009a195580 | 4 weeks ago |
renovate[bot] | 772f69d8c0 | 1 month ago |
renovate[bot] | 4229bf7067 | 1 month ago |
Alex Baker | 212a4b0a3d | 1 month ago |
Alex Baker | 4ddfe937b0 | 1 month ago |
Alex Baker | 19de0e08a5 | 1 month ago |
Alex Baker | 60211355e0 | 1 month ago |
Alex Baker | 17d218aa4e | 1 month ago |
Alex Baker | 505c8c29d5 | 1 month ago |
Alex Baker | 7149308c97 | 1 month ago |
Alex Baker | 2c5a497007 | 1 month ago |
Alex Baker | 09f53fe1e5 | 1 month ago |
Alex Baker | 5da4183aed | 1 month ago |
Alex Baker | d35912e503 | 1 month ago |
renovate[bot] | 82fd99f83e | 1 month ago |
renovate[bot] | f944becea1 | 1 month ago |
Alex Baker | acd713dc5b | 1 month ago |
Alex Baker | 1a93c87ad9 | 1 month ago |
Alex Baker | c4e25b8b15 | 1 month ago |
Alex Baker | e11c0d2528 | 1 month ago |
Alex Baker | 2fc6833854 | 1 month ago |
Alex Baker | 4a2fb13d10 | 1 month ago |
Alex Baker | a2572e2dee | 1 month ago |
Alex Baker | 64e05c9f8f | 1 month ago |
Alex Baker | ad833b5f49 | 1 month ago |
Alex Baker | eea944cc7b | 1 month ago |
Alex Baker | c82dfc7d39 | 1 month ago |
Alex Baker | 8607f9556a | 1 month ago |
Alex Baker | f338e84d46 | 1 month ago |
Alex Baker | 9ee739627e | 1 month ago |
Alex Baker | a49c233584 | 1 month ago |
Alex Baker | 74fca07c1b | 1 month ago |
Alex Baker | 5bd0cef42e | 1 month ago |
Alex Baker | 4c245edbb4 | 1 month ago |
Alex Baker | 97a3f074d0 | 1 month ago |
Alex Baker | 86ecd3cf81 | 1 month ago |
Alex Baker | 07a2eda5ea | 1 month ago |
renovate[bot] | 09ffbdd036 | 1 month ago |
renovate[bot] | 60f22146ca | 1 month ago |
renovate[bot] | c11225abaf | 1 month ago |
dependabot[bot] | 133ea493e3 | 1 month ago |
Alex Baker | 0ba901be69 | 2 months ago |
Alex Baker | ebe5e5c009 | 2 months ago |
Alex Baker | d556863fda | 2 months ago |
Alex Baker | 55adbc2025 | 2 months ago |
Alex Baker | 06c4255886 | 2 months ago |
renovate[bot] | 4734a99bae | 2 months ago |
Alex Baker | a6a8cac8e4 | 2 months ago |
Alex Baker | c3fc9a57cc | 2 months ago |
Alex Baker | 6e14d07d0c | 2 months ago |
Alex Baker | 6118121698 | 2 months ago |
Alex Baker | 6bf3bd4d08 | 2 months ago |
Alex Baker | 065be79355 | 2 months ago |
Alex Baker | f8f8ba3c51 | 2 months ago |
Alex Baker | 89465f36b3 | 2 months ago |
Alex Baker | 1380a34ffa | 2 months ago |
Alex Baker | 10af5280a3 | 2 months ago |
Alex Baker | 8c0f7b952d | 2 months ago |
Alex Baker | 65362b203f | 2 months ago |
Alex Baker | 3327f97a17 | 2 months ago |
Alex Baker | c9fc02a42e | 2 months ago |
renovate[bot] | 93670bb9e4 | 2 months ago |
Alex Baker | 1fc6a50d0b | 2 months ago |
Alex Baker | e1ef924909 | 2 months ago |
Alex Baker | 686cb5d346 | 2 months ago |
renovate[bot] | ebec25c4cb | 2 months ago |
renovate[bot] | c140f7e673 | 2 months ago |
renovate[bot] | efbcf11a4a | 2 months ago |
renovate[bot] | 6adee85a37 | 2 months ago |
Alex Baker | 5c8643110b | 2 months ago |
Alex Baker | abd13aeb75 | 2 months ago |
Alex Baker | c210fe1893 | 2 months ago |
Alex Baker | 26aa916c20 | 2 months ago |
renovate[bot] | 1eff2d1cd5 | 2 months ago |
islam2hamy | c90e683ea3 | 2 months ago |
Alex Baker | 3cd0295b71 | 2 months ago |
Alex Baker | 95c351e9fd | 2 months ago |
renovate[bot] | 4ddb7816f1 | 2 months ago |
renovate[bot] | 91c30f7bbf | 2 months ago |
renovate[bot] | 3f4398b6e0 | 2 months ago |
renovate[bot] | c822e989a3 | 2 months ago |
renovate[bot] | da146723e5 | 2 months ago |
109247019824 | 931626c84a | 2 months ago |
Alex Baker | c534632c52 | 2 months ago |
Alex Baker | c1347a7455 | 2 months ago |
renovate[bot] | 9544909a58 | 2 months ago |
Yurt Page | 5c10dce2b9 | 2 months ago |
Alex Baker | 584d4a5cbb | 2 months ago |
Alex Baker | 7c68a7fa59 | 2 months ago |
purushottamyadavbattula | 215cc838ef | 2 months ago |
Alex Baker | d60472d1bc | 2 months ago |
Alex Baker | f84a37a60a | 2 months ago |
Alex Baker | 7fb85b6da1 | 2 months ago |
Alex Baker | dc90e583e4 | 2 months ago |
Don Zouras | 0eac5f61eb | 2 months ago |
Milo Ivir | c686ce883d | 2 months ago |
大王叫我来巡山 | ab25398cd0 | 2 months ago |
renovate[bot] | 3b1c133d22 | 2 months ago |
renovate[bot] | 3bfd0ab4f8 | 2 months ago |
Liz de Sartiges | ffc0113d7f | 2 months ago |
Don Zouras | 9de9718ad5 | 2 months ago |
Oğuz Ersen | a7d2c9c406 | 2 months ago |
gallegonovato | b3006b9ac2 | 2 months ago |
Don Zouras | de3ef1f9c9 | 2 months ago |
Alex Baker | ce9e722a3f | 2 months ago |
Alex Baker | 4b892a0eb1 | 2 months ago |
Hady | e6e275834a | 2 months ago |
Alex Baker | 782f4d6d7c | 2 months ago |
elmuffo | a1da71d3e1 | 2 months ago |
Alex Baker | c793a300cc | 2 months ago |
Ilya Bizyaev | bf84bf9e82 | 2 months ago |
SC | 363b29babb | 2 months ago |
min7-i | c1ff953f5c | 3 months ago |
Alex Baker | 63482e5db9 | 3 months ago |
Emin Tufan Çetin | 2f7dc0c7f1 | 3 months ago |
Lionel HANNEQUIN | d672507fae | 3 months ago |
Jonatan Nyberg | ce2a3c8a3f | 3 months ago |
sorifukobexomajepasiricupuva33 | 9cd114d68b | 3 months ago |
Patrick V. Leguizamon | 0e663f0e08 | 3 months ago |
Mayhm | 1d1efd008d | 3 months ago |
Alex Baker | 26ab3d5866 | 3 months ago |
Mayhm | 9a4fcbbd39 | 3 months ago |
Alex Baker | 72bfda9224 | 3 months ago |
Alex Baker | 1067de4183 | 3 months ago |
Alex Baker | d686b8c7e0 | 3 months ago |
Alex Baker | b2efb42d55 | 3 months ago |
Fabio Parri | 3448808c94 | 3 months ago |
Alex Baker | 06a9626052 | 3 months ago |
Alex Baker | e92ab7f7e1 | 3 months ago |
Alex Baker | 4ff7b18c0f | 3 months ago |
Alex Baker | 91887f6b17 | 3 months ago |
Alex Baker | cf30b56098 | 3 months ago |
Alex Baker | 9bcadaab5a | 3 months ago |
Alex Baker | be766074b0 | 3 months ago |
Ihor Hordiichuk | 64a42a3f61 | 3 months ago |
Mayhm | 7b65ba6f06 | 3 months ago |
109247019824 | ac2b270e9e | 3 months ago |
Alex Baker | db2ea0a039 | 3 months ago |
renovate[bot] | 08b78fe9f4 | 3 months ago |
Alex Baker | 1a1301ae3e | 3 months ago |
Milo Ivir | d00061aa7f | 3 months ago |
大王叫我来巡山 | 45add6ab32 | 3 months ago |
Pierfrancesco Passerini | af43737c4e | 3 months ago |
macpac59 | dd40e59b17 | 3 months ago |
gallegonovato | 13f3248a01 | 3 months ago |
renovate[bot] | f6972e3e30 | 3 months ago |
Alex Baker | 83cf48a836 | 3 months ago |
Alex Baker | b7b4747a04 | 3 months ago |
Alex Baker | 6bec2ceef0 | 3 months ago |
Milo Ivir | d1e60d6512 | 3 months ago |
bittin1ddc447d824349b2 | 2b85089d3a | 3 months ago |
ferranpujolcamins | 2a0ef9feb6 | 3 months ago |
109247019824 | 33adbbd884 | 3 months ago |
Alex Baker | c25eb2e0c5 | 3 months ago |
Alex Baker | 14026356eb | 3 months ago |
Alex Baker | b328651dd4 | 3 months ago |
Alex Baker | a0e9bfabeb | 3 months ago |
大王叫我来巡山 | a1ad421b33 | 3 months ago |
Mayhm | 3488a08af1 | 3 months ago |
gallegonovato | b71d1af516 | 3 months ago |
Alex Baker | 041dce8617 | 3 months ago |
Alex Baker | 3d92ca78dd | 3 months ago |
Alex Baker | a32fce2d8b | 3 months ago |
Alex Baker | 4fb3cda173 | 3 months ago |
Alex Baker | f33cc896dd | 3 months ago |
Alex Baker | 4d1d6a06a8 | 3 months ago |
Alex Baker | 2202516688 | 3 months ago |
Alex Baker | d4a5008ecb | 3 months ago |
Alex Baker | 08189e10f1 | 3 months ago |
Anonymous | d3e4c066d8 | 3 months ago |
Anonymous | bbc5ae4d6d | 3 months ago |
Anonymous | c6cc00cf07 | 3 months ago |
Anonymous | 22e8720021 | 3 months ago |
Anonymous | a3ce98f0ea | 3 months ago |
macpac59 | 258f607d52 | 3 months ago |
ngocanhtve | 927acae7e4 | 3 months ago |
Odweta | 49ad9bafe3 | 3 months ago |
Alex Baker | 6df616d9ce | 4 months ago |
Alex Baker | 157668e35a | 4 months ago |
Aslam Karachiwala | efdf343869 | 4 months ago |
renovate[bot] | 5606df17c5 | 4 months ago |
renovate[bot] | fc3b4971f4 | 4 months ago |
renovate[bot] | 6a1699bb33 | 4 months ago |
renovate[bot] | e49303d5ca | 4 months ago |
renovate[bot] | 4b55569b51 | 4 months ago |
renovate[bot] | 2d7145cde3 | 4 months ago |
renovate[bot] | f2ab8bed95 | 4 months ago |
renovate[bot] | a5bc4cf536 | 4 months ago |
renovate[bot] | 1b35372b3a | 4 months ago |
Alex Baker | c0fd4bf66a | 4 months ago |
renovate[bot] | 5d366f0d61 | 4 months ago |
renovate[bot] | d0635ac6f3 | 4 months ago |
renovate[bot] | 8d4cf4daa5 | 4 months ago |
renovate[bot] | d1e439e70e | 4 months ago |
renovate[bot] | 4d4c3e5193 | 4 months ago |
Alex Baker | 20f87061fd | 4 months ago |
renovate[bot] | c03e3747c6 | 5 months ago |
renovate[bot] | 925b1b9124 | 5 months ago |
Alex Baker | 43db712f64 | 5 months ago |
Alex Baker | 9d33a73ee6 | 5 months ago |
renovate[bot] | 391c600ce2 | 5 months ago |
renovate[bot] | ee4ae94817 | 5 months ago |
renovate[bot] | 70b4be1447 | 5 months ago |
Don Zouras | bc54d92789 | 5 months ago |
Сергій | 2f34724b95 | 5 months ago |
Alex Baker | 940fdc28dd | 5 months ago |
Alex Baker | 68542fce38 | 5 months ago |
renovate[bot] | 7ba2977100 | 5 months ago |
Don Zouras | cb242539f0 | 5 months ago |
bittin1ddc447d824349b2 | 304841f2c3 | 5 months ago |
Don Zouras | 819ea797e6 | 5 months ago |
abc0922001 | 2dbea57262 | 5 months ago |
Don Zouras | 516a916fd5 | 5 months ago |
109247019824 | 3bd52efc80 | 5 months ago |
renovate[bot] | 64af955ea7 | 5 months ago |
Milo Ivir | 4cc5ec9639 | 5 months ago |
大王叫我来巡山 | 0d9292e53a | 5 months ago |
Oğuz Ersen | 732ccf1913 | 5 months ago |
gallegonovato | a2852bdbbf | 5 months ago |
Don Zouras | 68790ad401 | 5 months ago |
Alex Baker | e9afacb595 | 5 months ago |
Alex Baker | cf182aceab | 5 months ago |
Alex Baker | db889d233a | 5 months ago |
Alex Baker | 457b89c092 | 5 months ago |
Don Zouras | ad53af1b6a | 5 months ago |
renovate[bot] | 2c32b08c97 | 5 months ago |
renovate[bot] | a2fcf57c9e | 5 months ago |
renovate[bot] | 59a61325f2 | 5 months ago |
vulewuxe86 | 38a6064677 | 5 months ago |
renovate[bot] | 67daccf3e8 | 5 months ago |
renovate[bot] | dfe829d2a1 | 5 months ago |
renovate[bot] | 23c64f4d28 | 5 months ago |
renovate[bot] | e4b8f694f3 | 5 months ago |
renovate[bot] | e667c80731 | 5 months ago |
renovate[bot] | 909b077e25 | 5 months ago |
Don Zouras | e6fab9ad45 | 5 months ago |
raulmagdalena | 9474f5b7af | 5 months ago |
Don Zouras | 1ee051d768 | 5 months ago |
Don Zouras | f42edaa158 | 5 months ago |
RayBB | b97eade59c | 5 months ago |
renovate[bot] | 41aa1ca65f | 5 months ago |
renovate[bot] | 3e9a13ea14 | 5 months ago |
renovate[bot] | d966e8a12b | 6 months ago |
renovate[bot] | 8ba4e64994 | 6 months ago |
109247019824 | ee792f1ceb | 6 months ago |
renovate[bot] | caa09163a1 | 6 months ago |
renovate[bot] | d270abf5b3 | 6 months ago |
renovate[bot] | 1ef530abad | 6 months ago |
renovate[bot] | df26a6dbb9 | 6 months ago |
renovate[bot] | 1882c3b7e0 | 6 months ago |
renovate[bot] | cb53a0ca9f | 6 months ago |
renovate[bot] | b2fdef1ae7 | 6 months ago |
renovate[bot] | defb16ce95 | 6 months ago |
renovate[bot] | 823f99b28a | 6 months ago |
renovate[bot] | 6df872b1a1 | 6 months ago |
renovate[bot] | 133b960583 | 6 months ago |
renovate[bot] | 2e6753faec | 7 months ago |
renovate[bot] | cb07c2c267 | 7 months ago |
renovate[bot] | 23757ab320 | 7 months ago |
Alex Baker | 1b6ce0e48e | 7 months ago |
Kakaeo | 5af012068f | 7 months ago |
Alex Baker | 6c9ffa57d7 | 7 months ago |
Alex Baker | 52c54b1eac | 7 months ago |
Alex Baker | c8d81b44b6 | 7 months ago |
renovate[bot] | ef27a50e42 | 7 months ago |
Alex Baker | bde1356e7f | 7 months ago |
Alex Baker | 6c031925ba | 7 months ago |
Alex Baker | 8058414137 | 7 months ago |
Alex Baker | 3e37ea50f0 | 7 months ago |
renovate[bot] | 62f5a9c492 | 7 months ago |
renovate[bot] | a84fd65722 | 7 months ago |
renovate[bot] | 517b2d8f1b | 7 months ago |
renovate[bot] | 90942bf0be | 7 months ago |
Alex Baker | 83c3d1c4ba | 7 months ago |
Software In Interlingua | 6362ece569 | 7 months ago |
renovate[bot] | 8df85041b8 | 7 months ago |
ngocanhtve | 6d85af4c34 | 7 months ago |
Olli | 63f001dd72 | 7 months ago |
renovate[bot] | de49a50944 | 7 months ago |
renovate[bot] | df20d2f593 | 7 months ago |
renovate[bot] | fd16772236 | 7 months ago |
renovate[bot] | b77caac255 | 7 months ago |
renovate[bot] | ad058ed09b | 7 months ago |
Alex Baker | 8312113d7b | 7 months ago |
Alex Baker | ee21cc660e | 7 months ago |
Alex Baker | 5edc481ffe | 7 months ago |
Alex Baker | d0360a4862 | 7 months ago |
Alex Baker | ac35002408 | 7 months ago |
Subham Jena | 582ebad0f0 | 7 months ago |
Shaban Mamedov | 684c47184a | 7 months ago |
ngocanhtve | ac7a519e4e | 7 months ago |
renovate[bot] | 5c2b41af9d | 8 months ago |
renovate[bot] | 13986cf380 | 8 months ago |
CennoxX | c4f0b404e9 | 8 months ago |
Alex Baker | 145b5afbc6 | 8 months ago |
elig0n | 0b87a206fe | 8 months ago |
mm4c | d0e70ceea8 | 8 months ago |
J. Lavoie | bf3546a878 | 8 months ago |
Alex Baker | 8895acbf6b | 8 months ago |
Alex Baker | a52b1200f5 | 8 months ago |
renovate[bot] | 23964e807a | 8 months ago |
Alex Baker | 287b106dd4 | 8 months ago |
renovate[bot] | 33bab626e0 | 8 months ago |
renovate[bot] | a980cd75cc | 8 months ago |
renovate[bot] | 7eac4ac223 | 8 months ago |
renovate[bot] | 82cb2f7d3f | 8 months ago |
renovate[bot] | da2646597c | 8 months ago |
renovate[bot] | 495855133c | 8 months ago |
renovate[bot] | 242cb61662 | 8 months ago |
renovate[bot] | ab8886f3dc | 8 months ago |
Alex Baker | e48e92d2e6 | 8 months ago |
Alex Baker | 5f22f5cd38 | 8 months ago |
Alex Baker | 8a47cc2934 | 8 months ago |
Alex Baker | 0d94729d37 | 8 months ago |
Alex Baker | 14599eb3c0 | 8 months ago |
Alex Baker | b477623524 | 8 months ago |
Alex Baker | c8bfb67b50 | 8 months ago |
Alex Baker | 0a36e58525 | 8 months ago |
Alex Baker | 94a719cb66 | 8 months ago |
Alex Baker | b5748aa8e6 | 8 months ago |
Alex Baker | 7fd5647cb8 | 8 months ago |
Alex Baker | 2545832d67 | 8 months ago |
Alex Baker | 738bf435db | 8 months ago |
renovate[bot] | ab02323f29 | 8 months ago |
Alex Baker | d73a9d2795 | 8 months ago |
Alex Baker | ebe67354b6 | 8 months ago |
Alex Baker | 58edc6b4d8 | 8 months ago |
Weblate (bot) | 78b2cdac06 | 8 months ago |
renovate[bot] | c3d7db0087 | 8 months ago |
renovate[bot] | d7b1770b85 | 8 months ago |
Weblate (bot) | bebb3165a5 | 8 months ago |
Alex Baker | ad1198aace | 8 months ago |
Alex Baker | 7ae77a81e1 | 8 months ago |
Weblate (bot) | 3e79dd5190 | 8 months ago |
renovate[bot] | 9d57a849bf | 8 months ago |
Alex Baker | 82103eb477 | 8 months ago |
renovate[bot] | 11fa9a2bbd | 8 months ago |
renovate[bot] | b65831120f | 8 months ago |
renovate[bot] | f26a90a4f9 | 8 months ago |
renovate[bot] | dd3aa20485 | 8 months ago |
renovate[bot] | 8c84e1af50 | 8 months ago |
renovate[bot] | dc1eac23b9 | 8 months ago |
renovate[bot] | 5883952883 | 8 months ago |
Alex Baker | 775289b058 | 8 months ago |
Alex Baker | ee500c24b1 | 8 months ago |
Igor Sorocean | 68fd36b14d | 8 months ago |
renovate[bot] | b8f265fa36 | 8 months ago |
Alex Baker | cf4e6c1273 | 8 months ago |
renovate[bot] | 0dcc577497 | 9 months ago |
kmj-99 | b525e8cab3 | 9 months ago |
renovate[bot] | db0ad280eb | 9 months ago |
Alex Baker | 5092f80dcc | 9 months ago |
Kazushi Hayama | 6bc42363dd | 9 months ago |
Michal Šmahel | 115461c7b0 | 9 months ago |
renovate[bot] | 369c508890 | 9 months ago |
bittin1ddc447d824349b2 | a432cc33cc | 9 months ago |
Alex Baker | e5b51150cb | 9 months ago |
renovate[bot] | d43639556e | 9 months ago |
Alex Baker | ef2dd8f202 | 9 months ago |
Alex Baker | abc099c309 | 9 months ago |
Alex Baker | 348367e084 | 9 months ago |
renovate[bot] | 6a73f6745c | 9 months ago |
renovate[bot] | 5185c14e44 | 9 months ago |
Olli | aa7ff0fa16 | 9 months ago |
renovate[bot] | 12b979d363 | 9 months ago |
Alex Baker | 082f741983 | 9 months ago |
Alex Baker | 0bdd83988f | 9 months ago |
Alex Baker | 60784c10b5 | 9 months ago |
Alex Baker | da8467ac56 | 9 months ago |
renovate[bot] | 434d067822 | 9 months ago |
renovate[bot] | 04af310285 | 9 months ago |
renovate[bot] | 5555771f45 | 9 months ago |
renovate[bot] | 35b60df0ff | 9 months ago |
renovate[bot] | fef19b4995 | 9 months ago |
Alex Baker | 4c25b81a4d | 9 months ago |
Alex Baker | 0f37f4859e | 9 months ago |
Alex Baker | ee3d3fa4f5 | 9 months ago |
Alex Baker | a32d35720a | 9 months ago |
Alex Baker | bf6fe02fe3 | 9 months ago |
Alex Baker | 6664defc16 | 9 months ago |
renovate[bot] | b318b930a5 | 9 months ago |
Loucura | 91d18fd675 | 9 months ago |
Alex Baker | 94b6d7569b | 9 months ago |
Alex Baker | e70f5f3b24 | 9 months ago |
renovate[bot] | 68c21c4b1f | 9 months ago |
renovate[bot] | cbcc7f9bee | 9 months ago |
Milo Ivir | ba394b9db4 | 9 months ago |
Eric | 13298aa3be | 9 months ago |
Alex Baker | 993c41b197 | 9 months ago |
Alex Baker | 2bfc46f32b | 9 months ago |
Alex Baker | 4c61353411 | 9 months ago |
Alex Baker | f8d3985e97 | 9 months ago |
Alex Baker | c2a9d21f01 | 9 months ago |
Alex Baker | 20c81417a0 | 9 months ago |
Alex Baker | 77c86bbfb4 | 9 months ago |
renovate[bot] | 7e9ec26f53 | 9 months ago |
Alex Baker | 928ec9f647 | 9 months ago |
Alex Baker | 84ab8d0517 | 9 months ago |
Alex Baker | db66a66578 | 9 months ago |
Alex Baker | ea8a4b5e2d | 9 months ago |
Alex Baker | 5a4485818f | 9 months ago |
renovate[bot] | 1d348fcac9 | 9 months ago |
renovate[bot] | 79250cb8ff | 9 months ago |
renovate[bot] | 5d550df62e | 9 months ago |
Pierfrancesco Passerini | 1267fbeb0d | 9 months ago |
renovate[bot] | 2b0e285b42 | 9 months ago |
Alex Baker | 374f10c731 | 9 months ago |
abc0922001 | a38fdc065e | 9 months ago |
Ihor Hordiichuk | 6d4159eaac | 9 months ago |
Oğuz Ersen | 20fe494cd9 | 9 months ago |
Frits van Bommel | e7686bd9eb | 9 months ago |
Kaci | d4d721f060 | 9 months ago |
Florian Trayon | 1e9b39afd5 | 9 months ago |
Florian Trayon | 8878df27c4 | 9 months ago |
C. Rüdinger | 07eb9db157 | 9 months ago |
109247019824 | b4ad27152f | 9 months ago |
kmj-99 | 417a1cca46 | 9 months ago |
renovate[bot] | 3a6086adbd | 9 months ago |
Alex Baker | 9f3f0a9698 | 9 months ago |
Alex Baker | 8a085861de | 9 months ago |
Alex Baker | 7048f6a965 | 9 months ago |
Alex Baker | a9cb7b0e89 | 9 months ago |
Alex Baker | 4c7e2caa73 | 9 months ago |
Alex Baker | 3a5e45283a | 9 months ago |
renovate[bot] | a1885574da | 9 months ago |
vulewuxe86 | 113cf6f1b8 | 10 months ago |
renovate[bot] | 138cc21796 | 10 months ago |
Alex Baker | dea3484a2f | 10 months ago |
Alex Baker | 5948e4a958 | 10 months ago |
renovate[bot] | 10d2e8feda | 10 months ago |
renovate[bot] | cef7998a52 | 10 months ago |
renovate[bot] | 834bef7933 | 10 months ago |
renovate[bot] | 8ed6afff2b | 10 months ago |
renovate[bot] | 7d13e4f0ba | 10 months ago |
Alex Baker | 5cb8419206 | 10 months ago |
Alex Baker | 7283491872 | 10 months ago |
Alex Baker | 2de5b3c275 | 10 months ago |
Alex Baker | 864550d027 | 10 months ago |
renovate[bot] | b48348f30e | 10 months ago |
renovate[bot] | 81fdddc631 | 10 months ago |
Luna Jernberg | 21cb25d902 | 10 months ago |
Anaemix | b73ba43735 | 10 months ago |
renovate[bot] | a3ba87e4e6 | 10 months ago |
renovate[bot] | 26321633e2 | 10 months ago |
renovate[bot] | 1c3656a69c | 10 months ago |
renovate[bot] | 88bb66a7b3 | 10 months ago |
renovate[bot] | 0f7c200851 | 10 months ago |
renovate[bot] | f6d5732c07 | 10 months ago |
renovate[bot] | b278a04fce | 10 months ago |
renovate[bot] | 71c2e2b0f6 | 10 months ago |
renovate[bot] | 87639da922 | 10 months ago |
Anaemix | d7e366712c | 10 months ago |
renovate[bot] | 74ecb4a8bf | 10 months ago |
Emin Tufan Çetin | 305bd24883 | 10 months ago |
renovate[bot] | 68b7bef1ca | 10 months ago |
renovate[bot] | f6a6b0716f | 10 months ago |
renovate[bot] | dced669176 | 10 months ago |
Emin Tufan Çetin | 1b431f7a61 | 10 months ago |
Joan Montané | 2b3b7184e0 | 10 months ago |
renovate[bot] | a7062fe937 | 10 months ago |
Alex Baker | 573f6b897e | 10 months ago |
renovate[bot] | e1845d71bc | 10 months ago |
renovate[bot] | 1027d57860 | 10 months ago |
renovate[bot] | a2c92b8fd9 | 10 months ago |
renovate[bot] | 77643d7355 | 10 months ago |
Patrick V. Leguizamon | 54911021a5 | 11 months ago |
renovate[bot] | 908ac19754 | 11 months ago |
Alex Baker | 4ebd53fdf7 | 11 months ago |
Alex Baker | a0fbeba938 | 11 months ago |
Alex Baker | bd6000fcd6 | 11 months ago |
Alex Baker | aa861cb5e5 | 11 months ago |
Alex Baker | 17818c6e29 | 11 months ago |
Poesty Li | ca6521db23 | 11 months ago |
Alex Baker | dedf306106 | 11 months ago |
Alex Baker | 40f9b83dba | 11 months ago |
Alex Baker | c8b057867f | 11 months ago |
Alex Baker | d1ebd45492 | 11 months ago |
Alex Baker | ac28e26333 | 11 months ago |
renovate[bot] | fdf9fbce08 | 11 months ago |
renovate[bot] | 6d712642b3 | 11 months ago |
renovate[bot] | 329939e2b0 | 11 months ago |
Alex Baker | f62de8b7f3 | 11 months ago |
deep map | a2ef184c7d | 11 months ago |
Salif Mehmed | 6ac2c88782 | 11 months ago |
Naga | ada31293ea | 11 months ago |
Pierfrancesco Passerini | 805d914ff4 | 11 months ago |
109247019824 | aa1b4ef71a | 11 months ago |
vulewuxe86 | 3d0cf46f8d | 11 months ago |
abc0922001 | f7e2c7824a | 11 months ago |
Stefan | 2e2bdbe07a | 11 months ago |
Alex Baker | 427ee369b4 | 11 months ago |
Alex Baker | 804c0f974a | 11 months ago |
109247019824 | 691dc635a9 | 11 months ago |
renovate[bot] | 9f2364867b | 11 months ago |
renovate[bot] | cd638bba71 | 11 months ago |
Naga | 156669cb86 | 11 months ago |
Kazushi Hayama | 6c1daf5a3c | 11 months ago |
Pierfrancesco Passerini | 0a297c595f | 11 months ago |
qwerty287 | b698fc04db | 11 months ago |
109247019824 | ab6f3463d0 | 11 months ago |
Alex Baker | dbcaa36812 | 11 months ago |
Alex Baker | 83a42c9d8f | 11 months ago |
Alex Baker | ec97722857 | 11 months ago |
Alex Baker | dd78acadcd | 11 months ago |
Htet Oo Hlaing | 454faa234e | 11 months ago |
bruh | 55027ad625 | 11 months ago |
Alex Tereschenko | 13740c3d0d | 11 months ago |
Alex Tereschenko | 6037ee70e5 | 11 months ago |
Kazushi Hayama | 0f2e659e6f | 11 months ago |
Milo Ivir | 7945ecb9c4 | 11 months ago |
Poesty Li | 56f0be50ff | 11 months ago |
Ihor Hordiichuk | 91d46c5f11 | 11 months ago |
Htet Oo Hlaing | bab3898a7f | 11 months ago |
Alex Baker | 7b12e491ad | 11 months ago |
Alex Baker | ce2bc81276 | 11 months ago |
Frits van Bommel | 39ddc8d0d6 | 11 months ago |
Pierfrancesco Passerini | 8081da3a36 | 11 months ago |
Florian Trayon | 766d5fa043 | 11 months ago |
Florian Trayon | b2135f33c5 | 11 months ago |
109247019824 | d1afb5891a | 11 months ago |
Alex Baker | dff522437d | 11 months ago |
Alex Baker | 5308404ed6 | 11 months ago |
renovate[bot] | 320b399ab3 | 11 months ago |
renovate[bot] | 28c1ecaebc | 11 months ago |
renovate[bot] | 7083eb2ede | 11 months ago |
renovate[bot] | 194edd2084 | 11 months ago |
Michal Šmahel | e21637cb3c | 11 months ago |
Alex Baker | ee82f683bd | 11 months ago |
Alex Baker | 166635e18b | 12 months ago |
Alex Baker | 8ed5242573 | 12 months ago |
Alex Baker | a3d86dcb03 | 12 months ago |
Alex Baker | c065525cef | 12 months ago |
renovate[bot] | 049f995e96 | 12 months ago |
renovate[bot] | 8ac962d9ea | 12 months ago |
renovate[bot] | 849e785189 | 12 months ago |
renovate[bot] | 1b1288678b | 12 months ago |
renovate[bot] | d2710a3c61 | 12 months ago |
renovate[bot] | 0fe5b7fdb9 | 12 months ago |
renovate[bot] | dcf645c2b8 | 12 months ago |
renovate[bot] | 1fcd780b3f | 12 months ago |
renovate[bot] | 5fc3ac2e7f | 12 months ago |
Luna Jernberg | 3ad24f49d8 | 12 months ago |
SC | 5d386bc83a | 12 months ago |
Kaci | c7a65c81d4 | 1 year ago |
Sunjae Choi | 2034a4be74 | 1 year ago |
Sameer Rustamzada | ca4f120433 | 1 year ago |
renovate[bot] | 7c6aae3219 | 1 year ago |
renovate[bot] | 18450e8e2b | 1 year ago |
renovate[bot] | 1181125417 | 1 year ago |
renovate[bot] | e52c80ea3f | 1 year ago |
renovate[bot] | 2474dbab2a | 1 year ago |
renovate[bot] | 049d46ceff | 1 year ago |
renovate[bot] | 6f01f9a590 | 1 year ago |
renovate[bot] | de2f39b2df | 1 year ago |
Naga | 393f7868d8 | 1 year ago |
renovate[bot] | cad6470497 | 1 year ago |
renovate[bot] | 065385d105 | 1 year ago |
renovate[bot] | 159fc3ad50 | 1 year ago |
Alex Baker | f697015d7f | 1 year ago |
Alex Baker | b977f01402 | 1 year ago |
Naga | 07c7297bc8 | 1 year ago |
Gerald Schneider | 7fc81f4876 | 1 year ago |
Naga | 3cebc6f874 | 1 year ago |
Frits van Bommel | 1d997ae411 | 1 year ago |
renovate[bot] | 2e213312fe | 1 year ago |
renovate[bot] | dc7c9aec76 | 1 year ago |
renovate[bot] | 2faff24ac9 | 1 year ago |
Eudald Puy Polls | 045ec4cb3f | 1 year ago |
Milo Ivir | f5a2e9282e | 1 year ago |
Ander Romero | 5ef7b6f786 | 1 year ago |
109247019824 | 936dfb29c9 | 1 year ago |
renovate[bot] | e8ac6ed556 | 1 year ago |
Alex Baker | a45959052b | 1 year ago |
Alex Baker | e1aed0f1af | 1 year ago |
Alex Baker | 52d664856d | 1 year ago |
Alex Baker | 53738031d1 | 1 year ago |
Alex Baker | b0bb58bb4c | 1 year ago |
Alex Baker | 1811eb561f | 1 year ago |
Alex Baker | 6ef2f4a989 | 1 year ago |
renovate[bot] | 6b041dc47d | 1 year ago |
Alex Baker | 2659f4fa4a | 1 year ago |
Alex Baker | 09a1e5bc4f | 1 year ago |
renovate[bot] | cc370557df | 1 year ago |
Poesty Li | d7fc766b49 | 1 year ago |
Ihor Hordiichuk | 6734e0b281 | 1 year ago |
Frits van Bommel | ec75338027 | 1 year ago |
Pierfrancesco Passerini | 407adb07d2 | 1 year ago |
Florian Trayon | 664d8bc1f8 | 1 year ago |
Florian Trayon | 51441e4ad0 | 1 year ago |
109247019824 | 4c7e88b18a | 1 year ago |
renovate[bot] | e7372f3e8b | 1 year ago |
Milo Ivir | c9a5d19b83 | 1 year ago |
Frits van Bommel | b317a3885a | 1 year ago |
Pierfrancesco Passerini | 98dc48decd | 1 year ago |
Florian Trayon | 2f36ad8043 | 1 year ago |
Florian Trayon | ed2acfbe97 | 1 year ago |
C. Rüdinger | acb95583dc | 1 year ago |
Alex Baker | 4830aed7b4 | 1 year ago |
Alex Baker | f5ab0e6f56 | 1 year ago |
Ihor Hordiichuk | be55a3bc5d | 1 year ago |
Frits van Bommel | 643af2e2fb | 1 year ago |
Kaci | 24f810763f | 1 year ago |
Florian Trayon | cb792e8111 | 1 year ago |
Florian Trayon | c451a1e272 | 1 year ago |
109247019824 | a25e93f3de | 1 year ago |
renovate[bot] | 50926bc0ad | 1 year ago |
Alex Baker | 48e73b4bb3 | 1 year ago |
renovate[bot] | a4184fa63a | 1 year ago |
Alex Baker | 08ae11046a | 1 year ago |
Ander Romero | 74a1ee9e4f | 1 year ago |
Alex Baker | d4192803f8 | 1 year ago |
Alex Baker | 7945160536 | 1 year ago |
renovate[bot] | 79e1a73c2a | 1 year ago |
renovate[bot] | f7bc821a16 | 1 year ago |
renovate[bot] | 4ac6a5fdf6 | 1 year ago |
renovate[bot] | f623046385 | 1 year ago |
renovate[bot] | afdabb3dc3 | 1 year ago |
Alex Baker | 48804de63d | 1 year ago |
qwerty287 | 2ad445aceb | 1 year ago |
Alex Baker | f1790b574f | 1 year ago |
Alex Baker | ac9e782527 | 1 year ago |
Don Zouras | e0758206d8 | 1 year ago |
Alex Baker | 85c0ba9ccf | 1 year ago |
Alex Baker | a0f85fcbbd | 1 year ago |
Alex Baker | 02958e46e6 | 1 year ago |
Alex Baker | fce12ae4a8 | 1 year ago |
Alex Baker | fc3dc96ade | 1 year ago |
renovate[bot] | 559858d19c | 1 year ago |
Ander Romero | 99ffb68e7a | 1 year ago |
renovate[bot] | 1ce507b0bb | 1 year ago |
Sunjae Choi | d4feb8fd31 | 1 year ago |
o20n3 | 16270f66c8 | 1 year ago |
Sunjae Choi | 3f8c8feb08 | 1 year ago |
Oğuz Ersen | 8f370fec62 | 1 year ago |
Alex Baker | f3c28fe60d | 1 year ago |
Alex Baker | b06b10f930 | 1 year ago |
Alex Baker | 6efac620c4 | 1 year ago |
Alex Baker | 41c8a803a1 | 1 year ago |
renovate[bot] | 0ed04d7739 | 1 year ago |
renovate[bot] | f9dbedad3b | 1 year ago |
Alex Baker | 16d91aafb1 | 1 year ago |
Alex Baker | 4882570b3c | 1 year ago |
renovate[bot] | ece1758696 | 1 year ago |
renovate[bot] | cfebf04b4b | 1 year ago |
Alex Baker | 3c87ab4fc1 | 1 year ago |
Alex Baker | 1562c1315c | 1 year ago |
Alex Baker | 2668e9a1df | 1 year ago |
Alex Baker | ac0fbccb54 | 1 year ago |
Alex Baker | d25f859385 | 1 year ago |
Alex Baker | 3555c11b33 | 1 year ago |
Alex Baker | a7662d9cb6 | 1 year ago |
Alex Baker | 2da4dcd17a | 1 year ago |
Alex Baker | 1d58292a07 | 1 year ago |
renovate[bot] | df2a7f8857 | 1 year ago |
renovate[bot] | 56c6f2ce33 | 1 year ago |
renovate[bot] | 019dc6ecaa | 1 year ago |
renovate[bot] | e6ac0b072e | 1 year ago |
Alex Baker | 86d4bcbc40 | 1 year ago |
Alex Baker | e05874d36a | 1 year ago |
Alex Baker | 7d83e8ba06 | 1 year ago |
Alex Baker | 99243e5751 | 1 year ago |
Don Zouras | c6652c851e | 1 year ago |
Alex Baker | 585f12d2f9 | 1 year ago |
Alex Baker | 47c425f7e8 | 1 year ago |
Alex Baker | 72a337d572 | 1 year ago |
Alex Baker | cbaede67cf | 1 year ago |
Alex Baker | 7b2f526f7b | 1 year ago |
renovate[bot] | 2e6ec655db | 1 year ago |
Alex Baker | 57c4018e37 | 1 year ago |
Alex Baker | 067317b5a0 | 1 year ago |
Alex Baker | ad3c35bc5d | 1 year ago |
Alex Baker | 8907d3f520 | 1 year ago |
renovate[bot] | 9f59d8ddf2 | 1 year ago |
Alex Baker | af72e35f05 | 1 year ago |
Alex Baker | 251edd39ed | 1 year ago |
renovate[bot] | 455221c625 | 1 year ago |
Alex Baker | f62d007ff1 | 1 year ago |
Subham Jena | b466170bbf | 1 year ago |
109247019824 | ebeeb06420 | 1 year ago |
Milo Ivir | 81646bb133 | 1 year ago |
Ihor Hordiichuk | 98cc3908b6 | 1 year ago |
Frits van Bommel | 41f4faebe7 | 1 year ago |
Pierfrancesco Passerini | bf512537fe | 1 year ago |
Florian Trayon | 76e19e292b | 1 year ago |
Florian Trayon | 77db8dbe86 | 1 year ago |
Subham Jena | 31f6c85f89 | 1 year ago |
renovate[bot] | eeb448729c | 1 year ago |
Alex Baker | 84e45f0b20 | 1 year ago |
Alex Baker | 114ec3f03b | 1 year ago |
Alex Baker | f72860cef1 | 1 year ago |
Alex Baker | 686a36ecbd | 1 year ago |
renovate[bot] | 4f01e4dba4 | 1 year ago |
Alex Baker | a8d62b6632 | 1 year ago |
Alex Baker | 19b2551f54 | 1 year ago |
Alex Baker | c303ce32ab | 1 year ago |
Alex Baker | f18a646d09 | 1 year ago |
renovate[bot] | 1ec48feb36 | 1 year ago |
renovate[bot] | 8c60f54f77 | 1 year ago |
Alex Baker | cfa46c7e24 | 1 year ago |
Alex Baker | 1d6d8e87d1 | 1 year ago |
Alex Baker | 18242e5284 | 1 year ago |
Alex Baker | 13b4f80c70 | 1 year ago |
renovate[bot] | e72ceca528 | 1 year ago |
renovate[bot] | b331f1440f | 1 year ago |
Alex Baker | a739b21f0f | 1 year ago |
Alex Baker | 47f4ae8dde | 1 year ago |
Alex Baker | 9e60949019 | 1 year ago |
renovate[bot] | d00987fcc8 | 1 year ago |
renovate[bot] | 52d9fdce79 | 1 year ago |
Alex Baker | 2848bd4f53 | 1 year ago |
Alex Baker | 70ab826598 | 1 year ago |
Alex Baker | 5f4753da6f | 1 year ago |
renovate[bot] | 5ac6a3ca79 | 1 year ago |
renovate[bot] | 0ba7b319b2 | 1 year ago |
Alex Baker | bdc01b271d | 1 year ago |
Alex Baker | 013f43ca34 | 1 year ago |
Alex Baker | e41b9561dc | 1 year ago |
Alex Baker | 2c697fd5b9 | 1 year ago |
renovate[bot] | 1a810e0298 | 1 year ago |
Alex Baker | 4121163008 | 1 year ago |
renovate[bot] | f4e5c5c72b | 1 year ago |
renovate[bot] | a21ee0a3c2 | 1 year ago |
Alex Baker | e37497b77f | 1 year ago |
Alex Baker | 4018277645 | 1 year ago |
Alex Baker | 97e1b75781 | 1 year ago |
109247019824 | d477dfb448 | 1 year ago |
renovate[bot] | 360a85c57b | 1 year ago |
Alex Baker | 88a3da822b | 1 year ago |
Alex Baker | df50cf9459 | 1 year ago |
renovate[bot] | 05bad27d63 | 1 year ago |
renovate[bot] | acbf3f2f97 | 1 year ago |
renovate[bot] | b6116623fa | 1 year ago |
renovate[bot] | 5ecc52bf78 | 1 year ago |
renovate[bot] | 26af7d74f7 | 1 year ago |
renovate[bot] | 72e4f853b2 | 1 year ago |
renovate[bot] | 4c572f7504 | 1 year ago |
Kazushi Hayama | 31d7f489a7 | 1 year ago |
renovate[bot] | 14d4fa702b | 1 year ago |
renovate[bot] | 887007d898 | 1 year ago |
Alex Baker | db82ef7fd6 | 1 year ago |
Alex Baker | b75be2c5af | 1 year ago |
renovate[bot] | 8574c4f8bd | 1 year ago |
renovate[bot] | 94eb48c326 | 1 year ago |
renovate[bot] | db8744123f | 1 year ago |
renovate[bot] | 63e3311fd3 | 1 year ago |
renovate[bot] | fc58a059e4 | 1 year ago |
renovate[bot] | 7010d06432 | 1 year ago |
renovate[bot] | c206634de1 | 1 year ago |
renovate[bot] | b13a080ba4 | 1 year ago |
Alex Baker | 26e1ffcc85 | 1 year ago |
Simona Iacob | 4be0a80d17 | 1 year ago |
renovate[bot] | 272b7d9dcf | 1 year ago |
renovate[bot] | 2f8d698dd6 | 1 year ago |
Alex Baker | 049e4a9329 | 1 year ago |
Alex Baker | 91da3191c5 | 1 year ago |
Alex Baker | 2bc906868d | 1 year ago |
Alex Baker | 9d142bd80b | 1 year ago |
Alex Baker | db563b04ae | 1 year ago |
Alex Baker | e2ab005e29 | 1 year ago |
Alex Baker | b1b85444bd | 1 year ago |
renovate[bot] | 2c6ebf3c3e | 1 year ago |
renovate[bot] | 58230f5e61 | 1 year ago |
renovate[bot] | 80d69ea3f5 | 1 year ago |
Alex Baker | 4b325c0133 | 1 year ago |
Alex Baker | 32eed65f04 | 1 year ago |
renovate[bot] | fe87eac962 | 1 year ago |
Alex Baker | 43a943dedd | 1 year ago |
Alex Baker | de61bb3fe9 | 1 year ago |
renovate[bot] | b6523bf30f | 1 year ago |
renovate[bot] | 6fa7b53cd7 | 1 year ago |
renovate[bot] | ad5c1dc8d0 | 1 year ago |
renovate[bot] | 089337aabc | 1 year ago |
renovate[bot] | ae87325c58 | 1 year ago |
renovate[bot] | 73dfa62fcc | 1 year ago |
renovate[bot] | 0dd10e835c | 1 year ago |
renovate[bot] | 19cd5b967a | 1 year ago |
renovate[bot] | 406ae0dfdd | 1 year ago |
renovate[bot] | 72fbf21067 | 1 year ago |
renovate[bot] | fc13be33c4 | 1 year ago |
renovate[bot] | 204f8312ad | 1 year ago |
renovate[bot] | 82b1b7bd57 | 1 year ago |
renovate[bot] | 973bd086dd | 1 year ago |
renovate[bot] | 3778aaaf05 | 1 year ago |
Alex Baker | c2cc2e0c31 | 1 year ago |
Alex Baker | 567c3ba0e7 | 1 year ago |
renovate[bot] | 38d273d149 | 1 year ago |
renovate[bot] | 1bd3cb84b2 | 1 year ago |
renovate[bot] | 273c9ebe52 | 1 year ago |
renovate[bot] | ddee3b44d1 | 1 year ago |
renovate[bot] | ccfd494b49 | 1 year ago |
renovate[bot] | 3e3b37a66b | 1 year ago |
renovate[bot] | 3ce8f864ce | 1 year ago |
Alex Baker | 8d2aee359b | 1 year ago |
Alex Baker | 7ced8a2fdc | 1 year ago |
Alex Baker | 5ecc604b37 | 1 year ago |
Alex Baker | 379a49fa81 | 1 year ago |
Alex Baker | bd1101d73e | 1 year ago |
Alex Baker | e114bb4851 | 1 year ago |
Don Zouras | 82fae728c4 | 1 year ago |
Don Zouras | 5f25f953fd | 1 year ago |
Chih-Hsuan Yen | a1487e4c41 | 1 year ago |
Poesty Li | 5c10c748dd | 1 year ago |
Naga | ea994122e7 | 1 year ago |
Kisaragi Hiu | c1008a31b7 | 1 year ago |
NN | 1be1f3e0ae | 1 year ago |
Gabriel Camargo | ea0a110576 | 1 year ago |
Olli | 582e0a1a3d | 1 year ago |
Don Zouras | 3d490f0ed6 | 1 year ago |
AHOHNMYC | 8764b01301 | 1 year ago |
Alex Baker | 100928d002 | 1 year ago |
Alex Baker | b85dc20d24 | 1 year ago |
Alex Baker | 1fdeb5fb35 | 1 year ago |
Alex Baker | 0738ebb758 | 1 year ago |
Alex Baker | 417f5ac224 | 1 year ago |
Alex Baker | ad54394c08 | 1 year ago |
Alex Baker | 3cb8cd9a45 | 1 year ago |
Alex Baker | 6c10466904 | 1 year ago |
Alex Baker | 3131c56651 | 1 year ago |
Alex Baker | e644971619 | 1 year ago |
Alex Baker | 120eb4dd30 | 1 year ago |
Alex Baker | c2222657ec | 1 year ago |
Alex Baker | f6ca98e096 | 1 year ago |
Alex Baker | ac62b4f385 | 1 year ago |
Alex Baker | 2006e2c84b | 1 year ago |
Alex Baker | 513f8b017f | 1 year ago |
Alex Baker | a04fbebd0f | 1 year ago |
Alex Baker | 0c2b31b84b | 1 year ago |
Alex Baker | 1eba02604d | 1 year ago |
Alex Baker | 0f6013cecc | 1 year ago |
Alex Baker | 68d80a5d2a | 1 year ago |
Alex Baker | c5587d9fea | 1 year ago |
gnu-ewm | e4e0ec013b | 1 year ago |
Alex Baker | ab8af2a3a1 | 1 year ago |
Alex Baker | e2ad2507d3 | 1 year ago |
Don Zouras | 705b6e05dd | 1 year ago |
JoseFabio El que Conoces | ab968dcf17 | 1 year ago |
Don Zouras | 50bb209cd3 | 1 year ago |
Julius Härtl | 99d1dea0f1 | 1 year ago |
bruh | 9a5c4ea010 | 1 year ago |
Olli | 6f7890ea3b | 1 year ago |
Alex Baker | 63fda6f681 | 1 year ago |
Alex Baker | 738870ac6b | 2 years ago |
Kazushi Hayama | 3b04ddb44f | 2 years ago |
Alex Baker | 4f6749dc24 | 2 years ago |
Kazushi Hayama | c18eac2b00 | 2 years ago |
C. Rüdinger | 5ac9df3cb6 | 2 years ago |
o20n3 | 6405d5fe66 | 2 years ago |
Pierfrancesco Passerini | 6df420d584 | 2 years ago |
Tntdruid | 9bea3ee6df | 2 years ago |
haidarah esmander | b85694eebd | 2 years ago |
Slávek Banko | fb5ab13d99 | 2 years ago |
Alex Baker | 172be4fa6a | 2 years ago |
Alex Baker | 2d3d136012 | 2 years ago |
Alex Baker | 1315f59199 | 2 years ago |
Kazushi Hayama | 3a61cbf735 | 2 years ago |
Pierfrancesco Passerini | 4997d9e2f1 | 2 years ago |
Alex Baker | dad625d402 | 2 years ago |
Alex Baker | 65ef69f46e | 2 years ago |
Alex Baker | 927168dcf6 | 2 years ago |
Alex Baker | ec81bf7b85 | 2 years ago |
SC | e034b43b39 | 2 years ago |
Alex Baker | e162cc7809 | 2 years ago |
Alex Baker | 2a825ce2c7 | 2 years ago |
Alex Baker | 71f22dd05d | 2 years ago |
Alex Baker | 644eda1eef | 2 years ago |
Kaci | 67ace66204 | 2 years ago |
Milo Ivir | 00db98b3ca | 2 years ago |
Eric | 188cf998fa | 2 years ago |
Ihor Hordiichuk | 8f41bf99a9 | 2 years ago |
Oğuz Ersen | e1e7dde890 | 2 years ago |
Nikita Epifanov | 9be2fbf505 | 2 years ago |
Frits van Bommel | 45f2aa801a | 2 years ago |
Gediminas Murauskas | ee61aced63 | 2 years ago |
Pierfrancesco Passerini | 7ea84b2659 | 2 years ago |
Kaci | 2295e14f8a | 2 years ago |
Florian Trayon | a8698d8080 | 2 years ago |
Olli | d5a89649fa | 2 years ago |
Florian Trayon | 222d831220 | 2 years ago |
World Test | e9d5afa9e7 | 2 years ago |
109247019824 | 137b3ce8b2 | 2 years ago |
Alex Baker | 9ed8486cfc | 2 years ago |
Nikita Epifanov | e529de066e | 2 years ago |
Alex Baker | 38e1c09b24 | 2 years ago |
Alex Baker | 3d110347b0 | 2 years ago |
Alex Baker | ff48aa18c2 | 2 years ago |
Alex Baker | d82e594043 | 2 years ago |
Alex Baker | 03f695f625 | 2 years ago |
Alex Baker | f38b2324e9 | 2 years ago |
Alex Baker | dd48d074be | 2 years ago |
Alex Baker | 670fc1591f | 2 years ago |
Alex Baker | 5c368cf970 | 2 years ago |
Alex Baker | 80abbbcce5 | 2 years ago |
Alex Baker | 35f4ebc7a2 | 2 years ago |
Alex Baker | c17e2ef98b | 2 years ago |
Alex Baker | 980ee440d5 | 2 years ago |
Alex Baker | a07851bc5a | 2 years ago |
Alex Baker | 8c5edf35f4 | 2 years ago |
Alex Baker | f2a728a579 | 2 years ago |
Alex Baker | 55a994fcca | 2 years ago |
Alex Baker | 3691975b9d | 2 years ago |
Alex Baker | 4b3e7b026b | 2 years ago |
Alex Baker | 71b70c43b2 | 2 years ago |
Alex Baker | 9787a420d9 | 2 years ago |
Alex Baker | 8d78a5bfdb | 2 years ago |
Alex Baker | 23bf69d3f4 | 2 years ago |
Alex Baker | eb3dd461ad | 2 years ago |
Alex Baker | 390265a9df | 2 years ago |
Alex Baker | e13d16d644 | 2 years ago |
Alex Baker | 1cd4e00919 | 2 years ago |
Alex Baker | 28e92e00c9 | 2 years ago |
Alex Baker | d0dfb30860 | 2 years ago |
Milo Ivir | eabde2ac57 | 2 years ago |
Alex Baker | eb631967fd | 2 years ago |
Gontzal Manuel Pujana Onaindia | 124a9f84ee | 2 years ago |
SC | ff7f55be5a | 2 years ago |
Eric | cb4c589b60 | 2 years ago |
Ihor Hordiichuk | fc8e7c0226 | 2 years ago |
Oğuz Ersen | 3845222f9f | 2 years ago |
Frits van Bommel | f3c1fd9628 | 2 years ago |
Pierfrancesco Passerini | 4020999c40 | 2 years ago |
Florian Trayon | 14814c3d18 | 2 years ago |
Florian Trayon | 3b7d4315b5 | 2 years ago |
qwerty287 | 9dd62bcfe5 | 2 years ago |
109247019824 | 9740891171 | 2 years ago |
Alex Baker | e2d3ccacda | 2 years ago |
Alex Baker | e5259b898a | 2 years ago |
Orel | 48613bc925 | 2 years ago |
Alex Baker | c36e1e8173 | 2 years ago |
Alex Baker | 9219796c6b | 2 years ago |
Alex Baker | f68ef7cbe5 | 2 years ago |
Pierfrancesco Passerini | 29519c24cc | 2 years ago |
109247019824 | e62f556d27 | 2 years ago |
Ihor Hordiichuk | 4a2aa97282 | 2 years ago |
Alex Baker | eaa47029e7 | 2 years ago |
Alex Baker | d589a89506 | 2 years ago |
Alex Baker | 1793d95d4d | 2 years ago |
Alex Baker | 1299bce67f | 2 years ago |
Alex Baker | 23bd8ba914 | 2 years ago |
Alex Baker | 1f07b17e75 | 2 years ago |
Alex Baker | 1ff960c496 | 2 years ago |
Alex Baker | 7778c21692 | 2 years ago |
Frits van Bommel | 7538f2bdbb | 2 years ago |
Alex Baker | 8f0d30408c | 2 years ago |
Milo Ivir | 6a8428cd06 | 2 years ago |
Eric | e8c0ab68ff | 2 years ago |
Oğuz Ersen | 8f0d0e9d45 | 2 years ago |
Allan Nordhøy | e49a033234 | 2 years ago |
Florian Trayon | 6e8ff8485d | 2 years ago |
Florian Trayon | b947f2d765 | 2 years ago |
Milo Ivir | 12381f9e02 | 2 years ago |
Eric | 10ba0917b7 | 2 years ago |
Ihor Hordiichuk | a7232546d8 | 2 years ago |
Oğuz Ersen | c707b981f1 | 2 years ago |
Frits van Bommel | 33de54aa14 | 2 years ago |
Pierfrancesco Passerini | 38031083a3 | 2 years ago |
Florian Trayon | 10ee541c7d | 2 years ago |
J. Lavoie | 64231fc742 | 2 years ago |
Florian Trayon | b17fde11f9 | 2 years ago |
109247019824 | 191bf5a182 | 2 years ago |
Alex Baker | 7327572db4 | 2 years ago |
Alex Baker | 9522c14891 | 2 years ago |
Alex Baker | 3c16a0c99a | 2 years ago |
Alex Baker | 780667b798 | 2 years ago |
Alex Baker | 26fc731e8e | 2 years ago |
Enol P | 23de9cb129 | 2 years ago |
Milo Ivir | feb1f18470 | 2 years ago |
Enol P | 949bc10ca0 | 2 years ago |
qwerty287 | b65e9f673a | 2 years ago |
Alex Baker | 5452d578be | 2 years ago |
Simona Iacob | 55f33a3f75 | 2 years ago |
Alex Baker | 9a19c0adc0 | 2 years ago |
Alex Baker | f8c5fa47b3 | 2 years ago |
Alex Baker | 0ae473e27f | 2 years ago |
Alex Baker | 37a59099cf | 2 years ago |
Alex Baker | 060e674727 | 2 years ago |
Alex Baker | 395ef07b4e | 2 years ago |
Alex Baker | 4db88b9865 | 2 years ago |
cketti | 468d42e4f6 | 2 years ago |
Alex Baker | 2783e80608 | 2 years ago |
SC | 0907f7c54e | 2 years ago |
Varun Sharma | a0328112fb | 2 years ago |
Alex Baker | bf829727ff | 2 years ago |
Alex Baker | 8dd47881a2 | 2 years ago |
Alex Baker | 6cb0069f76 | 2 years ago |
Alex Baker | c100d21bb4 | 2 years ago |
Alex Baker | 6ba234ebfd | 2 years ago |
Alex Baker | e3ff3bf499 | 2 years ago |
Alex Baker | 45e48f122a | 2 years ago |
Alex Baker | a51593170f | 2 years ago |
Eric | 837e4e5406 | 2 years ago |
Ihor Hordiichuk | d83f79864b | 2 years ago |
Oğuz Ersen | 906188f5e3 | 2 years ago |
Frits van Bommel | 2ef4adb9d8 | 2 years ago |
Florian Trayon | 9639b16305 | 2 years ago |
Florian Trayon | 956dd111eb | 2 years ago |
109247019824 | 0259da8322 | 2 years ago |
Pierfrancesco Passerini | d4b2f72ae6 | 2 years ago |
Alex Baker | e16f076fb7 | 2 years ago |
Alex Baker | 68b91ed2c7 | 2 years ago |
Alex Baker | 336279ee63 | 2 years ago |
Alex Baker | b8470ccc2b | 2 years ago |
Alex Baker | a6da3332d3 | 2 years ago |
Alex Baker | 2c45f0da94 | 2 years ago |
Alex Baker | 73adb86854 | 2 years ago |
Alex Baker | 587db3fa5c | 2 years ago |
Alex Baker | 2eabaad0e2 | 2 years ago |
Alex Baker | 95d5f74752 | 2 years ago |
Alex Baker | 2ac6c2413b | 2 years ago |
Alex Baker | 226687fee8 | 2 years ago |
Alex Baker | 3ce0433f9c | 2 years ago |
Alex Baker | 99f13df068 | 2 years ago |
Alex Baker | ba11ec2747 | 2 years ago |
Pierfrancesco Passerini | 2a8ae1709d | 2 years ago |
Ela Bogucka | 1d1a2eb6c7 | 2 years ago |
Alex Baker | a0e26263b1 | 2 years ago |
Alex Baker | 4ccba6f2b1 | 2 years ago |
Alex Baker | 8258c73a7f | 2 years ago |
Alex Baker | bb9e2f90b4 | 2 years ago |
Lukas Kempf | 7344f66189 | 2 years ago |
Alex Baker | 5fca19e21f | 2 years ago |
Alex Baker | 532fea0d29 | 2 years ago |
Alex Baker | d157bbec53 | 2 years ago |
Alex Baker | 5f3b706b81 | 2 years ago |
Alex Baker | 135f628dae | 2 years ago |
Alex Baker | df65415a83 | 2 years ago |
Alex Baker | c1b915baf8 | 2 years ago |
Alex Baker | 4f267ad989 | 2 years ago |
Alex Baker | 437d69d741 | 2 years ago |
Alex Baker | 9a33f54202 | 2 years ago |
Alex Baker | c2e87a86fa | 2 years ago |
DilshanH | b3ed7ea43b | 2 years ago |
Simona Iacob | 7017f14401 | 2 years ago |
Alex Baker | 8f5b7ccc20 | 2 years ago |
Alex Baker | 20ab106e12 | 2 years ago |
Alex Baker | 8ed2880953 | 2 years ago |
Alex Baker | 2ee7715c16 | 2 years ago |
Sergio Varela | 2841af08de | 2 years ago |
Alex Baker | e450e262a5 | 2 years ago |
Alex Baker | 60820ab3c9 | 2 years ago |
Alex Baker | 7b9b71dd67 | 2 years ago |
Alex Baker | d0fcca1a1f | 2 years ago |
Alex Baker | 22de530590 | 2 years ago |
Alex Baker | cdd163efbf | 2 years ago |
Alex Baker | 3163150e8f | 2 years ago |
Alex Baker | 738c345275 | 2 years ago |
Alex Baker | eabe2b37ee | 2 years ago |
Alex Baker | c4cd694948 | 2 years ago |
Alex Baker | c532abc87f | 2 years ago |
Alex Baker | 9c8e897f3a | 2 years ago |
Alex Baker | ccaed6ddb4 | 2 years ago |
Alex Baker | 1cac090c9d | 2 years ago |
Alex Baker | 00c80337de | 2 years ago |
Alex Baker | e7b6c96576 | 2 years ago |
Alex Baker | b13db7d23a | 2 years ago |
Alex Baker | b6efff59b4 | 2 years ago |
Alex Baker | d48d457a3d | 2 years ago |
Alex Baker | 85b8092982 | 2 years ago |
Alex Baker | 3e3de3c1d6 | 2 years ago |
Alex Baker | 5c3af50c9d | 2 years ago |
Alex Baker | e39bc8b8cc | 2 years ago |
Alex Baker | f4d69a8a69 | 2 years ago |
SC | 1615f215c4 | 2 years ago |
Alex Baker | e450f51f60 | 2 years ago |
SC | 0711176ae2 | 2 years ago |
Alex Baker | 4d8a058bfb | 2 years ago |
Alex Baker | 57ca2f013a | 2 years ago |
bruh | c52f90adb9 | 2 years ago |
Milo Ivir | 5be37001c0 | 2 years ago |
Alex Baker | 5e607f73a3 | 2 years ago |
Alex Baker | b4c3bec3ab | 2 years ago |
Alex Baker | 8c137f6521 | 2 years ago |
Oğuz Ersen | 2e2e74217e | 2 years ago |
Alex Baker | 3fa9040549 | 2 years ago |
Alex Baker | 9b3f5a0c65 | 2 years ago |
Alex Baker | ef308d6c14 | 2 years ago |
Alex Baker | 12f9352f69 | 2 years ago |
Alex Baker | f5a53e6453 | 2 years ago |
Alex Baker | 908d75909d | 2 years ago |
Sameer Rustamzada | 3736c4596e | 2 years ago |
Alex Baker | 8f4db8374d | 2 years ago |
Alex Baker | 08069d0a3d | 2 years ago |
Alex Baker | 91cb5a158b | 2 years ago |
Eric | 3df26c5401 | 2 years ago |
Ihor Hordiichuk | a5313d567e | 2 years ago |
Nikita Epifanov | fcec3228f7 | 2 years ago |
Frits van Bommel | 70552aa886 | 2 years ago |
Pierfrancesco Passerini | e97b32b5b1 | 2 years ago |
Florian Trayon | 5bc0b47ab6 | 2 years ago |
Florian Trayon | 198252cd84 | 2 years ago |
qwerty287 | db49fe46bd | 2 years ago |
Shimon | f936d60cdf | 2 years ago |
109247019824 | 977ae091de | 2 years ago |
Alex Baker | d8c70a4b5c | 2 years ago |
Alex Baker | 8e8b8c9f64 | 2 years ago |
Alex Baker | 6513c40c97 | 2 years ago |
Ihor Hordiichuk | 1f3b8fd228 | 2 years ago |
Artem | 90e47dc63e | 2 years ago |
Alex Baker | 6173192e72 | 2 years ago |
Alex Baker | c2580e1e68 | 2 years ago |
Alex Baker | 30961ec53a | 2 years ago |
Alex Baker | de50854c99 | 2 years ago |
Alex Baker | 70e4e96ed6 | 2 years ago |
Pierfrancesco Passerini | 8957056304 | 2 years ago |
Allineer | 99e67b2317 | 2 years ago |
SC | bf17a7522a | 2 years ago |
mhmdanas | a70b54592a | 2 years ago |
Milo Ivir | 3bbfa11966 | 2 years ago |
Eric | 839419353f | 2 years ago |
Ihor Hordiichuk | a5a6b0f84b | 2 years ago |
Oğuz Ersen | 1cc3485918 | 2 years ago |
Frits van Bommel | 55d3f463ca | 2 years ago |
Florian Trayon | 2d6b69b95b | 2 years ago |
Florian Trayon | 6388a02a81 | 2 years ago |
109247019824 | 25c82ee906 | 2 years ago |
Alex Baker | fcda6efe0c | 2 years ago |
Alex Baker | 1fbc2b1661 | 2 years ago |
Alex Baker | 99b1c2e38d | 2 years ago |
Alex Baker | 460269351a | 2 years ago |
Alex Baker | 9ea490572a | 2 years ago |
Alex Baker | 6f73765fd2 | 2 years ago |
Alex Baker | 47d6aeddea | 2 years ago |
Alex Baker | 3a93af4b0a | 2 years ago |
Alex Baker | b455e531d3 | 2 years ago |
Alex Baker | 43e787ad0c | 2 years ago |
Alex Baker | 2137bf8004 | 2 years ago |
Alex Baker | 543e169e33 | 2 years ago |
Alex Baker | 25877f05e2 | 2 years ago |
Alex Baker | 9832eef2c6 | 2 years ago |
109247019824 | b7342b770d | 2 years ago |
Alex Baker | cb0ca40f4e | 2 years ago |
Alex Baker | 0cecbbb376 | 2 years ago |
Alex Baker | 95918e3ae8 | 2 years ago |
Alex Baker | ba87311759 | 2 years ago |
Alex Baker | 708e2b14e6 | 2 years ago |
Alex Baker | 1ca6076005 | 2 years ago |
Alex Baker | 6b0ef5189d | 2 years ago |
Alex Baker | 07bf02f9e5 | 2 years ago |
Alex Baker | 6e70fc0912 | 2 years ago |
Alex Baker | 0b93712b05 | 2 years ago |
Alex Baker | 3bda6ccb4c | 2 years ago |
sunflowerskater | a51e742f39 | 2 years ago |
Alex Baker | 151dc36165 | 2 years ago |
Alex Baker | ead0255bbb | 2 years ago |
Alex Baker | 5439bc1611 | 2 years ago |
Alex Baker | 09de639b1c | 2 years ago |
Alex Baker | 75648de415 | 2 years ago |
Alex Baker | 9927ee786d | 2 years ago |
Osoitz | 0b4f9d6185 | 2 years ago |
Андрей | 8fd757c322 | 2 years ago |
Grzegorz Kulik | 0b23505da1 | 2 years ago |
109247019824 | 8feadf5a2f | 2 years ago |
Sergio Varela | 6f05d8c488 | 2 years ago |
SC | 10273c289f | 2 years ago |
Álvaro Oliveira | 509556654a | 2 years ago |
Shimon | 16651dc411 | 2 years ago |
hanthor | 5d624fec07 | 2 years ago |
Alex Baker | 01ad7e0081 | 2 years ago |
Alex Baker | 90e99e226a | 2 years ago |
Levy Marcelino | 1e1e9164e4 | 2 years ago |
Cyua Pyua | b014d753e5 | 2 years ago |
Emin Tufan Çetin | 23b9f6d14c | 2 years ago |
Levy Marcelino | c842bb42a5 | 2 years ago |
109247019824 | 208ab48936 | 2 years ago |
Alex Baker | 8d350949c1 | 2 years ago |
Shimoon Horanek | 06b5c723a7 | 2 years ago |
109247019824 | c52a9bd59b | 2 years ago |
Kaci | 8c4a2c4853 | 2 years ago |
109247019824 | 6f3c05e605 | 2 years ago |
Alexey Zinchenko | 6bae3d4812 | 2 years ago |
Alexey Zinchenko | 5f7389bd52 | 2 years ago |
109247019824 | 6417cc1711 | 2 years ago |
Txopi | 53995af675 | 2 years ago |
mm4c | 88c395bf39 | 2 years ago |
Yuri Dario | 7a17dc3719 | 2 years ago |
Jonatan Nyberg | 56dbadc415 | 2 years ago |
mm4c | 651ea9e690 | 2 years ago |
109247019824 | 413cf6fb1e | 2 years ago |
Yuri Dario | bb4ce22542 | 2 years ago |
bruh | 9e63551ad0 | 2 years ago |
Wiktor | 3923dd43a7 | 2 years ago |
Tntdruid | ce1b2c2018 | 2 years ago |
109247019824 | 86c8069a16 | 2 years ago |
109247019824 | 62332f87fc | 2 years ago |
mm4c | 395dc8fc3f | 2 years ago |
Pierfrancesco Passerini | 73a2114f81 | 2 years ago |
3ole | b77a78caf7 | 2 years ago |
Alex Baker | 6e695b144e | 2 years ago |
Alex Baker | 500cc3e6c2 | 2 years ago |
Nikita | 7334c41560 | 2 years ago |
mm4c | 5ff25d0c3d | 2 years ago |
Alex Baker | 7da45d780c | 2 years ago |
Alex Baker | 49774a5ec5 | 2 years ago |
Alex Baker | 8952286dff | 2 years ago |
Alex Baker | 3198392d38 | 2 years ago |
Milo Ivir | 2a36eeed64 | 2 years ago |
JY3 | f19ef4ef4a | 2 years ago |
Eric | 841c474660 | 2 years ago |
Ihor Hordiichuk | 65d4124c27 | 2 years ago |
Oğuz Ersen | 529a8cfebf | 2 years ago |
Frits van Bommel | bfa35f328d | 2 years ago |
mm4c | 899960415e | 2 years ago |
Allan Nordhøy | 5af9084d06 | 2 years ago |
Florian Trayon | f144f1811b | 2 years ago |
Florian Trayon | 79a3e02396 | 2 years ago |
Alex Baker | 99b533e5cd | 2 years ago |
Alex Baker | f97a9fc2a3 | 2 years ago |
Alex Baker | 0165cda12b | 2 years ago |
Alex Baker | 2564116341 | 2 years ago |
Alex Baker | b23aa62d42 | 2 years ago |
JY3 | 626d2422b7 | 2 years ago |
Ihor Hordiichuk | c321a996c6 | 2 years ago |
Emin Tufan Çetin | e50db3bacd | 2 years ago |
Nikita Epifanov | 7f0c904c11 | 2 years ago |
Wiktor | 853c2deb20 | 2 years ago |
Frits van Bommel | 51c991078d | 2 years ago |
mm4c | 7d80ae0e65 | 2 years ago |
Kaci | 6f07b9f007 | 2 years ago |
Florian Trayon | f89be76f03 | 2 years ago |
Florian Trayon | 3fb3935f26 | 2 years ago |
qwerty287 | 4492abcbc1 | 2 years ago |
109247019824 | 75de4569b8 | 2 years ago |
109247019824 | a823ab0f17 | 2 years ago |
Eric | 1572c58a6d | 2 years ago |
Alex Baker | 46a6996982 | 2 years ago |
Alex Baker | 1de4b220c3 | 2 years ago |
Oğuz Ersen | 64a5ea2c69 | 2 years ago |
bruh | 08d61e1eb8 | 2 years ago |
Jonatan Nyberg | ce6feb3984 | 2 years ago |
Nikita Epifanov | 521ff41454 | 2 years ago |
Wiktor | 8c1109f622 | 2 years ago |
Miguel | dca36b9fad | 2 years ago |
J. Lavoie | 26b861a07d | 2 years ago |
109247019824 | 6875e3f14a | 2 years ago |
Miguel | 08a87d0815 | 2 years ago |
mm4c | 0b4c852a99 | 2 years ago |
Francesco Saltori | b276d7bcb4 | 2 years ago |
109247019824 | d442c4dd42 | 2 years ago |
Alex Baker | 7bb0d0a84f | 2 years ago |
Alex Baker | a27047b6f8 | 2 years ago |
Unpublished | 5e9d97e06f | 2 years ago |
Alex Baker | d5ccc1aa8f | 2 years ago |
Alex Baker | ed48ab15e3 | 2 years ago |
Alex Baker | 437bb48d62 | 2 years ago |
Alex Baker | 68700a7319 | 2 years ago |
Alex Baker | b087cc090f | 2 years ago |
mm4c | 2c96e6ef29 | 2 years ago |
Alex Baker | 2c189f9610 | 2 years ago |
Alex Baker | 2aee91a04b | 2 years ago |
Alex Baker | ce191d3325 | 2 years ago |
J. Lavoie | 51609e54a9 | 2 years ago |
Simona Iacob | 31792efaf0 | 2 years ago |
mm4c | a7de841bc2 | 2 years ago |
J. Lavoie | 54a1fffd79 | 2 years ago |
Alex Baker | e6f90e622d | 2 years ago |
tsunamistonefly | 083b83816d | 2 years ago |
Alex Baker | ebb8f96795 | 2 years ago |
Alex Baker | 26796c0a57 | 2 years ago |
Alex Baker | e46ef8d7b0 | 2 years ago |
Milo Ivir | ae3d0f3d05 | 2 years ago |
qwerty287 | e3497f3f7d | 2 years ago |
Alex Baker | 4ca80e08c5 | 2 years ago |
Milo Ivir | 9adc822610 | 2 years ago |
Eric | 7083b377f5 | 2 years ago |
Ihor Hordiichuk | 84bddafa16 | 2 years ago |
Oğuz Ersen | a2a3bb454a | 2 years ago |
mm4c | 636d7a5a70 | 2 years ago |
Pierfrancesco Passerini | 16b6f90743 | 2 years ago |
Florian Trayon | 3da3a62d96 | 2 years ago |
Sebas Romero | ecdf8c61e4 | 2 years ago |
Florian Trayon | 85d53c02de | 2 years ago |
Alex Baker | 494c449fe6 | 2 years ago |
Alex Baker | e8f231b288 | 2 years ago |
Alex Baker | 0cfb27df22 | 2 years ago |
Alex Baker | f4398d82c6 | 2 years ago |
Alex Baker | c7f9f6e0e3 | 2 years ago |
Alex Baker | a62ffbc9fb | 2 years ago |
Alex Baker | b5993d0bee | 2 years ago |
Allineer | 94a8ff68f2 | 2 years ago |
J. Lavoie | 57200d5c1f | 2 years ago |
J. Lavoie | 94b277141a | 2 years ago |
Arne Klein | 453d57cb7e | 2 years ago |
Alex Baker | 36e9a8493d | 2 years ago |
Alex Baker | 62c5d21322 | 2 years ago |
Alex Baker | b4c85ed5c7 | 2 years ago |
Alex Baker | 7941373a37 | 2 years ago |
Alex Baker | 446de069ae | 2 years ago |
Alex Baker | 62931a5c70 | 2 years ago |
Alex Baker | 52a902c51a | 2 years ago |
Alex Baker | 3d9835a162 | 2 years ago |
Alex Baker | a5e0a06762 | 2 years ago |
Alex Baker | 25ab16faa8 | 2 years ago |
Alex Baker | a8f9fd1b77 | 2 years ago |
Jonatan Nyberg | 992e5048ec | 2 years ago |
Toni Estévez | 83d3820cf1 | 2 years ago |
eldiep | aded5e4d06 | 2 years ago |
109247019824 | f7e6fd8684 | 2 years ago |
Alex Baker | 73eeec9663 | 2 years ago |
Alex Baker | 50dde0b4c8 | 2 years ago |
Alex Baker | 968ba7080d | 2 years ago |
Simona Iacob | f5a01f71c9 | 2 years ago |
Pierfrancesco Passerini | 477b3c29ce | 2 years ago |
Kaci | 295fe61eff | 2 years ago |
Alex Baker | fdb2662e99 | 2 years ago |
Hugo Musso Gualandi | 957ad8f4d5 | 2 years ago |
JY3 | f8e1b1f828 | 2 years ago |
Frits van Bommel | cee7e39824 | 2 years ago |
JY3 | 9ac05e1e2c | 2 years ago |
mm4c | d4f594127f | 2 years ago |
Frits van Bommel | 97ac2989b0 | 2 years ago |
mm4c | 63cadc30e8 | 2 years ago |
Alex Baker | b026502bf8 | 2 years ago |
Alex Baker | 5e94537849 | 2 years ago |
Alex Baker | c9be5728b1 | 2 years ago |
Alex Baker | 75701f0b42 | 2 years ago |
bruh | 15d4e5182c | 2 years ago |
RainSlide | d5a8b86deb | 2 years ago |
RainSlide | e20e746490 | 2 years ago |
109247019824 | 64f0c95aaa | 2 years ago |
Alex Baker | 323fa0eb8a | 2 years ago |
Alex Baker | f512b8291b | 2 years ago |
Alex Baker | cb9661bc56 | 2 years ago |
Alex Baker | cf701e40c8 | 2 years ago |
Alex Baker | 2bf58b6977 | 2 years ago |
Alex Baker | 64dee60111 | 2 years ago |
Milo Ivir | c77f0770ad | 2 years ago |
Eric | 2940f3bd54 | 2 years ago |
Oğuz Ersen | 1bb0d39d78 | 2 years ago |
SC | 2ec8ffd0c5 | 2 years ago |
mm4c | 64ba437ac4 | 2 years ago |
Florian Trayon | 0e0743dc1f | 2 years ago |
109247019824 | ac3866339a | 2 years ago |
Alex Baker | 672dcdd268 | 2 years ago |
Alex Baker | 1154ba4be4 | 2 years ago |
Alex Baker | 433ae41200 | 2 years ago |
Alex Baker | 978d27de73 | 2 years ago |
Alex Baker | ad672d33aa | 2 years ago |
Alex Baker | 188acb4378 | 2 years ago |
Alex Baker | 0557ab4d18 | 2 years ago |
Alex Baker | 9d71c3f999 | 2 years ago |
Alex Baker | b45ed3bc14 | 2 years ago |
Alex Baker | 5c45d356c3 | 2 years ago |
Alex Baker | f99fcd3125 | 2 years ago |
Alex Baker | 259f428d71 | 2 years ago |
Alex Baker | 128715879a | 2 years ago |
Alex Baker | efd9276e7a | 2 years ago |
Ihor Hordiichuk | db334c792a | 2 years ago |
mm4c | 7167aa2862 | 2 years ago |
Roj | 7acc00d4ff | 2 years ago |
mm4c | 1a38ff07b5 | 2 years ago |
Roj | a2b3fcea2b | 2 years ago |
Alex Baker | b4315f9beb | 2 years ago |
Alex Baker | dfe64d5f6f | 2 years ago |
Alex Baker | 656c856737 | 2 years ago |
Jeffree Romero | a5afc509fe | 2 years ago |
Sebas Romero | 45b41e167f | 2 years ago |
Alex Baker | d339760985 | 2 years ago |
Alex Baker | ec3150f455 | 2 years ago |
Alex Baker | 488836f848 | 2 years ago |
Alex Baker | 42e44eafdc | 2 years ago |
Alex Baker | 39438dd8b7 | 2 years ago |
Andrea Rosso | 302a9f5d7f | 2 years ago |
qwerty287 | 47b607323f | 2 years ago |
Alex Baker | 0fcab69e5b | 2 years ago |
Luiz-bro | 5de75d2036 | 2 years ago |
Milo Ivir | 60ed6ba815 | 2 years ago |
Eric | ad89a6efce | 2 years ago |
Ihor Hordiichuk | 21a5f06bb6 | 2 years ago |
Emin Tufan Çetin | f5774cc93a | 2 years ago |
Nikita Epifanov | bd91355a2a | 2 years ago |
mm4c | e8ab7e1363 | 2 years ago |
109247019824 | 3e3c122e21 | 2 years ago |
Mohammed Anas | b35629ceeb | 2 years ago |
Alex Baker | 5907cae106 | 2 years ago |
Alex Baker | 762ae3dc59 | 2 years ago |
Florian Trayon | e111dd87bf | 2 years ago |
Florian Trayon | d11d431049 | 2 years ago |
bruh | 41025ba012 | 2 years ago |
Eric | 192cf10f67 | 2 years ago |
mm4c | 53fe2f6f76 | 2 years ago |
Alex Baker | bfe0af5500 | 2 years ago |
Alex Baker | d062bbb574 | 2 years ago |
Alex Baker | 733451fbc9 | 2 years ago |
Alex Baker | 4acad387dc | 2 years ago |
Alex Baker | cab4a877a2 | 2 years ago |
Ihor Hordiichuk | fe0dee99a6 | 2 years ago |
J. Lavoie | 4419002088 | 2 years ago |
Florian Trayon | f971168138 | 2 years ago |
Florian Trayon | c1574b9188 | 2 years ago |
J. Lavoie | 7e2525f12f | 2 years ago |
Eric | 55d0494c7b | 2 years ago |
Ihor Hordiichuk | 27a64e511f | 2 years ago |
Simona Iacob | 4b29e3bd0a | 2 years ago |
SC | 05ef5a8712 | 2 years ago |
mm4c | 713594bc85 | 2 years ago |
Pierfrancesco Passerini | 0e820f9d9f | 2 years ago |
Florian Trayon | f82acd700d | 2 years ago |
Florian Trayon | 54320927eb | 2 years ago |
qwerty287 | b7d2d62e01 | 2 years ago |
Eric | 5443eafc23 | 2 years ago |
Alex Baker | a5a65e2a2e | 2 years ago |
Alex Baker | cb834a9818 | 2 years ago |
Alex Baker | 67899e6fff | 2 years ago |
Alex Baker | ffe1ee6001 | 2 years ago |
Alex Baker | 2d3da4c306 | 2 years ago |
Milo Ivir | dc45b65f2f | 2 years ago |
SC | 8a281202f7 | 2 years ago |
Kaci | 0db6a3070f | 2 years ago |
Alex Baker | 03ea39c682 | 2 years ago |
Alex Baker | 00bc23c0dd | 2 years ago |
Alex Baker | 65e05b85b8 | 2 years ago |
Alex Baker | c88983ea77 | 2 years ago |
Sergio Varela | 408c85d047 | 2 years ago |
Eric | f8527cfef4 | 2 years ago |
Ihor Hordiichuk | 0eb537886b | 2 years ago |
Simona Iacob | baaeed46f8 | 2 years ago |
Sergio Varela | 7606759d1d | 2 years ago |
J. Lavoie | 64f4b039fc | 2 years ago |
Alex Baker | 3b2b16f0c6 | 2 years ago |
Stanislav Ochotnický | b6b0b233e2 | 2 years ago |
Oğuz Ersen | 09da1dcc42 | 2 years ago |
mm4c | 879d0da632 | 2 years ago |
J. Lavoie | 3eadcd420a | 2 years ago |
J. Lavoie | 25bacbf192 | 2 years ago |
Pierfrancesco Passerini | a3c5850155 | 2 years ago |
Alex Baker | e3bfd8b7a1 | 2 years ago |
Alex Baker | 2d9c1638dc | 2 years ago |
Eric | 861a82baf4 | 2 years ago |
Oğuz Ersen | e780af3fdb | 2 years ago |
Nikita Epifanov | 136e9097b6 | 2 years ago |
mm4c | ba44cd8a59 | 2 years ago |
Florian Trayon | f744957fc3 | 2 years ago |
Florian Trayon | 058f835482 | 2 years ago |
Alex Baker | d2121cc53a | 2 years ago |
Alex Baker | 23f24f78e4 | 2 years ago |
Eric | bd485aa431 | 2 years ago |
Ihor Hordiichuk | 66bf62503e | 2 years ago |
Oğuz Ersen | ff2f96132f | 2 years ago |
mm4c | 1f7a58f6f4 | 2 years ago |
Florian Trayon | fd0ce09382 | 2 years ago |
Florian Trayon | 57fbd1cb4d | 2 years ago |
Alex Baker | b123f7ce48 | 2 years ago |
Alex Baker | 7ddc681bf2 | 2 years ago |
Alex Baker | 31797e2e9d | 2 years ago |
Alex Baker | 35f7b8d8e0 | 2 years ago |
Eric | 483d4e6c53 | 2 years ago |
Ihor Hordiichuk | e9a9b8bf13 | 2 years ago |
Oğuz Ersen | 5a4ef4110b | 2 years ago |
mm4c | 46bac9ec5b | 2 years ago |
Florian Trayon | 13215f288e | 2 years ago |
Florian Trayon | e5c61d520d | 2 years ago |
Alex Baker | 90ca4beb63 | 2 years ago |
Alex Baker | 95b34d2a21 | 2 years ago |
Alex Baker | aadf4968cf | 2 years ago |
Alex Baker | 36944fb098 | 2 years ago |
Alex Baker | c1afbfbaa8 | 2 years ago |
mm4c | 0b97b96d4b | 2 years ago |
Alex Baker | 33c1dcee69 | 2 years ago |
Alex Baker | 985cdc47ce | 2 years ago |
Alex Baker | d2dddb9dbc | 2 years ago |
Alex Baker | 7a365167c8 | 2 years ago |
bruh | f03e8d0b36 | 2 years ago |
Ivan GJ | 3b63523d53 | 2 years ago |
qwerty287 | 7a78218a26 | 2 years ago |
Olexii Ondrei | 6930a3dcae | 2 years ago |
Sergio Varela | f34189a206 | 2 years ago |
Jonatan Nyberg | b8c7312140 | 2 years ago |
Simona Iacob | f653aa70a3 | 2 years ago |
mm4c | 543a3871d1 | 2 years ago |
Kaci | 1668d79439 | 2 years ago |
Alex Baker | 331dcc14b1 | 2 years ago |
Alex Baker | eec7d62adb | 2 years ago |
Milo Ivir | 5388d055a4 | 2 years ago |
Eric | f1fa1df99e | 2 years ago |
Emin Tufan Çetin | 149c26e589 | 2 years ago |
Nikita Epifanov | 19f7d667a0 | 2 years ago |
mm4c | 5cbe2e4d6c | 2 years ago |
Olexii Ondrei | 6e24cf4f81 | 2 years ago |
Alex Baker | cb273029c2 | 2 years ago |
Alex Baker | bd2256337b | 2 years ago |
Alex Baker | 0b9f844907 | 2 years ago |
Alex Baker | c32a9520c5 | 2 years ago |
Alex Baker | 43f019bcb4 | 2 years ago |
Alex Baker | 629d47df4e | 2 years ago |
Ihor Hordiichuk | a2279cb218 | 2 years ago |
Florian Trayon | 5c07c37112 | 2 years ago |
Florian Trayon | f0b62bc325 | 2 years ago |
Alex Baker | 0b0580e01b | 2 years ago |
Alex Baker | aee564471a | 2 years ago |
Alex Baker | 4bda63b43d | 2 years ago |
Eric | a79b7f276a | 2 years ago |
Ihor Hordiichuk | b914978a5b | 2 years ago |
mm4c | 3f205bd471 | 2 years ago |
Florian Trayon | 9ce7f39376 | 2 years ago |
Florian Trayon | 9dfa04c79b | 2 years ago |
Alex Baker | 16cdd8e360 | 2 years ago |
Alex Baker | fdde6c0313 | 2 years ago |
Alex Baker | 1edd9b8c5d | 2 years ago |
mm4c | fa9cb460cc | 2 years ago |
Alex Baker | ef62a946c6 | 2 years ago |
Alex Baker | eda9cd0c97 | 2 years ago |
Alex Baker | a13ec46162 | 2 years ago |
bruh | d337ad8341 | 2 years ago |
Ihor Hordiichuk | 1a039a3d92 | 2 years ago |
Oğuz Ersen | 79b06ac35f | 2 years ago |
Nikita Epifanov | 7f3a115093 | 2 years ago |
Frits van Bommel | d23d1144b9 | 2 years ago |
qwerty287 | 49414a26d9 | 2 years ago |
Tntdruid | 2a0f5eb6c6 | 2 years ago |
Alex Baker | 7d54808c92 | 2 years ago |
Alex Baker | 10797fe6fb | 2 years ago |
Alex Baker | 6ce99bfec1 | 2 years ago |
Alex Baker | 6fa9901b18 | 2 years ago |
Alex Baker | 898960a7dc | 2 years ago |
Alex Baker | ea001b2e65 | 3 years ago |
Alex Baker | cbd7b75cc0 | 3 years ago |
Sergio Varela | e22f9e5b6f | 3 years ago |
Eric | 6efabd2352 | 3 years ago |
Allan Nordhøy | bb7d9d01ae | 3 years ago |
Florian Trayon | d1a52a4864 | 3 years ago |
Florian Trayon | 10daf5f253 | 3 years ago |
bruh | 4300d6328d | 3 years ago |
Alex Baker | 58a2b16662 | 3 years ago |
Alex Baker | 3d7e4c1993 | 3 years ago |
Alex Baker | 634c030b93 | 3 years ago |
Alex Baker | c5e71b76f3 | 3 years ago |
Nikita Epifanov | 3d22d2d932 | 3 years ago |
Alex Baker | 1e4fa7c744 | 3 years ago |
Alex Baker | b008545b02 | 3 years ago |
Alex Baker | a16941b9b1 | 3 years ago |
Alex Baker | 7ae74e2a85 | 3 years ago |
Alex Baker | 5e24e3e977 | 3 years ago |
Alex Baker | 7338dc3f30 | 3 years ago |
Alex Baker | 08ff146320 | 3 years ago |
Alex Baker | ad4af1a2cb | 3 years ago |
Alex Baker | 45b0801158 | 3 years ago |
Alex Baker | 599faa660c | 3 years ago |
Alex Baker | 9238d367ac | 3 years ago |
Alex Baker | f8fd78a5b7 | 3 years ago |
Alex Baker | 4bc3162a5a | 3 years ago |
Alex Baker | 08f3ddeb33 | 3 years ago |
Alex Baker | 39b880a592 | 3 years ago |
Alex Baker | 59673e3975 | 3 years ago |
Alex Baker | 62598ac86f | 3 years ago |
Francesco Saltori | 6b337e9526 | 3 years ago |
Solatec Informàtica | 393873e157 | 3 years ago |
Alex Baker | e6bdd666f4 | 3 years ago |
Ihor Hordiichuk | 60f6f55327 | 3 years ago |
Simona Iacob | 309fba2acc | 3 years ago |
ssantos | 07da893a2d | 3 years ago |
mm4c | 0d84dcd190 | 3 years ago |
Pierfrancesco Passerini | 4d8f34bc5a | 3 years ago |
qwerty287 | 796679826b | 3 years ago |
Alex Baker | 28f45b05ac | 3 years ago |
Alex Baker | db973b2419 | 3 years ago |
Alex Baker | 47f920e32a | 3 years ago |
Trevor Terris | bc906090aa | 3 years ago |
Trevor Terris | 9742d93e83 | 3 years ago |
@ -0,0 +1,47 @@
|
|||||||
|
name: Assemble bundle
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
uses: ./.github/workflows/check.yml
|
||||||
|
bundle:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [ check ]
|
||||||
|
steps:
|
||||||
|
- name: Decode Keystore
|
||||||
|
run: |
|
||||||
|
echo ${{ secrets.KEY_STORE }} | base64 -di > "${RUNNER_TEMP}"/keystore.jks
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
bundler-cache: true
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
cache: 'gradle'
|
||||||
|
- name: Grant execute permission for gradlew
|
||||||
|
run: chmod +x gradlew
|
||||||
|
- name: Bundle
|
||||||
|
env:
|
||||||
|
KEY_PATH: ${{ runner.temp }}/keystore.jks
|
||||||
|
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
||||||
|
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
||||||
|
KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||||
|
MAPBOX_KEY: ${{ secrets.MAPBOX_KEY }}
|
||||||
|
GOOGLE_KEY: ${{ secrets.GOOGLE_KEY }}
|
||||||
|
run: bundle exec fastlane bundle
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: release
|
||||||
|
path: app/build/outputs/**
|
@ -0,0 +1,91 @@
|
|||||||
|
name: Run automated checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
workflow_call:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
bundler-cache: true
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
cache: 'gradle'
|
||||||
|
- name: Grant execute permission for gradlew
|
||||||
|
run: chmod +x gradlew
|
||||||
|
- name: Lint checks
|
||||||
|
run: bundle exec fastlane lint
|
||||||
|
- name: Archive lint reports
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
if: ${{ always() }}
|
||||||
|
with:
|
||||||
|
name: lint-reports
|
||||||
|
path: app/build/reports/*.html
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
flavor: [Googleplay, Generic]
|
||||||
|
api-level: [29]
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up JDK 17
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
cache: 'gradle'
|
||||||
|
|
||||||
|
- name: Enable KVM
|
||||||
|
run: |
|
||||||
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
||||||
|
sudo udevadm control --reload-rules
|
||||||
|
sudo udevadm trigger --name-match=kvm
|
||||||
|
|
||||||
|
# - name: AVD cache
|
||||||
|
# uses: actions/cache@v4
|
||||||
|
# id: avd-cache
|
||||||
|
# with:
|
||||||
|
# path: |
|
||||||
|
# ~/.android/avd/*
|
||||||
|
# ~/.android/adb*
|
||||||
|
# key: avd-${{ matrix.api-level }}
|
||||||
|
#
|
||||||
|
# - name: create AVD and generate snapshot for caching
|
||||||
|
# if: steps.avd-cache.outputs.cache-hit != 'true'
|
||||||
|
# uses: reactivecircus/android-emulator-runner@v2
|
||||||
|
# with:
|
||||||
|
# api-level: ${{ matrix.api-level }}
|
||||||
|
# force-avd-creation: false
|
||||||
|
# emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||||
|
# disable-animations: false
|
||||||
|
# script: echo "Generated AVD snapshot for caching."
|
||||||
|
|
||||||
|
- name: run tests
|
||||||
|
uses: reactivecircus/android-emulator-runner@v2
|
||||||
|
with:
|
||||||
|
api-level: ${{ matrix.api-level }}
|
||||||
|
force-avd-creation: false
|
||||||
|
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
|
||||||
|
disable-animations: true
|
||||||
|
script: ./gradlew -Pcoverage app:test${{ matrix.flavor }}DebugUnitTest app:connected${{ matrix.flavor }}DebugAndroidTest
|
||||||
|
|
||||||
|
- name: Upload test reports
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
if: ${{ always() }}
|
||||||
|
with:
|
||||||
|
name: test-reports-${{ matrix.flavor }}
|
||||||
|
path: app/build/reports/**
|
@ -1,36 +0,0 @@
|
|||||||
# This workflow will build a Java project with Gradle
|
|
||||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
|
|
||||||
|
|
||||||
name: Check licenses
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- CODE_OF_CONDUCT.md
|
|
||||||
- CONTRIBUTING.md
|
|
||||||
- README.md
|
|
||||||
- 'fastlane/**'
|
|
||||||
- .github/FUNDING.yml
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- CODE_OF_CONDUCT.md
|
|
||||||
- CONTRIBUTING.md
|
|
||||||
- README.md
|
|
||||||
- 'fastlane/**'
|
|
||||||
- .github/FUNDING.yml
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Set up JDK 11
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: '11.0.8'
|
|
||||||
- name: Grant execute permission for gradlew
|
|
||||||
run: chmod +x gradlew
|
|
||||||
- name: Build with Gradle
|
|
||||||
run: ./gradlew checkLicense
|
|
@ -1,42 +0,0 @@
|
|||||||
name: Lint
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- CODE_OF_CONDUCT.md
|
|
||||||
- CONTRIBUTING.md
|
|
||||||
- README.md
|
|
||||||
- 'fastlane/**'
|
|
||||||
- .github/FUNDING.yml
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- CODE_OF_CONDUCT.md
|
|
||||||
- CONTRIBUTING.md
|
|
||||||
- README.md
|
|
||||||
- 'fastlane/**'
|
|
||||||
- .github/FUNDING.yml
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: ruby/setup-ruby@v1
|
|
||||||
with:
|
|
||||||
bundler-cache: true
|
|
||||||
- name: Set up JDK 11
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: '11.0.8'
|
|
||||||
- name: Grant execute permission for gradlew
|
|
||||||
run: chmod +x gradlew
|
|
||||||
- name: Lint checks
|
|
||||||
run: bundle exec fastlane lint
|
|
||||||
- name: Archive lint reports
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: lint-reports
|
|
||||||
if: always()
|
|
||||||
path: app/build/reports/*.html
|
|
@ -1,37 +0,0 @@
|
|||||||
name: Run tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- CODE_OF_CONDUCT.md
|
|
||||||
- CONTRIBUTING.md
|
|
||||||
- README.md
|
|
||||||
- 'fastlane/**'
|
|
||||||
- .github/FUNDING.yml
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- CODE_OF_CONDUCT.md
|
|
||||||
- CONTRIBUTING.md
|
|
||||||
- README.md
|
|
||||||
- 'fastlane/**'
|
|
||||||
- .github/FUNDING.yml
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up JDK 11
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: '11.0.8'
|
|
||||||
- name: run tests
|
|
||||||
uses: reactivecircus/android-emulator-runner@v2
|
|
||||||
with:
|
|
||||||
api-level: 29
|
|
||||||
script: ./gradlew -Pcoverage :app:jacocoTestReportGoogleplayDebug :app:createGoogleplayDebugAndroidTestCoverageReport
|
|
||||||
- name: upload coverage
|
|
||||||
uses: codecov/codecov-action@v1
|
|
||||||
with:
|
|
||||||
directory: ./app/build
|
|
@ -1 +1 @@
|
|||||||
3.0.3
|
3.3.3
|
||||||
|
@ -1,555 +1,401 @@
|
|||||||
### 11.13 (2021-12-31)
|
### 13.11 (2024-06-28)
|
||||||
|
|
||||||
* Add option to play a sound when a task is completed
|
|
||||||
* Accept audio attachments shared from other apps
|
|
||||||
* Removed native EteSync v1 support
|
|
||||||
* EteSync v1 accounts can still be synchronized with the EteSync app
|
|
||||||
* Bug fixes
|
|
||||||
* Translation updates
|
|
||||||
* Bulgarian - @StoyanDimitrov
|
|
||||||
* Chinese (Simplified) - @sr093906
|
|
||||||
* Chinese (Traditional) - @dixon777
|
|
||||||
* Finnish - @CSharpest, Rami Lehtinen
|
|
||||||
* French - @FlorianLeChat
|
|
||||||
* Hungarian - kaciokos
|
|
||||||
* Italian - J. Lavoie, @Fs00
|
|
||||||
* Norwegian Bokmål - @comradekingu
|
|
||||||
* Persian - @Ahmadhosseinbor
|
|
||||||
* Spanish - @aplopez, @FlorianLeChat
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
|
||||||
|
|
||||||
### 11.12.3 (2021-11-22)
|
* New icon picker with over 2,100 icons! (pro feature)
|
||||||
|
|
||||||
* Fix reminders
|
### 13.10 (2024-06-27)
|
||||||
|
|
||||||
|
* Add search bar to drawer
|
||||||
|
* Add search bar to list picker
|
||||||
|
* Move 'Manage drawer' to ⚙️ > Navigation drawer
|
||||||
|
* Android 13+ users must grant additional reminder permissions
|
||||||
|
* Fix completing task multiple times from notification
|
||||||
|
* Fix deleting new subtasks from edit screen
|
||||||
|
* Enable Managed DAVx5
|
||||||
* Update translations
|
* Update translations
|
||||||
* Indonesian - when we were sober
|
* Arabic - @islam2hamy
|
||||||
* Kurdish (Northern) - Pêşeroja paşerojê
|
* Brazilian Portuguese - Jose Delvani
|
||||||
* Romanian - @Steinhagen
|
* Chinese (Simplified) - 大王叫我来巡山
|
||||||
|
* Chinese (Traditional) - hugoalh
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Finnish - Rami Lehtinen, @CSharpest
|
||||||
|
* German - min7-i
|
||||||
|
* Spanish - gallegonovato
|
||||||
|
* Turkish - @oersen
|
||||||
|
|
||||||
### 11.12.2 (2021-11-13)
|
### 13.9.9 (2024-05-30)
|
||||||
|
|
||||||
* Fix reminders
|
* Fix import backup crashes
|
||||||
* Fix reminder preference backup
|
* Fix showing completed subtasks in edit screen
|
||||||
* Update translations
|
|
||||||
* Interlingua - @softinterlingua
|
|
||||||
* Tamil - @balogic
|
|
||||||
|
|
||||||
### 11.12.1 (2021-11-05)
|
### 13.9.7 (2024-05-23)
|
||||||
|
|
||||||
* Fix reminders
|
* Add default reminders when adding start/due dates to existing tasks [#1846](https://github.com/tasks/tasks/issues/1846)
|
||||||
* Update translations
|
* Fix import backup crash
|
||||||
* Bulgarian - @StoyanDimitrov
|
|
||||||
* Croatian - @milotype
|
|
||||||
* Norwegian Bokmål - @HumanNr4584093104
|
|
||||||
* Romanian - Simona Iacob
|
|
||||||
* Russian - @NikGreens
|
|
||||||
* Tamil - @balogic
|
|
||||||
* Turkish - @ersen0
|
|
||||||
|
|
||||||
### 11.12 (2021-10-26)
|
### 13.9.6 (2024-05-18)
|
||||||
|
|
||||||
* Add option to notify at start date
|
* Fix widget crash [#2873](https://github.com/tasks/tasks/issues/2873)
|
||||||
* Widget tweaks for Android 12
|
* Fix recurrence unable to finish [#2874](https://github.com/tasks/tasks/issues/2874)
|
||||||
* Fix crash when deleting tasks (Thanks @fschrempf!)
|
* Fix edit screen being cleared when reopening app [#2857](https://github.com/tasks/tasks/issues/2857)
|
||||||
* Fix truncated calendar picker
|
* Fix performance regressions
|
||||||
|
* Simplified internal alarm scheduling logic
|
||||||
* Update translations
|
* Update translations
|
||||||
* Basque - Sergio Varela
|
* Arabic - @islam2hamy
|
||||||
* Brazilian Portuguese - @laralem
|
|
||||||
* Bulgarian - @StoyanDimitrov
|
* Bulgarian - @StoyanDimitrov
|
||||||
* Catalan - @Solatec
|
|
||||||
* Dutch - @fvbommel
|
|
||||||
* French - @FlorianLeChat
|
|
||||||
* German - @qwerty287
|
|
||||||
* Hungarian - kaciokos
|
|
||||||
* Lithuanian - @70h
|
|
||||||
* Polish - @dominik-korsa
|
|
||||||
* Simplified Chinese - @sr093906, @Geeyun-JY3
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
|
||||||
* Vietnamese - bruh
|
|
||||||
|
|
||||||
### 11.11 (2021-09-21)
|
### 13.9 (2024-05-01)
|
||||||
|
|
||||||
* Add 'Due now' filter criteria - Thanks @tkterris!
|
* @elmuffo: Add swipe-to-snooze [#2839](https://github.com/tasks/tasks/pull/2839)
|
||||||
* Fix crash on Android 12 - Thanks @tkterris!
|
* @IlyaBizyaev: Add option to use quick tile without unlocking device [#2847](https://github.com/tasks/tasks/pull/2847)
|
||||||
* Fix preference display issue - Thanks @Groctel!
|
* @liz-desartiges: Add support for Z Flip 5 cover screen [#2843](https://github.com/tasks/tasks/pull/2843)
|
||||||
* Target Android 12
|
* @purushyb: Fix drawer not updating after editing items [#2855](https://github.com/tasks/tasks/pull/2855)
|
||||||
* Ignore link clicks during multi-select
|
* @hady-exc: Migrate tag picker screen to Compose [#2849](https://github.com/tasks/tasks/pull/2849)
|
||||||
|
* @yurtpage: Add Russian app store description [#2848](https://github.com/tasks/tasks/pull/2848)
|
||||||
|
* Fix duplicate notifications [#2835](https://github.com/tasks/tasks/issues/2835)
|
||||||
|
* Fix adding '(Completed)' to calendar entries [#2832](https://github.com/tasks/tasks/issues/2832)
|
||||||
|
* Fix hiding empty items from drawer [#2831](https://github.com/tasks/tasks/issues/2831)
|
||||||
|
* Exclude old snoozed tasks from snoozed task filter
|
||||||
|
* Update translations
|
||||||
|
* Brazilian Portuguese - @mayhmemo, @gorgonun
|
||||||
|
* Chinese (Simplified) - 大王叫我来巡山
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Esperanto - Don Zouras
|
||||||
|
* French - Lionel HANNEQUIN
|
||||||
|
* German - sorifukobexomajepasiricupuva33, min7-i
|
||||||
|
* Portuguese - @fparri, @laralem
|
||||||
|
* Spanish - gallegonovato
|
||||||
|
* Swedish - @JonatanWick
|
||||||
|
* Turkish - @emintufan, @oersen
|
||||||
|
|
||||||
|
### 13.8.1 (2024-03-24)
|
||||||
|
|
||||||
|
* Fix copy causing duplicate Google Tasks
|
||||||
|
* Fix navigation drawer crash
|
||||||
|
* Fix backup import dropping tasks
|
||||||
|
|
||||||
|
### 13.8 (2024-03-22)
|
||||||
|
|
||||||
|
* Dynamic widget theme (name-your-price subscription required)
|
||||||
|
* Replace 'until' with 'ends on' for repeating tasks [#2797](https://github.com/tasks/tasks/pull/2797) - @akwala
|
||||||
|
* Fix loading selected list on startup [#2777](https://github.com/tasks/tasks/issues/2777)
|
||||||
|
* Fix repeating tasks ending one day early
|
||||||
|
* Fix repeating task crash
|
||||||
|
* Fix backup import crash
|
||||||
|
* Fix Astrid manual ordering crash in widget
|
||||||
* Update translations
|
* Update translations
|
||||||
* Arabic - @mhmdanas, @machiav3lli
|
* Brazilian Portuguese - @mayhmemo
|
||||||
* Basque - @Thadah
|
|
||||||
* Brazilian Portuguese - @laralem
|
|
||||||
* Bulgarian - @StoyanDimitrov
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Catalan - @ferranpujolcamins
|
||||||
|
* Chinese (Simplified) - 大王叫我来巡山
|
||||||
* Croatian - @milotype
|
* Croatian - @milotype
|
||||||
* Czech - @vitSkalicky
|
* Czech - Odweta
|
||||||
* Danish - @Tntdruid
|
* German - @macpac59
|
||||||
* Dutch - @fvbommel
|
* Italian - @ppasserini
|
||||||
* French - @FlorianLeChat
|
* Spanish - gallegonovato
|
||||||
* German - @machiav3lli, J. Lavoie
|
|
||||||
* Greek - @giorgio93p
|
|
||||||
* Indonesian - @erigmac
|
|
||||||
* Italian - J. Lavoie, @Fs00
|
|
||||||
* Japanese - さとうまこと
|
|
||||||
* Lithuanian - @70h
|
|
||||||
* Norwegian Bokmål - @comradekingu
|
|
||||||
* Portuguese - @laralem
|
|
||||||
* Romanian - Simona Iacob
|
|
||||||
* Russian - @tolstovka, @zhelemysh, @ToxesFoxes
|
|
||||||
* Simplified Chinese - @sr093906, @Geeyun-JY3
|
|
||||||
* Sinhala - @Dilshan-H
|
|
||||||
* Spanish - @FlorianLeChat, @Groctel, @berman00
|
|
||||||
* Swedish - @bittin
|
* Swedish - @bittin
|
||||||
* Turkish - @ersen0
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
* Ukrainian - @IhorHordiichuk
|
||||||
* Vietnamese - bruh
|
* Vietnamese - @ngocanhtve
|
||||||
|
|
||||||
### 11.10.2 (2021-07-15)
|
### 13.7 (2024-02-07)
|
||||||
|
|
||||||
* Fix location-based reminders
|
* Fix returning to previous filter after search [#2700](https://github.com/tasks/tasks/pull/2700)
|
||||||
* Fix preference backup
|
* Fix wearable notifications on Android 14+
|
||||||
|
* Fix issue causing repeating tasks to not repeat
|
||||||
|
* Fix dragging a task into a subtask in another list
|
||||||
|
* Rewrote navigation drawer in Jetpack Compose
|
||||||
|
* Internal changes to navigation
|
||||||
|
* Enable multi-select when adding attachments
|
||||||
|
* Show count of tasks to be deleted when clearing completed
|
||||||
|
* Include hidden subtasks when clearing completed [#2724](https://github.com/tasks/tasks/issues/2724)
|
||||||
|
* Don't show hidden or completed tasks in snoozed filter
|
||||||
|
* Remove markdown from repeating task snackbar
|
||||||
* Update translations
|
* Update translations
|
||||||
* Arabic - git ty, @mhmdanas
|
* Azerbaijani - Shaban Mamedov
|
||||||
* Basque - Sergio Varela
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Catalan - raulmagdalena
|
||||||
|
* Chinese (Simplified) - 大王叫我来巡山
|
||||||
|
* Chinese (Traditional) - @abc0922001
|
||||||
* Croatian - @milotype
|
* Croatian - @milotype
|
||||||
* Czech - @vitSkalicky, @p-bo
|
* Dutch - @mm4c
|
||||||
* Dutch - Beardhatcode, @fvbommel
|
* Esperanto - Don Zouras
|
||||||
* French - @FlorianLeChat
|
* Finnish - @millerii
|
||||||
* German - K. Herbert, @franconian, @ecxod, @bluedeepimpact
|
* French - J. Lavoie
|
||||||
* Indonesian - when we were sober
|
* German - @CennoxX
|
||||||
|
* Hebrew - @elig0n
|
||||||
* Interlingua - @softinterlingua
|
* Interlingua - @softinterlingua
|
||||||
* Italian - J. Lavoie
|
* Odia - @SubhamJena
|
||||||
* Lithuanian - @70h
|
* Persian - @Monirzadeh
|
||||||
* Norwegian Bokmål - @Jerome2103
|
* Spanish - gallegonovato
|
||||||
* Portuguese - @laralem
|
* Swedish - @bittin
|
||||||
* Russian - @KovalevArtem, @Blueberryy
|
* Turkish - @oersen
|
||||||
* Simplified Chinese - @sr093906, @Geeyun-JY3
|
* Ukrainian - Сергій
|
||||||
* Sinhala - HelaBasa
|
* Vietnamese - @ngocanhtve
|
||||||
* Spanish - @FlorianLeChat, @fitojb
|
|
||||||
* Turkish - Oğuz Ersen, @emintufan
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
|
||||||
* Urdu - Maaz
|
|
||||||
* Vietnamese - bruh
|
|
||||||
|
|
||||||
### 11.10.1 (2021-05-26)
|
### 13.6.3 (2023-11-25)
|
||||||
|
|
||||||
* Improve Android 12 compatibility
|
* Revert "Preserve modification times on initial sync" [#2460](https://github.com/tasks/tasks/issues/2640)
|
||||||
* Update status bar styles
|
* Fix unnecessary DecSync work
|
||||||
* Update translations
|
|
||||||
* Arabic - @mhmdanas
|
|
||||||
* Basque - Sergio Varela
|
|
||||||
* Catalan - @toram
|
|
||||||
* Chinese (Traditional) - @kisaragi-hiu
|
|
||||||
* Croatian - @ggdorman
|
|
||||||
* Czech - @vitSkalicky
|
|
||||||
* Esperanto - @J053Fabi0, @jakubfabijan
|
|
||||||
* French - K. Herbert, J. Lavoie
|
|
||||||
* German - K. Herbert
|
|
||||||
* Greek - Eugenia Russell
|
|
||||||
* Hungarian - @gthrepwood
|
|
||||||
* Indonesian - @andhikapangestu29
|
|
||||||
* Korean - Sunjae Choi
|
|
||||||
* Portuguese (Brazil) - @laralem
|
|
||||||
* Portuguese - @SantosSi, @laralem
|
|
||||||
* Russian - Nikita Epifanov
|
|
||||||
* Sinhala - @Dilshan-H
|
|
||||||
* Spanish - @fitojb
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
|
||||||
* Urdu - Maaz
|
|
||||||
* Vietnamese - bruh
|
|
||||||
|
|
||||||
### 11.10 (2021-04-19)
|
### 13.6.2 (2023-10-30)
|
||||||
|
|
||||||
* Markdown support ([Documentation](https://tasks.org/docs/markdown))
|
* Fix updating modification timestamp on edits
|
||||||
* Samsung DeX support - Thanks @mhmdanas!
|
|
||||||
* Update to Google Play Billing v3
|
### 13.6.1 (2023-10-27)
|
||||||
* Remove background sync for legacy EteSync v1 accounts
|
|
||||||
* Update translations
|
|
||||||
* Arabic - @mhmdanas
|
|
||||||
* Brazilian Portuguese - @daylightdev
|
|
||||||
* Dutch - @fvbommel
|
|
||||||
* French - @FlorianLeChat, J. Lavoie
|
|
||||||
* German - J. Lavoie
|
|
||||||
* Greek - Michalis, Eugenia Russell
|
|
||||||
* Indonesian - @liimee
|
|
||||||
* Italian - J. Lavoie, @Fs00
|
|
||||||
* Japanese - @kisaragi-hiu
|
|
||||||
* Kannada - @shashank-p
|
|
||||||
* Russian - @zhelemysh, Nikita Epifanov
|
|
||||||
* Simplified Chinese - @sr093906
|
|
||||||
* Spanish - @FlorianLeChat
|
|
||||||
* Turkish - Oğuz Ersen
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
|
||||||
* Urdu - Maaz
|
|
||||||
|
|
||||||
### 11.9.2 (2021-03-29)
|
* Push pending changes when app is backgrounded
|
||||||
|
* Don't require internet connection for DAVx5/EteSync/DecSync sync
|
||||||
|
* Don't perform background sync for DAVx5/EteSync/DecSync
|
||||||
|
* Background sync is performed by the sync app
|
||||||
|
* Preserve modification times on initial sync [#2496](https://github.com/tasks/tasks/issues/2496)
|
||||||
|
* Replace deprecated method call [#2547](https://github.com/tasks/tasks/pull/2547) - @kmj-99
|
||||||
|
* Improve task list scrolling performance
|
||||||
|
* Fix hourly recurrence bug
|
||||||
|
* Update translations
|
||||||
|
* Chinese (Simplified) - Eric
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Czech - @ceskyDJ
|
||||||
|
* Finnish - @millerii
|
||||||
|
* French - Lionel HANNEQUIN, Bruno Duyé
|
||||||
|
* Japanese - Kazushi Hayama
|
||||||
|
* Portuguese - @loucurapt
|
||||||
|
* Romanian - @ygorigor
|
||||||
|
* Swedish - @bittin
|
||||||
|
|
||||||
* Fix date translation issue - Thanks @mhmdanas!
|
### 13.6 (2023-10-07)
|
||||||
* Fix misc translation strings - Thanks J. Lavoie!
|
|
||||||
|
* Change priority with multi-select [#2257](https://github.com/tasks/tasks/pull/2452) - @vulewuxe86
|
||||||
|
* Automatically select newly copied tasks [#2246](https://github.com/tasks/tasks/pull/2446) - @vulewuxe86
|
||||||
|
* Reduce minimum size for widgets [#2436](https://github.com/tasks/tasks/pull/2436) - @histefanhere
|
||||||
|
* Replace deprecated method call [#2526](https://github.com/tasks/tasks/pull/2526) - @kmj-99
|
||||||
|
* Improve handling text shared to Tasks [#2485](https://github.com/tasks/tasks/issues/2485)
|
||||||
|
* Use notification audio stream for completion sound
|
||||||
|
* Notification preference 'More settings' opens channel settings directly
|
||||||
|
* Respect 'New tasks on top' preference when creating subtasks
|
||||||
|
* Automatically add due dates for recurring tasks
|
||||||
|
* Fix crash on startup
|
||||||
* Update translations
|
* Update translations
|
||||||
|
* Brazilian Portuguese - @gorgonun
|
||||||
|
* Bulgarian - @StoyanDimitrov, @salif
|
||||||
|
* Catalan - Joan Montané
|
||||||
|
* Chinese (Simplified) - Poesty Li
|
||||||
|
* Chinese (Traditional) - @abc0922001
|
||||||
* Dutch - @fvbommel
|
* Dutch - @fvbommel
|
||||||
* French - @FlorianLeChat
|
* French - @FlorianLeChat
|
||||||
* German - @franconian, Achim Schumacher, J. Lavoie
|
* German - @qwerty287, deep map, @franconian
|
||||||
* Hungarian - kaciokos
|
* Hungarian - Kaci
|
||||||
* Indonesian - when we were sober
|
* Italian - @ppasserini
|
||||||
* Italian - @Fs00
|
* Japanese - Kazushi Hayama, Naga
|
||||||
* Simplified Chinese - @sr093906
|
|
||||||
* Spanish - @FlorianLeChat
|
* Spanish - @FlorianLeChat
|
||||||
* Turkish - @emintufan
|
* Swedish - @Anaemix, @bittin
|
||||||
|
* Turkish - @emintufan, @oersen
|
||||||
* Ukrainian - @IhorHordiichuk
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
### 11.9.1 (2021-03-25)
|
### 13.5.1 (2023-08-02)
|
||||||
|
|
||||||
* Open documentation links in custom tabs
|
* Fix crash when importing Google Tasks from a backup file
|
||||||
* Fix crash in Mapbox reverse geocoder
|
* Added Burmese translations - @htetoh
|
||||||
* Increase 'Add subtask' touch target
|
|
||||||
* Update translations
|
|
||||||
* Arabic - @mhmdanas
|
|
||||||
* German - Achim Schumacher
|
|
||||||
* Hungarian - kaciokos
|
|
||||||
* Italian - @Fs00
|
|
||||||
* Turkish - @emintufan
|
|
||||||
|
|
||||||
### 11.9 (2021-03-20)
|
|
||||||
|
|
||||||
* New calendar and clock pickers
|
|
||||||
* New preference to default to text input for date and time
|
|
||||||
* Fix issue causing Tasks to use wrong search provider
|
|
||||||
* Fix crash when Nextcloud/ownCloud don't send list owner
|
|
||||||
* Update translations
|
* Update translations
|
||||||
* Basque - Sergio Varela
|
* Chinese (Simplified) - Poesty Li
|
||||||
* Croatian - @milotype
|
* Croatian - @milotype
|
||||||
* Dutch - @fvbommel
|
* Japanese - Kazushi Hayama
|
||||||
* French - @FlorianLeChat
|
* Polish - @alex-ter
|
||||||
* German - Achim Schumacher
|
* Russian - @alex-ter
|
||||||
* Hungarian - kaciokos
|
|
||||||
* Indonesian - when we were sober
|
|
||||||
* Simplified Chinese - @sr093906
|
|
||||||
* Spanish - @FlorianLeChat
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Vietnamese - @unbiaseduser
|
||||||
|
|
||||||
### 11.8 (2021-03-15)
|
### 13.5 (2023-07-28)
|
||||||
|
|
||||||
* CalDAV: Send shared list invites
|
* New custom recurrence picker
|
||||||
* Compatible with Tasks.org, Nextcloud, ownCloud, and sabre/dav
|
|
||||||
* Show shared list invite status in list settings
|
|
||||||
* Fix drawer count when list is shared with 2+ users
|
|
||||||
* Removed legacy EteSync v1 list management features
|
|
||||||
* Dropped support for Android 6.0
|
|
||||||
* Update translations
|
* Update translations
|
||||||
* Arabic - @mhmdanas
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Czech - @ceskyDJ
|
||||||
* Dutch - @fvbommel
|
* Dutch - @fvbommel
|
||||||
* Esperanto - @jakubfabijan
|
|
||||||
* French - @FlorianLeChat
|
* French - @FlorianLeChat
|
||||||
* German - @Jerome2103
|
* Italian - @ppasserini
|
||||||
* Hungarian - kaciokos
|
|
||||||
* Indonesian - when we were sober, @andhikapangestu29
|
|
||||||
* Norwegian Bokmål - @comradekingu
|
|
||||||
* Polish - @doegedomita
|
|
||||||
* Portuguese - @Jerome2103
|
|
||||||
* Spanish - @FlorianLeChat
|
* Spanish - @FlorianLeChat
|
||||||
* Turkish - Oğuz Ersen
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
|
||||||
|
|
||||||
### 11.7 (2021-03-08)
|
### 13.4 - (2023-07-16)
|
||||||
|
|
||||||
* CalDAV: Display shared list members in list settings
|
* Sorting improvements
|
||||||
* Compatible with Tasks.org, Nextcloud, ownCloud, OpenXchange, and sabre/dav
|
* Add subtask sort configuration
|
||||||
* CalDAV: List owners can remove shared list members from list
|
* Update sort menu button design
|
||||||
* Compatible with Tasks.org, Nextcloud, ownCloud, and sabre/dav
|
* Don't show subtasks of hidden tasks in 'My Tasks'
|
||||||
* Fix time zone issue in recurrence picker
|
* Fix Google Tasks sync issue
|
||||||
* Update translations
|
* Update translations
|
||||||
* Arabic - @mhmdanas
|
* Bulgarian - @StoyanDimitrov
|
||||||
* Basque - Sergio Varela
|
* Catalan - @and4po, Eudald Puy Polls
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* German - @schneidr
|
||||||
|
* Hungarian - Kaci
|
||||||
|
* Japanese - Naga
|
||||||
|
* Korean - Sunjae Choi
|
||||||
|
* Portuguese - @laralem
|
||||||
|
* Swedish - @bittin
|
||||||
|
|
||||||
|
### 13.3.2 - (2023-06-02)
|
||||||
|
|
||||||
|
* Sorting improvements
|
||||||
|
* Configure sort grouping
|
||||||
|
* Configure sorting within sort group
|
||||||
|
* Configure completed task sorting
|
||||||
|
* Fix Google Task list chips showing on widget
|
||||||
|
* Update translations
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Catalan - @and4po
|
||||||
|
* Chinese (Simplified) - Poesty Li
|
||||||
|
* Croatian - @milotype
|
||||||
* Dutch - @fvbommel
|
* Dutch - @fvbommel
|
||||||
* French - @FlorianLeChat
|
* French - @FlorianLeChat
|
||||||
* Hungarian - kaciokos
|
* German - @qwerty287, @franconian
|
||||||
* Indonesian - @putulopi
|
* Hungarian - Kaci
|
||||||
* Simplified Chinese - @sr093906
|
* Italian - @ppasserini
|
||||||
* Spanish - @FlorianLeChat
|
* Spanish - @FlorianLeChat
|
||||||
* Turkish - @emintufan, Oğuz Ersen
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
### 11.6.1 (2021-03-11)
|
### 13.2.4 - (2023-05-24)
|
||||||
|
* Add 'By list' sort mode [#1265](https://github.com/tasks/tasks/issues/1265)
|
||||||
* F-Droid: Fix OpenStreetMap crash
|
* Save task when pressing done [#2125](https://github.com/tasks/tasks/pull/2125)
|
||||||
|
* Use ISO 8601 date formatting for backup filenames [#1550](https://github.com/tasks/tasks/pull/1550)
|
||||||
### 11.6 (2021-03-04)
|
* Fix filter sorting bug [#1561](https://github.com/tasks/tasks/issues/1561)
|
||||||
|
* Fix manual sorting crash [#2141](https://github.com/tasks/tasks/issues/2141)
|
||||||
* CalDAV: Display indicator in drawer when a list is shared with other users
|
* Fix manual sorting bug [#2101](https://github.com/tasks/tasks/issues/2101)
|
||||||
* Compatible with Tasks.org, Nextcloud, ownCloud, OpenXchange, and sabre/dav
|
* Fix multiple accounts on same server [#2301](https://github.com/tasks/tasks/issues/2301)
|
||||||
* CalDAV: Don't upload changes to read-only lists
|
* Don't set `COUNT=0` on recurrence rules [#2158](https://github.com/tasks/tasks/issues/2158)
|
||||||
([#931](https://github.com/tasks/tasks/issues/931))
|
* Improve task list performance [#2062](https://github.com/tasks/tasks/issues/2062)
|
||||||
* Remove unnecessary icon-mirroring for RTL users
|
* Attempt to hide inactive widgets in settings [#2145](https://github.com/tasks/tasks/issues/2145)
|
||||||
([#1385](https://github.com/tasks/tasks/issues/1385) and
|
* Disable persistent reminders on Android 14+
|
||||||
[#1391](https://github.com/tasks/tasks/pull/1391)) - Thanks to @mhmdanas
|
* Android 14+ no longer supports persistent reminders 😢
|
||||||
|
* Fix notifications on Android 14
|
||||||
|
* Fix crash when missing exact alarm permissions
|
||||||
|
* Update logic for adding default reminders during sync
|
||||||
|
* Don't add reminders on initial sync
|
||||||
|
* Don't add reminders if other client supports reminder sync
|
||||||
|
* Internal database changes
|
||||||
|
* You will need to reconfigure any widgets that were set to display a Google
|
||||||
|
Task list or filter. Sorry for the interruption!
|
||||||
|
* Add Odia translations - @SubhamJena
|
||||||
* Update translations
|
* Update translations
|
||||||
* Arabic - @mhmdanas
|
* Brazilian Portuguese - @lnux-usr
|
||||||
* Basque - Sergio Varela
|
|
||||||
* Bulgarian - @StoyanDimitrov
|
* Bulgarian - @StoyanDimitrov
|
||||||
* Czech - @vitSkalicky
|
* Catalan - @and4po
|
||||||
|
* Chinese (Simplified) - Poesty Li
|
||||||
|
* Chinese (Traditional) - Chih-Hsuan Yen
|
||||||
|
* Croatian - @milotype
|
||||||
* Dutch - @fvbommel
|
* Dutch - @fvbommel
|
||||||
|
* Esperanto - Don Zouras
|
||||||
|
* Finnish - @millerii
|
||||||
* French - @FlorianLeChat
|
* French - @FlorianLeChat
|
||||||
* Hungarian - kaciokos
|
* Italian - @ppasserini
|
||||||
* Indonesian - @putulopi
|
* Japanese - @kisaragi-hiu, Naga
|
||||||
* Russian - Nikita Epifanov
|
* Korean - Sunjae Choi, @o20n3
|
||||||
* Simplified Chinese - @sr093906
|
* Romanian - @simonaiacob
|
||||||
* Sinhala - HelaBasa
|
* Russian - @AHOHNMYC
|
||||||
* Spanish - @FlorianLeChat
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - @ersen0
|
||||||
* Ukrainian - @IhorHordiichuk
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
### 11.5.2 (2021-02-25)
|
### 13.1.2 (2023-02-02)
|
||||||
|
|
||||||
* Fix CalDAV sync error
|
* Add default reminders to incoming iCalendar tasks [#1984](https://github.com/tasks/tasks/issues/1984)
|
||||||
* Report errors when generating recurrence dates
|
* Sync when brought to the foreground [#2096](https://github.com/tasks/tasks/issues/2096)
|
||||||
|
* Update translations
|
||||||
|
* Arabic - haidarah esmander
|
||||||
|
* Czech - @SlavekB
|
||||||
|
* Danish - Tntdruid
|
||||||
|
* Esperanto - Don Zouras, @J053Fabi0
|
||||||
|
* Finnish - @millerii
|
||||||
|
* German - @franconian
|
||||||
|
* Italian - @ppasserini
|
||||||
|
* Japanese - Kazushi Hayama
|
||||||
|
* Korean - @o20n3
|
||||||
|
* Polish - @gnu-ewm
|
||||||
|
* Vietnamese - @unbiaseduser
|
||||||
|
|
||||||
|
### 13.1.1 (2022-12-06)
|
||||||
|
|
||||||
|
* Fix crash when opening notification settings
|
||||||
|
* Fix IAP errors in some locales
|
||||||
|
* Update translations
|
||||||
|
* Italian - @ppasserini
|
||||||
|
* Japanese - Kazushi Hayama
|
||||||
|
|
||||||
### 11.5.1 (2021-02-24)
|
### 13.1.0 (2022-11-30)
|
||||||
|
|
||||||
* Fix 'repeat until' date
|
* Support for DAVx5 and CalDAV read-only lists [#931](https://github.com/tasks/tasks/issues/931)
|
||||||
* Fix repeat dates for UTC+13
|
* Use default Android network security configuration
|
||||||
([#1374](https://github.com/tasks/tasks/issues/1374))
|
|
||||||
* F-Droid: Handle null name in Nominatim reverse geocoder
|
|
||||||
([#1380](https://github.com/tasks/tasks/issues/1380))
|
|
||||||
* Update translations
|
* Update translations
|
||||||
* Basque - Sergio Varela
|
* Bulgarian - @StoyanDimitrov
|
||||||
* Croatian - @ggdorman
|
* Chinese (Simplified) - Eric
|
||||||
|
* Croatian - @milotype
|
||||||
* Dutch - @fvbommel
|
* Dutch - @fvbommel
|
||||||
|
* Finnish - @millerii
|
||||||
* French - @FlorianLeChat
|
* French - @FlorianLeChat
|
||||||
* Hungarian - kaciokos
|
* German - @helloworldtest123
|
||||||
* Norwegian Bokmål - @comradekingu
|
* Hungarian - Kaci
|
||||||
* Polish - @alex-ter
|
* Italian - @ppasserini
|
||||||
|
* Lithuanian - @70h
|
||||||
* Russian - Nikita Epifanov
|
* Russian - Nikita Epifanov
|
||||||
* Simplified Chinese - @sr093906
|
|
||||||
* Spanish - @FlorianLeChat
|
|
||||||
* Turkish - Oğuz Ersen
|
|
||||||
* Ukrainian - @IhorHordiichuk
|
|
||||||
* Urdu - Maaz
|
|
||||||
|
|
||||||
### 11.5 (2021-02-17)
|
|
||||||
|
|
||||||
* Sync snooze time with Tasks.org, DAVx⁵, CalDAV, EteSync, and DecSync
|
|
||||||
* Compatible with Thunderbird
|
|
||||||
* New map theme preference
|
|
||||||
* 10 new icons
|
|
||||||
* F-Droid: Use Nominatim for reverse geocoding
|
|
||||||
* Google Play: Use OpenStreetMap tiles when Play Services not available
|
|
||||||
* Google Play: Use Android location services when Play Services not available
|
|
||||||
* Tasks.org accounts: Use Google Places for map search
|
|
||||||
* Update translations
|
|
||||||
* Dutch - @fvbommel
|
|
||||||
* French - @FlorianLeChat
|
|
||||||
* Hungarian - kaciokos
|
|
||||||
* Indonesian - when we were sober
|
|
||||||
* Simplified Chinese - @sr093906
|
|
||||||
* Spanish - @FlorianLeChat
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - @ersen0
|
||||||
* Ukrainian - @IhorHordiichuk
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
### 11.4 (2021-02-09)
|
### 13.0.2 (2022-11-22)
|
||||||
|
|
||||||
* Sync collapsed subtask state with Tasks.org, DAVx⁵, CalDAV, EteSync, and
|
* Fix persistent notifications on Android 13
|
||||||
DecSync ([#1339](https://github.com/tasks/tasks/issues/1339))
|
* Fix Samsung crash on too many reminders (DAVx5, EteSync, DecSync CC)
|
||||||
* Compatible with Nextcloud and ownCloud
|
* Fix crash on too many tasks for Astrid Manual Sorting
|
||||||
* F-Droid: Add location based reminders ([#770](https://github.com/tasks/tasks/issues/770))
|
* Fix RTL text in task edit customization screen
|
||||||
* F-Droid: Replace Mapbox tiles with OpenStreetMap tiles ([#922](https://github.com/tasks/tasks/issues/922))
|
* Fix priority button order
|
||||||
* Fix default start date ([#1350](https://github.com/tasks/tasks/issues/1350))
|
|
||||||
|
### 13.0.1 (2022-10-20)
|
||||||
### 11.3.4 (2021-02-03)
|
|
||||||
|
* 🚨 Major internal changes to task edit screen. Please report any bugs! 🚨
|
||||||
* Adjust start times by one second during sync
|
* Show thumbnails for attachments
|
||||||
([#1326](https://github.com/tasks/tasks/issues/1326))
|
* Tap on existing alarms to replace them
|
||||||
* Can now sync start time = due time with DAVx⁵, EteSync app, and DecSync CC
|
* Add task info row to edit screen [#1839](https://github.com/tasks/tasks/pull/1839)
|
||||||
* All day start date must come before all day due date with DAVx⁵, EteSync
|
* Add option to disable reminders for all-day tasks [#2003](https://github.com/tasks/tasks/pull/2003)
|
||||||
app, and DecSync CC
|
* Updated chip style
|
||||||
* 'Show unstarted' toggled on by default
|
* Show geofence circle in place settings
|
||||||
|
* Fix removing preferences [#1981](https://github.com/tasks/tasks/pull/1981)
|
||||||
### 11.3.3 (2021-01-30)
|
* Set user-agent on HTTP requests [#1978](https://github.com/tasks/tasks/issues/1978)
|
||||||
|
* Preserve HTTP session cookies [#1978](https://github.com/tasks/tasks/issues/1978)
|
||||||
* Fix all-day due date synchronization
|
* Sort selected tags at top of tag picker
|
||||||
([#1325](https://github.com/tasks/tasks/issues/1325))
|
* Android 13 support
|
||||||
|
* Runtime notification permissions
|
||||||
### 11.3.2 (2021-01-28)
|
* Language preference
|
||||||
|
* Improvements to copying tasks
|
||||||
* Fix recurrence sync issue
|
* Don't forget parent when copying tasks [#1964](https://github.com/tasks/tasks/pull/1964)
|
||||||
([#1323](https://github.com/tasks/tasks/issues/1323))
|
* Copy attachments when duplicating tasks [#812](https://github.com/tasks/tasks/issues/812)
|
||||||
|
* Fix duplicating subtasks
|
||||||
### 11.3.1 (2021-01-27)
|
* Fix some missing reminders
|
||||||
|
* Incoming Google Tasks
|
||||||
* Improve support for recurring tasks with subtasks
|
* Tasker tasks [#1937](https://github.com/tasks/tasks/issues/1937)
|
||||||
* Subtasks will be unchecked after completing a recurring task
|
* New subtasks [#1914](https://github.com/tasks/tasks/issues/1914)
|
||||||
* Clear completed will not delete subtasks of recurring tasks
|
* Fix Google Task creation time
|
||||||
* Improve widget sort header when space is limited
|
* Fix EteSync stops synchronizing [#1893](https://github.com/tasks/tasks/issues/1893)
|
||||||
* Add option to hide widget title
|
* Don't overwrite coordinates when synchronizing locations [#1667](https://github.com/tasks/tasks/issues/1667)
|
||||||
* Fix timezone conversions during synchronization
|
* Update translations
|
||||||
* Add Esperanto translations - @jakubfabijan
|
* Asturian - @enolp
|
||||||
|
* Basque - Sergio Varela
|
||||||
### 11.3 (2021-01-20)
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Chinese (Simplified) - Eric
|
||||||
* 'Hide until' is now 'Start date'
|
* Croatian - @milotype
|
||||||
* Synchronize start dates with Tasks.org, DAVx⁵, CalDAV, EteSync, and DecSync
|
* Czech - Shimon
|
||||||
* New start date picker
|
|
||||||
* New start date custom filter criteria
|
|
||||||
* Add sort 'By start date'
|
|
||||||
* Display start dates as chips
|
|
||||||
* Don't perform background sync when data saver enabled
|
|
||||||
* Preference changes
|
|
||||||
* Add app and widget preferences to disable start date chips
|
|
||||||
* Synchronization accounts displayed on main preference screen
|
|
||||||
* Removed background sync and metered connection options (now respecting data
|
|
||||||
saver mode)
|
|
||||||
* Removed Google Tasks 'Custom order synchronization fix' (automatically
|
|
||||||
performing full sync if 'My order' enabled)
|
|
||||||
* Remove support for legacy XML backup format ([more info](https://github.com/tasks/tasks/issues/1565))
|
|
||||||
* Bug fixes
|
|
||||||
|
|
||||||
### 11.2.2 (2021-01-07)
|
|
||||||
|
|
||||||
* Rename 'Lists' to 'Local lists' to clarify that they are not synchronized
|
|
||||||
* Tasks.org sign in improvements
|
|
||||||
* Miscellaneous improvements - Thanks @mhmdanas!
|
|
||||||
|
|
||||||
### 11.2.1 (2021-01-05)
|
|
||||||
|
|
||||||
* Fix Portuguese translation issue
|
|
||||||
* Report OpenTask sync errors
|
|
||||||
* Report Tasks.org sign in errors
|
|
||||||
* Don't crash on widget configuration error
|
|
||||||
* Purchase dialog changes
|
|
||||||
|
|
||||||
### 11.2 (2020-12-30)
|
|
||||||
|
|
||||||
* [Synchronize your Tasks.org account with third-party task and calendar apps, like Outlook,
|
|
||||||
Thunderbird, or Apple Reminders](https://tasks.org/passwords)
|
|
||||||
* Miscellaneous improvements - Thanks @mhmdanas!
|
|
||||||
|
|
||||||
### 11.1.1 (2020-12-24)
|
|
||||||
|
|
||||||
* Fix compatibility issues with third-party clients
|
|
||||||
* Completed tasks without completion dates
|
|
||||||
([222a34f](https://github.com/tasks/tasks/commit/222a34fc263816bb23f633bc9c79de78aeb3968d))
|
|
||||||
* Tasks with start date but no due date
|
|
||||||
([7a1d566](https://github.com/tasks/tasks/commit/7a1d566bfb613b95d3fe1df46d8fa67200c91021))
|
|
||||||
* Miscellaneous improvements - Thanks @mhmdanas!
|
|
||||||
|
|
||||||
### 11.1 (2020-12-21)
|
|
||||||
|
|
||||||
* Add [DecSync CC synchronization](https://tasks.org/decsync)
|
|
||||||
* Fix rescheduling remotely completed recurring task
|
|
||||||
([5eb9370](https://github.com/tasks/tasks/commit/5eb9370294ef707b3e667c4a42851030419920d8))
|
|
||||||
* Miscellaneous code improvements - Thanks @mhmdanas!
|
|
||||||
|
|
||||||
### 11.0.1 (2020-12-17)
|
|
||||||
|
|
||||||
* Fix EteSync client issue with v2 accounts
|
|
||||||
([b761309](https://github.com/tasks/tasks/commit/b76130902ae0be6e1d580d588798a9ed0d7ff385))
|
|
||||||
* Fix multi-select 'Pick time' crash
|
|
||||||
* Fix default hide until due time
|
|
||||||
([#842](https://github.com/tasks/tasks/issues/842#issuecomment-746358382))
|
|
||||||
* Add Croatian translations - Garden Hose
|
|
||||||
* Add Urdu translations - Maaz
|
|
||||||
|
|
||||||
### 11.0 (2020-12-10)
|
|
||||||
|
|
||||||
* New Tasks.org synchronization service
|
|
||||||
* Multi-select rescheduling
|
|
||||||
* New task default settings
|
|
||||||
* Default tags
|
|
||||||
* Default recurrence
|
|
||||||
* Default location
|
|
||||||
* Hide until due time
|
|
||||||
* New custom filter criteria
|
|
||||||
* Hidden tasks
|
|
||||||
* Completed tasks
|
|
||||||
* Subtasks
|
|
||||||
* Parent tasks
|
|
||||||
* Recurring tasks
|
|
||||||
* Added EteSync v2 support
|
|
||||||
* Deprecated EteSync v1 support
|
|
||||||
* v1 accounts cannot be added to Tasks.org
|
|
||||||
* v1 accounts can be added to the EteSync Android client
|
|
||||||
* Add ability to delete comments (Thanks to @romedius!)
|
|
||||||
* Add option to always display date (Thanks to @T0M0F!)
|
|
||||||
* Copy subtasks when copying tasks (Thanks to @supermzn!)
|
|
||||||
* Fix ring five times cutoff (Thanks to @przemhb!)
|
|
||||||
* Bug fixes
|
|
||||||
* Translation updates
|
|
||||||
* Arabic - @mhmdanas
|
|
||||||
* Basque - @osoitz, @ppasserini
|
|
||||||
* Dutch - @fvbommel
|
* Dutch - @fvbommel
|
||||||
* French - @FlorianLeChat
|
* French - @FlorianLeChat, J. Lavoie
|
||||||
* German - @franconian, J. Lavoie, @myabc
|
* German - @qwerty287
|
||||||
* Hebrew - @yarons
|
* Italian - @ppasserini
|
||||||
* Hungarian - kaciokos
|
|
||||||
* Indonesian - @andikatuluspangestu
|
|
||||||
* Italian - @ppasserini, @Fs00, @pjammo
|
|
||||||
* Korean - Sunjae Choi, @Hwaro-K
|
|
||||||
* Norwegian Bokmål - @comradekingu
|
* Norwegian Bokmål - @comradekingu
|
||||||
* Polish - @alex-ter
|
* Persian - @latelateprogrammer
|
||||||
* Russian - Nikita Epifanov
|
* Polish - @ebogucka
|
||||||
* Simplified Chinese - @sr093906
|
* Portuguese - @laralem
|
||||||
|
* Romanian - @simonaiacob
|
||||||
|
* Russian - @Allineer, Nikita Epifanov
|
||||||
|
* Sinhala - @Dilshan-H
|
||||||
* Spanish - @FlorianLeChat
|
* Spanish - @FlorianLeChat
|
||||||
* Traditional Chinese - @realpineapplemilk
|
* Turkish - @ersen0
|
||||||
* Turkish - @emintufan, Oğuz Ersen
|
* Ukrainian - @IhorHordiichuk, @artemmolotov
|
||||||
|
* Vietnamese - @unbiaseduser
|
||||||
### 10.4.1 (2020-11-09)
|
|
||||||
|
|
||||||
* Fix Mapbox Maps crash on Android 11 (F-Droid only)
|
|
||||||
|
|
||||||
### 10.4 (2020-10-09)
|
|
||||||
|
|
||||||
* New widget configuration options
|
|
||||||
* Sort
|
|
||||||
* Show hidden
|
|
||||||
* Show completed
|
|
||||||
* Header spacing
|
|
||||||
* Bug fixes
|
|
||||||
|
|
||||||
### 10.3 (2020-10-02)
|
|
||||||
|
|
||||||
* Collapsible sort groups in widget
|
|
||||||
* Add 'System default' widget theme
|
|
||||||
* Bug fixes
|
|
||||||
|
|
||||||
### 10.2 (2020-09-25)
|
|
||||||
|
|
||||||
* Display list, tag, and place chips on widgets
|
|
||||||
* Add option to disable list, tag, and place chips on widgets
|
|
||||||
|
|
||||||
### 10.1 (2020-09-23)
|
|
||||||
|
|
||||||
* Android 11 support
|
|
||||||
* Backup improvements
|
|
||||||
* Swipe-to-refresh initiates DAVx5/EteSync sync
|
|
||||||
* Show indicator when DAVx5/EteSync are synchronizing
|
|
||||||
* Bug fixes
|
|
||||||
|
|
||||||
### 10.0.3 (2020-09-16)
|
|
||||||
|
|
||||||
* Fix crash from calendar event snackbar
|
|
||||||
* Fix crash when setting Google Maps markers
|
|
||||||
* Fix invalid calendar entry creation
|
|
||||||
|
|
||||||
### 10.0.2 (2020-09-14)
|
|
||||||
|
|
||||||
* Fix crash from corrupted custom filter
|
|
||||||
* Fix crash in 'Astrid manual sorting' mode
|
|
||||||
* Fix missing 'Calendar event created' snackbar
|
|
||||||
|
|
||||||
### 10.0.1 (2020-09-05)
|
|
||||||
|
|
||||||
* Bug fixes
|
|
||||||
* Translation updates
|
|
||||||
* Czech - @vitSkalicky
|
|
||||||
* Danish - @ChMunk
|
|
||||||
|
|
||||||
### 10.0 (2020-08-31)
|
|
||||||
|
|
||||||
* PRO: DAVx⁵ support (requires [DAVx⁵ beta](https://tasks.org/davx5))
|
|
||||||
* PRO: EteSync client support
|
|
||||||
* [ToDo Agenda](https://play.google.com/store/apps/details?id=org.andstatus.todoagenda) integration
|
|
||||||
* Changed backstack behavior to follow Android conventions
|
|
||||||
* Major internal changes! Please report any bugs!
|
|
||||||
* Remove Mapbox tiles (Google Play only)
|
|
||||||
* Added 'Astrid manual sort' information to backup file
|
|
||||||
* Bug fixes
|
|
||||||
* Performance improvements
|
|
||||||
* Security improvements
|
|
||||||
|
|
||||||
[Older releases](https://github.com/tasks/tasks/blob/main/V06_09_CHANGELOG.md)
|
[Older releases](https://github.com/tasks/tasks/blob/main/V10_12_CHANGELOG.md)
|
||||||
|
@ -0,0 +1,767 @@
|
|||||||
|
### 12.7 (2022-06-18)
|
||||||
|
|
||||||
|
* Android 13 themed icon - Thanks @hanthor!
|
||||||
|
* Fix self-signed SSL certificates on Android 12+
|
||||||
|
* Don't hide empty tags and places in pickers
|
||||||
|
* Update translations
|
||||||
|
* Basque - @Txopi, Sergio Varela, @osoitz
|
||||||
|
* Belarusian - @Prominence, Андрей
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Czech - Shimon
|
||||||
|
* Danish - Tntdruid
|
||||||
|
* Dutch - @mm4c
|
||||||
|
* German - @3ole
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - Cyua Pyua
|
||||||
|
* Italian - @ppasserini
|
||||||
|
* Polish - @wiktor-k
|
||||||
|
* Portuguese (Brazilian) - @LevyMarCiS, @sunflowerskater
|
||||||
|
* Portuguese - @laralem, @alvar0liveira
|
||||||
|
* Swedish - @reportxx
|
||||||
|
* Turkish - @emintufan
|
||||||
|
* Vietnamese - @unbiaseduser
|
||||||
|
|
||||||
|
### 12.6.1 (2022-03-27)
|
||||||
|
|
||||||
|
* Move task list and edit screen options to top level settings
|
||||||
|
* Prompt users to customize edit screen
|
||||||
|
* Fix cancel button for recurring reminder dialog
|
||||||
|
* Update translations
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Chinese (Simplified) - Eric, @Geeyun-JY3
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Dutch - @mm4c, @fvbommel
|
||||||
|
* Finnish - J. Lavoie
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Galician - @mglbranco, J. Lavoie
|
||||||
|
* German - @qwerty287
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Italian - @Fs00
|
||||||
|
* Norwegian Bokmål - @comradekingu
|
||||||
|
* Polish - @wiktor-k
|
||||||
|
* Portuguese (Brazilian) - @tsunamistonefly
|
||||||
|
* Romanian - @simonaiacob
|
||||||
|
* Russian - Nikita Epifanov
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Swedish - @reportxx
|
||||||
|
* Turkish - @ersen0, @emintufan
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Vietnamese - @unbiaseduser, J. Lavoie
|
||||||
|
|
||||||
|
### 12.6 (2022-03-12)
|
||||||
|
|
||||||
|
* Configure notifications to repeat at custom intervals
|
||||||
|
([#3](https://github.com/tasks/tasks/issues/3))
|
||||||
|
* Notifications can repeat by minute, hour, day, or weekly intervals
|
||||||
|
* Add 'Snoozed' filter ([#1633](https://github.com/tasks/tasks/issues/1633))
|
||||||
|
* Add 'Notifications' filter
|
||||||
|
* CalDAV/DAVx5 server selection setting
|
||||||
|
* This replaces 'Let server schedule recurring tasks'
|
||||||
|
* Synology Calendar users must set this to fix sync
|
||||||
|
([#1802](https://github.com/tasks/tasks/issues/1802))
|
||||||
|
* Mailbox.org and Open-Xchange users must set this to prevent duplicate
|
||||||
|
repeating tasks
|
||||||
|
* Set geofence radius in place settings
|
||||||
|
* Remove DAVx5/EteSync app accounts when native CalDAV/EteSync enabled
|
||||||
|
* Clear reminders when they are dismissed in Thunderbird
|
||||||
|
* Fix reminder synchronization
|
||||||
|
* Fix crash in task edit screen
|
||||||
|
* Fix prompt to discard changes
|
||||||
|
* Fix crash during 12.4 upgrade
|
||||||
|
* Update translations
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Chinese (Simplified) - @Crystal-RainSlide, @Geeyun-JY3, Eric
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Dutch - @mm4c, @fvbommel
|
||||||
|
* French - J. Lavoie, @FlorianLeChat
|
||||||
|
* German - @eldiep, J. Lavoie, @qwerty287
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Italian - @ppasserini, J. Lavoie
|
||||||
|
* Portuguese (Brazilian) - @hugomg
|
||||||
|
* Romanian - @simonaiacob
|
||||||
|
* Russian - @Allineer
|
||||||
|
* Spanish - @toni-em, @FlorianLeChat, @Romerolweb
|
||||||
|
* Swedish - @reportxx
|
||||||
|
* Turkish - @ersen0
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Urdue - @Crystal-RainSlide
|
||||||
|
* Vietnamese - @unbaseduser
|
||||||
|
|
||||||
|
### 12.5 (2022-02-27)
|
||||||
|
|
||||||
|
* Choose custom random reminder period
|
||||||
|
* Add multiple random reminders
|
||||||
|
* Fix sync crash for Tasks.org, CalDAV, and native EteSync
|
||||||
|
* Add Kurdish (Central) translations - @roj1512
|
||||||
|
* Update translations
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Chinese (Simplified) - Eric
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Dutch - @mm4c
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Portuguese - @laralem
|
||||||
|
* Spanish - @Romerolweb, Jeffree Romero
|
||||||
|
* Turkish - @ersen0
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 12.4 (2022-02-19)
|
||||||
|
|
||||||
|
* Relative reminder support
|
||||||
|
* Quickly add reminders minutes, hours, days, or weeks before due
|
||||||
|
* Sync reminders with Tasks.org, DAVx5, CalDAV, EteSync, and DecSync CC
|
||||||
|
* Synchronize relative and absolute reminders
|
||||||
|
* Tasks.org, CalDAV, and native EteSync sync improvements
|
||||||
|
* Merge remote changes before pushing local changes
|
||||||
|
* Not applicable to DAVx5, EteSync app, or DecSync CC
|
||||||
|
* View and cancel snoozed reminders in task edit screen
|
||||||
|
* Add 'Has reminder' custom filter criteria
|
||||||
|
* Fix updating calendar entries after editing task
|
||||||
|
* Fix search when using top app bar
|
||||||
|
* Fix task deletion when adding from two devices simultaneously
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Brazilian Portuguese - @Luiz-bro
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Chinese (Simplified) - Eric
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Dutch - @mm4c
|
||||||
|
* French - @FlorianLeChat, J. Lavoie
|
||||||
|
* German - J. Lavoie, @qwerty287
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Italian - @ppasserini, J. Lavoie, @andrearosso
|
||||||
|
* Portuguese - @laralem
|
||||||
|
* Romanian - @simonaiacob
|
||||||
|
* Russian - @NikGreens
|
||||||
|
* Spanish - @FlorianLeChat, Sergio Varela
|
||||||
|
* Turkish - @ersen0, @emintufan
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Vietnamese - bruh, @unbaseduser
|
||||||
|
|
||||||
|
### 12.3 (2022-02-04)
|
||||||
|
|
||||||
|
* Add option to disable moving completed tasks to bottom
|
||||||
|
* Add option to disable sorting completed by completion date
|
||||||
|
* Add undo snackbar for task completion
|
||||||
|
* Fix crash when location lookup fails
|
||||||
|
* Fix voice reminders on Android 12
|
||||||
|
* Fix widget due dates in overdue sort group
|
||||||
|
* Add Karelian translations - Olexii Ondrei
|
||||||
|
* Update translations
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Catalan - @ivangjxyz
|
||||||
|
* Chinese (Simplified) - Eric
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Dutch - @mm4c
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - @qwerty287
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Romanian - @simonaiacob
|
||||||
|
* Russian - @NikGreens
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Swedish - @reportxx
|
||||||
|
* Turkish - @emintufan, @ersen0
|
||||||
|
* Vietnamese - @unbaseduser
|
||||||
|
|
||||||
|
### 12.2 (2022-01-16)
|
||||||
|
|
||||||
|
* Move completed tasks to bottom
|
||||||
|
* Add option to disable collapsing app bars
|
||||||
|
* Uncheck parent tasks when subtask is unchecked
|
||||||
|
* Fix crash on completion sound
|
||||||
|
* Update translations
|
||||||
|
* Chinese (Simplified) - Eric
|
||||||
|
* Danish - @Tntdruid
|
||||||
|
* Dutch - @fvbommel, @mm4c
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - @qwerty287
|
||||||
|
* Russian - @NikGreens
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - @ersen0
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Vietnamese - @unbaseduser
|
||||||
|
|
||||||
|
### 12.1 (2022-01-09)
|
||||||
|
|
||||||
|
* Group overdue tasks when sorting by due date
|
||||||
|
* Update translations
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Chinese (Simplified) - Eric
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Norwegian Bokmål - @comradekingu
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Vietnamese - @unbaseduser
|
||||||
|
|
||||||
|
### 12.0 (2022-01-08)
|
||||||
|
|
||||||
|
* New bottom app bar
|
||||||
|
* Choose top or bottom app bar in settings
|
||||||
|
* Miscellaneous design updates
|
||||||
|
* Improve privacy and security by removing RECORD_AUDIO and
|
||||||
|
WRITE_EXTERNAL_STORAGE permissions
|
||||||
|
* Attaching an audio note will launch your device's audio recorder
|
||||||
|
* Translation updates
|
||||||
|
* Catalan - @Solatec
|
||||||
|
* Dutch - @mm4c
|
||||||
|
* German - @qwerty287
|
||||||
|
* Italian - @ppasserini, @Fs00
|
||||||
|
* Portuguese - @SantosSi
|
||||||
|
* Romanian - @simonaiacob
|
||||||
|
* Russian - Nikita Epifanov
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.13 (2021-12-31)
|
||||||
|
|
||||||
|
* Add option to play a sound when a task is completed
|
||||||
|
* Accept audio attachments shared from other apps
|
||||||
|
* Removed native EteSync v1 support
|
||||||
|
* EteSync v1 accounts can still be synchronized with the EteSync app
|
||||||
|
* Bug fixes
|
||||||
|
* Translation updates
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Chinese (Simplified) - @sr093906
|
||||||
|
* Chinese (Traditional) - @dixon777
|
||||||
|
* Finnish - @CSharpest, Rami Lehtinen
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Italian - J. Lavoie, @Fs00
|
||||||
|
* Norwegian Bokmål - @comradekingu
|
||||||
|
* Persian - @Ahmadhosseinbor
|
||||||
|
* Spanish - @aplopez, @FlorianLeChat
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.12.3 (2021-11-22)
|
||||||
|
|
||||||
|
* Fix reminders
|
||||||
|
* Update translations
|
||||||
|
* Indonesian - when we were sober
|
||||||
|
* Kurdish (Northern) - Pêşeroja paşerojê
|
||||||
|
* Romanian - @Steinhagen
|
||||||
|
|
||||||
|
### 11.12.2 (2021-11-13)
|
||||||
|
|
||||||
|
* Fix reminders
|
||||||
|
* Fix reminder preference backup
|
||||||
|
* Update translations
|
||||||
|
* Interlingua - @softinterlingua
|
||||||
|
* Tamil - @balogic
|
||||||
|
|
||||||
|
### 11.12.1 (2021-11-05)
|
||||||
|
|
||||||
|
* Fix reminders
|
||||||
|
* Update translations
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Norwegian Bokmål - @HumanNr4584093104
|
||||||
|
* Romanian - Simona Iacob
|
||||||
|
* Russian - @NikGreens
|
||||||
|
* Tamil - @balogic
|
||||||
|
* Turkish - @ersen0
|
||||||
|
|
||||||
|
### 11.12 (2021-10-26)
|
||||||
|
|
||||||
|
* Add option to notify at start date
|
||||||
|
* Widget tweaks for Android 12
|
||||||
|
* Fix crash when deleting tasks (Thanks @fschrempf!)
|
||||||
|
* Fix truncated calendar picker
|
||||||
|
* Update translations
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Brazilian Portuguese - @laralem
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Catalan - @Solatec
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - @qwerty287
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Lithuanian - @70h
|
||||||
|
* Polish - @dominik-korsa
|
||||||
|
* Simplified Chinese - @sr093906, @Geeyun-JY3
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Vietnamese - bruh
|
||||||
|
|
||||||
|
### 11.11 (2021-09-21)
|
||||||
|
|
||||||
|
* Add 'Due now' filter criteria - Thanks @tkterris!
|
||||||
|
* Fix crash on Android 12 - Thanks @tkterris!
|
||||||
|
* Fix preference display issue - Thanks @Groctel!
|
||||||
|
* Target Android 12
|
||||||
|
* Ignore link clicks during multi-select
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas, @machiav3lli
|
||||||
|
* Basque - @Thadah
|
||||||
|
* Brazilian Portuguese - @laralem
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Czech - @vitSkalicky
|
||||||
|
* Danish - @Tntdruid
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - @machiav3lli, J. Lavoie
|
||||||
|
* Greek - @giorgio93p
|
||||||
|
* Indonesian - @erigmac
|
||||||
|
* Italian - J. Lavoie, @Fs00
|
||||||
|
* Japanese - さとうまこと
|
||||||
|
* Lithuanian - @70h
|
||||||
|
* Norwegian Bokmål - @comradekingu
|
||||||
|
* Portuguese - @laralem
|
||||||
|
* Romanian - Simona Iacob
|
||||||
|
* Russian - @tolstovka, @zhelemysh, @ToxesFoxes
|
||||||
|
* Simplified Chinese - @sr093906, @Geeyun-JY3
|
||||||
|
* Sinhala - @Dilshan-H
|
||||||
|
* Spanish - @FlorianLeChat, @Groctel, @berman00
|
||||||
|
* Swedish - @bittin
|
||||||
|
* Turkish - @ersen0
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Vietnamese - bruh
|
||||||
|
|
||||||
|
### 11.10.2 (2021-07-15)
|
||||||
|
|
||||||
|
* Fix location-based reminders
|
||||||
|
* Fix preference backup
|
||||||
|
* Update translations
|
||||||
|
* Arabic - git ty, @mhmdanas
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Czech - @vitSkalicky, @p-bo
|
||||||
|
* Dutch - Beardhatcode, @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - K. Herbert, @franconian, @ecxod, @bluedeepimpact
|
||||||
|
* Indonesian - when we were sober
|
||||||
|
* Interlingua - @softinterlingua
|
||||||
|
* Italian - J. Lavoie
|
||||||
|
* Lithuanian - @70h
|
||||||
|
* Norwegian Bokmål - @Jerome2103
|
||||||
|
* Portuguese - @laralem
|
||||||
|
* Russian - @KovalevArtem, @Blueberryy
|
||||||
|
* Simplified Chinese - @sr093906, @Geeyun-JY3
|
||||||
|
* Sinhala - HelaBasa
|
||||||
|
* Spanish - @FlorianLeChat, @fitojb
|
||||||
|
* Turkish - Oğuz Ersen, @emintufan
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Urdu - Maaz
|
||||||
|
* Vietnamese - bruh
|
||||||
|
|
||||||
|
### 11.10.1 (2021-05-26)
|
||||||
|
|
||||||
|
* Improve Android 12 compatibility
|
||||||
|
* Update status bar styles
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Catalan - @toram
|
||||||
|
* Chinese (Traditional) - @kisaragi-hiu
|
||||||
|
* Croatian - @ggdorman
|
||||||
|
* Czech - @vitSkalicky
|
||||||
|
* Esperanto - @J053Fabi0, @jakubfabijan
|
||||||
|
* French - K. Herbert, J. Lavoie
|
||||||
|
* German - K. Herbert
|
||||||
|
* Greek - Eugenia Russell
|
||||||
|
* Hungarian - @gthrepwood
|
||||||
|
* Indonesian - @andhikapangestu29
|
||||||
|
* Korean - Sunjae Choi
|
||||||
|
* Portuguese (Brazil) - @laralem
|
||||||
|
* Portuguese - @SantosSi, @laralem
|
||||||
|
* Russian - Nikita Epifanov
|
||||||
|
* Sinhala - @Dilshan-H
|
||||||
|
* Spanish - @fitojb
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Urdu - Maaz
|
||||||
|
* Vietnamese - bruh
|
||||||
|
|
||||||
|
### 11.10 (2021-04-19)
|
||||||
|
|
||||||
|
* Markdown support ([Documentation](https://tasks.org/docs/markdown))
|
||||||
|
* Samsung DeX support - Thanks @mhmdanas!
|
||||||
|
* Update to Google Play Billing v3
|
||||||
|
* Remove background sync for legacy EteSync v1 accounts
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* Brazilian Portuguese - @daylightdev
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat, J. Lavoie
|
||||||
|
* German - J. Lavoie
|
||||||
|
* Greek - Michalis, Eugenia Russell
|
||||||
|
* Indonesian - @liimee
|
||||||
|
* Italian - J. Lavoie, @Fs00
|
||||||
|
* Japanese - @kisaragi-hiu
|
||||||
|
* Kannada - @shashank-p
|
||||||
|
* Russian - @zhelemysh, Nikita Epifanov
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - Oğuz Ersen
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Urdu - Maaz
|
||||||
|
|
||||||
|
### 11.9.2 (2021-03-29)
|
||||||
|
|
||||||
|
* Fix date translation issue - Thanks @mhmdanas!
|
||||||
|
* Fix misc translation strings - Thanks J. Lavoie!
|
||||||
|
* Update translations
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - @franconian, Achim Schumacher, J. Lavoie
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - when we were sober
|
||||||
|
* Italian - @Fs00
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - @emintufan
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.9.1 (2021-03-25)
|
||||||
|
|
||||||
|
* Open documentation links in custom tabs
|
||||||
|
* Fix crash in Mapbox reverse geocoder
|
||||||
|
* Increase 'Add subtask' touch target
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* German - Achim Schumacher
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Italian - @Fs00
|
||||||
|
* Turkish - @emintufan
|
||||||
|
|
||||||
|
### 11.9 (2021-03-20)
|
||||||
|
|
||||||
|
* New calendar and clock pickers
|
||||||
|
* New preference to default to text input for date and time
|
||||||
|
* Fix issue causing Tasks to use wrong search provider
|
||||||
|
* Fix crash when Nextcloud/ownCloud don't send list owner
|
||||||
|
* Update translations
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Croatian - @milotype
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - Achim Schumacher
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - when we were sober
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.8 (2021-03-15)
|
||||||
|
|
||||||
|
* CalDAV: Send shared list invites
|
||||||
|
* Compatible with Tasks.org, Nextcloud, ownCloud, and sabre/dav
|
||||||
|
* Show shared list invite status in list settings
|
||||||
|
* Fix drawer count when list is shared with 2+ users
|
||||||
|
* Removed legacy EteSync v1 list management features
|
||||||
|
* Dropped support for Android 6.0
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* Esperanto - @jakubfabijan
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - @Jerome2103
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - when we were sober, @andhikapangestu29
|
||||||
|
* Norwegian Bokmål - @comradekingu
|
||||||
|
* Polish - @doegedomita
|
||||||
|
* Portuguese - @Jerome2103
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - Oğuz Ersen
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.7 (2021-03-08)
|
||||||
|
|
||||||
|
* CalDAV: Display shared list members in list settings
|
||||||
|
* Compatible with Tasks.org, Nextcloud, ownCloud, OpenXchange, and sabre/dav
|
||||||
|
* CalDAV: List owners can remove shared list members from list
|
||||||
|
* Compatible with Tasks.org, Nextcloud, ownCloud, and sabre/dav
|
||||||
|
* Fix time zone issue in recurrence picker
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - @putulopi
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - @emintufan, Oğuz Ersen
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.6.1 (2021-03-11)
|
||||||
|
|
||||||
|
* F-Droid: Fix OpenStreetMap crash
|
||||||
|
|
||||||
|
### 11.6 (2021-03-04)
|
||||||
|
|
||||||
|
* CalDAV: Display indicator in drawer when a list is shared with other users
|
||||||
|
* Compatible with Tasks.org, Nextcloud, ownCloud, OpenXchange, and sabre/dav
|
||||||
|
* CalDAV: Don't upload changes to read-only lists
|
||||||
|
([#931](https://github.com/tasks/tasks/issues/931))
|
||||||
|
* Remove unnecessary icon-mirroring for RTL users
|
||||||
|
([#1385](https://github.com/tasks/tasks/issues/1385) and
|
||||||
|
[#1391](https://github.com/tasks/tasks/pull/1391)) - Thanks to @mhmdanas
|
||||||
|
* Update translations
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Bulgarian - @StoyanDimitrov
|
||||||
|
* Czech - @vitSkalicky
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - @putulopi
|
||||||
|
* Russian - Nikita Epifanov
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Sinhala - HelaBasa
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.5.2 (2021-02-25)
|
||||||
|
|
||||||
|
* Fix CalDAV sync error
|
||||||
|
* Report errors when generating recurrence dates
|
||||||
|
|
||||||
|
### 11.5.1 (2021-02-24)
|
||||||
|
|
||||||
|
* Fix 'repeat until' date
|
||||||
|
* Fix repeat dates for UTC+13
|
||||||
|
([#1374](https://github.com/tasks/tasks/issues/1374))
|
||||||
|
* F-Droid: Handle null name in Nominatim reverse geocoder
|
||||||
|
([#1380](https://github.com/tasks/tasks/issues/1380))
|
||||||
|
* Update translations
|
||||||
|
* Basque - Sergio Varela
|
||||||
|
* Croatian - @ggdorman
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Norwegian Bokmål - @comradekingu
|
||||||
|
* Polish - @alex-ter
|
||||||
|
* Russian - Nikita Epifanov
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Turkish - Oğuz Ersen
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
* Urdu - Maaz
|
||||||
|
|
||||||
|
### 11.5 (2021-02-17)
|
||||||
|
|
||||||
|
* Sync snooze time with Tasks.org, DAVx⁵, CalDAV, EteSync, and DecSync
|
||||||
|
* Compatible with Thunderbird
|
||||||
|
* New map theme preference
|
||||||
|
* 10 new icons
|
||||||
|
* F-Droid: Use Nominatim for reverse geocoding
|
||||||
|
* Google Play: Use OpenStreetMap tiles when Play Services not available
|
||||||
|
* Google Play: Use Android location services when Play Services not available
|
||||||
|
* Tasks.org accounts: Use Google Places for map search
|
||||||
|
* Update translations
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - when we were sober
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Ukrainian - @IhorHordiichuk
|
||||||
|
|
||||||
|
### 11.4 (2021-02-09)
|
||||||
|
|
||||||
|
* Sync collapsed subtask state with Tasks.org, DAVx⁵, CalDAV, EteSync, and
|
||||||
|
DecSync ([#1339](https://github.com/tasks/tasks/issues/1339))
|
||||||
|
* Compatible with Nextcloud and ownCloud
|
||||||
|
* F-Droid: Add location based reminders ([#770](https://github.com/tasks/tasks/issues/770))
|
||||||
|
* F-Droid: Replace Mapbox tiles with OpenStreetMap tiles ([#922](https://github.com/tasks/tasks/issues/922))
|
||||||
|
* Fix default start date ([#1350](https://github.com/tasks/tasks/issues/1350))
|
||||||
|
|
||||||
|
### 11.3.4 (2021-02-03)
|
||||||
|
|
||||||
|
* Adjust start times by one second during sync
|
||||||
|
([#1326](https://github.com/tasks/tasks/issues/1326))
|
||||||
|
* Can now sync start time = due time with DAVx⁵, EteSync app, and DecSync CC
|
||||||
|
* All day start date must come before all day due date with DAVx⁵, EteSync
|
||||||
|
app, and DecSync CC
|
||||||
|
* 'Show unstarted' toggled on by default
|
||||||
|
|
||||||
|
### 11.3.3 (2021-01-30)
|
||||||
|
|
||||||
|
* Fix all-day due date synchronization
|
||||||
|
([#1325](https://github.com/tasks/tasks/issues/1325))
|
||||||
|
|
||||||
|
### 11.3.2 (2021-01-28)
|
||||||
|
|
||||||
|
* Fix recurrence sync issue
|
||||||
|
([#1323](https://github.com/tasks/tasks/issues/1323))
|
||||||
|
|
||||||
|
### 11.3.1 (2021-01-27)
|
||||||
|
|
||||||
|
* Improve support for recurring tasks with subtasks
|
||||||
|
* Subtasks will be unchecked after completing a recurring task
|
||||||
|
* Clear completed will not delete subtasks of recurring tasks
|
||||||
|
* Improve widget sort header when space is limited
|
||||||
|
* Add option to hide widget title
|
||||||
|
* Fix timezone conversions during synchronization
|
||||||
|
* Add Esperanto translations - @jakubfabijan
|
||||||
|
|
||||||
|
### 11.3 (2021-01-20)
|
||||||
|
|
||||||
|
* 'Hide until' is now 'Start date'
|
||||||
|
* Synchronize start dates with Tasks.org, DAVx⁵, CalDAV, EteSync, and DecSync
|
||||||
|
* New start date picker
|
||||||
|
* New start date custom filter criteria
|
||||||
|
* Add sort 'By start date'
|
||||||
|
* Display start dates as chips
|
||||||
|
* Don't perform background sync when data saver enabled
|
||||||
|
* Preference changes
|
||||||
|
* Add app and widget preferences to disable start date chips
|
||||||
|
* Synchronization accounts displayed on main preference screen
|
||||||
|
* Removed background sync and metered connection options (now respecting data
|
||||||
|
saver mode)
|
||||||
|
* Removed Google Tasks 'Custom order synchronization fix' (automatically
|
||||||
|
performing full sync if 'My order' enabled)
|
||||||
|
* Remove support for legacy XML backup format ([more info](https://github.com/tasks/tasks/issues/1565))
|
||||||
|
* Bug fixes
|
||||||
|
|
||||||
|
### 11.2.2 (2021-01-07)
|
||||||
|
|
||||||
|
* Rename 'Lists' to 'Local lists' to clarify that they are not synchronized
|
||||||
|
* Tasks.org sign in improvements
|
||||||
|
* Miscellaneous improvements - Thanks @mhmdanas!
|
||||||
|
|
||||||
|
### 11.2.1 (2021-01-05)
|
||||||
|
|
||||||
|
* Fix Portuguese translation issue
|
||||||
|
* Report OpenTask sync errors
|
||||||
|
* Report Tasks.org sign in errors
|
||||||
|
* Don't crash on widget configuration error
|
||||||
|
* Purchase dialog changes
|
||||||
|
|
||||||
|
### 11.2 (2020-12-30)
|
||||||
|
|
||||||
|
* [Synchronize your Tasks.org account with third-party task and calendar apps, like Outlook,
|
||||||
|
Thunderbird, or Apple Reminders](https://tasks.org/passwords)
|
||||||
|
* Miscellaneous improvements - Thanks @mhmdanas!
|
||||||
|
|
||||||
|
### 11.1.1 (2020-12-24)
|
||||||
|
|
||||||
|
* Fix compatibility issues with third-party clients
|
||||||
|
* Completed tasks without completion dates
|
||||||
|
([222a34f](https://github.com/tasks/tasks/commit/222a34fc263816bb23f633bc9c79de78aeb3968d))
|
||||||
|
* Tasks with start date but no due date
|
||||||
|
([7a1d566](https://github.com/tasks/tasks/commit/7a1d566bfb613b95d3fe1df46d8fa67200c91021))
|
||||||
|
* Miscellaneous improvements - Thanks @mhmdanas!
|
||||||
|
|
||||||
|
### 11.1 (2020-12-21)
|
||||||
|
|
||||||
|
* Add [DecSync CC synchronization](https://tasks.org/decsync)
|
||||||
|
* Fix rescheduling remotely completed recurring task
|
||||||
|
([5eb9370](https://github.com/tasks/tasks/commit/5eb9370294ef707b3e667c4a42851030419920d8))
|
||||||
|
* Miscellaneous code improvements - Thanks @mhmdanas!
|
||||||
|
|
||||||
|
### 11.0.1 (2020-12-17)
|
||||||
|
|
||||||
|
* Fix EteSync client issue with v2 accounts
|
||||||
|
([b761309](https://github.com/tasks/tasks/commit/b76130902ae0be6e1d580d588798a9ed0d7ff385))
|
||||||
|
* Fix multi-select 'Pick time' crash
|
||||||
|
* Fix default hide until due time
|
||||||
|
([#842](https://github.com/tasks/tasks/issues/842#issuecomment-746358382))
|
||||||
|
* Add Croatian translations - Garden Hose
|
||||||
|
* Add Urdu translations - Maaz
|
||||||
|
|
||||||
|
### 11.0 (2020-12-10)
|
||||||
|
|
||||||
|
* New Tasks.org synchronization service
|
||||||
|
* Multi-select rescheduling
|
||||||
|
* New task default settings
|
||||||
|
* Default tags
|
||||||
|
* Default recurrence
|
||||||
|
* Default location
|
||||||
|
* Hide until due time
|
||||||
|
* New custom filter criteria
|
||||||
|
* Hidden tasks
|
||||||
|
* Completed tasks
|
||||||
|
* Subtasks
|
||||||
|
* Parent tasks
|
||||||
|
* Recurring tasks
|
||||||
|
* Added EteSync v2 support
|
||||||
|
* Deprecated EteSync v1 support
|
||||||
|
* v1 accounts cannot be added to Tasks.org
|
||||||
|
* v1 accounts can be added to the EteSync Android client
|
||||||
|
* Add ability to delete comments (Thanks to @romedius!)
|
||||||
|
* Add option to always display date (Thanks to @T0M0F!)
|
||||||
|
* Copy subtasks when copying tasks (Thanks to @supermzn!)
|
||||||
|
* Fix ring five times cutoff (Thanks to @przemhb!)
|
||||||
|
* Bug fixes
|
||||||
|
* Translation updates
|
||||||
|
* Arabic - @mhmdanas
|
||||||
|
* Basque - @osoitz, @ppasserini
|
||||||
|
* Dutch - @fvbommel
|
||||||
|
* French - @FlorianLeChat
|
||||||
|
* German - @franconian, J. Lavoie, @myabc
|
||||||
|
* Hebrew - @yarons
|
||||||
|
* Hungarian - kaciokos
|
||||||
|
* Indonesian - @andikatuluspangestu
|
||||||
|
* Italian - @ppasserini, @Fs00, @pjammo
|
||||||
|
* Korean - Sunjae Choi, @Hwaro-K
|
||||||
|
* Norwegian Bokmål - @comradekingu
|
||||||
|
* Polish - @alex-ter
|
||||||
|
* Russian - Nikita Epifanov
|
||||||
|
* Simplified Chinese - @sr093906
|
||||||
|
* Spanish - @FlorianLeChat
|
||||||
|
* Traditional Chinese - @realpineapplemilk
|
||||||
|
* Turkish - @emintufan, Oğuz Ersen
|
||||||
|
|
||||||
|
### 10.4.1 (2020-11-09)
|
||||||
|
|
||||||
|
* Fix Mapbox Maps crash on Android 11 (F-Droid only)
|
||||||
|
|
||||||
|
### 10.4 (2020-10-09)
|
||||||
|
|
||||||
|
* New widget configuration options
|
||||||
|
* Sort
|
||||||
|
* Show hidden
|
||||||
|
* Show completed
|
||||||
|
* Header spacing
|
||||||
|
* Bug fixes
|
||||||
|
|
||||||
|
### 10.3 (2020-10-02)
|
||||||
|
|
||||||
|
* Collapsible sort groups in widget
|
||||||
|
* Add 'System default' widget theme
|
||||||
|
* Bug fixes
|
||||||
|
|
||||||
|
### 10.2 (2020-09-25)
|
||||||
|
|
||||||
|
* Display list, tag, and place chips on widgets
|
||||||
|
* Add option to disable list, tag, and place chips on widgets
|
||||||
|
|
||||||
|
### 10.1 (2020-09-23)
|
||||||
|
|
||||||
|
* Android 11 support
|
||||||
|
* Backup improvements
|
||||||
|
* Swipe-to-refresh initiates DAVx5/EteSync sync
|
||||||
|
* Show indicator when DAVx5/EteSync are synchronizing
|
||||||
|
* Bug fixes
|
||||||
|
|
||||||
|
### 10.0.3 (2020-09-16)
|
||||||
|
|
||||||
|
* Fix crash from calendar event snackbar
|
||||||
|
* Fix crash when setting Google Maps markers
|
||||||
|
* Fix invalid calendar entry creation
|
||||||
|
|
||||||
|
### 10.0.2 (2020-09-14)
|
||||||
|
|
||||||
|
* Fix crash from corrupted custom filter
|
||||||
|
* Fix crash in 'Astrid manual sorting' mode
|
||||||
|
* Fix missing 'Calendar event created' snackbar
|
||||||
|
|
||||||
|
### 10.0.1 (2020-09-05)
|
||||||
|
|
||||||
|
* Bug fixes
|
||||||
|
* Translation updates
|
||||||
|
* Czech - @vitSkalicky
|
||||||
|
* Danish - @ChMunk
|
||||||
|
|
||||||
|
### 10.0 (2020-08-31)
|
||||||
|
|
||||||
|
* PRO: DAVx⁵ support (requires [DAVx⁵ beta](https://tasks.org/davx5))
|
||||||
|
* PRO: EteSync client support
|
||||||
|
* [ToDo Agenda](https://play.google.com/store/apps/details?id=org.andstatus.todoagenda) integration
|
||||||
|
* Changed backstack behavior to follow Android conventions
|
||||||
|
* Major internal changes! Please report any bugs!
|
||||||
|
* Remove Mapbox tiles (Google Play only)
|
||||||
|
* Added 'Astrid manual sort' information to backup file
|
||||||
|
* Bug fixes
|
||||||
|
* Performance improvements
|
||||||
|
* Security improvements
|
||||||
|
|
||||||
|
[Older releases](https://github.com/tasks/tasks/blob/main/V06_09_CHANGELOG.md)
|
@ -1,263 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE module PUBLIC
|
|
||||||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
|
||||||
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
|
||||||
|
|
||||||
<!-- https://raw.githubusercontent.com/checkstyle/checkstyle/checkstyle-8.16/src/main/resources/google_checks.xml -->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Checkstyle configuration that checks the Google coding conventions from Google Java Style
|
|
||||||
that can be found at https://google.github.io/styleguide/javaguide.html.
|
|
||||||
|
|
||||||
Checkstyle is very configurable. Be sure to read the documentation at
|
|
||||||
http://checkstyle.sf.net (or in your downloaded distribution).
|
|
||||||
|
|
||||||
To completely disable a check, just comment it out or delete it from the file.
|
|
||||||
|
|
||||||
Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<module name = "Checker">
|
|
||||||
<property name="charset" value="UTF-8"/>
|
|
||||||
|
|
||||||
<property name="severity" value="warning"/>
|
|
||||||
|
|
||||||
<property name="fileExtensions" value="java, properties, xml"/>
|
|
||||||
<!-- Checks for whitespace -->
|
|
||||||
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
|
|
||||||
<module name="FileTabCharacter">
|
|
||||||
<property name="eachLine" value="true"/>
|
|
||||||
</module>
|
|
||||||
|
|
||||||
<module name="TreeWalker">
|
|
||||||
<module name="OuterTypeFilename"/>
|
|
||||||
<module name="IllegalTokenText">
|
|
||||||
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
|
|
||||||
<property name="format"
|
|
||||||
value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
|
|
||||||
<property name="message"
|
|
||||||
value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
|
|
||||||
</module>
|
|
||||||
<module name="AvoidEscapedUnicodeCharacters">
|
|
||||||
<property name="allowEscapesForControlCharacters" value="true"/>
|
|
||||||
<property name="allowByTailComment" value="true"/>
|
|
||||||
<property name="allowNonPrintableEscapes" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="LineLength">
|
|
||||||
<property name="max" value="100"/>
|
|
||||||
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
|
||||||
</module>
|
|
||||||
<module name="AvoidStarImport"/>
|
|
||||||
<module name="OneTopLevelClass"/>
|
|
||||||
<module name="NoLineWrap"/>
|
|
||||||
<module name="EmptyBlock">
|
|
||||||
<property name="option" value="TEXT"/>
|
|
||||||
<property name="tokens"
|
|
||||||
value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
|
|
||||||
</module>
|
|
||||||
<module name="NeedBraces"/>
|
|
||||||
<module name="LeftCurly"/>
|
|
||||||
<module name="RightCurly">
|
|
||||||
<property name="id" value="RightCurlySame"/>
|
|
||||||
<property name="tokens"
|
|
||||||
value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
|
|
||||||
LITERAL_DO"/>
|
|
||||||
</module>
|
|
||||||
<module name="RightCurly">
|
|
||||||
<property name="id" value="RightCurlyAlone"/>
|
|
||||||
<property name="option" value="alone"/>
|
|
||||||
<property name="tokens"
|
|
||||||
value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
|
|
||||||
INSTANCE_INIT"/>
|
|
||||||
</module>
|
|
||||||
<module name="WhitespaceAround">
|
|
||||||
<property name="allowEmptyConstructors" value="true"/>
|
|
||||||
<property name="allowEmptyMethods" value="true"/>
|
|
||||||
<property name="allowEmptyTypes" value="true"/>
|
|
||||||
<property name="allowEmptyLoops" value="true"/>
|
|
||||||
<message key="ws.notFollowed"
|
|
||||||
value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
|
|
||||||
<message key="ws.notPreceded"
|
|
||||||
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
|
|
||||||
</module>
|
|
||||||
<module name="OneStatementPerLine"/>
|
|
||||||
<module name="MultipleVariableDeclarations"/>
|
|
||||||
<module name="ArrayTypeStyle"/>
|
|
||||||
<module name="MissingSwitchDefault"/>
|
|
||||||
<module name="FallThrough"/>
|
|
||||||
<module name="UpperEll"/>
|
|
||||||
<module name="ModifierOrder"/>
|
|
||||||
<module name="EmptyLineSeparator">
|
|
||||||
<property name="allowNoEmptyLineBetweenFields" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="SeparatorWrap">
|
|
||||||
<property name="id" value="SeparatorWrapDot"/>
|
|
||||||
<property name="tokens" value="DOT"/>
|
|
||||||
<property name="option" value="nl"/>
|
|
||||||
</module>
|
|
||||||
<module name="SeparatorWrap">
|
|
||||||
<property name="id" value="SeparatorWrapComma"/>
|
|
||||||
<property name="tokens" value="COMMA"/>
|
|
||||||
<property name="option" value="EOL"/>
|
|
||||||
</module>
|
|
||||||
<module name="SeparatorWrap">
|
|
||||||
<!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 -->
|
|
||||||
<property name="id" value="SeparatorWrapEllipsis"/>
|
|
||||||
<property name="tokens" value="ELLIPSIS"/>
|
|
||||||
<property name="option" value="EOL"/>
|
|
||||||
</module>
|
|
||||||
<module name="SeparatorWrap">
|
|
||||||
<!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 -->
|
|
||||||
<property name="id" value="SeparatorWrapArrayDeclarator"/>
|
|
||||||
<property name="tokens" value="ARRAY_DECLARATOR"/>
|
|
||||||
<property name="option" value="EOL"/>
|
|
||||||
</module>
|
|
||||||
<module name="SeparatorWrap">
|
|
||||||
<property name="id" value="SeparatorWrapMethodRef"/>
|
|
||||||
<property name="tokens" value="METHOD_REF"/>
|
|
||||||
<property name="option" value="nl"/>
|
|
||||||
</module>
|
|
||||||
<module name="PackageName">
|
|
||||||
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Package name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="TypeName">
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Type name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="MemberName">
|
|
||||||
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Member name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="ParameterName">
|
|
||||||
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="LambdaParameterName">
|
|
||||||
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="CatchParameterName">
|
|
||||||
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="LocalVariableName">
|
|
||||||
<property name="tokens" value="VARIABLE_DEF"/>
|
|
||||||
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="ClassTypeParameterName">
|
|
||||||
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Class type name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="MethodTypeParameterName">
|
|
||||||
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Method type name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="InterfaceTypeParameterName">
|
|
||||||
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Interface type name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="NoFinalizer"/>
|
|
||||||
<module name="GenericWhitespace">
|
|
||||||
<message key="ws.followed"
|
|
||||||
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
|
|
||||||
<message key="ws.preceded"
|
|
||||||
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
|
|
||||||
<message key="ws.illegalFollow"
|
|
||||||
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
|
|
||||||
<message key="ws.notPreceded"
|
|
||||||
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
|
|
||||||
</module>
|
|
||||||
<module name="Indentation">
|
|
||||||
<property name="basicOffset" value="2"/>
|
|
||||||
<property name="braceAdjustment" value="0"/>
|
|
||||||
<property name="caseIndent" value="2"/>
|
|
||||||
<property name="throwsIndent" value="4"/>
|
|
||||||
<property name="lineWrappingIndentation" value="4"/>
|
|
||||||
<property name="arrayInitIndent" value="2"/>
|
|
||||||
</module>
|
|
||||||
<module name="AbbreviationAsWordInName">
|
|
||||||
<property name="ignoreFinal" value="false"/>
|
|
||||||
<property name="allowedAbbreviationLength" value="1"/>
|
|
||||||
</module>
|
|
||||||
<module name="OverloadMethodsDeclarationOrder"/>
|
|
||||||
<module name="VariableDeclarationUsageDistance"/>
|
|
||||||
<module name="CustomImportOrder">
|
|
||||||
<property name="sortImportsInGroupAlphabetically" value="true"/>
|
|
||||||
<property name="separateLineBetweenGroups" value="true"/>
|
|
||||||
<property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
|
|
||||||
</module>
|
|
||||||
<module name="MethodParamPad"/>
|
|
||||||
<module name="NoWhitespaceBefore">
|
|
||||||
<property name="tokens"
|
|
||||||
value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
|
|
||||||
<property name="allowLineBreaks" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="ParenPad"/>
|
|
||||||
<module name="OperatorWrap">
|
|
||||||
<property name="option" value="NL"/>
|
|
||||||
<property name="tokens"
|
|
||||||
value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,
|
|
||||||
LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
|
|
||||||
</module>
|
|
||||||
<module name="AnnotationLocation">
|
|
||||||
<property name="id" value="AnnotationLocationMostCases"/>
|
|
||||||
<property name="tokens"
|
|
||||||
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
|
|
||||||
</module>
|
|
||||||
<module name="AnnotationLocation">
|
|
||||||
<property name="id" value="AnnotationLocationVariables"/>
|
|
||||||
<property name="tokens" value="VARIABLE_DEF"/>
|
|
||||||
<property name="allowSamelineMultipleAnnotations" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="NonEmptyAtclauseDescription"/>
|
|
||||||
<module name="JavadocTagContinuationIndentation">
|
|
||||||
<property name="severity" value="ignore" />
|
|
||||||
</module>
|
|
||||||
<module name="SummaryJavadoc">
|
|
||||||
<property name="severity" value="ignore" />
|
|
||||||
<property name="forbiddenSummaryFragments"
|
|
||||||
value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
|
|
||||||
</module>
|
|
||||||
<module name="JavadocParagraph">
|
|
||||||
<property name="severity" value="ignore" />
|
|
||||||
</module>
|
|
||||||
<module name="AtclauseOrder">
|
|
||||||
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
|
|
||||||
<property name="target"
|
|
||||||
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
|
|
||||||
</module>
|
|
||||||
<module name="JavadocMethod">
|
|
||||||
<property name="severity" value="ignore" />
|
|
||||||
<property name="scope" value="public"/>
|
|
||||||
<property name="allowMissingParamTags" value="true"/>
|
|
||||||
<property name="allowMissingThrowsTags" value="true"/>
|
|
||||||
<property name="allowMissingReturnTag" value="true"/>
|
|
||||||
<property name="minLineCount" value="2"/>
|
|
||||||
<property name="allowedAnnotations" value="Override, Test"/>
|
|
||||||
<property name="allowThrowsTagsForSubclasses" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="MethodName">
|
|
||||||
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Method name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="SingleLineJavadoc">
|
|
||||||
<property name="severity" value="ignore"/>
|
|
||||||
</module>
|
|
||||||
<module name="EmptyCatchBlock">
|
|
||||||
<property name="exceptionVariableName" value="expected"/>
|
|
||||||
</module>
|
|
||||||
<module name="CommentsIndentation"/>
|
|
||||||
</module>
|
|
||||||
</module>
|
|
@ -1,962 +0,0 @@
|
|||||||
- artifact: com.gitlab.abaker:dav4jvm:+
|
|
||||||
name: dav4jvm
|
|
||||||
copyrightHolder: bitfire web engineering (Ricki Hirner, Bernhard Stockmann)
|
|
||||||
license: Mozilla Public License, Version 2.0
|
|
||||||
licenseUrl: https://www.mozilla.org/en-US/MPL/2.0/
|
|
||||||
- artifact: com.gitlab.abaker:ical4android:+
|
|
||||||
name: ical4android
|
|
||||||
copyrightHolder: bitfire web engineering (Ricki Hirner, Bernhard Stockmann)
|
|
||||||
license: GNU General Public License, Version 3.0
|
|
||||||
licenseUrl: https://www.gnu.org/licenses/gpl.txt
|
|
||||||
- artifact: com.gitlab.bitfireAT:cert4android:+
|
|
||||||
name: cert4android
|
|
||||||
copyrightHolder: bitfire web engineering (Ricki Hirner, Bernhard Stockmann)
|
|
||||||
licenseUrl: https://www.gnu.org/licenses/gpl.txt
|
|
||||||
license: GNU General Public License, Version 3.0
|
|
||||||
- artifact: androidx.coordinatorlayout:coordinatorlayout:+
|
|
||||||
name: Android Support Library Coordinator Layout
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.constraintlayout:constraintlayout:+
|
|
||||||
name: Android ConstraintLayout
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://tools.android.com
|
|
||||||
- artifact: androidx.sqlite:sqlite:+
|
|
||||||
name: Android DB
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: com.google.apis:google-api-services-drive:+
|
|
||||||
name: Drive API v3-rev136-1.25.0
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: androidx.fragment:fragment:+
|
|
||||||
name: Android Support Library fragment
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.vectordrawable:vectordrawable-animated:+
|
|
||||||
name: Android Support AnimatedVectorDrawable
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.core:core:+
|
|
||||||
name: Android Support Library compat
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.arch.core:core-common:+
|
|
||||||
name: Android Arch-Common
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.room:room-common:+
|
|
||||||
name: Android Room-Common
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.room:room-runtime:+
|
|
||||||
name: Android Room-Runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: com.google.code.gson:gson:+
|
|
||||||
name: Gson
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: me.leolin:ShortcutBadger:+
|
|
||||||
name: ShortcutBadger
|
|
||||||
copyrightHolder: Leo Lin
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/leolin310148/ShortcutBadger
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-runtime:+
|
|
||||||
name: Android Lifecycle Runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.versionedparcelable:versionedparcelable:+
|
|
||||||
name: VersionedParcelable and friends
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.viewpager:viewpager:+
|
|
||||||
name: Android Support Library View Pager
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-livedata:+
|
|
||||||
name: Android Lifecycle LiveData
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: commons-codec:commons-codec:+
|
|
||||||
name: Apache Commons Codec
|
|
||||||
copyrightHolder: The Apache Software Foundation
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://commons.apache.org/proper/commons-codec/
|
|
||||||
- artifact: androidx.annotation:annotation:+
|
|
||||||
name: Android Support Library Annotations
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.interpolator:interpolator:+
|
|
||||||
name: Android Support Library Interpolators
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: javax.inject:javax.inject:+
|
|
||||||
name: javax.inject
|
|
||||||
copyrightHolder: The JSR-330 Expert Group
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://code.google.com/p/atinject/
|
|
||||||
- artifact: com.twofortyfouram:android-plugin-api-for-locale:+
|
|
||||||
name: android-plugin-api-for-locale
|
|
||||||
copyrightHolder: two forty four a.m. LLC.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-viewmodel:+
|
|
||||||
name: Android Lifecycle ViewModel
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: com.google.dagger:dagger:+
|
|
||||||
name: Dagger
|
|
||||||
copyrightHolder: The Dagger Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/google/dagger
|
|
||||||
- artifact: com.google.guava:guava:+
|
|
||||||
name: Guava Google Core Libraries for Java
|
|
||||||
copyrightHolder: The Guava Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: org.jetbrains:annotations:+
|
|
||||||
name: JetBrains Java Annotations
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/JetBrains/java-annotations
|
|
||||||
- artifact: org.apache.commons:commons-lang3:+
|
|
||||||
name: Apache Commons Lang
|
|
||||||
copyrightHolder: The Apache Software Foundation
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://commons.apache.org/proper/commons-lang/
|
|
||||||
- artifact: androidx.loader:loader:+
|
|
||||||
name: Android Support Library loader
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.cursoradapter:cursoradapter:+
|
|
||||||
name: Android Support Library Cursor Adapter
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-livedata-core:+
|
|
||||||
name: Android Lifecycle LiveData Core
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.customview:customview:+
|
|
||||||
name: Android Support Library Custom View
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.swiperefreshlayout:swiperefreshlayout:+
|
|
||||||
name: Android Support Library Custom View
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-extensions:+
|
|
||||||
name: Android Lifecycle Extensions
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.arch.core:core-runtime:+
|
|
||||||
name: Android Arch-Runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: org.apache.commons:commons-collections4:+
|
|
||||||
name: Apache Commons Collections
|
|
||||||
copyrightHolder: The Apache Software Foundation
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://commons.apache.org/proper/commons-collections/
|
|
||||||
- artifact: org.mnode.ical4j:ical4j:+
|
|
||||||
name: ical4j
|
|
||||||
copyrightHolder: Ben Fortuna
|
|
||||||
license: BSD 3-Clause
|
|
||||||
licenseUrl: https://opensource.org/licenses/BSD-3-Clause
|
|
||||||
url: http://ical4j.github.io
|
|
||||||
forceGenerate: true
|
|
||||||
- artifact: androidx.recyclerview:recyclerview:+
|
|
||||||
name: Android Support RecyclerView v7
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.collection:collection:+
|
|
||||||
name: Android Support Library collections
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.cardview:cardview:+
|
|
||||||
name: Android Support CardView v7
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: com.rubiconproject.oss:jchronic:+
|
|
||||||
name: jchronic
|
|
||||||
copyrightHolder: The jchronic authors
|
|
||||||
license: MIT License
|
|
||||||
licenseUrl: http://www.opensource.org/licenses/mit-license.php
|
|
||||||
url: http://github.com/samtingleff/jchronic
|
|
||||||
- artifact: androidx.sqlite:sqlite-framework:+
|
|
||||||
name: Android Support SQLite - Framework Implementation
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: com.google.android.material:material:+
|
|
||||||
name: Material Components for Android
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: com.google.android.apps.dashclock:dashclock-api:+
|
|
||||||
name: DashClock API
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://dashclock.com/api
|
|
||||||
- artifact: androidx.vectordrawable:vectordrawable:+
|
|
||||||
name: Android Support VectorDrawable
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.work:work-runtime:+
|
|
||||||
name: Android WorkManager Runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.appcompat:appcompat:+
|
|
||||||
name: Android AppCompat Library v7
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-common:+
|
|
||||||
name: Android Lifecycle-Common
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-process:+
|
|
||||||
name: Android Lifecycle Process
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-service:+
|
|
||||||
name: Android Lifecycle Service
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.transition:transition:+
|
|
||||||
name: Android Transition Support Library
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: com.jakewharton.timber:timber:+
|
|
||||||
name: Timber
|
|
||||||
copyrightHolder: Jake Wharton
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/JakeWharton/timber
|
|
||||||
- artifact: com.google.oauth-client:google-oauth-client:+
|
|
||||||
name: Google OAuth Client Library for Java
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: androidx.drawerlayout:drawerlayout:+
|
|
||||||
name: Android Support Library Drawer Layout
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: com.google.apis:google-api-services-tasks:+
|
|
||||||
name: Tasks API v1-rev55-1.25.0
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: com.google.api-client:google-api-client:+
|
|
||||||
name: Google APIs Client Library for Java
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: org.jetbrains.kotlin:kotlin-stdlib:+
|
|
||||||
name: org.jetbrains.kotlin:kotlin-stdlib
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://kotlinlang.org/
|
|
||||||
- artifact: com.google.http-client:google-http-client:+
|
|
||||||
name: Google HTTP Client Library for Java
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: org.slf4j:slf4j-jdk14:+
|
|
||||||
name: SLF4J JDK14 Binding
|
|
||||||
copyrightHolder: QOS.ch
|
|
||||||
license: MIT License
|
|
||||||
licenseUrl: http://www.opensource.org/licenses/mit-license.php
|
|
||||||
url: http://www.slf4j.org
|
|
||||||
- artifact: com.squareup.okhttp3:okhttp:+
|
|
||||||
name: OkHttp
|
|
||||||
copyrightHolder: Square, Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: org.slf4j:slf4j-api:+
|
|
||||||
name: SLF4J API Module
|
|
||||||
copyrightHolder: QOS.ch
|
|
||||||
license: MIT License
|
|
||||||
licenseUrl: http://www.opensource.org/licenses/mit-license.php
|
|
||||||
url: http://www.slf4j.org
|
|
||||||
- artifact: org.jetbrains.kotlin:kotlin-stdlib-common:+
|
|
||||||
name: org.jetbrains.kotlin:kotlin-stdlib-common
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://kotlinlang.org/
|
|
||||||
- artifact: com.squareup.okhttp3:logging-interceptor:+
|
|
||||||
name: OkHttp Logging Interceptor
|
|
||||||
copyrightHolder: Square, Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: org.jetbrains.kotlin:kotlin-stdlib-jdk7:+
|
|
||||||
name: org.jetbrains.kotlin:kotlin-stdlib-jdk7
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://kotlinlang.org/
|
|
||||||
- artifact: io.grpc:grpc-context:+
|
|
||||||
name: io.grpc:grpc-context
|
|
||||||
copyrightHolder: The gRPC Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/grpc/grpc-java
|
|
||||||
- artifact: com.google.guava:listenablefuture:+
|
|
||||||
name: Guava ListenableFuture only
|
|
||||||
copyrightHolder: The Guava Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: io.opencensus:opencensus-api:+
|
|
||||||
name: OpenCensus API
|
|
||||||
copyrightHolder: OpenCensus Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/census-instrumentation/opencensus-java
|
|
||||||
- artifact: com.google.guava:failureaccess:+
|
|
||||||
name: Guava InternalFutureFailureAccess and InternalFutures
|
|
||||||
copyrightHolder: The Guava Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: io.opencensus:opencensus-contrib-http-util:+
|
|
||||||
name: OpenCensus contrib-http-util
|
|
||||||
copyrightHolder: OpenCensus Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/census-instrumentation/opencensus-java
|
|
||||||
- artifact: androidx.core:core-ktx:+
|
|
||||||
name: Core Kotlin Extensions
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.appcompat:appcompat-resources:+
|
|
||||||
name: Android Resources Library
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.viewpager2:viewpager2:+
|
|
||||||
name: AndroidX Widget ViewPager2
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.savedstate:savedstate:+
|
|
||||||
name: Activity
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.activity:activity:+
|
|
||||||
name: Activity
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.paging:paging-runtime:+
|
|
||||||
name: Android Paging-Runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.paging:paging-common:+
|
|
||||||
name: Android Paging-Common
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: org.conscrypt:conscrypt-android:+
|
|
||||||
name: org.conscrypt:conscrypt-android
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
url: https://conscrypt.org/
|
|
||||||
- artifact: org.jetbrains.kotlinx:kotlinx-coroutines-android:+
|
|
||||||
name: kotlinx-coroutines-android
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/Kotlin/kotlinx.coroutines
|
|
||||||
- artifact: androidx.databinding:databinding-adapters:+
|
|
||||||
name: databinding-adapters
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-viewmodel-ktx:+
|
|
||||||
name: Android Lifecycle ViewModel Kotlin Extensions
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.annotation:annotation-experimental:+
|
|
||||||
name: Experimental annotation
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:+
|
|
||||||
name: kotlinx-coroutines-core-jvm
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/Kotlin/kotlinx.coroutines
|
|
||||||
- artifact: androidx.databinding:databinding-common:+
|
|
||||||
name: Data Binding Base Library
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/studio
|
|
||||||
- artifact: androidx.databinding:databinding-runtime:+
|
|
||||||
name: databinding-runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: androidx.databinding:viewbinding:+
|
|
||||||
name: viewbinding
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: androidx.preference:preference:+
|
|
||||||
name: AndroidX Preference
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-viewmodel-savedstate:+
|
|
||||||
name: Android Lifecycle ViewModel with SavedState
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: com.github.QuadFlask:colorpicker:+
|
|
||||||
name: QuadFlask/colorpicker
|
|
||||||
copyrightHolder: QuadFlask
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
url: https://github.com/QuadFlask/colorpicker
|
|
||||||
- artifact: com.google.auth:google-auth-library-credentials:+
|
|
||||||
name: Google Auth Library for Java - Credentials
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: BSD 3-Clause
|
|
||||||
- artifact: com.google.auth:google-auth-library-oauth2-http:+
|
|
||||||
name: Google Auth Library for Java - OAuth2 HTTP
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: BSD 3-Clause
|
|
||||||
- artifact: com.google.auto.value:auto-value-annotations:+
|
|
||||||
name: AutoValue Annotations
|
|
||||||
copyrightHolder: Google LLC
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
url: https://github.com/google/auto/tree/master/value
|
|
||||||
- artifact: com.sun.mail:android-mail:+
|
|
||||||
name: android-mail
|
|
||||||
copyrightHolder: Oracle and/or its affiliates
|
|
||||||
license: Eclipse Public License, Version 2.0
|
|
||||||
- artifact: commons-io:commons-io:+
|
|
||||||
name: commons-io
|
|
||||||
copyrightHolder: The Apache Software Foundation
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
url: http://commons.apache.org/proper/commons-io/
|
|
||||||
- artifact: com.sun.mail:android-activation:+
|
|
||||||
name: android-activation
|
|
||||||
copyrightHolder: Oracle and/or its affiliates
|
|
||||||
license: Eclipse Public License, Version 2.0
|
|
||||||
- artifact: androidx.hilt:hilt-work:+
|
|
||||||
name: hilt-work
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.hilt:hilt-common:+
|
|
||||||
name: hilt-common
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: com.google.dagger:hilt-android:+
|
|
||||||
name: hilt-android
|
|
||||||
copyrightHolder: The Dagger Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: https://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/google/dagger
|
|
||||||
- artifact: com.google.dagger:dagger-lint-aar:+
|
|
||||||
name: dagger-lint-aar
|
|
||||||
copyrightHolder: The Dagger Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: https://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/google/dagger
|
|
||||||
- artifact: androidx.room:room-ktx:+
|
|
||||||
name: room-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-runtime-ktx:+
|
|
||||||
name: lifecycle-runtime-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: androidx.fragment:fragment-ktx:+
|
|
||||||
name: fragment-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: androidx.activity:activity-ktx:+
|
|
||||||
name: activity-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: androidx.collection:collection-ktx:+
|
|
||||||
name: collection-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-livedata-core-ktx:+
|
|
||||||
name: lifecycle-livedata-core-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: androidx.work:work-runtime-ktx:+
|
|
||||||
name: work-runtime-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: com.github.tasks.opentasks:opentasks-provider:+
|
|
||||||
name: opentasks-provider
|
|
||||||
copyrightHolder: dmfs GmbH
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: https://api.github.com/licenses/apache-2.0
|
|
||||||
url: https://github.com/dmfs/opentasks
|
|
||||||
- artifact: com.github.dmfs.opentasks:opentasks-contract:+
|
|
||||||
name: opentasks-contract
|
|
||||||
copyrightHolder: dmfs GmbH
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: https://api.github.com/licenses/apache-2.0
|
|
||||||
url: https://github.com/dmfs/opentasks
|
|
||||||
forceGenerate: true
|
|
||||||
- artifact: org.dmfs:lib-recur:+
|
|
||||||
name: lib-recur
|
|
||||||
copyrightHolder: Marten Gajda
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/license/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/dmfs/lib-recur
|
|
||||||
- artifact: org.dmfs:rfc5545-datetime:+
|
|
||||||
name: rfc5545-datetime
|
|
||||||
copyrightHolder: Marten Gajda
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/dmfs/rfc5545-datetime
|
|
||||||
- artifact: org.dmfs:jems:+
|
|
||||||
name: jems
|
|
||||||
copyrightHolder: dmfs GmbH
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/license/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/dmfs/jems
|
|
||||||
- artifact: org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:+
|
|
||||||
name: kotlinx-collections-immutable-jvm
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
- artifact: com.squareup.okio:okio:+
|
|
||||||
name: okio
|
|
||||||
copyrightHolder: Square, Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/square/okio/
|
|
||||||
- artifact: com.google.dagger:hilt-core:+
|
|
||||||
name: hilt-core
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: https://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/google/dagger
|
|
||||||
- artifact: io.noties.markwon:core:+
|
|
||||||
name: core
|
|
||||||
copyrightHolder: Dimitry Ivanov
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/noties/Markwon
|
|
||||||
- artifact: com.atlassian.commonmark:commonmark:+
|
|
||||||
name: commonmark
|
|
||||||
copyrightHolder: Atlassian and others
|
|
||||||
license: BSD 2-Clause
|
|
||||||
- artifact: androidx.browser:browser:+
|
|
||||||
name: browser
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: com.etebase:client:+
|
|
||||||
name: client
|
|
||||||
copyrightHolder: Tom Hacohen
|
|
||||||
license: LGPL-3.0-only
|
|
||||||
licenseUrl: https://spdx.org/licenses/LGPL-3.0-only.html
|
|
||||||
url: https://www.etebase.com
|
|
||||||
- artifact: net.openid:appauth:+
|
|
||||||
name: appauth
|
|
||||||
copyrightHolder: The AppAuth for Android Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/openid/AppAuth-Android
|
|
||||||
- artifact: androidx.concurrent:concurrent-futures:+
|
|
||||||
name: concurrent-futures
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/topic/libraries/architecture/index.html
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-livedata-ktx:+
|
|
||||||
name: lifecycle-livedata-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: androidx.dynamicanimation:dynamicanimation:+
|
|
||||||
name: dynamicanimation
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.legacy:legacy-support-core-utils:+
|
|
||||||
name: legacy-support-core-utils
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.documentfile:documentfile:+
|
|
||||||
name: documentfile
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.localbroadcastmanager:localbroadcastmanager:+
|
|
||||||
name: localbroadcastmanager
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: androidx.print:print:+
|
|
||||||
name: print
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://developer.android.com/tools/extras/support-library.html
|
|
||||||
- artifact: com.google.http-client:google-http-client-gson:+
|
|
||||||
name: google-http-client-gson
|
|
||||||
copyrightHolder: Google Inc.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
- artifact: org.osmdroid:osmdroid-android:+
|
|
||||||
name: osmdroid-android
|
|
||||||
copyrightHolder: The OsmDroid Authors
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
url: https://github.com/osmdroid/osmdroid
|
|
||||||
- artifact: androidx.savedstate:savedstate-ktx:+
|
|
||||||
name: savedstate-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/savedstate#1.1.0
|
|
||||||
- artifact: androidx.tracing:tracing:+
|
|
||||||
name: tracing
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/tracing#1.0.0
|
|
||||||
- artifact: androidx.databinding:databinding-ktx:+
|
|
||||||
name: databinding-ktx
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
- artifact: org.jetbrains.kotlin:kotlin-stdlib-jdk8:+
|
|
||||||
name: kotlin-stdlib-jdk8
|
|
||||||
copyrightHolder: JetBrains s.r.o.
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://kotlinlang.org/
|
|
||||||
- artifact: androidx.compose.ui:ui:+
|
|
||||||
name: ui
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.animation:animation-core:+
|
|
||||||
name: animation-core
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-animation#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.ui:ui-text:+
|
|
||||||
name: ui-text
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.runtime:runtime-saveable:+
|
|
||||||
name: runtime-saveable
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.ui:ui-graphics:+
|
|
||||||
name: ui-graphics
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.ui:ui-unit:+
|
|
||||||
name: ui-unit
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.ui:ui-geometry:+
|
|
||||||
name: ui-geometry
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.ui:ui-util:+
|
|
||||||
name: ui-util
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.runtime:runtime:+
|
|
||||||
name: runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.0.0-beta01
|
|
||||||
- artifact: androidx.autofill:autofill:+
|
|
||||||
name: autofill
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx
|
|
||||||
- artifact: androidx.compose.foundation:foundation:+
|
|
||||||
name: foundation
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.animation:animation:+
|
|
||||||
name: animation
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-animation#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.foundation:foundation-layout:+
|
|
||||||
name: foundation-layout
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.material:material:+
|
|
||||||
name: material
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-material#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.material:material-ripple:+
|
|
||||||
name: material-ripple
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-material#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.material:material-icons-core:+
|
|
||||||
name: material-icons-core
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-material#1.0.0-beta01
|
|
||||||
- artifact: androidx.compose.ui:ui-tooling:+
|
|
||||||
skip: true
|
|
||||||
- artifact: androidx.compose.ui:ui-tooling-data:+
|
|
||||||
skip: true
|
|
||||||
- artifact: androidx.compose.runtime:runtime-livedata:+
|
|
||||||
name: runtime-livedata
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.0.0-beta01
|
|
||||||
- artifact: com.google.android.material:compose-theme-adapter:+
|
|
||||||
name: compose-theme-adapter
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/material-components/material-components-android-compose-theme-adapter/
|
|
||||||
- artifact: androidx.constraintlayout:constraintlayout-core:+
|
|
||||||
name: constraintlayout-core
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: http://tools.android.com
|
|
||||||
- artifact: androidx.activity:activity-compose:+
|
|
||||||
name: activity-compose
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/activity#1.3.0-alpha04
|
|
||||||
- artifact: io.noties.markwon:editor:+
|
|
||||||
name: editor
|
|
||||||
copyrightHolder: Dimitry Ivanov
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/noties/Markwon
|
|
||||||
- artifact: io.noties.markwon:ext-tasklist:+
|
|
||||||
name: ext-tasklist
|
|
||||||
copyrightHolder: Dimitry Ivanov
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/noties/Markwon
|
|
||||||
- artifact: io.noties.markwon:ext-strikethrough:+
|
|
||||||
name: ext-strikethrough
|
|
||||||
copyrightHolder: Dimitry Ivanov
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/noties/Markwon
|
|
||||||
- artifact: com.atlassian.commonmark:commonmark-ext-gfm-strikethrough:+
|
|
||||||
name: commonmark-ext-gfm-strikethrough
|
|
||||||
copyrightHolder: Atlassian and others
|
|
||||||
license: BSD 2-Clause
|
|
||||||
- artifact: io.noties.markwon:linkify:+
|
|
||||||
name: linkify
|
|
||||||
copyrightHolder: Dimitry Ivanov
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/noties/Markwon
|
|
||||||
- artifact: io.noties.markwon:ext-tables:+
|
|
||||||
name: ext-tables
|
|
||||||
copyrightHolder: Dimitry Ivanov
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://github.com/noties/Markwon
|
|
||||||
- artifact: com.atlassian.commonmark:commonmark-ext-gfm-tables:+
|
|
||||||
name: commonmark-ext-gfm-tables
|
|
||||||
copyrightHolder: Atlassian and others
|
|
||||||
license: BSD 2-Clause
|
|
||||||
- artifact: androidx.lifecycle:lifecycle-common-java8:+
|
|
||||||
name: lifecycle-common-java8
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/lifecycle#2.3.0
|
|
||||||
- artifact: androidx.profileinstaller:profileinstaller:+
|
|
||||||
name: profileinstaller
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/profileinstaller#1.0.0-beta01
|
|
||||||
- artifact: androidx.startup:startup-runtime:+
|
|
||||||
name: startup-runtime
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/startup#1.0.0
|
|
||||||
- artifact: androidx.compose.ui:ui-tooling-preview:+
|
|
||||||
name: ui-tooling-preview
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0-rc01
|
|
||||||
- artifact: androidx.emoji2:emoji2-views-helper:+
|
|
||||||
name: emoji2-views-helper
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/emoji2#1.0.0
|
|
||||||
- artifact: androidx.emoji2:emoji2:+
|
|
||||||
name: emoji2
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/emoji2#1.0.0
|
|
||||||
- artifact: androidx.resourceinspection:resourceinspection-annotation:+
|
|
||||||
name: resourceinspection-annotation
|
|
||||||
copyrightHolder: Android Open Source Project
|
|
||||||
license: The Apache Software License, Version 2.0
|
|
||||||
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
|
|
||||||
url: https://developer.android.com/jetpack/androidx/releases/resourceinspection#1.0.0
|
|
@ -1,78 +0,0 @@
|
|||||||
package com.todoroo.astrid.adapter
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import com.todoroo.astrid.core.BuiltInFilterExposer
|
|
||||||
import com.todoroo.astrid.dao.TaskDao
|
|
||||||
import com.todoroo.astrid.data.Task
|
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
|
||||||
import dagger.hilt.android.testing.UninstallModules
|
|
||||||
import kotlinx.coroutines.runBlocking
|
|
||||||
import org.junit.Assert.assertEquals
|
|
||||||
import org.junit.Before
|
|
||||||
import org.junit.Test
|
|
||||||
import org.tasks.LocalBroadcastManager
|
|
||||||
import org.tasks.R
|
|
||||||
import org.tasks.data.CaldavDao
|
|
||||||
import org.tasks.data.GoogleTaskDao
|
|
||||||
import org.tasks.data.TaskContainer
|
|
||||||
import org.tasks.data.TaskListQuery.getQuery
|
|
||||||
import org.tasks.injection.InjectingTestCase
|
|
||||||
import org.tasks.injection.ProductionModule
|
|
||||||
import org.tasks.makers.TaskMaker.PARENT
|
|
||||||
import org.tasks.makers.TaskMaker.newTask
|
|
||||||
import org.tasks.preferences.Preferences
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@UninstallModules(ProductionModule::class)
|
|
||||||
@HiltAndroidTest
|
|
||||||
class NonRecursiveQueryTest : InjectingTestCase() {
|
|
||||||
@Inject lateinit var googleTaskDao: GoogleTaskDao
|
|
||||||
@Inject lateinit var caldavDao: CaldavDao
|
|
||||||
@Inject lateinit var taskDao: TaskDao
|
|
||||||
@Inject lateinit var preferences: Preferences
|
|
||||||
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
|
|
||||||
|
|
||||||
private lateinit var adapter: TaskAdapter
|
|
||||||
private val tasks = ArrayList<TaskContainer>()
|
|
||||||
private val filter = BuiltInFilterExposer.getMyTasksFilter(ApplicationProvider.getApplicationContext<Context>().resources)
|
|
||||||
private val dataSource = object : TaskAdapterDataSource {
|
|
||||||
override fun getItem(position: Int) = tasks[position]
|
|
||||||
|
|
||||||
override fun getTaskCount() = tasks.size
|
|
||||||
}
|
|
||||||
|
|
||||||
@Before
|
|
||||||
override fun setUp() {
|
|
||||||
super.setUp()
|
|
||||||
preferences.clear()
|
|
||||||
preferences.setBoolean(R.string.p_use_paged_queries, true)
|
|
||||||
tasks.clear()
|
|
||||||
adapter = TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager)
|
|
||||||
adapter.setDataSource(dataSource)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun ignoreSubtasks() {
|
|
||||||
val parent = addTask()
|
|
||||||
val child = addTask(with(PARENT, parent))
|
|
||||||
|
|
||||||
query()
|
|
||||||
|
|
||||||
assertEquals(child, tasks[1].id)
|
|
||||||
assertEquals(parent, tasks[1].parent)
|
|
||||||
assertEquals(0, tasks[1].indent)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long = runBlocking {
|
|
||||||
val task = newTask(*properties)
|
|
||||||
taskDao.createNew(task)
|
|
||||||
task.id
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun query() = runBlocking {
|
|
||||||
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,52 +1,290 @@
|
|||||||
package com.todoroo.astrid.alarms
|
package com.todoroo.astrid.alarms
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
|
||||||
import com.todoroo.astrid.dao.TaskDao
|
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import dagger.hilt.android.testing.UninstallModules
|
import dagger.hilt.android.testing.UninstallModules
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertTrue
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.tasks.data.Alarm
|
import org.tasks.SuspendFreeze.Companion.freezeAt
|
||||||
import org.tasks.data.AlarmDao
|
import org.tasks.data.createDueDate
|
||||||
|
import org.tasks.data.dao.TaskDao
|
||||||
|
import org.tasks.data.entity.Alarm
|
||||||
|
import org.tasks.data.entity.Notification
|
||||||
|
import org.tasks.data.entity.Task
|
||||||
import org.tasks.injection.InjectingTestCase
|
import org.tasks.injection.InjectingTestCase
|
||||||
import org.tasks.injection.ProductionModule
|
import org.tasks.injection.ProductionModule
|
||||||
import org.tasks.jobs.AlarmEntry
|
|
||||||
import org.tasks.jobs.NotificationQueue
|
|
||||||
import org.tasks.makers.TaskMaker.REMINDER_LAST
|
|
||||||
import org.tasks.makers.TaskMaker.newTask
|
|
||||||
import org.tasks.time.DateTime
|
import org.tasks.time.DateTime
|
||||||
|
import org.tasks.time.DateTimeUtils2
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@UninstallModules(ProductionModule::class)
|
@UninstallModules(ProductionModule::class)
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
class AlarmJobServiceTest : InjectingTestCase() {
|
class AlarmJobServiceTest : InjectingTestCase() {
|
||||||
@Inject lateinit var alarmDao: AlarmDao
|
|
||||||
@Inject lateinit var taskDao: TaskDao
|
@Inject lateinit var taskDao: TaskDao
|
||||||
@Inject lateinit var jobs: NotificationQueue
|
|
||||||
@Inject lateinit var alarmService: AlarmService
|
@Inject lateinit var alarmService: AlarmService
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun scheduleAlarm() = runBlocking {
|
fun testNoAlarms() = runBlocking {
|
||||||
val task = newTask()
|
testResults(emptyList(), 0)
|
||||||
taskDao.createNew(task)
|
}
|
||||||
val alarmTime = DateTime(2017, 9, 24, 19, 57)
|
|
||||||
val alarm = Alarm(task.id, alarmTime.millis)
|
@Test
|
||||||
alarm.id = alarmDao.insert(alarm)
|
fun futureAlarmWithNoPastAlarm() = runBlocking {
|
||||||
alarmService.scheduleAllAlarms()
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 18).millis
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(1, mutableSetOf(Alarm(type = Alarm.TYPE_REL_END)))
|
||||||
|
|
||||||
|
testResults(emptyList(), DateTime(2024, 5, 18, 18, 0).millis)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun pastAlarmWithNoFutureAlarm() = runBlocking {
|
||||||
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 17).millis
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(1, mutableSetOf(Alarm(type = Alarm.TYPE_REL_END)))
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
listOf(
|
||||||
|
Notification(
|
||||||
|
taskId = 1L,
|
||||||
|
timestamp = DateTimeUtils2.currentTimeMillis(),
|
||||||
|
type = Alarm.TYPE_REL_END
|
||||||
|
)
|
||||||
|
),
|
||||||
|
0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun pastRecurringAlarmWithFutureRecurrence() = runBlocking {
|
||||||
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 17).millis
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(
|
||||||
|
1,
|
||||||
|
mutableSetOf(
|
||||||
|
Alarm(
|
||||||
|
type = Alarm.TYPE_REL_END,
|
||||||
|
repeat = 1,
|
||||||
|
interval = TimeUnit.HOURS.toMillis(6)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
listOf(
|
||||||
|
Notification(
|
||||||
|
taskId = 1L,
|
||||||
|
timestamp = DateTimeUtils2.currentTimeMillis(),
|
||||||
|
type = Alarm.TYPE_REL_END
|
||||||
|
)
|
||||||
|
),
|
||||||
|
DateTime(2024, 5, 18, 0, 0).millis
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun pastAlarmsRemoveSnoozed() = runBlocking {
|
||||||
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 17).millis
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(
|
||||||
|
1,
|
||||||
|
mutableSetOf(
|
||||||
|
Alarm(type = Alarm.TYPE_REL_END),
|
||||||
|
Alarm(time = DateTimeUtils2.currentTimeMillis(), type = Alarm.TYPE_SNOOZE)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
listOf(
|
||||||
|
Notification(
|
||||||
|
taskId = 1L,
|
||||||
|
timestamp = DateTimeUtils2.currentTimeMillis(),
|
||||||
|
type = Alarm.TYPE_REL_END
|
||||||
|
)
|
||||||
|
),
|
||||||
|
0
|
||||||
|
)
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
listOf(Alarm(id = 1, task = 1, time = 0, type = Alarm.TYPE_REL_END)),
|
||||||
|
alarmService.getAlarms(1)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
assertEquals(listOf(AlarmEntry(alarm)), jobs.getJobs())
|
@Test
|
||||||
|
fun alarmsOneMinuteApart() = runBlocking {
|
||||||
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY_TIME,
|
||||||
|
DateTime(2024, 5, 17, 23, 20).millis
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(1, mutableSetOf(Alarm(type = Alarm.TYPE_REL_END)))
|
||||||
|
taskDao.insert(Task())
|
||||||
|
alarmService.synchronizeAlarms(
|
||||||
|
taskId = 2,
|
||||||
|
alarms = mutableSetOf(
|
||||||
|
Alarm(
|
||||||
|
type = Alarm.TYPE_SNOOZE,
|
||||||
|
time = DateTime(2024, 5, 17, 23, 21).millis)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
listOf(
|
||||||
|
Notification(
|
||||||
|
taskId = 1L,
|
||||||
|
timestamp = DateTimeUtils2.currentTimeMillis(),
|
||||||
|
type = Alarm.TYPE_REL_END
|
||||||
|
)
|
||||||
|
),
|
||||||
|
DateTime(2024, 5, 17, 23, 21).millis
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun futureSnoozeOverrideOverdue() = runBlocking {
|
||||||
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 17).millis
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(
|
||||||
|
1,
|
||||||
|
mutableSetOf(
|
||||||
|
Alarm(type = Alarm.TYPE_REL_END),
|
||||||
|
Alarm(
|
||||||
|
time = DateTimeUtils2.currentTimeMillis() + TimeUnit.MINUTES.toMillis(5),
|
||||||
|
type = Alarm.TYPE_SNOOZE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
emptyList(),
|
||||||
|
DateTimeUtils2.currentTimeMillis() + TimeUnit.MINUTES.toMillis(5)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun ignoreStaleAlarm() = runBlocking {
|
fun ignoreStaleAlarm() = runBlocking {
|
||||||
val alarmTime = DateTime(2017, 9, 24, 19, 57)
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
val task = newTask(with(REMINDER_LAST, alarmTime.endOfMinute()))
|
taskDao.insert(
|
||||||
taskDao.createNew(task)
|
Task(
|
||||||
alarmDao.insert(Alarm(task.id, alarmTime.millis))
|
dueDate = createDueDate(
|
||||||
alarmService.scheduleAllAlarms()
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 17).millis
|
||||||
|
),
|
||||||
|
reminderLast = DateTime(2024, 5, 17, 18, 0).millis,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(
|
||||||
|
1,
|
||||||
|
mutableSetOf(Alarm(type = Alarm.TYPE_REL_END))
|
||||||
|
)
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
emptyList(),
|
||||||
|
0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
assertTrue(jobs.getJobs().isEmpty())
|
@Test
|
||||||
|
fun dontScheduleForCompletedTask() = runBlocking {
|
||||||
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 17).millis
|
||||||
|
),
|
||||||
|
completionDate = DateTime(2024, 5, 17, 14, 0).millis,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(
|
||||||
|
1,
|
||||||
|
mutableSetOf(Alarm(type = Alarm.TYPE_REL_END))
|
||||||
|
)
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
emptyList(),
|
||||||
|
0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun dontScheduleForDeletedTask() = runBlocking {
|
||||||
|
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
|
||||||
|
taskDao.insert(
|
||||||
|
Task(
|
||||||
|
dueDate = createDueDate(
|
||||||
|
Task.URGENCY_SPECIFIC_DAY,
|
||||||
|
DateTime(2024, 5, 17).millis
|
||||||
|
),
|
||||||
|
deletionDate = DateTime(2024, 5, 17, 14, 0).millis,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
alarmService.synchronizeAlarms(
|
||||||
|
1,
|
||||||
|
mutableSetOf(Alarm(type = Alarm.TYPE_REL_END))
|
||||||
|
)
|
||||||
|
|
||||||
|
testResults(
|
||||||
|
emptyList(),
|
||||||
|
0
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private suspend fun testResults(notifications: List<Notification>, nextAlarm: Long) {
|
||||||
|
val actualNextAlarm = alarmService.triggerAlarms {
|
||||||
|
assertEquals(notifications, it)
|
||||||
|
it.forEach { taskDao.setLastNotified(it.taskId, DateTimeUtils2.currentTimeMillis()) }
|
||||||
|
}
|
||||||
|
assertEquals(nextAlarm, actualNextAlarm)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2012 Todoroo Inc
|
|
||||||
*
|
|
||||||
* See the file "LICENSE" for the full license governing this code.
|
|
||||||
*/
|
|
||||||
package com.todoroo.astrid.gtasks
|
|
||||||
|
|
||||||
import com.todoroo.astrid.dao.TaskDao
|
|
||||||
import com.todoroo.astrid.data.Task
|
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
|
||||||
import dagger.hilt.android.testing.UninstallModules
|
|
||||||
import kotlinx.coroutines.runBlocking
|
|
||||||
import org.junit.Assert.assertNotNull
|
|
||||||
import org.junit.Assert.assertNull
|
|
||||||
import org.junit.Test
|
|
||||||
import org.tasks.data.GoogleTask
|
|
||||||
import org.tasks.data.GoogleTaskDao
|
|
||||||
import org.tasks.injection.InjectingTestCase
|
|
||||||
import org.tasks.injection.ProductionModule
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@UninstallModules(ProductionModule::class)
|
|
||||||
@HiltAndroidTest
|
|
||||||
class GtasksMetadataServiceTest : InjectingTestCase() {
|
|
||||||
@Inject lateinit var taskDao: TaskDao
|
|
||||||
@Inject lateinit var googleTaskDao: GoogleTaskDao
|
|
||||||
|
|
||||||
private var task: Task? = null
|
|
||||||
private var metadata: GoogleTask? = null
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testMetadataFound() = runBlocking {
|
|
||||||
givenTask(taskWithMetadata(null))
|
|
||||||
whenSearchForMetadata()
|
|
||||||
thenExpectMetadataFound()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testMetadataDoesntExist() = runBlocking {
|
|
||||||
givenTask(taskWithoutMetadata())
|
|
||||||
whenSearchForMetadata()
|
|
||||||
thenExpectNoMetadataFound()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun thenExpectNoMetadataFound() {
|
|
||||||
assertNull(metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun thenExpectMetadataFound() {
|
|
||||||
assertNotNull(metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- helpers
|
|
||||||
private suspend fun whenSearchForMetadata() {
|
|
||||||
metadata = googleTaskDao.getByTaskId(task!!.id)
|
|
||||||
}
|
|
||||||
|
|
||||||
private suspend fun taskWithMetadata(id: String?): Task {
|
|
||||||
val task = Task()
|
|
||||||
task.title = "cats"
|
|
||||||
taskDao.createNew(task)
|
|
||||||
val metadata = GoogleTask(task.id, "")
|
|
||||||
if (id != null) {
|
|
||||||
metadata.remoteId = id
|
|
||||||
}
|
|
||||||
metadata.task = task.id
|
|
||||||
googleTaskDao.insert(metadata)
|
|
||||||
return task
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun givenTask(taskToTest: Task) {
|
|
||||||
task = taskToTest
|
|
||||||
}
|
|
||||||
|
|
||||||
private suspend fun taskWithoutMetadata(): Task {
|
|
||||||
val task = Task()
|
|
||||||
task.title = "dogs"
|
|
||||||
taskDao.createNew(task)
|
|
||||||
return task
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,386 +0,0 @@
|
|||||||
package com.todoroo.astrid.reminders
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
|
||||||
import com.todoroo.andlib.utility.DateUtilities
|
|
||||||
import com.todoroo.astrid.data.Task
|
|
||||||
import com.todoroo.astrid.data.Task.Companion.HIDE_UNTIL_DUE
|
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
|
||||||
import dagger.hilt.android.testing.UninstallModules
|
|
||||||
import org.junit.Assert.assertEquals
|
|
||||||
import org.junit.Assert.assertTrue
|
|
||||||
import org.junit.Before
|
|
||||||
import org.junit.Test
|
|
||||||
import org.tasks.Freeze.Companion.freezeClock
|
|
||||||
import org.tasks.R
|
|
||||||
import org.tasks.data.TaskDao
|
|
||||||
import org.tasks.date.DateTimeUtils.newDateTime
|
|
||||||
import org.tasks.injection.InjectingTestCase
|
|
||||||
import org.tasks.injection.ProductionModule
|
|
||||||
import org.tasks.jobs.NotificationQueue
|
|
||||||
import org.tasks.jobs.ReminderEntry
|
|
||||||
import org.tasks.makers.TaskMaker.COMPLETION_TIME
|
|
||||||
import org.tasks.makers.TaskMaker.CREATION_TIME
|
|
||||||
import org.tasks.makers.TaskMaker.DELETION_TIME
|
|
||||||
import org.tasks.makers.TaskMaker.DUE_DATE
|
|
||||||
import org.tasks.makers.TaskMaker.DUE_TIME
|
|
||||||
import org.tasks.makers.TaskMaker.HIDE_TYPE
|
|
||||||
import org.tasks.makers.TaskMaker.ID
|
|
||||||
import org.tasks.makers.TaskMaker.RANDOM_REMINDER_PERIOD
|
|
||||||
import org.tasks.makers.TaskMaker.REMINDERS
|
|
||||||
import org.tasks.makers.TaskMaker.REMINDER_LAST
|
|
||||||
import org.tasks.makers.TaskMaker.SNOOZE_TIME
|
|
||||||
import org.tasks.makers.TaskMaker.newTask
|
|
||||||
import org.tasks.preferences.Preferences
|
|
||||||
import org.tasks.reminders.Random
|
|
||||||
import org.tasks.time.DateTime
|
|
||||||
import java.util.concurrent.TimeUnit
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@UninstallModules(ProductionModule::class)
|
|
||||||
@HiltAndroidTest
|
|
||||||
class ReminderServiceTest : InjectingTestCase() {
|
|
||||||
@Inject lateinit var preferences: Preferences
|
|
||||||
@Inject lateinit var taskDao: TaskDao
|
|
||||||
@Inject lateinit var jobs: NotificationQueue
|
|
||||||
|
|
||||||
private lateinit var service: ReminderService
|
|
||||||
private lateinit var random: RandomStub
|
|
||||||
|
|
||||||
@Before
|
|
||||||
override fun setUp() {
|
|
||||||
super.setUp()
|
|
||||||
random = RandomStub()
|
|
||||||
preferences.clear()
|
|
||||||
service = ReminderService(preferences, jobs, random, taskDao)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun dontScheduleStartDateReminderWhenFlagNotSet() {
|
|
||||||
service.scheduleAlarm(
|
|
||||||
newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE),
|
|
||||||
with(DUE_TIME, newDateTime())
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
assertTrue(jobs.isEmpty())
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun dontScheduleDueDateReminderWhenFlagNotSet() {
|
|
||||||
service.scheduleAlarm(newTask(with(ID, 1L), with(DUE_TIME, newDateTime())))
|
|
||||||
|
|
||||||
assertTrue(jobs.isEmpty())
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun dontScheduleDueDateReminderWhenTimeNotSet() {
|
|
||||||
service.scheduleAlarm(newTask(with(ID, 1L), with(REMINDERS, Task.NOTIFY_AT_DEADLINE)))
|
|
||||||
|
|
||||||
assertTrue(jobs.isEmpty())
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun schedulePastStartDate() {
|
|
||||||
freezeClock {
|
|
||||||
val dueDate = newDateTime().minusDays(1)
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, dueDate),
|
|
||||||
with(HIDE_TYPE, HIDE_UNTIL_DUE),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_START)
|
|
||||||
)
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(
|
|
||||||
ReminderEntry(
|
|
||||||
1,
|
|
||||||
dueDate.startOfDay().withHourOfDay(18).millis,
|
|
||||||
ReminderService.TYPE_START
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleFutureStartDate() {
|
|
||||||
val dueDate = newDateTime().plusDays(1)
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, dueDate),
|
|
||||||
with(HIDE_TYPE, HIDE_UNTIL_DUE),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_START)
|
|
||||||
)
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(
|
|
||||||
ReminderEntry(
|
|
||||||
1,
|
|
||||||
dueDate.startOfDay().withHourOfDay(18).millis,
|
|
||||||
ReminderService.TYPE_START
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun schedulePastDueDate() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, newDateTime().minusDays(1)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1, task.dueDate, ReminderService.TYPE_DUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleFutureDueDate() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, newDateTime().plusDays(1)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1, task.dueDate, ReminderService.TYPE_DUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleReminderAtDefaultDueTime() {
|
|
||||||
val now = newDateTime()
|
|
||||||
val task = newTask(with(ID, 1L), with(DUE_DATE, now), with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1, now.startOfDay().withHourOfDay(18).millis, ReminderService.TYPE_DUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun dontScheduleReminderForCompletedTask() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, newDateTime().plusDays(1)),
|
|
||||||
with(COMPLETION_TIME, newDateTime()),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
assertTrue(jobs.isEmpty())
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun dontScheduleReminderForDeletedTask() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, newDateTime().plusDays(1)),
|
|
||||||
with(DELETION_TIME, newDateTime()),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
assertTrue(jobs.isEmpty())
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun dontScheduleDueDateReminderWhenAlreadyReminded() {
|
|
||||||
val now = newDateTime()
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, now),
|
|
||||||
with(REMINDER_LAST, now.plusSeconds(1)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
assertTrue(jobs.isEmpty())
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun ignoreStaleSnoozeTime() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, newDateTime()),
|
|
||||||
with(SNOOZE_TIME, newDateTime().minusMinutes(5)),
|
|
||||||
with(REMINDER_LAST, newDateTime().minusMinutes(4)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1, task.dueDate, ReminderService.TYPE_DUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun dontIgnoreMissedSnoozeTime() {
|
|
||||||
val dueDate = newDateTime()
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, dueDate),
|
|
||||||
with(SNOOZE_TIME, dueDate.minusMinutes(4)),
|
|
||||||
with(REMINDER_LAST, dueDate.minusMinutes(5)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1, task.reminderSnooze, ReminderService.TYPE_SNOOZE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleInitialRandomReminder() {
|
|
||||||
random.seed = 0.3865f
|
|
||||||
|
|
||||||
freezeClock {
|
|
||||||
val now = newDateTime()
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(REMINDER_LAST, null as DateTime?),
|
|
||||||
with(CREATION_TIME, now.minusDays(1)),
|
|
||||||
with(RANDOM_REMINDER_PERIOD, DateUtilities.ONE_WEEK))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, now.minusDays(1).millis + 584206592, ReminderService.TYPE_RANDOM))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleNextRandomReminder() {
|
|
||||||
random.seed = 0.3865f
|
|
||||||
|
|
||||||
freezeClock {
|
|
||||||
val now = newDateTime()
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(REMINDER_LAST, now.minusDays(1)),
|
|
||||||
with(CREATION_TIME, now.minusDays(30)),
|
|
||||||
with(RANDOM_REMINDER_PERIOD, DateUtilities.ONE_WEEK))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, now.minusDays(1).millis + 584206592, ReminderService.TYPE_RANDOM))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleOverdueRandomReminder() {
|
|
||||||
random.seed = 0.3865f
|
|
||||||
|
|
||||||
freezeClock {
|
|
||||||
val now = newDateTime()
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(REMINDER_LAST, now.minusDays(14)),
|
|
||||||
with(CREATION_TIME, now.minusDays(30)),
|
|
||||||
with(RANDOM_REMINDER_PERIOD, DateUtilities.ONE_WEEK))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, now.millis + 10148400, ReminderService.TYPE_RANDOM))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleOverdueNoLastReminder() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, DateTime(2017, 9, 22, 15, 30)),
|
|
||||||
with(REMINDER_LAST, null as DateTime?),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AFTER_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, DateTime(2017, 9, 23, 15, 30, 1, 0).millis, ReminderService.TYPE_OVERDUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleOverduePastLastReminder() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, DateTime(2017, 9, 22, 15, 30)),
|
|
||||||
with(REMINDER_LAST, DateTime(2017, 9, 24, 12, 0)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AFTER_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, DateTime(2017, 9, 24, 15, 30, 1, 0).millis, ReminderService.TYPE_OVERDUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleOverdueBeforeLastReminder() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, DateTime(2017, 9, 22, 12, 30)),
|
|
||||||
with(REMINDER_LAST, DateTime(2017, 9, 24, 15, 0)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AFTER_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, DateTime(2017, 9, 25, 12, 30, 1, 0).millis, ReminderService.TYPE_OVERDUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleOverdueWithNoDueTime() {
|
|
||||||
preferences.setInt(R.string.p_rmd_time, TimeUnit.HOURS.toMillis(15).toInt())
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_DATE, DateTime(2017, 9, 22)),
|
|
||||||
with(REMINDER_LAST, DateTime(2017, 9, 23, 12, 17, 59, 999)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AFTER_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, DateTime(2017, 9, 23, 15, 0, 0, 0).millis, ReminderService.TYPE_OVERDUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleSubsequentOverdueReminder() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, DateTime(2017, 9, 22, 15, 30)),
|
|
||||||
with(REMINDER_LAST, DateTime(2017, 9, 23, 15, 30, 59, 999)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AFTER_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, DateTime(2017, 9, 24, 15, 30, 1, 0).millis, ReminderService.TYPE_OVERDUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun scheduleOverdueAfterLastReminder() {
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, DateTime(2017, 9, 22, 15, 30)),
|
|
||||||
with(REMINDER_LAST, DateTime(2017, 9, 23, 12, 17, 59, 999)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AFTER_DEADLINE))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1L, DateTime(2017, 9, 23, 15, 30, 1, 0).millis, ReminderService.TYPE_OVERDUE))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun snoozeOverridesAll() {
|
|
||||||
val now = newDateTime()
|
|
||||||
val task = newTask(
|
|
||||||
with(ID, 1L),
|
|
||||||
with(DUE_TIME, now),
|
|
||||||
with(SNOOZE_TIME, now.plusMonths(12)),
|
|
||||||
with(REMINDERS, Task.NOTIFY_AT_DEADLINE or Task.NOTIFY_AFTER_DEADLINE),
|
|
||||||
with(RANDOM_REMINDER_PERIOD, DateUtilities.ONE_HOUR))
|
|
||||||
|
|
||||||
service.scheduleAlarm(task)
|
|
||||||
|
|
||||||
verify(ReminderEntry(1, now.plusMonths(12).millis, ReminderService.TYPE_SNOOZE))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun verify(vararg reminders: ReminderEntry) = assertEquals(reminders.toList(), jobs.getJobs())
|
|
||||||
|
|
||||||
internal class RandomStub : Random() {
|
|
||||||
var seed = 1.0f
|
|
||||||
|
|
||||||
override fun nextFloat() = seed
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,50 +1,68 @@
|
|||||||
package com.todoroo.astrid.repeats
|
package com.todoroo.astrid.repeats
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
import org.tasks.data.entity.Task
|
||||||
|
import com.todoroo.astrid.service.TaskCompleter
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import dagger.hilt.android.testing.UninstallModules
|
import dagger.hilt.android.testing.UninstallModules
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertFalse
|
||||||
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.tasks.data.TaskDao
|
import org.tasks.data.dao.TaskDao
|
||||||
import org.tasks.injection.InjectingTestCase
|
import org.tasks.injection.InjectingTestCase
|
||||||
import org.tasks.injection.ProductionModule
|
import org.tasks.injection.ProductionModule
|
||||||
import org.tasks.makers.TaskMaker.COMPLETION_TIME
|
import org.tasks.time.DateTimeUtils2.currentTimeMillis
|
||||||
import org.tasks.makers.TaskMaker.PARENT
|
|
||||||
import org.tasks.makers.TaskMaker.RECUR
|
|
||||||
import org.tasks.makers.TaskMaker.newTask
|
|
||||||
import org.tasks.time.DateTime
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@UninstallModules(ProductionModule::class)
|
@UninstallModules(ProductionModule::class)
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
class RepeatWithSubtasksTests : InjectingTestCase() {
|
class RepeatWithSubtasksTests : InjectingTestCase() {
|
||||||
@Inject lateinit var taskDao: TaskDao
|
@Inject lateinit var taskDao: TaskDao
|
||||||
@Inject lateinit var repeat: RepeatTaskHelper
|
@Inject lateinit var taskCompleter: TaskCompleter
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun uncompleteGrandchildren() = runBlocking {
|
fun uncompleteGrandchildren() = runBlocking {
|
||||||
val grandparent = taskDao.createNew(newTask(with(RECUR, "RRULE:FREQ=DAILY")))
|
val grandparent = taskDao.createNew(
|
||||||
val parent = taskDao.createNew(newTask(with(PARENT, grandparent)))
|
Task(
|
||||||
val child = taskDao.createNew(newTask(
|
recurrence = "RRULE:FREQ=DAILY"
|
||||||
with(PARENT, parent),
|
)
|
||||||
with(COMPLETION_TIME, DateTime())
|
)
|
||||||
))
|
val parent = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = grandparent
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val child = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = parent,
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
repeat.handleRepeat(taskDao.fetch(grandparent)!!)
|
assertTrue(taskDao.fetch(child)!!.isCompleted)
|
||||||
|
|
||||||
|
taskCompleter.setComplete(grandparent)
|
||||||
|
|
||||||
assertFalse(taskDao.fetch(child)!!.isCompleted)
|
assertFalse(taskDao.fetch(child)!!.isCompleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun uncompleteGoogleTaskChildren() = runBlocking {
|
fun uncompleteGoogleTaskChildren() = runBlocking {
|
||||||
val parent = taskDao.createNew(newTask(with(RECUR, "RRULE:FREQ=DAILY")))
|
val parent = taskDao.createNew(
|
||||||
val child = taskDao.createNew(newTask(
|
Task(
|
||||||
with(PARENT, parent),
|
recurrence = "RRULE:FREQ=DAILY"
|
||||||
with(COMPLETION_TIME, DateTime())
|
)
|
||||||
))
|
)
|
||||||
|
val child = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = parent,
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertTrue(taskDao.fetch(child)!!.isCompleted)
|
||||||
|
|
||||||
repeat.handleRepeat(taskDao.fetch(parent)!!)
|
taskCompleter.setComplete(parent)
|
||||||
|
|
||||||
assertFalse(taskDao.fetch(child)!!.isCompleted)
|
assertFalse(taskDao.fetch(child)!!.isCompleted)
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
../../../../test/java/org/tasks/Freeze.kt
|
@ -0,0 +1 @@
|
|||||||
|
../../../../test/java/org/tasks/SuspendFreeze.kt
|
@ -0,0 +1 @@
|
|||||||
|
../../../../test/java/org/tasks/TestUtilities.kt
|
@ -1,53 +1,31 @@
|
|||||||
package org.tasks.data
|
package org.tasks.data
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import dagger.hilt.android.testing.UninstallModules
|
import dagger.hilt.android.testing.UninstallModules
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.Assert.*
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import org.tasks.data.dao.CaldavDao
|
||||||
|
import org.tasks.data.dao.GoogleTaskListDao
|
||||||
|
import org.tasks.data.entity.CaldavAccount
|
||||||
import org.tasks.injection.InjectingTestCase
|
import org.tasks.injection.InjectingTestCase
|
||||||
import org.tasks.injection.ProductionModule
|
import org.tasks.injection.ProductionModule
|
||||||
import org.tasks.makers.GoogleTaskListMaker.ACCOUNT
|
|
||||||
import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID
|
|
||||||
import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@UninstallModules(ProductionModule::class)
|
@UninstallModules(ProductionModule::class)
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
class GoogleTaskListDaoTest : InjectingTestCase() {
|
class GoogleTaskListDaoTest : InjectingTestCase() {
|
||||||
@Inject lateinit var googleTaskListDao: GoogleTaskListDao
|
@Inject lateinit var googleTaskListDao: GoogleTaskListDao
|
||||||
|
@Inject lateinit var caldavDao: CaldavDao
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun noResultsForEmptyAccount() = runBlocking {
|
fun noResultsForEmptyAccount() = runBlocking {
|
||||||
val account = GoogleTaskAccount()
|
val account = CaldavAccount(
|
||||||
account.account = "user@gmail.com"
|
uuid = "user@gmail.com",
|
||||||
googleTaskListDao.insert(account)
|
username = "user@gmail.com",
|
||||||
|
)
|
||||||
|
caldavDao.insert(account)
|
||||||
|
|
||||||
assertTrue(googleTaskListDao.getGoogleTaskFilters(account.account!!).isEmpty())
|
assertTrue(googleTaskListDao.getGoogleTaskFilters(account.username!!).isEmpty())
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun findListWithNullAccount() = runBlocking {
|
|
||||||
val list = newGoogleTaskList(with(REMOTE_ID, "1234"), with(ACCOUNT, null as String?))
|
|
||||||
list.id = googleTaskListDao.insert(list)
|
|
||||||
|
|
||||||
assertEquals(list, googleTaskListDao.findExistingList("1234"))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun findListWithEmptyAccount() = runBlocking {
|
|
||||||
val list = newGoogleTaskList(with(REMOTE_ID, "1234"), with(ACCOUNT, ""))
|
|
||||||
list.id = googleTaskListDao.insert(list)
|
|
||||||
|
|
||||||
assertEquals(list, googleTaskListDao.findExistingList("1234"))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun ignoreListWithAccount() = runBlocking {
|
|
||||||
val list = newGoogleTaskList(with(REMOTE_ID, "1234"), with(ACCOUNT, "user@gmail.com"))
|
|
||||||
googleTaskListDao.insert(list)
|
|
||||||
|
|
||||||
assertNull(googleTaskListDao.findExistingList("1234"))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1 @@
|
|||||||
|
../../../../test/java/org/tasks/makers
|
@ -1,44 +0,0 @@
|
|||||||
package org.tasks.ui.editviewmodel
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.MakeItEasy.with
|
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
|
||||||
import dagger.hilt.android.testing.UninstallModules
|
|
||||||
import kotlinx.coroutines.runBlocking
|
|
||||||
import org.junit.Assert.assertEquals
|
|
||||||
import org.junit.Test
|
|
||||||
import org.tasks.injection.ProductionModule
|
|
||||||
import org.tasks.makers.TaskMaker
|
|
||||||
import org.tasks.makers.TaskMaker.newTask
|
|
||||||
|
|
||||||
@UninstallModules(ProductionModule::class)
|
|
||||||
@HiltAndroidTest
|
|
||||||
class RepeatTests : BaseTaskEditViewModelTest() {
|
|
||||||
@Test
|
|
||||||
fun changeRepeatAfterCompletion() = runBlocking {
|
|
||||||
val task = newTask(with(TaskMaker.RECUR, "FREQ=DAILY;INTERVAL=1"))
|
|
||||||
setup(task)
|
|
||||||
|
|
||||||
viewModel.repeatAfterCompletion = true
|
|
||||||
|
|
||||||
save()
|
|
||||||
|
|
||||||
assertEquals(
|
|
||||||
"FREQ=DAILY;INTERVAL=1;FROM=COMPLETION",
|
|
||||||
taskDao.fetch(task.id)!!.recurrence)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun removeRepeatAfterCompletion() = runBlocking {
|
|
||||||
val task = newTask()
|
|
||||||
task.recurrence = "RRULE:FREQ=DAILY;INTERVAL=1;FROM=COMPLETION"
|
|
||||||
setup(task)
|
|
||||||
|
|
||||||
viewModel.repeatAfterCompletion = false
|
|
||||||
|
|
||||||
save()
|
|
||||||
|
|
||||||
assertEquals(
|
|
||||||
"RRULE:FREQ=DAILY;INTERVAL=1",
|
|
||||||
taskDao.fetch(task.id)!!.recurrence)
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,161 @@
|
|||||||
|
package org.tasks.ui.editviewmodel
|
||||||
|
|
||||||
|
import com.todoroo.astrid.core.BuiltInFilterExposer
|
||||||
|
import org.tasks.data.entity.Task
|
||||||
|
import com.todoroo.astrid.service.TaskDeleter
|
||||||
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
|
import dagger.hilt.android.testing.UninstallModules
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import org.junit.Assert.assertFalse
|
||||||
|
import org.junit.Assert.assertTrue
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
|
import org.tasks.LocalBroadcastManager
|
||||||
|
import org.tasks.analytics.Firebase
|
||||||
|
import org.tasks.billing.Inventory
|
||||||
|
import org.tasks.data.dao.DeletionDao
|
||||||
|
import org.tasks.data.dao.TaskDao
|
||||||
|
import org.tasks.injection.InjectingTestCase
|
||||||
|
import org.tasks.injection.ProductionModule
|
||||||
|
import org.tasks.preferences.Preferences
|
||||||
|
import org.tasks.time.DateTimeUtils2.currentTimeMillis
|
||||||
|
import org.tasks.ui.TaskListViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@UninstallModules(ProductionModule::class)
|
||||||
|
@HiltAndroidTest
|
||||||
|
class TaskListViewModelTest : InjectingTestCase() {
|
||||||
|
private lateinit var viewModel: TaskListViewModel
|
||||||
|
@Inject lateinit var preferences: Preferences
|
||||||
|
@Inject lateinit var taskDao: TaskDao
|
||||||
|
@Inject lateinit var taskDeleter: TaskDeleter
|
||||||
|
@Inject lateinit var deletionDao: DeletionDao
|
||||||
|
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
|
||||||
|
@Inject lateinit var inventory: Inventory
|
||||||
|
@Inject lateinit var firebase: Firebase
|
||||||
|
|
||||||
|
@Before
|
||||||
|
override fun setUp() {
|
||||||
|
super.setUp()
|
||||||
|
viewModel = TaskListViewModel(
|
||||||
|
context = context,
|
||||||
|
preferences = preferences,
|
||||||
|
taskDao = taskDao,
|
||||||
|
deletionDao = deletionDao,
|
||||||
|
taskDeleter = taskDeleter,
|
||||||
|
localBroadcastManager = localBroadcastManager,
|
||||||
|
inventory = inventory,
|
||||||
|
firebase = firebase,
|
||||||
|
)
|
||||||
|
viewModel.setFilter(BuiltInFilterExposer.getMyTasksFilter(context.resources))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun clearCompletedTask() = runBlocking {
|
||||||
|
val task = taskDao.createNew(
|
||||||
|
Task(completionDate = currentTimeMillis())
|
||||||
|
)
|
||||||
|
|
||||||
|
clearCompleted()
|
||||||
|
|
||||||
|
assertTrue(taskDao.fetch(task)!!.isDeleted)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun dontDeleteTaskWithRecurringParent() = runBlocking {
|
||||||
|
val parent = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
recurrence = "RRULE:FREQ=DAILY;INTERVAL=1"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val child = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = parent,
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
clearCompleted()
|
||||||
|
|
||||||
|
assertFalse(taskDao.fetch(child)!!.isDeleted)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun dontDeleteTaskWithRecurringGrandparent() = runBlocking {
|
||||||
|
val grandparent = taskDao.createNew(
|
||||||
|
Task(recurrence = "RRULE:FREQ=DAILY;INTERVAL=1")
|
||||||
|
)
|
||||||
|
val parent = taskDao.createNew(
|
||||||
|
Task(parent = grandparent)
|
||||||
|
)
|
||||||
|
val child = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = parent,
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
clearCompleted()
|
||||||
|
|
||||||
|
assertFalse(taskDao.fetch(child)!!.isDeleted)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun clearGrandchildWithNoRecurringAncestors() = runBlocking {
|
||||||
|
val grandparent = taskDao.createNew(Task())
|
||||||
|
val parent = taskDao.createNew(
|
||||||
|
Task(parent = grandparent)
|
||||||
|
)
|
||||||
|
val child = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = parent,
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
clearCompleted()
|
||||||
|
|
||||||
|
assertTrue(taskDao.fetch(child)!!.isDeleted)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun clearGrandchildWithCompletedRecurringAncestor() = runBlocking {
|
||||||
|
val grandparent = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
recurrence = "RRULE:FREQ=DAILY;INTERVAL=1",
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
val parent = taskDao.createNew(
|
||||||
|
Task(parent = grandparent)
|
||||||
|
)
|
||||||
|
val child = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = parent,
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
clearCompleted()
|
||||||
|
|
||||||
|
assertTrue(taskDao.fetch(child)!!.isDeleted)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun clearHiddenSubtask() = runBlocking {
|
||||||
|
preferences.showCompleted = false
|
||||||
|
val parent = taskDao.createNew(Task())
|
||||||
|
val child = taskDao.createNew(
|
||||||
|
Task(
|
||||||
|
parent = parent,
|
||||||
|
completionDate = currentTimeMillis(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
clearCompleted()
|
||||||
|
|
||||||
|
assertTrue(taskDao.fetch(child)!!.isDeleted)
|
||||||
|
}
|
||||||
|
|
||||||
|
private suspend fun clearCompleted() = viewModel.markDeleted(viewModel.getTasksToClear())
|
||||||
|
}
|
@ -1,70 +0,0 @@
|
|||||||
package org.tasks
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import at.bitfire.ical4android.Task.Companion.tasksFromReader
|
|
||||||
import com.todoroo.astrid.data.Task
|
|
||||||
import kotlinx.coroutines.runBlocking
|
|
||||||
import org.tasks.caldav.iCalendar.Companion.applyRemote
|
|
||||||
import org.tasks.data.CaldavTask
|
|
||||||
import org.tasks.preferences.Preferences
|
|
||||||
import org.tasks.time.DateTime
|
|
||||||
import java.io.StringReader
|
|
||||||
import java.nio.file.Files
|
|
||||||
import java.nio.file.Paths
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
object TestUtilities {
|
|
||||||
fun withTZ(id: String, runnable: suspend () -> Unit) = withTZ(TimeZone.getTimeZone(id), runnable)
|
|
||||||
|
|
||||||
fun withTZ(tz: TimeZone, runnable: suspend () -> Unit) {
|
|
||||||
val def = TimeZone.getDefault()
|
|
||||||
try {
|
|
||||||
TimeZone.setDefault(tz)
|
|
||||||
runBlocking {
|
|
||||||
runnable()
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
TimeZone.setDefault(def)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun assertEquals(expected: Long, actual: DateTime) =
|
|
||||||
org.junit.Assert.assertEquals(expected, actual.millis)
|
|
||||||
|
|
||||||
fun assertEquals(expected: DateTime, actual: Long?) =
|
|
||||||
org.junit.Assert.assertEquals(expected.millis, actual)
|
|
||||||
|
|
||||||
fun newPreferences(context: Context): Preferences {
|
|
||||||
return Preferences(context, "test_preferences")
|
|
||||||
}
|
|
||||||
|
|
||||||
fun vtodo(path: String): Task {
|
|
||||||
val task = Task()
|
|
||||||
task.applyRemote(fromResource(path))
|
|
||||||
return task
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setup(path: String): Triple<Task, CaldavTask, at.bitfire.ical4android.Task> {
|
|
||||||
val task = Task()
|
|
||||||
val vtodo = readFile(path)
|
|
||||||
val remote = fromString(vtodo)
|
|
||||||
task.applyRemote(remote)
|
|
||||||
return Triple(task, CaldavTask().apply { this.vtodo = vtodo }, remote)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun fromResource(path: String): at.bitfire.ical4android.Task =
|
|
||||||
fromString(readFile(path))
|
|
||||||
|
|
||||||
fun readFile(path: String): String {
|
|
||||||
val uri = javaClass.classLoader?.getResource(path)?.toURI()
|
|
||||||
?: throw IllegalArgumentException()
|
|
||||||
val paths = Paths.get(uri)
|
|
||||||
return String(Files.readAllBytes(paths), Charsets.UTF_8)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun fromString(task: String): at.bitfire.ical4android.Task =
|
|
||||||
tasksFromReader(StringReader(task))
|
|
||||||
.takeIf { it.size == 1 }
|
|
||||||
?.first()
|
|
||||||
?: throw IllegalStateException()
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.PropertyLookup
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import org.tasks.data.Geofence
|
|
||||||
|
|
||||||
object GeofenceMaker {
|
|
||||||
val PLACE: Property<Geofence, String> = Property.newProperty()
|
|
||||||
val TASK: Property<Geofence, Long> = Property.newProperty()
|
|
||||||
val ARRIVAL: Property<Geofence, Boolean> = Property.newProperty()
|
|
||||||
val DEPARTURE: Property<Geofence, Boolean> = Property.newProperty()
|
|
||||||
val RADIUS: Property<Geofence, Int> = Property.newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator { lookup: PropertyLookup<Geofence> ->
|
|
||||||
val geofence = Geofence()
|
|
||||||
geofence.place = lookup.valueOf(PLACE, "")
|
|
||||||
geofence.task = lookup.valueOf(TASK, 1)
|
|
||||||
geofence.isArrival = lookup.valueOf(ARRIVAL, false)
|
|
||||||
geofence.isDeparture = lookup.valueOf(DEPARTURE, false)
|
|
||||||
geofence.radius = lookup.valueOf(RADIUS, 250)
|
|
||||||
geofence
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newGeofence(vararg properties: PropertyValue<in Geofence?, *>): Geofence {
|
|
||||||
return Maker.make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.PropertyLookup
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import org.tasks.data.GoogleTaskList
|
|
||||||
|
|
||||||
object GoogleTaskListMaker {
|
|
||||||
val REMOTE_ID: Property<GoogleTaskList, String> = Property.newProperty()
|
|
||||||
val ACCOUNT: Property<GoogleTaskList, String?> = Property.newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator { lookup: PropertyLookup<GoogleTaskList> ->
|
|
||||||
val list = GoogleTaskList()
|
|
||||||
list.remoteId = lookup.valueOf(REMOTE_ID, "1234")
|
|
||||||
list.account = lookup.valueOf(ACCOUNT, null as String?)
|
|
||||||
list.setColor(0)
|
|
||||||
list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newGoogleTaskList(vararg properties: PropertyValue<in GoogleTaskList?, *>): GoogleTaskList {
|
|
||||||
return Maker.make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,33 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.Property.newProperty
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import com.todoroo.astrid.helper.UUIDHelper
|
|
||||||
import org.tasks.data.GoogleTask
|
|
||||||
import org.tasks.makers.Maker.make
|
|
||||||
|
|
||||||
object GoogleTaskMaker {
|
|
||||||
val LIST: Property<GoogleTask, String> = newProperty()
|
|
||||||
val ORDER: Property<GoogleTask, Long> = newProperty()
|
|
||||||
val REMOTE_ID: Property<GoogleTask, String> = newProperty()
|
|
||||||
val TASK: Property<GoogleTask, Long> = newProperty()
|
|
||||||
val PARENT: Property<GoogleTask, Long> = newProperty()
|
|
||||||
val REMOTE_PARENT: Property<GoogleTask, String?> = newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator<GoogleTask> {
|
|
||||||
val task = GoogleTask()
|
|
||||||
task.listId = it.valueOf(LIST, "1")
|
|
||||||
task.order = it.valueOf(ORDER, 0)
|
|
||||||
task.remoteId = it.valueOf(REMOTE_ID, UUIDHelper.newUUID())
|
|
||||||
task.task = it.valueOf(TASK, 1)
|
|
||||||
task.parent = it.valueOf(PARENT, 0L)
|
|
||||||
task.remoteParent = it.valueOf(REMOTE_PARENT, null as String?)
|
|
||||||
task
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newGoogleTask(vararg properties: PropertyValue<in GoogleTask?, *>): GoogleTask {
|
|
||||||
return make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.Property.newProperty
|
|
||||||
import com.natpryce.makeiteasy.PropertyLookup
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import com.todoroo.astrid.api.FilterListItem.NO_ORDER
|
|
||||||
import org.tasks.data.GoogleTaskList
|
|
||||||
import org.tasks.makers.Maker.make
|
|
||||||
|
|
||||||
object GtaskListMaker {
|
|
||||||
val ID: Property<GoogleTaskList, Long> = newProperty()
|
|
||||||
val ACCOUNT: Property<GoogleTaskList, String> = newProperty()
|
|
||||||
val REMOTE_ID: Property<GoogleTaskList, String> = newProperty()
|
|
||||||
val LAST_SYNC: Property<GoogleTaskList, Long> = newProperty()
|
|
||||||
val NAME: Property<GoogleTaskList, String> = newProperty()
|
|
||||||
private val ORDER: Property<GoogleTaskList, Int> = newProperty()
|
|
||||||
private val COLOR: Property<GoogleTaskList, Int> = newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator { lookup: PropertyLookup<GoogleTaskList> ->
|
|
||||||
val list = GoogleTaskList()
|
|
||||||
list.id = lookup.valueOf(ID, 0L)
|
|
||||||
list.account = lookup.valueOf(ACCOUNT, "account")
|
|
||||||
list.remoteId = lookup.valueOf(REMOTE_ID, "1")
|
|
||||||
list.title = lookup.valueOf(NAME, "Default")
|
|
||||||
list.order = lookup.valueOf(ORDER, NO_ORDER)
|
|
||||||
list.lastSync = lookup.valueOf(LAST_SYNC, 0L)
|
|
||||||
list.setColor(lookup.valueOf(COLOR, 0))
|
|
||||||
list
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newGtaskList(vararg properties: PropertyValue<in GoogleTaskList?, *>): GoogleTaskList {
|
|
||||||
return make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.PropertyLookup
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import com.todoroo.astrid.helper.UUIDHelper
|
|
||||||
import org.tasks.data.Place
|
|
||||||
|
|
||||||
object PlaceMaker {
|
|
||||||
val LATITUDE: Property<Place, Double> = Property.newProperty()
|
|
||||||
val LONGITUDE: Property<Place, Double> = Property.newProperty()
|
|
||||||
val UUID: Property<Place, String> = Property.newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator { lookup: PropertyLookup<Place> ->
|
|
||||||
val place = Place()
|
|
||||||
place.uid = lookup.valueOf(UUID, UUIDHelper.newUUID())
|
|
||||||
place.latitude = lookup.valueOf(LATITUDE, 0.0)
|
|
||||||
place.longitude = lookup.valueOf(LONGITUDE, 0.0)
|
|
||||||
place
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newPlace(vararg properties: PropertyValue<in Place?, *>): Place {
|
|
||||||
return Maker.make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.Property.newProperty
|
|
||||||
import com.natpryce.makeiteasy.PropertyLookup
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import org.tasks.data.TagData
|
|
||||||
import org.tasks.makers.Maker.make
|
|
||||||
|
|
||||||
object TagDataMaker {
|
|
||||||
val NAME: Property<TagData, String> = newProperty()
|
|
||||||
val UID: Property<TagData, String?> = newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator { lookup: PropertyLookup<TagData> ->
|
|
||||||
val tagData = TagData()
|
|
||||||
tagData.name = lookup.valueOf(NAME, "tag")
|
|
||||||
tagData.remoteId = lookup.valueOf(UID, null as String?)
|
|
||||||
tagData
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newTagData(vararg properties: PropertyValue<in TagData?, *>): TagData {
|
|
||||||
return make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.Property.newProperty
|
|
||||||
import com.natpryce.makeiteasy.PropertyLookup
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import com.todoroo.astrid.data.Task
|
|
||||||
import org.tasks.data.Tag
|
|
||||||
import org.tasks.data.TagData
|
|
||||||
import org.tasks.makers.Maker.make
|
|
||||||
|
|
||||||
object TagMaker {
|
|
||||||
val TAGDATA: Property<Tag, TagData?> = newProperty()
|
|
||||||
val TASK: Property<Tag, Task?> = newProperty()
|
|
||||||
val TAGUID: Property<Tag, String?> = newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator { lookup: PropertyLookup<Tag> ->
|
|
||||||
val tag = Tag()
|
|
||||||
val task = lookup.valueOf(TASK, null as Task?)!!
|
|
||||||
tag.task = task.id
|
|
||||||
tag.setTaskUid(task.uuid)
|
|
||||||
tag.tagUid = lookup.valueOf(TAGUID, null as String?)
|
|
||||||
val tagData = lookup.valueOf(TAGDATA, null as TagData?)
|
|
||||||
if (tagData != null) {
|
|
||||||
tag.tagUid = tagData.remoteId
|
|
||||||
}
|
|
||||||
assert(tag.tagUid != null)
|
|
||||||
tag
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newTag(vararg properties: PropertyValue<in Tag?, *>): Tag {
|
|
||||||
return make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,101 +0,0 @@
|
|||||||
package org.tasks.makers
|
|
||||||
|
|
||||||
import com.natpryce.makeiteasy.Instantiator
|
|
||||||
import com.natpryce.makeiteasy.Property
|
|
||||||
import com.natpryce.makeiteasy.Property.newProperty
|
|
||||||
import com.natpryce.makeiteasy.PropertyLookup
|
|
||||||
import com.natpryce.makeiteasy.PropertyValue
|
|
||||||
import com.todoroo.astrid.data.Task
|
|
||||||
import com.todoroo.astrid.data.Task.Companion.NO_UUID
|
|
||||||
import org.tasks.Strings
|
|
||||||
import org.tasks.date.DateTimeUtils
|
|
||||||
import org.tasks.makers.Maker.make
|
|
||||||
import org.tasks.time.DateTime
|
|
||||||
|
|
||||||
object TaskMaker {
|
|
||||||
val ID: Property<Task, Long> = newProperty()
|
|
||||||
val DUE_DATE: Property<Task, DateTime?> = newProperty()
|
|
||||||
val DUE_TIME: Property<Task, DateTime?> = newProperty()
|
|
||||||
val REMINDER_LAST: Property<Task, DateTime?> = newProperty()
|
|
||||||
val RANDOM_REMINDER_PERIOD: Property<Task, Long> = newProperty()
|
|
||||||
val HIDE_TYPE: Property<Task, Int> = newProperty()
|
|
||||||
val REMINDERS: Property<Task, Int> = newProperty()
|
|
||||||
val MODIFICATION_TIME: Property<Task, DateTime> = newProperty()
|
|
||||||
val CREATION_TIME: Property<Task, DateTime> = newProperty()
|
|
||||||
val COMPLETION_TIME: Property<Task, DateTime> = newProperty()
|
|
||||||
val DELETION_TIME: Property<Task, DateTime?> = newProperty()
|
|
||||||
val SNOOZE_TIME: Property<Task, DateTime?> = newProperty()
|
|
||||||
val RECUR: Property<Task, String?> = newProperty()
|
|
||||||
val AFTER_COMPLETE: Property<Task, Boolean> = newProperty()
|
|
||||||
val TITLE: Property<Task, String?> = newProperty()
|
|
||||||
val PRIORITY: Property<Task, Int> = newProperty()
|
|
||||||
val PARENT: Property<Task, Long> = newProperty()
|
|
||||||
val UUID: Property<Task, String> = newProperty()
|
|
||||||
val COLLAPSED: Property<Task, Boolean> = newProperty()
|
|
||||||
|
|
||||||
private val instantiator = Instantiator { lookup: PropertyLookup<Task> ->
|
|
||||||
val task = Task()
|
|
||||||
val title = lookup.valueOf(TITLE, null as String?)
|
|
||||||
if (!Strings.isNullOrEmpty(title)) {
|
|
||||||
task.title = title!!
|
|
||||||
}
|
|
||||||
val id = lookup.valueOf(ID, Task.NO_ID)
|
|
||||||
if (id != Task.NO_ID) {
|
|
||||||
task.id = id
|
|
||||||
}
|
|
||||||
val priority = lookup.valueOf(PRIORITY, -1)
|
|
||||||
if (priority >= 0) {
|
|
||||||
task.priority = priority
|
|
||||||
}
|
|
||||||
val dueDate = lookup.valueOf(DUE_DATE, null as DateTime?)
|
|
||||||
if (dueDate != null) {
|
|
||||||
task.dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, dueDate.millis)
|
|
||||||
}
|
|
||||||
val dueTime = lookup.valueOf(DUE_TIME, null as DateTime?)
|
|
||||||
if (dueTime != null) {
|
|
||||||
task.dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, dueTime.millis)
|
|
||||||
}
|
|
||||||
val completionTime = lookup.valueOf(COMPLETION_TIME, null as DateTime?)
|
|
||||||
if (completionTime != null) {
|
|
||||||
task.completionDate = completionTime.millis
|
|
||||||
}
|
|
||||||
val deletedTime = lookup.valueOf(DELETION_TIME, null as DateTime?)
|
|
||||||
if (deletedTime != null) {
|
|
||||||
task.deletionDate = deletedTime.millis
|
|
||||||
}
|
|
||||||
val snoozeTime = lookup.valueOf(SNOOZE_TIME, null as DateTime?)
|
|
||||||
if (snoozeTime != null) {
|
|
||||||
task.reminderSnooze = snoozeTime.millis
|
|
||||||
}
|
|
||||||
val hideType = lookup.valueOf(HIDE_TYPE, -1)
|
|
||||||
if (hideType >= 0) {
|
|
||||||
task.hideUntil = task.createHideUntil(hideType, 0)
|
|
||||||
}
|
|
||||||
val reminderFlags = lookup.valueOf(REMINDERS, -1)
|
|
||||||
if (reminderFlags >= 0) {
|
|
||||||
task.reminderFlags = reminderFlags
|
|
||||||
}
|
|
||||||
val reminderLast = lookup.valueOf(REMINDER_LAST, null as DateTime?)
|
|
||||||
if (reminderLast != null) {
|
|
||||||
task.reminderLast = reminderLast.millis
|
|
||||||
}
|
|
||||||
val randomReminderPeriod = lookup.valueOf(RANDOM_REMINDER_PERIOD, 0L)
|
|
||||||
if (randomReminderPeriod > 0) {
|
|
||||||
task.reminderPeriod = randomReminderPeriod
|
|
||||||
}
|
|
||||||
lookup.valueOf(RECUR, null as String?)?.let {
|
|
||||||
task.setRecurrence(it, lookup.valueOf(AFTER_COMPLETE, false))
|
|
||||||
}
|
|
||||||
task.isCollapsed = lookup.valueOf(COLLAPSED, false)
|
|
||||||
task.uuid = lookup.valueOf(UUID, NO_UUID)
|
|
||||||
val creationTime = lookup.valueOf(CREATION_TIME, DateTimeUtils.newDateTime())
|
|
||||||
task.creationDate = creationTime.millis
|
|
||||||
task.modificationDate = lookup.valueOf(MODIFICATION_TIME, creationTime).millis
|
|
||||||
task.parent = lookup.valueOf(PARENT, 0L)
|
|
||||||
task
|
|
||||||
}
|
|
||||||
|
|
||||||
fun newTask(vararg properties: PropertyValue<in Task?, *>): Task {
|
|
||||||
return make(instantiator, *properties)
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<network-security-config xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
<base-config
|
||||||
|
cleartextTrafficPermitted="true"
|
||||||
|
tools:ignore="InsecureBaseConfiguration" />
|
||||||
|
</network-security-config>
|
@ -0,0 +1,8 @@
|
|||||||
|
package org.tasks.play
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class PlayServices @Inject constructor() {
|
||||||
|
fun requestReview(@Suppress("UNUSED_PARAMETER") activity: Activity) {}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue