Compare commits

...

4960 Commits
9.7.2 ... main

Author SHA1 Message Date
Alex Baker a8e6e43811 compose-bom 2025.12.01 7 hours ago
Alex Baker 7628fe9ad3 Kotlin 2.2.20 7 hours ago
Alex Baker ac19d1977e Fix opening keyboard for new tasks 23 hours ago
Alex Baker 2b27c43188 New SystemEventReceiver 23 hours ago
Alex Baker 2d29672198 Catch interruption during widget refresh 23 hours ago
dependabot[bot] 22f63feede
Bump rexml from 3.4.1 to 3.4.2 (#3898)
Bumps [rexml](https://github.com/ruby/rexml) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.4.1...v3.4.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
23 hours ago
dependabot[bot] 583aaac767
Bump aws-sdk-s3 from 1.191.0 to 1.208.0 (#4040)
Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.191.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
23 hours ago
Paulo e2486fcb0c Translated using Weblate (Portuguese)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
23 hours ago
Alex Baker 62622b5979 Fix more widget icon mappings 2 days ago
Alex Baker 7a8aca0dbb Add optional limit to queries 2 days ago
Alex Baker 14530aa7a6 Disable Iconics animation processors to avoid ANRs 2 days ago
Alex Baker f1019a24fc Report missing widget icons 2 days ago
Alex Baker f0c57a0287 Fix widget icon mappings 2 days ago
Alex Baker 533aca1ac5 Fix crash in SignInActivity 1 week ago
ngocanhtve 50489708b5 Translated using Weblate (Vietnamese)
Currently translated at 92.6% (608 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
1 week ago
ngocanhtve 93db824b99 Translated using Weblate (Vietnamese)
Currently translated at 87.8% (29 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/vi/
1 week ago
Alex Baker d1dd5c1d99 Remove What's New dialog 1 week ago
Alex Baker 1ac39cc6bf Restore task edit state if activity is lost 1 week ago
Alex Baker fc38b8e676 Preserve timezone when modifying DateTime 1 week ago
Alex Baker ef0c1ac981 Handle timezone when calculating start of day 1 week ago
Alex Baker 46412a92c4 Handle loops when calculating subtask count 1 week ago
renovate[bot] ee10f1b62e
Update dependency com.google.apis:google-api-services-drive to v3-rev20251210-2.0.0 (#4007)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20251210-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] 1affa8264f
Update dependency androidx.datastore:datastore-preferences to v1.2.0 (#4055)
* Update dependency androidx.datastore:datastore-preferences to v1.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
Alex Baker 3ba6d7a384 Merge branch '14.8.4' 2 weeks ago
Alex Baker b12defea20 Update version and changelog 2 weeks ago
renovate[bot] d2e28e3807
Update dependency androidx.activity:activity-compose to v1.12.2 (#4052)
* Update dependency androidx.activity:activity-compose to v1.12.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
Alex Baker 14c5d3fe7d Fix widget race conditions 2 weeks ago
Alex Baker 76baf2ee9e Restore widget update period 2 weeks ago
Alex Baker d7dc131c08 Update widget list contents after config change 2 weeks ago
Alex Baker e73a906076 Specify UTF_8 2 weeks ago
renovate[bot] a409600a7c
Update protobuf monorepo to v4.33.2 (#4049)
* Update protobuf monorepo to v4.33.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] c12979808b
Update okhttp monorepo to v5.3.2 (#4047)
* Update okhttp monorepo to v5.3.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
Norara 6f2f274672 Translated using Weblate (Japanese)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
2 weeks ago
Sina 8df099bd39 Translated using Weblate (Persian)
Currently translated at 34.2% (225 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fa/
2 weeks ago
Xana 138cdd2252 Translated using Weblate (Asturian)
Currently translated at 68.9% (452 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ast/
2 weeks ago
Norara 4d3769f99d Translated using Weblate (Japanese)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ja/
2 weeks ago
Anonymous be030d0967 Translated using Weblate (Asturian)
Currently translated at 48.4% (16 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ast/
2 weeks ago
Sina 97be0d9dd1 Translated using Weblate (Persian)
Currently translated at 81.8% (27 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fa/
2 weeks ago
Xana 8a8a82dc17 Translated using Weblate (Asturian)
Currently translated at 21.2% (7 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ast/
2 weeks ago
renovate[bot] e8a1484355
Update dependency androidx.swiperefreshlayout:swiperefreshlayout to v1.2.0 (#4056)
* Update dependency androidx.swiperefreshlayout:swiperefreshlayout to v1.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] ff72308af2
Update lifecycle to v2.10.0 (#4061)
* Update lifecycle to v2.10.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] da174933e5
Update wearCompose to v1.5.6 (#4051)
* Update wearCompose to v1.5.6

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] dd0fe7d7c0
Update room to v2.8.4 (#4050)
* Update room to v2.8.4

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] cfbaea6958
Update plugin protobuf to v0.9.6 (#4048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] 22bf0d2357
Update ktor monorepo to v3.3.3 (#4046)
* Update ktor monorepo to v3.3.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] c8cfa59ad9
Update dependency ruby to v3.4.8 (#4045)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] 76d92cd951
Update dependency com.google.android.gms:oss-licenses-plugin to v0.10.10 (#4042)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] 0d61461c5c
Update agp to v8.13.2 (#4041)
* Update agp to v8.13.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] 1b99122e19
Update mockito monorepo to v5.21.0 (#4062)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] d1406839ee
Update actions/checkout action to v6 (#4063)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] ac5a019a38
Update GitHub Artifact Actions (major) (#4064)
Update GitHub Artifact Actions

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 weeks ago
renovate[bot] fbfcbdc555
Update dependency androidx.sqlite:sqlite-bundled to v2.6.2 (#4006)
* Update dependency androidx.sqlite:sqlite-bundled to v2.6.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 month ago
renovate[bot] 51e347f22b
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.9.5 (#4005)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.9.5

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 month ago
renovate[bot] d0c28baf7b
Update dependency androidx.compose:compose-bom to v2025.11.01 (#4002)
* Update dependency androidx.compose:compose-bom to v2025.11.01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 month ago
Pierfrancesco Passerini 3d4d44849e Translated using Weblate (Italian)
Currently translated at 99.6% (654 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
2 months ago
renovate[bot] dfa41c515a
Update protobuf monorepo to v4.33.1 (#3998)
* Update protobuf monorepo to v4.33.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
M a539b3a3e4
Remove codebeat badge (#3996) 2 months ago
renovate[bot] 8d6de19b2a
Update agp to v8.13.1 (#3997)
* Update agp to v8.13.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
Alex Baker 2a6e1638c9 Update version and changelog 2 months ago
Alex Baker 9190930745 Random reminder fixes
- Make random reminder calculation deterministic
- Don't fire reminders immediately on recurring tasks
2 months ago
Alex Baker 40961dad87 Refactor custom and random reminder dialogs 2 months ago
renovate[bot] 9fbe27345d
Update dependency com.google.android.gms:oss-licenses-plugin to v0.10.9 (#3968)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 5f67e0ea3a
Update okhttp monorepo to v5 (major) (#3710)
* Update okhttp monorepo to v5

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] d51171b17e
Update plugin jetbrains-compose to v1.9.3 (#3983)
* Update plugin jetbrains-compose to v1.9.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] b657773a2d
Update wearCompose to v1.5.5 (#3973)
* Update wearCompose to v1.5.5

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] d84effc447
Update dependency androidx.compose.material3.adaptive:adaptive-navigation-android to v1.2.0 (#3976)
* Update dependency androidx.compose.material3.adaptive:adaptive-navigation-android to v1.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 21db540614
Update dependency androidx.core:core-splashscreen to v1.2.0 (#3977)
* Update dependency androidx.core:core-splashscreen to v1.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
Alex Baker 8e9f27c46e Fall back to internal storage...
if external private storage is unavailable
2 months ago
Alex Baker 94ad2a381e Remove use of internal padding 2 months ago
renovate[bot] 747928c8c7
Update dependency io.grpc:grpc-kotlin-stub to v1.5.0 (#3981)
* Update dependency io.grpc:grpc-kotlin-stub to v1.5.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 9a28f1062b
Update dependency com.google.apis:google-api-services-tasks to v1-rev20251102-2.0.0 (#3970)
* Update dependency com.google.apis:google-api-services-tasks to v1-rev20251102-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] ffe749bf0c
Update dependency androidx.compose.material3.adaptive:adaptive-layout-android to v1.2.0 (#3975)
* Update dependency androidx.compose.material3.adaptive:adaptive-layout-android to v1.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] b0ae0129ae
Update ktor monorepo to v3.3.2 (#3702)
* Update ktor monorepo to v3.3.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 6715369d93
Update dependency androidx.work:work-runtime-ktx to v2.11.0 (#3979)
* Update dependency androidx.work:work-runtime-ktx to v2.11.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 4efb678699
Update dependency androidx.sqlite:sqlite-bundled to v2.6.1 (#3978)
* Update dependency androidx.sqlite:sqlite-bundled to v2.6.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 581b789a0b
Update lifecycle to v2.9.4 (#3972)
* Update lifecycle to v2.9.4

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 15d8b3aa59
Update dependency com.google.gms:google-services to v4.4.4 (#3971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months ago
renovate[bot] dcd5d8c094
Update mockito monorepo to v5.20.0 (#3982)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months ago
renovate[bot] f3253e6188
Update protobuf monorepo to v4.33.0 (#3984)
* Update protobuf monorepo to v4.33.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 34b0c62ef8
Update dependency androidx.navigation:navigation-compose to v2.9.6 (#3967)
* Update dependency androidx.navigation:navigation-compose to v2.9.6

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 3754196714
Update room to v2.8.3 (#3985)
* Update room to v2.8.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
Igor Sorocean b94a91efbe Translated using Weblate (Romanian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
2 months ago
renovate[bot] 2c6066c378
Update dependency androidx.compose:compose-bom to v2025.11.00 (#3974)
* Update dependency androidx.compose:compose-bom to v2025.11.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 03e15a8c35
Update GitHub Artifact Actions (major) (#3987)
Update GitHub Artifact Actions

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months ago
renovate[bot] e63add73bc
Update dagger.hilt to v2.57.2 (#3965)
* Update dagger.hilt to v2.57.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] bf676bcea7
Update dependency ruby to v3.4.7 (#3896)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 6de8fe2fa0
Update dependency com.google.apis:google-api-services-drive to v3-rev20251019-2.0.0 (#3969)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20251019-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
renovate[bot] 5907f27172
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.9.4 (#3966)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.9.4

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
Alex Baker 38119d4560 Update version and changelog 2 months ago
Alex Baker 52848a5308 Attempt to fix flashing widgets 2 months ago
Alex Baker 4c492120b3 Update Google Play Billing to 7.1.1 2 months ago
Alex Baker 20e995b19b Fix locale support for Hebrew and Indonesian 2 months ago
Alex Baker 2b63e33de2 Fix reentrant deadlock 2 months ago
hasak 5980bd497d Translated using Weblate (Bosnian)
Currently translated at 17.0% (112 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
3 months ago
Erigmac X e16b5cd6cd Translated using Weblate (Indonesian)
Currently translated at 84.8% (28 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/id/
3 months ago
Akihiko Suzuki (array) 3d9945c798 Translated using Weblate (Japanese)
Currently translated at 87.8% (29 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ja/
3 months ago
Petri Hämäläinen 5c9eb1c35f Translated using Weblate (Finnish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fi/
3 months ago
Petri Hämäläinen 6b594a3213 Translated using Weblate (Finnish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
3 months ago
Alex Baker 9e0e01f89b Custom filter creation improvements 3 months ago
Alex Baker 932b8b0540 Update version and changelog 4 months ago
Alex Baker 152a9684e5 Downgrade Room and BundledSQLite
https://issuetracker.google.com/issues/442032108
4 months ago
renovate[bot] 88c817b770
Update room to v2.8.0 (#3895)
* Update room to v2.8.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] a368960073
Update hilt to v1.3.0 (#3891)
* Update hilt to v1.3.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
Alex Baker 4f1cc5ab8e Update version and changelog 4 months ago
Alex Baker 17f54b6d32 Disable updatePeriodMillis, limit to 50 items 4 months ago
Alex Baker 6a44bed0e8 Update version and changelog 4 months ago
Alex Baker 7fa90396b3 Limit widgets to 175 rows
200 rows gave me binder size warnings
4 months ago
Alex Baker d1df39d12c Remove limit on widget items 4 months ago
Alex Baker d9ddd45f13 Add WidgetIconProvider 4 months ago
renovate[bot] 27b21118eb
Update dependency com.google.android.gms:play-services-oss-licenses to v17.3.0 (#3889)
* Update dependency com.google.android.gms:play-services-oss-licenses to v17.3.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] f725365f87
Update dependency androidx.sqlite:sqlite-bundled to v2.6.0 (#3888)
* Update dependency androidx.sqlite:sqlite-bundled to v2.6.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
Alex Baker 7377e4672d Fix tests 4 months ago
renovate[bot] 8c90b1ec87
Update dependency androidx.compose:compose-bom to v2025.09.00 (#3887)
* Update dependency androidx.compose:compose-bom to v2025.09.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
Alex Baker 5b50f45a5b Fix nextcloud sharing by username 4 months ago
Alex Baker 882338f554 Fix microsoft sync issues
- fix sync on empty categories
- apply parent completion time to checklist items
4 months ago
renovate[bot] 930e980550
Update dependency androidx.activity:activity-compose to v1.11.0 (#3886)
* Update dependency androidx.activity:activity-compose to v1.11.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] fb243c7aaf
Update protobuf monorepo to v4.32.1 (#3884)
* Update protobuf monorepo to v4.32.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] c3842fd2f7
Update wearCompose to v1.5.1 (#3885)
* Update wearCompose to v1.5.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 81ecb322e9
Update dependency androidx.wear:wear-input to v1.2.0 (#3882)
* Update dependency androidx.wear:wear-input to v1.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 1b386458b8
Update dependency androidx.work:work-runtime-ktx to v2.10.4 (#3883)
* Update dependency androidx.work:work-runtime-ktx to v2.10.4

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 7dca092831
Update dependency androidx.navigation:navigation-compose to v2.9.4 (#3881)
* Update dependency androidx.navigation:navigation-compose to v2.9.4

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 2749b029c5
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.9.1 (#3880) 4 months ago
Alex Baker 0cb19221c4 Update version and changelog 4 months ago
Alex Baker d900f72a5c Fix Microsoft To Do patching
Encode null in patch so you can remove values
4 months ago
Alex Baker 0d8979b72c Fix moving data to a Google Tasks account
When moving data to a Google Tasks account from any other synchronized
account, the app could fail to delete the data from the source account
4 months ago
Alex Baker 703322f510 Force refresh on resume
Previously visible unstarted or not-due tasks that are now started or
overdue need to be updated
4 months ago
Alex Baker 192351a4b8 Add ScreenUnlockReceiver 4 months ago
Alex Baker 844a3a0ff8 Update version and changelog 4 months ago
Alex Baker e6bbc8d361 Attempt to address Android 16 widget changes 4 months ago
Alex Baker 04ab41f622 Use task ids for widget click intents 4 months ago
Alex Baker 4946b0ca06 Apply missing obj fix to etebase, caldav deletion 4 months ago
Alex Baker 2c29194ff2 Try to recover from missing caldav obj 4 months ago
renovate[bot] 1aaaad86da
Update dependency com.google.apis:google-api-services-drive to v3-rev20250829-2.0.0 (#3860)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250829-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
Alex Baker 68601873fd Add RefreshBroadcaster interface 4 months ago
Alex Baker c9721790ce Remove broadcastRefreshList 4 months ago
renovate[bot] 6f16a29fd7
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.39.0 (#3863)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.39.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
happy happy a501b81bfc Added translation using Weblate (Hindi) 4 months ago
happy happy fded7fbdd5 Added translation using Weblate (Hindi) 4 months ago
Alex Baker 3ff4a2339b Move KeyStoreEncryption to kmp 4 months ago
vale-decem e400594e5b Translated using Weblate (Serbian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
4 months ago
Alex Baker 8bbbc1dcac Update version and changelog 4 months ago
github-actions[bot] 38d27b262a Update dependency diffs 4 months ago
Alex Baker b61842646b Update ical4android
Fixes alarm synchronization
4 months ago
Alex Baker 29cbb33a42 Move VtodoCache to kmp 4 months ago
renovate[bot] 2418b664e9
Update agp to v8.13.0 (#3850)
* Update agp to v8.13.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
vale-decem 0e3803c28d Translated using Weblate (Serbian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
4 months ago
glemco c0bb7b306a Translated using Weblate (Italian)
Currently translated at 99.6% (654 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 months ago
Alex Baker 903412fdea Update version and changelog 4 months ago
Alex Baker 12b1127e6b Fix clear completed crash when grouping by list 4 months ago
Alex Baker c3ce7a43fb Fix all day calendar events 4 months ago
bittin1ddc447d824349b2 a391dff9bc Translated using Weblate (Swedish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
4 months ago
renovate[bot] 28e12110fa
Update lifecycle to v2.9.3 (#3839)
* Update lifecycle to v2.9.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 0bba2c4a63
Update wearCompose to v1.5.0 (#3840)
* Update wearCompose to v1.5.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 700421c5ce
Update dependency com.google.android.gms:oss-licenses-plugin to v0.10.8 (#3838)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4 months ago
renovate[bot] d4a742b136
Update agp to v8.12.2 (#3837)
* Update agp to v8.12.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 585967c601
Update dependency androidx.wear:wear-input to v1.2.0-rc01 (#3836)
* Update dependency androidx.wear:wear-input to v1.2.0-rc01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] d279f7c42e
Update dependency androidx.compose:compose-bom to v2025.08.01 (#3835)
* Update dependency androidx.compose:compose-bom to v2025.08.01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
Milo Ivir 5cfbe9c8cb Translated using Weblate (Croatian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 months ago
Frits van Bommel f591b1846c Translated using Weblate (Dutch)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 months ago
MisterTechnik 3401a59716 Translated using Weblate (German)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 months ago
renovate[bot] d0328b378a
Update dependency com.google.apis:google-api-services-drive to v3-rev20250819-2.0.0 (#3823)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250819-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
Alex Baker f9d859a33e Update version and changelog 4 months ago
Alex Baker 5a1560e513 System bar scrim improvements 4 months ago
renovate[bot] 655cdc1a9d
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.38.0 (#3820)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.38.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] f2235e6aa6
Update dependency com.microsoft.identity.client:msal to v7.0.3 (#3818)
* Update dependency com.microsoft.identity.client:msal to v7.0.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 09baafb47f
Update actions/setup-java action to v5 (#3819)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
4 months ago
renovate[bot] 2d0cfaa04d
Update dependency co.touchlab:kermit to v2.0.8 (#3817)
* Update dependency co.touchlab:kermit to v2.0.8

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
renovate[bot] e60d516fcf
Update dagger.hilt to v2.57.1 (#3816)
* Update dagger.hilt to v2.57.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 months ago
Jiho Min 9ba82c3a01 Translated using Weblate (Korean)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ko/
4 months ago
Jiho Min b7abdfe2ea Translated using Weblate (Korean)
Currently translated at 99.6% (654 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
4 months ago
renovate[bot] 3da6f67ace
Update dependency com.microsoft.identity.client:msal to v7.0.2 (#3810)
* Update dependency com.microsoft.identity.client:msal to v7.0.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] eec3ae447a
Update actions/checkout action to v5 (#3806)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 7a9a27eae0
Update agp to v8.12.1 (#3809)
* Update agp to v8.12.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
Hugoren Martinako 05b5f1470a Translated using Weblate (Galician)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/gl/
5 months ago
Don Zouras 2a94af70fd Translated using Weblate (Esperanto)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 months ago
Hugoren Martinako 464903bf4d Translated using Weblate (Portuguese)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 months ago
Iago 0542f24c29 Translated using Weblate (Galician)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/gl/
5 months ago
Hugoren Martinako 0fe834b46c Translated using Weblate (Galician)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/gl/
5 months ago
Iago 997810af4c Translated using Weblate (Galician)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/gl/
5 months ago
Hugoren Martinako 6829f3f690 Translated using Weblate (Galician)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/gl/
5 months ago
ferranpujolcamins cec5c1e4b8 Translated using Weblate (Catalan)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
5 months ago
Hugoren Martinako d3a12b039a Translated using Weblate (Catalan)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
5 months ago
renovate[bot] 67dcc1db38
Update mockito monorepo to v5.19.0 (#3804)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 83ae176288
Update protobuf monorepo to v4.32.0 (#3805)
* Update protobuf monorepo to v4.32.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 5e535b6d46
Update dependency androidx.compose:compose-bom to v2025.08.00 (#3802)
* Update dependency androidx.compose:compose-bom to v2025.08.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 5c124047e8
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.9.0 (#3803)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.9.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 8a332c8b2a
Update dependency com.microsoft.identity.client:msal to v7.0.1 (#3801)
* Update dependency com.microsoft.identity.client:msal to v7.0.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 9d6a925fca
Update dependency androidx.fragment:fragment-compose to v1.8.9 (#3799)
* Update dependency androidx.fragment:fragment-compose to v1.8.9

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 8cc28aa88b
Update dependency com.google.android.gms:play-services-oss-licenses to v17.2.2 (#3800)
* Update dependency com.google.android.gms:play-services-oss-licenses to v17.2.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
Hugoren Martinako 99ea6cb0eb Translated using Weblate (Spanish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/es/
5 months ago
Hugoren Martinako a698236f4d Translated using Weblate (Spanish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 months ago
Alex Baker ad616472b3 Attempt to recover from HTTP 400 errors 5 months ago
Alex Baker d5cda9e84b Always fetch and apply remote order and parents
Subtasks are sorted manually by default, so the app should try to remain
consistent with remote order
5 months ago
Алексей Ежков 9808ca1745 Translated using Weblate (Russian)
Currently translated at 99.8% (655 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 months ago
Alex Baker 0b76caa9a8 Don't log missing wear api stacktrace 5 months ago
Alex Baker 07ac9f9ead Fix crash when looking up ALWAYS_FINISH_ACTIVITIES 5 months ago
Alex Baker 977edf4d8d Add proguard rule for microsoft 5 months ago
Alex Baker 071d670c6d Attempt to fix crash in menu search bar 5 months ago
Alex Baker eb89cc689a Two panes on medium width, like z folds 5 months ago
renovate[bot] a5c73ccc24
Update dependency com.google.android.gms:oss-licenses-plugin to v0.10.7 (#3784)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 51884d46f2
Update dependency com.google.firebase:firebase-crashlytics-gradle to v3.0.6 (#3785)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
Antoni Jurczyk 101d7f2357 Translated using Weblate (Polish)
Currently translated at 84.8% (28 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/pl/
5 months ago
renovate[bot] 75563b6a61
Update dependency com.microsoft.identity.client:msal to v7 (#3787)
* Update dependency com.microsoft.identity.client:msal to v7

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
Tamas Gervai 3028d492b2 Translated using Weblate (Hungarian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 months ago
Antoni Jurczyk ab2fc34e98 Translated using Weblate (Polish)
Currently translated at 95.1% (624 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 months ago
renovate[bot] 852ac708b5
Update actions/download-artifact action to v5 (#3779)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
Pierfrancesco Passerini 092f357719 Translated using Weblate (Italian)
Currently translated at 99.5% (653 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 months ago
ERYpTION ad1ace8fbf Translated using Weblate (Danish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
5 months ago
odnankenobi 204f49fc25 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (655 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
5 months ago
Alex Baker 9ef95291c8 Update version and changelog 5 months ago
Alex Baker 3e034ab91f Target Android 15
Need to update some back handler stuff for Android 16
5 months ago
Alex Baker 6f89ac3b93 Fix some window inset issues 5 months ago
Alex Baker 7d2ebf9cdf Use ExistingPeriodicWorkPolicy.UPDATE 5 months ago
Alex Baker 16011b1963 Target Android 16 5 months ago
Alex Baker 2f6348c53d Return to last viewed filter after search 5 months ago
renovate[bot] 566c22c17e
Update agp to v8.12.0 (#3764)
* Update agp to v8.12.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
Ihor Hordiichuk 2c33be700a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/uk/
5 months ago
renovate[bot] 7a24f43387
Update horologist to v0.7.15 (#3763)
* Update horologist to v0.7.15

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 370ac149d3
Update dependency androidx.test.ext:junit to v1.3.0 (#3762)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 4c851ce7f3
Update dependency androidx.test:core to v1.7.0 (#3759)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 7c78854663
Update dependency androidx.test:runner to v1.7.0 (#3760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
Ihor Hordiichuk d05730399d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 months ago
Xo c8f564d2d5 Translated using Weblate (Hebrew)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 months ago
Alex Baker 65db4ab926 Remove shadow from date picker sheet 5 months ago
renovate[bot] 1476e7fb27
Update dependency androidx.navigation:navigation-compose to v2.9.3 (#3756)
* Update dependency androidx.navigation:navigation-compose to v2.9.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 2ee0939564
Update dependency androidx.wear:wear-input to v1.2.0-beta01 (#3757)
* Update dependency androidx.wear:wear-input to v1.2.0-beta01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 4c530a5de3
Update dependency androidx.work:work-runtime-ktx to v2.10.3 (#3758)
* Update dependency androidx.work:work-runtime-ktx to v2.10.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
Alex Baker fcd62c6801 Update version and changelog 5 months ago
Alex Baker aedd29982a Fix test compilation 5 months ago
Alex Baker 3a37d6481e Synchronize list icons with CalDAV 5 months ago
Alex Baker c5f8583146 Simplify fetching calendars 5 months ago
Alex Baker 9d96bed5b3 Add helper method to check if list is read only 5 months ago
renovate[bot] 2f268c8c70
Update dependency com.google.apis:google-api-services-drive to v3-rev20250723-2.0.0 (#3749)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250723-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
renovate[bot] 130a29d7e3
Update dependency com.google.apis:google-api-services-drive to v3-rev20250717-2.0.0 (#3746)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250717-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
5 months ago
Emin Tufan Çetin dcb69394be Translated using Weblate (Turkish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 months ago
renovate[bot] 2cf3438e07
Update dependency com.google.firebase:firebase-crashlytics-gradle to v3.0.5 (#3742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
5 months ago
Frits van Bommel 06e9da41d6 Translated using Weblate (Dutch)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 months ago
Pierfrancesco Passerini 7b34e33c0e Translated using Weblate (Italian)
Currently translated at 99.6% (654 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 months ago
Florian Trayon be51651779 Translated using Weblate (French)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 months ago
ColorfulRhino 627b05a575 Translated using Weblate (German)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 months ago
Sketch6580 8207f30c5f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
6 months ago
Priit Jõerüüt 6811677d21 Translated using Weblate (Estonian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
6 months ago
Fjuro 9d88c5b3a0 Translated using Weblate (Czech)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
6 months ago
109247019824 1f24a371fb Translated using Weblate (Bulgarian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
6 months ago
Pierfrancesco Passerini 877a2cd6a5 Translated using Weblate (Italian)
Currently translated at 99.6% (653 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
6 months ago
109247019824 299b5b4d21 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
6 months ago
renovate[bot] e6320d42a7
Update dependency androidx.compose:compose-bom to v2025.07.00 (#3732)
* Update dependency androidx.compose:compose-bom to v2025.07.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 84c36a1a90
Update lifecycle to v2.9.2 (#3730)
* Update lifecycle to v2.9.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 73c0e38991
Update dagger.hilt to v2.57 (#3731)
* Update dagger.hilt to v2.57

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 773e822f14
Update dependency androidx.navigation:navigation-compose to v2.9.2 (#3727)
* Update dependency androidx.navigation:navigation-compose to v2.9.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 6f167b5ae0
Update dependency androidx.wear:wear-input to v1.2.0-alpha04 (#3728)
* Update dependency androidx.wear:wear-input to v1.2.0-alpha04

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] ba0cd26abc
Update dependency com.google.android.gms:play-services-oss-licenses to v17.2.1 (#3724)
* Update dependency com.google.android.gms:play-services-oss-licenses to v17.2.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 3450db4006
Update dependency ruby to v3.4.5 (#3725)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 months ago
Alex Baker 7c2cf38788 Update version and changelog 6 months ago
Alex Baker e576a48eba Fix widget 'View more tasks' text color 6 months ago
renovate[bot] 803593a3a7
Update dependency com.microsoft.identity.client:msal to v6.2.0 (#3721)
* Update dependency com.microsoft.identity.client:msal to v6.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] c4fc7fbadb
Update dependency com.google.android.gms:play-services-oss-licenses to v17.2.0 (#3720)
* Update dependency com.google.android.gms:play-services-oss-licenses to v17.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
github-actions[bot] 75d53fb8ac Update dependency diffs 6 months ago
renovate[bot] 769802c10a
Update agp to v8.11.1 (#3718)
* Update agp to v8.11.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 14ff0086fa
Update dependency gradle to v8.14.3 (#3719)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 months ago
Alex Baker 761d4afeef Widget sort groups ascending by default 6 months ago
Alex Baker c7336589cd Limit widget task list size on Android 16+
Android 16 really slows down on large binder transactions
6 months ago
Alex Baker e30c583d5a Fix widget update race condition 6 months ago
Alex Baker 38527aef0a Update compileSdk to Android 16 6 months ago
Alex Baker c9cdc4d50f Log if "Don't keep activities" is enabled 6 months ago
renovate[bot] 80753f607c
Update dependency com.google.apis:google-api-services-drive to v3-rev20250701-2.0.0 (#3712)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250701-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
Milo Ivir 32cb067ffd Translated using Weblate (Croatian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
6 months ago
தமிழ்நேரம் e93d0735d4 Translated using Weblate (Tamil)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
6 months ago
renovate[bot] 103e7eaa60
Update dependency androidx.navigation:navigation-compose to v2.9.1 (#3709)
* Update dependency androidx.navigation:navigation-compose to v2.9.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
Nick Wick a490307251 Translated using Weblate (Swedish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sv/
6 months ago
Nick Wick 976df68671 Translated using Weblate (Swedish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
6 months ago
vale-decem 384f6e4604 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem b68439b0e7 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 3611593307 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem c7a7384cf5 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem f89789dd10 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 91da4bc661 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 30abeba683 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 8f567a153a Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 2fbffa20cc Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem a071b05a71 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 63dbb48d96 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem e2c65c06a1 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 03b1d78feb Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem fe72301c55 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem ee40b72b02 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 6181351db7 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
vale-decem 8263ab2935 Translated using Weblate (Serbian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
6 months ago
Kachelkaiser 38dbbe379b Translated using Weblate (German)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 months ago
vale-decem 58d5eea978 Translated using Weblate (Serbian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sr/
6 months ago
vale-decem f902ff38b0 Translated using Weblate (Serbian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sr/
6 months ago
Alex Baker 7c970eec95 Update proguard 6 months ago
renovate[bot] 9ec448aedd
Update dependency fastlane to v2.228.0 (#3700)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 2fb1bb4873
Update dependency com.google.firebase:firebase-bom to v33.16.0 (#3699)
* Update dependency com.google.firebase:firebase-bom to v33.16.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
Alex Baker c64e581fd4 Update proguard 6 months ago
renovate[bot] 36ec47e9bd
Update dependency gradle to v8.14.2 (#3695)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 2942554ec8
Update room to v2.7.2 (#3697)
* Update room to v2.7.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] b6b624ce5b
Update plugin jetbrains-compose to v1.8.2 (#3696)
* Update plugin jetbrains-compose to v1.8.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 1267c803c6
Update agp to v8.11.0 (#3698)
* Update agp to v8.11.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 7a17943142
Update dependency com.google.gms:google-services to v4.4.3 (#3694)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6 months ago
renovate[bot] d73b8496cb
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.37.1 (#3693)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.37.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] eda6eeaf62
Update dependency androidx.work:work-runtime-ktx to v2.10.2 (#3692)
* Update dependency androidx.work:work-runtime-ktx to v2.10.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 6d89f2cb02
Update dependency androidx.sqlite:sqlite-bundled to v2.5.2 (#3691)
* Update dependency androidx.sqlite:sqlite-bundled to v2.5.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 273fbf9153
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.8.3 (#3689)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.8.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] 2b1ad31f76
Update dependency androidx.compose:compose-bom to v2025.06.01 (#3688)
* Update dependency androidx.compose:compose-bom to v2025.06.01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
6 months ago
renovate[bot] fdd1fc4989 Migrate config renovate.json 6 months ago
github-actions[bot] ff6a8ae0f1 Update dependency diffs 6 months ago
devn1x d1da6dc970 Update libs.versions.toml 6 months ago
devn1x a3dac4a397 Update dependency ical4android
Fixes #2870
6 months ago
devn1x 30060d8faf Update dependency ical4android
Fixes #2870
6 months ago
Alex Baker a299363fe8 New Compose color picker 6 months ago
大王叫我来巡山 36b20f47fd Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
7 months ago
大王叫我来巡山 5b1aff00df Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/zh_Hans/
7 months ago
Anonymous f53aec3e8c Translated using Weblate (Slovak)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sk/
7 months ago
renovate[bot] 079d7867f1
Update dependency co.touchlab:kermit to v2.0.6 (#3676)
* Update dependency co.touchlab:kermit to v2.0.6

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
pitroig 8b99e8feb2 Translated using Weblate (Catalan)
Currently translated at 64.2% (422 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
7 months ago
Alex Baker 1a9b371bda Update version and changelog 7 months ago
Alex Baker dfc311ff31 Remove redundant string 7 months ago
Alex Baker cbcb812150 Create a local list if there are no lists 7 months ago
Alex Baker 70793f2433 Remove libera.chat links 7 months ago
Xo a198846902 Translated using Weblate (Hebrew)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
7 months ago
Alex Baker 86a3b2b426 Don't post summaries when canNotify is false 7 months ago
Alex Baker bbac4da7d0 Additional debug info in application logs 7 months ago
Maria Eduarda Weiland Machado Bratti f4e0d519d7 Translated using Weblate (Portuguese)
Currently translated at 99.8% (656 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
7 months ago
Alex Baker 9a584c851b Fix dynamic color setting 7 months ago
Alex Baker 704edaa0ab Fix Microsoft To Do serialization crash 7 months ago
Sina 71833adf21 Translated using Weblate (Persian)
Currently translated at 60.6% (20 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fa/
7 months ago
renovate[bot] 4aad9bf00e
Update dependency com.google.firebase:firebase-crashlytics-gradle to v3.0.4 (#3660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 months ago
Frits van Bommel d4b1a0dd09 Translated using Weblate (Dutch)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
7 months ago
renovate[bot] 0f1508f59a
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.37.0 (#3656)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.37.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 266fe1281e
Update dependency androidx.wear.tiles:tiles-proto to v1.5.0 (#3655)
* Update dependency androidx.wear.tiles:tiles-proto to v1.5.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 7e99762814
Update lifecycle to v2.9.1 (#3653)
* Update lifecycle to v2.9.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 56ec24d2f9
Update dependency androidx.compose:compose-bom to v2025.06.00 (#3654)
* Update dependency androidx.compose:compose-bom to v2025.06.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] fad3ab6ce3
Update dependency androidx.fragment:fragment-compose to v1.8.8 (#3652)
* Update dependency androidx.fragment:fragment-compose to v1.8.8

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 522bd6e304
Update dependency androidx.appcompat:appcompat to v1.7.1 (#3651)
* Update dependency androidx.appcompat:appcompat to v1.7.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
109247019824 119572971d Translated using Weblate (Bulgarian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
7 months ago
Nicklas 48270d6f2c Translated using Weblate (Swedish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
7 months ago
M_Haruki 44d15556c6 Translated using Weblate (Japanese)
Currently translated at 99.8% (656 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
7 months ago
Anael G. P 33611d12bd Translated using Weblate (Spanish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/es/
7 months ago
Don Zouras caa5916ad7 Translated using Weblate (Esperanto)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
7 months ago
Emin Tufan Çetin 821e8e0ee4 Translated using Weblate (Turkish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
7 months ago
Florian Trayon fe4bd73d62 Translated using Weblate (French)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
7 months ago
Anael G. P b0493fdd7d Translated using Weblate (Spanish)
Currently translated at 99.8% (656 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
7 months ago
Anonymous f330daa764 Translated using Weblate (Vietnamese)
Currently translated at 92.3% (607 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
7 months ago
Anonymous 017dd17021 Translated using Weblate (Croatian)
Currently translated at 98.7% (649 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
7 months ago
Anonymous aa535981c3 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 95.4% (627 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
7 months ago
Anonymous 6f39614b5b Translated using Weblate (Polish)
Currently translated at 91.6% (602 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
7 months ago
Anonymous d33d87b6cb Translated using Weblate (Norwegian Bokmål)
Currently translated at 95.4% (627 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
7 months ago
Anonymous a828d510e3 Translated using Weblate (Lithuanian)
Currently translated at 89.1% (586 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
7 months ago
Anonymous 898f84e3c8 Translated using Weblate (Finnish)
Currently translated at 96.0% (631 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
7 months ago
Yurt Page a1711fa0ea Translated using Weblate (Russian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
7 months ago
Yurt Page 542ba69870 Translated using Weblate (Russian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ru/
7 months ago
Alex Baker 01d07cccbd Fix case on "Default reminder" settings 7 months ago
renovate[bot] 3e8838bdb6
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.36.0 (#3636)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.36.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] ac4c610841
Update dependency com.google.protobuf:protoc to v4.31.1 (#3635)
* Update dependency com.google.protobuf:protoc to v4.31.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 6bea199a75
Update agp to v8.10.1 (#3634)
* Update agp to v8.10.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 1efb8c8ee0
Update grpc-java monorepo to v1.73.0 (#3631)
* Update grpc-java monorepo to v1.73.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
Igor Sorocean d2c23a79de Translated using Weblate (Romanian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ro/
7 months ago
Igor Sorocean 0091f80945 Translated using Weblate (Romanian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
7 months ago
renovate[bot] 5cb770e722
Update dependency ruby to v3.4.4 (#3206)
* Update dependency ruby to v3.4.4

* Fix fastlane

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Baker <alex@tasks.org>
7 months ago
renovate[bot] 81759305c5
Update protobuf monorepo to v4.31.0 (#3616)
* Update protobuf monorepo to v4.31.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 1692a98d3d
Update mockito monorepo to v5.18.0 (#3615)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 9174855f2f
Update dependency com.google.firebase:firebase-bom to v33.14.0 (#3613)
* Update dependency com.google.firebase:firebase-bom to v33.14.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 9632ea61d2
Update dependency org.jetbrains.kotlinx:kotlinx-collections-immutable to v0.4.0 (#3614)
* Update dependency org.jetbrains.kotlinx:kotlinx-collections-immutable to v0.4.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] e2ca2a2251
Update dependency com.google.apis:google-api-services-tasks to v1-rev20250518-2.0.0 (#3611)
* Update dependency com.google.apis:google-api-services-tasks to v1-rev20250518-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] dad35aafd3
Update plugin jetbrains-compose to v1.8.1 (#3612)
* Update plugin jetbrains-compose to v1.8.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 0735cb5e1d
Update dependency gradle to v8.14.1 (#3550)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 55c8ab6e3a
Update dependency androidx.fragment:fragment-compose to v1.8.7 (#3610)
* Update dependency androidx.fragment:fragment-compose to v1.8.7

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 5c4b345695
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.8.2 (#3607)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.8.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] 2c6b1644dc
Update dependency androidx.datastore:datastore-preferences to v1.1.7 (#3609)
* Update dependency androidx.datastore:datastore-preferences to v1.1.7

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
renovate[bot] efaa2cf472
Update dependency androidx.compose:compose-bom to v2025.05.01 (#3606)
* Update dependency androidx.compose:compose-bom to v2025.05.01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
7 months ago
Alex Baker c4e160a21a Update version and changelog 7 months ago
Alex Baker 7d6c20aec0 Fix null pointer exception 7 months ago
renovate[bot] 3960b57242
Update dependency com.google.apis:google-api-services-drive to v3-rev20250511-2.0.0 (#3599)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250511-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker 0e5e6e9b05 Update version and changelog 8 months ago
Alex Baker 147c9f44d2 Remove erroneously added contacts permission 8 months ago
Alex Baker ad7141a1c9 Fix wallpaper theme 8 months ago
abdelbasset jabrane 6a99e75115 Translated using Weblate (Arabic)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ar/
8 months ago
Hugoren Martinako b4f9770344 Translated using Weblate (Spanish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
8 months ago
Hugoren Martinako f6ffcf8397 Translated using Weblate (Catalan)
Currently translated at 61.3% (403 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
8 months ago
109247019824 a23c541195 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
8 months ago
renovate[bot] dea9783ce5
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.8.1 (#3544)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.8.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] 93e7a16850
Update kotlin (#3594)
* Update kotlin

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] 760bd1d58b
Update plugin jetbrains-compose to v1.8.0 (#3586)
* Update plugin jetbrains-compose to v1.8.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker e580ced066 Fix handling multiple shared attachments 8 months ago
Alex Baker 169140cc0b Allow video attachments 8 months ago
Alex Baker 8f5c41051b compose-bom 2025.05.00 8 months ago
renovate[bot] a2098c1876
Update dependency androidx.datastore:datastore-preferences to v1.1.6 (#3539)
* Update dependency androidx.datastore:datastore-preferences to v1.1.6

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker d446e009b4 Fix lint 8 months ago
Alex Baker 35161972c1 Revert "Update kotlin to v2.1.21 (#3593)"
This reverts commit c996462e32.
8 months ago
Alex Baker 6a8a9dec80 AGP 8.10 8 months ago
Alex Baker 627ada6679 Replace deprecated method call 8 months ago
renovate[bot] c996462e32
Update kotlin to v2.1.21 (#3593)
* Update kotlin to v2.1.21

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] cd5a89960d
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.35.0 (#3592)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.35.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
cat 805b7d23df Translated using Weblate (Danish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
8 months ago
Alex Baker a4ca8b28aa msal for Google Play, AppAuth for F-Droid 8 months ago
renovate[bot] a519a06c3b
Update dependency com.google.apis:google-api-services-drive to v3-rev20250506-2.0.0 (#3587)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250506-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] c22384d789
Update lifecycle to v2.9.0 (#3585)
* Update lifecycle to v2.9.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] 247c286e61
Update dependency androidx.navigation:navigation-compose to v2.9.0 (#3583)
* Update dependency androidx.navigation:navigation-compose to v2.9.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] 15c7bc2fc0
Update dependency androidx.sqlite:sqlite-bundled to v2.5.1 (#3582)
* Update dependency androidx.sqlite:sqlite-bundled to v2.5.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Kaci 08fa635ce9 Translated using Weblate (Hungarian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
8 months ago
Priit Jõerüüt 2946133eb2 Translated using Weblate (Estonian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
8 months ago
Don Zouras e8f6276b5b Translated using Weblate (Esperanto)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/eo/
8 months ago
renovate[bot] 83e8044bc5
Update dependency com.microsoft.identity.client:msal to v6.0.1 (#3574)
* Update dependency com.microsoft.identity.client:msal to v6.0.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Don Zouras 892beb83f7 Translated using Weblate (Esperanto)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
8 months ago
Ihor Hordiichuk a623a7bd97 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
8 months ago
Emin Tufan Çetin 98ae90a6ad Translated using Weblate (Turkish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
8 months ago
renovate[bot] 9b1078dc16
Update ktor monorepo to v3.1.3 (#3570)
* Update ktor monorepo to v3.1.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] cb220654cf
Update dependency fastlane to v2.227.2 (#3569)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8 months ago
Frits van Bommel 65533d3675 Translated using Weblate (Dutch)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
8 months ago
Pierfrancesco Passerini cdb11e631f Translated using Weblate (Italian)
Currently translated at 99.8% (656 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
8 months ago
Priit Jõerüüt 1fd0fe232a Translated using Weblate (Estonian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
8 months ago
Fjuro ec05fed425 Translated using Weblate (Czech)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
8 months ago
renovate[bot] 1d7cc3794a
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.34.0 (#3566)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.34.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker 3d3c16b297 Update version and changelog 8 months ago
Alex Baker deefb20481 Fix activity finishing itself 8 months ago
Alex Baker 83bc9798d6 Automatically set default Microsoft To Do list 8 months ago
Alex Baker 3d04f93aae Use lazy initializers for firebase 8 months ago
Alex Baker 15aada7f7f Limit drawer headers to 1 line 8 months ago
Alex Baker 20e1b802cd Reduce db query log level 8 months ago
Alex Baker bb4db1e63d Fix link in changelog 8 months ago
Sketch6580 6a5e8896b8 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
8 months ago
Jose Delvani e469a2ea97 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
8 months ago
Florian Trayon bfb5529b73 Translated using Weblate (French)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
8 months ago
Kachelkaiser 89101a22d4 Translated using Weblate (German)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
8 months ago
abdelbasset jabrane 221efb9bef Translated using Weblate (Arabic)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
8 months ago
Abdullhakim Sami Alshanqiti 2757821f4e Translated using Weblate (Arabic)
Currently translated at 97.8% (641 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
8 months ago
abdelbasset jabrane ceb7da1e2c Translated using Weblate (Arabic)
Currently translated at 97.7% (640 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
8 months ago
abdelbasset jabrane d5f737b6ac Translated using Weblate (Arabic)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ar/
8 months ago
Alex Baker ff33989020 Update version and changelog 8 months ago
Alex Baker 4c01ab2e66 Import backup file in two passes
Import non-task data before loading tasks
8 months ago
Alex Baker 93674075cb Fix crash on search back handler 8 months ago
Alex Baker 6fe8175012 Prevent renaming or deleting the default list 8 months ago
Alex Baker d72b0f352b Fix crash when creating new list 8 months ago
Maksim_220 Кабанов 6b92cbee44 Translated using Weblate (Russian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ru/
8 months ago
renovate[bot] de2aca2877
chore(deps): update plugin ksp to v2.1.20-2.0.1 (#3559)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8 months ago
renovate[bot] 1616d9903d
fix(deps): update dependency com.google.apis:google-api-services-drive to v3-rev20250427-2.0.0 (#3561)
* fix(deps): update dependency com.google.apis:google-api-services-drive to v3-rev20250427-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker 5f1ebd528d Don't create microsoft service on main 8 months ago
Alex Baker 6091410bcd Update version and changelog 8 months ago
Alex Baker 44eac87c9c Fix tests 8 months ago
Alex Baker ac9cdb7120 Initiate sync after signing in to Microsoft To Do 8 months ago
Alex Baker 0dea530c50 Prompt for sync at install time 8 months ago
renovate[bot] 267ebfe86e
fix(deps): update dependency com.google.accompanist:accompanist-permissions to v0.37.3 (#3552)
* fix(deps): update dependency com.google.accompanist:accompanist-permissions to v0.37.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker be3ca88f46 Add microsoft_config for f-droid, fix proguard 8 months ago
Alex Baker eaab2196e7 Fix generic build and remove some non-free deps 8 months ago
Alex Baker c3e10bde94 Add support for microsoft organization accounts 8 months ago
Alex Baker 68d7a02db8 Remove ManageSpaceActivity 8 months ago
தமிழ்நேரம் e48839b314 Translated using Weblate (Tamil)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
8 months ago
renovate[bot] 0296008f8a
fix(deps): update dependency com.google.firebase:firebase-bom to v33.13.0 (#3548)
* fix(deps): update dependency com.google.firebase:firebase-bom to v33.13.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Jose Riha 7c918bbb84 Translated using Weblate (Slovak)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
8 months ago
Alex Baker 202af2d451 Launch new list activities from HomeScreen 8 months ago
Alex Baker a779dc331a Don't check for xml extension for backups 8 months ago
renovate[bot] 8480f03a96
fix(deps): update dependency com.google.apis:google-api-services-tasks to v1-rev20250415-2.0.0 (#3545)
* fix(deps): update dependency com.google.apis:google-api-services-tasks to v1-rev20250415-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] c18296e7d0
fix(deps): update dependency androidx.work:work-runtime-ktx to v2.10.1 (#3541)
* fix(deps): update dependency androidx.work:work-runtime-ktx to v2.10.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] 520fd0cebe
fix(deps): update dependency io.grpc:grpc-kotlin-stub to v1.4.3 (#3543)
* fix(deps): update dependency io.grpc:grpc-kotlin-stub to v1.4.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] bd555f4003
fix(deps): update room to v2.7.1 (#3542)
* fix(deps): update room to v2.7.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
renovate[bot] b4b6abac19
fix(deps): update dependency com.google.apis:google-api-services-drive to v3-rev20250329-2.0.0 (#3537)
* fix(deps): update dependency com.google.apis:google-api-services-drive to v3-rev20250329-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker e578263149 Remove drop shadows to match icons 8 months ago
renovate[bot] b6989ba9a0
fix(deps): update agp to v8.9.2 (#3535)
* fix(deps): update agp to v8.9.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Alex Baker 93d4eab92f Fix viewmodel 8 months ago
Alex Baker 8abf1f0342 Add splash screen 8 months ago
Alex Baker d3fed98e64 Add navigation and HomeScreenDestination 8 months ago
தமிழ்நேரம் e8b8fc0c87 Translated using Weblate (Tamil)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ta/
9 months ago
Fjuro 939bcef641 Translated using Weblate (Czech)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
9 months ago
renovate[bot] d49ee12271
fix(deps): update dagger.hilt to v2.56.2 (#3527)
* fix(deps): update dagger.hilt to v2.56.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
DiamondtipDR 3a05d410b0 Translated using Weblate (Spanish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
9 months ago
renovate[bot] 591998b9fd
chore(deps): update plugin jetbrains-compose to v1.7.3 (#3196)
* chore(deps): update plugin jetbrains-compose to v1.7.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] 5d8b39d8f1
chore(deps): update plugin redacted to v1.13.0 (#3140)
* chore(deps): update plugin redacted to v1.13.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] c445f0dff0
fix(deps): update mockito monorepo to v5.17.0 (#3485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
9 months ago
renovate[bot] 20e696d65d
fix(deps): update kotlin (#3430)
* fix(deps): update kotlin

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
codokie bce545944f
Fix text input alignment/direction (#3489)
* Revert text alignment change

* Set text direction of input fields based on content
9 months ago
leo 72aaf43db5 fix: Back Button closes app after using search #3426 9 months ago
renovate[bot] 966a529a51
Update grpc-java monorepo to v1.72.0 (#3521)
* Update grpc-java monorepo to v1.72.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
Alex Baker 08bf839e95 Fix crash in Intent.flagsToString 9 months ago
Alex Baker 286d031fca Hide start date = due date for OpenTasks sync 9 months ago
renovate[bot] 428d04eb46
Update dependency com.google.android.gms:play-services-maps to v19.2.0 (#3518)
* Update dependency com.google.android.gms:play-services-maps to v19.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
Alex Baker fc6f09f097 Use system language picker on Android 33+ 9 months ago
Maria Eduarda Weiland Machado Bratti dafc677374 Translated using Weblate (Portuguese)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
9 months ago
min7-i 00bf17c9ed Translated using Weblate (German)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
9 months ago
Maria Eduarda Weiland Machado Bratti f622209e97 Translated using Weblate (Portuguese)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/pt/
9 months ago
codokie 6d03cf6a6a
Automirrored icons fix (#3499)
* Fix arrow direction in RTL

* Fix help icon when locale is Hebrew

* Fix help icon in other RTL locales
9 months ago
Jay Tromp cd729bb04c Translated using Weblate (Dutch)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
9 months ago
Nucl3arSnake 7d32ada1e4 Translated using Weblate (Spanish)
Currently translated at 99.8% (654 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
9 months ago
Alex Baker 526107ce1d Fix start date chip when grouping by start date 9 months ago
Hady 858a5475ad Translated using Weblate (Russian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
9 months ago
dedakir923 0c9d2d724a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
9 months ago
renovate[bot] 446fdd817f
Update dependency androidx.compose:compose-bom to v2025.04.00 (#3507)
* Update dependency androidx.compose:compose-bom to v2025.04.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] b833c0cc5d
Update room to v2.7.0 (#3506)
* Update room to v2.7.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] 5499a74dcc
Update dependency androidx.sqlite:sqlite-bundled to v2.5.0 (#3505)
* Update dependency androidx.sqlite:sqlite-bundled to v2.5.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
Alex Baker 6c3185da50 Add missing locales 9 months ago
sobeitnow0 6f0a6787fd Translated using Weblate (Portuguese)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
9 months ago
sobeitnow0 848aad76d6 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
9 months ago
renovate[bot] 1ace1bc618
Update dependency fastlane to v2.227.1 (#3502)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
9 months ago
renovate[bot] cda3e91933
Update dependency com.android.tools:desugar_jdk_libs to v2.1.5 (#3198)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
9 months ago
Xo 2c1246ea5c Translated using Weblate (Hebrew)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/he/
9 months ago
Xo 5731ca2579 Translated using Weblate (Hebrew)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
9 months ago
Xo b04b16e24e Translated using Weblate (Hebrew)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/he/
9 months ago
Xo 53e43b58cd Translated using Weblate (Hebrew)
Currently translated at 99.6% (653 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
9 months ago
Alex Baker 0c7bc22eb9 Merge tag '14.6.2' 9 months ago
Alex Baker 46a6412a34 Update version 9 months ago
Alex Baker 44249ff1c9 Replace auto migration
Room does a foreign key check and it was causing crashes on someones
device
9 months ago
Alex Baker 35e340c936 Reapply "Set minSdk to 26 (Android 8)"
This reverts commit 660b6c8df5.
9 months ago
Alex Baker c4cb9e7d6a Update version and changelog 9 months ago
Alex Baker 137f437d78 Additional CaldavTask indexes 9 months ago
Alex Baker 660b6c8df5 Revert "Set minSdk to 26 (Android 8)"
This reverts commit a909ea53c4.
9 months ago
Alex Baker c186471ff3 Add index on CaldavTask 9 months ago
Alex Baker 0efb341be2 Add 'Create tasks' to debug menu 9 months ago
Jose Riha 001950bba5 Translated using Weblate (Slovak)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
9 months ago
abdelbasset jabrane 56f443666c Translated using Weblate (Arabic)
Currently translated at 95.5% (626 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
9 months ago
Alex Baker a0712b436d Error indicator for alarms when dates are set
If a new task has a due or start date set, but no reminders added, show
an error indicator
9 months ago
Alex Baker 03cfe259f0 Error indicators for relative alarms
Use error colors if a relative start or end alarm is set without a start
or end date
9 months ago
Alex Baker 5692f48e75 Fix populating clock picker 9 months ago
Alex Baker 4ef434e7f4 Fix displaying selected calendar month 9 months ago
elid acab5586fd Translated using Weblate (Hebrew)
Currently translated at 85.4% (560 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
9 months ago
elid ed1044f5ae Translated using Weblate (Hebrew)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/he/
9 months ago
Francesco Saltori ff84f2a9db Translated using Weblate (Italian)
Currently translated at 99.8% (654 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
9 months ago
renovate[bot] 1fef936e55
Update dependency com.google.firebase:firebase-bom to v33.12.0 (#3471)
* Update dependency com.google.firebase:firebase-bom to v33.12.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] 751bba5d01
Update plugin protobuf to v0.9.5 (#3470)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
9 months ago
Don Zouras eee89a6f3a Translated using Weblate (Esperanto)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
9 months ago
Alex Baker 0a121f4d05 Fix grouping by start date descending 9 months ago
Alex Baker 84d00294f9 Change sort icon 9 months ago
Emin Tufan Çetin f4990275d7 Translated using Weblate (Turkish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
9 months ago
Alex Baker 2a182ad910 Merge branch '14.6.1' 9 months ago
Alex Baker 9fd50c117c Update version and changelog 9 months ago
Alex Baker 291cad4e5a Fix grouping by due date descending 9 months ago
Alex Baker f63632e223 Sort group ascending by default 9 months ago
Alex Baker e40c0553e1 Preserve previous sort defaults for existing users 9 months ago
cat 657f79e67a Translated using Weblate (Danish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
9 months ago
cat 7f8ee59595 Translated using Weblate (Danish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/da/
9 months ago
renovate[bot] 56cd8eef72
Update ktor monorepo to v3.1.2 (#3460)
* Update ktor monorepo to v3.1.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
Kachelkaiser 6f0abcb4fa Translated using Weblate (German)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
9 months ago
Alex Baker a909ea53c4 Set minSdk to 26 (Android 8) 9 months ago
renovate[bot] 0d526dc2fd
Update protobuf monorepo to v4.30.2 (#3457)
* Update protobuf monorepo to v4.30.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] 22c05853b0
Update room to v2.7.0-rc03 (#3458)
* Update room to v2.7.0-rc03

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] a53e962c7e
Update dependency androidx.sqlite:sqlite-bundled to v2.5.0-rc03 (#3456)
* Update dependency androidx.sqlite:sqlite-bundled to v2.5.0-rc03

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] 5ed4ce5fa0
Update dependency androidx.datastore:datastore-preferences to v1.1.4 (#3455)
* Update dependency androidx.datastore:datastore-preferences to v1.1.4

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
renovate[bot] ccf1ed5266
Update dependency androidx.compose:compose-bom to v2025.03.01 (#3454)
* Update dependency androidx.compose:compose-bom to v2025.03.01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
Alex Baker 6a529009ae Remove shadow from icons 9 months ago
Alex Baker ea313d9b1f Update version and changelog 9 months ago
renovate[bot] ae8b4b9c73
Update dagger.hilt to v2.56.1 (#3451)
* Update dagger.hilt to v2.56.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
Alex Baker fe7a55f909 Fix tests 9 months ago
Sebastian Gustavsson c567a16f68 Translated using Weblate (Swedish)
Currently translated at 99.8% (659 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
9 months ago
YuzuMikan 01140cd3fd Translated using Weblate (Japanese)
Currently translated at 99.5% (657 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
9 months ago
Pierfrancesco Passerini 8853fb9956 Translated using Weblate (Italian)
Currently translated at 99.3% (656 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
9 months ago
Alex Baker 700e99e547 Set theme color everywhere 9 months ago
Alex Baker e494f7cc13 Don't show start chip if it matches start of day 9 months ago
Alex Baker 326b90800d Don't show start date chip if it matches due date 9 months ago
Alex Baker 1fe59ab50b Add IntentExtensions 9 months ago
Alex Baker d5dbddaab8 Dynamic color setting 9 months ago
Sketch6580 e9eac51726 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
9 months ago
109247019824 9101a4c96c Translated using Weblate (Bulgarian)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
9 months ago
Ihor Hordiichuk dc6c8b0e35 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
9 months ago
dedakir923 4f94becac0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
9 months ago
Priit Jõerüüt 9b6f18e4f1 Translated using Weblate (Estonian)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
9 months ago
renovate[bot] 3111bbd57a
Update agp to v8.9.1 (#3445)
* Update agp to v8.9.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
9 months ago
Alex Baker 78699dd58d Update version and changelog 9 months ago
Alex Baker 055c8e122f Preserve default sort mode for existing widgets 9 months ago
Kaci 7f7469caa8 Translated using Weblate (Hungarian)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
9 months ago
Alex Baker 508852ff49 Update version and changelog 9 months ago
Alex Baker 3be3bb82ad Update intent debug logging 9 months ago
Alex Baker f6e206fbc2 Restart activities so insets are applied correctly 9 months ago
Alex Baker 37fd688af7 Fix navbar padding for 3 button nav in landscape 9 months ago
Alex Baker bd4888390f Restore option to save task on keyboard done 9 months ago
Alex Baker 69f012a4b1 Set default group and sort mode to due date 9 months ago
Alex Baker 61876e881a Start calendar at current selected date 9 months ago
Alex Baker c24d1da566 Apply date changes when dismissing bottom sheet 9 months ago
Alex Baker 41f2f51c37 Add DueDatePicker preview and fix layout issues 9 months ago
Emin Tufan Çetin 7ee578ba64 Translated using Weblate (Turkish)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
9 months ago
Frits van Bommel c1187ab8dc Translated using Weblate (Dutch)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
9 months ago
Florian Trayon 41dcf062dc Translated using Weblate (French)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
9 months ago
Priit Jõerüüt 9c72200dd8 Translated using Weblate (Estonian)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
9 months ago
C. Rüdinger 2c5817665d Translated using Weblate (German)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
9 months ago
Pierfrancesco Passerini b19e86bb3d Translated using Weblate (Italian)
Currently translated at 99.5% (657 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
9 months ago
Sketch6580 7b0dc106ef Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
9 months ago
dedakir923 7bcff7a629 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
9 months ago
109247019824 4158445949 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
9 months ago
Alex Baker 62f8e7fcdb Streaming backup file import 9 months ago
Alex Baker 4c4d5cdc14 Stream data to backup files 9 months ago
Alex Baker 1e3b863dd8 Fix translation errors 9 months ago
Igor Sorocean 0567972488 Translated using Weblate (Romanian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
9 months ago
Igor Sorocean ec77a0dabd Translated using Weblate (Romanian)
Currently translated at 96.3% (639 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
9 months ago
தமிழ்நேரம் 98b411131b Translated using Weblate (Tamil)
Currently translated at 97.4% (646 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
9 months ago
தமிழ்நேரம் 87d27a326e Translated using Weblate (Tamil)
Currently translated at 81.9% (543 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
9 months ago
Alex Baker eb9dd40103 Material date time pickers everywhere
Also remove calendar and clock style preferences. App will keep track of
what type of input you use when you switch
10 months ago
Hady 70ff2ad79f
fix of two minor misbehaviors in date-time handling (#3248) 10 months ago
Alex Baker a90b4b510f Add AppUpdatedBanner 10 months ago
renovate[bot] 07f1677d1a
Update dependency com.google.firebase:firebase-bom to v33.11.0 (#3432)
* Update dependency com.google.firebase:firebase-bom to v33.11.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Alex Baker dab03ff580 Update version and changelog 10 months ago
Alex Baker c78ec022a5 Add buttons to date picker bottom sheet 10 months ago
renovate[bot] de42915ced
Update dagger.hilt to v2.56 (#3429)
* Update dagger.hilt to v2.56

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 9b160aed5b
Update dependency com.google.apis:google-api-services-tasks to v1-rev20250316-2.0.0 (#3428)
* Update dependency com.google.apis:google-api-services-tasks to v1-rev20250316-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Alex Baker 33a7a0a53f Compose date time pickers 10 months ago
abdelbasset jabrane 2f42d0ad28 Translated using Weblate (Arabic)
Currently translated at 93.8% (622 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
10 months ago
abdelbasset jabrane 4540352645 Translated using Weblate (Arabic)
Currently translated at 78.7% (26 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ar/
10 months ago
renovate[bot] ce6259109f
Update mockito monorepo to v5.16.1 (#3420)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
10 months ago
Alex Baker 2a5544b66f Remove 'Start of week' preference 10 months ago
Alex Baker 9941c0bd8d Update version and changelog 10 months ago
Clouds Liberty a561fb63f4 Translated using Weblate (Malayalam)
Currently translated at 15.0% (100 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ml/
10 months ago
GREAT DNG 6098c7e449 Translated using Weblate (Russian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
10 months ago
Clouds Liberty 894e347e91 Translated using Weblate (Malayalam)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ml/
10 months ago
Alex Baker 5427305e09 Check for tasks.org accounts via caldav 10 months ago
Alex Baker fb6af08917 Upgrade reduces beg cooldown 10 months ago
renovate[bot] 827c3fdd6b
Update dependency androidx.compose:compose-bom to v2025.03.00 (#3415)
* Update dependency androidx.compose:compose-bom to v2025.03.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Alex Baker 9e1dad7a02 Remove HingePolicy.AlwaysAvoid 10 months ago
renovate[bot] e3d826883b
Update protobuf monorepo to v4.30.1 (#3413)
* Update protobuf monorepo to v4.30.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 8c07489fe5
Update dependency androidx.compose.material3.adaptive:adaptive-navigation-android to v1.1.0 (#3417)
* Update dependency androidx.compose.material3.adaptive:adaptive-navigation-android to v1.1.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 0af5be4a36
Update dependency androidx.compose.material3.adaptive:adaptive-layout-android to v1.1.0 (#3416)
* Update dependency androidx.compose.material3.adaptive:adaptive-layout-android to v1.1.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] d90a4398a6
Update dependency androidx.sqlite:sqlite-bundled to v2.5.0-rc02 (#3412)
* Update dependency androidx.sqlite:sqlite-bundled to v2.5.0-rc02

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] c51908c235
Update room to v2.7.0-rc02 (#3414)
* Update room to v2.7.0-rc02

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] da2b4520bb Update dependency fastlane to v2.227.0 10 months ago
bittin1ddc447d824349b2 33298c435d Translated using Weblate (Swedish)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
10 months ago
Alex Baker 2c5fcca38d Fix content padding on drawer 10 months ago
Øjvind Fritjof Arnfred b012c41683 Translated using Weblate (Danish)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
10 months ago
Øjvind Fritjof Arnfred 29d4c8c952 Translated using Weblate (Danish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/da/
10 months ago
தமிழ்நேரம் 6e5a79d83c Translated using Weblate (Tamil)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ta/
10 months ago
Kaci 47fce71be7 Translated using Weblate (Hungarian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
10 months ago
renovate[bot] 0e40be1d19
Update dependency androidx.compose:compose-bom to v2025 (#3262)
* Update dependency androidx.compose:compose-bom to v2025

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 5198e8a7a4
Update mockito monorepo to v5.16.0 (#3383)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
10 months ago
Alex Baker 1455914d2f Update version and changelog 10 months ago
Alex Baker d3e2fe0ed4 Fix microsoft authentication crash 10 months ago
Alex Baker 037ed76589 Fix crash when applying insets 10 months ago
renovate[bot] 06829dd859
Update dependency com.google.apis:google-api-services-drive to v3-rev20250220-2.0.0 (#3396)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250220-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
dedakir923 ce25cc9c44 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
10 months ago
dedakir923 c906f6d2f3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/pt_BR/
10 months ago
Ihor Hordiichuk bfc9669ac1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
10 months ago
Don Zouras 207ff9e134 Translated using Weblate (Esperanto)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
10 months ago
109247019824 a2ddeeabae Translated using Weblate (Bulgarian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
10 months ago
Alex Baker 1a10b0d820 Update version and changelog 10 months ago
Alex Baker 80d1ab66f9 Fix special placeholder characters 10 months ago
Abilash S 0a4e57524e Translated using Weblate (Kannada)
Currently translated at 6.3% (42 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/kn/
10 months ago
Pierfrancesco Passerini 9a469a1a9d Translated using Weblate (Italian)
Currently translated at 99.5% (662 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
10 months ago
Florian Trayon 783f335488 Translated using Weblate (French)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
10 months ago
ColorfulRhino 68e8342f43 Translated using Weblate (German)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
10 months ago
Frits van Bommel 2052f1232b Translated using Weblate (Dutch)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
10 months ago
大王叫我来巡山 1e479c36e4 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
10 months ago
Priit Jõerüüt 5f7943478d Translated using Weblate (Estonian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
10 months ago
Mamad Zahiri a19a76d5a4 Translated using Weblate (Persian)
Currently translated at 33.6% (224 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fa/
10 months ago
Alex Baker 886e848172 Load icons off main 10 months ago
Alex Baker 1608aaeb54 Fix some filter stability issues 10 months ago
Alex Baker 0d2bf1a3ff Use hilt @TestInstallIn 10 months ago
renovate[bot] c1cbc3fc7d
Update horologist to v0.6.23 (#3389)
* Update horologist to v0.6.23

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 0a9a158c55
Update dependency com.google.apis:google-api-services-tasks to v1-rev20250302-2.0.0 (#3388)
* Update dependency com.google.apis:google-api-services-tasks to v1-rev20250302-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 9903d36908
Update protobuf monorepo to v4.30.0 (#3387)
* Update protobuf monorepo to v4.30.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] a341d51b5e
Update grpc-java monorepo to v1.71.0 (#3386)
* Update grpc-java monorepo to v1.71.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 5103325f06
Update agp to v8.9.0 (#3385)
* Update agp to v8.9.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Alex Baker 012a0e5949 Update version and changelog 10 months ago
Alex Baker 870ecadc56 Fix drawer recompositions 10 months ago
Alex Baker cf5f810f18 Replace sealed interfaces 10 months ago
Alex Baker 3cd169dd87 Update compose metrics 10 months ago
Alex Baker bc5e102e06 Fix recursive self-loop 10 months ago
Alex Baker 2ac328e1df Bottom search bar on all Android levels 10 months ago
Alex Baker 1d44605539 Move settings to top toolbar 10 months ago
Alex Baker d306dda2f9 Remove GREY_900 theme, fix black/white theme 10 months ago
Alex Baker aafe4b37b0 Subtask count includes all descendents 10 months ago
Alex Baker bfea931495 Completed subtasks at bottom 10 months ago
Alex Baker b411441ba9 Move search button to bottom bar 10 months ago
renovate[bot] 317aae1e3e
Update dependency gradle to v8.13 (#3381)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 2208e7149a
Update dependency com.google.firebase:firebase-bom to v33.10.0 (#3380)
* Update dependency com.google.firebase:firebase-bom to v33.10.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Alex Baker 454137cad8 Update version and changelog 10 months ago
Alex Baker ba66deaddc Material 3 - WIP 10 months ago
renovate[bot] 759b418dfb
Update plugin ksp to v2.1.10-1.0.31 (#3378)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 62e83555c2
Update room to v2.7.0-rc01 (#3379)
* Update room to v2.7.0-rc01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] d6c8575926
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.33.1 (#3377)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.33.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 54ef54f97e
Update dependency androidx.sqlite:sqlite-bundled to v2.5.0-rc01 (#3376)
* Update dependency androidx.sqlite:sqlite-bundled to v2.5.0-rc01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 66ad4ca561
Update dependency androidx.datastore:datastore-preferences to v1.1.3 (#3375)
* Update dependency androidx.datastore:datastore-preferences to v1.1.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] eae848b1cb
Update dependency androidx.constraintlayout:constraintlayout to v2.2.1 (#3374)
* Update dependency androidx.constraintlayout:constraintlayout to v2.2.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] 8b19d054a0
Update dependency androidx.activity:activity-compose to v1.10.1 (#3373)
* Update dependency androidx.activity:activity-compose to v1.10.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] f40a7d625e
Update agp to v8.8.2 (#3372)
* Update agp to v8.8.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Languages add-on b40bec1e50 Added translation using Weblate (Nahuatl) 10 months ago
Benjamin Bruce 0e65d2a57f Translated using Weblate (Nahuatl)
Currently translated at 0.1% (1 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nah/
10 months ago
Benjamin Bruce 3c6526db01 Added translation using Weblate (Nahuatl) 10 months ago
Alex Baker cafe3abf23 Ignore relationship loops created remotely 10 months ago
Alex Baker 32c4fe2511 Only check path on subtasks 10 months ago
Alex Baker e796da6e37 Prevent infinite recursion in queries 10 months ago
renovate[bot] 3364e8c8ee
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.33.0 (#3365)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.33.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
M_Haruki cb4be5f1cf Translated using Weblate (Japanese)
Currently translated at 98.7% (657 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
10 months ago
renovate[bot] a94e136b8c
Update ktor monorepo to v3.1.1 (#3364)
* Update ktor monorepo to v3.1.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Alex Baker 586dbacb0f Update caldav sync error message logging 10 months ago
Alex Baker 8867b79b70 Fix crash on null displayName in Microsoft To Do 10 months ago
github-actions[bot] ed9609bf77 Update dependency diffs 10 months ago
Alex Baker d43bc55c02 Side navigation drawer 10 months ago
Alex Baker 840049b206 Refactoring TaskEditControlFragments 10 months ago
Alex Baker 2d8df0bb67 Refactoring TaskEditFragment 10 months ago
M_Haruki ea08976c06 Translated using Weblate (Japanese)
Currently translated at 97.7% (650 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
10 months ago
M_Haruki 58423824ca Translated using Weblate (Japanese)
Currently translated at 96.8% (644 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
10 months ago
Alex Baker 80168565d8 Don't update Android task description 10 months ago
renovate[bot] 9724590703
Update dependency com.google.apis:google-api-services-drive to v3-rev20250216-2.0.0 (#3359)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250216-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] c7ddb524a2
Update dependency com.google.accompanist:accompanist-permissions to v0.37.2 (#3357)
* Update dependency com.google.accompanist:accompanist-permissions to v0.37.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
renovate[bot] b6c99b234f
Update dependency com.google.android.gms:play-services-maps to v19.1.0 (#3356)
* Update dependency com.google.android.gms:play-services-maps to v19.1.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Andrey Mukamolov 9bd2f40da9 Translated using Weblate (Belarusian)
Currently translated at 13.5% (90 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/be/
10 months ago
M_Haruki 5c4b772931 Translated using Weblate (Japanese)
Currently translated at 96.0% (639 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
10 months ago
M_Haruki 079d5b2d07 Translated using Weblate (Japanese)
Currently translated at 95.1% (633 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
10 months ago
renovate[bot] 21e6605f3c
Update dependency com.google.accompanist:accompanist-permissions to v0.37.1 (#3353)
* Update dependency com.google.accompanist:accompanist-permissions to v0.37.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
10 months ago
Alex Baker d88541e0a6 Use default scaffold width 11 months ago
Andrey Mukamolov 6f9cffb8de Translated using Weblate (Belarusian)
Currently translated at 10.8% (72 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/be/
11 months ago
Andrey Mukamolov 86ebbf022c Translated using Weblate (Belarusian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/be/
11 months ago
Alex Baker f6d243e929 Update version and changelog 11 months ago
Alex Baker c21c65b62b Fix tests 11 months ago
renovate[bot] 16a16500fb
Update dependency com.google.firebase:firebase-bom to v33.9.0 (#3344)
* Update dependency com.google.firebase:firebase-bom to v33.9.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] 89de501bf7
Update ktor monorepo to v3.1.0 (#3345)
* Update ktor monorepo to v3.1.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
Alex Baker dce5433837 Add imePadding to edit screen 11 months ago
Alex Baker 9b80a02d03 Update TaskEditViewModel initialization 11 months ago
Alex Baker 69b189b29c Add device info to logs 11 months ago
Alex Baker 1b84c13937 Add logging for uncaught exceptions 11 months ago
renovate[bot] 6d177f643e
Update wearCompose to v1.4.1 (#3343)
* Update wearCompose to v1.4.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] a8e4923ecd
Update ksp and kotlinx.datetime (#3342)
* Update kotlin

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] 74cdc0ba81
Update dependency com.google.apis:google-api-services-drive to v3-rev20250210-2.0.0 (#3341)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250210-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] 050841d202
Update dependency androidx.fragment:fragment-compose to v1.8.6 (#3339)
* Update dependency androidx.fragment:fragment-compose to v1.8.6

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] 7327ca464e
Update dependency androidx.paging:paging-compose to v3.3.6 (#3340)
* Update dependency androidx.paging:paging-compose to v3.3.6

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] d2fad22922
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.8 (#3338)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.8

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] d4434c4065
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.32.1 (#3290)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.32.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] 9277f61964
Update agp to v8.8.1 (#3336)
* Update agp to v8.8.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
Alex Baker 00fadd10e1 Fixed back handler when resuming from background 11 months ago
Alex Baker 77eaf219b4 Fix test compile 11 months ago
renovate[bot] 7b930f11be
Update dependency com.google.firebase:firebase-crashlytics-gradle to v3.0.3 (#3323)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
11 months ago
Alex Baker 3bcdc773ba room 2.7.0-beta01, sqlite 2.5.0-beta01 11 months ago
Alex Baker 05389f8b83 Fix navigation issues 11 months ago
Alex Baker c9c984142e Set busy timeout on all connections 11 months ago
github-actions[bot] f72dd1fe74 Update dependency diffs 11 months ago
Alex Baker 3ada78b0f1 Fix saving files to Nextcloud 11 months ago
Alex Baker 1f659c3dc6 Adaptive layout 11 months ago
Ihor Hordiichuk c48cfc32d1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
11 months ago
ColorfulRhino 145e078a5e Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
Alex Baker 289f73f72b Fix comment bar 11 months ago
Alex Baker b6426cc2fb Remove extra translations 11 months ago
Alex Baker 6ed85f15bc Use enableEdgeToEdge in MainActivity 11 months ago
Alex Baker 5409173830 Remove top app bar and collapsing bar preferences 11 months ago
Priit Jõerüüt c471a94a0d Translated using Weblate (Estonian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
11 months ago
Jose Riha f44b6223fe Translated using Weblate (Slovak)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
11 months ago
Anonymous 615598b434 Translated using Weblate (Nepali)
Currently translated at 21.2% (7 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ne/
11 months ago
Alex Baker 0b9a168f69 Fix cancel button in notification dialog 11 months ago
Alex Baker 809c5622f9 Fix list chip when subtask in top level 11 months ago
Alex Baker 1a1eefbbab Update version and changelog 11 months ago
Alex Baker 6fe9b0b255 RIP Flipper 11 months ago
Alex Baker 7ed406fbbc
Update CHANGELOG.md 11 months ago
Alex Baker 1385524ee8 Log widget clicks 11 months ago
Alex Baker 8a0014a50d Fix ANRs in AppWidgetManager 11 months ago
Alex Baker e8f5a72a08 Improve recursive task list query 11 months ago
Alex Baker 11f55aa702 Log SQL queries in debug mode 11 months ago
Alex Baker c0067091fa Move some work outside of the transaction 11 months ago
Alex Baker 349ff9451f Update version and changelog 11 months ago
Alex Baker 281d929ede Update logging 11 months ago
Alex Baker 7ede174adf Use platform SQLite on Android 11+ 11 months ago
Sagun Khatri a35176d093 Translated using Weblate (Nepali)
Currently translated at 11.0% (74 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ne/
11 months ago
Kachelkaiser 7eb91be1a0 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
Sagun Khatri 0e28b8a028 Translated using Weblate (Nepali)
Currently translated at 9.0% (3 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ne/
11 months ago
Alex Baker 7aca6c0743 Update version and changelog 11 months ago
Alex Baker 88217e50c7 Improve updating parents query 11 months ago
Alex Baker 0098c69f67 Redact google tasks requests 11 months ago
Alex Baker 5b5ba97bb2 Limit chip updates 11 months ago
Kachelkaiser c8d1d379a8 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
ColorfulRhino 68d856914f Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
Alex Baker 6e0105683e Update version and changelog 11 months ago
Alex Baker 5d2e25ec4e Fix recursive query 11 months ago
Alex Baker 951d4de52d Fix test compile 11 months ago
Alex Baker 8a27f5df4b Use transaction annotation 11 months ago
Kachelkaiser 8ef23c1593 Translated using Weblate (German)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/de/
11 months ago
Alex Baker 1b031134db Add collapsed state to header 11 months ago
Priit Jõerüüt 9ab75fcfd2 Translated using Weblate (Estonian)
Currently translated at 88.1% (590 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
11 months ago
Kachelkaiser 96b5cbaf16 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
Alex Baker cc398b2b3d Update version and changelog 11 months ago
Alex Baker f0cd4644c1 Improved recursive query 11 months ago
Alex Baker 7c1ac86e33 Use BundledSQLiteDriver again 11 months ago
renovate[bot] 728029e949
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.7 (#3306)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.7

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
Alex Baker defb9f76ce Don't update drawer unless its open 11 months ago
Alex Baker 69a5376dde Room 2.7.0-alpha13 11 months ago
renovate[bot] 44ba64e06b Update plugin ksp to v2.1.10-1.0.29 11 months ago
github-actions[bot] 1bbe171921 Update dependency diffs 11 months ago
renovate[bot] e62521474c Update kotlin to v2.1.10 11 months ago
Nick Wick e907671e9a Translated using Weblate (Swedish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
11 months ago
Kachelkaiser 65333d2930 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
Kachelkaiser 3f276028ae Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
C. Rüdinger 35b282b574 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
Kachelkaiser 853fdc10a9 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
ERYpTION 3f8a611277 Translated using Weblate (Danish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/da/
11 months ago
Alex Baker a7e860164b Update version and changelog 11 months ago
Alex Baker 04c97354f9 Additional logging 11 months ago
Alex Baker 91eafc80b4 Remove unused method in OpenTaskDao 11 months ago
Alex Baker 429ace38ee Reduce unnecessary notification summary updates 11 months ago
Alex Baker 87f6ad01f2 Log preference changes 11 months ago
Alex Baker e7396c39e6 Move useReaderConnection to content provider 11 months ago
Alex Baker bd550f68eb Separate timings for building query 11 months ago
Alex Baker 9016a7b628 Use ColumnInfo for recursive fields 11 months ago
Alex Baker 70dd8932a9 Use RoomRawQuery 11 months ago
Sagun Khatri 803a005dd8 Translated using Weblate (Nepali)
Currently translated at 0.8% (6 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ne/
11 months ago
Sunjae Choi d4cd7cd4d7 Translated using Weblate (Korean)
Currently translated at 99.2% (664 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
11 months ago
ERYpTION 80e468f3e3 Translated using Weblate (Danish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
11 months ago
renovate[bot] 2b6ccb8f49
Update dependency com.google.apis:google-api-services-drive to v3-rev20250122-2.0.0 (#3295)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20250122-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
renovate[bot] 0da5e98402
Update dependency gradle to v8.12.1 (#3294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
11 months ago
Priit Jõerüüt c8e34e3b61 Translated using Weblate (Estonian)
Currently translated at 79.2% (530 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
11 months ago
ColorfulRhino a902ae2cbb Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
C. Rüdinger 703f7d58d9 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
ColorfulRhino aa6a5a1892 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
C. Rüdinger 702bee14a5 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
11 months ago
Jose Riha 8bcb4384ab Translated using Weblate (Slovak)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
11 months ago
Pierfrancesco Passerini d8dfeac3c6 Translated using Weblate (Italian)
Currently translated at 99.4% (665 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
11 months ago
renovate[bot] 7a82100b43
Update grpc-java monorepo to v1.70.0 (#3289)
* Update grpc-java monorepo to v1.70.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
11 months ago
Alex Baker 86807a433b Update version and changelog 11 months ago
Alex Baker 274111f286 Revert database improvements
Too many database locked crashes
https://issuetracker.google.com/issues/380088809
11 months ago
Pierfrancesco Passerini 828c5872b3 Translated using Weblate (Italian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/it/
11 months ago
Priit Jõerüüt 970d49ac06 Translated using Weblate (Estonian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/et/
11 months ago
hasak 39f593da5d Translated using Weblate (Bosnian)
Currently translated at 16.2% (109 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
11 months ago
Pierfrancesco Passerini 20b69b798b Translated using Weblate (Italian)
Currently translated at 99.1% (663 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
11 months ago
Don 9c8afbd99f Translated using Weblate (Estonian)
Currently translated at 75.1% (503 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
11 months ago
Priit Jõerüüt 484ef470b5 Translated using Weblate (Estonian)
Currently translated at 75.1% (503 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
11 months ago
Priit Jõerüüt 7270b225d7 Translated using Weblate (Estonian)
Currently translated at 70.2% (470 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
12 months ago
Sagun Khatri 4cb4a1d9be Translated using Weblate (Nepali)
Currently translated at 0.7% (5 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ne/
12 months ago
Priit Jõerüüt 9bd64e5c32 Translated using Weblate (Estonian)
Currently translated at 70.1% (469 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
12 months ago
Alex Baker 44ed6ea444 Clean up ComposeViews in fragments 12 months ago
Alex Baker ae40b31945 Merge branch '14.4.5' 12 months ago
Sagun Khatri bf80eb3bf9 Added translation using Weblate (Nepali) 12 months ago
Languages add-on 2e779b17a5 Added translation using Weblate (Nepali) 12 months ago
Alex Baker 6499dc7385 Update version and changelog 12 months ago
Alex Baker fb72f10153 Throttle OpenTask sync requests 12 months ago
Alex Baker 4c3ba4cb72 Throttle drawer updates 12 months ago
Alex Baker f6805f325c Minor recursive query reformatting 12 months ago
Alex Baker ac9bb17f83 Use bundled sqlite driver for tests 12 months ago
Alex Baker e979573e7e Fix test compilation 12 months ago
Don Zouras fa29cb9ff4 Translated using Weblate (Esperanto)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
12 months ago
Alex Baker e21ea78f66 Remove temp table from recursive query 12 months ago
Alex Baker bb61bc1ab3 Update version and changelog 12 months ago
Alex Baker f588551bca Fix list pickers 12 months ago
Alex Baker d31c7a820b Use bundled sqlite library 12 months ago
Alex Baker 05896fd46a Update version and changelog 12 months ago
Ihor Hordiichuk 48dbebbe04 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
12 months ago
Emin Tufan Çetin 0048262158 Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
12 months ago
Alex Baker 56e95749f6 Preserve repeating alarms when copying tasks 12 months ago
Alex Baker f4ecbdf93b Invalidate task list on resume 12 months ago
Alex Baker eac13c07a3 Fix chips for local lists 12 months ago
Alex Baker 4698b0f372 Fix change loss when completing from edit screen 12 months ago
C. Rüdinger 2f1e36a1be Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
12 months ago
renovate[bot] 839e92a3f7
Update dependency com.google.firebase:firebase-bom to v33.8.0 (#3264)
* Update dependency com.google.firebase:firebase-bom to v33.8.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
renovate[bot] 1a8f88e9a2
Update grpc-java monorepo to v1.69.1 (#3263)
* Update grpc-java monorepo to v1.69.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
Alex Baker 5e7c145eec Update version and changelog 12 months ago
Alex Baker 17f305379c Fix crash for missing account in getAnyList 12 months ago
renovate[bot] 1140c28cff
Update dependency androidx.recyclerview:recyclerview to v1.4.0 (#3261)
* Update dependency androidx.recyclerview:recyclerview to v1.4.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
renovate[bot] d7bccd69c3
Update dependency androidx.activity:activity-compose to v1.10.0 (#3260)
* Update dependency androidx.activity:activity-compose to v1.10.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
renovate[bot] 1b5104c5e6
Update dependency androidx.datastore:datastore-preferences to v1.1.2 (#3259)
* Update dependency androidx.datastore:datastore-preferences to v1.1.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
Milo Ivir afde8ef461 Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
12 months ago
Pierfrancesco Passerini 57ef5845cf Translated using Weblate (Italian)
Currently translated at 98.2% (657 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
12 months ago
CennoxX c1945f1bc1 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
12 months ago
Kaci 17aadb20bc Translated using Weblate (Hungarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
12 months ago
Florian Trayon e50aaf4bba Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
12 months ago
C. Rüdinger ce6a85cef4 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
12 months ago
Alex Baker 2ec8badfe4 Default to 'name your price' 12 months ago
Don Zouras 0be76dd0da Translated using Weblate (Esperanto)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
12 months ago
Sketch6580 c6258fe2f9 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
12 months ago
Hady 57ecf9a8f0 Translated using Weblate (Russian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
12 months ago
Frits van Bommel 44f962f6dd Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
12 months ago
Ihor Hordiichuk 0c789ca59a Translated using Weblate (Ukrainian)
Currently translated at 97.3% (651 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
12 months ago
Jose Riha ccdae2f814 Translated using Weblate (Slovak)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
12 months ago
Hady dbfa0d410d Translated using Weblate (Russian)
Currently translated at 98.8% (661 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
12 months ago
109247019824 45502adf4f Translated using Weblate (Bulgarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
12 months ago
renovate[bot] 1921153e16 Update dependency fastlane to v2.226.0 12 months ago
Jose Riha 8cd293a355 Translated using Weblate (Slovak)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
12 months ago
Jose Riha 7e6ee2383b Translated using Weblate (Slovak)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
12 months ago
Hady 4ef72d5047 Translated using Weblate (Russian)
Currently translated at 97.9% (654 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
12 months ago
Pierfrancesco Passerini 765e8e4aad Translated using Weblate (Italian)
Currently translated at 98.3% (657 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
12 months ago
Jose Riha 6cc6292f01 Translated using Weblate (Slovak)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sk/
12 months ago
Alex Baker cb9160025f Update version and changelog 12 months ago
Alex Baker 600492942b Use @jheld's color picker fork 12 months ago
Alex Baker a20f1ae0ba Fix editing filter with gtasks filter criteria 12 months ago
Alex Baker 38cae54103 Dismiss microsoft/gtasks banners on action 12 months ago
Alex Baker 1353fba9fd Disable multilevel subtasks for Microsoft To Do 12 months ago
Emin Tufan Çetin 07ea6489a6 Translated using Weblate (Turkish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
12 months ago
Jose Riha 06581d6183 Translated using Weblate (Slovak)
Currently translated at 93.4% (624 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
12 months ago
Laurent FAVOLE c6e17d5aaf Translated using Weblate (French)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
12 months ago
Emin Tufan Çetin a4749a0855 Translated using Weblate (Turkish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/tr/
12 months ago
Jose Riha 5f3ca0581a Translated using Weblate (Slovak)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sk/
12 months ago
Jose Riha 1da304d8e7 Translated using Weblate (Slovak)
Currently translated at 77.3% (517 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
12 months ago
ColorfulRhino 59d8f0a68c Translated using Weblate (German)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
12 months ago
AtmosphericIgnition 65263bcae3 Translated using Weblate (Czech)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/cs/
12 months ago
AtmosphericIgnition 56caf9eb18 Translated using Weblate (Czech)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
12 months ago
Don Zouras 794655a231 Translated using Weblate (Esperanto)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
12 months ago
renovate[bot] b354e7c107
Update dependency com.google.dagger:hilt-android-testing to v2.55 (#3237)
* Update dependency com.google.dagger:hilt-android-testing to v2.55

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
renovate[bot] 9d3070dd76
Update agp to v8.8.0 (#3236)
* Update agp to v8.8.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
renovate[bot] f634c6952f
Update protobuf to v4.29.3 (#3235)
* Update protobuf to v4.29.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
Colorful Rhino 974d2d0510 Translated using Weblate (German)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/de/
12 months ago
Colorful Rhino 715c8cb702 Translated using Weblate (German)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
12 months ago
109247019824 be984a1011 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
12 months ago
Colorful Rhino 309fc42e2b Translated using Weblate (German)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
12 months ago
大王叫我来巡山 a5cc735c37 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
12 months ago
bittin1ddc447d824349b2 584ff8fe48 Translated using Weblate (Swedish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
12 months ago
Jose Riha 2fc301a5f4 Translated using Weblate (Slovak)
Currently translated at 62.5% (418 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
12 months ago
bittin1ddc447d824349b2 ac0f2feddc Translated using Weblate (Swedish)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
12 months ago
Pierfrancesco Passerini e71de27797 Translated using Weblate (Italian)
Currently translated at 99.0% (657 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
12 months ago
Florian Trayon cc0f5ba490 Translated using Weblate (French)
Currently translated at 98.6% (654 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
12 months ago
Sketch6580 9c97e3ddef Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/zh_Hans/
12 months ago
renovate[bot] b4fa64579e
Update dependency com.google.apis:google-api-services-tasks to v1-rev20250105-2.0.0 (#3230)
* Update dependency com.google.apis:google-api-services-tasks to v1-rev20250105-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
Alex Baker 2f1dff04f1 Update version and changelog 12 months ago
Alex Baker b21472da47 Warn microsoft and google tasks users 12 months ago
Don Zouras 35de97b130 Translated using Weblate (Esperanto)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
12 months ago
Sketch6580 4c216d77bb Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
12 months ago
Frits van Bommel cd66a87b06 Translated using Weblate (Dutch)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
12 months ago
Kaci bc0f5b7ac9 Translated using Weblate (Hungarian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
12 months ago
C. Rüdinger 55dd479779 Translated using Weblate (German)
Currently translated at 99.8% (662 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
12 months ago
109247019824 1af581efe7 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
12 months ago
Alex Baker 5622fd8c09 Fix test compile 12 months ago
Alex Baker 791041cc5d Refactor task list banners 12 months ago
renovate[bot] 80f24fdc17
Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.8.0 (#3225)
* Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.8.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
12 months ago
Alex Baker 22c85c379f Update version and changelog 12 months ago
Sebastian Gustavsson 343b06fefa Translated using Weblate (Swedish)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
12 months ago
Alex Baker 12e4e39ec6 Fix displaying multiline titles 12 months ago
Alex Baker 4c6de03135 Update version and changelog 12 months ago
Alex Baker 7649e59203 Fix long press referencing old comment 12 months ago
Alex Baker d09e013ac0 Merge branch 'TonSilver-develop' 12 months ago
renovate[bot] 10c2614fcf Update mockito monorepo to v5.15.2 12 months ago
Don Zouras f674a54182 Translated using Weblate (Esperanto)
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
12 months ago
大王叫我来巡山 4f0eb9f17a Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
12 months ago
Alex Baker 435d276a64 Add configuration option for newlines in title 12 months ago
Don Zouras 8493175733 Translated using Weblate (Esperanto)
Currently translated at 100.0% (660 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
12 months ago
AtmosphericIgnition 450d33276f Translated using Weblate (Czech)
Currently translated at 99.3% (656 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
12 months ago
Alex Baker d6d069f24b Update version and changelog 1 year ago
Alex Baker 4b81ff5d55 Fix tests 1 year ago
Anonymous 84669a39bc Translated using Weblate (Bosnian)
Currently translated at 12.1% (4 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/bs/
1 year ago
Pierfrancesco Passerini 10b96f7029 Translated using Weblate (Italian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/it/
1 year ago
Alex Baker 79f329bb53 Add preference for Microsoft To Do sync 1 year ago
Alex Baker 95ae988fd7 Added TaskEditScreen - WIP 1 year ago
Alex Baker 833eb81114 Microsoft Graph API doesn't support order 1 year ago
Alex Baker 8edf0de950 Fix tests 1 year ago
Alex Baker 0af6ac3cf4 Prevent menu search bar from auto focusing 1 year ago
Alex Baker 163cc29471 Don't allow empty shortcut labels 1 year ago
Alex Baker efbdfd6fda Remove GOOGLE_TASKS subheader type 1 year ago
Alex Baker dd06decc40 Remove GtasksFilter 1 year ago
Alex Baker e5d6723e23 Remove GoogleTaskListDao 1 year ago
Alex Baker 67b6a6ef64 Fix donation nagging 1 year ago
Alex Baker c227fcc39a Add cost info to sync account dialog 1 year ago
Alex Baker 719c117779 Remove paywall from Google Tasks & Microsoft To Do 1 year ago
Alex Baker a468db8c9c Remove paywall from tasker 1 year ago
Alex Baker bc5823f857 Update version and changelog 1 year ago
Alex Baker e74920cc3d Fix scrolling in custom filter list pickers 1 year ago
Alex Baker 53209226a0 Microsoft To Do checklist support 1 year ago
Alex Baker 74c69a0799 Don't cancel bundle for single notification 1 year ago
Alex Baker 983727cbc8 Microsoft sync - WIP 1 year ago
Alex Baker 8475be4683 Change microsoft test file extensions 1 year ago
Sunjae Choi c32f1aead1 Translated using Weblate (Korean)
Currently translated at 99.8% (659 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
1 year ago
Anton Serebryakov ecb129d5d4 Comment: copy to clipboard (on long tap) 1 year ago
Pierfrancesco Passerini 09e3469572 Translated using Weblate (Italian)
Currently translated at 99.5% (657 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
Florian Trayon e35cac5f9e Translated using Weblate (French)
Currently translated at 99.0% (654 of 660 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
1 year ago
Alex Baker 084a66c630 Add description test, redact descriptions 1 year ago
Alex Baker d1305f67bb Add ktor logging 1 year ago
Alex Baker df153da8cf Use local time zone for microsoft tasks 1 year ago
大王叫我来巡山 fc04f722fb Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
1 year ago
Frits van Bommel 11d071ad30 Translated using Weblate (Dutch)
Currently translated at 99.0% (659 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
1 year ago
Paul Rogalski b5e29ff728 Translated using Weblate (German)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
1 year ago
109247019824 4d7d7e4680 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
1 year ago
Alex Baker 343312d67d Redact task and task list titles 1 year ago
Alex Baker 0ba7753437 Replace retrofit with ktor 1 year ago
Alex Baker ec75c8c24c Stop refreshing when there are no tasks 1 year ago
Alex Baker e59b5cfdc7 Minor microsoft sync changes 1 year ago
Alex Baker 43f4465d41 Remove nullable from parameter 1 year ago
Alex Baker aa477a7b11 vtodo cache improvements 1 year ago
Alex Baker f17a287e4f Fix parameter name 1 year ago
Alex Baker 8658123223 Fix compilation 1 year ago
bittin1ddc447d824349b2 fdca6908f3 Translated using Weblate (Swedish)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
1 year ago
Alex Baker 4e0ed50e08 Remove colorState from list settings viewmodel 1 year ago
Alex Baker a4cbbd2ed2 Remove option to override map theme 1 year ago
Alex Baker d6266226b2 Remove option to disable desaturation 1 year ago
Alex Baker cc64952032 Fix edit screen disappearing on rotation 1 year ago
Alex Baker 0d14bb2815 Update version and changelog 1 year ago
Alex Baker 7a51e72ca4 Ensure unique broadcasts 1 year ago
Alex Baker f4863b813a Add "Add widget to home screen" to list settings 1 year ago
Alex Baker 1d74527bc4 Add 'shortcut' to 'Add shortcut to home screen' 1 year ago
Alex Baker 60a9b018ec Fix state loss issues in list settings activities 1 year ago
Alex Baker e48f7e61c3 Report missing icons 1 year ago
Alex Baker 8ac6147302 Map missing icon 1 year ago
Alex Baker d39a63d590 Update version and changelog 1 year ago
Alex Baker 3191de2473 Fix nested scrolling crash 1 year ago
Alex Baker 761ba583b5 "Add to home screen" shortcut in list settings 1 year ago
Alex Baker ece1fd4ef3 Convert list settings to use scaffold 1 year ago
Alex Baker b3f29dc0fb Fix deleting lists 1 year ago
Pierfrancesco Passerini 932d9eec75 Translated using Weblate (Italian)
Currently translated at 99.8% (662 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
109247019824 f62c1f784e Translated using Weblate (Bulgarian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
1 year ago
大王叫我来巡山 7ad5463619 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
1 year ago
renovate[bot] 1550719ac6
Update dependency com.google.apis:google-api-services-drive to v3-rev20241206-2.0.0 (#3203)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20241206-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker b2f39bd7e3 Update version and changelog 1 year ago
Alex Baker c67263392f Fix generic compile 1 year ago
Alex Baker d2a0dda6c5 Show subscription prices in local currency 1 year ago
Alex Baker efa664dd70 Show error messages in purchase screen 1 year ago
renovate[bot] 1a6f44c4ff
Update dependency gradle to v8.12 (#3201)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 80356292eb
Update dagger.hilt to v2.54 (#3200)
* Update dagger.hilt to v2.54

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 2768013250
Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-test to v1.10.1 (#3199)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
Alex Baker 04a7eef174 Add PurchaseActivityViewModel 1 year ago
Alex Baker 93231f3c10
Get android-plugin-api-for-locale from central 1 year ago
renovate[bot] b2135d27c3
Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-test to v1.10.0 (#3197)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
Alex Baker d9a0a047d5 Move BaseSettingsContent to separate file 1 year ago
Alex Baker be5a4dfc01 Begin refactoring FilterSettingsActivity 1 year ago
Alex Baker e3edd4797a Remove unused code and resources 1 year ago
renovate[bot] 597075faf6
Update protobuf to v4.29.2 (#3193)
* Update protobuf to v4.29.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker 5e3da97b29 Update version and changelog 1 year ago
Alex Baker 5d44fa5753 WorkManager 2.10.0 1 year ago
renovate[bot] 90e2048c22 Kotlin 2.1.0 1 year ago
Alex Baker e17a6762d9 Update list settings
* Remove unused resources
* Fix check for icon changes
* Break out composables
1 year ago
renovate[bot] dc031da1b9 Update dependency fastlane to v2.226.0 1 year ago
hasak b1272e709f Translated using Weblate (Bosnian)
Currently translated at 12.8% (86 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
1 year ago
Hady 8e5b93fc10
Convert list settings to compose (#3163) 1 year ago
Alex Baker 87c5ec9f14 Rename Tasks to TasksApplication 1 year ago
renovate[bot] 6eba2d68d0
Update dagger.hilt to v2.53.1 (#2779)
* Update dagger.hilt to v2.53.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker 5da81979a1 Update application startup and logging 1 year ago
Alex Baker a0a944fae3 Less aggressive OpenTasks sync 1 year ago
Alex Baker 52757f7947 Dagger 2.53 1 year ago
hasak f5d8501933 Translated using Weblate (Bosnian)
Currently translated at 11.9% (80 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
1 year ago
renovate[bot] 4f0501b5e9
Update dependency fastlane to v2.226.0 (#3187)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
Weblate (bot) a8112d4a6c
Translations update from Hosted Weblate (#3186)
Translated using Weblate (Croatian)

Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/

Co-authored-by: Milo Ivir <mail@milotype.de>
1 year ago
renovate[bot] 856983dfdd
Update dependency fastlane to v2.226.0 (#3185)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] ec2e56eb5a
Update dependency com.google.accompanist:accompanist-permissions to v0.37.0 (#3181)
* Update dependency com.google.accompanist:accompanist-permissions to v0.37.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker 85d6760499 Remove accompanist-flowlayout 1 year ago
Alex Baker 9c45a638c0 Revert "Update dependency androidx.compose:compose-bom to v2024.12.01 (#3178)"
This reverts commit 71b88c9ea0.

Conflicts with horologist
1 year ago
renovate[bot] 9bfa1d939b
Update dependency fastlane to v2.226.0 (#3182)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
Alex Baker 7e83023180
Use gradle action for caching (#3183) 1 year ago
renovate[bot] 7eeaff5654
Update dependency androidx.paging:paging-compose to v3.3.5 (#3175)
* Update dependency androidx.paging:paging-compose to v3.3.5

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker d501603c87 enableEdgeToEdge in SortActivity 1 year ago
renovate[bot] 4661e55d2a
Update dependency fastlane to v2.226.0 (#3179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 71b88c9ea0
Update dependency androidx.compose:compose-bom to v2024.12.01 (#3178)
* Update dependency androidx.compose:compose-bom to v2024.12.01

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] a62ee7201f
Update dependency com.google.auth:google-auth-library-oauth2-http to v1.30.1 (#3176)
* Update dependency com.google.auth:google-auth-library-oauth2-http to v1.30.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] c5dd39c749
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.6 (#3173)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.6

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 85119faa5a
Update room to v2.7.0-alpha12 (#3174)
* Update room to v2.7.0-alpha12

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] bf3a577ff0 Update dependency fastlane to v2.226.0 1 year ago
hasak 4273b8b515 Translated using Weblate (Bosnian)
Currently translated at 8.5% (57 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
1 year ago
Nick Wick dde8543728 Translated using Weblate (Swedish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
1 year ago
renovate[bot] 85a05b789f
Update grpc-java monorepo to v1.69.0 (#3169)
* Update grpc-java monorepo to v1.69.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] d70b68ca3e
Update dependency fastlane to v2.226.0 (#3168)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 55950ee3f3
Update dependency com.google.android.horologist:horologist-compose-material to v0.6.22 (#3167)
* Update dependency com.google.android.horologist:horologist-compose-material to v0.6.22

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
hasak 50d3b4e465 Translated using Weblate (Bosnian)
Currently translated at 8.2% (55 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
1 year ago
Kaci f2b99b494c Translated using Weblate (Hungarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
1 year ago
Sunjae Choi f7c328fb23 Translated using Weblate (Korean)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
1 year ago
Ettore Atalan 9b5a546426 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
1 year ago
renovate[bot] bd4ce840e1
Update dependency com.google.firebase:firebase-bom to v33.7.0 (#3155)
* Update dependency com.google.firebase:firebase-bom to v33.7.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 9431242460
Update horologist to v0.6.21 (#3160)
* Update horologist to v0.6.21

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Ricky Tigg b41b309660 Translated using Weblate (Finnish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
1 year ago
Ricky Tigg fe62120c7d Translated using Weblate (Finnish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fi/
1 year ago
Ricky Tigg 4b28580843 Translated using Weblate (Finnish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fi/
1 year ago
hasak 2bdded2c05 Translated using Weblate (Bosnian)
Currently translated at 4.7% (32 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
1 year ago
大王叫我来巡山 fd7aa9eec1 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
1 year ago
Ricky Tigg 680c44615b Translated using Weblate (Finnish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
1 year ago
gallegonovato c8d4611d36 Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
1 year ago
C. Rüdinger 9e1e2b28ed Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
1 year ago
109247019824 fa74e904fa Translated using Weblate (Bulgarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
1 year ago
renovate[bot] bad7bd148a
Update dependency com.google.protobuf:protobuf-kotlin-lite to v4.29.1 (#3152)
* Update dependency com.google.protobuf:protobuf-kotlin-lite to v4.29.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker 45862bbd15 Don't send every Wear OS build to beta 1 year ago
Don Zouras 8b0464b9ef Translated using Weblate (Esperanto)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
1 year ago
Petri Hämäläinen ba6aaa58dc Translated using Weblate (Finnish)
Currently translated at 99.1% (662 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
1 year ago
Paul Rogalski bf42aeb7b0 Translated using Weblate (German)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
1 year ago
Alex Baker fdf641aaa9 Update version and changelog 1 year ago
Alex Baker 20ca293ef3 Fix back button 1 year ago
Alex Baker 80009b3a89 Update version and changelog 1 year ago
Alex Baker 6420bee858 Fix beast mode labels 1 year ago
Alex Baker a976052ac4 Merge branch '14.2' 1 year ago
renovate[bot] cb1346ad57
Update agp to v8.7.3 (#3145)
* Update agp to v8.7.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker 4f6608d2e7 Update version and changelog 1 year ago
Alex Baker bfcff55854 Convert edit screen to use compose scaffold
Remove collapsing toolbar and fab
1 year ago
Alex Baker 82ceda7108 Fix some compose theme issues 1 year ago
Alex Baker f48224e555 Add separate alarms and reminders banner 1 year ago
Alex Baker 2def074096 Capitalize tag picker text field 1 year ago
gallegonovato f441492ead Translated using Weblate (Spanish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
1 year ago
raulmagdalena 191fe46e59 Translated using Weblate (Catalan)
Currently translated at 62.8% (420 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
1 year ago
nathalier 7eb95f6bc4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
1 year ago
Pierfrancesco Passerini c55cc09d8b Translated using Weblate (Italian)
Currently translated at 99.8% (667 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
Florian Trayon d72801719b Translated using Weblate (French)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
1 year ago
renovate[bot] c2f5ccbe5b
Update grpc-java monorepo to v1.68.2 (#3138)
* Update grpc-java monorepo to v1.68.2

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
github-actions[bot] eedda1f82a Update dependency diffs 1 year ago
renovate[bot] c525701055 Update dependency com.google.protobuf:protobuf-kotlin-lite to v4.29.0 1 year ago
大王叫我来巡山 5be2601f97 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
1 year ago
Frits van Bommel ee751e92bf Translated using Weblate (Dutch)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
1 year ago
109247019824 c27744e408 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
1 year ago
Alex Baker 3e3cafe5d4 Update version and changelog 1 year ago
Anonymous dcd1424e6e
Translated using Weblate (Bosnian)
Currently translated at 3.0% (1 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/bs/
1 year ago
Alex Baker 2178b4bc1c Remove escape characters from compose resources 1 year ago
Alex Baker 2501e588fe Fix comment delete button color 1 year ago
Przemysław Romanik 1cae87e8fc Translated using Weblate (Polish)
Currently translated at 96.1% (641 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
1 year ago
Pierfrancesco Passerini ad82f276e2 Translated using Weblate (Italian)
Currently translated at 99.8% (666 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
gallegonovato fc28c8ea96 Translated using Weblate (Spanish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
1 year ago
Alex Baker 5579f0c657 Show banner when quiet hours are in effect 1 year ago
Alex Baker 4c2febf402 Rearrange default edit screen order 1 year ago
Alex Baker 71ccad0559 Show name your price screen first 1 year ago
renovate[bot] 22f001c7ee
Update protobuf to v4.28.3 (#3112)
* Update protobuf to v4.28.3

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 7104a987b5
Update lifecycle to v2.8.7 (#3110)
* Update lifecycle to v2.8.7

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 2da1ef0d48
Update grpc-java monorepo to v1.68.1 (#3109)
* Update grpc-java monorepo to v1.68.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 4580983c87
Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.5 (#3103)
* Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.7.5

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 1b41f22a02
Update dependency com.google.android.gms:play-services-wearable to v19 (#3131)
* Update dependency com.google.android.gms:play-services-wearable to v19

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] bc224f1fc1
Update coil to v2.7.0 (#2979)
* Update coil to v2.7.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 1e8faec871
Update flipper to v0.273.0 (#3130)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 03160c69de
Update dependency co.touchlab:kermit to v2.0.5 (#3129)
* Update dependency co.touchlab:kermit to v2.0.5

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] a2980f659e
Update accompanist to v0.36.0 (#3114)
* Update accompanist to v0.36.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 150559d49f
Update dependency com.android.tools:desugar_jdk_libs to v2.1.3 (#3105)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] d287c5d6ea
Update dependency androidx.compose:compose-bom to v2024.11.00 (#3115)
* Update dependency androidx.compose:compose-bom to v2024.11.00

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 8a10784da8
Update plugin ksp to v2.0.21-1.0.28 (#3111)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] f4c54a02fe
Update dependency androidx.constraintlayout:constraintlayout to v2.2.0 (#3116)
* Update dependency androidx.constraintlayout:constraintlayout to v2.2.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] a698d6876a
Update dependency com.facebook.soloader:soloader to v0.12.1 (#3117)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 749b614bb6
Update dependency com.google.firebase:firebase-bom to v33.6.0 (#3118)
* Update dependency com.google.firebase:firebase-bom to v33.6.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 426a15a5be
Update mockito monorepo to v5.14.2 (#3122)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
Alex Baker 39dcd3d649 Update update_dependency_diff script 1 year ago
renovate[bot] 8092da03d3
Update plugin jetbrains-compose to v1.7.1 (#3123)
* Update plugin jetbrains-compose to v1.7.1

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 306f7ec053
Update room to v2.7.0-alpha11 (#3113)
* Update room to v2.7.0-alpha11

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 2d86a73e94
Update dependency com.google.apis:google-api-services-drive to v3-rev20241027-2.0.0 (#3107)
* Update dependency com.google.apis:google-api-services-drive to v3-rev20241027-2.0.0

* Update dependency diffs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 year ago
Alex Baker fb5619a08a Add dependency_diff action 1 year ago
Milo Ivir 0db5686c52 Translated using Weblate (Croatian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
1 year ago
Nick Wick e4c515008a Translated using Weblate (Swedish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
1 year ago
Frits van Bommel 6f3616ee47 Translated using Weblate (Dutch)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
1 year ago
Kaci 907d08bdd5 Translated using Weblate (Hungarian)
Currently translated at 96.4% (643 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
1 year ago
Florian Trayon 4337f6d76c Translated using Weblate (French)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
1 year ago
大王叫我来巡山 8ed347fa2d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
1 year ago
Pierfrancesco Passerini 7d8b804d8a Translated using Weblate (Italian)
Currently translated at 99.8% (666 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
109247019824 5280d6f35e Translated using Weblate (Bulgarian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
1 year ago
Anonymous 84a044e658 Translated using Weblate (Slovenian)
Currently translated at 16.1% (108 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sl/
1 year ago
Anonymous 23635f383e Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.7% (665 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
1 year ago
Anonymous 43e3a80f83 Translated using Weblate (Hungarian)
Currently translated at 96.2% (642 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
1 year ago
Anonymous 93fbca8397 Translated using Weblate (Finnish)
Currently translated at 97.1% (648 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
1 year ago
hasak 1f43666fb4 Translated using Weblate (Bosnian)
Currently translated at 4.6% (31 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bs/
1 year ago
Don Zouras 91dd4e10a6 Translated using Weblate (Esperanto)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
1 year ago
raulmagdalena 3a64ad6394 Translated using Weblate (Catalan)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ca/
1 year ago
renovate[bot] 69d99f1bdf Update dependency com.google.android.play:review-ktx to v2.0.2 1 year ago
Alex Baker b4133b7a3f Revert renovate change
Only works on self-hosted instances 😢
1 year ago
Alex Baker 26cd7cc8c2 Have renovate run update_dependency_diff 1 year ago
renovate[bot] bcb0f66c03
Update dependency gradle to v8.11.1 (#3120)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
Alex Baker a209ddbda3 Update version and changelog 1 year ago
renovate[bot] febf14e415
Update flipper to v0.272.0 (#3121)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] d70341954f
Update dependency fastlane to v2.225.0 (#3119)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
renovate[bot] 07caf18ed0
Update dependency ruby to v3.3.6 (#3108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 year ago
Alex Baker 2d59bb365d Add deploy github action 1 year ago
renovate[bot] 8135a9d542 Update dependency androidx.paging:paging-compose to v3.3.4 1 year ago
renovate[bot] f005a17c63 Update dependency com.android.billingclient:billing-ktx to v6.2.1 1 year ago
renovate[bot] 42af7f9292 Update dependency com.google.auth:google-auth-library-oauth2-http to v1.30.0 1 year ago
renovate[bot] 5118009840 Update dependency androidx.fragment:fragment-ktx to v1.8.5 1 year ago
renovate[bot] f0e8cc41ae Update dependency org.osmdroid:osmdroid-android to v6.1.20 1 year ago
renovate[bot] d34a176151 Update dependency androidx.activity:activity-compose to v1.9.3 1 year ago
Alex Baker 387640d850 Don't sync on startup if there are no accounts 1 year ago
min7-i 2e651bb1ef Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
1 year ago
hasak a3b6e414f3 Added translation using Weblate (Bosnian) 1 year ago
Milo Ivir e609497b04 Translated using Weblate (Croatian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/hr/
1 year ago
kowih83264 5c55b75d29 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/pt_BR/
1 year ago
Languages add-on bf3d7cf673 Added translation using Weblate (Bosnian) 1 year ago
Alex Baker baadbef820 Update file logging
* Add ability to send logs
* Log app exit info
* Redact sensitive info from logs
1 year ago
Alex Baker c7d10f69e7 Remove usage of external cache 1 year ago
Alex Baker 31afc842bd Add file logger 1 year ago
Alex Baker ed1f584daf Remove unnecessary join when sending tasks 1 year ago
Alex Baker 812c0be413 Delete snoozed reminders when completing tasks 1 year ago
Alex Baker c32df5485b Update version and changelog 1 year ago
Alex Baker 1327610457 Fix etesync sync failure on empty color 1 year ago
Alex Baker 916175a5e1 Minor Wear OS fixes
* Add padding to top of menu to address Play Store rejection
* Exit new task screen if no title is entered
* Keep menu items in memory
1 year ago
Alex Baker 48304b59ba Update funding 1 year ago
Alex Baker f99bf0e33f Update version and changelog 1 year ago
Alex Baker 83e62cd48a Update locales_config 1 year ago
Naren Sirigere 64d5e6286c Translated using Weblate (Marathi)
Currently translated at 21.2% (7 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/mr/
1 year ago
Anonymous 1a59080e23 Translated using Weblate (Kannada)
Currently translated at 9.0% (3 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/kn/
1 year ago
Naren Sirigere 06d5ccdfe2 Translated using Weblate (Kannada)
Currently translated at 9.0% (3 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/kn/
1 year ago
gallegonovato c260f339dc Translated using Weblate (Spanish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/es/
1 year ago
Naren Sirigere 5f8e44f747 Added translation using Weblate (Marathi) 1 year ago
Naren Sirigere 789aa9e0b2 Translated using Weblate (Kannada)
Currently translated at 6.0% (2 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/kn/
1 year ago
Pierfrancesco Passerini 6cb9c6fae0 Translated using Weblate (Italian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/it/
1 year ago
bittin1ddc447d824349b2 7a0f4d4799 Translated using Weblate (Swedish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sv/
1 year ago
Kaci 692c419271 Translated using Weblate (Hungarian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/hu/
1 year ago
Naren Sirigere 24564dd236 Translated using Weblate (Marathi)
Currently translated at 0.1% (1 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/mr/
1 year ago
Languages add-on 46a2ee844f Added translation using Weblate (Marathi) 1 year ago
Naren Sirigere b11f85ab16 Translated using Weblate (Kannada)
Currently translated at 3.9% (26 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/kn/
1 year ago
Alex Baker d1379fff43 Address CVE-2024-7254 warning 1 year ago
Alex Baker a3b9b7b3fa Add dependency diff for wear app 1 year ago
Alex Baker 27eef75a94 Fix widget crash 1 year ago
Alex Baker c7392025af Update Wear OS splash screen icon
Addresses play store rejection
1 year ago
Florian Trayon 9fa28c9cfb
Translated using Weblate (French)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fr/
1 year ago
Frits van Bommel 4739e4131a
Translated using Weblate (Dutch)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/nl/
1 year ago
Ihor Hordiichuk c1771b248e
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/uk/
1 year ago
C. Rüdinger ffd4a6138f
Translated using Weblate (German)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/de/
1 year ago
大王叫我来巡山 44e6a85198
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/zh_Hans/
1 year ago
109247019824 9f7c0d9a95
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/bg/
1 year ago
Alex Baker 4796f1d2d8 Update version and changelog 1 year ago
Alex Baker 675b43ff95 Show task timestamp on WearOS 1 year ago
Alex Baker d4aeb34b87 Update logic for creating tasks on WearOS 1 year ago
Alex Baker e5fc31f307 Update version and changelog 1 year ago
renovate[bot] 6743d058b0 Update plugin ksp to v2.0.21-1.0.26 1 year ago
Don Zouras acc041e456 Translated using Weblate (Esperanto)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
1 year ago
Olli dcd5b27666 Translated using Weblate (Finnish)
Currently translated at 97.4% (649 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
1 year ago
Petri Hämäläinen 244cf349e3 Translated using Weblate (Finnish)
Currently translated at 96.3% (642 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
1 year ago
hugoalh dc2efefe01 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (31 of 31 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/zh_Hant/
1 year ago
Alex Baker 96392cb618 Update WearOS edit screen
* Set complete from edit screen
* Edit existing tasks
1 year ago
Alex Baker f0e9eb453c AGP 8.7.2 1 year ago
Alex Baker 4e7e05c8af WearOS task edit screen - WIP 1 year ago
dependabot[bot] b6f1722350
Bump rexml from 3.3.6 to 3.3.9 (#3080)
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.6 to 3.3.9.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.6...v3.3.9)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1 year ago
Alex Baker 4126ea1175 Fix WearOS proguard 1 year ago
Alex Baker 8741987ca4 Move Checkbox to components 1 year ago
Alex Baker 34a8dcb2c4 Remove AD_ID permission from WearOS 1 year ago
Alex Baker 9c1967cf8a Update version and changelog 1 year ago
Alex Baker 647c473d1d Update proguard config for WearOS 1 year ago
Alex Baker 94e2e2ee3b firebase-bom 33.5.1 1 year ago
Alex Baker f1afd1974c Log more errors on WearOS 1 year ago
Alex Baker 393ad4977b Add timber to wear app 1 year ago
Alex Baker 4b2bb87ecf Minor drawer item fixes 1 year ago
Alex Baker e92703a392 Placeholder edit screen on WearOS 1 year ago
Alex Baker 5aa2070700 Shorten date headers on WearOS 1 year ago
Alex Baker 8fc7e4d011 Prevent jumping to completed task on WearOS 1 year ago
Alex Baker 6aff9bd4b5 Only move drawer search results to bottom 1 year ago
Alex Baker c13cf982b7 Check if app installed on phone 1 year ago
Alex Baker f36e900627 Update version and changelog 1 year ago
Alex Baker 8b1ef2e0d9 Fix generic compile 1 year ago
Alex Baker 5fa00ea53d Update subscription screen to fix rejection 1 year ago
Alex Baker a289cb80fd Catch error when wearable API is missing 1 year ago
Alex Baker ec2eb15118 Move app version to gradle catalog 1 year ago
Paul Rogalski c731206eb3 Translated using Weblate (German)
Currently translated at 100.0% (31 of 31 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/de/
1 year ago
Anonymous 48ed7ec3ef Automated translations from weblate 1 year ago
Pierfrancesco Passerini 9bbede77b2 Translated using Weblate (Italian)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/it/
1 year ago
Ihor Hordiichuk fc910e2743 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/uk/
1 year ago
pogoyar888@avzong.com 4e8c68edd8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/pt_BR/
1 year ago
Alex Baker b583d04e8f
Bundle wear app (#3074) 1 year ago
Alex Baker 105757af53 Implement drawer for Android Wear 1 year ago
Alex Baker 689cd20a88 Add firebase event for task completions 1 year ago
大王叫我来巡山 257bf826b6 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/zh_Hans/
1 year ago
bittin1ddc447d824349b2 d17f500de2 Translated using Weblate (Swedish)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sv/
1 year ago
Florian Trayon 02a7c664f3 Translated using Weblate (French)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fr/
1 year ago
gallegonovato 2e4857a864 Translated using Weblate (Spanish)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/es/
1 year ago
Frits van Bommel 9559d5d740 Translated using Weblate (Dutch)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/nl/
1 year ago
Kaci 30630c6dfe Translated using Weblate (Hungarian)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/hu/
1 year ago
109247019824 f2b7792f69 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/bg/
1 year ago
Oğuz Ersen 426b8dc7a6 Translated using Weblate (Turkish)
Currently translated at 100.0% (29 of 29 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/tr/
1 year ago
Alex Baker 54afbfeecc Toggle completed from Android Wear 1 year ago
Alex Baker 1200a7625a Remove wear strings 1 year ago
Alex Baker a971a1372d Fix wear refresher race condition 1 year ago
Alex Baker 45fbb2794d Subtask support on Android Wear 1 year ago
Alex Baker 751c8aabc1 Toggle hidden tasks from Android Wear 1 year ago
Alex Baker 7c23d48117 Apply alpha to hidden tasks on Android Wear 1 year ago
Alex Baker 1a346d5922 Mark not completed from Android Wear 1 year ago
Alex Baker 502f7c07d5 Collapsible sort groups on Android Wear 1 year ago
Pierfrancesco Passerini f083083850 Translated using Weblate (Italian)
Currently translated at 100.0% (28 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/it/
1 year ago
Pierfrancesco Passerini bb4bf56fea Translated using Weblate (Italian)
Currently translated at 92.8% (26 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/it/
1 year ago
Pierfrancesco Passerini 58ff276fae Translated using Weblate (Italian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
Nicolas Suzuki 310eb6f432 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.6% (664 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
1 year ago
Pierfrancesco Passerini 30ac9a9b22 Translated using Weblate (Italian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
Paul Rogalski 572c2644ee Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
1 year ago
Luna d134e40be0 Translated using Weblate (Danish)
Currently translated at 95.6% (637 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
1 year ago
renovate[bot] 659461fe87 Update kotlin 1 year ago
renovate[bot] 82dc9114ab Update dependency ruby to v3.3.5 1 year ago
Alex Baker 3b60a5bcaf Add 'Add task' button to Android Wear
Button doesn't do anything yet
1 year ago
Alex Baker a8977f02fe Android Wear paging improvements 1 year ago
Alex Baker dd6ba730e9 Use paged data on Android Wear 1 year ago
Alex Baker 31cbe8fbab Ignore lint error 1 year ago
Alex Baker d2ff0519be Group separators on Android Wear 1 year ago
Alex Baker d5f9c24da4 Check if watch is connected before refreshing 1 year ago
Alex Baker 627259a723 Remove TasksSerializer 1 year ago
Alex Baker d3cc532ff5 AGP 8.7.1 1 year ago
Alex Baker da94f55ab0 Refresh watch data on changes 1 year ago
Alex Baker ff1f7e1d01 Android Wear - WIP 1 year ago
Alex Baker 1112881411 AGP 8.7.0 1 year ago
Alex Baker 58dc1427a8 Update version and changelog 1 year ago
Alex Baker 9baa95ac81 Target Android 14 1 year ago
Alex Baker ac00a81751 Trigger overdue notifications immediately 1 year ago
Alex Baker cf6ff06843 Fix disabling minimum touch target size 1 year ago
Alex Baker 4e9342d75e Update desugar libs to 2.1. 1 year ago
Alex Baker f95b7059bf Update lifecycle to 2.8.6 1 year ago
Alex Baker ec14d5f02b Update ui-tooling-preview-android to 1.7.2 1 year ago
Alex Baker f941141cff Update compose bom to 2024.09.02 1 year ago
renovate[bot] 4c44b7a9a3 Update dependency androidx.fragment:fragment-ktx to v1.8.3 1 year ago
renovate[bot] 12d9bd7acf Update dependency androidx.activity:activity-compose to v1.9.2 1 year ago
Alex Baker fb5038c50e Update room to 2.7.0-alpha08 1 year ago
renovate[bot] 5e60af1a65 Update dependency com.google.apis:google-api-services-drive to v3-rev20240914-2.0.0 1 year ago
renovate[bot] 9cf76ab124 Update dependency androidx.test:runner to v1.6.2 1 year ago
dependabot[bot] 4abfd4b30e Bump rexml from 3.3.3 to 3.3.6
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.3 to 3.3.6.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.3...v3.3.6)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
Josep Mengual d9b0bc5925 Translated using Weblate (Catalan)
Currently translated at 100.0% (28 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/ca/
1 year ago
Anonymous e15656282c Translated using Weblate (Estonian)
Currently translated at 96.4% (27 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/et/
1 year ago
atmosphericignition d2ee2b18bb Translated using Weblate (Czech)
Currently translated at 100.0% (28 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/cs/
1 year ago
Don 1e1d1fc481 Translated using Weblate (Estonian)
Currently translated at 89.2% (25 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/et/
1 year ago
tct123 a216b4bac6 Translated using Weblate (German)
Currently translated at 100.0% (28 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/de/
1 year ago
Josep Mengual 331593b145 Translated using Weblate (Catalan)
Currently translated at 58.5% (390 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
1 year ago
abc0922001 1d3ad03c58 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
1 year ago
raulmagdalena 830dc77179 Translated using Weblate (Catalan)
Currently translated at 58.4% (389 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
1 year ago
Don f075266bcb Translated using Weblate (Estonian)
Currently translated at 72.3% (482 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
1 year ago
Don 065264fb85 Translated using Weblate (Estonian)
Currently translated at 66.9% (446 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
1 year ago
atmosphericignition 65af76bd72 Translated using Weblate (Czech)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
1 year ago
Alex Baker 8dc11dbe93 Update agp to v8.6.1 1 year ago
renovate[bot] 26e5e2c29b Update dependency gradle to v8.10.2 1 year ago
renovate[bot] 3986fe1431 Update agp to v8.5.2 1 year ago
renovate[bot] ceac030ca5 Update room to v2.7.0-alpha06 1 year ago
renovate[bot] 66ef650e2c Update kotlin 1 year ago
renovate[bot] 73529cfe35 Update dependency com.google.apis:google-api-services-drive to v3-rev20240730-2.0.0 1 year ago
renovate[bot] 41e2ee3416 Update flipper to v0.262.0 1 year ago
Don Zouras 456d063243 Translated using Weblate (Esperanto)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
1 year ago
Abdullhakim Sami Alshanqiti aff90cb740 Translated using Weblate (Arabic)
Currently translated at 95.6% (637 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
1 year ago
Don Zouras ecfdac5401 Translated using Weblate (Esperanto)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
1 year ago
tct123 0f8199b1c8 Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
1 year ago
Luna d7f77913ff Translated using Weblate (Danish)
Currently translated at 95.4% (636 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
1 year ago
Don Zouras a4d1b683dd Translated using Weblate (Esperanto)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
1 year ago
bittin1ddc447d824349b2 4d5b1a604a Translated using Weblate (Swedish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
1 year ago
bittin1ddc447d824349b2 f6e103d4e1 Translated using Weblate (Swedish)
Currently translated at 100.0% (28 of 28 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/sv/
1 year ago
Anonymous 1e3850127e Update automatic translations 1 year ago
Ettore Atalan e24eb0d933 Translated using Weblate (German)
Currently translated at 94.4% (17 of 18 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/de/
1 year ago
dependabot[bot] 13d4c029e8 Bump rexml from 3.3.2 to 3.3.3
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.2...v3.3.3)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
renovate[bot] 17bb50efb4 Update flipper to v0.261.0 1 year ago
renovate[bot] 8b685da563 Update plugin ksp to v2.0.0-1.0.24 1 year ago
dependabot[bot] 6dce036427 Bump rexml from 3.2.9 to 3.3.2
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.9 to 3.3.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.9...v3.3.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
renovate[bot] a6c05fe600 Update dependency fastlane to v2.222.0 1 year ago
renovate[bot] adb4d20c12 Update flipper to v0.260.0 1 year ago
Alex Baker 865cec7220 Move DateUtilities to kmp 1 year ago
Jose Delvani fcc4b2ef2a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
1 year ago
Luna 2a194bdcb0 Translated using Weblate (Danish)
Currently translated at 94.7% (631 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
1 year ago
Pierfrancesco Passerini 0b463fe331 Translated using Weblate (Italian)
Currently translated at 98.9% (659 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
Luna 0b34b2630c Translated using Weblate (Danish)
Currently translated at 94.7% (631 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
1 year ago
renovate[bot] 46cc225ceb Update dependency androidx.activity:activity-compose to v1.9.1 1 year ago
renovate[bot] 34750e052c Update dependency androidx.fragment:fragment-ktx to v1.8.2 1 year ago
renovate[bot] 71cdabad8b Update lifecycle to v2.8.4 1 year ago
Jose Delvani ffd5806bc8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (18 of 18 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/pt_BR/
1 year ago
Pierfrancesco Passerini 33734e031f
Translated using Weblate (Italian)
Currently translated at 98.6% (657 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
1 year ago
Kat Alimpieva b67f849c53
Translated using Weblate (Belarusian)
Currently translated at 5.8% (39 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/be/
1 year ago
Jose Delvani e88220cc70
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
1 year ago
RonnyAL182e77f4e26446af b4ced4698a
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
1 year ago
Alex Baker 4aee7ee2fe Fix renovate.json 1 year ago
Alex Baker 3ab672bfbc Move some ColorProvider stuff to kmp 1 year ago
Alex Baker f66df67592 Use default arch thread pool 1 year ago
renovate[bot] 4f3df04921 Update flipper to v0.259.0 1 year ago
Alex Baker 25557579f9 Fix crash on invalid icon name 1 year ago
Jonatan Nyberg 40ec1d86f7 Translated using Weblate (Swedish)
Currently translated at 99.8% (665 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
1 year ago
Tntdruid 42d4cbc7fb Translated using Weblate (Danish)
Currently translated at 94.4% (629 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
1 year ago
Milo Ivir fb2cd132de Translated using Weblate (Croatian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
1 year ago
Marc Van Impe 435c42920d Translated using Weblate (Dutch)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
1 year ago
Tntdruid 8373e8238e Translated using Weblate (Danish)
Currently translated at 100.0% (18 of 18 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/da/
1 year ago
Milo Ivir e1f50c5cf4 Translated using Weblate (Croatian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/hr/
1 year ago
renovate[bot] 75f1f057aa Update flipper to v0.258.0 1 year ago
Alex Baker 2566b86fec Update version and changelog 1 year ago
Alex Baker e6cb93c57d Fix crash in vtodo cache migration 1 year ago
Alex Baker 5314736958 Update version and changelog 1 year ago
Alex Baker 12f8ba360c Fix managed DAVx5 account type 1 year ago
Alex Baker 5f0b6b668a Fix collapsing filter picker sections 1 year ago
109247019824 aadcb6355f Translated using Weblate (Bulgarian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/bg/
1 year ago
renovate[bot] 4491eb1cc6 Update dependency com.google.android.gms:play-services-maps to v19 1 year ago
renovate[bot] 6d023303cf Update dependency com.google.apis:google-api-services-drive to v3-rev20240628-2.0.0 1 year ago
renovate[bot] 81dd8fc2ea Update dependency com.google.firebase:firebase-bom to v33.1.2 1 year ago
renovate[bot] bb7209a07f Update dependency com.google.auth:google-auth-library-oauth2-http to v1.24.0 1 year ago
renovate[bot] a7b92ecb4b Update dependency gradle to v8.9 1 year ago
Alex Baker c2bd95ed06 Update version and changelog 1 year ago
Alex Baker da1139f6a4 Fix null pointer exception when deleting files 1 year ago
Alex Baker 0ba6164ac9 Lenient json parsing for backup import 1 year ago
Alex Baker 9894919f49 Merge branch '13.11' 1 year ago
Alex Baker 7731b90672 Update version and changelog 1 year ago
Alex Baker 8f4514fc78 Menu search bar on top for Android 10 and below 1 year ago
Alex Baker d3421bd0c3 Use platform sqlite library again 1 year ago
renovate[bot] 65f3240ce6 Update dependency ruby to v3.3.4 1 year ago
renovate[bot] c9f4242c2a Update dependency androidx.fragment:fragment-ktx to v1.8.1 1 year ago
renovate[bot] 4cdf7efef2 Update dependency com.google.apis:google-api-services-tasks to v1-rev20240630-2.0.0 1 year ago
renovate[bot] b45588410d Update lifecycle to v2.8.3 1 year ago
Alex Baker 8f68811a59 Update version and changelog 1 year ago
Alex Baker 93f1735965 Fix some more null icons 1 year ago
Alex Baker 686b141bb8 AGP 8.5.1 1 year ago
Alex Baker 41f8835717 Update sqlite and room 1 year ago
Alex Baker 1acb2a3658 Set coroutine dispatcher on database 1 year ago
renovate[bot] 6275dfbd36 Update kotlin 1 year ago
Alex Baker bd7ad1ad9d Revert "Don't use bundled sqlite driver"
This reverts commit 8c9b996cb8.
2 years ago
Alex Baker 64ad4ca33a Fix icon null pointer exceptions 2 years ago
Alex Baker 6700ce5aa1 Update changelog 2 years ago
Ihor Hordiichuk 0422412cb9
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
2 years ago
Alex Baker e7ce174ffe Pull in auto translations 2 years ago
Ihor Hordiichuk 4956a136fa
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (12 of 12 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/uk/
2 years ago
Alex Baker a067651c23 Move FilterProvider to kmp 2 years ago
Alex Baker 83e43ba72c Move TaskListDrawer to kmp 2 years ago
Alex Baker f8633bbd63 Remove remaining EteSync v1 code 2 years ago
Alex Baker ddfedb58ae Update dependency files 2 years ago
Alex Baker ca5b7daa36 Fix tests 2 years ago
Alex Baker ba8d56cc96 Move CustomFilter to kmp 2 years ago
Alex Baker a538c25dcc Move request codes to FilterProvider 2 years ago
Alex Baker 939f801382 Pull in auto translations 2 years ago
Alex Baker dbff9758ef Move CaldavDaoExtensions to kmp 2 years ago
Josep Torrens beb44f7634 Translated using Weblate (Catalan)
Currently translated at 49.8% (333 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
2 years ago
Sergi Ventosa Ordóñez 131ab0747f Translated using Weblate (Catalan)
Currently translated at 49.8% (333 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
2 years ago
hugoalh 21ebf7c867 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.7% (666 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
2 years ago
大王叫我来巡山 27c0530825 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Jose Delvani 1fc04af48e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
Florian Trayon 6622f16b14 Translated using Weblate (French)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
2 years ago
gallegonovato b2d2a614de Translated using Weblate (Spanish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
109247019824 f7211a45e0 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
Oğuz Ersen e7140fd042 Translated using Weblate (Turkish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
Alex Baker 00d2ef4916 Pull in auto translations 2 years ago
大王叫我来巡山 bf818ee817
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (5 of 5 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/zh_Hans/
2 years ago
hugoalh 15cc9c1b56
Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (5 of 5 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/zh_Hant/
2 years ago
Florian Trayon 31aea94d07
Translated using Weblate (French)
Currently translated at 100.0% (5 of 5 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/fr/
2 years ago
gallegonovato 82ae20bfc8
Translated using Weblate (Spanish)
Currently translated at 100.0% (5 of 5 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/es/
2 years ago
109247019824 94b7e04444
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (5 of 5 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/bg/
2 years ago
Jose Delvani ae1c15cd1e
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (5 of 5 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/pt_BR/
2 years ago
Oğuz Ersen edb09ebbb5
Translated using Weblate (Turkish)
Currently translated at 100.0% (5 of 5 strings)

Translation: Tasks.org/Desktop
Translate-URL: https://hosted.weblate.org/projects/tasks/multiplatform/tr/
2 years ago
Alex Baker eef736a3c1 Move PlaceFilter to kmp 2 years ago
Alex Baker 95bc9aa6f2 Move built-in filters to kmp 2 years ago
Alex Baker 33798b3255 Merge tag '13.10' 2 years ago
Alex Baker 053cffd389 Update version and changelog 2 years ago
Alex Baker bf3da3249d Move menu search to bottom app bar 2 years ago
Alex Baker 05fbdaba88 Move some files to kmp 2 years ago
Alex Baker b4b5d8d80f Fix location icon 2 years ago
Alex Baker 86f23a0768 New weblate module 2 years ago
Alex Baker 72759e67d2 Add link to composeResources
Seeing if weblate follows it 🤞
2 years ago
Alex Baker ae6b068b66 Merge branch '13.10' 2 years ago
Alex Baker 0ce07152cf Update version and changelog 2 years ago
Alex Baker ec94d92e11 Change transaction type to immediate 2 years ago
Alex Baker 2c62d928d3 Update icon readme 2 years ago
Alex Baker 4c727722c3 Outlined icons 2 years ago
Alex Baker bfe8d1c929 More icon fixes
* Fix icon migration
* Fix widget icons
2 years ago
Alex Baker 9cd8af6d78 Fix icons 2 years ago
Alex Baker 08da2f56a6 Update changelog 2 years ago
Alex Baker 7d52d58f3d New material icon picker 2 years ago
Alex Baker 282042538c Update donation nag text 2 years ago
Alex Baker 8ccab99f23 Update version and changelog 2 years ago
Alex Baker f459541902 Restore '+' button to drawer customization screen 2 years ago
renovate[bot] c2feb2144f Update dependency androidx.test:runner to v1.6.1 2 years ago
renovate[bot] 22366a8de6 Update androidx.test 2 years ago
renovate[bot] 5ae53e63ff Update dependency androidx.test.ext:junit to v1.2.1 2 years ago
CSharpest 00c3a117ac Translated using Weblate (Finnish)
Currently translated at 96.3% (642 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
2 years ago
Rami Lehtinen 922dd861b0 Translated using Weblate (Finnish)
Currently translated at 96.3% (642 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
2 years ago
Alex Baker 4770acbd65 Enable strong skipping mode 2 years ago
Alex Baker 45911b149a Update compose metrics 2 years ago
Alex Baker 9f7dfc11ec Add primary color to TasksTheme 2 years ago
Alex Baker 0b76553122 Move "My Tasks" filters to kmp 2 years ago
Alex Baker 8ac5d51308 Move TasksResults to kmp 2 years ago
Alex Baker 4f2d676ae4 Move SectionedDataSource to kmp 2 years ago
Alex Baker 59d81f5755 Update version and changelog 2 years ago
Alex Baker 8547fa2459 Add Managed DAVx5 logo 2 years ago
Milo Ivir 6bb1a9748c
Translated using Weblate (Croatian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
2 years ago
gallegonovato 81a0034cba
Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
renovate[bot] 475ff37d70 Update dependency com.google.firebase:firebase-crashlytics-gradle to v3.0.2 2 years ago
renovate[bot] 2015f8d0ef Update dependency com.google.firebase:firebase-bom to v33.1.1 2 years ago
Alex Baker 8c9b996cb8 Don't use bundled sqlite driver
Too many crashes, will retry when its out of alpha
2 years ago
Alex Baker 87ae179efc Fix tests 2 years ago
Alex Baker 79ebc9a2c7 Move query builders to kmp 2 years ago
Alex Baker bf4167651b Use kotlinx.datetime 2 years ago
renovate[bot] b990716502 Update dependency fastlane to v2.221.1 2 years ago
Alex Baker 285b0a9486 Add support for Managed DAVx5 2 years ago
Alex Baker 01a788bdb6 Use lifecycle-runtime-compose 2 years ago
大王叫我来巡山 12c7170a0b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Oğuz Ersen aa278922f5 Translated using Weblate (Turkish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
Jose Delvani 2be5d3bbbc Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
renovate[bot] 7673710d44 Update dependency fastlane to v2.221.0 2 years ago
Alex Baker cb31651c2a Update version and changelog 2 years ago
Alex Baker fb7960bf26 Replace play core library 2 years ago
renovate[bot] fecfea8df5 Update dependency com.google.auth:google-auth-library-oauth2-http to v1.23.0 2 years ago
Alex Baker 6ce170533e Prevent multiple completions from notification 2 years ago
Alex Baker ad4d938b94 Complete action cancels notification immediately 2 years ago
renovate[bot] 1702249abc Update dependency androidx.compose:compose-bom to v2024.06.00 2 years ago
renovate[bot] b52d954731 Update dependency androidx.fragment:fragment-ktx to v1.8.0 2 years ago
Alex Baker a1a02faf3d AGP 8.5.0 2 years ago
Alex Baker 9307b8fb7d Move launcher icons and colors to kmp 2 years ago
Alex Baker 8b345316a8 Update version and changelog 2 years ago
Alex Baker ab0f123c8a Fix menu seach bar end padding 2 years ago
renovate[bot] 36a28b6210 Update plugin jetbrains-compose to v1.6.11 2 years ago
renovate[bot] d2ae1008f5 Update room to v2.7.0-alpha04 2 years ago
Alex Baker 17af8ab373 Move some more filters to kmp 2 years ago
renovate[bot] e78d452d7b Update lifecycle to v2.8.2 2 years ago
renovate[bot] e9ddf29b9c Update kotlin 2 years ago
renovate[bot] 898c88bec9 Update dependency co.touchlab:kermit to v2.0.4 2 years ago
renovate[bot] 184e7def49 Update dependency androidx.sqlite:sqlite-bundled to v2.5.0-alpha04 2 years ago
Alex Baker d8186e5fe4 Use SCHEDULE_EXACT_ALARM 2 years ago
Alex Baker a4cd0829b0 AGP 8.4.2 2 years ago
Alex Baker 9a693177db Drawer updates
* Fix content overlapping navigation bars
* Move manage drawer to settings page
* Move drawer actions next to new settings button
2 years ago
Alex Baker 58955bd0a1 Fix reminder dialog button colors 2 years ago
renovate[bot] 95ecac8e7c Update dependency gradle to v8.8 2 years ago
renovate[bot] 57395423c6 Update dependency com.google.gms:google-services to v4.4.2 2 years ago
renovate[bot] b1613e9845 Update dependency com.google.firebase:firebase-bom to v33.1.0 2 years ago
renovate[bot] dcd70c7bc2 Update dependency androidx.compose.ui:ui-tooling-preview-android to v1.6.8 2 years ago
Alex Baker c1e2eb7cd0 Update version and changelog 2 years ago
Alex Baker 145ea03714 Set chip icon color 2 years ago
Alex Baker bada09f5c2 Use new search bar in filter picker 2 years ago
Alex Baker 007c536312 Add search bar to drawer 2 years ago
renovate[bot] 28de989a05 Update dependency ruby to v3.3.3 2 years ago
Alex Baker 97c3852f2f Add searchable filter picker 2 years ago
hugoalh f739cac8b4 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.8% (664 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
2 years ago
min7-i cd6a474cce Translated using Weblate (German)
Currently translated at 98.6% (656 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
Jose Delvani 4ffc11903e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
Jose Delvani 70d6cc63ca Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
islam2hamy 6e97e602c9 Translated using Weblate (Arabic)
Currently translated at 94.7% (630 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
2 years ago
Alex Baker 3251becf9b Fix filter settings activity sqlite crash 2 years ago
Alex Baker d9293c7262 Move some filters to kmp 2 years ago
Alex Baker 929a01cd8c Add jvm target to kmp 2 years ago
Alex Baker 0d5803b9ca Move filter value serialization to kmp 2 years ago
Alex Baker bbaaf27386 Move filters to multiplatform library 2 years ago
Alex Baker 4c1121869d Migrate to compose material3 2 years ago
Alex Baker b918e87e05 Prevent firing notifications one minute early 2 years ago
Alex Baker df8f637239 Fix deleting new subtasks from edit screen 2 years ago
Alex Baker 9fad43c6c9 Refresh when returning to foreground 2 years ago
Alex Baker eb95cd24d7 Disable AVD cache
Its causing actions to hang
2 years ago
Alex Baker 30cb374a21 Revert "chore(deps): update actions/cache action to v4"
This reverts commit f8bb045d76.
2 years ago
Alex Baker b09a8967e4 Merge tag '13.9.9' 2 years ago
Alex Baker 39b56296bd Replace lifecycle-*-ktx deps 2 years ago
Alex Baker 1d8d2efce6 Update version and changelog 2 years ago
Alex Baker c9af39b6ba Fix import backup crashes 2 years ago
renovate[bot] f8bb045d76 chore(deps): update actions/cache action to v4 2 years ago
renovate[bot] 4040a2379b fix(deps): update dependency com.google.android.gms:play-services-oss-licenses to v17.1.0 2 years ago
Alex Baker c4ee7479ca
Cache avd 2 years ago
Alex Baker be861597ef Merge branch '13.9.8' 2 years ago
Alex Baker f27332595d Set root project name for project accessors 2 years ago
Alex Baker ea7f051d85 Revert "Restore @Transaction annotations"
This reverts commit b35090cd43.
2 years ago
Alex Baker 8be7fab033 Update version and changelog 2 years ago
Alex Baker d6e0c0bdcf Fix showing completed tasks in subtask filter 2 years ago
Alex Baker 5ec02011f8 Fix backup import crashes 2 years ago
Alex Baker b35090cd43 Restore @Transaction annotations 2 years ago
renovate[bot] 92f62450ae fix(deps): update accompanist to v0.34.0 2 years ago
renovate[bot] 3ca6912492 fix(deps): update dependency androidx.appcompat:appcompat to v1.7.0 2 years ago
renovate[bot] 080b1428dd fix(deps): update room to v2.7.0-alpha03 2 years ago
Alex Baker f67c3bc56c Enable typesafe project accessors 2 years ago
renovate[bot] 5d0e88a620 fix(deps): update dependency com.google.android.gms:play-services-location to v21.3.0 2 years ago
renovate[bot] c5d5795fe2 fix(deps): update lifecycle to v2.8.1 2 years ago
renovate[bot] 3bbc0e0ab0 fix(deps): update dependency androidx.sqlite:sqlite-bundled to v2.5.0-alpha03 2 years ago
Alex Baker 009a195580 Update plugin definitions 2 years ago
renovate[bot] 772f69d8c0 fix(deps): update dependency com.google.apis:google-api-services-drive to v3-rev20240521-2.0.0 2 years ago
renovate[bot] 4229bf7067 fix(deps): update dependency com.google.apis:google-api-services-tasks to v1-rev20240526-2.0.0 2 years ago
Alex Baker 212a4b0a3d Delete transaction check
This was using platform sqlite
2 years ago
Alex Baker 4ddfe937b0 Finish converting data module to kmp 2 years ago
Alex Baker 19de0e08a5 Migrate to bundled sqlite 2 years ago
Alex Baker 60211355e0 Remove Geofence constructors 2 years ago
Alex Baker 17d218aa4e Add CommonParcelize 2 years ago
Alex Baker 505c8c29d5 Make sure dao methods are suspending 2 years ago
Alex Baker 7149308c97 Move Android platform stuff out of data 2 years ago
Alex Baker 2c5a497007 Fix backup import crash 2 years ago
Alex Baker 09f53fe1e5 Ignore multiplatform agp warnings 2 years ago
Alex Baker 5da4183aed Move ksp to gradle catalog 2 years ago
Alex Baker d35912e503 Kotlin 2.0 2 years ago
renovate[bot] 82fd99f83e fix(deps): update lifecycle to v2.8.0 2 years ago
renovate[bot] f944becea1 fix(deps): update dependency com.google.apis:google-api-services-drive to v3-rev20240509-2.0.0 2 years ago
Alex Baker acd713dc5b AGP 8.4.1 2 years ago
Alex Baker 1a93c87ad9 Update version and changelog 2 years ago
Alex Baker c4e25b8b15 Fix tests 2 years ago
Alex Baker e11c0d2528 Add default reminders when adding due/start date 2 years ago
Alex Baker 2fc6833854 Don't crash on missing vtodo value 2 years ago
Alex Baker 4a2fb13d10 Converting data module to kmp - WIP 2 years ago
Alex Baker a2572e2dee Remove CaldavCalendarMaker 2 years ago
Alex Baker 64e05c9f8f Convert Tag to data class 2 years ago
Alex Baker ad833b5f49 Convert TagData to data class 2 years ago
Alex Baker eea944cc7b Update version and changelog 2 years ago
Alex Baker c82dfc7d39 Fix test? 2 years ago
Alex Baker 8607f9556a Fix test 2 years ago
Alex Baker f338e84d46 Fix warnings in Migrations 2 years ago
Alex Baker 9ee739627e Remove AlarmEntry 2 years ago
Alex Baker a49c233584 Make notification immutable 2 years ago
Alex Baker 74fca07c1b Make alarm immutable 2 years ago
Alex Baker 5bd0cef42e Remove extra alarm constructor 2 years ago
Alex Baker 4c245edbb4 Fix snooze causing duplicate notifications 2 years ago
Alex Baker 97a3f074d0 Update alarms after completion transaction 2 years ago
Alex Baker 86ecd3cf81 Synchronize alarms before saving 2 years ago
Alex Baker 07a2eda5ea Cancel notifications in TaskCompleter 2 years ago
renovate[bot] 09ffbdd036 fix(deps): update dependency com.google.firebase:firebase-crashlytics-gradle to v3 2 years ago
renovate[bot] 60f22146ca fix(deps): update dependency androidx.fragment:fragment-ktx to v1.7.1 2 years ago
renovate[bot] c11225abaf fix(deps): update kotlin 2 years ago
dependabot[bot] 133ea493e3 Bump rexml from 3.2.6 to 3.2.8
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.6 to 3.2.8.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.6...v3.2.8)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2 years ago
Alex Baker 0ba901be69 Remove livedata from data module 2 years ago
Alex Baker ebe5e5c009 Replace gson with kotlin serialization 2 years ago
Alex Baker d556863fda Use kotlin serialization for backups 2 years ago
Alex Baker 55adbc2025 Reorganized data module 2 years ago
Alex Baker 06c4255886 Remove androidx.core from data module 2 years ago
renovate[bot] 4734a99bae fix(deps): update mockito monorepo to v5.12.0 2 years ago
Alex Baker a6a8cac8e4 Update dependencies 2 years ago
Alex Baker c3fc9a57cc Replace now with currentTimeMillis 2 years ago
Alex Baker 6e14d07d0c Move Room to data module 2 years ago
Alex Baker 6118121698 Moving some code out of TimerPlugin 2 years ago
Alex Baker 6bf3bd4d08 Update version and changelog 2 years ago
Alex Baker 065be79355 Update notification work logic 2 years ago
Alex Baker f8f8ba3c51 Don't adjust random reminder time 2 years ago
Alex Baker 89465f36b3 Update version and changelog 2 years ago
Alex Baker 1380a34ffa Fix alarm test 2 years ago
Alex Baker 10af5280a3 Fix random reminders 2 years ago
Alex Baker 8c0f7b952d ForegroundInfo for expedited work on Android 11- 2 years ago
Alex Baker 65362b203f Update version and changelog 2 years ago
Alex Baker 3327f97a17 Revert change to not delete evicted notifications 2 years ago
Alex Baker c9fc02a42e Enable room kotlin codegen 2 years ago
renovate[bot] 93670bb9e4 fix(deps): update dependency com.google.firebase:firebase-bom to v33 2 years ago
Alex Baker 1fc6a50d0b Update version and changelog 2 years ago
Alex Baker e1ef924909 Revert "Load initial data in task edit view model"
This reverts commit b2efb42d55.
2 years ago
Alex Baker 686cb5d346 Add empty filter 2 years ago
renovate[bot] ebec25c4cb fix(deps): update dependency com.google.android.material:material to v1.12.0 2 years ago
renovate[bot] c140f7e673
fix(deps): update dependency com.squareup.leakcanary:leakcanary-android to v2.14 2 years ago
renovate[bot] efbcf11a4a fix(deps): update dependency com.google.apis:google-api-services-drive to v3-rev20240327-2.0.0 2 years ago
renovate[bot] 6adee85a37 fix(deps): update dependency com.google.apis:google-api-services-tasks to v1-rev20240423-2.0.0 2 years ago
Alex Baker 5c8643110b Update back press and intent handling 2 years ago
Alex Baker abd13aeb75 Exclude META-INF/INDEX.LIST 2 years ago
Alex Baker c210fe1893 Fix finishing recurrence 2 years ago
Alex Baker 26aa916c20 Fix widget crash 2 years ago
renovate[bot] 1eff2d1cd5 fix(deps): update dependency androidx.fragment:fragment-ktx to v1.7.0 2 years ago
islam2hamy c90e683ea3
Translated using Weblate (Arabic)
Currently translated at 94.1% (626 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
2 years ago
Alex Baker 3cd0295b71 Refactor notification scheduling
* Remove foreground service
* Use expedited work to trigger notifications
* Remove miscellaneous notification channel
2 years ago
Alex Baker 95c351e9fd Remove midnight refresh worker 2 years ago
renovate[bot] 4ddb7816f1 fix(deps): update dependency androidx.compose:compose-bom to v2024.05.00 2 years ago
renovate[bot] 91c30f7bbf chore(deps): update dependency gradle to v8.7 2 years ago
renovate[bot] 3f4398b6e0 chore(deps): update dependency fastlane to v2.220.0 2 years ago
renovate[bot] c822e989a3 fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.13 2 years ago
renovate[bot] da146723e5 chore(deps): update dependency ruby to v3.3.1 2 years ago
109247019824 931626c84a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (665 of 665 strings)

Co-authored-by: 109247019824 <stoyan@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
Translation: Tasks.org/Android
2 years ago
Alex Baker c534632c52 Pass uuid to TaskAdapter.onCompletedTask 2 years ago
Alex Baker c1347a7455 Update version and changelog 2 years ago
renovate[bot] 9544909a58 Update dependency androidx.activity:activity-compose to v1.9.0 2 years ago
Yurt Page 5c10dce2b9 fastlane: i18n ru
Signed-off-by: Yurt Page <yurtpage@gmail.com>
2 years ago
Alex Baker 584d4a5cbb Move after update work inside transaction 2 years ago
Alex Baker 7c68a7fa59 AGP 8.4.0 2 years ago
purushottamyadavbattula 215cc838ef Sending local broadcast refresh event for refreshing nav drawer menu to communicate about update events 2 years ago
Alex Baker d60472d1bc Remove RefreshScheduler 2 years ago
Alex Baker f84a37a60a Revert "Replace refresh work with coroutines"
Widgets 😢
2 years ago
Alex Baker 7fb85b6da1 Replace refresh work with coroutines 2 years ago
Alex Baker dc90e583e4 Fix hiding empty items in drawer 2 years ago
Don Zouras 0eac5f61eb Translated using Weblate (Esperanto)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
Milo Ivir c686ce883d Translated using Weblate (Croatian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
2 years ago
大王叫我来巡山 ab25398cd0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
renovate[bot] 3b1c133d22 Update kotlin 2 years ago
renovate[bot] 3bfd0ab4f8 Update dependency com.google.firebase:firebase-bom to v32.8.1 2 years ago
Liz de Sartiges ffc0113d7f Initial support for z flip 5 cover screen
see : https://developer.samsung.com/galaxy-z/flex_window.html
2 years ago
Don Zouras 9de9718ad5 Translated using Weblate (Esperanto)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
Oğuz Ersen a7d2c9c406 Translated using Weblate (Turkish)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
gallegonovato b3006b9ac2 Translated using Weblate (Spanish)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
Don Zouras de3ef1f9c9 Translated using Weblate (Esperanto)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
Alex Baker ce9e722a3f Delete more unused tag picker code 2 years ago
Alex Baker 4b892a0eb1 Rename to TagPickerActivity
Delete some more unused code
2 years ago
Hady e6e275834a
Tag picker compose (#2849)
TagPickerActivity refactoring to Compose

1. state of the SearchBar moved to the viewModel
2. viewModel used as parameter to @Composables instead of number of separate ones
3. Import of TagPickerActivity is replaced by TagPickerActivityCompose through the project
2 years ago
Alex Baker 782f4d6d7c Fix swipe to snooze time 2 years ago
elmuffo a1da71d3e1
Swipe to snooze (#2839) 2 years ago
Alex Baker c793a300cc Add preference summary 2 years ago
Ilya Bizyaev bf84bf9e82 [Feature] Add an option to allow adding tasks without unlock
I often find myself picking up the phone just to write down a task, so
I've added a notification drawer quick setting to speed things up.
However, when I use this button from the lock screen, I have to unlock
my device first, which is annoying. I would like to be able to add (not
view) tasks without the need to unlock my phone.

This PR adds such an optional feature for devices running Android 8.1+.
Note that I am not an Android developer, so the implementation is
probably not perfect. However, from my testing on an emulator, this
code seems to do just what I want.
2 years ago
SC 363b29babb
Translated using Weblate (Portuguese)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
2 years ago
min7-i c1ff953f5c Translated using Weblate (German)
Currently translated at 99.3% (651 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
Alex Baker 63482e5db9 AGP 8.3.2 2 years ago
Emin Tufan Çetin 2f7dc0c7f1
Translated using Weblate (Turkish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
Lionel HANNEQUIN d672507fae
Translated using Weblate (French)
Currently translated at 99.8% (654 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
2 years ago
Jonatan Nyberg ce2a3c8a3f
Translated using Weblate (Swedish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
2 years ago
sorifukobexomajepasiricupuva33 9cd114d68b
Translated using Weblate (German)
Currently translated at 99.2% (650 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
Patrick V. Leguizamon 0e663f0e08
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
Mayhm 1d1efd008d
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
Alex Baker 26ab3d5866 Exclude past snooze times from Snooze Filter
This should exclude tasks that were completed before their snooze time
lapsed
2 years ago
Mayhm 9a4fcbbd39
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
Alex Baker 72bfda9224 Fix subtasks row for new tasks 2 years ago
Alex Baker 1067de4183 Emit SectionedDataSource from TaskListViewModel 2 years ago
Alex Baker d686b8c7e0 Add TasksMenu composable 2 years ago
Alex Baker b2efb42d55 Load initial data in task edit view model 2 years ago
Fabio Parri 3448808c94 Translated using Weblate (Portuguese)
Currently translated at 99.3% (651 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
2 years ago
Alex Baker 06a9626052 Update version and changelog 2 years ago
Alex Baker e92ab7f7e1 Update to latest ModalBottomSheet 2 years ago
Alex Baker 4ff7b18c0f Fix cloning google tasks 2 years ago
Alex Baker 91887f6b17 Fix backup import dropping some tasks 2 years ago
Alex Baker cf30b56098 Update version and changelog 2 years ago
Alex Baker 9bcadaab5a Fix astrid manual ordering crash in widget 2 years ago
Alex Baker be766074b0 Fix activity crash 2 years ago
Ihor Hordiichuk 64a42a3f61 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
2 years ago
Mayhm 7b65ba6f06 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.6% (646 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
109247019824 ac2b270e9e Translated using Weblate (Bulgarian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
Alex Baker db2ea0a039 Fix import crash on missing remoteId 2 years ago
renovate[bot] 08b78fe9f4 Update dependency androidx.compose:compose-bom to v2024.03.00 2 years ago
Alex Baker 1a1301ae3e Update version and changelog 2 years ago
Milo Ivir d00061aa7f Translated using Weblate (Croatian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
2 years ago
大王叫我来巡山 45add6ab32 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Pierfrancesco Passerini af43737c4e Translated using Weblate (Italian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
2 years ago
macpac59 dd40e59b17 Translated using Weblate (German)
Currently translated at 98.9% (648 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
gallegonovato 13f3248a01 Translated using Weblate (Spanish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
renovate[bot] f6972e3e30 Update dependency com.android.tools.build:gradle to v8.3.1 2 years ago
Alex Baker 83cf48a836 Don't pass filter to remoteviews service
This was working on emulators but crashing in the wild
2 years ago
Alex Baker b7b4747a04 Update translation credits
Was in a rush to get a bug fix out!
2 years ago
Alex Baker 6bec2ceef0 Update version and changelog 2 years ago
Milo Ivir d1e60d6512 Translated using Weblate (Croatian)
Currently translated at 100.0% (654 of 654 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
2 years ago
bittin1ddc447d824349b2 2b85089d3a Translated using Weblate (Swedish)
Currently translated at 100.0% (654 of 654 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
2 years ago
ferranpujolcamins 2a0ef9feb6 Translated using Weblate (Catalan)
Currently translated at 34.7% (227 of 654 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
2 years ago
109247019824 33adbbd884 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (654 of 654 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
Alex Baker c25eb2e0c5 Fix crash on earlier Android versions 2 years ago
Alex Baker 14026356eb Fix widget arrow color 2 years ago
Alex Baker b328651dd4
Run tests on generic flavor (#2808) 2 years ago
Alex Baker a0e9bfabeb Update version and changelog 2 years ago
大王叫我来巡山 a1ad421b33 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Mayhm 3488a08af1 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.4% (648 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
gallegonovato b71d1af516 Translated using Weblate (Spanish)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
Alex Baker 041dce8617 Add dynamic widget theme 2 years ago
Alex Baker 3d92ca78dd Remove unused attrs 2 years ago
Alex Baker a32fce2d8b Remove widget_title_* layouts 2 years ago
Alex Baker 4fb3cda173 Fix loading selected filter on startup 2 years ago
Alex Baker f33cc896dd Refactor widget 2 years ago
Alex Baker 4d1d6a06a8 Fix repeat until crash 2 years ago
Alex Baker 2202516688 Update isOverdue logic 2 years ago
Alex Baker d4a5008ecb Update CI 2 years ago
Alex Baker 08189e10f1 Don't use gradle managed devices in CI 2 years ago
Anonymous d3e4c066d8 Translated using Weblate (Sinhala)
Currently translated at 92.0% (606 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
2 years ago
Anonymous bbc5ae4d6d Translated using Weblate (Tamil)
Currently translated at 68.2% (449 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
2 years ago
Anonymous c6cc00cf07 Translated using Weblate (Thai)
Currently translated at 89.5% (589 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/th/
2 years ago
Anonymous 22e8720021 Translated using Weblate (Hebrew)
Currently translated at 89.5% (589 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
2 years ago
Anonymous a3ce98f0ea Translated using Weblate (Danish)
Currently translated at 95.8% (631 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
2 years ago
macpac59 258f607d52 Translated using Weblate (German)
Currently translated at 99.6% (656 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
ngocanhtve 927acae7e4 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
2 years ago
Odweta 49ad9bafe3 Translated using Weblate (Czech)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
2 years ago
Alex Baker 6df616d9ce Use gradle managed devices 2 years ago
Alex Baker 157668e35a Fix tests 2 years ago
Aslam Karachiwala efdf343869 For English (en), replaced "until" with "ends on" in 'repeats_*' keys. 2 years ago
renovate[bot] 5606df17c5 Update flipper to v0.250.0 2 years ago
renovate[bot] fc3b4971f4 Update flipper to v0.249.0 2 years ago
renovate[bot] 6a1699bb33 Update dependency androidx.compose:compose-bom to v2024.02.02 2 years ago
renovate[bot] e49303d5ca Update dependency com.google.firebase:firebase-bom to v32.7.4 2 years ago
renovate[bot] 4b55569b51 Update mockito monorepo to v5.11.0 2 years ago
renovate[bot] 2d7145cde3 Update plugin com.google.devtools.ksp to v1.9.22-1.0.18 2 years ago
renovate[bot] f2ab8bed95 Update dependency com.google.firebase:firebase-bom to v32.7.3 2 years ago
renovate[bot] a5bc4cf536 Update dependency com.android.tools.build:gradle to v8.3.0 2 years ago
renovate[bot] 1b35372b3a Update dependency com.google.apis:google-api-services-tasks to v1-rev20240225-2.0.0 2 years ago
Alex Baker c0fd4bf66a Convert LocalBroadcastManager to Kotlin 2 years ago
renovate[bot] 5d366f0d61 Update dependency io.coil-kt:coil-gif to v2.6.0 2 years ago
renovate[bot] d0635ac6f3 Update hilt to v1.2.0 2 years ago
renovate[bot] 8d4cf4daa5 Update dependency androidx.compose.compiler:compiler to v1.5.10 2 years ago
renovate[bot] d1e439e70e Update dependency androidx.compose:compose-bom to v2024.02.01 2 years ago
renovate[bot] 4d4c3e5193 Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-test to v1.8.0 2 years ago
Alex Baker 20f87061fd Convert WidgetPreferences to Kotlin 2 years ago
renovate[bot] c03e3747c6 Update dependency com.google.gms:google-services to v4.4.1 2 years ago
renovate[bot] 925b1b9124 Update dependency com.google.firebase:firebase-bom to v32.7.2 2 years ago
Alex Baker 43db712f64 Update version and changelog 2 years ago
Alex Baker 9d33a73ee6 Fix drawer highlighting 2 years ago
renovate[bot] 391c600ce2 Update flipper to v0.247.0 2 years ago
renovate[bot] ee4ae94817 Update dependency androidx.compose:compose-bom to v2024.02.00 2 years ago
renovate[bot] 70b4be1447
Update dependency androidx.compose.compiler:compiler to v1.5.9 2 years ago
Don Zouras bc54d92789 Translated using Weblate (Esperanto)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
Сергій 2f34724b95 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
2 years ago
Alex Baker 940fdc28dd Strip markdown from repeat snackbar 2 years ago
Alex Baker 68542fce38 Fix repeat task toast displaying old due date 2 years ago
renovate[bot] 7ba2977100 Update dependency gradle to v8.6 2 years ago
Don Zouras cb242539f0 Translated using Weblate (Esperanto)
Currently translated at 98.4% (648 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
bittin1ddc447d824349b2 304841f2c3 Translated using Weblate (Swedish)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
2 years ago
Don Zouras 819ea797e6 Translated using Weblate (Esperanto)
Currently translated at 98.4% (648 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
abc0922001 2dbea57262 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
2 years ago
Don Zouras 516a916fd5 Translated using Weblate (Esperanto)
Currently translated at 96.9% (638 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
109247019824 3bd52efc80 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
renovate[bot] 64af955ea7 Update flipper to v0.246.0 2 years ago
Milo Ivir 4cc5ec9639 Translated using Weblate (Croatian)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
2 years ago
大王叫我来巡山 0d9292e53a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Oğuz Ersen 732ccf1913 Translated using Weblate (Turkish)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
gallegonovato a2852bdbbf Translated using Weblate (Spanish)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
Don Zouras 68790ad401 Translated using Weblate (Esperanto)
Currently translated at 91.7% (603 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
Alex Baker e9afacb595 Include hidden subtasks when clearing completed 2 years ago
Alex Baker cf182aceab Display number of tasks to be cleared 2 years ago
Alex Baker db889d233a Remove AfterSaveWork 2 years ago
Alex Baker 457b89c092 Remove cleanup work 2 years ago
Don Zouras ad53af1b6a Translated using Weblate (Esperanto)
Currently translated at 87.0% (572 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
renovate[bot] 2c32b08c97 Update dependency androidx.compose:compose-bom to v2024 2 years ago
renovate[bot] a2fcf57c9e Update mockito monorepo to v5.10.0 2 years ago
renovate[bot] 59a61325f2 Update dependency org.osmdroid:osmdroid-android to v6.1.18 2 years ago
vulewuxe86 38a6064677 Reverted code
Reverted Code involving the action bar search function
2 years ago
renovate[bot] 67daccf3e8 Update lifecycle to v2.7.0 2 years ago
renovate[bot] dfe829d2a1 Update dependency com.google.android.gms:play-services-location to v21.1.0 2 years ago
renovate[bot] 23c64f4d28 Update dependency com.google.apis:google-api-services-drive to v3-rev20240123-2.0.0 2 years ago
renovate[bot] e4b8f694f3 Update dependency com.google.firebase:firebase-bom to v32.7.1 2 years ago
renovate[bot] e667c80731 Update kotlin 2 years ago
renovate[bot] 909b077e25 Update dependency com.android.tools.build:gradle to v8.2.2 2 years ago
Don Zouras e6fab9ad45 Translated using Weblate (Esperanto)
Currently translated at 82.1% (540 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
raulmagdalena 9474f5b7af Translated using Weblate (Catalan)
Currently translated at 34.5% (227 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
2 years ago
Don Zouras 1ee051d768 Translated using Weblate (Esperanto)
Currently translated at 75.1% (494 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
Don Zouras f42edaa158 Translated using Weblate (Esperanto)
Currently translated at 73.8% (485 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
2 years ago
RayBB b97eade59c fix typos 2 years ago
renovate[bot] 41aa1ca65f Update flipper to v0.245.0 2 years ago
renovate[bot] 3e9a13ea14 Update mockito monorepo to v5.9.0 2 years ago
renovate[bot] d966e8a12b Update dependency fastlane to v2.219.0 2 years ago
renovate[bot] 8ba4e64994 Update dependency com.android.tools.build:gradle to v8.2.1 2 years ago
109247019824 ee792f1ceb Translated using Weblate (Bulgarian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
renovate[bot] caa09163a1 Update dependency ruby to v3.3.0 2 years ago
renovate[bot] d270abf5b3 Update dependency com.facebook.soloader:soloader to v0.11.0 2 years ago
renovate[bot] 1ef530abad Update dependency com.squareup.leakcanary:leakcanary-android to v2.13 2 years ago
renovate[bot] df26a6dbb9 Update flipper to v0.244.0 2 years ago
renovate[bot] 1882c3b7e0 Update dependency androidx.activity:activity-compose to v1.8.2 2 years ago
renovate[bot] cb53a0ca9f Update dependency com.google.android.material:material to v1.11.0 2 years ago
renovate[bot] b2fdef1ae7 Update dagger.hilt to v2.50 2 years ago
renovate[bot] defb16ce95 Update kotlin 2 years ago
renovate[bot] 823f99b28a Update flipper to v0.243.0 2 years ago
renovate[bot] 6df872b1a1 Update actions/upload-artifact action to v4 2 years ago
renovate[bot] 133b960583 Update flipper to v0.242.0 2 years ago
renovate[bot] 2e6753faec Update dependency com.google.apis:google-api-services-drive to v3-rev20231128-2.0.0 2 years ago
renovate[bot] cb07c2c267 Update dependency com.google.firebase:firebase-bom to v32.7.0 2 years ago
renovate[bot] 23757ab320 Update kotlin 2 years ago
Alex Baker 1b6ce0e48e Ignore empty rrule 2 years ago
Kakaeo 5af012068f Translated using Weblate (Persian)
Currently translated at 29.9% (197 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fa/
2 years ago
Alex Baker 6c9ffa57d7 Fix reparenting task to another list 2 years ago
Alex Baker 52c54b1eac Fix excessive querying (again) 2 years ago
Alex Baker c8d81b44b6 Fix excessive querying 2 years ago
renovate[bot] ef27a50e42 Update mockito monorepo to v5.8.0 2 years ago
Alex Baker bde1356e7f Add task to MainActivityViewModel state 2 years ago
Alex Baker 6c031925ba Replace some setter usage with constructors 2 years ago
Alex Baker 8058414137 Use release build for compose metrics 2 years ago
Alex Baker 3e37ea50f0 Update compose-compiler to v1.5.5 2 years ago
renovate[bot] 62f5a9c492 Update actions/setup-java action to v4 2 years ago
renovate[bot] a84fd65722 Update dependency androidx.room:room-ktx to v2.6.1 2 years ago
renovate[bot] 517b2d8f1b Update dependency gradle to v8.5 2 years ago
renovate[bot] 90942bf0be Update dependency com.google.dagger:hilt-android to v2.49 2 years ago
Alex Baker 83c3d1c4ba AGP 8.2.0 2 years ago
Software In Interlingua 6362ece569 Translated using Weblate (Interlingua)
Currently translated at 5.6% (37 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ia/
2 years ago
renovate[bot] 8df85041b8 Update flipper to v0.240.0 2 years ago
ngocanhtve 6d85af4c34 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
2 years ago
Olli 63f001dd72 Translated using Weblate (Finnish)
Currently translated at 99.0% (651 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
2 years ago
renovate[bot] de49a50944 Update dependency fastlane to v2.217.0 2 years ago
renovate[bot] df20d2f593 Update dependency com.android.billingclient:billing-ktx to v6.1.0 2 years ago
renovate[bot] fd16772236 Update dependency androidx.activity:activity-compose to v1.8.1 2 years ago
renovate[bot] b77caac255 Update dependency com.google.firebase:firebase-bom to v32.6.0 2 years ago
renovate[bot] ad058ed09b Update kotlin 2 years ago
Alex Baker 8312113d7b Merge branch '13.6.3' 2 years ago
Alex Baker ee21cc660e Update version and changelog 2 years ago
Alex Baker 5edc481ffe Fix etag check for DecSync 2 years ago
Alex Baker d0360a4862 Revert "Update timestamp on edits"
This reverts commit b477623524.
2 years ago
Alex Baker ac35002408 Revert "Update modification timestamp logic (#2585)"
This reverts commit 775289b058.
2 years ago
Subham Jena 582ebad0f0 Translated using Weblate (Odia)
Currently translated at 20.7% (136 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/or/
2 years ago
Shaban Mamedov 684c47184a Added translation using Weblate (Azerbaijani) 2 years ago
ngocanhtve ac7a519e4e Translated using Weblate (Vietnamese)
Currently translated at 99.6% (655 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
2 years ago
renovate[bot] 5c2b41af9d Update flipper to v0.238.0 2 years ago
renovate[bot] 13986cf380 Update flipper to v0.237.0 2 years ago
CennoxX c4f0b404e9 Translated using Weblate (German)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
Alex Baker 145b5afbc6 AGP 8.2.0-rc03 2 years ago
elig0n 0b87a206fe Translated using Weblate (Hebrew)
Currently translated at 90.2% (593 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
2 years ago
mm4c d0e70ceea8 Translated using Weblate (Dutch)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
2 years ago
J. Lavoie bf3546a878 Translated using Weblate (French)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
2 years ago
Alex Baker 8895acbf6b Prevent flashing empty inbox when switching lists 2 years ago
Alex Baker a52b1200f5 Fix menu expansion 2 years ago
renovate[bot] 23964e807a
Update flipper to v0.236.0 (#2617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
Alex Baker 287b106dd4 Highlight selected list in drawer 2 years ago
renovate[bot] 33bab626e0
Update mockito monorepo to v5.7.0 (#2613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
renovate[bot] a980cd75cc Update hilt to v1.1.0 2 years ago
renovate[bot] 7eac4ac223 Update dependency androidx.fragment:fragment-ktx to v1.6.2 2 years ago
renovate[bot] 82cb2f7d3f
Update dependency com.android.tools:desugar_jdk_libs to v2.0.4 2 years ago
renovate[bot] da2646597c
Update flipper to v0.235.0 (#2608)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
renovate[bot] 495855133c Update dependency com.google.firebase:firebase-bom to v32.5.0 2 years ago
renovate[bot] 242cb61662 Update coil to v2.5.0 2 years ago
renovate[bot] ab8886f3dc Update flipper to v0.234.0 2 years ago
Alex Baker e48e92d2e6 Fix dates 🤦 2 years ago
Alex Baker 5f22f5cd38 AGP 8.2.0-rc02 2 years ago
Alex Baker 8a47cc2934 Don't set local only notifications on Android 14+ 2 years ago
Alex Baker 0d94729d37 Merge branch '13.6.2' 2 years ago
Alex Baker 14599eb3c0 Update version and changelog 2 years ago
Alex Baker b477623524 Update timestamp on edits
Fix bugs introduced by 775289b05
2 years ago
Alex Baker c8bfb67b50 Allow multi-select for gallery picker 2 years ago
Alex Baker 0a36e58525 Allow multi-select in storage picker 2 years ago
Alex Baker 94a719cb66 Improve menu dismissal
Copy M3 ModalBottomSheet to add 'skipPartiallyCollapsed' support 😕
2 years ago
Alex Baker b5748aa8e6 New drawer 2 years ago
Alex Baker 7fd5647cb8 Exclude hidden and completed from snoozed filter 2 years ago
Alex Baker 2545832d67 Update version and changelog 2 years ago
Alex Baker 738bf435db Fix some back handlers 2 years ago
renovate[bot] ab02323f29
Update flipper to v0.233.0 (#2599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
Alex Baker d73a9d2795 Update version and changelog 2 years ago
Alex Baker ebe67354b6 Add tests for recurrence without intervals 2 years ago
Alex Baker 58edc6b4d8 Fix basic hourly and weekly recurrence 2 years ago
Weblate (bot) 78b2cdac06
Translations update from Hosted Weblate (#2596)
* Translated using Weblate (French)

Currently translated at 99.5% (654 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/

* Translated using Weblate (French)

Currently translated at 99.5% (654 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/

---------

Co-authored-by: Bruno Duyé <brunetton@gmail.com>
Co-authored-by: Lionel HANNEQUIN <Lionel-HANNEQUIN@users.noreply.hosted.weblate.org>
2 years ago
renovate[bot] c3d7db0087
Update flipper to v0.232.0 (#2597)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
renovate[bot] d7b1770b85
Update flipper to v0.231.0 (#2591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
Weblate (bot) bebb3165a5
Translations update from Hosted Weblate (#2589)
Translated using Weblate (French)

Currently translated at 99.5% (654 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/

Co-authored-by: Lionel HANNEQUIN <Lionel-Fr-56@users.noreply.hosted.weblate.org>
2 years ago
Alex Baker ad1198aace Don't require network for OpenTasks sync 2 years ago
Alex Baker 7ae77a81e1 Don't need background sync for OpenTasks
Background sync handled by sync apps
2 years ago
Weblate (bot) 3e79dd5190
Translations update from Hosted Weblate (#2587)
Translated using Weblate (French)

Currently translated at 99.6% (655 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/

Co-authored-by: Lionel HANNEQUIN <Lionel-Fr-56@users.noreply.hosted.weblate.org>
2 years ago
renovate[bot] 9d57a849bf
Update flipper to v0.230.0 (#2586)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
Alex Baker 82103eb477 Make chips skippable 2 years ago
renovate[bot] 11fa9a2bbd Update dependency com.google.firebase:firebase-bom to v32.4.0 2 years ago
renovate[bot] b65831120f Update room to v2.6.0 2 years ago
renovate[bot] f26a90a4f9 Update hilt to v1.1.0-rc01 2 years ago
renovate[bot] dd3aa20485 Update dependency androidx.recyclerview:recyclerview to v1.3.2 2 years ago
renovate[bot] 8c84e1af50 Update dependency com.google.android.gms:play-services-maps to v18.2.0 2 years ago
renovate[bot] dc1eac23b9 Update dependency androidx.compose:compose-bom to v2023.10.01 2 years ago
renovate[bot] 5883952883
Update flipper to v0.229.0 (#2579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
Alex Baker 775289b058
Update modification timestamp logic (#2585) 2 years ago
Alex Baker ee500c24b1
Convert filters to data classes (#2569) 2 years ago
Igor Sorocean 68fd36b14d Translated using Weblate (Romanian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
2 years ago
renovate[bot] b8f265fa36 Update okhttp to v4.12.0 2 years ago
Alex Baker cf4e6c1273 Update AGP to 8.2.0-rc01 2 years ago
renovate[bot] 0dcc577497 Update flipper to v0.227.0 2 years ago
kmj-99 b525e8cab3 Refactor: Change deprecated code in Fragment onAttach 2 years ago
renovate[bot] db0ad280eb Update dependency com.google.auth:google-auth-library-oauth2-http to v1.20.0 2 years ago
Alex Baker 5092f80dcc Update billing to v6.0.1 2 years ago
Kazushi Hayama 6bc42363dd Translated using Weblate (Japanese)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
2 years ago
Michal Šmahel 115461c7b0 Translated using Weblate (Czech)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
2 years ago
renovate[bot] 369c508890 Update flipper to v0.226.0 2 years ago
bittin1ddc447d824349b2 a432cc33cc Translated using Weblate (Swedish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
2 years ago
Alex Baker e5b51150cb Start sync if enqueued when app is backgrounded 2 years ago
renovate[bot] d43639556e Update dependency com.google.android.material:material to v1.10.0 2 years ago
Alex Baker ef2dd8f202 Merge branch '13.6' 2 years ago
Alex Baker abc099c309 Update version and changelog 2 years ago
Alex Baker 348367e084 Replace INSTALL_SHORTCUT with requestPinShortcut 2 years ago
renovate[bot] 6a73f6745c Update flipper to v0.225.0 2 years ago
renovate[bot] 5185c14e44 Update mockito monorepo to v5.6.0 2 years ago
Olli aa7ff0fa16 Translated using Weblate (Finnish)
Currently translated at 99.0% (651 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
2 years ago
renovate[bot] 12b979d363 Update flipper to v0.224.0 2 years ago
Alex Baker 082f741983 Convert Filter to data class 2 years ago
Alex Baker 0bdd83988f Fix lint errors 2 years ago
Alex Baker 60784c10b5 Update filter fields 2 years ago
Alex Baker da8467ac56 Remove constructor 2 years ago
renovate[bot] 434d067822 Update dependency gradle to v8.4 2 years ago
renovate[bot] 04af310285 Update hilt to v1.1.0-beta01 2 years ago
renovate[bot] 5555771f45 Update dependency com.google.dagger:hilt-android-testing to v2.48.1 2 years ago
renovate[bot] 35b60df0ff Update dependency androidx.activity:activity-compose to v1.8.0 2 years ago
renovate[bot] fef19b4995 Update dependency androidx.compose:compose-bom to v2023.10.00 2 years ago
Alex Baker 4c25b81a4d Move Parcelable 2 years ago
Alex Baker 0f37f4859e Update compose reports 2 years ago
Alex Baker ee3d3fa4f5 Convert FilterListItem to interface 2 years ago
Alex Baker a32d35720a Refresh after changing sort mode 2 years ago
Alex Baker bf6fe02fe3 Convert FilterListItems to Kotlin 2 years ago
Alex Baker 6664defc16 Minor refactoring 2 years ago
renovate[bot] b318b930a5 Update flipper to v0.223.0 2 years ago
Loucura 91d18fd675 Translated using Weblate (Portuguese)
Currently translated at 99.8% (656 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
2 years ago
Alex Baker 94b6d7569b Move search to viewmodel 2 years ago
Alex Baker e70f5f3b24 Move query constants 2 years ago
renovate[bot] 68c21c4b1f Update dependency androidx.compose:compose-bom to v2023.09.02 2 years ago
renovate[bot] cbcc7f9bee Update dependency com.android.tools.build:gradle to v8.2.0-beta06 2 years ago
Milo Ivir ba394b9db4
Translated using Weblate (Croatian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
2 years ago
Eric 13298aa3be
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Alex Baker 993c41b197 Remove RecurringIntervalIntentService 2 years ago
Alex Baker 2bfc46f32b Remove CalendarReminderActivity 2 years ago
Alex Baker 4c61353411 Remove TimerControlSetCallback 2 years ago
Alex Baker f8d3985e97 Add hideKeyboard extension methods 2 years ago
Alex Baker c2a9d21f01 Make review request from edit fragment 2 years ago
Alex Baker 20c81417a0 Handle sort result in task list fragment 2 years ago
Alex Baker 77c86bbfb4 Move sync state to viewmodel 2 years ago
renovate[bot] 7e9ec26f53 Update flipper to v0.222.0 2 years ago
Alex Baker 928ec9f647 Add night mode context extensions 2 years ago
Alex Baker 84ab8d0517 Remove MainActivity.onBackPressed 2 years ago
Alex Baker db66a66578 Move subscription begging to viewmodel 2 years ago
Alex Baker ea8a4b5e2d Remove InjectingAppCompatActivity 2 years ago
Alex Baker 5a4485818f Update dependency androidx.compose:compose-bom to v2023.09.01 2 years ago
renovate[bot] 1d348fcac9 Update room to v2.6.0-rc01 2 years ago
renovate[bot] 79250cb8ff Update dependency com.android.tools.build:gradle to v8.2.0-beta05 2 years ago
renovate[bot] 5d550df62e Update flipper to v0.221.0 2 years ago
Pierfrancesco Passerini 1267fbeb0d Translated using Weblate (Italian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
2 years ago
renovate[bot] 2b0e285b42 Update dependency fastlane to v2.216.0 2 years ago
Alex Baker 374f10c731 Add subtasks in order for new tasks 2 years ago
abc0922001 a38fdc065e Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
2 years ago
Ihor Hordiichuk 6d4159eaac Translated using Weblate (Ukrainian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
2 years ago
Oğuz Ersen 20fe494cd9 Translated using Weblate (Turkish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
Frits van Bommel e7686bd9eb Translated using Weblate (Dutch)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
2 years ago
Kaci d4d721f060 Translated using Weblate (Hungarian)
Currently translated at 99.7% (666 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
2 years ago
Florian Trayon 1e9b39afd5 Translated using Weblate (French)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
2 years ago
Florian Trayon 8878df27c4 Translated using Weblate (Spanish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
C. Rüdinger 07eb9db157 Translated using Weblate (German)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
109247019824 b4ad27152f Translated using Weblate (Bulgarian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
kmj-99 417a1cca46 Change deprecated code from RecyclerView.ViewHolder 2 years ago
renovate[bot] 3a6086adbd
Update flipper to v0.220.0 (#2522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
Alex Baker 9f3f0a9698 Show unstarted tasks in widget by default 2 years ago
Alex Baker 8a085861de Update version and changelog 2 years ago
Alex Baker 7048f6a965 Fix crash in debug logging 2 years ago
Alex Baker a9cb7b0e89 Fix default reminders for remote icalendar tasks 2 years ago
Alex Baker 4c7e2caa73 Update OK/Cancel string
Was causing too much confusion for translators
2 years ago
Alex Baker 3a5e45283a Update change priority menu option 2 years ago
renovate[bot] a1885574da
Update dependency fastlane to v2.215.1 (#2520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2 years ago
vulewuxe86 113cf6f1b8
#2257 Change priority for selected items (#2452) 2 years ago
renovate[bot] 138cc21796 Update dependency com.google.firebase:firebase-bom to v32.3.1 2 years ago
Alex Baker dea3484a2f Actually update fastlane 2 years ago
Alex Baker 5948e4a958 Set googleplay as default flavor 2 years ago
renovate[bot] 10d2e8feda Update dependency com.google.gms:google-services to v4.4.0 2 years ago
renovate[bot] cef7998a52 Update dependency fastlane to v2.215.0 2 years ago
renovate[bot] 834bef7933 Update flipper to v0.219.0 2 years ago
renovate[bot] 8ed6afff2b Update flipper to v0.218.0 2 years ago
renovate[bot] 7d13e4f0ba Update dependency com.android.tools.build:gradle to v8.2.0-beta04 2 years ago
Alex Baker 5cb8419206 Fix network call on main thread 2 years ago
Alex Baker 7283491872 Update Hilt to 1.1.0-alpha01 2 years ago
Alex Baker 2de5b3c275 Use share text when subject is missing 2 years ago
Alex Baker 864550d027 Enable ksp for dagger 2 years ago
renovate[bot] b48348f30e Update dependency org.osmdroid:osmdroid-android to v6.1.17 2 years ago
renovate[bot] 81fdddc631 Update flipper to v0.216.0 2 years ago
Luna Jernberg 21cb25d902 Translated using Weblate (Swedish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
2 years ago
Anaemix b73ba43735 Translated using Weblate (Swedish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
2 years ago
renovate[bot] a3ba87e4e6 Update kotlin 2 years ago
renovate[bot] 26321633e2 Update dependency androidx.compose:compose-bom to v2023.09.00 2 years ago
renovate[bot] 1c3656a69c Update dependency com.google.firebase:firebase-bom to v32.2.3 2 years ago
renovate[bot] 88bb66a7b3 Update dependency com.google.firebase:firebase-crashlytics-gradle to v2.9.9 2 years ago
renovate[bot] 0f7c200851 Update dependency com.google.apis:google-api-services-drive to v3-rev20230822-2.0.0 2 years ago
renovate[bot] f6d5732c07 Update lifecycle to v2.6.2 2 years ago
renovate[bot] b278a04fce Update room to v2.6.0-beta01 2 years ago
renovate[bot] 71c2e2b0f6 Update dagger.hilt to v2.48 2 years ago
renovate[bot] 87639da922 Update dependency com.android.tools.build:gradle to v8.2.0-beta03 2 years ago
Anaemix d7e366712c Translated using Weblate (Swedish)
Currently translated at 98.5% (657 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
2 years ago
renovate[bot] 74ecb4a8bf Update actions/checkout action to v4 2 years ago
Emin Tufan Çetin 305bd24883 Translated using Weblate (Turkish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
renovate[bot] 68b7bef1ca Update flipper to v0.215.1 2 years ago
renovate[bot] f6a6b0716f Update flipper to v0.215.0 2 years ago
renovate[bot] dced669176 Update flipper to v0.214.0 2 years ago
Emin Tufan Çetin 1b431f7a61 Translated using Weblate (Turkish)
Currently translated at 98.9% (660 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
2 years ago
Joan Montané 2b3b7184e0 Translated using Weblate (Catalan)
Currently translated at 32.6% (218 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
2 years ago
renovate[bot] a7062fe937 Update flipper to v0.213.0 2 years ago
Alex Baker 573f6b897e Set audio attributes on completion sound 2 years ago
renovate[bot] e1845d71bc Update accompanist to v0.32.0 2 years ago
renovate[bot] 1027d57860 Update dependency com.google.apis:google-api-services-drive to v3-rev20230815-2.0.0 2 years ago
renovate[bot] a2c92b8fd9 Update mockito monorepo to v5.5.0 2 years ago
renovate[bot] 77643d7355 Update flipper to v0.212.0 2 years ago
Patrick V. Leguizamon 54911021a5 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.6% (651 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
2 years ago
renovate[bot] 908ac19754 Update dependency gradle to v8.3 2 years ago
Alex Baker 4ebd53fdf7 Enable dagger.ignoreProvisionKeyWildcards 2 years ago
Alex Baker a0fbeba938 'More settings' opens directly to channel settings 2 years ago
Alex Baker bd6000fcd6 Add subtasks to top 2 years ago
Alex Baker aa861cb5e5 Convert room to ksp 2 years ago
Alex Baker 17818c6e29 Remove checkstyle 2 years ago
Poesty Li ca6521db23
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Alex Baker dedf306106 Update kotlinx-coroutines-test to 1.7.3 2 years ago
Alex Baker 40f9b83dba Remove bundles from version catalog 2 years ago
Alex Baker c8b057867f Gradle Plugin 8.2.0-alpha16 2 years ago
Alex Baker d1ebd45492 Update to Kotlin 1.9, Compose compiler 1.5.1 2 years ago
Alex Baker ac28e26333 Update Room to 2.6.0-alpha03 2 years ago
renovate[bot] fdf9fbce08 Update flipper to v0.211.1 2 years ago
renovate[bot] 6d712642b3 Update dependency com.google.apis:google-api-services-drive to v3-rev20230714-2.0.0 2 years ago
renovate[bot] 329939e2b0 Update dependency androidx.compose:compose-bom to v2023.08.00 2 years ago
Alex Baker f62de8b7f3 Microsoft recurrence sync
Limit recurrence options for Microsoft tasks
2 years ago
deep map a2ef184c7d Translated using Weblate (German)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
Salif Mehmed 6ac2c88782 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
Naga ada31293ea Translated using Weblate (Japanese)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
2 years ago
Pierfrancesco Passerini 805d914ff4 Translated using Weblate (Italian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
2 years ago
109247019824 aa1b4ef71a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
vulewuxe86 3d0cf46f8d
Select the new items after duplication (#2446)
#1201 Select the new items after duplication
2 years ago
abc0922001 f7e2c7824a Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
2 years ago
Stefan 2e2bdbe07a Reduced minimum widget height 2 years ago
Alex Baker 427ee369b4 Fix miscellaneous inspections 2 years ago
Alex Baker 804c0f974a Force a due date for recurring tasks 2 years ago
109247019824 691dc635a9 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
renovate[bot] 9f2364867b Update dependency com.google.firebase:firebase-bom to v32.2.2 2 years ago
renovate[bot] cd638bba71
Update dependency com.google.firebase:firebase-crashlytics-gradle to v2.9.8 2 years ago
Naga 156669cb86 Translated using Weblate (Japanese)
Currently translated at 98.6% (658 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
2 years ago
Kazushi Hayama 6c1daf5a3c Translated using Weblate (Japanese)
Currently translated at 98.6% (658 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
2 years ago
Pierfrancesco Passerini 0a297c595f Translated using Weblate (Italian)
Currently translated at 99.2% (662 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
2 years ago
qwerty287 b698fc04db Translated using Weblate (German)
Currently translated at 98.6% (658 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
2 years ago
109247019824 ab6f3463d0 Translated using Weblate (Bulgarian)
Currently translated at 98.8% (659 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
Alex Baker dbcaa36812 Update version and changelog 2 years ago
Alex Baker 83a42c9d8f Fix crash on google task import 2 years ago
Alex Baker ec97722857 Track compose metrics 2 years ago
Alex Baker dd78acadcd Remove deprecated setting 2 years ago
Htet Oo Hlaing 454faa234e
Translated using Weblate (Burmese)
Currently translated at 9.7% (65 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/my/
2 years ago
bruh 55027ad625
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
2 years ago
Alex Tereschenko 13740c3d0d
Translated using Weblate (Russian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
2 years ago
Alex Tereschenko 6037ee70e5
Translated using Weblate (Polish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
2 years ago
Kazushi Hayama 0f2e659e6f
Translated using Weblate (Japanese)
Currently translated at 98.5% (657 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
2 years ago
Milo Ivir 7945ecb9c4
Translated using Weblate (Croatian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
2 years ago
Poesty Li 56f0be50ff
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.4% (663 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
2 years ago
Ihor Hordiichuk 91d46c5f11
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
2 years ago
Htet Oo Hlaing bab3898a7f
Added translation using Weblate (Burmese) 2 years ago
Alex Baker 7b12e491ad Replace isGoogleTask with accountType 2 years ago
Alex Baker ce2bc81276 Update version and changelog 2 years ago
Frits van Bommel 39ddc8d0d6
Translated using Weblate (Dutch)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
2 years ago
Pierfrancesco Passerini 8081da3a36
Translated using Weblate (Italian)
Currently translated at 99.2% (662 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
2 years ago
Florian Trayon 766d5fa043
Translated using Weblate (French)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
2 years ago
Florian Trayon b2135f33c5
Translated using Weblate (Spanish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
2 years ago
109247019824 d1afb5891a
Translated using Weblate (Bulgarian)
Currently translated at 98.8% (659 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
2 years ago
Alex Baker dff522437d New recurrence activity 2 years ago
Alex Baker 5308404ed6 Fix some random inspections 2 years ago
renovate[bot] 320b399ab3 Update dependency androidx.recyclerview:recyclerview to v1.3.1 2 years ago
renovate[bot] 28c1ecaebc Update dependency androidx.preference:preference to v1.2.1 2 years ago
renovate[bot] 7083eb2ede Update dependency androidx.fragment:fragment-ktx to v1.6.1 2 years ago
renovate[bot] 194edd2084 Update dependency com.android.tools.build:gradle to v8.1.0 2 years ago
Michal Šmahel e21637cb3c Translated using Weblate (Czech)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
2 years ago
Alex Baker ee82f683bd Update microsoft converter
Add due dates, creation dates, and modification dates
2 years ago
Alex Baker 166635e18b Update version and changelog 2 years ago
Alex Baker 8ed5242573 Hide ascending button for 'My order' subtasks 2 years ago
Alex Baker a3d86dcb03 Exclude subtasks of hidden tasks from My Tasks 2 years ago
Alex Baker c065525cef Add subtask sort configuration 2 years ago
renovate[bot] 049f995e96 Update dependency com.google.auth:google-auth-library-oauth2-http to v1.19.0 2 years ago
renovate[bot] 8ac962d9ea Update room to v2.5.2 2 years ago
renovate[bot] 849e785189 Update dependency androidx.compose:compose-bom to v2023.06.01 2 years ago
renovate[bot] 1b1288678b Update dependency androidx.compose.material3:material3 to v1.1.1 2 years ago
renovate[bot] d2710a3c61 Update dagger.hilt to v2.47 2 years ago
renovate[bot] 0fe5b7fdb9 Update dependency fastlane to v2.214.0 2 years ago
renovate[bot] dcf645c2b8 Update dependency com.google.firebase:firebase-bom to v32.2.0 2 years ago
renovate[bot] 1fcd780b3f Update dependency com.google.firebase:firebase-crashlytics-gradle to v2.9.7 2 years ago
renovate[bot] 5fc3ac2e7f Update dependency gradle to v8.2.1 2 years ago
Luna Jernberg 3ad24f49d8
Translated using Weblate (Swedish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
3 years ago
SC 5d386bc83a
Translated using Weblate (Portuguese)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
3 years ago
Kaci c7a65c81d4
Translated using Weblate (Hungarian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
3 years ago
Sunjae Choi 2034a4be74
Translated using Weblate (Korean)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
3 years ago
Sameer Rustamzada ca4f120433
Added translation using Weblate (Pashto) 3 years ago
renovate[bot] 7c6aae3219 Update dependency com.squareup.leakcanary:leakcanary-android to v2.12 3 years ago
renovate[bot] 18450e8e2b Update flipper to v0.201.0 3 years ago
renovate[bot] 1181125417 Update flipper to v0.200.0 3 years ago
renovate[bot] e52c80ea3f Update dependency com.google.firebase:firebase-crashlytics-gradle to v2.9.6 3 years ago
renovate[bot] 2474dbab2a Update dependency com.google.firebase:firebase-bom to v32.1.1 3 years ago
renovate[bot] 049d46ceff Update flipper to v0.199.0 3 years ago
renovate[bot] 6f01f9a590 Update mockito monorepo to v5.4.0 3 years ago
renovate[bot] de2f39b2df Update dependency com.google.apis:google-api-services-drive to v3-rev20230610-2.0.0 3 years ago
Naga 393f7868d8 Translated using Weblate (Japanese)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
renovate[bot] cad6470497 Update flipper to v0.198.0 3 years ago
renovate[bot] 065385d105 Update flipper to v0.197.0 3 years ago
renovate[bot] 159fc3ad50 Update flipper to v0.195.0 3 years ago
Alex Baker f697015d7f Update sort menu design 3 years ago
Alex Baker b977f01402 Push changes after updating google task lists 3 years ago
Naga 07c7297bc8
Translated using Weblate (Japanese)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
Gerald Schneider 7fc81f4876
Translated using Weblate (German)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
3 years ago
Naga 3cebc6f874
Translated using Weblate (Japanese)
Currently translated at 99.1% (664 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
Frits van Bommel 1d997ae411
Translated using Weblate (Dutch)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
renovate[bot] 2e213312fe Update flipper to v0.194.0 3 years ago
renovate[bot] dc7c9aec76 Update dependency androidx.fragment:fragment-ktx to v1.6.0 3 years ago
renovate[bot] 2faff24ac9 Update dependency androidx.compose:compose-bom to v2023.06.00 3 years ago
Eudald Puy Polls 045ec4cb3f
Translated using Weblate (Catalan)
Currently translated at 34.0% (228 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
3 years ago
Milo Ivir f5a2e9282e
Translated using Weblate (Croatian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Ander Romero 5ef7b6f786
Translated using Weblate (Catalan)
Currently translated at 32.3% (217 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
3 years ago
109247019824 936dfb29c9
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
renovate[bot] e8ac6ed556 Update dependency com.facebook.flipper:flipper to v0.193.0 3 years ago
Alex Baker a45959052b Make CaldavTask.task immutable 3 years ago
Alex Baker e1aed0f1af Make CaldavTask.id immutable 3 years ago
Alex Baker 52d664856d Convert CaldavTask to data class 3 years ago
Alex Baker 53738031d1 Change CaldavTask to val 3 years ago
Alex Baker b0bb58bb4c Convert TaskListViewModel to flow 3 years ago
Alex Baker 1811eb561f Update version and changelog 3 years ago
Alex Baker 6ef2f4a989 Change default sort ordering value 3 years ago
renovate[bot] 6b041dc47d Update dependency com.google.auth:google-auth-library-oauth2-http to v1 3 years ago
Alex Baker 2659f4fa4a Update version and changelog 3 years ago
Alex Baker 09a1e5bc4f Fix widget list chip for google task lists 3 years ago
renovate[bot] cc370557df Update flipper to v0.192.0 3 years ago
Poesty Li d7fc766b49
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
3 years ago
Ihor Hordiichuk 6734e0b281
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Frits van Bommel ec75338027
Translated using Weblate (Dutch)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Pierfrancesco Passerini 407adb07d2
Translated using Weblate (Italian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Florian Trayon 664d8bc1f8
Translated using Weblate (French)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon 51441e4ad0
Translated using Weblate (Spanish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
109247019824 4c7e88b18a
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
renovate[bot] e7372f3e8b Update dependency com.google.firebase:firebase-bom to v32.1.0 3 years ago
Milo Ivir c9a5d19b83 Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Frits van Bommel b317a3885a Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Pierfrancesco Passerini 98dc48decd Translated using Weblate (Italian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Florian Trayon 2f36ad8043 Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon ed2acfbe97 Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
C. Rüdinger acb95583dc Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
3 years ago
Alex Baker 4830aed7b4 Update version and changelog 3 years ago
Alex Baker f5ab0e6f56 Sorting updates
* Make contents scrollable
* Use fixed value for 'no date' sorting
* Completion sort defaults to descending
* Show error if 'My order' is not supported
3 years ago
Ihor Hordiichuk be55a3bc5d
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Frits van Bommel 643af2e2fb
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Kaci 24f810763f
Translated using Weblate (Hungarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
3 years ago
Florian Trayon cb792e8111
Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon c451a1e272
Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
109247019824 a25e93f3de
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
renovate[bot] 50926bc0ad Update flipper to v0.191.1 3 years ago
Alex Baker 48e73b4bb3 Sort options for completed tasks 3 years ago
renovate[bot] a4184fa63a Update dependency com.google.apis:google-api-services-drive to v3-rev20230520-2.0.0 3 years ago
Alex Baker 08ae11046a Fix tests 3 years ago
Ander Romero 74a1ee9e4f
Translated using Weblate (Catalan)
Currently translated at 32.6% (218 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
3 years ago
Alex Baker d4192803f8 Use recursive queries if filter can be sorted 3 years ago
Alex Baker 7945160536 Separate group and sort configurations 3 years ago
renovate[bot] 79e1a73c2a Update dependency com.android.tools.build:gradle to v8.0.2 3 years ago
renovate[bot] f7bc821a16 Update coil to v2.4.0 3 years ago
renovate[bot] 4ac6a5fdf6 Update dependency com.google.apis:google-api-services-drive to v3-rev20230517-2.0.0 3 years ago
renovate[bot] f623046385 Update dependency androidx.activity:activity-compose to v1.7.2 3 years ago
renovate[bot] afdabb3dc3 Update dependency fastlane to v2.213.0 3 years ago
Alex Baker 48804de63d Remove unused resources 3 years ago
qwerty287 2ad445aceb
Translated using Weblate (German)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
3 years ago
Alex Baker f1790b574f Update version and changelog 3 years ago
Alex Baker ac9e782527 Fix crash on default Google Task list migration 3 years ago
Don Zouras e0758206d8 Translated using Weblate (Esperanto)
Currently translated at 47.7% (321 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
Alex Baker 85c0ba9ccf Update bundle workflow 3 years ago
Alex Baker a0f85fcbbd Update version and changelog 3 years ago
Alex Baker 02958e46e6 Fix duplicated subtasks 3 years ago
Alex Baker fce12ae4a8 Fix sort by title 3 years ago
Alex Baker fc3dc96ade Fix widget sort by list description 3 years ago
renovate[bot] 559858d19c Update dependency com.facebook.flipper:flipper to v0.191.0 3 years ago
Ander Romero 99ffb68e7a Translated using Weblate (Catalan)
Currently translated at 32.2% (217 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
3 years ago
renovate[bot] 1ce507b0bb Update dependency com.squareup.leakcanary:leakcanary-android to v2.11 3 years ago
Sunjae Choi d4feb8fd31 Translated using Weblate (Korean)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
3 years ago
o20n3 16270f66c8 Translated using Weblate (Korean)
Currently translated at 99.4% (668 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
3 years ago
Sunjae Choi 3f8c8feb08 Translated using Weblate (Korean)
Currently translated at 99.4% (668 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
3 years ago
Oğuz Ersen 8f370fec62 Translated using Weblate (Turkish)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
3 years ago
Alex Baker f3c28fe60d
Update action badge 3 years ago
Alex Baker b06b10f930 Enable action dependency 3 years ago
Alex Baker 6efac620c4 New check and bundle actions 3 years ago
Alex Baker 41c8a803a1 Remove jtxBoard permissions 3 years ago
renovate[bot] 0ed04d7739 Update dagger-hilt to v2.46.1 3 years ago
renovate[bot] f9dbedad3b Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-test to v1.7.1 3 years ago
Alex Baker 16d91aafb1 Update version and changelog 3 years ago
Alex Baker 4882570b3c Ignore invalid request when deleting google tasks 3 years ago
renovate[bot] ece1758696 Update dependency com.google.android.material:material to v1.9.0 3 years ago
renovate[bot] cfebf04b4b Update dependency androidx.compose:compose-bom to v2023.05.01 3 years ago
Alex Baker 3c87ab4fc1 Fix subtask sort order 3 years ago
Alex Baker 1562c1315c Check for remote ID before deleting Google Task 3 years ago
Alex Baker 2668e9a1df Update version and changelog 3 years ago
Alex Baker ac0fbccb54 Fix tag chips 3 years ago
Alex Baker d25f859385 Update version and changelog 3 years ago
Alex Baker 3555c11b33 Move task after saving changes 3 years ago
Alex Baker a7662d9cb6 Don't show list chips for google task lists 3 years ago
Alex Baker 2da4dcd17a Use drawer ordering for 'By list' sort mode 3 years ago
Alex Baker 1d58292a07 Separate cookie jars by username 3 years ago
renovate[bot] df2a7f8857 Update dependency com.google.firebase:firebase-bom to v32 3 years ago
renovate[bot] 56c6f2ce33 Update dependency com.android.tools.build:gradle to v8.0.1 3 years ago
renovate[bot] 019dc6ecaa Update kotlin 3 years ago
renovate[bot] e6ac0b072e Update dependency androidx.compose:compose-bom to v2023.05.00 3 years ago
Alex Baker 86d4bcbc40 Update version and changelog 3 years ago
Alex Baker e05874d36a Revert "Accompanist appcompat theme adapter"
This reverts commit db82ef7fd6.

accompanist theme adapter doesn't support translucent backgrounds like
the wallpaper theme
3 years ago
Alex Baker 7d83e8ba06 Update version and changelog 3 years ago
Alex Baker 99243e5751 Migrate Google Task default lists 3 years ago
Don Zouras c6652c851e Translated using Weblate (Esperanto)
Currently translated at 46.8% (315 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
Alex Baker 585f12d2f9 Disable persistent reminders on Android 14+ 3 years ago
Alex Baker 47c425f7e8 Update changelog 3 years ago
Alex Baker 72a337d572 Remove AD_ID permission 3 years ago
Alex Baker cbaede67cf Fix R8 errors 3 years ago
Alex Baker 7b2f526f7b Fix translation 3 years ago
renovate[bot] 2e6ec655db Update dependency com.google.apis:google-api-services-drive to v3-rev20230423-2.0.0 3 years ago
Alex Baker 57c4018e37 Update filters when restoring backup 3 years ago
Alex Baker 067317b5a0 Migrate google task filters 3 years ago
Alex Baker ad3c35bc5d Comment bar hidden by default 3 years ago
Alex Baker 8907d3f520 Set USE_EXACT_ALARM permission on Android 13+ 3 years ago
renovate[bot] 9f59d8ddf2
Update flipper to v0.190.0 (#2292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 years ago
Alex Baker af72e35f05 Gradle 8.1.1 3 years ago
Alex Baker 251edd39ed Fix task order shifting 3 years ago
renovate[bot] 455221c625 Update okhttp to v4.11.0 3 years ago
Alex Baker f62d007ff1 Add Odia to locales_config 3 years ago
Subham Jena b466170bbf
Translated using Weblate (Odia)
Currently translated at 20.6% (139 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/or/
3 years ago
109247019824 ebeeb06420
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
Milo Ivir 81646bb133
Translated using Weblate (Croatian)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Ihor Hordiichuk 98cc3908b6
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Frits van Bommel 41f4faebe7
Translated using Weblate (Dutch)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Pierfrancesco Passerini bf512537fe
Translated using Weblate (Italian)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Florian Trayon 76e19e292b
Translated using Weblate (French)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon 77db8dbe86
Translated using Weblate (Spanish)
Currently translated at 100.0% (672 of 672 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
Subham Jena 31f6c85f89
Added translation using Weblate (Odia) 3 years ago
renovate[bot] eeb448729c
Update dependency org.mockito:mockito-core to v5.3.1 (#2284)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 years ago
Alex Baker 84e45f0b20 Update play-services-location to 21.0.1 3 years ago
Alex Baker 114ec3f03b Convert Task to data class 3 years ago
Alex Baker f72860cef1 Remove unused constructors 3 years ago
Alex Baker 686a36ecbd Fix tests 3 years ago
renovate[bot] 4f01e4dba4 Update dependency com.google.android.gms:play-services-oss-licenses to v17.0.1 3 years ago
Alex Baker a8d62b6632 Convert TaskContainer to Kotlin 3 years ago
Alex Baker 19b2551f54 Prevent infinite recursion 3 years ago
Alex Baker c303ce32ab Change lists with drag and drop 3 years ago
Alex Baker f18a646d09 Convert list joins to inner 3 years ago
renovate[bot] 1ec48feb36 Update dependency com.google.apis:google-api-services-drive to v3-rev20230413-2.0.0 3 years ago
renovate[bot] 8c60f54f77 Update dependency androidx.fragment:fragment-ktx to v1.5.7 3 years ago
Alex Baker cfa46c7e24 Remove paging 3 years ago
Alex Baker 1d6d8e87d1 Fix some chip issues caused by sorting 3 years ago
Alex Baker 18242e5284 Add sort by list 3 years ago
Alex Baker 13b4f80c70 Update to compose 2023.04.01 3 years ago
renovate[bot] e72ceca528 Update dependency androidx.activity:activity-compose to v1.7.1 3 years ago
renovate[bot] b331f1440f Update dependency androidx.compose.compiler:compiler to v1.4.6 3 years ago
Alex Baker a739b21f0f Don't always add reminders to new incoming tasks
* Don't add reminders on initial sync
* Don't add reminders for tasks created by clients with alarm support
3 years ago
Alex Baker 47f4ae8dde Refactor recursive queries 3 years ago
Alex Baker 9e60949019 Update dependencies.txt 3 years ago
renovate[bot] d00987fcc8
Update dependency com.google.apis:google-api-services-tasks to v1-rev20230401-2.0.0 (#2273)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 years ago
renovate[bot] 52d9fdce79
Update dependency fastlane to v2.212.2 (#2271)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
3 years ago
Alex Baker 2848bd4f53 Add kotlin-parcelize 3 years ago
Alex Baker 70ab826598 Migrate some dependencies to version catalog 3 years ago
Alex Baker 5f4753da6f Gradle plugin 8.0.0 3 years ago
renovate[bot] 5ac6a3ca79 Update dependency com.google.firebase:firebase-crashlytics-gradle to v2.9.5 3 years ago
renovate[bot] 0ba7b319b2 Update dependency com.google.firebase:firebase-bom to v31.5.0 3 years ago
Alex Baker bdc01b271d Update dependencies.txt 3 years ago
Alex Baker 013f43ca34 Fix tests 3 years ago
Alex Baker e41b9561dc Convert Place to data class 3 years ago
Alex Baker 2c697fd5b9 Convert Geofence to data class 3 years ago
renovate[bot] 1a810e0298 Update kotlin 3 years ago
Alex Baker 4121163008 Non-transitive R classes 3 years ago
renovate[bot] f4e5c5c72b Update mockito monorepo to v5.3.0 3 years ago
renovate[bot] a21ee0a3c2 Update dependency gradle to v8.1 3 years ago
Alex Baker e37497b77f Fix some recomposition issues on chips 3 years ago
Alex Baker 4018277645 Use builtin build types 3 years ago
Alex Baker 97e1b75781 Check for exact alarm permission 3 years ago
109247019824 d477dfb448
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
renovate[bot] 360a85c57b Update flipper to v0.189.0 3 years ago
Alex Baker 88a3da822b Finish migration to gradle version catalog 3 years ago
Alex Baker df50cf9459 Add ui-tooling-preview 3 years ago
renovate[bot] 05bad27d63 Update dependency androidx.compose:compose-bom to v2023.04.00 3 years ago
renovate[bot] acbf3f2f97 Update accompanist to v0.30.1 3 years ago
renovate[bot] b6116623fa
Update flipper to v0.188.0 3 years ago
renovate[bot] 5ecc52bf78 Update dependency ruby to v3.2.2 3 years ago
renovate[bot] 26af7d74f7 Update dependency com.android.tools:desugar_jdk_libs to v2.0.3 3 years ago
renovate[bot] 72e4f853b2 Update flipper to v0.187.1 3 years ago
renovate[bot] 4c572f7504 Update coil to v2.3.0 3 years ago
Kazushi Hayama 31d7f489a7 Translated using Weblate (Japanese)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
renovate[bot] 14d4fa702b Update dependency org.osmdroid:osmdroid-android to v6.1.16 3 years ago
renovate[bot] 887007d898 Update dependency com.google.firebase:firebase-bom to v31.4.0 3 years ago
Alex Baker db82ef7fd6 Accompanist appcompat theme adapter 3 years ago
Alex Baker b75be2c5af Update compose and accompanist 3 years ago
renovate[bot] 8574c4f8bd Update dependency org.osmdroid:osmdroid-android to v6.1.15 3 years ago
renovate[bot] 94eb48c326 Update dependency com.google.apis:google-api-services-drive to v3-rev20230306-2.0.0 3 years ago
renovate[bot] db8744123f Update dependency androidx.work:work-runtime-ktx to v2.8.1 3 years ago
renovate[bot] 63e3311fd3 Update dependency androidx.fragment:fragment-ktx to v1.5.6 3 years ago
renovate[bot] fc58a059e4 Update dependency androidx.lifecycle:lifecycle-viewmodel-compose to v2.6.1 3 years ago
renovate[bot] 7010d06432 Update lifecycle to v2.6.1 3 years ago
renovate[bot] c206634de1 Update room to v2.5.1 3 years ago
renovate[bot] b13a080ba4 Update dependency androidx.activity:activity-compose to v1.7.0 3 years ago
Alex Baker 26e1ffcc85 Update compose-compiler to 1.4.4 3 years ago
Simona Iacob 4be0a80d17
Translated using Weblate (Romanian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
3 years ago
renovate[bot] 272b7d9dcf Update dependency com.facebook.flipper:flipper to v0.187.0 3 years ago
renovate[bot] 2f8d698dd6 Update flipper to v0.186.0 3 years ago
Alex Baker 049e4a9329 Set test timezone 3 years ago
Alex Baker 91da3191c5 Fix uploading reports for failed actions 3 years ago
Alex Baker 2bc906868d Always upload test reports 3 years ago
Alex Baker 9d142bd80b Upload test reports 3 years ago
Alex Baker db563b04ae Update actions 3 years ago
Alex Baker e2ab005e29 Fix OpenTask tests 3 years ago
Alex Baker b1b85444bd Fix backup cleanup regex 3 years ago
renovate[bot] 2c6ebf3c3e Update mockito monorepo to v5 3 years ago
renovate[bot] 58230f5e61 Update dependency gradle to v8 3 years ago
renovate[bot] 80d69ea3f5 Update flipper to v0.185.0 3 years ago
Alex Baker 4b325c0133 Attempt to filter out inactive widgets 3 years ago
Alex Baker 32eed65f04 Don't set repeat count to 0 3 years ago
renovate[bot] fe87eac962 Update kotlin 3 years ago
Alex Baker 43a943dedd Add compose compiler + kotlin group for renovate 3 years ago
Alex Baker de61bb3fe9 Update dependencies 3 years ago
renovate[bot] b6523bf30f Update dependency com.android.billingclient:billing-ktx to v4.1.0 3 years ago
renovate[bot] 6fa7b53cd7 Update dependency com.google.auth:google-auth-library-oauth2-http to v0.27.0 3 years ago
renovate[bot] ad5c1dc8d0 Update dependency com.google.android.material:compose-theme-adapter to v1.2.1 3 years ago
renovate[bot] 089337aabc Update dependency androidx.work:work-runtime-ktx to v2.8.0 3 years ago
renovate[bot] ae87325c58 Update androidx-test 3 years ago
renovate[bot] 73dfa62fcc Update dependency com.google.code.gson:gson to v2.10.1 3 years ago
renovate[bot] 0dd10e835c Update dependency org.osmdroid:osmdroid-android to v6.1.14 3 years ago
renovate[bot] 19cd5b967a Update dependency com.google.apis:google-api-services-drive to v3-rev20230212-2.0.0 3 years ago
renovate[bot] 406ae0dfdd Update dependency com.google.apis:google-api-services-tasks to v1-rev20210709-2.0.0 3 years ago
renovate[bot] 72fbf21067 Update dependency gradle to v7.6.1 3 years ago
renovate[bot] fc13be33c4 Update flipper to v0.184.0 3 years ago
renovate[bot] 204f8312ad Update lifecycle to v2.6.0 3 years ago
renovate[bot] 82b1b7bd57 Update dependency com.github.bitfireAT:dav4jvm to v2.2.1 3 years ago
renovate[bot] 973bd086dd Update dependency com.github.franmontiel:PersistentCookieJar to v1.0.1 3 years ago
renovate[bot] 3778aaaf05 Update dependency com.google.firebase:firebase-crashlytics-gradle to v2.9.4 3 years ago
Alex Baker c2cc2e0c31 Firebase BoM 3 years ago
Alex Baker 567c3ba0e7 Update dependencies.txt 3 years ago
renovate[bot] 38d273d149 Update dependency androidx.lifecycle:lifecycle-viewmodel-compose to v2.6.0 3 years ago
renovate[bot] 1bd3cb84b2 Update dependency androidx.test.ext:junit to v1.1.5 3 years ago
renovate[bot] 273c9ebe52 Update dependency androidx.recyclerview:recyclerview to v1.3.0 3 years ago
renovate[bot] ddee3b44d1 Update dagger-hilt to v2.45 3 years ago
renovate[bot] ccfd494b49 Update dependency com.android.tools:desugar_jdk_libs to v2.0.2 3 years ago
renovate[bot] 3e3b37a66b Update coil to v2.2.2 3 years ago
renovate[bot] 3ce8f864ce Update dependency androidx.appcompat:appcompat to v1.6.1 3 years ago
Alex Baker 8d2aee359b Add renovate config 3 years ago
Alex Baker 7ced8a2fdc Replace buildSrc with gradle version catalog 3 years ago
Alex Baker 5ecc604b37 AGP 7.4.2 3 years ago
Alex Baker 379a49fa81 Merge branch 'use-iso-8601' 3 years ago
Alex Baker bd1101d73e Add old filename to matcher 3 years ago
Alex Baker e114bb4851 Remove coverage
gradle 8 breaks jacoco plugins, will have to check in on this later
3 years ago
Don Zouras 82fae728c4
Translated using Weblate (Esperanto)
Currently translated at 46.8% (315 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
Don Zouras 5f25f953fd
Translated using Weblate (Esperanto)
Currently translated at 46.2% (311 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
Chih-Hsuan Yen a1487e4c41
Translated using Weblate (Chinese (Traditional))
Currently translated at 81.4% (548 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
3 years ago
Poesty Li 5c10c748dd
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
3 years ago
Naga ea994122e7
Translated using Weblate (Japanese)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
Kisaragi Hiu c1008a31b7
Translated using Weblate (Japanese)
Currently translated at 70.4% (474 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
NN 1be1f3e0ae
Translated using Weblate (Japanese)
Currently translated at 70.4% (474 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
Gabriel Camargo ea0a110576
Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.7% (671 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
3 years ago
Olli 582e0a1a3d
Translated using Weblate (Finnish)
Currently translated at 99.7% (671 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
3 years ago
Don Zouras 3d490f0ed6
Translated using Weblate (Esperanto)
Currently translated at 41.3% (278 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
AHOHNMYC 8764b01301
Translated using Weblate (Russian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
3 years ago
Alex Baker 100928d002 Merge branch 'juliushaertl-enh/noid/quick-save-new-task' 3 years ago
Alex Baker b85dc20d24 Fix sort order string formatting 3 years ago
Alex Baker 1fdeb5fb35 Remove extra sync check 3 years ago
Alex Baker 0738ebb758 Increase memory 3 years ago
Alex Baker 417f5ac224 Merge branch 'consolidate_lists' 3 years ago
Alex Baker ad54394c08 Fix parcel crash 3 years ago
Alex Baker 3cb8cd9a45 Fix migrations 3 years ago
Alex Baker 6c10466904 Update ical4android 3 years ago
Alex Baker 3131c56651 Code review 3 years ago
Alex Baker e644971619 Update recyclerview 3 years ago
Alex Baker 120eb4dd30 Fix tests 3 years ago
Alex Baker c2222657ec Remove gt_parent from CaldavTask 3 years ago
Alex Baker f6ca98e096 Remove SubsetCaldav 3 years ago
Alex Baker ac62b4f385 Move cd_order to task table 3 years ago
Alex Baker 2006e2c84b Convert GoogleTask to CaldavTask 3 years ago
Alex Baker 513f8b017f Convert GoogleTaskList to CaldavCalendar 3 years ago
Alex Baker a04fbebd0f Convert GoogleTaskAccount to CaldavAccount 3 years ago
Alex Baker 0c2b31b84b Update version and changelog 3 years ago
Alex Baker 1eba02604d Update some libraries 3 years ago
Alex Baker 0f6013cecc Compose BOM 2023.01.00, Kotlin 1.8.0 3 years ago
Alex Baker 68d80a5d2a Sync when app comes to the foreground
If it hasn't syncd in 5+ minutes
3 years ago
Alex Baker c5587d9fea AGP 7.4.0 3 years ago
gnu-ewm e4e0ec013b
Translated using Weblate (Polish)
Currently translated at 99.8% (672 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
3 years ago
Alex Baker ab8af2a3a1
Update bitcoin link 3 years ago
Alex Baker e2ad2507d3 Change to bitcoin url 3 years ago
Don Zouras 705b6e05dd
Translated using Weblate (Esperanto)
Currently translated at 41.3% (278 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
JoseFabio El que Conoces ab968dcf17
Translated using Weblate (Esperanto)
Currently translated at 40.8% (275 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
Don Zouras 50bb209cd3
Translated using Weblate (Esperanto)
Currently translated at 40.8% (275 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
3 years ago
Julius Härtl 99d1dea0f1
feat: Save task when ime action done is triggered
Signed-off-by: Julius Härtl <jus@bitgrid.net>
3 years ago
bruh 9a5c4ea010
Translated using Weblate (Vietnamese)
Currently translated at 99.8% (672 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
3 years ago
Olli 6f7890ea3b
Translated using Weblate (Finnish)
Currently translated at 98.9% (666 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
3 years ago
Alex Baker 63fda6f681 Add default reminders to new incoming ical tasks 3 years ago
Alex Baker 738870ac6b Update AGP 7.4.0-rc02 3 years ago
Kazushi Hayama 3b04ddb44f
Translated using Weblate (Japanese)
Currently translated at 68.3% (460 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
Alex Baker 4f6749dc24 Allow cleartext traffic in debug mode 3 years ago
Kazushi Hayama c18eac2b00
Translated using Weblate (Japanese)
Currently translated at 68.0% (458 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
C. Rüdinger 5ac9df3cb6
Translated using Weblate (German)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
3 years ago
o20n3 6405d5fe66
Translated using Weblate (Korean)
Currently translated at 93.4% (629 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
3 years ago
Pierfrancesco Passerini 6df420d584
Translated using Weblate (Italian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Tntdruid 9bea3ee6df
Translated using Weblate (Danish)
Currently translated at 99.7% (671 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
3 years ago
haidarah esmander b85694eebd
Translated using Weblate (Arabic)
Currently translated at 96.4% (649 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
3 years ago
Slávek Banko fb5ab13d99
Translated using Weblate (Czech)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
3 years ago
Alex Baker 172be4fa6a Update version and changelog 3 years ago
Alex Baker 2d3d136012 Catch exception when looking up ringtone title 3 years ago
Alex Baker 1315f59199 Fix locale on purchase sku 3 years ago
Kazushi Hayama 3a61cbf735
Translated using Weblate (Japanese)
Currently translated at 66.7% (449 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
3 years ago
Pierfrancesco Passerini 4997d9e2f1
Translated using Weblate (Italian)
Currently translated at 99.7% (671 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Alex Baker dad625d402 Update version and changelog 3 years ago
Alex Baker 65ef69f46e AGP 7.4.0-rc01 3 years ago
Alex Baker 927168dcf6 Use default network security configuration 3 years ago
Alex Baker ec81bf7b85 Use default network security configuration 3 years ago
SC e034b43b39
Translated using Weblate (Portuguese)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
3 years ago
Alex Baker e162cc7809 Add host to msauth intent filter 3 years ago
Alex Baker 2a825ce2c7 Disable editing title for read only task 3 years ago
Alex Baker 71f22dd05d Read-only support 3 years ago
Alex Baker 644eda1eef Fix tests 3 years ago
Kaci 67ace66204
Translated using Weblate (Hungarian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
3 years ago
Milo Ivir 00db98b3ca
Translated using Weblate (Croatian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Eric 188cf998fa
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
3 years ago
Ihor Hordiichuk 8f41bf99a9
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Oğuz Ersen e1e7dde890
Translated using Weblate (Turkish)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
3 years ago
Nikita Epifanov 9be2fbf505
Translated using Weblate (Russian)
Currently translated at 99.8% (672 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
3 years ago
Frits van Bommel 45f2aa801a
Translated using Weblate (Dutch)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Gediminas Murauskas ee61aced63
Translated using Weblate (Lithuanian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
3 years ago
Pierfrancesco Passerini 7ea84b2659
Translated using Weblate (Italian)
Currently translated at 99.7% (671 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Kaci 2295e14f8a
Translated using Weblate (Hungarian)
Currently translated at 98.9% (666 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
3 years ago
Florian Trayon a8698d8080
Translated using Weblate (French)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Olli d5a89649fa
Translated using Weblate (Finnish)
Currently translated at 95.0% (640 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
3 years ago
Florian Trayon 222d831220
Translated using Weblate (Spanish)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
World Test e9d5afa9e7
Translated using Weblate (German)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
3 years ago
109247019824 137b3ce8b2
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (673 of 673 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
Alex Baker 9ed8486cfc Convert CaldavCalendar to data class 3 years ago
Nikita Epifanov e529de066e
Translated using Weblate (Russian)
Currently translated at 99.7% (669 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
3 years ago
Alex Baker 38e1c09b24 Convert Location to data class 3 years ago
Alex Baker 3d110347b0 Update version and changelog 3 years ago
Alex Baker ff48aa18c2 Add 'More options' experiment
The 'More options' button gets missed by a lot of users
3 years ago
Alex Baker d82e594043 Limit sort order for astrid manual sorting
Fix crash when sorting ~1000 tasks
3 years ago
Alex Baker 03f695f625 Restore original priority button order 3 years ago
Alex Baker f38b2324e9 Add MicrosoftConverter 3 years ago
Alex Baker dd48d074be Fix persistent notifications on Android 13 3 years ago
Alex Baker 670fc1591f Update desugaring, AGP, and gradle 3 years ago
Alex Baker 5c368cf970 Update dav4jvm 3 years ago
Alex Baker 80abbbcce5 Update ical4android 3 years ago
Alex Baker 35f4ebc7a2 Disable opentask notification broadcasts
Fix crash for too many pending intents
3 years ago
Alex Baker c17e2ef98b Update third party dependencies 3 years ago
Alex Baker 980ee440d5 Create link to shared test files 3 years ago
Alex Baker a07851bc5a Update to AGP 7.3.1 3 years ago
Alex Baker 8c5edf35f4 Fix RTL text in beast mode preferences 3 years ago
Alex Baker f2a728a579 Update to play billing 4.0 3 years ago
Alex Baker 55a994fcca Fix alarm calculator tests 3 years ago
Alex Baker 3691975b9d Update version and changelog 3 years ago
Alex Baker 4b3e7b026b Merge branch 'dynamic_default_reminder' of ssh://github.com/orellazri/tasks into orellazri-dynamic_default_reminder 3 years ago
Alex Baker 71b70c43b2 Fix priority button spacing 3 years ago
Alex Baker 9787a420d9 Update version and changelog 3 years ago
Alex Baker 8d78a5bfdb Merge tag '12.7.1' 3 years ago
Alex Baker 23bf69d3f4 Only accept content URIs in share activity 3 years ago
Alex Baker eb3dd461ad Fix crash when signing back into tasks.org 3 years ago
Alex Baker 390265a9df Schedule notifications after permissions granted 3 years ago
Alex Baker e13d16d644 Jetpack Compose compiler 1.3.2 3 years ago
Alex Baker 1cd4e00919 Add xprop tests 3 years ago
Alex Baker 28e92e00c9 Update google and firebase plugins 3 years ago
Alex Baker d0dfb30860 Jetpack Compose 1.3.0-beta03 3 years ago
Milo Ivir eabde2ac57
Translated using Weblate (Croatian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Alex Baker eb631967fd Add priority row preview 3 years ago
Gontzal Manuel Pujana Onaindia 124a9f84ee
Translated using Weblate (Basque)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
3 years ago
SC ff7f55be5a
Translated using Weblate (Portuguese)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
3 years ago
Eric cb4c589b60
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
3 years ago
Ihor Hordiichuk fc8e7c0226
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Oğuz Ersen 3845222f9f
Translated using Weblate (Turkish)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
3 years ago
Frits van Bommel f3c1fd9628
Translated using Weblate (Dutch)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Pierfrancesco Passerini 4020999c40
Translated using Weblate (Italian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Florian Trayon 14814c3d18
Translated using Weblate (French)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon 3b7d4315b5
Translated using Weblate (Spanish)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
qwerty287 9dd62bcfe5
Translated using Weblate (German)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
3 years ago
109247019824 9740891171
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
Alex Baker e2d3ccacda Android Gradle Plugin 7.3.0 3 years ago
Alex Baker e5259b898a Jetpack Compose 1.3.0-beta02 3 years ago
Orel 48613bc925 Make default reminder for tasks without due times dynamic 3 years ago
Alex Baker c36e1e8173 Update version and changelog 3 years ago
Alex Baker 9219796c6b Restore trailing icon on tag row 3 years ago
Alex Baker f68ef7cbe5 Add e-mail disclosure dialog 3 years ago
Pierfrancesco Passerini 29519c24cc
Translated using Weblate (Italian)
Currently translated at 99.8% (667 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
109247019824 e62f556d27
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
Ihor Hordiichuk 4a2aa97282
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Alex Baker eaa47029e7 Merge sync work 3 years ago
Alex Baker d589a89506 Create, rename, and delete microsoft lists 3 years ago
Alex Baker 1793d95d4d Add analytic event for new microsoft account 3 years ago
Alex Baker 1299bce67f Add MicrosoftService 3 years ago
Alex Baker 23bd8ba914 Fix tests 3 years ago
Alex Baker 1f07b17e75 Fix lint error 3 years ago
Alex Baker 1ff960c496 Remove unused strings 3 years ago
Alex Baker 7778c21692
Merge pull request #1999 from weblate/weblate-tasks-android
Translations update from Hosted Weblate
3 years ago
Frits van Bommel 7538f2bdbb
Translated using Weblate (Dutch)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Alex Baker 8f0d30408c Remove unused strings
Accidentally checked these in
3 years ago
Milo Ivir 6a8428cd06
Translated using Weblate (Croatian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Eric e8c0ab68ff
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
3 years ago
Oğuz Ersen 8f0d0e9d45
Translated using Weblate (Turkish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
3 years ago
Allan Nordhøy e49a033234
Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.9% (663 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
3 years ago
Florian Trayon 6e8ff8485d
Translated using Weblate (French)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon b947f2d765
Translated using Weblate (Spanish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
Milo Ivir 12381f9e02
Translated using Weblate (Croatian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Eric 10ba0917b7
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
3 years ago
Ihor Hordiichuk a7232546d8
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Oğuz Ersen c707b981f1
Translated using Weblate (Turkish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
3 years ago
Frits van Bommel 33de54aa14
Translated using Weblate (Dutch)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Pierfrancesco Passerini 38031083a3
Translated using Weblate (Italian)
Currently translated at 99.8% (666 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Florian Trayon 10ee541c7d
Translated using Weblate (French)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
J. Lavoie 64231fc742
Translated using Weblate (French)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon b17fde11f9
Translated using Weblate (Spanish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
109247019824 191bf5a182
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
Alex Baker 7327572db4 Add Microsoft authentication 3 years ago
Alex Baker 9522c14891 Handle add account dialog clicks in settings 3 years ago
Alex Baker 3c16a0c99a Add Microsoft to account dialog 3 years ago
Alex Baker 780667b798 AppAuth 0.11.1 3 years ago
Alex Baker 26fc731e8e Fix up locales config 3 years ago
Enol P 23de9cb129
Translated using Weblate (Asturian)
Currently translated at 0.3% (2 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ast/
3 years ago
Milo Ivir feb1f18470
Translated using Weblate (Croatian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
3 years ago
Enol P 949bc10ca0
Added translation using Weblate (Asturian) 3 years ago
qwerty287 b65e9f673a
Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
3 years ago
Alex Baker 5452d578be Fix crash on missing location 3 years ago
Simona Iacob 55f33a3f75
Translated using Weblate (Romanian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
3 years ago
Alex Baker 9a19c0adc0 Remove MemoryCookieStore 3 years ago
Alex Baker f8c5fa47b3 Preserve cookies 3 years ago
Alex Baker 0ae473e27f Use http client factory for caldav and etesync 3 years ago
Alex Baker 37a59099cf Material components 1.8.0-alpha01 3 years ago
Alex Baker 060e674727 Move selected tags to top of list 3 years ago
Alex Baker 395ef07b4e Set user-agent 3 years ago
Alex Baker 4db88b9865 Don't pass certmanager around 3 years ago
cketti 468d42e4f6 Fix method to remove Preference
Preference instances that were not direct children of the Fragment's root PreferenceScreen were not removed.
3 years ago
Alex Baker 2783e80608 AGP 7.3.0-rc01 3 years ago
SC 0907f7c54e
Translated using Weblate (Portuguese)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
3 years ago
Varun Sharma a0328112fb [GitHub] Add minimum GitHub token permissions for workflows
Signed-off-by: Varun Sharma <varunsh@stepsecurity.io>
3 years ago
Alex Baker bf829727ff Check if original attachments are initialized 3 years ago
Alex Baker 8dd47881a2 Fix crash when importing older backup 3 years ago
Alex Baker 6cb0069f76 Update version and changelog 3 years ago
Alex Baker c100d21bb4 Don't set creation date on every google task sync 3 years ago
Alex Baker 6ba234ebfd Don't crash when missing widget id 3 years ago
Alex Baker e3ff3bf499 Fix crash when clicking beast mode banner 3 years ago
Alex Baker 45e48f122a Fix crash when printing repeat rule string 3 years ago
Alex Baker a51593170f Make sync account fill max width 3 years ago
Eric 837e4e5406
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
3 years ago
Ihor Hordiichuk d83f79864b
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
3 years ago
Oğuz Ersen 906188f5e3
Translated using Weblate (Turkish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
3 years ago
Frits van Bommel 2ef4adb9d8
Translated using Weblate (Dutch)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
3 years ago
Florian Trayon 9639b16305
Translated using Weblate (French)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
3 years ago
Florian Trayon 956dd111eb
Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
3 years ago
109247019824 0259da8322
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
3 years ago
Pierfrancesco Passerini d4b2f72ae6
Translated using Weblate (Italian)
Currently translated at 99.8% (665 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Alex Baker e16f076fb7 Convert AddAccountDialog to compose 3 years ago
Alex Baker 68b91ed2c7 Add geofence circle to place settings 3 years ago
Alex Baker 336279ee63 Fix OSM marker overlay 3 years ago
Alex Baker b8470ccc2b Fix cancel button on widget filter picker 3 years ago
Alex Baker a6da3332d3 Update version and changelog 3 years ago
Alex Baker 2c45f0da94 Fix annotation 3 years ago
Alex Baker 73adb86854 Ignore empty language tags 3 years ago
Alex Baker 587db3fa5c Thumbnails for attachments 3 years ago
Alex Baker 2eabaad0e2 Update reverse geocoder work
* Don't overwrite remote coordinates
* Ignore results >100m away
3 years ago
Alex Baker 95d5f74752 Refresh lists after deleting place 3 years ago
Alex Baker 2ac6c2413b Attachment changes
* Add attachment table to map attachment to file
* Convert TaskAttachment to immutable data class
* Copy attachments when duplicating tasks
3 years ago
Alex Baker 226687fee8 Add alarms to new subtasks 3 years ago
Alex Baker 3ce0433f9c Add alarms to new incoming google tasks 3 years ago
Alex Baker 99f13df068 Fix default reminders for Tasker tasks 3 years ago
Alex Baker ba11ec2747 Reset etebase sync flag on startup 3 years ago
Pierfrancesco Passerini 2a8ae1709d
Translated using Weblate (Italian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
3 years ago
Ela Bogucka 1d1a2eb6c7
Translated using Weblate (Polish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
3 years ago
Alex Baker a0e26263b1 Fix list row 3 years ago
Alex Baker 4ccba6f2b1 Fix cloning subtask 3 years ago
Alex Baker 8258c73a7f Merge ssh://github.com/lkempf/tasks into HEAD 3 years ago
Alex Baker bb9e2f90b4 Replace ListPicker with FilterPicker
Simplify fragment result listeners
3 years ago
Lukas Kempf 7344f66189 Don't forget parent when copying tasks. 3 years ago
Alex Baker 5fca19e21f Address manifest warnings 3 years ago
Alex Baker 532fea0d29 Replace FilterSelectionActivity
* Add FilterPicker DialogFragment
* Add FilterPicker compose component
* Rename FilterSelectionActivity to WidgetFilterSelectionActivity
3 years ago
Alex Baker d157bbec53 Convert ListPicker to compose 3 years ago
Alex Baker 5f3b706b81 More calendar picker updates 3 years ago
Alex Baker 135f628dae Calendar picker updates
* Move some components to compose package
* Add compose previews
* Use calendar id for selected
3 years ago
Alex Baker df65415a83 Add alpha to delete icon 3 years ago
Alex Baker c1b915baf8 Update compose and kotlin 3 years ago
Alex Baker 4f267ad989 Convert calendar picker to compose 3 years ago
Alex Baker 437d69d741 Convert AlertDialogBuilder to Kotlin 3 years ago
Alex Baker 9a33f54202 Add navigation drawer view model 3 years ago
Alex Baker c2e87a86fa Update AGP 7.2.2 3 years ago
DilshanH b3ed7ea43b
Translated using Weblate (Sinhala)
Currently translated at 97.3% (650 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
3 years ago
Simona Iacob 7017f14401
Translated using Weblate (Romanian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
3 years ago
Alex Baker 8f5b7ccc20 Skip add dialog when replacing some reminders
* random reminders
* pick date and time reminders
3 years ago
Alex Baker 20ab106e12 Click on alarm row to replace it 3 years ago
Alex Baker 8ed2880953 Delete some compose stuff 3 years ago
Alex Baker 2ee7715c16 Align checkbox and text in subtask row 3 years ago
Sergio Varela 2841af08de
Translated using Weblate (Basque)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
3 years ago
Alex Baker e450e262a5 Fix tests 3 years ago
Alex Baker 60820ab3c9 Convert comments row to compose 3 years ago
Alex Baker 7b9b71dd67 Fill max width for task edit rows 3 years ago
Alex Baker d0fcca1a1f Embed task edit row fragments in compose 3 years ago
Alex Baker 22de530590 Ran silent code cleanup 3 years ago
Alex Baker cdd163efbf Add preferences.linkify 3 years ago
Alex Baker 3163150e8f Move add alarm to task edit view model 3 years ago
Alex Baker 738c345275 Move view state to view model 3 years ago
Alex Baker eabe2b37ee Refresh subtasks in task edit fragment 3 years ago
Alex Baker c4cd694948 Fix lint 3 years ago
Alex Baker c532abc87f Simplify task edit view model 3 years ago
Alex Baker 9c8e897f3a Kotlin 1.7.0 and Compose 1.2.0 3 years ago
Alex Baker ccaed6ddb4 Add SubtaskRow composable 3 years ago
Alex Baker 1cac090c9d Add AlarmRow composable 3 years ago
Alex Baker 00c80337de Move more composable logic 3 years ago
Alex Baker e7b6c96576 Add DescriptionRow composable 3 years ago
Alex Baker b13db7d23a Fix new subtask text color 3 years ago
Alex Baker b6efff59b4 CheckBox and SubtaskChip composables 3 years ago
Alex Baker d48d457a3d Update priority row colors 3 years ago
Alex Baker 85b8092982 Move more composable logic 3 years ago
Alex Baker 3e3de3c1d6 Moving logic into composables, adding previews 3 years ago
Alex Baker 5c3af50c9d Move more Start and due date logic into composables 3 years ago
Alex Baker e39bc8b8cc Comment bar is not an edit control set 3 years ago
Alex Baker f4d69a8a69 Convert DescriptionControlSet to compose 4 years ago
SC 1615f215c4
Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
Alex Baker e450f51f60 Convert repeat control set to compose 4 years ago
SC 0711176ae2
Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
Alex Baker 4d8a058bfb Fix migration 4 years ago
Alex Baker 57ca2f013a Update schema for recurrence
* Move repeat until into recurrence
* Move repeat from out of recurrence
4 years ago
bruh c52f90adb9
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Milo Ivir 5be37001c0
Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Alex Baker 5e607f73a3 Create separate view fragment 4 years ago
Alex Baker b4c3bec3ab Convert subtask control set to compose 4 years ago
Alex Baker 8c137f6521 TaskEditRow composable with slots 4 years ago
Oğuz Ersen 2e2e74217e
Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Alex Baker 3fa9040549 Convert FilesControlSet to compose 4 years ago
Alex Baker 9b3f5a0c65 Convert CreationDateControlSet to compose 4 years ago
Alex Baker ef308d6c14 google-services 4.3.13 4 years ago
Alex Baker 12f9352f69 Fix starting new timer 4 years ago
Alex Baker f5a53e6453 Convert TimerControlSet to compose 4 years ago
Alex Baker 908d75909d Convert CalendarControlSet to compose 4 years ago
Sameer Rustamzada 3736c4596e
Translated using Weblate (Persian)
Currently translated at 29.2% (196 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fa/
4 years ago
Alex Baker 8f4db8374d Convert LocationControlSet to compose 4 years ago
Alex Baker 08069d0a3d Convert StartDateControlSet to compose 4 years ago
Alex Baker 91cb5a158b Fix tests 4 years ago
Eric 3df26c5401
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk a5313d567e
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Nikita Epifanov fcec3228f7
Translated using Weblate (Russian)
Currently translated at 99.8% (669 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
Frits van Bommel 70552aa886
Translated using Weblate (Dutch)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Pierfrancesco Passerini e97b32b5b1
Translated using Weblate (Italian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Florian Trayon 5bc0b47ab6
Translated using Weblate (French)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 198252cd84
Translated using Weblate (Spanish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
qwerty287 db49fe46bd
Translated using Weblate (German)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Shimon f936d60cdf
Translated using Weblate (Czech)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
4 years ago
109247019824 977ae091de
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker d8c70a4b5c Inline DeadlineControlSet variables 4 years ago
Alex Baker 8e8b8c9f64 Convert DeadlineControlSet to compose 4 years ago
Alex Baker 6513c40c97 View model due date as state flow 4 years ago
Ihor Hordiichuk 1f3b8fd228
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Artem 90e47dc63e
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Alex Baker 6173192e72 Use info icon for creation date row 4 years ago
Alex Baker c2580e1e68 Disable configuration cache for lint action 4 years ago
Alex Baker 30961ec53a Gradle wrapper 7.4.2 4 years ago
Alex Baker de50854c99 Merge branch 'main' of ssh://github.com/ydario/tasks into main 4 years ago
Alex Baker 70e4e96ed6 Update firebase-crashlytics-gradle 4 years ago
Pierfrancesco Passerini 8957056304
Translated using Weblate (Italian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Allineer 99e67b2317
Translated using Weblate (Russian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
SC bf17a7522a
Translated using Weblate (Portuguese)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
mhmdanas a70b54592a Update GitHub actions 4 years ago
Milo Ivir 3bbfa11966
Translated using Weblate (Croatian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Eric 839419353f
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (667 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk a5a6b0f84b
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Oğuz Ersen 1cc3485918
Translated using Weblate (Turkish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Frits van Bommel 55d3f463ca
Translated using Weblate (Dutch)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Florian Trayon 2d6b69b95b
Translated using Weblate (French)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 6388a02a81
Translated using Weblate (Spanish)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
109247019824 25c82ee906
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker fcda6efe0c Fix task list chip group bottom padding 4 years ago
Alex Baker 1fbc2b1661 Android 13 runtime notification permissions 4 years ago
Alex Baker 99b1c2e38d Update google-services plugin 4 years ago
Alex Baker 460269351a Jetpack Compose 1.2.0-rc02 4 years ago
Alex Baker 9ea490572a Update locale injections to use language setting 4 years ago
Alex Baker 6f73765fd2 Per-app language configuration 4 years ago
Alex Baker 47d6aeddea Update target sdk to 33 4 years ago
Alex Baker 3a93af4b0a Update collect method 4 years ago
Alex Baker b455e531d3 Use new compose fragment for reminder control set 4 years ago
Alex Baker 43e787ad0c Add compose task edit fragment, chip group 4 years ago
Alex Baker 2137bf8004 Convert tag control to compose 4 years ago
Alex Baker 543e169e33 Use selected list state in subtasks control set 4 years ago
Alex Baker 25877f05e2 Convert ListFragment to compose 4 years ago
Alex Baker 9832eef2c6 Update chips
* Convert to jetpack compose
* Remove filled/outlined option
4 years ago
109247019824 b7342b770d
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker cb0ca40f4e Disable configuration cache for dependency diff 4 years ago
Alex Baker 0cecbbb376 Remove cookpad license plugin
Plugin was abandoned
4 years ago
Alex Baker 95918e3ae8 Jetpack Compose 1.2.0-rc01 4 years ago
Alex Baker ba87311759 Priority control set preview 4 years ago
Alex Baker 708e2b14e6 Convert priority control set to compose 4 years ago
Alex Baker 1ca6076005 Update crashlytics 4 years ago
Alex Baker 6b0ef5189d Enable configuration caching 4 years ago
Alex Baker 07bf02f9e5 Update version and changelog 4 years ago
Alex Baker 6e70fc0912 Update hilt 4 years ago
Alex Baker 0b93712b05 Update material components 4 years ago
Alex Baker 3bda6ccb4c Update dependencies 4 years ago
sunflowerskater a51e742f39
Update strings.xml
Changed <string name="filter_snoozed">Adiada</string> to "Adiadas" (the plural of "Adiada").
4 years ago
Alex Baker 151dc36165 Update AGP 4 years ago
Alex Baker ead0255bbb Update cert4android 4 years ago
Alex Baker 5439bc1611 No drop shadow on monochrome icon 4 years ago
Alex Baker 09de639b1c Fix licenses and lint 4 years ago
Alex Baker 75648de415 Update Fastlane 4 years ago
Alex Baker 9927ee786d bitfire moved to github 4 years ago
Osoitz 0b4f9d6185
Translated using Weblate (Basque)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
Андрей 8fd757c322
Translated using Weblate (Belarusian)
Currently translated at 1.7% (12 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/be/
4 years ago
Grzegorz Kulik 0b23505da1
Added translation using Weblate (Silesian) 4 years ago
109247019824 8feadf5a2f
Translated using Weblate (Bulgarian)
Currently translated at 99.4% (665 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Sergio Varela 6f05d8c488
Translated using Weblate (Basque)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
SC 10273c289f
Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
Álvaro Oliveira 509556654a
Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
Shimon 16651dc411
Translated using Weblate (Czech)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
4 years ago
hanthor 5d624fec07 Added monochrome icons 4 years ago
Alex Baker 01ad7e0081 Remove translations 4 years ago
Alex Baker 90e99e226a LeakCanary 2.9.1 4 years ago
Levy Marcelino 1e1e9164e4
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
4 years ago
Cyua Pyua b014d753e5
Translated using Weblate (Indonesian)
Currently translated at 99.1% (663 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
4 years ago
Emin Tufan Çetin 23b9f6d14c
Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Levy Marcelino c842bb42a5
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
4 years ago
109247019824 208ab48936
Translated using Weblate (Bulgarian)
Currently translated at 99.4% (665 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker 8d350949c1 LeakCanary 2.9 4 years ago
Shimoon Horanek 06b5c723a7
Translated using Weblate (Czech)
Currently translated at 96.2% (644 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
4 years ago
109247019824 c52a9bd59b
Translated using Weblate (Bulgarian)
Currently translated at 99.2% (664 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Kaci 8c4a2c4853
Translated using Weblate (Hungarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
4 years ago
109247019824 6f3c05e605
Translated using Weblate (Bulgarian)
Currently translated at 98.6% (660 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alexey Zinchenko 6bae3d4812
Translated using Weblate (Belarusian)
Currently translated at 1.4% (10 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/be/
4 years ago
Alexey Zinchenko 5f7389bd52
Added translation using Weblate (Belarusian) 4 years ago
109247019824 6417cc1711
Translated using Weblate (Bulgarian)
Currently translated at 98.5% (659 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Txopi 53995af675
Translated using Weblate (Basque)
Currently translated at 98.8% (661 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
mm4c 88c395bf39
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Yuri Dario 7a17dc3719 Allow display of task's creation/modification/completion using a single row. 4 years ago
Jonatan Nyberg 56dbadc415
Translated using Weblate (Swedish)
Currently translated at 99.7% (667 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
4 years ago
mm4c 651ea9e690
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
109247019824 413cf6fb1e
Translated using Weblate (Bulgarian)
Currently translated at 98.3% (658 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Yuri Dario bb4ce22542 Allow display of task's creation/modification/completion dates. 4 years ago
bruh 9e63551ad0
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Wiktor 3923dd43a7
Translated using Weblate (Polish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
4 years ago
Tntdruid ce1b2c2018
Translated using Weblate (Danish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
4 years ago
109247019824 86c8069a16
Translated using Weblate (Bulgarian)
Currently translated at 97.6% (653 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
109247019824 62332f87fc
Translated using Weblate (Bulgarian)
Currently translated at 97.1% (650 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
mm4c 395dc8fc3f
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Pierfrancesco Passerini 73a2114f81
Translated using Weblate (Italian)
Currently translated at 99.8% (668 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
3ole b77a78caf7
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Alex Baker 6e695b144e Only hide tags and places in navigation menu 4 years ago
Alex Baker 500cc3e6c2 Update version and changelog 4 years ago
Nikita 7334c41560
Translated using Weblate (Russian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
mm4c 5ff25d0c3d
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Alex Baker 7da45d780c Set work input data with workDataOf 4 years ago
Alex Baker 49774a5ec5 Update subscription and review nagging 4 years ago
Alex Baker 8952286dff Update version and changelog 4 years ago
Alex Baker 3198392d38 Fix test compile 4 years ago
Milo Ivir 2a36eeed64
Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
JY3 f19ef4ef4a
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Eric 841c474660
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk 65d4124c27
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Oğuz Ersen 529a8cfebf
Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Frits van Bommel bfa35f328d
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
mm4c 899960415e
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Allan Nordhøy 5af9084d06
Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.1% (643 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
4 years ago
Florian Trayon f144f1811b
Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 79a3e02396
Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker 99b533e5cd Add 'addTask' event 4 years ago
Alex Baker f97a9fc2a3 Add events for subscribe and beast banners 4 years ago
Alex Baker 0165cda12b Fix recurring reminder dialog cancel button 4 years ago
Alex Baker 2564116341 Fix banner text buttons 4 years ago
Alex Baker b23aa62d42 Fix clearing task fragments 4 years ago
JY3 626d2422b7
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk c321a996c6
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Emin Tufan Çetin e50db3bacd
Translated using Weblate (Turkish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Nikita Epifanov 7f0c904c11
Translated using Weblate (Russian)
Currently translated at 99.4% (663 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
Wiktor 853c2deb20
Translated using Weblate (Polish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
4 years ago
Frits van Bommel 51c991078d
Translated using Weblate (Dutch)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
mm4c 7d80ae0e65
Translated using Weblate (Dutch)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Kaci 6f07b9f007
Translated using Weblate (Hungarian)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
4 years ago
Florian Trayon f89be76f03
Translated using Weblate (French)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 3fb3935f26
Translated using Weblate (Spanish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
qwerty287 4492abcbc1
Translated using Weblate (German)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
109247019824 75de4569b8
Translated using Weblate (Bulgarian)
Currently translated at 96.5% (644 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
109247019824 a823ab0f17
Translated using Weblate (Bulgarian)
Currently translated at 96.5% (644 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Eric 1572c58a6d
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Alex Baker 46a6996982 Beast mode banner 4 years ago
Alex Baker 1de4b220c3 Fix tests 4 years ago
Oğuz Ersen 64a5ea2c69
Translated using Weblate (Turkish)
Currently translated at 100.0% (667 of 667 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
bruh 08d61e1eb8
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Jonatan Nyberg ce6feb3984
Translated using Weblate (Swedish)
Currently translated at 99.6% (663 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
4 years ago
Nikita Epifanov 521ff41454
Translated using Weblate (Russian)
Currently translated at 99.3% (661 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
Wiktor 8c1109f622
Translated using Weblate (Polish)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
4 years ago
Miguel dca36b9fad
Translated using Weblate (Galician)
Currently translated at 89.3% (594 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/gl/
4 years ago
J. Lavoie 26b861a07d
Translated using Weblate (Finnish)
Currently translated at 97.4% (648 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
4 years ago
109247019824 6875e3f14a
Translated using Weblate (Bulgarian)
Currently translated at 94.8% (631 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Miguel 08a87d0815
Translated using Weblate (Galician)
Currently translated at 35.7% (238 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/gl/
4 years ago
mm4c 0b4c852a99
Translated using Weblate (Dutch)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Francesco Saltori b276d7bcb4
Translated using Weblate (Italian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
109247019824 d442c4dd42
Translated using Weblate (Bulgarian)
Currently translated at 85.8% (571 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker 7bb0d0a84f Update task list and edit preferences
Move out of 'Look and feel' into top level menus
4 years ago
Alex Baker a27047b6f8 Update widget preferences screen
* Add widget color indicator
* Add submenu arrow indicator
4 years ago
Unpublished 5e9d97e06f Fix build of generic variant 4 years ago
Alex Baker d5ccc1aa8f Beg for subscriptions/donations periodically 4 years ago
Alex Baker ed48ab15e3 Add firebase config param 4 years ago
Alex Baker 437bb48d62 Remove subscription nag from WhatsNew 4 years ago
Alex Baker 68700a7319 Add TaskEditEventBus 4 years ago
Alex Baker b087cc090f Add ClearTaskEditFragment event 4 years ago
mm4c 2c96e6ef29
Translated using Weblate (Dutch)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Alex Baker 2c189f9610 Restore Firebase RemoteConfig 4 years ago
Alex Baker 2aee91a04b Use In-App Review API 4 years ago
Alex Baker ce191d3325 Add MainActivity and TaskList event buses 4 years ago
J. Lavoie 51609e54a9
Translated using Weblate (Vietnamese)
Currently translated at 99.3% (661 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Simona Iacob 31792efaf0
Translated using Weblate (Romanian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
mm4c a7de841bc2
Translated using Weblate (Dutch)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
J. Lavoie 54a1fffd79
Translated using Weblate (Galician)
Currently translated at 35.4% (236 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/gl/
4 years ago
Alex Baker e6f90e622d
Merge pull request #1812 from tsunamistonefly/patch-1
Update strings.xml
4 years ago
tsunamistonefly 083b83816d
Update strings.xml
In <string name="third_party_licenses">, changed "Liçensas" to "Licenças", which is the correct spelling.
4 years ago
Alex Baker ebb8f96795 Update version and changelog 4 years ago
Alex Baker 26796c0a57 Add install version and date 4 years ago
Alex Baker e46ef8d7b0 Update migration to drop invalid rows 4 years ago
Milo Ivir ae3d0f3d05
Translated using Weblate (Croatian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
qwerty287 e3497f3f7d
Translated using Weblate (German)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Alex Baker 4ca80e08c5 Update version and changelog 4 years ago
Milo Ivir 9adc822610
Translated using Weblate (Croatian)
Currently translated at 99.8% (665 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Eric 7083b377f5
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk 84bddafa16
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Oğuz Ersen a2a3bb454a
Translated using Weblate (Turkish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
mm4c 636d7a5a70
Translated using Weblate (Dutch)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Pierfrancesco Passerini 16b6f90743
Translated using Weblate (Italian)
Currently translated at 99.6% (664 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Florian Trayon 3da3a62d96
Translated using Weblate (French)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Sebas Romero ecdf8c61e4
Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Florian Trayon 85d53c02de
Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker 494c449fe6 Disable alarm sync for synology calendar 4 years ago
Alex Baker e8f231b288 Add server selector 4 years ago
Alex Baker 0cfb27df22 Remove encryptionKey and suppress repeat columns 4 years ago
Alex Baker f4398d82c6 Chunk tasks when updating modified time 4 years ago
Alex Baker c7f9f6e0e3 Fix thunderbird ack time 4 years ago
Alex Baker a62ffbc9fb Update modified if alarms changed during sync 4 years ago
Alex Baker b5993d0bee Fix compile 4 years ago
Allineer 94a8ff68f2
Translated using Weblate (Russian)
Currently translated at 99.2% (657 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
J. Lavoie 57200d5c1f
Translated using Weblate (Italian)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
J. Lavoie 94b277141a
Translated using Weblate (French)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Arne Klein 453d57cb7e
Translated using Weblate (German)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Alex Baker 36e9a8493d Add CalDAV server strings 4 years ago
Alex Baker 62c5d21322 Save vtodo to disk if put is successful 4 years ago
Alex Baker b4c85ed5c7 Clear reminder if dismissed in Thunderbird 4 years ago
Alex Baker 7941373a37 Fix reminder synchronization
Remote changes were being ignored if local reminders were present
4 years ago
Alex Baker 446de069ae Add built-in notifications filter 4 years ago
Alex Baker 62931a5c70 Add option to store snoozed filter in preference 4 years ago
Alex Baker 52a902c51a Refresh lists and tasks after updating alarms 4 years ago
Alex Baker 3d9835a162 Add built-in Snoozed filter 4 years ago
Alex Baker a5e0a06762 Fix check for ring flag changes 4 years ago
Alex Baker 25ab16faa8 Update dependency diff 4 years ago
Alex Baker a8f9fd1b77 Add missing license 4 years ago
Jonatan Nyberg 992e5048ec
Translated using Weblate (Swedish)
Currently translated at 99.5% (659 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
4 years ago
Toni Estévez 83d3820cf1
Translated using Weblate (Spanish)
Currently translated at 99.8% (661 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
eldiep aded5e4d06
Translated using Weblate (German)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
109247019824 f7e6fd8684
Translated using Weblate (Bulgarian)
Currently translated at 83.3% (552 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker 73eeec9663 Add recurring reminders 4 years ago
Alex Baker 50dde0b4c8 Convert alarm string methods to extensions 4 years ago
Alex Baker 968ba7080d Convert some fields to lateinit 4 years ago
Simona Iacob f5a01f71c9
Translated using Weblate (Romanian)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
Pierfrancesco Passerini 477b3c29ce
Translated using Weblate (Italian)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Kaci 295fe61eff
Translated using Weblate (Hungarian)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
4 years ago
Alex Baker fdb2662e99
Merge pull request #1800 from hugomg/my-order
Fix pt-BR translation for "My order"
4 years ago
Hugo Musso Gualandi 957ad8f4d5 Fix pt-BR translation for "My order"
The current translation means "my purchases". I am changing it to be the
same as the pt-PT translation, which is correct.
4 years ago
JY3 f8e1b1f828
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Frits van Bommel cee7e39824
Translated using Weblate (Dutch)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
JY3 9ac05e1e2c
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
mm4c d4f594127f
Translated using Weblate (Dutch)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Frits van Bommel 97ac2989b0
Translated using Weblate (Dutch)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
mm4c 63cadc30e8
Translated using Weblate (Dutch)
Currently translated at 100.0% (662 of 662 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Alex Baker b026502bf8 Fix custom filter criteria placeholders 4 years ago
Alex Baker 5e94537849 Remove OpenTask accounts when native added 4 years ago
Alex Baker c9be5728b1 Remove kotlinx-collections-immutable-jvm 4 years ago
Alex Baker 75701f0b42 Remove Firebase RemoteConfig 4 years ago
bruh 15d4e5182c
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
RainSlide d5a8b86deb
Translated using Weblate (Urdu)
Currently translated at 70.4% (467 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
4 years ago
RainSlide e20e746490
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
109247019824 64f0c95aaa
Translated using Weblate (Bulgarian)
Currently translated at 83.1% (551 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker 323fa0eb8a Remove unused database columns 4 years ago
Alex Baker f512b8291b Wrong year 🤦 4 years ago
Alex Baker cb9661bc56 Move radius from geofence to place 4 years ago
Alex Baker cf701e40c8 Update version and changelog 4 years ago
Alex Baker 2bf58b6977 Update reminder control set padding 4 years ago
Alex Baker 64dee60111 Delete vtodo data on reset 4 years ago
Milo Ivir c77f0770ad
Translated using Weblate (Croatian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Eric 2940f3bd54
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Oğuz Ersen 1bb0d39d78
Translated using Weblate (Turkish)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
SC 2ec8ffd0c5
Translated using Weblate (Portuguese)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
mm4c 64ba437ac4
Translated using Weblate (Dutch)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Florian Trayon 0e0743dc1f
Translated using Weblate (French)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
109247019824 ac3866339a
Translated using Weblate (Bulgarian)
Currently translated at 81.1% (538 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker 672dcdd268 Fix migration 4 years ago
Alex Baker 1154ba4be4 Store icalendar data on disk 4 years ago
Alex Baker 433ae41200 Add FlowHelpers 4 years ago
Alex Baker 978d27de73 Don't purge moved tasks 4 years ago
Alex Baker ad672d33aa Lifecycle 2.4.1 4 years ago
Alex Baker 188acb4378 Flipper 0.136.0 4 years ago
Alex Baker 0557ab4d18 OkHttp 4.9.3 4 years ago
Alex Baker 9d71c3f999 Update crashlytics and analytics 4 years ago
Alex Baker b45ed3bc14 WorkManager 2.7.1 4 years ago
Alex Baker 5c45d356c3 Hilt 2.41 4 years ago
Alex Baker f99fcd3125 Room 2.4.2 4 years ago
Alex Baker 259f428d71 Jetpack Compose 1.1.1 4 years ago
Alex Baker 128715879a Remove monthly and bi-monthly random defaults 4 years ago
Alex Baker efd9276e7a Fix alarm text overlap 4 years ago
Ihor Hordiichuk db334c792a
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
mm4c 7167aa2862
Translated using Weblate (Dutch)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Roj 7acc00d4ff
Translated using Weblate (Kurdish (Central))
Currently translated at 4.3% (29 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ckb/
4 years ago
mm4c 1a38ff07b5
Translated using Weblate (Dutch)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Roj a2b3fcea2b
Added translation using Weblate (Kurdish (Central)) 4 years ago
Alex Baker b4315f9beb New reminder control set
* Custom random reminder intervals
* Add multiple random reminders
4 years ago
Alex Baker dfe64d5f6f Convert selected alarms to MutableStateFlow 4 years ago
Alex Baker 656c856737 Remove bitwise operations 4 years ago
Jeffree Romero a5afc509fe
Translated using Weblate (Spanish)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Sebas Romero 45b41e167f
Translated using Weblate (Spanish)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker d339760985 Update version and changelog 4 years ago
Alex Baker ec3150f455 Fix alarm migration issues 4 years ago
Alex Baker 488836f848 Fix ring flag migration issue 4 years ago
Alex Baker 42e44eafdc Merge remote changes before pushing local changes
Only applies to native CalDAV and native EteSync
4 years ago
Alex Baker 39438dd8b7 Don't delete unpushed tasks 4 years ago
Andrea Rosso 302a9f5d7f
Translated using Weblate (Italian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
qwerty287 47b607323f
Translated using Weblate (German)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Alex Baker 0fcab69e5b Fix calendar entry updates 4 years ago
Luiz-bro 5de75d2036
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
4 years ago
Milo Ivir 60ed6ba815
Translated using Weblate (Croatian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Eric ad89a6efce
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk 21a5f06bb6
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Emin Tufan Çetin f5774cc93a
Translated using Weblate (Turkish)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Nikita Epifanov bd91355a2a
Translated using Weblate (Russian)
Currently translated at 99.4% (667 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
mm4c e8ab7e1363
Translated using Weblate (Dutch)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
109247019824 3e3c122e21
Translated using Weblate (Bulgarian)
Currently translated at 81.0% (544 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Mohammed Anas b35629ceeb
Translated using Weblate (Arabic)
Currently translated at 96.1% (645 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
4 years ago
Alex Baker 5907cae106 Fix migration and API issue 4 years ago
Alex Baker 762ae3dc59 Fix lint errors 4 years ago
Florian Trayon e111dd87bf
Translated using Weblate (French)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon d11d431049
Translated using Weblate (Spanish)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
bruh 41025ba012
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Eric 192cf10f67
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
mm4c 53fe2f6f76
Translated using Weblate (Dutch)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Alex Baker bfe0af5500 New relative reminder picker
Only supports 'before due' for now
4 years ago
Alex Baker d062bbb574 Remove extra translation 4 years ago
Alex Baker 733451fbc9 Fix search for top app bar 4 years ago
Alex Baker 4acad387dc Force sync if alarms change 4 years ago
Alex Baker cab4a877a2 Migrate random reminders and snooze from backups 4 years ago
Ihor Hordiichuk fe0dee99a6
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
J. Lavoie 4419002088
Translated using Weblate (Italian)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Florian Trayon f971168138
Translated using Weblate (French)
Currently translated at 99.8% (665 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon c1574b9188
Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
J. Lavoie 7e2525f12f
Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Eric 55d0494c7b
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk 27a64e511f
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Simona Iacob 4b29e3bd0a
Translated using Weblate (Romanian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
SC 05ef5a8712
Translated using Weblate (Portuguese)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
mm4c 713594bc85
Translated using Weblate (Dutch)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Pierfrancesco Passerini 0e820f9d9f
Translated using Weblate (Italian)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Florian Trayon f82acd700d
Translated using Weblate (French)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 54320927eb
Translated using Weblate (Spanish)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
qwerty287 b7d2d62e01
Translated using Weblate (German)
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Eric 5443eafc23
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (665 of 665 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Alex Baker a5a65e2a2e Fix random reminder issues 4 years ago
Alex Baker cb834a9818 Convert random and snooze reminders to alarms
Display snooze time in edit screen
4 years ago
Alex Baker 67899e6fff Revert "Generate proper UUID strings for new tasks"
This reverts commit b6b0b233e2.
4 years ago
Alex Baker ffe1ee6001 Refresh after alarms change 4 years ago
Alex Baker 2d3da4c306 Update translation 4 years ago
Milo Ivir dc45b65f2f
Translated using Weblate (Croatian)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
SC 8a281202f7
Translated using Weblate (Portuguese)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
Kaci 0db6a3070f
Translated using Weblate (Hungarian)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
4 years ago
Alex Baker 03ea39c682 Add 'Has reminder' custom filter criteria 4 years ago
Alex Baker 00bc23c0dd Add alarm tests 4 years ago
Alex Baker 65e05b85b8
Merge pull request #1765 from sochotnicky/generate-proper-uuid
Generate proper UUID strings for new tasks
4 years ago
Alex Baker c88983ea77 Remove translations 4 years ago
Sergio Varela 408c85d047
Translated using Weblate (Basque)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
Eric f8527cfef4
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk 0eb537886b
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Simona Iacob baaeed46f8
Translated using Weblate (Romanian)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
Sergio Varela 7606759d1d
Translated using Weblate (Spanish)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
J. Lavoie 64f4b039fc
Translated using Weblate (German)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Alex Baker 3b2b16f0c6 Synchronize VALARMs 4 years ago
Stanislav Ochotnický b6b0b233e2 Generate proper UUID strings for new tasks
Tasks app works fine with tasks created in other applications, pulled from
CalDav etc. When new events are created, it generates a UUID that's not really
a UUID form due to how UUIDHelper is written.

This change simplifies the helper and just returns the UUID generated by java
util. The code had comments suggesting the method was originally returning
something else besides the UUID string itself and possibly for other use cases.

The underlying reason for my case is that one piece of software I
use (org-caldav) is arguably buggy and expecting actual UUID. However other
software I've been using generates/uses UUID so I feel like this should be a
compatible/easy change that only affects new items.
4 years ago
Oğuz Ersen 09da1dcc42
Translated using Weblate (Turkish)
Currently translated at 99.3% (660 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
mm4c 879d0da632
Translated using Weblate (Dutch)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
J. Lavoie 3eadcd420a
Translated using Weblate (French)
Currently translated at 100.0% (664 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
J. Lavoie 25bacbf192
Translated using Weblate (German)
Currently translated at 98.9% (657 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Pierfrancesco Passerini a3c5850155
Translated using Weblate (Italian)
Currently translated at 99.8% (663 of 664 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Alex Baker e3bfd8b7a1 Fix repeat tests 4 years ago
Alex Baker 2d9c1638dc Add support for relative and repeating alarms 4 years ago
Eric 861a82baf4
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Oğuz Ersen e780af3fdb
Translated using Weblate (Turkish)
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Nikita Epifanov 136e9097b6
Translated using Weblate (Russian)
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
mm4c ba44cd8a59
Translated using Weblate (Dutch)
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Florian Trayon f744957fc3
Translated using Weblate (French)
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 058f835482
Translated using Weblate (Spanish)
Currently translated at 100.0% (659 of 659 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker d2121cc53a Update version and changelog 4 years ago
Alex Baker 23f24f78e4 Add toggle to disable completion date sorting 4 years ago
Eric bd485aa431
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk 66bf62503e
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Oğuz Ersen ff2f96132f
Translated using Weblate (Turkish)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
mm4c 1f7a58f6f4
Translated using Weblate (Dutch)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Florian Trayon fd0ce09382
Translated using Weblate (French)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 57fbd1cb4d
Translated using Weblate (Spanish)
Currently translated at 100.0% (658 of 658 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker b123f7ce48 Update version and changelog 4 years ago
Alex Baker 7ddc681bf2 Batch undo for completion snackbar 4 years ago
Alex Baker 31797e2e9d Show completed by default 4 years ago
Alex Baker 35f7b8d8e0 Add Karelian to language overrides 4 years ago
Eric 483d4e6c53
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk e9a9b8bf13
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Oğuz Ersen 5a4ef4110b
Translated using Weblate (Turkish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
mm4c 46bac9ec5b
Translated using Weblate (Dutch)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Florian Trayon 13215f288e
Translated using Weblate (French)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon e5c61d520d
Translated using Weblate (Spanish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker 90ca4beb63 Add option to disable completed at bottom 4 years ago
Alex Baker 95b34d2a21 Collapse completed section by default 4 years ago
Alex Baker aadf4968cf Fix voice reminders on Android 12+ 4 years ago
Alex Baker 36944fb098 Show full due date in widget overdue group 4 years ago
Alex Baker c1afbfbaa8 Fix crash when fetching current location 4 years ago
mm4c 0b97b96d4b
Translated using Weblate (Dutch)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Alex Baker 33c1dcee69 Add 'Task completed' snackbar 4 years ago
Alex Baker 985cdc47ce Fix test compile 4 years ago
Alex Baker d2dddb9dbc Fix repeat rule tests 4 years ago
Alex Baker 7a365167c8 Replace timestamps with alarms 4 years ago
bruh f03e8d0b36
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Ivan GJ 3b63523d53
Translated using Weblate (Catalan)
Currently translated at 32.1% (211 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
4 years ago
qwerty287 7a78218a26
Translated using Weblate (German)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Olexii Ondrei 6930a3dcae
Translated using Weblate (Karelian)
Currently translated at 2.5% (17 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/krl/
4 years ago
Sergio Varela f34189a206
Translated using Weblate (Basque)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
Jonatan Nyberg b8c7312140
Translated using Weblate (Swedish)
Currently translated at 99.6% (654 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
4 years ago
Simona Iacob f653aa70a3
Translated using Weblate (Romanian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
mm4c 543a3871d1
Translated using Weblate (Dutch)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Kaci 1668d79439
Translated using Weblate (Hungarian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
4 years ago
Alex Baker 331dcc14b1 Adjust alarms when undoing repeat 4 years ago
Alex Baker eec7d62adb Only setup view model on initial creation 4 years ago
Milo Ivir 5388d055a4
Translated using Weblate (Croatian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Eric f1fa1df99e
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Emin Tufan Çetin 149c26e589
Translated using Weblate (Turkish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Nikita Epifanov 19f7d667a0
Translated using Weblate (Russian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
mm4c 5cbe2e4d6c
Translated using Weblate (Dutch)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Olexii Ondrei 6e24cf4f81
Added translation using Weblate (Karelian) 4 years ago
Alex Baker cb273029c2 Update version 4 years ago
Alex Baker bd2256337b Update firebase crashlytics and analytics 4 years ago
Alex Baker 0b9f844907 Fix completed group for smart and title sort 4 years ago
Alex Baker c32a9520c5 Fix completed group for non-recursive queries 4 years ago
Alex Baker 43f019bcb4 Update version 4 years ago
Alex Baker 629d47df4e Use native boolean 4 years ago
Ihor Hordiichuk a2279cb218
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Florian Trayon 5c07c37112
Translated using Weblate (French)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon f0b62bc325
Translated using Weblate (Spanish)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker 0b0580e01b Update version and changelog 4 years ago
Alex Baker aee564471a Add option to disable collapsing app bars 4 years ago
Alex Baker 4bda63b43d Automatically expand menu for top app bar 4 years ago
Eric a79b7f276a
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk b914978a5b
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
mm4c 3f205bd471
Translated using Weblate (Dutch)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Florian Trayon 9ce7f39376
Translated using Weblate (French)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 9dfa04c79b
Translated using Weblate (Spanish)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker 16cdd8e360 Play completion sounds with ringtone manager 4 years ago
Alex Baker fdde6c0313 Fix completed task group header 4 years ago
Alex Baker 1edd9b8c5d Uncomplete parents when subtask is uncompleted 4 years ago
mm4c fa9cb460cc
Translated using Weblate (Dutch)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Alex Baker ef62a946c6 Sort completed tasks at bottom 4 years ago
Alex Baker eda9cd0c97 Remove 'show completed temporarily' 4 years ago
Alex Baker a13ec46162 Reorder fetchTasks arguments 4 years ago
bruh d337ad8341
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Ihor Hordiichuk 1a039a3d92
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Oğuz Ersen 79b06ac35f
Translated using Weblate (Turkish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Nikita Epifanov 7f3a115093
Translated using Weblate (Russian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
Frits van Bommel d23d1144b9
Translated using Weblate (Dutch)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
qwerty287 49414a26d9
Translated using Weblate (German)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Tntdruid 2a0f5eb6c6
Translated using Weblate (Danish)
Currently translated at 99.8% (656 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
4 years ago
Alex Baker 7d54808c92 Get locale api from jitpack 4 years ago
Alex Baker 10797fe6fb Disable sound on task edit checkbox 4 years ago
Alex Baker 6ce99bfec1 Disable android tap sounds on checkboxes 4 years ago
Alex Baker 6fa9901b18 Fix chevron directions 4 years ago
Alex Baker 898960a7dc Leak Canary 2.8.1 4 years ago
Alex Baker ea001b2e65 Update version and changelog 4 years ago
Alex Baker cbd7b75cc0 Overdue section is not red 4 years ago
Sergio Varela e22f9e5b6f
Translated using Weblate (Basque)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
Eric 6efabd2352
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Allan Nordhøy bb7d9d01ae
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
4 years ago
Florian Trayon d1a52a4864
Translated using Weblate (French)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Trayon 10daf5f253
Translated using Weblate (Spanish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
bruh 4300d6328d
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (654 of 654 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Alex Baker 58a2b16662 Group overdue tasks together 4 years ago
Alex Baker 3d7e4c1993 Update version and changelog 4 years ago
Alex Baker 634c030b93 Fix date time picker background for widget 4 years ago
Alex Baker c5e71b76f3 Add option for top or bottom app bar 4 years ago
Nikita Epifanov 3d22d2d932
Translated using Weblate (Russian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
Alex Baker 1e4fa7c744 Rounded corners on drawer fragment 4 years ago
Alex Baker b008545b02 Update version and changelog 4 years ago
Alex Baker a16941b9b1 Reduce space between checkbox and title 4 years ago
Alex Baker 7ae74e2a85 Increase spacing in task edit screen
Match Google Calendar spacing
4 years ago
Alex Baker 5e24e3e977 Remove nav drawer width resource 4 years ago
Alex Baker 7338dc3f30 Remove task list cards 4 years ago
Alex Baker 08ff146320 Update drawer headers
* Move chevron to end
* Animate chevron
* 'Add' button replaces 'Create new ...' rows
4 years ago
Alex Baker ad4af1a2cb Remove lighter dark mode color 4 years ago
Alex Baker 45b0801158 Animate sort group chevrons 4 years ago
Alex Baker 599faa660c Update flipper and leak canary 4 years ago
Alex Baker 9238d367ac Set snackbar anchor to fab 4 years ago
Alex Baker f8fd78a5b7 Automatically expand date time picker 4 years ago
Alex Baker 4bc3162a5a Fix search text color 4 years ago
Alex Baker 08f3ddeb33 Skip collapsed state when swiping bottom sheet 4 years ago
Alex Baker 39b880a592 Remove translation errors 4 years ago
Alex Baker 59673e3975 Remove WRITE_EXTERNAL_STORAGE permission 4 years ago
Alex Baker 62598ac86f Remove org.tasks permission 4 years ago
Francesco Saltori 6b337e9526
Translated using Weblate (Italian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Solatec Informàtica 393873e157
Translated using Weblate (Catalan)
Currently translated at 24.7% (162 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
4 years ago
Alex Baker e6bdd666f4 Update version and changelog 4 years ago
Ihor Hordiichuk 60f6f55327
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Simona Iacob 309fba2acc
Translated using Weblate (Romanian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
ssantos 07da893a2d
Translated using Weblate (Portuguese)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
mm4c 0d84dcd190
Translated using Weblate (Dutch)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Pierfrancesco Passerini 4d8f34bc5a
Translated using Weblate (Italian)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
qwerty287 796679826b
Translated using Weblate (German)
Currently translated at 100.0% (655 of 655 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Alex Baker 28f45b05ac Bottom app bar 4 years ago
Alex Baker db973b2419 Use ShareCompat for sending text 4 years ago
Alex Baker 47f920e32a Use third-party app for recording audio notes 4 years ago
Alex Baker b59316db78 Update version and changelog 4 years ago
Alex Baker 1de07c8937 Fix null pointer exception on missing ringtone 4 years ago
Eric 3e1fab6e3e
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Allan Nordhøy 5f5a194451
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
4 years ago
Kaci a19938f2d8
Translated using Weblate (Hungarian)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
4 years ago
Florian Dubois 0583829c2c
Translated using Weblate (French)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Dubois 45febecedc
Translated using Weblate (Spanish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alejandro López 4b1636f283
Translated using Weblate (Spanish)
Currently translated at 100.0% (657 of 657 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Alex Baker c94426dffa Update version and changelog 4 years ago
Alex Baker f734d9ff75 Accept audio attachments 4 years ago
Alex Baker 8839be611d Move completion sound preference 4 years ago
Alex Baker 59e2c68f40 Remove option for disabling notifications 4 years ago
Alex Baker a0ecff9a3d Replace flow with channel 4 years ago
Alex Baker 4ea948e3f3 Batch save task completions 4 years ago
Alex Baker 21db56c4e9 Completion sound 4 years ago
Alex Baker fe48285be8 Fix drag and drop differ 4 years ago
Ihor Hordiichuk 3506a60ebc
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (656 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Alex Baker b8f7095f44 Remove GlobalScope usage 4 years ago
Alex Baker a7ada4d11d Remove InjectingBroadcastReceiver 4 years ago
Alex Baker c0b89a63a5 Fix coroutine search 4 years ago
Dixon Huang ebeb343555
Translated using Weblate (Chinese (Traditional))
Currently translated at 85.3% (560 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
4 years ago
Dixon Huang f22570bb3a
Translated using Weblate (Chinese (Traditional))
Currently translated at 83.2% (546 of 656 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
4 years ago
Alex Baker 4ba409706b Update licenses 4 years ago
Alex Baker 36713bb445 Update dependencies 4 years ago
Alex Baker 0f97f1e37b Update Google Maps 4 years ago
Alex Baker fb87e23387 Update Play Location Services 4 years ago
Alex Baker 5f42f82f49 Remove unused resources 4 years ago
Alex Baker f906b57d4e Remove native EteSync v1 support
EteSync v1 accounts can still be used with the EteSync app
4 years ago
Alex Baker 462ec04091 Fix geo truncate 4 years ago
Alex Baker 76d271b902 Android Studio 2020.3.1 Patch 4 4 years ago
Alex Baker fe5f6b4e35 Use coroutines for drag and drop differ 4 years ago
Alex Baker da967afaf5 Use coroutines for search 4 years ago
Alex Baker 8181d20ff5 Remove unused CompositeDisposables 4 years ago
Francesco Saltori c927f46bf6
Translated using Weblate (Italian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Alejandro López 0141a3bab9
Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
J. Lavoie 280fb3ab3e
Translated using Weblate (Italian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
Ahmad HosseinBor 777c8fdd76
Translated using Weblate (Persian)
Currently translated at 30.0% (201 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fa/
4 years ago
Rami Lehtinen 0cbe063e69
Translated using Weblate (Finnish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
4 years ago
CSharpest ffc39ad157
Translated using Weblate (Finnish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
4 years ago
Alex Baker 0c2f4291ad Replace magic number for decimal places 4 years ago
Alex Baker 024183f118 Fix monthly recurrence at end of month 4 years ago
Alex Baker 23f12c8df3 Update fastlane 4 years ago
109247019824 c563fc2e7d
Translated using Weblate (Bulgarian)
Currently translated at 83.2% (557 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker a6e0bf433a Add reminder preference migration tests 4 years ago
Alex Baker 83b1246282 Fix reminder preference summary 4 years ago
Alex Baker 92082e2d47 Update changelog and version 4 years ago
Alex Baker 554f8c582c Use shifted values for reminder preferences 4 years ago
whenwesober 77d9f76e54
Translated using Weblate (Indonesian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
4 years ago
Pêşeroja paşerojê 0c4619204f
Translated using Weblate (Kurdish (Northern))
Currently translated at 2.0% (14 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/kmr/
4 years ago
Pêşeroja paşerojê ce0a5d3157
Added translation using Weblate (Kurdish (Northern)) 4 years ago
Viorel-Cătălin Răpițeanu dc28cfa8dd
Translated using Weblate (Romanian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
Alex Baker 4cb94be06d Update version and changelog 4 years ago
Alex Baker 9e7dcbfc12 Update gradle properties 4 years ago
Alex Baker c53780d9a0 Fix default reminder preference 4 years ago
Alex Baker a100fca5af Back up string set preferences 4 years ago
Balaji c52ab2a47c
Translated using Weblate (Tamil)
Currently translated at 76.5% (512 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
4 years ago
Software In Interlingua 1b2b757732
Translated using Weblate (Interlingua)
Currently translated at 4.6% (31 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ia/
4 years ago
Alex Baker b81a28eece Update version and changelog 4 years ago
Alex Baker 9a37a89a61 Fix default reminder preference 4 years ago
Alex Baker 51e7c210e7 Jetpack Compose 1.0.5 4 years ago
Balaji 387aa0131b
Translated using Weblate (Tamil)
Currently translated at 75.7% (507 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
4 years ago
Oğuz Ersen 5167158224
Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
109247019824 329b4da0a2
Translated using Weblate (Bulgarian)
Currently translated at 82.3% (551 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Simona Iacob 55269274e0
Translated using Weblate (Romanian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
Nikita Epifanov 51426dce74
Translated using Weblate (Russian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
HumanNr4584093104 82031b069a
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
4 years ago
Milo Ivir 2b3c0cbfe5 Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Alex Baker 61cfc94b99 Update version and changelog 4 years ago
Alex Baker 5eae8389d4 Fix generic compile 4 years ago
Alex Baker e496ce1594 Fix tests 4 years ago
Alex Baker 1320ad2e7d material components 1.5.0-alpha05 4 years ago
Alex Baker d9f58f9832
Merge pull request #1662 from fschrempf/fix-task-deletion-query-chunking
Fix chunking of SQLite queries in case of task deletion
4 years ago
Frieder Schrempf d70ec00ea2
Fix chunking of SQLite queries in case of task deletion
When having a lot of (> 999) completed tasks in a list, selecting
"Remove all completed tasks" causes a crash of the app with:

SQLiteLog: (1) too many SQL variables

This is due to a bug that accidentally bypasses the chunking of
the db queries to stay below the limit.

This solves #1661.
4 years ago
JY3 91eb9f61bf
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
bruh 5e53f8e550 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Sergio Varela bdea0c00aa Translated using Weblate (Basque)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
SC 4f469693fd Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
qwerty287 98eead068f Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
109247019824 e345daea42 Translated using Weblate (Bulgarian)
Currently translated at 81.6% (546 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker cee35eae96 Add some Android 12 widget settings
* Reconfigurable
* Configuration optional
* Target size
4 years ago
Frits van Bommel 01786a8d40
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
Kaci 23478d019c
Translated using Weblate (Hungarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
4 years ago
Florian Dubois 9958038e27
Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Alex Baker 3f108c5b03 Update default value for default reminders 4 years ago
Eric 705a37ee0f
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk 10a9b8fc62
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Gediminas Murauskas 0eb30dd1e9
Translated using Weblate (Lithuanian)
Currently translated at 100.0% (671 of 671 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
4 years ago
Alex Baker 616f20d903 Add start date reminders to default preferences 4 years ago
Alex Baker d58f84e09f Fix start date reminder logic 4 years ago
Alex Baker b13f62a9fb Add option to notify at start date 4 years ago
109247019824 a0594df42e
Translated using Weblate (Bulgarian)
Currently translated at 70.5% (473 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker 442e4b9b8a Update workmanager and room 4 years ago
Alex Baker 0aa09d834d Jetpack Compose 1.0.4 4 years ago
Alex Baker 557ed0712c Android Studio 2020.3.1 Patch 3 4 years ago
Solatec Informàtica 068c59f0c3
Translated using Weblate (Catalan)
Currently translated at 24.3% (163 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
4 years ago
JY3 27f52a47f5
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Alex Baker 8da84914d0 Room 2.4.0-alpha05 4 years ago
Alex Baker c267f369e4 Jetpack Compose 1.0.3, Kotlin 1.5.30 4 years ago
Alex Baker b3e7a224c9 Enable gradle caching 4 years ago
JY3 35427ed8f2
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Dominik Korsa b7065bb311
Translated using Weblate (Polish)
Currently translated at 99.8% (669 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
4 years ago
Alex Baker be9717515a Update version and changelog 4 years ago
Alex Baker 21765cd414 Fork OpenTasks to fix PendingIntent 4 years ago
DilshanH ef20c9f555
Translated using Weblate (Sinhala)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
4 years ago
109247019824 354270145a
Translated using Weblate (Bulgarian)
Currently translated at 69.2% (464 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
Alex Baker e06d0ffb15 Update third party dependencies 4 years ago
Alex Baker f7dcd2f023 Update version and changelog 4 years ago
Alex Baker d31d1f4f7d Remove translations 4 years ago
Alex Baker fd95e9d74d Add lint task to fastlane 4 years ago
Alex Baker 53da3dcb9d
Merge pull request #1614 from Groctel/main
Added line breaks to strings that are cut in Spanish
4 years ago
Alex Baker 8346fd7b52 Fix missing import 4 years ago
Alex Baker 94d4037439 Target Android 12 4 years ago
Alex Baker 944db29a19 workmanager 2.7.0-beta01 4 years ago
JY3 d3aa4c8803
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Simona Iacob 2194106717
Translated using Weblate (Romanian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
4 years ago
Valentin Berman 9572abb8c2
Translated using Weblate (Spanish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Francesco Saltori 0b4ef31f07
Translated using Weblate (Italian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
J. Lavoie 7ae0690559
Translated using Weblate (Italian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
4 years ago
J. Lavoie 64be35b506
Translated using Weblate (German)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Vít Skalický ff309c0f1e
Translated using Weblate (Czech)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
4 years ago
Alex Baker f4a62e4ab6 Jetpack Compose 1.0.2 4 years ago
Alex Baker f2a522c355 Android Studio 2020.3.1 Patch 2 4 years ago
Alex Baker 5543857e74 Update dependencies 4 years ago
SC ae9dc7a1c2
Translated using Weblate (Portuguese)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
SC 675a5a0dac
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
4 years ago
さとうまこと b1bf484064
Translated using Weblate (Japanese)
Currently translated at 70.7% (474 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
4 years ago
Groctel 822c94acd1
Translated using Weblate (Spanish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Groctel 61b7d915ae
Added line breaks to strings that are cut in Spanish 4 years ago
Antonios Hazim 5d72d9058a
Translated using Weblate (German)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
4 years ago
Antonios Hazim 0801fdfff1
Translated using Weblate (Arabic)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
4 years ago
Mohammed Anas 46af7f21de
Translated using Weblate (Arabic)
Currently translated at 98.9% (663 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
4 years ago
Gediminas Murauskas c478ecad44
Translated using Weblate (Lithuanian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
4 years ago
Alex Baker fd1c8657f0 Timber 5.0.1 4 years ago
Alex Baker 334e2b283c Android Studio 2020.3.1 Patch 1 4 years ago
Alex Baker 814bb3c84f Fix compilation 4 years ago
Mohammed Anas 16fa4c8a56
Translated using Weblate (Arabic)
Currently translated at 99.1% (664 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
4 years ago
Alex Baker e8450390bc Update Google Tasks and Google Drive 4 years ago
Alex Baker f437a8110a Jetpack Compose 1.0.1 4 years ago
mhmdanas ec22aa81a4 Don't run CI on changes to unrelated files 4 years ago
Erigmac X ebf3016c2f
Translated using Weblate (Indonesian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
4 years ago
Gediminas Murauskas d462c98bb2
Translated using Weblate (Lithuanian)
Currently translated at 74.1% (497 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
4 years ago
Luna Jernberg f01751c2af
Translated using Weblate (Swedish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
4 years ago
Tntdruid 2e6633d774
Translated using Weblate (Danish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
4 years ago
Gediminas Murauskas 793b6064be
Translated using Weblate (Lithuanian)
Currently translated at 74.0% (496 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
4 years ago
Sérgio Morais 67c75bdd7c
Translated using Weblate (Portuguese)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
4 years ago
Alex Baker aab049ed72 SVG graphics 4 years ago
Frits van Bommel 1a984583ad
Translated using Weblate (Dutch)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
4 years ago
bruh 4a5e8802de
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
4 years ago
Oğuz Ersen 16d0e595c8
Translated using Weblate (Turkish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
4 years ago
Georgios Pitsiladis 801820daf6
Translated using Weblate (Greek)
Currently translated at 23.1% (155 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
4 years ago
Gontzal Manuel Pujana Onaindia 1a7b959fa7
Translated using Weblate (Basque)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
4 years ago
109247019824 9f73adecde
Translated using Weblate (Bulgarian)
Currently translated at 69.2% (464 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
4 years ago
TooManyMods 5a24e9ab3a
Translated using Weblate (Russian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
zhelemysh f45fe3beb2
Translated using Weblate (Russian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
Tolstovka c4e3ce76a9
Translated using Weblate (Russian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
4 years ago
Alex Baker f670ee917e Jetpack Compose 1.0.0 4 years ago
Alex Baker bfd033fa82 Android Studio 2020.3.1 4 years ago
Milo Ivir 236cf51694
Translated using Weblate (Croatian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
4 years ago
Eric e609a1683d
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
4 years ago
Ihor Hordiichuk f2d1faf28f
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
4 years ago
Allan Nordhøy 913d1e1073
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
4 years ago
Florian Dubois 8fc9e19396
Translated using Weblate (French)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
4 years ago
Florian Dubois 47cc0d5794
Translated using Weblate (Spanish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
4 years ago
Trevor Terris d9f414a27c Remove Clonable to fix StackOverflow
Potential fix for stackoverflow issue with Clonable.
4 years ago
Alex Baker adacf99290
Merge pull request #1545 from tkterris/now-due-date
Add "now" option for due date filter
4 years ago
Trevor Terris 4fa8654625 Change inheritance to fix stackoverflow in DBObject
DBObject initialization was resulting in a loop causing a StackOverflow, ultimately resulting in the app crashing (issue 1528). Remove recursive class inheritance to hopefully fix this issue.
4 years ago
Alex Baker 5d34496efc Android Studio Arctic Fox rc01 5 years ago
109247019824 5ead3ede87
Translated using Weblate (Bulgarian)
Currently translated at 69.2% (463 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
5 years ago
Alex Baker c96f447b20
Update v11.3 release notes
Mention dropping support for XML backups
5 years ago
Alex Baker b74e000283 Material Components 1.4.0 5 years ago
Alex Baker 0e932bea8f Ignore link click during multiselect 5 years ago
Alex Baker 626f5a55a7 Jetpack Compose 1.0.0-rc02 5 years ago
Yannik Jérôme Büchi af59052ffe
Translated using Weblate (Sinhala)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
5 years ago
Yannik Jérôme Büchi 116c434158
Translated using Weblate (Kannada)
Currently translated at 2.8% (19 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/kn/
5 years ago
Yannik Jérôme Büchi 2ae088a675
Translated using Weblate (Thai)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/th/
5 years ago
Yannik Jérôme Büchi d1e4d0e958
Translated using Weblate (Swedish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
5 years ago
Yannik Jérôme Büchi 716fb182e5
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
5 years ago
Yannik Jérôme Büchi f9e8dc9566
Translated using Weblate (Polish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Allan Nordhøy 2ad4fc7147
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Gediminas Murauskas 32ce862420
Translated using Weblate (Lithuanian)
Currently translated at 73.2% (490 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
5 years ago
Yannik Jérôme Büchi 933b5b124e
Translated using Weblate (Korean)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
5 years ago
Yannik Jérôme Büchi 0454a6acfe
Translated using Weblate (Hebrew)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
Yannik Jérôme Büchi 77eadbd97c
Translated using Weblate (Hungarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Yannik Jérôme Büchi 74f72e19b6
Translated using Weblate (Finnish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
5 years ago
Yannik Jérôme Büchi 8a55ce4b43
Translated using Weblate (Danish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
5 years ago
109247019824 19b15cb645
Translated using Weblate (Bulgarian)
Currently translated at 66.8% (447 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
5 years ago
Yannik Jérôme Büchi 82d9c6d635
Translated using Weblate (Arabic)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 6d92b3d6e9 Update version and changelog 5 years ago
Alex Baker 2166ca17da Fix preference backup 5 years ago
Alex Baker 03f12b2032 Fix location based reminders 5 years ago
Yannik Jérôme Büchi fb98d983a9
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
HelaBasa 5e66526973
Translated using Weblate (Sinhala)
Currently translated at 99.8% (668 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
5 years ago
Milo Ivir 95c683a68c
Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Gediminas Murauskas a3d13ea267
Translated using Weblate (Lithuanian)
Currently translated at 70.7% (473 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
5 years ago
Maaz bce4baa115
Translated using Weblate (Urdu)
Currently translated at 73.2% (490 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Gediminas Murauskas 0d50b55422
Translated using Weblate (Lithuanian)
Currently translated at 68.0% (455 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
5 years ago
J. Lavoie 8e1b8d8b6a
Translated using Weblate (Italian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
dependabot[bot] 1dec5a5bd7 Bump addressable from 2.7.0 to 2.8.0
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/sporkmonger/addressable/releases)
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
5 years ago
Alex Baker 2b37fb6663 Android Studio Arctic Fox beta 5 5 years ago
Alex Baker afc730c061 Jetpack Compose 1.0.0-rc01 5 years ago
Gediminas Murauskas af75468cdb
Translated using Weblate (Lithuanian)
Currently translated at 64.8% (434 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
5 years ago
Christian Eichert b26be92571
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
bluedeepimpact 41ef6d72ab
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
C. Rüdinger 2e6334814a
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
GM df7ceabaf0
Translated using Weblate (Lithuanian)
Currently translated at 55.9% (374 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
5 years ago
Trevor Terris 4b522a7ce8 Change NOW() query to check for all-day tasks
Update query logic in FilterCriteriaProvider to use EOD time instead of current time for all-day tasks. Also, change the default start time for tasks to be non-time-specific (only relevant for when the filter being used to create a task is NOW).
5 years ago
Adolfo Jayme Barrientos 3b15d41157
Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Mohammed Anas 6af647c6db
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker e4b3c14270 Android Studio Arctic Fox beta 4
https://github.com/google/dagger/issues/2700#issuecomment-866524424
5 years ago
Trevor Terris bc906090aa Add ISO format to backup file matcher 5 years ago
Vít Skalický 3f073b7bf0
Translated using Weblate (Czech)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Trevor Terris 9742d93e83 Use ISO 8601 date formatting
Update TasksJsonExporter and the default toString() method in DateTime to use the ISO 8601 standard (in particular, using four-digit years and splitting the date from the time with the character "T").
5 years ago
Pavel Borecki 52965f5e7f
Translated using Weblate (Czech)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Alex Baker 48cd91962d Remove @JvmField annotations 5 years ago
Pavel Borecki 955bf4b6d3
Translated using Weblate (Czech)
Currently translated at 94.4% (632 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Vít Skalický 702454a999
Translated using Weblate (Czech)
Currently translated at 94.4% (632 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Trevor Terris bfacf1ca52 Add "now" option for due date filter 5 years ago
Sérgio Morais 2c8d6e0885
Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
git ty 14a246b4c2
Translated using Weblate (Arabic)
Currently translated at 98.3% (658 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 6d8d808080 Update licenses 5 years ago
Alex Baker d891eaa5e4 Update jetpack compose and hilt 5 years ago
JY3 a068c08524
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Christian Eichert 5755027dc1
Translated using Weblate (Romanian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
5 years ago
bluedeepimpact c630e91f7e
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
C. Rüdinger f6b8c521c1
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
git ty 4ed772012f
Translated using Weblate (Arabic)
Currently translated at 98.0% (656 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Mohammed Anas 3d47edd76a
Translated using Weblate (Arabic)
Currently translated at 98.0% (656 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Christian Eichert 5625d23937
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
C. Rüdinger 72d0339a0c
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Christian Eichert 55226cc2da
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
C. Rüdinger a9d886df60
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Mohammed Anas ab19cbd6f1
Translated using Weblate (Arabic)
Currently translated at 97.4% (652 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
git ty 3d39ecd473
Translated using Weblate (Arabic)
Currently translated at 97.4% (652 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Blueberry 9f5fe6da4f
Translated using Weblate (Russian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Artem 779849e6a4
Translated using Weblate (Russian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Vít Skalický 3db6b8954c
Translated using Weblate (Czech)
Currently translated at 89.8% (601 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
git ty 6e3bb4d041
Translated using Weblate (Arabic)
Currently translated at 97.3% (651 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Emin Tufan Çetin d267e5e2f2
Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Vít Skalický af832860a5
Translated using Weblate (Czech)
Currently translated at 84.6% (566 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
whenwesober f83dca5e36
Translated using Weblate (Indonesian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Software In Interlingua 81e73af8a7
Translated using Weblate (Interlingua)
Currently translated at 2.5% (17 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ia/
5 years ago
Sérgio Morais 4a20edc00c
Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Frits van Bommel 877855e05f
Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Sergio Varela 8843567b55 Translated using Weblate (Basque)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
K. Herbert 69d891be0e Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker defa8f8684 Update third party dependencies 5 years ago
bruh 13f9ee634a Translated using Weblate (Vietnamese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
5 years ago
Milo Ivir ae9262d5ee Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Eric 9516e979a9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk 8345c1a075 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Oğuz Ersen 8753cf5671 Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Florian Dubois 075b325d08 Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 6fbc83dfeb Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 12a735653a Jetpack Compose 1.0.0-beta08 5 years ago
Alex Baker 0849e6fabe Update lint workflow 5 years ago
Alex Baker 4b78b726cc Fix lint error 5 years ago
mhmdanas 0457cd0c8a Replace Freenode with libera.chat in app 5 years ago
mhmdanas be33600ab2 Replace Freenode with libera.chat in README 5 years ago
Milo Ivir 365c863c6e Translated using Weblate (Croatian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Beardhatcode 53be0003dd Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Alex Baker a27913857e Force markdown in whats new dialog 5 years ago
Alex Baker bc3ce75282 Android Studio Arctic Fox beta 3 5 years ago
Vít Skalický 907c1ac728 Translated using Weblate (Czech)
Currently translated at 84.4% (565 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Milo Ivir 3f8da47895 Translated using Weblate (Croatian)
Currently translated at 27.2% (182 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Milo Ivir 7b5671682e Translated using Weblate (Croatian)
Currently translated at 26.0% (174 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Alex Baker aeaf237c9e Update version and changelog 5 years ago
Alex Baker 07435303ba Fix widget clicks 5 years ago
Alex Baker b103a59b62 Update version and changelog 5 years ago
Alex Baker ad4b4bd36b Use dark status bar icons when drawer is opened 5 years ago
Alex Baker ca99e8f6c2 Don't draw filter list under status bar 5 years ago
Alex Baker a67c627fad Add SCHEDULE_EXACT_ALARM permission 5 years ago
Alex Baker 590293421d Use immutable pending intents 5 years ago
Alex Baker 6ab0643ac3 Export activities with intent-filters 5 years ago
Alex Baker 1d3b42067e Update Fastlane 5 years ago
Mohammed Anas 62c4348c51 Translated using Weblate (Arabic)
Currently translated at 73.0% (489 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker a5e956509a Android Studio Arctic Fox beta 2 5 years ago
Vít Skalický 3383bd4dee Translated using Weblate (Czech)
Currently translated at 83.5% (559 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Alex Baker 849be83803 Fix lint errors 5 years ago
Alex Baker 9f2a9ad839 Jetpack Compose beta 7 5 years ago
Alex Baker 024b334fd6 Android Studio Arctic Fox beta 1 5 years ago
Sergio Varela f6033a816f
Translated using Weblate (Basque)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
J. Lavoie bcbbb19ef4
Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
DilshanH 182dc1d354
Translated using Weblate (Sinhala)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
5 years ago
Eugenia Russell 5aa32d93e5 Translated using Weblate (Greek)
Currently translated at 21.6% (145 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
5 years ago
Vít Skalický 51ce1fa53c Translated using Weblate (Czech)
Currently translated at 79.3% (531 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Mohammed Anas 1d62bd3fa4 Translated using Weblate (Arabic)
Currently translated at 72.9% (488 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
DilshanH 50341915dc Translated using Weblate (Sinhala)
Currently translated at 97.0% (649 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
5 years ago
Alex Baker 46e4842f25 Use primary color for status bar 5 years ago
mhmdanas 233a122ae0 Mention AS canary build in CONTRIBUTING.md 5 years ago
Kisaragi Hiu 89d53e431b Translated using Weblate (Japanese)
Currently translated at 70.4% (471 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
5 years ago
mhmdanas 626aa05a1e Minor refactors in AlarmService.kt 5 years ago
mhmdanas 1710885000 Remove unnecessary `var` 5 years ago
Sérgio Morais 66edf4c323 Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Sérgio Morais 50f298a67d Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.7% (667 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
5 years ago
Sunjae Choi 81d162d70f Translated using Weblate (Korean)
Currently translated at 99.7% (667 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
5 years ago
Adolfo Jayme Barrientos 05f6480e31 Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 4ea09596ee Reset to Android Studio defaults 5 years ago
Alex Baker 3363afe460 Update compose, hilt 5 years ago
Alex Baker ce584c1c95 Update third party dependencies 5 years ago
Alex Baker 8df31eaa65 Android Studio Arctic Fox alpha 15 5 years ago
Garden Hose c72860d9d5 Translated using Weblate (Croatian)
Currently translated at 23.4% (157 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Maaz 6ec0cf5988 Translated using Weblate (Urdu)
Currently translated at 71.4% (478 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Kisaragi Hiu 8cfa6d6ba5 Translated using Weblate (Chinese (Traditional))
Currently translated at 82.6% (553 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
5 years ago
Ihor Hordiichuk a308a5122b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Sérgio Morais d06640805a Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Eugenia Russell 1d9e27d4f8 Translated using Weblate (Greek)
Currently translated at 21.0% (141 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
5 years ago
ssantos a2b47aa73a Translated using Weblate (Portuguese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Alex Baker 3e28f33415 Update third party dependencies 5 years ago
Andika Tulus Pangestu 8264f2d943
Translated using Weblate (Indonesian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Nikita Epifanov ce544d2cc1
Translated using Weblate (Russian)
Currently translated at 98.9% (662 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
K. Herbert 0af1c515bc
Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
K. Herbert cd9fbe4843
Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Josep Torrens 2de9170558
Translated using Weblate (Catalan)
Currently translated at 22.4% (150 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
5 years ago
bruh 332f02a52b
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
5 years ago
Jakub Fabijan 7980776dac
Translated using Weblate (Esperanto)
Currently translated at 43.3% (290 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
Jakub Fabijan 17d94f6a01
Translated using Weblate (Polish)
Currently translated at 93.4% (625 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Mohammed Anas 77520659ac
Translated using Weblate (Arabic)
Currently translated at 70.4% (471 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
bruh e71bcd37b9 Translated using Weblate (Vietnamese)
Currently translated at 9.2% (62 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/vi/
5 years ago
Maaz e39a220c48 Translated using Weblate (Urdu)
Currently translated at 68.9% (462 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
bruh d0bd0e52f9 Added translation using Weblate (Vietnamese) 5 years ago
mhmdanas 2ccebc48b1 Remove duplicate string 5 years ago
Jakub Fabijan 5082448366
Translated using Weblate (Esperanto)
Currently translated at 28.9% (194 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
JoseFabio El que Conoces bd0ddcbb42
Translated using Weblate (Esperanto)
Currently translated at 28.9% (194 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
Tamas Gervai 20664d90e7
Translated using Weblate (Hungarian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Mohammed Anas 6a5d8b63cd
Translated using Weblate (Arabic)
Currently translated at 67.4% (452 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 00f6660eed Update version and changelog 5 years ago
Alex Baker 1ac8ec0d97 Use built-in link movement method 5 years ago
Maaz 7c00d20b2f Translated using Weblate (Urdu)
Currently translated at 65.0% (436 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Francesco Saltori a67cd7fdb8 Translated using Weblate (Italian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Alex Baker 9d87028f4f Update version and changelog 5 years ago
Alex Baker 430dc04747 Add MarkdownProvider
Render markdown for widget and notifications
5 years ago
Alex Baker 40245eb4b9 Set low priority on service notifications 5 years ago
Alex Baker a02cd7ae71 Fix lateinit initialization issue 5 years ago
Alex Baker 4425e29899 Check if continuation is active 5 years ago
mhmdanas 6cec72f759 Support Samsung DeX 5 years ago
J. Lavoie 5acf485d34 Translated using Weblate (Italian)
Currently translated at 99.7% (668 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
J. Lavoie 740e6a19e2 Translated using Weblate (French)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Eugenia Russell c6133eab61 Translated using Weblate (Greek)
Currently translated at 21.1% (142 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
5 years ago
J. Lavoie a4c02940c1 Translated using Weblate (German)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Mohammed Anas e05f14da7e Translated using Weblate (Arabic)
Currently translated at 65.8% (441 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 02f5531caa Update version and changelog 5 years ago
Alex Baker 62c507c37f Fix billing upgrade issues 5 years ago
Alex Baker d8599c6aff Clean up translation files 5 years ago
Shashank Pujari 5818c12a87 Translated using Weblate (Kannada)
Currently translated at 1.7% (12 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/kn/
5 years ago
liimee 24e59f4a72 Translated using Weblate (Indonesian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Eric 9428cd3182 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 5b5a866206 Translated using Weblate (Dutch)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci 9f3e305d18 Translated using Weblate (Hungarian)
Currently translated at 99.7% (668 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker 583106806c Update version and changelog 5 years ago
Alex Baker 1a04be6afd Fix linkify preference when Markdown enabled 5 years ago
Ihor Hordiichuk bc5e08ec14
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Oğuz Ersen 86dd242d1a
Translated using Weblate (Turkish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Florian Dubois ab8b4fc713
Translated using Weblate (French)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 308fcdcbf1
Translated using Weblate (Spanish)
Currently translated at 100.0% (670 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Michalis bdf316fa8b
Translated using Weblate (Greek)
Currently translated at 21.1% (142 of 670 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
5 years ago
Kisaragi Hiu 3fa8cc2404 Translated using Weblate (Japanese)
Currently translated at 68.7% (459 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
5 years ago
Michalis 26fc1b7a17 Translated using Weblate (Greek)
Currently translated at 21.2% (142 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
5 years ago
Alex Baker 88e727999b Fix license and lint 5 years ago
Alex Baker c4e98052de Add markdown support 5 years ago
Alex Baker 9960e9a0a9 Convert Linkify to Kotlin 5 years ago
zhelemysh a011ec5edf Translated using Weblate (Russian)
Currently translated at 98.9% (661 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Nikita Epifanov be0ad8fe5d Translated using Weblate (Russian)
Currently translated at 98.9% (661 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Baker ece6999957 Jetpack Compose beta 4 5 years ago
Alex Baker a63a45df22 Android Studio Arctic Fox alpha 14 5 years ago
Nikita Epifanov 1464611bd0
Translated using Weblate (Russian)
Currently translated at 97.4% (651 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Rodrigo Oliveira ce1be7b117 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (668 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
5 years ago
Alex Baker a86e757d0e Remove background sync for legacy EteSync v1 accts 5 years ago
Alex Baker 7e5151cd03 Acknowledge subscriptions 5 years ago
Alex Baker 775b5b56ca Upgrade to Play Billing v3 5 years ago
Alex Baker 4ea2e460c3 Remove enableResourceOptimizations 5 years ago
Alex Baker 674c766110 Android Studio Arctic Fox alpha 13 5 years ago
Alex Baker 675cc1f6c9 Replace some guava usage with kotlin 5 years ago
Alex Baker a5663cd299 Convert billing to Kotlin 5 years ago
Maaz b923eae86b
Translated using Weblate (Urdu)
Currently translated at 63.4% (424 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
zhelemysh 5f3645aed2 Translated using Weblate (Russian)
Currently translated at 97.0% (648 of 668 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Baker 0d18d60c7f kotlinx-collections-immutable-jvm 0.3.4 5 years ago
Alex Baker 3549edf245 Update version and changelog 5 years ago
Alex Baker fbd03e55de Change donation string 5 years ago
Alex Baker cf003bef03 Use parallel gc 5 years ago
whenwesober 954d31e9db Translated using Weblate (Indonesian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Eric 1fad4620fd Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk ed6448df43 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Emin Tufan Çetin 046a24c4bc Translated using Weblate (Turkish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel d119406774 Translated using Weblate (Dutch)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Francesco Saltori 1bf5fbaa5e Translated using Weblate (Italian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci 70942bd907 Translated using Weblate (Hungarian)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois dcbaea3706 Translated using Weblate (French)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 17f814d43d Translated using Weblate (Spanish)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
C. Rüdinger d4f55f62aa Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
J. Lavoie 7f4f4cbae2 Translated using Weblate (German)
Currently translated at 100.0% (669 of 669 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker 2fc38d0089 Remove ButterKnife 5 years ago
Alex Baker f03135cbeb LeakCanary 2.7 5 years ago
J. Lavoie e986485434 Translated using Weblate (Esperanto)
Currently translated at 27.7% (184 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
J. Lavoie 6a2e0778a2 Translated using Weblate (Croatian)
Currently translated at 22.9% (152 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
J. Lavoie 949f7179ee Translated using Weblate (Tamil)
Currently translated at 73.7% (489 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
5 years ago
J. Lavoie fe71460605 Translated using Weblate (Bengali (Bangladesh))
Currently translated at 3.7% (25 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bn_BD/
5 years ago
J. Lavoie c08810d6b4 Translated using Weblate (Indonesian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
J. Lavoie ac9c641762 Translated using Weblate (Chinese (Traditional))
Currently translated at 81.7% (542 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
5 years ago
J. Lavoie d7adfc683c Translated using Weblate (Swedish)
Currently translated at 65.6% (435 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
5 years ago
J. Lavoie cbe68b2546 Translated using Weblate (Serbian)
Currently translated at 5.1% (34 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
5 years ago
J. Lavoie 0722bfdca5 Translated using Weblate (Slovenian)
Currently translated at 20.9% (139 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sl/
5 years ago
J. Lavoie 446661b43d Translated using Weblate (Slovak)
Currently translated at 57.0% (378 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sk/
5 years ago
J. Lavoie 7dcb5b6538 Translated using Weblate (Russian)
Currently translated at 94.7% (628 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
J. Lavoie 99f60a5e9b Translated using Weblate (Romanian)
Currently translated at 1.0% (7 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ro/
5 years ago
J. Lavoie a977e07c9e Translated using Weblate (Portuguese)
Currently translated at 82.0% (544 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
J. Lavoie 8d3bb60ec6 Translated using Weblate (Portuguese (Brazil))
Currently translated at 79.6% (528 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
5 years ago
J. Lavoie 57e5f96b00 Translated using Weblate (Polish)
Currently translated at 94.7% (628 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
J. Lavoie 0140153365 Translated using Weblate (Norwegian Bokmål)
Currently translated at 93.8% (622 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
J. Lavoie 6c90389ba4 Translated using Weblate (Lithuanian)
Currently translated at 56.7% (376 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/lt/
5 years ago
J. Lavoie 442dc8664b Translated using Weblate (Korean)
Currently translated at 88.6% (588 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
5 years ago
J. Lavoie 9b726245c2 Translated using Weblate (Japanese)
Currently translated at 58.5% (388 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
5 years ago
J. Lavoie f36f442327 Translated using Weblate (Hebrew)
Currently translated at 90.3% (599 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
J. Lavoie c841645a24 Translated using Weblate (Italian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
J. Lavoie 1be7d9d144 Translated using Weblate (Hungarian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
J. Lavoie 0411788777 Translated using Weblate (French)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
J. Lavoie f75772a752 Translated using Weblate (Finnish)
Currently translated at 77.5% (514 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
5 years ago
J. Lavoie 2d3e5bb700 Translated using Weblate (Estonian)
Currently translated at 37.5% (249 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/et/
5 years ago
J. Lavoie a73325f007 Translated using Weblate (Spanish)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
J. Lavoie ce5f756ca5 Translated using Weblate (Greek)
Currently translated at 21.1% (140 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
5 years ago
J. Lavoie e0538c6c3a Translated using Weblate (German)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
J. Lavoie 42793b7f4f Translated using Weblate (Danish)
Currently translated at 87.7% (582 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
5 years ago
J. Lavoie 1b38970be8 Translated using Weblate (Czech)
Currently translated at 78.8% (523 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
J. Lavoie 239e8d1282 Translated using Weblate (Catalan)
Currently translated at 16.4% (109 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ca/
5 years ago
J. Lavoie 87e10c1710 Translated using Weblate (Bulgarian)
Currently translated at 62.5% (415 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
5 years ago
J. Lavoie db08214448 Translated using Weblate (Afrikaans)
Currently translated at 2.8% (19 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/af/
5 years ago
whenwesober 966cbcad78 Translated using Weblate (Indonesian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
J. Lavoie 8818de7bc0 Translated using Weblate (Italian)
Currently translated at 97.2% (645 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
J. Lavoie 4c7aae929a Translated using Weblate (French)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
J. Lavoie e65d3aee89 Translated using Weblate (German)
Currently translated at 96.6% (641 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Achim Schumacher 153e716a56 Translated using Weblate (German)
Currently translated at 96.6% (641 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
C. Rüdinger fdbf145a4d Translated using Weblate (German)
Currently translated at 96.6% (641 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker b3c45f54d3 firebase-crashlytics-gradle 2.5.2 5 years ago
Alex Baker be80a0cbec fragment-ktx 1.3.2 5 years ago
Alex Baker cc7d16c781 google-auth-library-oauth2-http 0.25.2 5 years ago
Alex Baker c9e760d98d appcompat 1.3.0-rc01 5 years ago
Alex Baker 22d4f88058 activity-compose 1.3.0-alpha05 5 years ago
Alex Baker 6872dad276 Remove explicit annotation dependency 5 years ago
Alex Baker 443255f9d9 Jetpack Compose beta 3 5 years ago
Alex Baker f8ca274847 Android Studio Arctic Fox alpha 12 5 years ago
Alex Baker c0602deae9 Fix compile 5 years ago
mhmdanas 18b1d11eed Use separate strings for "Next $DAY_OF_WEEK"
In some languages, the equivalent of "Next" changes form depending on
the noun (or day in this case) it's describing.
5 years ago
Alex Baker f43665b19e Update version and changelog 5 years ago
Alex Baker fb04d7eaa2 Fix toast messages 5 years ago
Alex Baker ed47c1d5f0 Update version and changelog 5 years ago
Francesco Saltori e9dc9bc570 Translated using Weblate (Italian)
Currently translated at 97.2% (645 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci c944afaade Translated using Weblate (Hungarian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Mohammed Anas bde2d19d66 Translated using Weblate (Arabic)
Currently translated at 57.6% (382 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker fbda8ec49f Increase 'Add subtask' touch target 5 years ago
Emin Tufan Çetin 0afb0bf970 Translated using Weblate (Turkish)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Kaci cd2cff8bdc Translated using Weblate (Hungarian)
Currently translated at 97.8% (649 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Achim Schumacher bc7c90d3ef Translated using Weblate (German)
Currently translated at 96.5% (640 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Mohammed Anas 6665bd00f1 Translated using Weblate (Arabic)
Currently translated at 55.0% (365 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker d2c4f5bbe1 Open web links in custom tabs 5 years ago
Alex Baker 0cbab11d2c Add openUri extension method 5 years ago
Alex Baker b1c6c9b7cc Use extension method for toasts 5 years ago
Alex Baker 781ea9c03e Remove Toaster 5 years ago
Alex Baker 0f82b39913 Move extensions into objects 5 years ago
Alex Baker e16cadc374 Fix Mapbox reverse geocoding when address is null 5 years ago
Alex Baker 9fe67f5593 Android Studio Arctic Fox alpha 11 5 years ago
Alex Baker 0c0e056ab6 Update version and changelog 5 years ago
Alex Baker a5975d05dd Remove license 5 years ago
Eric c0f7f9e5df
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk 771b5cb45a
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Frits van Bommel 6f071b04e6
Translated using Weblate (Dutch)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Florian Dubois 4cfe647a50
Translated using Weblate (French)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois d5b37957d1
Translated using Weblate (Spanish)
Currently translated at 100.0% (663 of 663 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker c1db57d1e3 New purchase activity 5 years ago
Milo Ivir 38e7c810ea
Translated using Weblate (Croatian)
Currently translated at 23.3% (151 of 647 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Kaci 370f9e1558
Translated using Weblate (Hungarian)
Currently translated at 100.0% (647 of 647 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Eric f24717a126 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (647 of 647 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk 19cc045c23 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (647 of 647 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Frits van Bommel 12aa1bb5bc Translated using Weblate (Dutch)
Currently translated at 100.0% (647 of 647 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Florian Dubois 623802d9ae Translated using Weblate (French)
Currently translated at 100.0% (647 of 647 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 3c29a93b4c Translated using Weblate (Spanish)
Currently translated at 100.0% (647 of 647 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 83bee2a59e Replace hasTasksSubscription with hasTasksAccount 5 years ago
Alex Baker 7f3c1f1756 Fix compile error 5 years ago
Alex Baker b678cb1086 Convert method to lambda 5 years ago
Alex Baker fdb977031d Don't crash on missing owncloud owner principal 5 years ago
Alex Baker 1a5a0e4bff Add TopAppBar composable 5 years ago
Alex Baker 93686d1af8 Add activity-compose 5 years ago
Alex Baker 682ab3ff7a Include rrule when reporting exceptions 5 years ago
Alex Baker ff8ce0ad52 AppAuth-Android 0.8.1 5 years ago
Alex Baker 27291634fd Update desugar jdk libs 5 years ago
Alex Baker fe02ea8c34 Add preferences for date and time picker modes
Choose whether to use calendar, clock, or text by default
5 years ago
whenwesober 3ac3600c66 Translated using Weblate (Indonesian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Sergio Varela 9bad7e233f Translated using Weblate (Basque)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Eric 2d2cd3b039 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk e81b61b073 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Frits van Bommel e0f92c6058 Translated using Weblate (Dutch)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci ebf8dc7ec9 Translated using Weblate (Hungarian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois e4a170eceb Translated using Weblate (French)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 8fae2a9104 Translated using Weblate (Spanish)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Achim Schumacher 53ba7e6107 Translated using Weblate (German)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker 7d085b4abc Flipper 0.81.0 5 years ago
Alex Baker 40d831f7da Material components date and time pickers 5 years ago
Alex Baker 4e1b496c4b Update crashlytics and remote config 5 years ago
Alex Baker 330c339dd2 Google OAuth 0.24.1 5 years ago
Alex Baker 486b8ec1a1 Google Drive v3-rev20210228-1.31.0 5 years ago
Alex Baker 3aa0adfd62 Constraint layout 2.1.0-beta01 5 years ago
Alex Baker 0bfae4f3c1 Update version check and flipper 5 years ago
Alex Baker 59be369adb Android Studio Arctic Fox alpha 10 5 years ago
Alex Baker 506d98c360 Update version and changelog 5 years ago
Alex Baker 397b85769a Merge remote-tracking branch 'weblate/main' 5 years ago
Andika Tulus Pangestu f44bf6f2e5
Translated using Weblate (Indonesian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
whenwesober dede142e3e
Translated using Weblate (Indonesian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Mohammed Anas 492d00040c
Translated using Weblate (Arabic)
Currently translated at 45.8% (294 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker cf661e80a9 Update ok/cancel strings 5 years ago
Alex Baker 5b83cc7ccd Add sharing to purchase dialog 5 years ago
Alex Baker add419cb46 Fix widget header text color 5 years ago
whenwesober c50ca0ad5d Translated using Weblate (Indonesian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Yannik Jérôme Büchi 7428f2acc3 Translated using Weblate (Portuguese)
Currently translated at 84.7% (543 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Yannik Jérôme Büchi 9fa50ac19d Translated using Weblate (German)
Currently translated at 98.1% (629 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker a8e83a03b1 Convert attribution activity to compose 5 years ago
Alex Baker 0dbd0551d1 Merge caldav account view model 5 years ago
Alex Baker 874069354d Add compose theme adapter 5 years ago
Jakub Fabijan aa4f648505 Translated using Weblate (Esperanto)
Currently translated at 28.5% (183 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
Oğuz Ersen 455bb28397 Translated using Weblate (Turkish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Kaci 8b76cfe1e7 Translated using Weblate (Hungarian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker de566103d4 Merge tag '11.6.1' 5 years ago
Alex Baker 53468263b1 Update version and changelog 5 years ago
Alex Baker 5ea1bb3f68 Remove uses-library for Google Maps 5 years ago
Alex Baker 0be801d59e Hilt 1.0.0 beta 1 5 years ago
Alex Baker 669674dab6 Jetpack Compose beta 2 5 years ago
Alex Baker 3d980ebc59 Separate principal and principal_access tables 5 years ago
Alex Baker 14cf7b39ec Update version and changelog 5 years ago
Frits van Bommel 93554418a4
Translated using Weblate (Dutch)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Florian Dubois 5ff5182342
Translated using Weblate (French)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 237a7fdb33
Translated using Weblate (Spanish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Eric a67400d64a
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk ded6433136
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
whenwesober 9697147fbf Translated using Weblate (Indonesian)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Eric f7bd2714c0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk 8675a136be Translated using Weblate (Ukrainian)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Oğuz Ersen a4af41bfeb Translated using Weblate (Turkish)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
doeg edomita efbb850e9b Translated using Weblate (Polish)
Currently translated at 99.0% (629 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Frits van Bommel 941b6bfb31 Translated using Weblate (Dutch)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 0f26240cd1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.1% (623 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci c151f092d1 Translated using Weblate (Hungarian)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois fa48d89a6a Translated using Weblate (French)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois d9b95fd5ad Translated using Weblate (Spanish)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 79448f38d6 Drop support for Android 6.0
* Less than 2% of installs are Android 6.0
* Less than 3% of those installs have updated in the past 90 days
5 years ago
Alex Baker 02009e64d7 Remove legacy EteSync v1 list management features 5 years ago
Alex Baker d4c01e16fd Send share invites for Nextcloud and ownCloud 5 years ago
Alex Baker 5513d42777 Send share invites for Tasks.org & sabre/dav 5 years ago
Alex Baker 5201bca714 Display invite status in principal list 5 years ago
Alex Baker e36f2f6f4c Fix drawer count when list is shared with 2+ users 5 years ago
Alex Baker b4cbb7d38d Android Studio Arctic Fox alpha 9 5 years ago
Alex Baker 41ea47b721 Add compose runtime-livedata 5 years ago
Alex Baker 749d927073 Merged calendar view models 5 years ago
Alex Baker 99b6f9c48c Update version and changelog 5 years ago
Alex Baker fbf817635d Show single person when shared with one user 5 years ago
Alex Baker 1d2eb7232c Support long display names in principal row 5 years ago
Maaz 22f575203b Translated using Weblate (Urdu)
Currently translated at 60.9% (387 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
putu 4e19f0750a Translated using Weblate (Indonesian)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Sergio Varela 94321003aa Translated using Weblate (Basque)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Eric 14fa8cf641 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk d9d562e5a2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Emin Tufan Çetin 9f110c894d Translated using Weblate (Turkish)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel 796a9598a9 Translated using Weblate (Dutch)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci 2d13563749 Translated using Weblate (Hungarian)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois cfe27f57e4 Translated using Weblate (French)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 9c4e27db58 Translated using Weblate (Spanish)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Mohammed Anas bc185b42ae Translated using Weblate (Arabic)
Currently translated at 39.3% (250 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
mhmdanas 5b984add9a Change "Manage lists" to "Manage drawer" 5 years ago
Alex Baker d790ca5cba Update version and changelog 5 years ago
Oğuz Ersen f2120c8f57 Translated using Weblate (Turkish)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Alex Baker 87f9b46c5d Add mailbox.org test 5 years ago
Alex Baker 84ff3a542c Move composables to separate file 5 years ago
Alex Baker e259762ab6 Update room 5 years ago
Alex Baker e3b4a29c9a Update dependency repositories 5 years ago
Alex Baker 42f34c1fab Owners can remove shared list members
Supports Tasks.org, Nextcloud, ownCloud, and sabre/dav
5 years ago
Alex Baker e8ad88be21 Add server type column to caldav accounts 5 years ago
Alex Baker 99e624e836 Apply tz offset when converting to ical4j Date 5 years ago
Alex Baker ac743ba06d Fix license name 5 years ago
Alex Baker b1dcef626b Use JDK 11 in GitHub Actions 5 years ago
Alex Baker 0f0c2bac93 Show list members on caldav list settings screen 5 years ago
Alex Baker 19e25b9c39 Add compose 5 years ago
Alex Baker fd45cbe20c Upgrade to Android Studio Arctic Fox 5 years ago
Alex Baker b7e10442c1 Remove misc.xml from revision control 5 years ago
Alex Baker 2cf4b533e5 Update version and changelog 5 years ago
Alex Baker ed4170dbe8 Relax principal parsing
Mailbox.org uses the same XML elements as sabre/dav, but uses them
differently
5 years ago
Alex Baker 2eac8dd20c Convert Theme to Kotlin 5 years ago
putu 73d536a0c3 Translated using Weblate (Indonesian)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
109247019824 14898b303c Translated using Weblate (Bulgarian)
Currently translated at 65.6% (415 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bg/
5 years ago
Mohammed Anas 5b4078b757 Translated using Weblate (Arabic)
Currently translated at 38.1% (241 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 6bbc0e09cb Update version and changelog 5 years ago
Alex Baker 13bdb5ac37 Common name may not be set by OC/NC 5 years ago
Sergio Varela 02a6ab0c05
Translated using Weblate (Basque)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Eric 8c8c61c675
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk f6f67f4b53
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Nikita Epifanov a285b59692
Translated using Weblate (Russian)
Currently translated at 99.6% (630 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Frits van Bommel bb55702aab
Translated using Weblate (Dutch)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci c96146b548
Translated using Weblate (Hungarian)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois bc3c3d6087
Translated using Weblate (French)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 08a139e6fb
Translated using Weblate (Spanish)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 7261d6846b Update version and changelog 5 years ago
Alex Baker bfe4342bd7 Update Help & feedback screen 5 years ago
Alex Baker f79fdaabb6 Split changelog 5 years ago
Alex Baker 1f7cb2a563 Restore mirroring for more icons 5 years ago
Vít Skalický 3e937bda84 Translated using Weblate (Czech)
Currently translated at 83.6% (523 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Mohammed Anas 754f5bcad2 Translated using Weblate (Arabic)
Currently translated at 37.9% (237 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker bd587770c8 Mirror a couple more icons with movement 5 years ago
Alex Baker bbffa4b2de Move assertion to separate test 5 years ago
mhmdanas 4574a5a86f Automirror some icons according to guidelines
Note that I'm not an expert and may have made some mistake. Guidelines
link: https://material.io/design/usability/bidirectionality.html#mirroring-elements
5 years ago
Alex Baker 7ce4f03985 Exclude current user principal from sharees 5 years ago
Alex Baker 952fa69b05 Check if shared status changed 5 years ago
Alex Baker ea152b6d09 Update average subscription value 5 years ago
mhmdanas c2220e5e98 Disable icon auto-mirroring 5 years ago
Alex Baker b81acb70ca Add share indicator to navigation drawer 5 years ago
Alex Baker 152b6dd034 Add Sinhala to language overrides 5 years ago
HelaBasa 88972d13a3 Translated using Weblate (Sinhala)
Currently translated at 0.3% (2 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/si/
5 years ago
Alex Baker 983fa6644c Add principals table 5 years ago
mhmdanas db4a52303a Add communication section to README 5 years ago
Alex Baker b7f83f6a10 Copy platform strings 5 years ago
Alex Baker 9411285f0b Report unknown share-access properties 5 years ago
Ihor Hordiichuk cf97daa46c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
HelaBasa 1a9a4e5fc2 Added translation using Weblate (Sinhala) 5 years ago
Alex Baker 51ae1fb97e Merge tag '11.5.2' 5 years ago
Alex Baker 96ccd7e749 Update version and changelog 5 years ago
Alex Baker 68a3dd0a3c Report failure to generate next recurrence date 5 years ago
Alex Baker 8aac517cd2 Allow any share-access value 5 years ago
Alex Baker bbe054a3ce Update ok/cancel strings 5 years ago
Alex Baker c84b7f148b Remove ok/cancel strings 5 years ago
putu cc8adde18b Translated using Weblate (Indonesian)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Ihor Hordiichuk 56538fd454 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Alex Baker 0fd8204523 Remove ok/cancel strings 5 years ago
Alex Baker a8091ba913 Add more access level tests 5 years ago
Alex Baker 682038399c Use getColumnIndexOrThrow 5 years ago
Alex Baker 3973c9e7bb Revert inventory changes, fix test 5 years ago
Alex Baker c0a3c0e2c6 Merge tag '11.5.1' 5 years ago
Alex Baker 737fb5b711 Update version and changelog 5 years ago
Alex Baker 75cf22a997 Nominatim geocoder try 'name' then 'housenumber' 5 years ago
Alex Baker cd7bc0ecfe Fix repeat calculation for utc+13 5 years ago
Alex Baker f741fc6f6c Fix 'repeat until' date 5 years ago
Alex Baker bb071f2027 Add access column to CaldavCalendar 5 years ago
Alex Baker b76b7dcb71 Clear hasTasksSubscription 5 years ago
Alex Baker 379bf3856f Android Studio 4.2 Beta 5 5 years ago
Alex Baker 2b6e65cca4 Fix subscription test 5 years ago
Alex Baker f2354c9f81 Fix lint errors 5 years ago
Alex Baker 6b2f8a8ea1 Update dependencies 5 years ago
Alex Baker e2f253da98 Add caldav subscription test 5 years ago
Alex Baker 11fdf0f825 Simplify ctag check 5 years ago
Alex Baker e9dafefbb0 Add CaldavSynchronizer tests 5 years ago
Alex Baker 6619a8f3fa Add OCInvite property 5 years ago
Alex Baker 4e36ddcd74 Add OCOwnerPrincipal property 5 years ago
Alex Baker af28d42e2e Simplify propfind requests 5 years ago
Garden Hose 50c2094dd6 Translated using Weblate (Croatian)
Currently translated at 24.4% (153 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Maaz 3ca9e6ea5c Translated using Weblate (Urdu)
Currently translated at 58.0% (363 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Sergio Varela 544a700e08 Translated using Weblate (Basque)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Eric 1fefd3c6e2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk 0a5d62959b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Oğuz Ersen 343b779a59 Translated using Weblate (Turkish)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Nikita Epifanov 0c48a927d4 Translated using Weblate (Russian)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Tereschenko 030cdeaa86 Translated using Weblate (Polish)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Frits van Bommel 3138d4b5a7 Translated using Weblate (Dutch)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 60067e6454 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (617 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci 0f32dfc77e Translated using Weblate (Hungarian)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois b5608023f3 Translated using Weblate (French)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois c7046662a6 Translated using Weblate (Spanish)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 24437cb6ce Add Invite property 5 years ago
Alex Baker c42b22ebe9 Add ShareAccess property 5 years ago
Alex Baker 364d9bc3ca Fix licenses 5 years ago
Alex Baker c88d2d759e Fork dav4jvm 5 years ago
Maaz 5f21bbc8cb Translated using Weblate (Urdu)
Currently translated at 50.5% (316 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Florian Dubois 75c18ecc35 Translated using Weblate (French)
Currently translated at 100.0% (625 of 625 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Alex Baker eb49ce46ec Update background location disclosure text 5 years ago
Alex Baker 4b2310f9c0 Handle null location response 5 years ago
Alex Baker 67b8d436b2 Update version and changelog 5 years ago
Alex Baker 68b4dc196e Fix some lint warnings 5 years ago
Alex Baker 1730bd6e5a Add 10 new icons 5 years ago
Alex Baker 5471a61537 Remove unused code and resources 5 years ago
Alex Baker 0b0177e608 Fix reverse geocoder error handling 5 years ago
Alex Baker e2436414eb Remove GeocoderAndroid 5 years ago
Alex Baker fe1fc3eef2 Remove location preference menu 5 years ago
Alex Baker f161518c59 Move map theme to look and feel 5 years ago
Alex Baker 815648ea8c Choose location service based on gplay availablity 5 years ago
Alex Baker 856cd04621 Choose maps based on gplay availability 5 years ago
Alex Baker 90bc28c91c Add LocationService interface
Combined Geofencing and LocationProvider
5 years ago
Alex Baker 0e728152c9 Replace Places SDK with HTTP API 5 years ago
Alex Baker 4f9d229c4b Exclude benefits from F-Droid dialog 5 years ago
Eric 03a86e3951
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (652 of 652 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Ihor Hordiichuk eb6e400009
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (652 of 652 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Frits van Bommel 281f51d0d0
Translated using Weblate (Dutch)
Currently translated at 100.0% (652 of 652 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci a0a7054f03
Translated using Weblate (Hungarian)
Currently translated at 100.0% (652 of 652 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 46f8cada66
Translated using Weblate (French)
Currently translated at 100.0% (652 of 652 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 233eb7cb03
Translated using Weblate (Spanish)
Currently translated at 100.0% (652 of 652 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker e4407d4a5e Add tasks_org_account_required string 5 years ago
Alex Baker e4df1f7e42 Don't tint places attribution 5 years ago
Alex Baker f0cf5f910b Fix generic compile 5 years ago
Alex Baker 7f3a5f533a Rename PlaceSearchProvider to PlaceSearch 5 years ago
Alex Baker 3d3bc8e6d6 Remove previous donor message 5 years ago
Alex Baker 4ffb122cb1 Add persistent EteSync v1 deprecation warning 5 years ago
Alex Baker e18edfe161 Exclude all apache httpcomponents 5 years ago
Alex Baker 76af1aeaba Add geofence service preference 5 years ago
Alex Baker 9f2401e927 Add reverse geocoder preference 5 years ago
Alex Baker fd23ae705f Add map theme preference 5 years ago
Alex Baker 9096c5a687 Choose OpenStreetMaps or Google Maps 5 years ago
Alex Baker b3ea0abdee Fix key name 5 years ago
Alex Baker fc974bee08 New location preferences menu 5 years ago
Alex Baker 29c566a240 Restore missing permission request 5 years ago
Alex Baker 606d3f6264 Proxy Nominatim requests
Per Nominatim usage policy
5 years ago
Alex Baker fb67ed5d69 Rename geocoders 5 years ago
Maaz 7e704a3ddc Translated using Weblate (Urdu)
Currently translated at 47.0% (302 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
nathalier 08a6e0b167 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Ihor Hordiichuk 849cb75814 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Tntdruid 6b477e8382 Translated using Weblate (Danish)
Currently translated at 94.3% (606 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
5 years ago
Alex Baker 5a40a6c4ae Set user-agent on nominatim requests 5 years ago
Alex Baker bb4ccd8dd8 Add NominatimGeocoder 5 years ago
Alex Baker b8edd4fb72 Fix generic compile 5 years ago
Alex Baker 9126c29aaa Remove Mapbox SDK and use Mapbox HTTP API 5 years ago
Alex Baker 14f5015fac Convert place search to coroutines 5 years ago
Alex Baker f0f6478dab Inject geofencing in flavor module 5 years ago
Alex Baker 5c5833ee8f Convert Geocoders to Kotlin 5 years ago
Alex Baker af9b89fef3 Replace ApplicationComp with SingletonComponent 5 years ago
Alex Baker 919eca94be Move AndroidLocationProvider to main 5 years ago
Alex Baker beeb6b0250 Add AndroidLocationProvider 5 years ago
Alex Baker a6ff285a43 Run generic and googleplay tests 5 years ago
Alex Baker 6535406689 Convert MapPosition to Kotlin 5 years ago
Alex Baker af0b0121a9 AppAuth 0.8.0 5 years ago
Alex Baker f86963244d Add PlayLocationProvider 5 years ago
Alex Baker a57040119b Add LocationProvider interface 5 years ago
Alex Baker 29fdba597b Convert MapFragment to Kotlin 5 years ago
Alex Baker c2af267ca3 Remove jcenter from buildSrc 5 years ago
Alex Baker 211f56a343 Synchronize snooze time 5 years ago
Alex Baker bfd1316c33 Convert parent to property 5 years ago
Alex Baker d2a44d9fab User may request location before map is loaded 5 years ago
whenwesober 5e604a25ce Translated using Weblate (Indonesian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Alex Baker 1330ec141d Add test for removing collapsed state 5 years ago
Alex Baker 47c4203d65 Update version and changelog 5 years ago
Alex Baker 50193e2ce5 Fix unsupported operation exception 5 years ago
Jakub Fabijan 474a07b5fd Translated using Weblate (Esperanto)
Currently translated at 12.9% (83 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
Michalis dd50c5d5ce Translated using Weblate (Greek)
Currently translated at 22.1% (142 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/el/
5 years ago
Alex Baker e4e37b22f1 Sync subtask expand/collapse state 5 years ago
Alex Baker 99dee06c64 Add LocationManager proximity alerts 5 years ago
Alex Baker 598cbba8c1 Add triggerNotifications for geofences 5 years ago
Alex Baker e67148d793 Remove duplicate entry 5 years ago
Alex Baker 832eb65f9c Move geofence intent broadcast manifest entry 5 years ago
Alex Baker 88950fd3f9 Add monthly repeat test 5 years ago
Jakub Fabijan c2b54e8bf5 Translated using Weblate (Esperanto)
Currently translated at 10.4% (67 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
Alex Tereschenko 5c08198b6d Translated using Weblate (Polish)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Alex Baker 3c9fc2d176 Fix start date initialization 5 years ago
Alex Baker 0496ea457e Move inventory tests to googleplay 5 years ago
Alex Baker 13ebdf8939 Set ANCHOR_TOP 5 years ago
Alex Baker e0210a7f09 Enable resource shrinking 5 years ago
Alex Baker 4bbd51f147 Disable touch for OSM maps in place settings 5 years ago
Alex Baker 8f2805a416 Add OSM copyright overlay 5 years ago
Alex Baker b0777101e8 Replace Mapbox maps with OsmDroid 5 years ago
Alex Baker f168107a31 Move jcenter to bottom 5 years ago
Vít Skalický 05bc80b1f4 Translated using Weblate (Czech)
Currently translated at 83.6% (537 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Alex Baker 58494caa29 Update third party dependencies 5 years ago
Alex Baker 0036291670 Add mavenCentral 5 years ago
Alex Baker 7dace383e2 Fix test 5 years ago
Alex Baker 5060cd3042 Material design components 1.3.0 5 years ago
Alex Baker c4a97d2569 Use ical4j instead of google-rfc-2445 5 years ago
Alex Baker c3080e6559 Clean up recurrence jvm tests 5 years ago
Alex Baker 5e128fd6de Use ical4j in recurrence tests 5 years ago
Alex Baker d695c8e9e6 Update version and changelog 5 years ago
Alex Baker d73f250442 Set time zone on tests 5 years ago
Alex Baker 385aa08a2d Sync start time one second before due time 5 years ago
Alex Baker 9ae31d5949 Remove CaldavConverter 5 years ago
Alex Baker e45f767c1f Convert RepeatRuleToString to Kotlin 5 years ago
crlambda 81ec4a62b2 Translated using Weblate (Chinese (Traditional))
Currently translated at 87.6% (563 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
5 years ago
Achim Schumacher 591dc46439 Translated using Weblate (German)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Martin 838e16412b Translated using Weblate (German)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
C. Rüdinger 07a64d6785 Translated using Weblate (German)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker e6fbb92912 Use ical4j in RepeatRuleToString 5 years ago
Alex Baker cc09150141 Add opentask properties tests 5 years ago
Achim Schumacher 5110a8ad1f Translated using Weblate (German)
Currently translated at 98.7% (634 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Oymate babcf6cb8c Translated using Weblate (Bengali (Bangladesh))
Currently translated at 4.0% (26 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bn_BD/
5 years ago
Francesco Saltori f4853f79f7 Translated using Weblate (Italian)
Currently translated at 99.6% (640 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Tntdruid 53869c74b4 Translated using Weblate (Danish)
Currently translated at 89.7% (576 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
5 years ago
mhmdanas 2f45a42829 Add CONTRIBUTING.md 5 years ago
Alex Baker 68c7c84b32 Show unstarted tasks by default 5 years ago
Alex Baker 78a691a3e1 Update version and changelog 5 years ago
Alex Baker 5ff6b885f7 Fix all day date synchronization 5 years ago
Alex Baker cb0823205a Fix string formatter 5 years ago
Osoitz 79232d10b3 Translated using Weblate (Basque)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Nikita Epifanov 3d59e4e16f Translated using Weblate (Russian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Baker 1ea65a03d3 Update version and changelog 5 years ago
Alex Baker ccef473f15 Don't automatically create new task 5 years ago
Alex Baker e27a225523 Add relatedTo tests 5 years ago
Alex Baker bdaf1f8ee4 Fix recurrence string sanitizer 5 years ago
Alex Baker c7209904c9 Add Nextcloud test for all day task 5 years ago
Alex Baker 6cb4ff4aa6 Fix licenses and generic build 5 years ago
Alex Baker 94214ee059 Dagger 2.31.2 & Hilt 1.0.0-alpha03 5 years ago
Alex Baker c8b2818e6c WorkManager 2.5.0 5 years ago
Alex Baker ff74fa3ad6 Update version and changelog 5 years ago
Eric 1af2b873db Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen ca7d22e135 Translated using Weblate (Turkish)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel ccb34de76d Translated using Weblate (Dutch)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy f2d41a6d8b Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (634 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci ac0b27dd2c Translated using Weblate (Hungarian)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 1523b82db5 Translated using Weblate (French)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois f23bd9be02 Translated using Weblate (Spanish)
Currently translated at 100.0% (642 of 642 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 31c213b9b3 Increase kotlin daemon memory 5 years ago
Alex Baker a242481949 Update codecov options 5 years ago
Alex Baker d8e8c1b1a6 Fix some CalDAV time zone conversions 5 years ago
Alex Baker d8658b1db0 Don't adjust time zone if it matches 5 years ago
Alex Baker 3c4336fa19 Remove leftover travis build script 5 years ago
Alex Baker 8b0954e8b5 Update version and changelog 5 years ago
Garden Hose 170cecd6ed Translated using Weblate (Croatian)
Currently translated at 22.7% (146 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Milo Ivir 148ee5f03c Translated using Weblate (Croatian)
Currently translated at 22.7% (146 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Gontzal Manuel Pujana Onaindia 7ff40f76eb Translated using Weblate (Basque)
Currently translated at 92.1% (591 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Alex Baker dfe621d10a Improve widget sort header when width constrained 5 years ago
Alex Baker a6a77ef06c Add option to disable title in widget header 5 years ago
whenwesober eaf685c829 Translated using Weblate (Indonesian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Alex Tereschenko 3577e5e9fa Translated using Weblate (Polish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Alex Baker 926655b12f Copy ical4android logic for writing properties 5 years ago
Maaz 3261b9db6f
Translated using Weblate (Urdu)
Currently translated at 38.5% (247 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
when we were sober ee65a92474
Translated using Weblate (Indonesian)
Currently translated at 69.5% (446 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
when we were sober d251f9394b
Translated using Weblate (Indonesian)
Currently translated at 67.7% (434 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Alex Baker 9cfd1f976a Add Esperanto to language overrides 5 years ago
Jakub Fabijan da58b864a7 Translated using Weblate (Esperanto)
Currently translated at 9.6% (62 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eo/
5 years ago
Nikita Epifanov 6a2448a650 Translated using Weblate (Russian)
Currently translated at 99.8% (640 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Jakub Fabijan a2659ee4a6 Translated using Weblate (Polish)
Currently translated at 99.8% (640 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Alex Baker 9b6f8255c8 Complete subtasks before completing task 5 years ago
Alex Baker 82ea12f0db Uncomplete subtasks after scheduling repeat 5 years ago
Alex Baker d49f75a2fd Don't clear completed with recurring ancestors 5 years ago
Francesco Saltori 1a4b2f395c Translated using Weblate (Italian)
Currently translated at 99.0% (635 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Jakub Fabijan acb7b7a406 Added translation using Weblate (Esperanto) 5 years ago
Alex Baker f7d9cdd646 Update GitHub actions
* Don't run check_license for PRs
* Only run lint for release builds
5 years ago
Emin Tufan Çetin 090a298006 Translated using Weblate (Turkish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Allan Nordhøy 8a9cde01f1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (633 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Alex Baker b319ee2e39 More OpenTasksSynchronizer tests 5 years ago
Alex Baker 36130e4978 Ignore flaky test 5 years ago
Alex Baker 0900112f08 Initial OpenTasksSynchronizer tests 5 years ago
Eric 47e30b89ba Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
m-aciek 8e5c754cf9 Translated using Weblate (Polish)
Currently translated at 99.8% (640 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Frits van Bommel 16953e3d5f Translated using Weblate (Dutch)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 9ac8fa0579 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.8% (627 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci 00d86e16a1 Translated using Weblate (Hungarian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker 137a27432a Add tests for 11.3 migration 5 years ago
Alex Baker 20f74bec33 Set default value on debug preferences 5 years ago
Alex Baker 759fb2b2ca Update version and changelog 5 years ago
Alex Baker ddb4a5696f Display error messages in account settings screen 5 years ago
Alex Baker d1d076a3d7 Use ical4android to build content provider ops 5 years ago
Alex Baker ebbd4ec365
Add 'Run tests' badge 5 years ago
Alex Baker 1b2efee3f5 Remove .travis.yml 5 years ago
Alex Baker 339bdb0d63
Fix tests.yml 5 years ago
Alex Baker ea2f0c7934 Use codecov action 5 years ago
Alex Baker edb59b0fe0 Update script 5 years ago
Alex Baker ad710d8821 Fix custom filter placeholder 5 years ago
Alex Baker cf484c9a40 Add tests.yml 5 years ago
Florian Dubois 1ffa1c4cc8
Translated using Weblate (French)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 82493545c1
Translated using Weblate (Spanish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker e6f7e572a2 Move MyAndroidTask to separate file 5 years ago
Alex Baker 585b85aa78 Reword string 5 years ago
Alex Baker af62239911 Fix inventory tests 5 years ago
Maaz 979d312a32 Translated using Weblate (Urdu)
Currently translated at 35.4% (227 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Eric 87deb58c35 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen 12f7f18388 Translated using Weblate (Turkish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel 4f7efdc3aa Translated using Weblate (Dutch)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci e925131181 Translated using Weblate (Hungarian)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 94892f6c20 Translated using Weblate (French)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 645de75e15 Translated using Weblate (Spanish)
Currently translated at 100.0% (641 of 641 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker e7ff3135e5 Android Studio 4.1.2 5 years ago
Alex Baker 812a289e5e
Create lint.yml 5 years ago
Alex Baker 74e428aaa8
Create check_license.yml 5 years ago
Alex Baker 2965af8682 Update version and changelog 5 years ago
Frits van Bommel 31475655e2 Translated using Weblate (Dutch)
Currently translated at 100.0% (637 of 637 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Alex Baker 76f30c336b Tasks.org account strings 5 years ago
Alex Baker df93322d97 Move subscription buttons to main preferences 5 years ago
Alex Baker 56ff44e163 Convert Inventory.subscription to LiveData 5 years ago
Alex Baker eb2c7420d6 Add GoogleTasksAccount preference fragment 5 years ago
Alex Baker 19bcd457e3 Find out if anyone is still using EteSync v1 5 years ago
Alex Baker 4b0a85c43e Set maxSdkVersion=28 on WRITE_EXTERNAL_STORAGE 5 years ago
Alex Baker f19de8d876 Remove missing activity from manifest 5 years ago
Alex Baker ddbb46c3f0 Use cloud off icon when not signed in 5 years ago
Alex Baker 5c4d202a75 Add PreferenceScreen.removeAt extension 5 years ago
Alex Baker 6afa14dafd Update cert4android 5 years ago
Tolstovka 861b9cac0b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (638 of 638 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Tolstovka 2c783caa9f Translated using Weblate (Russian)
Currently translated at 100.0% (638 of 638 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Baker 64e845a6fe Move sync accounts to top level prefs menu
Remove synchronization submenu
5 years ago
Alex Baker b8005daa80 Update account help url and menu
* Remove 'Delete' option from opentask accounts
* Use resId for help url
5 years ago
Eric 67c11b41c2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (640 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Emin Tufan Çetin c4eb1c251a Translated using Weblate (Turkish)
Currently translated at 100.0% (640 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Alex Tereschenko 5affb25022 Translated using Weblate (Russian)
Currently translated at 100.0% (640 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Tereschenko 632b30c2c9 Translated using Weblate (Polish)
Currently translated at 100.0% (640 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Frits van Bommel 50dcc8a8e2 Translated using Weblate (Dutch)
Currently translated at 100.0% (640 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
vousosir 16aa223928 Translated using Weblate (Korean)
Currently translated at 96.0% (615 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
5 years ago
Mohammed Anas 7d451a9cfd Translated using Weblate (Arabic)
Currently translated at 37.9% (243 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker ba81209903 Don't perform background sync when datasaver is on 5 years ago
Alex Baker 52f9276436 Prevent tag picker EditText from grabbing focus 5 years ago
Alex Baker 744fdfe8cf Don't create dtstart for recurring events 5 years ago
Alex Baker c5f14b9f4c Push/apply existing OpenTask start dates 5 years ago
Alex Baker cd1e129386 Default to 'Name your price' screen 5 years ago
Francesco Saltori d5354af20a Translated using Weblate (Italian)
Currently translated at 99.2% (635 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Florian Dubois 5305930609 Translated using Weblate (French)
Currently translated at 100.0% (640 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 59caf5820f Translated using Weblate (Spanish)
Currently translated at 100.0% (640 of 640 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker aa3d3ec5b6 Remove Astrid XML import functionality 5 years ago
Alex Baker 8e2c8e8e89 Fix tests 5 years ago
Alex Baker 0f70ac0f5d Use AndroidTask to read OpenTask data 5 years ago
Frits van Bommel e9c0bcfff3 Translated using Weblate (Dutch)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Alex Baker 780328a75d Add tasks.org to AddAccountDialog 5 years ago
Alex Baker 03d9f73cc9 Ignore rrule count if less than 0 5 years ago
Alex Baker b3d026c028 Fix up debug filters 5 years ago
Alex Baker 22b72f0f1b Remove custom order synchronization fix preference
Automatically perform full sync if manual sort was active during any
sync in the past seven days
5 years ago
Alex Baker 14919d9f81 Push/apply existing iCalendar start dates 5 years ago
Alex Baker 3664f39571 Add UpgraderDao 5 years ago
Alex Baker cff034084c Remove FilterDao.getAll() 5 years ago
Alex Baker af2894f8f4 Add string and color helpers to AdapterSection 5 years ago
Alex Baker 9358dfaca5 Add ResourcesExtensions 5 years ago
Alex Baker 8278058fa6 Get tasks account from viewModel 5 years ago
Alex Baker 1bcf5f6f44 Remove "Third-party synchronization" string
Replace with "Synchronization"
5 years ago
Eric 01b856505d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Tolstovka 28dd6f9fad Translated using Weblate (Ukrainian)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Emin Tufan Çetin 4d29162637 Translated using Weblate (Turkish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Tolstovka ee48c46618 Translated using Weblate (Russian)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Florian Dubois 4db0be1765 Translated using Weblate (French)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois d458a9c2e8 Translated using Weblate (Spanish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker cf2360d58d Synchronize start dates via iCalendar & OpenTasks 5 years ago
Alex Baker aece05d7e7 Move companion object to bottom of file 5 years ago
Alex Baker 1b7a7e502f Force refresh when switching due <-> start sort 5 years ago
Alex Baker b30aca49df Fork ical4android to allow start time == due date 5 years ago
Alex Baker 5d6ce3de22 Add start date custom filter criteria 5 years ago
Alex Baker 3405f54ad7 'More options' button with right arrow 5 years ago
Alex Baker c31b698944 Rename hasHideUntilDate to hasStartDate 5 years ago
Eric ab7f64aa9e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Tolstovka 9843fcd0a5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/uk/
5 years ago
Oğuz Ersen f78ba95bd9 Translated using Weblate (Turkish)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Tolstovka 83cacea0bb Translated using Weblate (Russian)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Frits van Bommel 4e05aab3bf Translated using Weblate (Dutch)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Florian Dubois ada9ef1073 Translated using Weblate (French)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 3d9044b16c Translated using Weblate (Spanish)
Currently translated at 100.0% (632 of 632 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker e99d067a53
Create CODE_OF_CONDUCT.md 5 years ago
Alex Baker f47b922e2a Fix start date chip issues 5 years ago
Oğuz Ersen 073541810c Translated using Weblate (Turkish)
Currently translated at 100.0% (631 of 631 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Florian Dubois 864ba691eb Translated using Weblate (French)
Currently translated at 100.0% (631 of 631 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois d2854b0ced Translated using Weblate (Spanish)
Currently translated at 100.0% (631 of 631 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker dbf4d6fdf7 Add sort 'By start date' 5 years ago
Alex Baker 7f5cbf372a Repurpose "Hide until" as "Start date" 5 years ago
Eric 7ac2421957
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen 6ff9fedeea
Translated using Weblate (Turkish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Nikita Epifanov db16859c38
Translated using Weblate (Russian)
Currently translated at 99.0% (630 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Frits van Bommel 89dd51b93e
Translated using Weblate (Dutch)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Joe Bobson 71fee37b75
Translated using Weblate (Hebrew)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
Kaci cab4c7c89a
Translated using Weblate (Hungarian)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 4f7df75b2d
Translated using Weblate (French)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 073d204fa8
Translated using Weblate (Spanish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Eric d3c06fd323 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen 4b63691d03 Translated using Weblate (Turkish)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel 95f931d28f Translated using Weblate (Dutch)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 7bec56309a Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.1% (623 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci b86ade1f3a Translated using Weblate (Hungarian)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 1486894234 Translated using Weblate (French)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois f62a1060eb Translated using Weblate (Spanish)
Currently translated at 100.0% (635 of 635 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 8cb71ac2f1 Show start dates as chips 5 years ago
Alex Baker 56d45f490d Add icons 5 years ago
Alex Baker fdd326f16e Remove chip setting migration 5 years ago
Alex Baker e9658c9205 Replace 'Default deadline' with 'Default due date' 5 years ago
Eric bcc6d8ad47
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Álvaro Oliveira 4e57fce1a0
Translated using Weblate (Portuguese)
Currently translated at 90.8% (578 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Frits van Bommel 5c79b12617 Translated using Weblate (Dutch)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Florian Dubois 00d52976f0 Translated using Weblate (French)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 4908a190df Translated using Weblate (Spanish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 34828ea66d
Update travis link 5 years ago
Alex Baker 866be7187b Disable test 5 years ago
Alex Baker 17ed19aec0 Update version and changelog 5 years ago
Alex Baker 2bc123b892 Remove defunct translation 5 years ago
Maaz 0b991a8b80
Translated using Weblate (Urdu)
Currently translated at 31.4% (200 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Emin Tufan Çetin 11ca7f282d
Translated using Weblate (Turkish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Eric 327a79bae2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen e0e386d812 Translated using Weblate (Turkish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Kaci 6b7e050086 Translated using Weblate (Hungarian)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker d682b030bb Override tasks_caldav_url in build.gradle 5 years ago
mhmdanas 4e0fe4950c Make Eisenhower box strings clearer 5 years ago
mhmdanas 47a25d1b7d Use raw strings when they're easier to read 5 years ago
Florian Dubois c2600da826 Translated using Weblate (French)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois e54ad6839d Translated using Weblate (Spanish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker ee2577f24b Automatically open Tasks.org prefs after sign in 5 years ago
Alex Tereschenko 8df491baee Translated using Weblate (Russian)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Tereschenko ba9e7d9612 Translated using Weblate (Polish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Florian Dubois 1962d7df6f Translated using Weblate (French)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Alex Baker bb05d534c2 Use URL_SAFE when decoding IdToken 5 years ago
Alex Baker 2bec5b1edb Display tasks.org lists first and local lists last 5 years ago
Alex Baker 8cc7ce767b Rename 'Lists' to 'Local lists' 5 years ago
Alex Baker 4712e2d1ca Update version and changelog 5 years ago
Alex Baker e41ef826b8 Fix 'Name your price' button after sign in 5 years ago
Alex Baker aa569ca80b Report more sign in errors 5 years ago
Eric 08eeb26a67 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen d639ae9ca5 Translated using Weblate (Turkish)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Kaci c57567581b Translated using Weblate (Hungarian)
Currently translated at 100.0% (636 of 636 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker d74de07269 Add BaseDateTimePicker 5 years ago
Alex Baker 7af9b23b92 Replace 'When' with 'Due date' in beast mode 5 years ago
Alex Baker b518b3cc72 Change case for 'No due date' string 5 years ago
Alex Baker 9fdd409fc1 Catch errors for invalid preference values 5 years ago
Alex Baker b74b78e3df Remove some context injections 5 years ago
Alex Baker 5a5d1ae2ac Update version and changelog 5 years ago
Alex Baker a597d356c6 Report OpenTask sync errors 5 years ago
Alex Baker 6e35cf5ba6 Catch ClassCastException 5 years ago
Alex Baker 67ef219f4a Remove 'More info' string 5 years ago
Alex Baker 42098b3608 Remove 'More options' string 5 years ago
Alex Baker d7d7b626d7 Replace 'More options' with 'Name your price' 5 years ago
Alex Baker 7c0d53f548 Report exceptions during sign in 5 years ago
Emin Tufan Çetin 7e125b8026
Translated using Weblate (Turkish)
Currently translated at 100.0% (639 of 639 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel dbe484c89a
Translated using Weblate (Dutch)
Currently translated at 100.0% (639 of 639 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Eric 4d708480be Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (639 of 639 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Alex Baker 1ae15fdc27 Translated using Weblate (Portuguese)
Currently translated at 91.5% (585 of 639 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Kaci e3f97c8439 Translated using Weblate (Hungarian)
Currently translated at 98.7% (631 of 639 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker 1ad9225db7 Update version and changelog 5 years ago
Florian Dubois be1c1dccbe
Translated using Weblate (French)
Currently translated at 100.0% (639 of 639 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois f2b94d445b
Translated using Weblate (Spanish)
Currently translated at 100.0% (639 of 639 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 16ae98f9eb Generate app passwords for Tasks.org 5 years ago
Alex Baker 9dfdeaa582 Fix minor issues with Tasks.org account screen 5 years ago
Maaz 8e4ac77dd6 Translated using Weblate (Urdu)
Currently translated at 30.3% (191 of 629 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Eric 6e8ca67e52 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (629 of 629 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel f4db250d5d Translated using Weblate (Dutch)
Currently translated at 100.0% (629 of 629 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 6576bc84a0 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.5% (626 of 629 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci 544f957dc5 Translated using Weblate (Hungarian)
Currently translated at 100.0% (629 of 629 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 178c1bdb06 Translated using Weblate (French)
Currently translated at 100.0% (629 of 629 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 9b105866da Translated using Weblate (Spanish)
Currently translated at 100.0% (629 of 629 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 0e9982bea4 Add copy and paste icons 5 years ago
Alex Baker 3a6c9e0a0d Add help and cancel buttons to sign in dialog 5 years ago
Garden Hose 29dd2476d5 Translated using Weblate (Croatian)
Currently translated at 20.0% (126 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Alex Baker d41b56dfc6 LeakCanary 2.6 5 years ago
Alex Baker 249f815c66 Add title to tasks.org sign in provider dialog 5 years ago
Álvaro Oliveira a673394070 Translated using Weblate (Portuguese)
Currently translated at 93.1% (585 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Jun Ito 45ff619b07 Translated using Weblate (Japanese)
Currently translated at 65.7% (413 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ja/
5 years ago
mhmdanas d318cf8b10 Call directly instead of invoke when possible 5 years ago
Alex Baker 607935bda3 Update version and changelog 5 years ago
Alex Baker d9afa0a5c9 Fix custom filter placeholder 5 years ago
Alex Baker 7a1d566bfb Don't set OpenTask TZ to null when no due date
This breaks sync when another client set a start date
5 years ago
Maaz fd9df992dc
Translated using Weblate (Urdu)
Currently translated at 25.4% (160 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Mohammed Anas 8d872a57ed Translated using Weblate (Arabic)
Currently translated at 36.9% (232 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 222a34fc26 Handle OpenTasks COMPLETE status w/o complete date 5 years ago
Alex Baker 15ca8931e4 Remove format string test, lint handles this 5 years ago
Alex Baker 5048a8d580 Fix compile errors 5 years ago
Alex Baker 97c1d83968 Add disabled test for Thunderbird repeating task 5 years ago
mhmdanas 96315daa9e Miscellaneous improvements 5 years ago
Alex Baker 07db650b5a Update changelog and version 5 years ago
Alex Baker b2a1a7a9c6 Fix lint errors 5 years ago
Alex Baker 5eb9370294 Use task modification date for lastSync value
Fix race condition that caused Tasks to not push changes after
rescheduling a remotely completed recurring task
5 years ago
Alex Baker 892ce990a4 Purchase dialog tweaks 5 years ago
Alex Baker c36392fac9 Minor Kotlin improvements 5 years ago
Alex Baker 1108322054 Don't warn when looking up null uid 5 years ago
Alex Baker a47e25cdf4 Try not to cancel running sync jobs 5 years ago
Alex Baker a01037450d Translated using Weblate (Basque)
Currently translated at 97.4% (612 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Emin Tufan Çetin 1b49e2e816 Translated using Weblate (Turkish)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Nikita Epifanov 5f7637f772 Translated using Weblate (Russian)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Alex Baker 453d631855 Translated using Weblate (Italian)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
J. Lavoie c26bef0baf Translated using Weblate (Italian)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci b445d90f29 Translated using Weblate (Hungarian)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
J. Lavoie 390bc64a63 Translated using Weblate (French)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Alex Coles 4402dc1b94 Translated using Weblate (German)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Manuel Bichler 7dd1a21291 Translated using Weblate (German)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
J. Lavoie fcd805a9db Translated using Weblate (German)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Vít Skalický b03af922bd Translated using Weblate (Czech)
Currently translated at 87.8% (552 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
mhmdanas bb0441bc1b Some miscellaneous code improvements 5 years ago
Alex Baker a632de0ad7 Fix failing tests 5 years ago
Alex Baker 93e1803ed6 Remove ok and cancel translations 5 years ago
Alex Baker ab7924460c Add DecSync CC to purchase dialog 5 years ago
Eric eb99f79b9c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel b4d59663ca Translated using Weblate (Dutch)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Alex Baker 2de48057f8 Update changelog and version 5 years ago
Florian Dubois 8545f695c1 Translated using Weblate (French)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 76089c8013 Translated using Weblate (Spanish)
Currently translated at 100.0% (628 of 628 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 4682faa058 Merge tag '11.0.1' into main 5 years ago
Alex Baker 38af77daf9 Update changelog and version 5 years ago
Alex Baker a6a0318c53 Fix multi-select 'Pick time' crash 5 years ago
Maaz 5bf53c3f74 Translated using Weblate (Urdu)
Currently translated at 23.6% (148 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Eric 53833b0ec6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 8e4668d6de Translated using Weblate (Dutch)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci f17776c19d Translated using Weblate (Hungarian)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois dac537c863 Translated using Weblate (French)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois dc07d5ee62 Translated using Weblate (Spanish)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 5246b5e0d1 Add DecSync CC support 5 years ago
Alex Baker 6bb003f8f4 Update version and changelog 5 years ago
Alex Baker b76130902a Use _UID instead of _SYNC_ID for OpenTask sync
EteSync client overwrites _SYNC_ID, which caused new tasks to get
deleted and recreated
5 years ago
Alex Baker bef5989c92 Update purchase dialog
Display percentage off and above average
5 years ago
Alex Baker 7eed9b10ee Set default hide before default due date
Fixes 'hide until due time' when a default due date is set
5 years ago
Garden Hose 3b12518eb5
Translated using Weblate (Croatian)
Currently translated at 11.4% (72 of 630 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Eric 7df6201cb1
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (630 of 630 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Garden Hose 1c6e90ff1f
Translated using Weblate (Serbian)
Currently translated at 5.8% (37 of 630 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
5 years ago
Nikita Epifanov 42faba8ceb
Translated using Weblate (Russian)
Currently translated at 100.0% (630 of 630 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Florian Dubois 8702a0a65d
Translated using Weblate (French)
Currently translated at 100.0% (630 of 630 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 8529e2234a
Translated using Weblate (Spanish)
Currently translated at 100.0% (630 of 630 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 48f2c7a650 Update name your price dialog 5 years ago
Alex Baker 15a36704d7 Add Croatian and Urdu as language overrides 5 years ago
Garden Hose d2a4845d80
Translated using Weblate (Croatian)
Currently translated at 6.5% (41 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hr/
5 years ago
Maaz 7d2bdc9bf1
Translated using Weblate (Urdu)
Currently translated at 21.2% (133 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Garden Hose 0f34f09be6
Translated using Weblate (Serbian)
Currently translated at 5.5% (35 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sr/
5 years ago
Sunjae Choi f0cf801b87
Translated using Weblate (Korean)
Currently translated at 99.5% (624 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
5 years ago
Garden Hose 24a0cfd18f
Added translation using Weblate (Croatian) 5 years ago
Maaz 6896efff6b
Translated using Weblate (Urdu)
Currently translated at 10.8% (68 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ur/
5 years ago
Artem 94e1216e72
Translated using Weblate (Russian)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Maaz c2c4e25a0f
Added translation using Weblate (Urdu) 5 years ago
Nikita Epifanov 20b18c6c10
Translated using Weblate (Russian)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Łukasz Stolcman ebd434fcc0
Translated using Weblate (Polish)
Currently translated at 96.4% (605 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Emin Tufan Çetin 9bd6480cfd Translated using Weblate (Turkish)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Nikita Epifanov 4f5846f90d Translated using Weblate (Russian)
Currently translated at 99.5% (624 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Kaci b9e943b12d Translated using Weblate (Hungarian)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker a151e384e9 Update changelog 5 years ago
Alex Baker abba73a2ce Watch caldav account for changes 5 years ago
Alex Baker c212a56196 Fix authentication error buttons 5 years ago
Eric 3a117fb966 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 7a7190785a Translated using Weblate (Dutch)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 397a1c1448 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.5% (624 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Florian Dubois 4484f61102 Translated using Weblate (French)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 8cefb1ebd4 Translated using Weblate (Spanish)
Currently translated at 100.0% (627 of 627 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 806b74f03a Use basic authentication for tasks.org 5 years ago
Alex Baker 3a34721b12 Update Tasks.org sign in
* Replace JWT with session authentication
* Add support for GitHub sign in
5 years ago
Alex Baker bacee7c781 Tasks accounts dont use caldav account settings 5 years ago
Alex Baker 71a5a67e52 Unlock pro for tasks.org subscribers 5 years ago
Alex Baker 612ffca6c3 Ignore exceptions when logging out of Etebase 5 years ago
Alex Baker c1095f2ec2 Update version and changelog 5 years ago
Alex Baker abc9a37488 Move RedirectUriReceiver to main AndroidManifest 5 years ago
Alex Baker b97f1e67c6 Set redirect receivers in Android Manifest 5 years ago
Alex Baker 13d10eb203 Add AuthorizationServiceProvider 5 years ago
Alex Baker f126e7e462 Push local Etebase changes before fetching updates 5 years ago
Alex Baker 58520bcc29 Fix travis validation issues 5 years ago
Alex Baker f94bc86c69 Fix CaldavClientTest 5 years ago
Alex Baker 03d6aa94a0 Filter Etebase collection types 5 years ago
Alex Baker c7acafbc62 Update version and changelog 5 years ago
Alex Baker e6bea14af1 Update cert4android 5 years ago
Alex Baker c6f8616541 Use jitpack for AppAuth 5 years ago
Alex Baker 202a304139 Exclude some Google Drive error reports 5 years ago
Alex Baker 7bfd339021 Fix handling Google Drive 404 errors 5 years ago
Alex Baker d74f041ef6 Remove runBlocking from GtasksInvoker 5 years ago
Alex Baker 113fe85376 Only fetch changed collections 5 years ago
Alex Baker f1a26ec1f3 Update collection mtime 5 years ago
Alex Baker 3a837dab6e Handle paged collection results 5 years ago
Alex Baker 2bef1b41ef Change from transaction back to batch 5 years ago
Alex Baker 5d41908b82 Update Etebase mtime when deleting 5 years ago
Alex Baker d86f382c4e Change EteBase to Etebase 5 years ago
Alex Baker ca8320c01e Don't show 'More info' for Tasks.org sync 5 years ago
Alex Baker ea7aeb3afd Use transaction instead of batch 5 years ago
Alex Baker 09e0fb0c3b Fix EteBase delete issues 5 years ago
Alex Baker b55a783138 EteSync v2 support 5 years ago
Alex Baker 9470eb2786 Add EteBaseClientProvider 5 years ago
Alex Baker af2213d60f Copy etesync package to etebase, deprecate etesync 5 years ago
黃冠霖 f4e63d6b59
Translated using Weblate (Chinese (Traditional))
Currently translated at 53.4% (332 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
5 years ago
黃冠霖 1c557b28f9
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Emin Tufan Çetin eb00769118
Translated using Weblate (Turkish)
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Francesco Saltori 23fef767e9
Translated using Weblate (Italian)
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
pjammo 37bef5d0ab Translated using Weblate (Italian)
Currently translated at 99.0% (615 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci a58304e695 Translated using Weblate (Hungarian)
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker 7101dc6ef7 Add EteBase dependency 5 years ago
Eric 59afda54e2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel a2c5d47bbf Translated using Weblate (Dutch)
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Florian Dubois 362c05cc62 Translated using Weblate (French)
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 80fe5aa629 Translated using Weblate (Spanish)
Currently translated at 100.0% (621 of 621 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 21e2bd1c23 Add missing language overrides 5 years ago
Alex Baker 5afff40050 Update version and changelog 5 years ago
Alex Baker bfe0bd9e6f Call toString on price 5 years ago
Alex Baker c6f6b34a33 Handle sign in click to reauthorize account 5 years ago
Alex Baker 8044a70f38 Don't try to get fresh token if not authorized 5 years ago
Alex Baker 26b2f9d346 Separate generic and googleplay auth_config files 5 years ago
Alex Baker 7f206546a3 Add preference to migrate local lists to Tasks.org 5 years ago
Alex Baker ee067fd837 Fix sponsor button issue after device rotation 5 years ago
Eric b1177a3866
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (616 of 616 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen aa1b1b7bf8
Translated using Weblate (Turkish)
Currently translated at 100.0% (616 of 616 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel d20843a6dc
Translated using Weblate (Dutch)
Currently translated at 100.0% (616 of 616 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 2189ed948d
Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (614 of 616 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci db1fb4e5eb
Translated using Weblate (Hungarian)
Currently translated at 100.0% (616 of 616 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 1e4d1fc74b
Translated using Weblate (French)
Currently translated at 100.0% (616 of 616 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 511bf8e8a4
Translated using Weblate (Spanish)
Currently translated at 100.0% (616 of 616 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 33403b269a Add GitHub Sponsor button to generic build 5 years ago
Alex Baker 5621a268d0 Show sign in button for HTTP 401 5 years ago
Hwaro-k f4a6deb93b
Translated using Weblate (Korean)
Currently translated at 97.7% (600 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
5 years ago
Alex Coles 2e76c452fa
Translated using Weblate (German)
Currently translated at 99.6% (612 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Osoitz 1dbc1d4fdb
Translated using Weblate (Basque)
Currently translated at 100.0% (614 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Eric ad240a95de
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (614 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen 8096aca2d9
Translated using Weblate (Turkish)
Currently translated at 100.0% (614 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel 02adfe0a84
Translated using Weblate (Dutch)
Currently translated at 100.0% (614 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 1bc23192f7
Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (612 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci f1e74cc0fc
Translated using Weblate (Hungarian)
Currently translated at 100.0% (614 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 46de4cb973
Translated using Weblate (French)
Currently translated at 100.0% (614 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois e5e91bc329
Translated using Weblate (Spanish)
Currently translated at 100.0% (614 of 614 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 6fe02f6a99 New Tasks account settings preference 5 years ago
Alex Baker 9d37a20c95 Top level Tasks.org sign in preference 5 years ago
Kaci 337fa2646f Translated using Weblate (Hungarian)
Currently translated at 100.0% (613 of 613 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker b34c33c6c2 Fix license info 5 years ago
Alex Baker e67785f3e8 Add IdToken 5 years ago
Alex Baker db71150969 Add sync settings summary, rearrange acct dialog 5 years ago
Alex Baker 035307cec7 Add left and right arrow icons 5 years ago
Eric 22b4d3d14a
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (613 of 613 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen 33f8c6dc0a
Translated using Weblate (Turkish)
Currently translated at 100.0% (613 of 613 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel e7fa11633a
Translated using Weblate (Dutch)
Currently translated at 100.0% (613 of 613 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Florian Dubois 7dad33caf7
Translated using Weblate (French)
Currently translated at 100.0% (613 of 613 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 7541befb07
Translated using Weblate (Spanish)
Currently translated at 100.0% (613 of 613 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 26a4b16235 Replace Google Sign In with App Auth 5 years ago
Oğuz Ersen 47189e0466 Translated using Weblate (Turkish)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Alex Baker ee5bcb21e6 Add TasksAccountSettingsActivity 5 years ago
Nikita Epifanov eac1dbacd6
Translated using Weblate (Russian)
Currently translated at 99.6% (610 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Allan Nordhøy 63c2987ecf Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (610 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Francesco Saltori 510ad7f2e8 Translated using Weblate (Italian)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
przemhb 666d7033d2 Fixes a bug which caused notification sounds to overlap in five times mode; instead of five times the sound was played just twice. Closes #1000.
Thank you Alex for help!
5 years ago
Alex Baker 4bbc6707ed Update desugar_jdk_libs 5 years ago
Eric 37433316fd Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 38ff68e45b Translated using Weblate (Dutch)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 953a6f9808 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (610 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Francesco Saltori 46d6c8bd6c Translated using Weblate (Italian)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci 566facd917 Translated using Weblate (Hungarian)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
J. Lavoie 5ec4c417aa Translated using Weblate (German)
Currently translated at 99.3% (608 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker a03cbfaf58 Exclude play-services-ads-identifier 5 years ago
Alex Baker 1b66ba9029 Update debug url 5 years ago
Alex Baker c7b0d48c61 Remove space from client id 5 years ago
Florian Dubois bd167b9d99 Translated using Weblate (French)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 016dc7c2fd Translated using Weblate (Spanish)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Eric e8cde25e8e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 40a94e4f45 Translated using Weblate (Dutch)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 3e1677a86f Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (610 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Yaron Shahrabani 94d1be7511 Translated using Weblate (Hebrew)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
Pierfrancesco Passerini 81066db62e Translated using Weblate (Italian)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Francesco Saltori 31d931de94 Translated using Weblate (Italian)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci 2376cec256 Translated using Weblate (Hungarian)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 5ab0e86c9d Translated using Weblate (French)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 572c689aca Translated using Weblate (Spanish)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 2dd44e1023 Fixed crash from Google Play pre-launch report 5 years ago
Alex Baker de13d44e78 Update version and changelog 5 years ago
Alex Baker f3312baade Prune changelog 5 years ago
Alex Baker 28fecc411e Fix Google Sign In client IDs 5 years ago
Alex Baker 727ad6e7a4 Add BaseInvoker and InvokerFactory 5 years ago
Alex Baker 0664e23076 Fetch oauth tokens with coroutines 5 years ago
Alex Baker b4df28ae3b Convert GoogleAccountManager to Kotlin 5 years ago
Alex Baker 65e0e0b997 Update version and changelog 5 years ago
Alex Baker fe5377e542 Update background location disclosure
No idea why Google rejected the last one
5 years ago
Pierfrancesco Passerini 11a5948214 Translated using Weblate (Italian)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Florian Dubois 2e1f05fe46 Translated using Weblate (French)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois a9d26fadc9 Translated using Weblate (Spanish)
Currently translated at 100.0% (612 of 612 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker c5fb13b6fd Add reddit link 5 years ago
Alex Baker a9352db54f Display changelog in "What's New" dialog 5 years ago
Alex Baker b569534697 Update third party dependencies 5 years ago
Alex Baker afe7cdacba Android Studio 4.1.1 5 years ago
Alex Baker 17605d26c1 Update changelog and version 5 years ago
Alex Baker 2f87d2b096 Update F-Droid dependencies 5 years ago
Pierfrancesco Passerini 792d0e4391 Translated using Weblate (Italian)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Florian Dubois d10fa80c54 Translated using Weblate (French)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois c4b3461c33 Translated using Weblate (Spanish)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker da92e81b72 Remove CARD prefix 5 years ago
Alex Baker 874d6204d5 Add support for repeat every fifth day of week 5 years ago
Alex Baker 31c0cfafac Don't display purchases updated toast 5 years ago
Alex Baker 3936c221ae Throttle all notify/cancel notification mgr calls 5 years ago
Alex Baker 5624816cac Update location disclosure verbiage 5 years ago
Andika Tulus Pangestu bc3f1eadae Translated using Weblate (Indonesian)
Currently translated at 71.3% (436 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/id/
5 years ago
Alex Baker 0f36e1e030 Remove escaping 5 years ago
Andika Tulus Pangestu d53466cb1b
Update Translation Strings.xml
Slightly fix wrong and wrong translations in Indonesian, as well as some signs in strings.
5 years ago
Andika Tulus Pangestu 3e10e077d1
Update Strings.xml
Slightly correct wrong and wrong translations in Indonesian.
5 years ago
Alex Baker 4760639cfa Merge tag '10.4.1' into main 5 years ago
Alex Baker 4378b8062f Fix Mapbox crash on Android 11 (F-Droid only) 5 years ago
Alex Baker 621e4496b8 Update version and changelog
Never got around to promoting 10.5 to production so I rolled it into
11.0
5 years ago
Eric 2fea64d72d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 89c67475e5 Translated using Weblate (Dutch)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 2c9a35c2e4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.3% (607 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Pierfrancesco Passerini f87b026358 Translated using Weblate (Italian)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci 82f3980a6e Translated using Weblate (Hungarian)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 96af71419a Translated using Weblate (French)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois c8825ed63e Translated using Weblate (Spanish)
Currently translated at 100.0% (611 of 611 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker e7f61f4050 Throttle notification cancellation 5 years ago
Alex Baker 9ab469ea17 Reset last reminder time on cloned tasks 5 years ago
J. Lavoie e6a4323289 Translated using Weblate (Italian)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Pierfrancesco Passerini 040b19847a Translated using Weblate (Italian)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
J. Lavoie 1fe1deb43c Translated using Weblate (French)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
J. Lavoie 2da84ec9b8 Translated using Weblate (German)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker 1178e21047 Update version and changelog 5 years ago
Alex Baker e81e120adb Move URLs to keys.xml 5 years ago
Alex Baker b5171056d8 Display current subscription in About 5 years ago
Alex Baker a67d62f1ea Add Tasks.org to synchronization options 5 years ago
Alex Baker e10d78c712 New purchase dialog 5 years ago
Alex Baker afd5469d72 Add Markwon dependency 5 years ago
Alex Baker 75d130556c Add CaldavClientProvider with support for tokens 5 years ago
Alex Baker 50c62a4114 Add Tasks.org account type 5 years ago
Alex Baker 49c7672822 Update Flipper 5 years ago
Pierfrancesco Passerini 2e70a6516e
Translated using Weblate (Basque)
Currently translated at 94.8% (574 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Allan Nordhøy 31f9d01ee5 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.1% (600 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Alex Baker f8d6914d37 Convert Inventory to Kotlin 5 years ago
C. Rüdinger 5d771a2449 Translated using Weblate (German)
Currently translated at 97.8% (592 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Tereschenko d735ed5d0e Translated using Weblate (Polish)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Emin Tufan Çetin 6d364e858c Translated using Weblate (Turkish)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Nikita Epifanov 91528ac7ad Translated using Weblate (Russian)
Currently translated at 99.5% (602 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Frits van Bommel 819faab8b3 Translated using Weblate (Dutch)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Pierfrancesco Passerini 268355b051 Translated using Weblate (Italian)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Alex Baker c5ea32aabc Fix compile 5 years ago
Alex Baker e278b24907 Remove applicationIdSuffix
This was more trouble than its worth
5 years ago
Alex Baker d3ce1a41ac Use postValue in CompletableViewModel 5 years ago
Alex Baker fe79cc6b12 Update Android Studio config 5 years ago
Alex Baker a25c7a43b6 Move sync request codes into companion object 5 years ago
Alex Baker b6ea44be7b Add test for shifting without original due date 5 years ago
Alex Baker 265373d46c Try to guess original due date when rescheduling 5 years ago
Alex Baker 7aa8638dd1 Update ical4android 5 years ago
Eric faf4fa5fb2
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Nikita Epifanov f70b1d3289
Translated using Weblate (Russian)
Currently translated at 99.1% (600 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Florian Dubois 4aab4da9e8
Translated using Weblate (French)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 67ad76ddb4
Translated using Weblate (Spanish)
Currently translated at 100.0% (605 of 605 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
黃冠霖 9ee065a4b1 Translated using Weblate (Chinese (Traditional))
Currently translated at 39.9% (241 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
5 years ago
Sunjae Choi d171bbb760 Translated using Weblate (Korean)
Currently translated at 98.5% (594 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ko/
5 years ago
Mohammed Anas 1acdbf1e52 Translated using Weblate (Arabic)
Currently translated at 36.4% (220 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 0f0323ce0f Merge tag '10.5' into main 5 years ago
Alex Baker 5f5aaab1f6 Update version and changelog 5 years ago
Alex Baker 60244ead3c Fix batch rescheduling logic 5 years ago
Alex Baker 9db74c728f Remove children before duplicating tasks 5 years ago
Alex Baker bc90b91c87 Open 'My Tasks' after deleting a filter 5 years ago
Alex Baker 9d616b54c2 Fix opening new filter automatically 5 years ago
Alex Baker 9c56d874b8 Replace if with when in onActivityResult 5 years ago
Alex Baker 67b6c112ee Tweak custom filter sql spacing 5 years ago
Alex Baker 431acedda7 Add 'has subtasks' filter 5 years ago
Alex Baker 2b98b12723 Add 'is subtask' filter 5 years ago
Alex Baker bcb14ccfc4 Remove tag prefix from new filter identifiers 5 years ago
Alex Baker f3e7440453 Add custom filter criteria for hidden tasks 5 years ago
Alex Baker 98af963256 Add custom filter criteria for completed tasks 5 years ago
Alex Baker 09fba4073a Add custom filter criteria for recurring tasks 5 years ago
Alex Baker 8b12ab3e0d Include hidden & completed in custom filter count 5 years ago
Alex Baker acf22b8ace Recreate local task if not found 5 years ago
Eric d7aef11929 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (603 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 5a167a9b4c Translated using Weblate (Dutch)
Currently translated at 100.0% (603 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Pierfrancesco Passerini 0f2e1eb8c6 Translated using Weblate (Italian)
Currently translated at 100.0% (603 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci 07025c38b9 Translated using Weblate (Hungarian)
Currently translated at 99.6% (601 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Alex Baker 70f9b627fe Update version and changelog 5 years ago
Alex Baker 9059eb9449 Remove translations 5 years ago
Florian Dubois d44cca20fa
Translated using Weblate (French)
Currently translated at 100.0% (603 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois c14b84ac37
Translated using Weblate (Spanish)
Currently translated at 100.0% (603 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Oğuz Ersen 08e8df4738
Translated using Weblate (Turkish)
Currently translated at 100.0% (603 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Oğuz Ersen 878128a384
Translated using Weblate (Turkish)
Currently translated at 100.0% (603 of 603 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Alex Baker 6ffde94a40 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (601 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Emin Tufan Çetin 16d23da51a Translated using Weblate (Turkish)
Currently translated at 100.0% (602 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel 8521f292d2 Translated using Weblate (Dutch)
Currently translated at 100.0% (602 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy a838af5572 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.6% (594 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Yaron Shahrabani ff39481210 Translated using Weblate (Hebrew)
Currently translated at 100.0% (602 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
Pierfrancesco Passerini a6dffe8434 Translated using Weblate (Italian)
Currently translated at 100.0% (602 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Florian Dubois a3480d60d4 Translated using Weblate (French)
Currently translated at 100.0% (602 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 6306be0785 Translated using Weblate (Spanish)
Currently translated at 100.0% (602 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Eric 55548dbb76 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (602 of 602 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
supermazena dc615b6c51 Code cleanup 5 years ago
supermazena d4f3438eed Copy task together with subtasks 5 years ago
Alex Baker bf71efde55 Debounce opentask sync status changes
And ignore sync status unless using opentask provider
5 years ago
Alex Baker 930be1f249 Full date updates
* Move preference to 'Date and time' screen
* Show full dates in widget
* Show full dates in deadline control set
5 years ago
T0M0F c369a12f69 Added test cases to DateUtilitiesTest 5 years ago
T0M0F b6059e509d Add option to always display full date
Closes #1156
5 years ago
T0M0F aca3c98914 Minor refactoring of DateUtilities
returning null from getRelativeDay if date is not within six days is misleading.
getReltativeDay should always return a relative date and never null. Checking if date is within six
days should happen before calling getRelativeDay.
5 years ago
Alex Baker 17c744f5be Translate 'OK' and 'Cancel' for values-en 5 years ago
Alex Baker 0d2037d96e Override mdtp_ok and mdtp_cancel 5 years ago
Oğuz Ersen 75b900d99c Translated using Weblate (Turkish)
Currently translated at 100.0% (600 of 600 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel 778cc98572 Translated using Weblate (Dutch)
Currently translated at 100.0% (600 of 600 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Pierfrancesco Passerini 31d3fb4aa7 Translated using Weblate (Italian)
Currently translated at 100.0% (600 of 600 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci 9a54395c02 Translated using Weblate (Hungarian)
Currently translated at 100.0% (600 of 600 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 43386a9a5c Translated using Weblate (French)
Currently translated at 100.0% (600 of 600 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 9128c93b98 Translated using Weblate (Spanish)
Currently translated at 100.0% (600 of 600 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Eric d7438597a2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (600 of 600 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Alex Baker b50b98fa5b Don't reference platform 'OK' and 'Cancel' strings
Will temporarily have English translation fall back to the platform
string to give translators time to address this
5 years ago
Alex Baker b80f14cc21 Fetch all tasks to reschedule at once 5 years ago
Alex Baker 5a60819fc7 Use clear button for deleting comments 5 years ago
Alex Baker a9849d4cea Merge branch 'main' of ssh://github.com/romedius/tasks into romedius-main 5 years ago
Alex Baker 2a47ee321c Multi-select rescheduling 5 years ago
Eric e2071b58e3
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (597 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen b4592c36aa
Translated using Weblate (Turkish)
Currently translated at 100.0% (597 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel 9c6936e8aa
Translated using Weblate (Dutch)
Currently translated at 100.0% (597 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy c44bfdf09c
Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.3% (593 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Pierfrancesco Passerini 786f59e9aa
Translated using Weblate (Italian)
Currently translated at 100.0% (597 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci fa7ff86063
Translated using Weblate (Hungarian)
Currently translated at 100.0% (597 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois b7aa600f27
Translated using Weblate (French)
Currently translated at 100.0% (597 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 9c5a8862fc
Translated using Weblate (Spanish)
Currently translated at 100.0% (597 of 597 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 45c782c410 Add 'Due time' to default hide until 5 years ago
Alex Baker ced053d94c Add default tags preference 5 years ago
Alex Baker c4c9ac726a Add default location preference 5 years ago
Alex Baker 9683479ab3 Fix crash in geofence dialog for invalid radius 5 years ago
Alex Baker f18264487a Set isVisible on widget settings menu 5 years ago
Eric 2e3c38acf6
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (595 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen 137a2023b4
Translated using Weblate (Turkish)
Currently translated at 100.0% (595 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Nikita Epifanov 9cc505124d
Translated using Weblate (Russian)
Currently translated at 99.8% (594 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Frits van Bommel 5f9bafb89b
Translated using Weblate (Dutch)
Currently translated at 100.0% (595 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Pierfrancesco Passerini bb658a8780
Translated using Weblate (Italian)
Currently translated at 100.0% (595 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Kaci 13a043a830
Translated using Weblate (Hungarian)
Currently translated at 100.0% (595 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois d6ec590454
Translated using Weblate (French)
Currently translated at 100.0% (595 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 62d0b7ad22
Translated using Weblate (Spanish)
Currently translated at 100.0% (595 of 595 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker c46c935d0b Add default recurrence setting 5 years ago
Alex Baker 6f12563fc4 Use onActivityResult for recurrence dialogs 5 years ago
Alex Baker c3dad30683 Don't try to update empty calendar URI 5 years ago
Emin Tufan Çetin e1e6ecabaf Translated using Weblate (Turkish)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Yaron Shahrabani dbbfaa562b Translated using Weblate (Hebrew)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
Frits van Bommel 30bc1d4db6 Translated using Weblate (Dutch)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Eric a3131919d6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Nikita Epifanov 8100781736 Translated using Weblate (Russian)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Allan Nordhøy 3270f7d7c9 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.3% (589 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Pierfrancesco Passerini 29701e6422 Translated using Weblate (Italian)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Florian Dubois 28eace3ed8 Translated using Weblate (French)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois dbf23b2a0d Translated using Weblate (Spanish)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 10996ca288 Android Studio 4.1 5 years ago
Alex Baker dda0653043 Fix hasChanges check for event URI 5 years ago
Alex Baker a029caf465 Update third party dependencies 5 years ago
Alex Baker e515fe4c04 Update version, changelog, and screenshots 5 years ago
Yannick A a663857a92 Translated using Weblate (French)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Alex Baker e3d0c6f7a3 Configure widget header spacing 5 years ago
Alex Baker 4b1f1a3171 Create WidgetButton style 5 years ago
Alex Baker 1c13d7ecbb Widget 'System default' theme changes
* Theme was supposed to be free
* Move dark theme check to getCount. Wasn't always working in
  hasStableIds and I don't expect this to work either
5 years ago
Alex Baker 5adeaf2a9a Use medium format for widget header dates 5 years ago
Alex Baker 1bf64ffec2 Convert AppWidgetManager to Kotlin 5 years ago
Alex Baker 730c82a037 Add UpdateCalendarWork 5 years ago
Alex Baker 86b8f9dcca Fix comparison for modified event 5 years ago
Alex Baker 3cbe88ecb9 Fix equality check ignoring geofence changes 5 years ago
Alex Baker 7d8ff14a75 Configure sort, hidden, and completed for widget 5 years ago
Alex Baker 91260e8892 Add QueryPreferences interface 5 years ago
Alex Baker 80b245702a Fix initial 'Disable sort groups' state 5 years ago
Alex Baker 8251f24739 Use hilt-compiler 5 years ago
Pierfrancesco Passerini 6665a90a3d Translated using Weblate (Italian)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Florian Dubois 7e50c7e4bf Translated using Weblate (French)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Alex Baker 6414fd3892 Add hilt-core to licenses 5 years ago
Alex Baker 8f44af9d76 Android Studio 4.0.2 5 years ago
Alex Baker b8f883bc8b Add android:hasFragileUserData="true" 5 years ago
Alex Baker ae86642688 Add android.enableResourceOptimizations=true
Will only take effect after updating to Android Studio 4.2
5 years ago
Alex Baker 203947c088 Update third party dependencies 5 years ago
Alex Baker d3bebb951c Add dependency-tree-diff output 5 years ago
Pierfrancesco Passerini fd9e5a6f3a
Translated using Weblate (Italian)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Alex Tereschenko 85f1537ded Translated using Weblate (Polish)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Romedius Weiss 0caaeb0d77 Added ability to delete comments.
fixes #60
Added translations for german and italian
5 years ago
Alex Baker cceced7729 Update version and changelog 5 years ago
Alex Baker 7b2edcfbf0 Adjust widget chip icon appearance 5 years ago
Alex Baker 634b014e98 Disable hidden toggles for notifications filter 5 years ago
Alex Baker 4bbda7fd1e Update changelog and version 5 years ago
Alex Baker a19b130d83 Set max subscription price to 15 5 years ago
Alex Baker a71aa2b22c Fix due time display issues
* Fix due date and time on recently modified
* Fix due date for subtasks
5 years ago
Alex Baker f3000d8b82 Hide widget due dates when sorting by due date 5 years ago
Alex Baker 6a5b8d53bd Add Long.startOfDay() extension method 5 years ago
Alex Baker 6b3cb96848 Convert DateTimeUtils to Kotlin 5 years ago
ssantos a7acf784ff Translated using Weblate (Portuguese)
Currently translated at 95.6% (566 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Alex Baker 424b07f8fc Add 'System default' widget theme 5 years ago
Allan Nordhøy c41b8d8453 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.4% (589 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Yaron Shahrabani 69767fe46c Translated using Weblate (Hebrew)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
Pierfrancesco Passerini f41613d78c Translated using Weblate (Italian)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Alex Baker 0f5d25dbf4 Remove defunct collapsed widget header values 5 years ago
Alex Baker 50a3ca2d80 Fix hidden icon tint for dark widget 5 years ago
Alex Baker bcbe1cadb9 Collapsible sort groups in widget 5 years ago
Alex Baker 339b4661c7 SectionedDataSource.getItem can return null 5 years ago
Alex Baker a4639cb18c
Update CHANGELOG.md 5 years ago
Emin Tufan Çetin 65fd45d4c4 Translated using Weblate (Turkish)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Pierfrancesco Passerini 428ca469ad Translated using Weblate (Italian)
Currently translated at 100.0% (592 of 592 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Alex Baker b0060f98d4 Update version and changelog 5 years ago
Alex Baker f1119d22a3 Display tag chips on widget 5 years ago
Alex Baker 1f8a20c745 Display place chips on widget 5 years ago
Alex Baker 5b8dcd286a Add toggle to disable widget list chips 5 years ago
Alex Baker 0783b3d4da Display list chips on widget 5 years ago
Alex Baker 5e7bf41cfd Fix dark widget subtask arrow tint 5 years ago
Alex Baker 802fd87855 Update version and changelog 5 years ago
Alex Baker ca49ca642e Request davx5/etesync sync on swipe gesture 5 years ago
Alex Baker f2a0eac367 Show sync indicator when davx5/etesync are syncing 5 years ago
Alex Baker 95fe64fb65 Update uses-permission notes 5 years ago
Alex Baker 76144ba7d2 Fix null pointer after uploading backup file 5 years ago
Alex Baker 7f79510c6d Fix GoogleTaskDao test 5 years ago
Alex Baker 349af5d3e6 Update version and changelog 5 years ago
Alex Baker 7d994d06da Automatically delete missing OpenTask account 5 years ago
Alex Baker 42d0982acd Don't report FileNotFound in Drive uploader 5 years ago
Alex Baker 0cf3e4c413 Fix null pointer in google task sync 5 years ago
Alex Baker 5da49d9ee1 Fix null pointer when task is missing 5 years ago
Alex Baker 9ffc789b0e Fix null pointer when deleting directory 5 years ago
Alex Baker c41cf62f3d Handle null DocumentFile name 5 years ago
Alex Baker 8a6141519f Fix malformed and duplicated RELTYPEs 5 years ago
vachan-maker 99268c4122 Translated using Weblate (Malayalam)
Currently translated at 7.5% (45 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ml/
5 years ago
Oğuz Ersen 93929addf5 Translated using Weblate (Turkish)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
J. Lavoie 1126139e1b Translated using Weblate (German)
Currently translated at 99.3% (589 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker 979aaee667
Update CHANGELOG.md 5 years ago
Alex Baker 53a1568d9d Fix backup warning issues
* Cache last Drive backup timestamp for offline use
* Fix updating backup error indicator
5 years ago
Frits van Bommel c96c1380f4 Translated using Weblate (Dutch)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Michal Čihař d852fa3798 Translated using Weblate (Czech)
Currently translated at 88.0% (522 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Vachan e4d8c232e0 Added translation using Weblate (Malayalam) 5 years ago
Alex Baker dd6a0f8db9 Deleted translation using Weblate (Yakut) 5 years ago
Alex Baker 0c39832678 Deleted translation using Weblate (Polish) 5 years ago
Alex Baker df907cfabb Fix unit tests 5 years ago
Alex Baker 0d0094ad9c Fix string formatters 5 years ago
Alex Baker e03a77257f Replace android:tint with app:tint for ImageViews 5 years ago
Alex Baker 3b3fe34d22 Don't report Google Drive HTTP 401 or 503 errors 5 years ago
Alex Baker 721d1cb647 Handle missing Google Task modification time 5 years ago
Alex Baker 014bb692d6 Don't report HTTP 503 errors 5 years ago
Alex Baker e688b2c7bb Handle missing google task parent 5 years ago
Alex Baker a77205e9cb Handle null Google Task dates 5 years ago
Alex Baker 4ff6cd966b Set preserveLegacyExternalStorage=true 5 years ago
Alex Baker 4678452ed2 Places SDK 2.4.0 5 years ago
Eric 0c4b9e2cd5
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Nikita Epifanov db15e6607b
Translated using Weblate (Russian)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Kaci 439fee057c
Translated using Weblate (Hungarian)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois ad28dfc30d
Translated using Weblate (French)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 873c273b42
Translated using Weblate (Spanish)
Currently translated at 100.0% (593 of 593 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker 3e17bea70b Display backup warnings to user
* Warn if backups stored in private storage
* Warn if local backup is stale
* Warn if remote backup is stale
* Add option to disable warnings
5 years ago
Alex Baker 40a764112c Add refresh preferences broadcast 5 years ago
Alex Baker 1ce2e31b02 Update timestamp after enabling drive backups 5 years ago
Alex Baker 823b7a0650 Update local backup timestamp after manual export 5 years ago
Alex Baker a0b02c7e9c Allow backups with zero tasks 5 years ago
Alex Baker 6c248be43a Merge tag '10.0.3' into main 5 years ago
Alex Baker d1d6c010a8 Update version and changelog 5 years ago
Alex Baker 668dfd396f Fix bug that was creating invalid calendar entries 5 years ago
marlon mt b2ba1bb991 Translated using Weblate (Spanish)
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker d8a31ec57d Remove "No tasks to export" toast 5 years ago
Alex Baker 7e573b3fa7 Merge tag '10.0.3' into main 5 years ago
Alex Baker 49998cb178 Update version and changelog 5 years ago
Alex Baker 2c73535278 Fix crash when setting Google Map markers 5 years ago
Alex Baker 9a6b369c2a Fix task list snackbar crash 5 years ago
Alex Baker 5e472aabbe Load last backup times in PreferencesViewModel 5 years ago
Alex Baker dd715c2b23 Detect OpenTask account renames 5 years ago
Frits van Bommel e4b480d63a Translated using Weblate (Dutch)
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci e74aa54d9c Translated using Weblate (Hungarian)
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Mohammed Anas 47dda085eb Translated using Weblate (Arabic)
Currently translated at 37.3% (221 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Alex Baker 6c898bc622 Merge tag '10.0.2' into main 5 years ago
Alex Baker 59f5e7b32a Update version and changelog 5 years ago
Alex Baker 427d8b9423 Fix calendar snackbar and astrid manual sorting 5 years ago
Alex Baker 42037e513a Trim whitespace from custom filter criteria
Whitespace was causing parsing error
5 years ago
PrestoSole a86b1ec8e2
Translated using Weblate (Arabic)
Currently translated at 37.3% (221 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Mohammed Anas 3796854cb4
Translated using Weblate (Arabic)
Currently translated at 37.3% (221 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Eric 924c5640c3
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Emin Tufan Çetin fe56d62ef5
Translated using Weblate (Turkish)
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Omeritzics Games 03ff48d06f
Translated using Weblate (Hebrew)
Currently translated at 98.9% (585 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
Nikita Epifanov ea7c10e1fb
Translated using Weblate (Russian)
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Florian Dubois 36cc228d5e
Translated using Weblate (French)
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 9b991c24d4
Translated using Weblate (Spanish)
Currently translated at 100.0% (591 of 591 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Sanjay Komala Sheshachala db5ea9a381 Translated using Weblate (Kannada)
Currently translated at 1.8% (11 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/kn/
5 years ago
Sanjay Komala Sheshachala 80bbda64f9 Added translation using Weblate (Kannada) 5 years ago
Eric 9504f9363f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (590 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Nikita Epifanov bedb8946aa Translated using Weblate (Russian)
Currently translated at 100.0% (590 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Frits van Bommel e19e833538 Translated using Weblate (Dutch)
Currently translated at 100.0% (590 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 8dc25d3fe3 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.4% (587 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Kaci effd6ea0ae Translated using Weblate (Hungarian)
Currently translated at 100.0% (590 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 8f9972fd31 Translated using Weblate (French)
Currently translated at 100.0% (590 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 1da58a391d Translated using Weblate (Spanish)
Currently translated at 100.0% (590 of 590 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Alex Baker be68fb774b Target Android 11 5 years ago
Alex Baker 63c914b493 Remove some intent queries 5 years ago
Alex Baker e6926f5943 Convert FileHelper to Kotlin 5 years ago
Alex Baker 81904e5888 Convert AddAttachmentDialog to Kotlin 5 years ago
Alex Baker 65e8f90098 Don't crash on missing drive folder 5 years ago
Alex Baker a4312a1d29 Update Kotlin version 5 years ago
Kaci 7ff4c7ad2c Translated using Weblate (Hungarian)
Currently translated at 100.0% (589 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Eric f0ac70567c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (589 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Nikita Epifanov e30cb09dae Translated using Weblate (Russian)
Currently translated at 100.0% (589 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
Frits van Bommel 559dda2f19 Translated using Weblate (Dutch)
Currently translated at 100.0% (589 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Allan Nordhøy 02458a0dc4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.4% (586 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Florian Dubois 4d56791058 Translated using Weblate (French)
Currently translated at 100.0% (589 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 9cd9fe8500 Translated using Weblate (Spanish)
Currently translated at 100.0% (589 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
PrestoSole 4c499b64d2 Translated using Weblate (Arabic)
Currently translated at 33.2% (196 of 589 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
doeg edomita 98dae7ae82 Added translation using Weblate (Polish) 5 years ago
Alex Baker bd08287c4c Rename import/export buttons, display last backup 5 years ago
Alex Baker a1e239eee5 Update backup functionality
* Add option to disable automatic backups
* Add link to backup documentation
* Rearrange backup sections
5 years ago
Alex Baker 5ed4d89e43 Use timestamp from backup filename 5 years ago
Alex Baker ee46c74994 Update Android Backup Service implementation 5 years ago
Alex Baker cfe23c4f74 Fix test compile 5 years ago
Alex Baker 35fc448b36 Add .ics file for eM Client recurring task
Tasks doesn't handle multiple entries in one file yet
5 years ago
Alex Baker 60e4ca2866 Update Google Drive backup settings
Display timestamp of last backup
5 years ago
Alex Baker 345346b1e9 Convert DriveInvoker to Kotlin 5 years ago
Alex Baker ddf9f79b18 Add Android Backup Service settings
* Add option to disable upload to backup service
* Display date of last upload
5 years ago
Alex Baker 63931c789e Specify preferences to exclude by resource id 5 years ago
Alex Baker af5f8ee972 Update third party dependencies 5 years ago
Alex Baker 5760c44df5 ical4android b520b3f2b2 5 years ago
Alex Baker 1d2bd5ea17 Google Task v1-rev20200516-1.30.10 5 years ago
Alex Baker bb2842fa85 Material components 1.2.1 5 years ago
Allan Nordhøy ea52a900a4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (581 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Yaron Shahrabani eb91bcfe4d Translated using Weblate (Hebrew)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
5 years ago
IvanDan 21dfacf477 Translated using Weblate (Italian)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
5 years ago
Mohammed Anas 67703c5dcf Translated using Weblate (Arabic)
Currently translated at 30.7% (179 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
PrestoSole 9ead1bda45 Translated using Weblate (Arabic)
Currently translated at 30.7% (179 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Mohammed Anas 9540c225f6 Translated using Weblate (Arabic)
Currently translated at 30.1% (176 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
PrestoSole 25e56c4dcf Translated using Weblate (Arabic)
Currently translated at 30.1% (176 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Mohammed Anas 2b369ad3b2 Translated using Weblate (Arabic)
Currently translated at 27.4% (160 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
PrestoSole 7fac94df3f Translated using Weblate (Arabic)
Currently translated at 27.4% (160 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ar/
5 years ago
Artyom 25b2dce7cc Translated using Weblate (Armenian)
Currently translated at 0.6% (4 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hy/
5 years ago
Artyom 029c93f737 Added translation using Weblate (Armenian) 5 years ago
Alex Baker 3e2d33605d Add Patreon link 5 years ago
Alex Baker 10b0c90401 Add OpenCollective link 5 years ago
Alex Baker daef79eb66 Update version and changelog 5 years ago
Alex Baker 33f85f50cb Fix hostname verification 5 years ago
Vít Skalický 4666655439 Translated using Weblate (Czech)
Currently translated at 89.3% (521 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
5 years ago
Alex Baker 8bd61a8241 Fix crash in f-droid build 5 years ago
Christian Munk 8fed5eebc2 Translated using Weblate (Danish)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/da/
5 years ago
Alex Baker ca88703fd2 Fix crash on null parameter 5 years ago
Alex Baker af3b33513f Allow state loss when opening task edit fragment 5 years ago
Alex Baker 2fc8d0f251 Fix crash when building notification summary 5 years ago
Alex Baker 2072ab719b Remove defunct test 5 years ago
Alex Baker 276a31f435 Reset last reminder time for recurring tasks 5 years ago
Alex Baker 3f6d4bcc2b Set language in speech recognizer request 5 years ago
Alex Baker b424cbbed2 Create new task for ACTION_VIEW intent 5 years ago
Alex Baker 78e8d2273d Add .github/FUNDING.yml 5 years ago
Alex Baker 35ba9ae7ac Update version and changelog 5 years ago
Alex Baker 9e75fb43a8 Add debug option to force restart 5 years ago
Alex Baker 7a7f8754d8 Update transaction commit behavior 5 years ago
Alex Baker 7ab63bce9c Fix null pointer when checking hide until value 5 years ago
Alex Baker 58425e8bf1 Remove some runBlocking calls 5 years ago
Alex Tereschenko 350b4f3699 Translated using Weblate (Polish)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
5 years ago
Alex Baker 5b5795b2fc Update changelog and version 5 years ago
Alex Baker e4a56bda2f Bail if fragment manager is destroyed 5 years ago
Alex Baker 15b9333008 Don't crash on linkify if webview is disabled 5 years ago
Alex Baker af58f671c3 Update version and changelog 5 years ago
Alex Baker bb5f3bc23a Flip expand/collapse indicators 5 years ago
Alex Baker c396592575 Fix missing comment bar 5 years ago
Alex Baker 9535abb4f8 Fix default hide until setting
Did not work when date was not automatically set
5 years ago
ssantos 21fa8679fe Translated using Weblate (Portuguese)
Currently translated at 98.2% (573 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Alex Baker b75701562f Update changelog and version 5 years ago
Alex Baker 56c75bd059 Log event when sync account added 5 years ago
Alex Baker 201afbf8e8 Launch queries on main thread 5 years ago
Alex Baker 7b666e4d22 Set manual sort filter before invalidating 5 years ago
Alex Baker 67e71332fb Check for pro on resume 5 years ago
Alex Baker ad68bb7216 Update version and changelog 5 years ago
Alex Baker 4869c86ea9 Fix null pointer in widget 5 years ago
Alex Baker 679e06982d Fix null pointer when fetching positions 5 years ago
Alex Baker 42c60006f3 Update Flipper 5 years ago
Luna Jernberg a86f8106a5
Translated using Weblate (Swedish)
Currently translated at 81.6% (476 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/sv/
5 years ago
aevw 400c50960f
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
5 years ago
Emin Tufan Çetin 059651cf64 Translated using Weblate (Turkish)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Alex Baker 87ae44fa1a Update version and changelog 5 years ago
Alex Baker 9f760c6bfb Prevent duplicate accounts when not pro 5 years ago
Alex Baker f6844a7c07 Update analytics, crashlytics, and remote config 5 years ago
İlle bd282e4c8c Translated using Weblate (Chuvash)
Currently translated at 0.5% (3 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cv/
5 years ago
Nikita Epifanov 1420df59a0 Translated using Weblate (Russian)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
5 years ago
İlle 2acebba3ba Added translation using Weblate (Chuvash) 5 years ago
Eric 20897de279 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Frits van Bommel 3f01f6d6d5 Translated using Weblate (Dutch)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci 220e274c01 Translated using Weblate (Hungarian)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois eeccf772c8 Translated using Weblate (French)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois f9ac8d718f Translated using Weblate (Spanish)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
C. Rüdinger 9863f31c6e Translated using Weblate (German)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker 05493640d9 Fix local recursive subtask migration 5 years ago
Alex Baker 4cd6e081f5 Load task edit info in parallel 5 years ago
Alex Baker 3ca6ccae1b Fix flickering old theme color when opening task 5 years ago
Alex Baker b97b9d5ef4 Fix rotation while editing task 5 years ago
Alex Baker 9fa7971964 Fix disabling leakcanary 5 years ago
Alex Baker 63721ebb4e Kotlin 1.4.0 5 years ago
Alex Baker abf7a06282 Use SYNC1 as DAVx5 etag 5 years ago
Alex Baker c06f5958b4 Don't crash if parent not found 5 years ago
Alex Baker 4234c6e494 Update changelog and version 5 years ago
Alex Baker a759f1bd8c Calendar UID derived from _sync_id 5 years ago
Alex Baker 1c122b9e1f Add missing list debug filter 5 years ago
Alex Baker 03550ced91 Pass account to sync 5 years ago
Alex Baker 8757d12ebb Set _UID and SYNC2 for new etesync tasks 5 years ago
Alex Baker 4a21421237 Add opentask-provider accounts automatically 5 years ago
Alex Baker 9eaa7a7408 Hide repeat setting from etesync opentask accounts 5 years ago
Alex Baker 0d7e92141f Mark binding as lateinit 5 years ago
Eric 88cec6aaad Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Alex Baker 172da54768 Fix notification activity 'Edit' button 5 years ago
Alex Baker 3335699642 Don't delete opentasks data 5 years ago
Alex Baker 9c07c0abd4 Set UID in SYNC2 for EteSync 5 years ago
Software In Interlingua d10c40be1f
Translated using Weblate (Interlingua)
Currently translated at 1.0% (6 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ia/
5 years ago
ssantos cbe301189a
Translated using Weblate (Portuguese)
Currently translated at 94.6% (551 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
5 years ago
Balaji 031c5a5918 Translated using Weblate (Tamil)
Currently translated at 92.4% (538 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
5 years ago
Alex Baker 0ab4199321
Update CHANGELOG.md 5 years ago
Alex Baker 72bda28d4f Update version and changelog 5 years ago
Николаев Павел Дмитриевич 04fd354755 Added translation using Weblate (Yakut) 5 years ago
Alex Baker d124fc1e64 Don't setup paged query in coroutine 5 years ago
Alex Baker 2aee8683d3 Update version number and changelog 5 years ago
Alex Baker 61419e7672 Don't write to opentasks-provider immediately 5 years ago
Eric 27e80e359c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
5 years ago
Oğuz Ersen 17d476413d Translated using Weblate (Turkish)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
5 years ago
Frits van Bommel a916165b5d Translated using Weblate (Dutch)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
5 years ago
Kaci 733cc5d088 Translated using Weblate (Hungarian)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
5 years ago
Florian Dubois 1fa5912ee8 Translated using Weblate (French)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
5 years ago
Florian Dubois 81ce70a287 Translated using Weblate (Spanish)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
5 years ago
Joshua Böke e30f42357d Translated using Weblate (German)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
5 years ago
Alex Baker 073b28aaa1 Use different 'etags' for DAVx5 and EteSync 5 years ago
Alex Baker 3c42dce6e5 Update task query threading and transactions 5 years ago
Alex Baker 89f6b2c477 Provide implicit value for caldav_task.object 5 years ago
Alex Baker 5e6cf64b7b Batch writes to opentasks-provider 5 years ago
Alex Baker 0d1738212f Fix compile 5 years ago
Alex Baker 5dfdd75327 Remove accountCount from OpenTaskDao 5 years ago
Alex Baker a04f617fff Convert GtasksListService to Kotlin 5 years ago
Alex Baker 0f27915f82 Convert LocationPickerActivity to Kotlin 5 years ago
Alex Baker bbf71bae38 Convert CommentsController to Kotlin 5 years ago
Alex Baker 6fd1cb3e44 Convert more custom filter code to Kotlin 5 years ago
Alex Baker e97e0d3a22 Convert ChipListCache to Kotlin 5 years ago
Alex Baker 14f46f0688 Sync with opentasks-provider 5 years ago
Allan Nordhøy 1ba66f4006 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.6% (579 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Alex Baker 754b6c7e8c Ensure DragAndDropDiffer works sequentially 5 years ago
Erlend Ydse a2202dce41
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (581 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
5 years ago
Oymate f01f04690b Translated using Weblate (Bengali (Bangladesh))
Currently translated at 4.9% (29 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bn_BD/
5 years ago
WH Julie 0a871a933a Translated using Weblate (Chinese (Traditional))
Currently translated at 38.5% (224 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hant/
5 years ago
Osoitz 319e53dda9 Translated using Weblate (Basque)
Currently translated at 100.0% (581 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
5 years ago
Pedro Lucas Porcellis 391c6ef556 Translated using Weblate (Portuguese (Brazil))
Currently translated at 91.3% (531 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt_BR/
5 years ago
Alex Baker 5acceb6314 Perform drag and drop changes on main thread 5 years ago
Alex Baker 97264545d8 Fix due time when rescheduling via drag and drop 5 years ago
Alex Baker e5a5c9b264 Convert AddAccountDialog to DialogFragment 5 years ago
Alex Baker ca42c718b9 Use strict mode to crash app 5 years ago
Alex Baker ef432e296c Convert tag picker to Kotlin 5 years ago
Alex Baker 811c9497e1 Add create and modify time debug filters 5 years ago
Alex Baker 550d401e74 Fix setting tags on new tasks 5 years ago
Alex Baker 3689793f91 Move some save work to background 5 years ago
Alex Baker 9af9dd4115 Launch coroutine in cleared method 5 years ago
Alex Baker 1178b8f3e6 Prevent setting parent to self 5 years ago
Alex Baker 97cb202f22 Add recursive loop tests 5 years ago
Alex Baker e9ab544b34 Initiate work requests from background thread 5 years ago
Alex Baker 6ee6e96a7f Initiate sync requests on background thread 5 years ago
Alex Baker aa9e0e93b9 Use Default dispatcher instead of IO 5 years ago
Alex Baker da256f2293 Cancel notification if new due date is in future 5 years ago
Alex Baker cb236bc0e8 Fix google login issues
* Display error toasts
* Enable background sync after adding accounts
* Initiate sync after adding accounts
6 years ago
Alex Baker 3fbbd95395 Only enable background sync for active services 6 years ago
Alex Baker ddd66c0ec8 Add opentasks content provider 6 years ago
Alex Baker 0726eed135 Fix sync after move 6 years ago
Alex Baker fcc1511c48 Debounce sync requests 6 years ago
Alex Baker 7078dfa2bf Separate sync work for each service 6 years ago
Alex Baker 15637e784e Make some caldav recur and geo code reusable 6 years ago
Alex Baker a21df189fd Don't allow empty account name 6 years ago
Alex Baker d48d5e8d99 Upgrade to Flipper 0.51.0 6 years ago
Alex Baker 5f735673da Add debug filters 6 years ago
Alex Baker fca4a721da Make workers non-cancellable 6 years ago
Alex Baker 640412314c Throttle WorkManager calls to 200/min 6 years ago
Alex Baker 1659afb34e Set current thread contextClassLoader 6 years ago
Alex Baker e3bcc2f7c9 Configurable throttle period 6 years ago
Alex Baker 24fd1acb68 Only call after complete for calendars/recurring 6 years ago
ssantos 887e926a27 Translated using Weblate (Portuguese)
Currently translated at 72.2% (420 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pt/
6 years ago
Alex Tereschenko 03af39e35e Translated using Weblate (Polish)
Currently translated at 100.0% (581 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/pl/
6 years ago
Yaron Shahrabani 02d1c03610 Translated using Weblate (Hebrew)
Currently translated at 98.2% (571 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
6 years ago
Oymate 71fcb52884 Translated using Weblate (Bengali (Bangladesh))
Currently translated at 4.6% (27 of 581 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/bn_BD/
6 years ago
Alex Baker d1ed0e423b Use coroutines in TagPickerViewModel 6 years ago
Alex Baker 91827654d0 Move some AfterSaveWork to TaskDao 6 years ago
Alex Baker 0eb5d65166 Use new task dao in timer plugin 6 years ago
Alex Baker 1e5036a335 Use new task dao in notification manager 6 years ago
Alex Baker 234af09ad5 Set modification and snooze in task dao update 6 years ago
Alex Baker 489b0298c6 Replace some usage of legacy task dao 6 years ago
Alex Baker 9559d90c25 Legacy TaskDao delegates to new TaskDao 6 years ago
Alex Baker 8710dab252 Use non-blocking daos for collapsing filter groups 6 years ago
Alex Baker 22363bcb17 Remove unused blocking dao methods 6 years ago
Alex Baker 02d99d9996 Convert DashClockExtension to Kotlin 6 years ago
Alex Baker bfe97e77de Convert GCalHelper to Kotlin 6 years ago
Alex Baker c3c5de1e5c Use coroutines in task creator 6 years ago
Alex Baker 6e6fb3eada Convert Throttle to Kotlin 6 years ago
Alex Baker 41f7d1da6b Convert TaskDuplicator to Kotlin 6 years ago
Alex Baker c825bfe94a Convert TaskCreator to Kotlin 6 years ago
Alex Baker 6670403b7a Convert VoiceCommandActivity to Kotlin 6 years ago
Alex Baker c62796acec Convert TaskerTaskCreator to Kotlin 6 years ago
Alex Baker 3db92db33b Convert TitleParser to Kotlin 6 years ago
Alex Baker b44150c7f3 Convert RefreshScheduler to Kotlin 6 years ago
Alex Baker 789836058d Use coroutines in geofence api 6 years ago
Alex Baker 20353023d8 Convert ReminderService to Kotlin 6 years ago
Alex Baker 9cd9f1ada2 Use coroutines in notification manager 6 years ago
Alex Baker 0a1a1d870d Use coroutines in notification & snooze activities 6 years ago
Alex Baker eb70cd86f8 Use coroutines in timer plugin 6 years ago
Alex Baker 4bd59b75ba Convert SnoozeActivity to Kotlin 6 years ago
Alex Baker ccf150310f Convert NotificationActivity to Kotlin 6 years ago
Alex Baker 207acb6a47 Convert NotificationClearedReceiver to Kotlin 6 years ago
Alex Baker 65d57c7649 Convert TimerPlugin to Kotlin 6 years ago
Alex Baker b8b8259b7b Convert InjectingJobIntentServices to Kotlin 6 years ago
Alex Baker e2dffbe71a Use coroutines in injecting service 6 years ago
Alex Baker 8a30fde2f2 Convert NotificationManager to Kotlin 6 years ago
Alex Baker 00bfd053c6 Convert repeat task helper to coroutines 6 years ago
Alex Baker 0661be1769 Disable change animations in navigation drawer 6 years ago
Alex Baker c9e1ec97eb Prevent creation of multiple local accounts 6 years ago
Alex Baker 3bd21eb254 Update note to self/take a note command
Add permission and SELF_NOTE category
6 years ago
Alex Baker cfa71d873e Add resizableActivity for samsung dex 6 years ago
Alex Baker 77bbd2dfb7 Fix title truncation 6 years ago
Alex Baker dd0650af51 Convert SyncAdapters to Kotlin 6 years ago
Alex Baker c4e3f72be1 Fix compile 6 years ago
Alex Baker e24b5b8bfe Convert AddAccountDialog to Kotlin 6 years ago
Alex Baker 3663c22b62 Fix generic compile 6 years ago
Nikita Epifanov f20e7249fd Translated using Weblate (Russian)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ru/
6 years ago
Alex Baker bd29616d8f commitNow on fragment transactions 6 years ago
Alex Baker 8992997a0f Fix CalDAV repeatUntil sync 6 years ago
Alex Baker e396dbf7bf Remove calendar settings string 6 years ago
sephrat 776d3d6e82 Translated using Weblate (French)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
6 years ago
C. Rüdinger 75774f5056 Translated using Weblate (German)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 years ago
Alex Baker 5afab641fe Android Studio 4.0.1 6 years ago
Alex Baker 598399e81e Adjust hide until date 6 years ago
Alex Baker 783f1bde69 Remove unused blocking dao methods 6 years ago
Alex Baker 479c26c416 Suspending caldav/etesync network calls 6 years ago
Alex Baker 39077910b7 Use non-blocking daos in json exporter 6 years ago
Alex Baker 5b8256d65e Use non-blocking daos in iCalendar 6 years ago
Alex Baker 91a99429ae Use non-blocking daos in xml importer 6 years ago
Alex Baker e65a855b02 Use non-blocking daos in json importer 6 years ago
Alex Baker 523893a2d9 Use non-blocking daos in Upgrader 6 years ago
Alex Baker 39305d1107 Use coroutines in account and list settings 6 years ago
Alex Baker 320623045e List and account settings Kotlin conversions 6 years ago
Yaron Shahrabani ae11547963 Translated using Weblate (Hebrew)
Currently translated at 97.9% (570 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
6 years ago
Emin Tufan Çetin 8348bc24cd Translated using Weblate (Turkish)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
6 years ago
Yaron Shahrabani 02b3f58b6b Translated using Weblate (Hebrew)
Currently translated at 95.7% (557 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
6 years ago
Yaron Shahrabani 70e7afdab5 Translated using Weblate (Hebrew)
Currently translated at 95.7% (557 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
6 years ago
Avi Parshan 1efc19018c Translated using Weblate (Hebrew)
Currently translated at 95.7% (557 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
6 years ago
Yaron Shahrabani fff8c5fe1f Translated using Weblate (Hebrew)
Currently translated at 90.5% (527 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/he/
6 years ago
Alex Baker dbba2e0e6f Convert CompletableViewModels to Kotlin 6 years ago
Alex Baker 919ba42098 Convert account settings activities to Kotlin 6 years ago
Alex Baker eb38972ac2 Use coroutines in TaskDeleter 6 years ago
Alex Baker c5503331c1 Move RepeatConfirmationRcvr to TaskListFragment 6 years ago
Alex Baker ed70e60c55 Use awaitAll extension 6 years ago
Alex Baker 3cf2c76f8a Use coroutines in EteSynchronizer 6 years ago
Alex Baker 378580b1e8 Convert EteSynchronizer to Kotlin 6 years ago
Alex Baker 5658fca41f Use coroutines in CaldavSynchronizer 6 years ago
Alex Baker e2c897e43c Convert CaldavSynchronizer to Kotlin 6 years ago
Alex Baker 2454757b24 Use coroutines in GoogleTaskSynchronizer 6 years ago
Alex Baker b7b8d1667b Convert GtasksInvoker to Kotlin 6 years ago
Alex Baker 90571eca35 Convert GoogleTaskSynchronizer to Kotlin 6 years ago
Alex Baker 0146cd5766 Convert ShareLinkActivity to Kotlin 6 years ago
Alex Baker 949d9af9d8 Fix compile 6 years ago
Alex Baker 09e4bee454 BaseWorker extends CoroutineWorker 6 years ago
Alex Baker be63596e94 Convert DragAndDropDiffer.submitList to coroutines 6 years ago
Alex Baker 4dfb414374 Use coroutines in drawer customization 6 years ago
Alex Baker 94cc4bf572 Use coroutines in preferences 6 years ago
Alex Baker a89580577b Use coroutines in date time picker 6 years ago
Alex Baker 108c1f284b Update task and back stack behavior 6 years ago
Alex Baker d795f1f6d6 Add intent debug info 6 years ago
Alex Baker e01d5c87ca Don't read intent when relaunching from history 6 years ago
Alex Baker e2cd5c8619 Update translucent dialog theme 6 years ago
Alex Baker 2408a1e6c5 Fix notification intent flags 6 years ago
Alex Baker 2027ab6858 Fix snooze intent flags 6 years ago
Alex Baker fc5e3be99a Exclude filter selection dialog from recents 6 years ago
Alex Baker 0c3c10a66a Add toggle for runBlocking crash 6 years ago
Alex Baker 7e1a1b22d3 Remove TaskEditActivity 6 years ago
Alex Baker 43814b0810 Move noncancellable context to save 6 years ago
Alex Baker 0226440833 Create edit fragments off main thread 6 years ago
Alex Baker 275369c807 Use coroutines in widget 6 years ago
Alex Baker d550063114 Remove unused dao methods 6 years ago
Alex Baker 22b2d090de Update dependencies and licenses 6 years ago
Alex Baker f8c06fdc07 Use coroutines in task adapters 6 years ago
Alex Baker b394251afc Convert ScrollableViewsFactory to Kotlin 6 years ago
Alex Baker 8487526171 Convert SubtasksHelper to Kotlin 6 years ago
Alex Baker 3d917fda62 Convert SubtasksFilterUpdater to Kotlin 6 years ago
Alex Baker 5879774905 Use coroutines in notification preferences 6 years ago
Alex Baker 9b4ccd5137 Convert BuiltInFilterExposer to Kotlin 6 years ago
Alex Baker a2776b960e Make runBlocking crash when used on main thread 6 years ago
Alex Baker e4b2dc932e Use coroutines in TaskEditActivity and UriHandler 6 years ago
Alex Baker 6debb8b0ab Fix task mover tests 6 years ago
Alex Baker 990003da66 Use coroutines in task mover 6 years ago
Alex Baker f4ad55b42d Use coroutines in task completer 6 years ago
Alex Baker 1fa17583c0 Scope task list view model to task list fragment 6 years ago
Alex Baker 9dd479744f Allow null parents in updatePosition 6 years ago
Alex Baker 9ec376ac01 Merge tag '9.7.3' into main 6 years ago
Alex Baker 8e17843ace Handle empty google task remote parent strings 6 years ago
Alex Baker a73b716419 Add TaskEditViewModel 6 years ago
J. Lavoie 3cb802a801
Translated using Weblate (Italian)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
6 years ago
J. Lavoie 649c9a578d
Translated using Weblate (French)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
6 years ago
J. Lavoie 9970816503
Translated using Weblate (Finnish)
Currently translated at 97.7% (569 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fi/
6 years ago
C. Rüdinger 89f37150b3
Translated using Weblate (German)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 years ago
Radek Řehořek 72b03fdbc4
Translated using Weblate (Czech)
Currently translated at 88.3% (514 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
6 years ago
Alex Baker bdba64f4fa Fix more string formatters 6 years ago
Alex Baker b59b6af767 Fix string formatters 6 years ago
Athithya ac69596295 Translated using Weblate (Tamil)
Currently translated at 91.2% (531 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
6 years ago
C. Rüdinger 531677564d Translated using Weblate (German)
Currently translated at 99.6% (580 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 years ago
Alex Baker 85e8cb49cc Use coroutines in filter provider 6 years ago
Alex Baker 2c57d06980 Add fragment kotlin extensions 6 years ago
Alex Baker c36649fb54 Use coroutines in preference fragments 6 years ago
Alex Baker 443ac9e9e5 Remove coroutines from fragment setup 6 years ago
Alex Baker 964dff6b76 Convert TaskEditControlSetFragmentMgr to Kotlin 6 years ago
Alex Baker 067b8e4ad8 Fix hiding comment bar 6 years ago
Alex Baker 1846559fd7 Use coroutines in task edit fragment 6 years ago
Alex Baker 29de2d0d53 Convert TaskEditFragment to Kotlin 6 years ago
Alex Baker 9d91346ddf Convert WidgetClickActivity to Kotlin 6 years ago
Alex Baker 012663eebe Create views in suspending function 6 years ago
Vít Skalický 2b6af062f6 Translated using Weblate (Czech)
Currently translated at 87.6% (510 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
6 years ago
Radek Řehořek 11b1e33708 Translated using Weblate (Czech)
Currently translated at 87.6% (510 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
6 years ago
Balaji 88f18900d8 Translated using Weblate (Tamil)
Currently translated at 31.6% (184 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
6 years ago
Athithya df3ffe1bfe Translated using Weblate (Tamil)
Currently translated at 31.6% (184 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
6 years ago
C. Rüdinger 21d608b98c Translated using Weblate (German)
Currently translated at 99.6% (580 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 years ago
Balaji 0127f5cd9a Translated using Weblate (Tamil)
Currently translated at 18.3% (107 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
6 years ago
Athithya 048bf18250 Translated using Weblate (Tamil)
Currently translated at 18.3% (107 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/ta/
6 years ago
Clyde Johanson c843034548 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (581 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
6 years ago
C. Rüdinger 902e6a6494 Translated using Weblate (German)
Currently translated at 99.6% (580 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 years ago
Alex Baker 968ec62acb Make hasChanges and apply suspending 6 years ago
Alex Baker 3418ea7f3c Use coroutines in TaskListFragment 6 years ago
Alex Baker 55c8be04d4 Move viewholder callbacks to task list fragment 6 years ago
Alex Baker 236f9ae0e0 Use coroutines in MainActivity 6 years ago
Alex Baker a4c3023c1a Allow null parents from Google Tasks 6 years ago
Alex Baker 205295a59a Tighten access on some dao methods 6 years ago
Alex Baker f6dd3a63e6 Blocking daos delegate to suspending daos 6 years ago
Alex Baker 122a2c2170 Make daos suspending 6 years ago
Alex Baker 72e59bdcd0 Move RepeatTaskHelperTest to jvm tests 6 years ago
Alex Baker f33ecdda7d Create blocking room daos 6 years ago
Alex Baker ad92b68b32 Move debug key to main 6 years ago
Alex Baker 6d89542f6e Convert GtasksLoginActivity to Kotlin 6 years ago
Alex Baker 301ec9223a Convert AlarmService to Kotlin 6 years ago
Alex Baker 4a96040f1f Add debug option for allowing queries on main 6 years ago
Alex Baker e6d9e664ce Use coroutines for play services check 6 years ago
Alex Baker 76eafc0985 Convert ShortcutConfigActivity to Kotlin 6 years ago
Alex Baker de3e23d9d7 Rename fetch to fetchBlocking, add suspend fetch 6 years ago
Alex Baker 2ec60748d3 Use coroutines in TaskListViewModel 6 years ago
Balaji 0c42392c74
Added translation using Weblate (Tamil) 6 years ago
Osoitz a7550545cc Translated using Weblate (Basque)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
6 years ago
Emin Tufan Çetin 861e7866b7 Translated using Weblate (Turkish)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
6 years ago
Alex Baker 5410b21f6c Remove mapbox-android-sdk from Google Play build 6 years ago
Alex Baker 969feac093 Fix NPE in paged list query 6 years ago
Alex Baker 1a4f09a217 Merge tag '9.7.2' into main 6 years ago
Osoitz 140c1db4e0 Translated using Weblate (Basque)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
6 years ago
Eric b638469ee7 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
6 years ago
Frits van Bommel c81829963c Translated using Weblate (Dutch)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
6 years ago
Pierfrancesco Passerini d0d088f8f8 Translated using Weblate (Italian)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
6 years ago
Kaci 82f8fd2500 Translated using Weblate (Hungarian)
Currently translated at 100.0% (583 of 583 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
6 years ago
Alex Baker 5cf0ed4942 Remove work-rxjava2 6 years ago
Alex Baker e27bdba048 Mark TaskListMetadata id as transient 6 years ago
Alex Baker 3cfd1da06a Fix LeakCanary config 6 years ago
Alex Baker 906a6618a8 Add TaskListMetadata to backup file 6 years ago
Alex Baker 9d7df21deb Convert json import/export to Kotlin 6 years ago
Alex Baker 6d023fd700
Update badges 6 years ago
Alex Baker 8e72175d5a Fix test 6 years ago
Alex Baker e4342224df Fix license name 6 years ago
Alex Baker 106f4d64a3 Update third party licenses 6 years ago
Osoitz c439de817f Translated using Weblate (Basque)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/eu/
6 years ago
Emin Tufan Çetin 92c0e0fafd Translated using Weblate (Turkish)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
6 years ago
C. Rüdinger 5810b9b277 Translated using Weblate (German)
Currently translated at 99.8% (581 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 years ago
Vít Skalický e7072dcb50 Translated using Weblate (Czech)
Currently translated at 87.6% (510 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/cs/
6 years ago
Alex Baker ae09d01342 Merge tag '9.7.1' 6 years ago
Alex Baker b3d3e1d2e9 Merge tag '9.7.1' 6 years ago
Alex Baker 15c5abb010 Remove extra startActivity 6 years ago
Alex Baker e6dfbea4cb Add TasksContentProvider 6 years ago
Alex Baker 609a8f8f23 Move notifyChange to RefreshReceiver 6 years ago
Alex Baker 1a0697c2b0 Add ContentProviderDao 6 years ago
Alex Baker f0bf3713e6 Update tasks read permission 6 years ago
Alex Baker e94d230d1b Convert Astrid2TaskProvider to Kotlin 6 years ago
Alex Baker 94787c7d1d Mark Astrid2TaskProvider permission as dangerous 6 years ago
Alex Baker 802b824b09 Log use of Astrid2TaskProvider 6 years ago
Alex Baker d505426e5d Use applicationId for Astrid2TaskProvider perms 6 years ago
Alex Baker 3f47063941 Remove extra authority from Astrid2TaskProvider 6 years ago
Alex Baker 3843212164 Fix crash in release build 6 years ago
Alex Baker 98d7d7959b Fix ListFragment.hasChanges 6 years ago
Alex Baker 52952e22cd Migrate to Hilt 6 years ago
Pierfrancesco Passerini da1a69760f
Translated using Weblate (Italian)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
6 years ago
Pierfrancesco Passerini 40a86cc8ff Translated using Weblate (Italian)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/it/
6 years ago
Eric accb971ffe Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/zh_Hans/
6 years ago
Emin Tufan Çetin e5649ebf91 Translated using Weblate (Turkish)
Currently translated at 99.6% (580 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/tr/
6 years ago
Frits van Bommel b75b1a3f22 Translated using Weblate (Dutch)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nl/
6 years ago
Allan Nordhøy 202e1d458f Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.5% (527 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/nb_NO/
6 years ago
Kaci e5ecf414b7 Translated using Weblate (Hungarian)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/hu/
6 years ago
Florian Dubois 9f86baf578 Translated using Weblate (French)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/fr/
6 years ago
Florian Dubois bb8c3a5c8c Translated using Weblate (Spanish)
Currently translated at 100.0% (582 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/es/
6 years ago
C. Rüdinger b726f17c53 Translated using Weblate (German)
Currently translated at 99.8% (581 of 582 strings)

Translation: Tasks.org/Android
Translate-URL: https://hosted.weblate.org/projects/tasks/android/de/
6 years ago
Alex Baker 81947d5f87 Suppress unused param warnings in generic build 6 years ago
Robert Boyd III 35dd189c05
Fix unintuitive sorting edge cases 6 years ago
Alex Baker c3896a4ab1 Convert injected view models to Kotlin 6 years ago
Alex Baker 641b60be9b Convert workers to Kotlin 6 years ago
Alex Baker cde5bcfb87 Remove empty Dagger components 6 years ago
Alex Baker b1e0ab6d67 Rename ActivityScope to ActivityScoped 6 years ago
Alex Baker c9407d3ef8 Replace ApplicationScope with Singleton 6 years ago
Alex Baker 4a39b7e9ee Replace 'Sync' with 'Lists' in beast mode 6 years ago
Alex Baker 1fa3c73365 Fix generic compile 6 years ago
Alex Baker 9bf15c1490 Restore and rename ForActivity and ForApplication 6 years ago
Alex Baker 6d9b949e37 Remove @ForActivity annotation 6 years ago
Alex Baker 999e5aab7a Remove @ForApplication annotation 6 years ago
Alex Baker 85367a6022 Update LeakCanary and Flipper 6 years ago

@ -0,0 +1,4 @@
github: abaker
liberapay: tasks
patreon: tasks
custom: tasks.org/donate

@ -0,0 +1,52 @@
name: Assemble bundle
on:
push:
branches:
- main
workflow_dispatch:
workflow_call:
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@v6
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- 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@v6
with:
name: release
path: |
app/build/outputs/**
wear/build/outputs/**

@ -0,0 +1,96 @@
name: Run automated checks
on:
pull_request:
workflow_call:
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Lint checks
run: bundle exec fastlane lint
- name: Archive lint reports
uses: actions/upload-artifact@v6
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@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- 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@v6
if: ${{ always() }}
with:
name: test-reports-${{ matrix.flavor }}
path: app/build/reports/**

@ -0,0 +1,47 @@
name: Update Dependency Diff
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
- main
paths:
- 'gradle/libs.versions.toml'
pull_request:
paths:
- 'gradle/libs.versions.toml'
workflow_dispatch:
jobs:
update-deps:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Update dependency diffs
run: ./update_dependency_diff
- name: Commit changes
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add deps_*.txt
git diff --staged --quiet || git commit -m "Update dependency diffs"
git push

@ -0,0 +1,32 @@
name: Deploy
on:
workflow_dispatch:
permissions:
contents: read
env:
FASTLANE: ${{ secrets.FASTLANE }}
jobs:
bundle:
uses: ./.github/workflows/bundle.yml
secrets: inherit
deploy:
runs-on: ubuntu-latest
needs: [ bundle ]
steps:
- uses: actions/checkout@v6
- name: Fastlane key
run: |
echo "$FASTLANE" > ./fastlane.json
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- uses: actions/download-artifact@v7
with:
name: release
path: .
- name: Deploy
run: bundle exec fastlane deploy

3
.gitignore vendored

@ -1,3 +1,4 @@
.kotlin
.idea
*.iml
.gradle
@ -9,3 +10,5 @@ local.properties
Thumbs.db
/captures/
/fastlane/report.xml
/compose-metrics/
.DS_Store

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeSettings">
<configurations>
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
</configurations>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

@ -0,0 +1 @@
3.4.8

@ -0,0 +1,70 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="wear" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false" singleton="true">
<module name="tasks.Tasks.wear.main" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="CLEAR_APP_STORAGE" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="RESTORE_ENABLED" value="false" />
<option name="RESTORE_FILE" value="" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Hybrid>
<Java>
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Java>
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

@ -1,99 +0,0 @@
# https://github.com/andstatus/todoagenda/blob/aa2bc56effa379e145eecb104cc5bac33975b7aa/.travis.yml
# Based on https://travis-ci.org/ankidroid/Anki-Android/builds/624268367
# See also https://travis-ci.community/t/is-android-28-emulator-supported/1718/6
sudo: true
language: bash
# ignored on non-linux platforms, but bionic is required for nested virtualization
dist: bionic
stages:
- install
- test
- cache
env:
global:
- COMPILE_API=29
- ANDROID_BUILD_TOOLS=29.0.2
- ABI=x86_64
- ADB_INSTALL_TIMEOUT=8
- ANDROID_HOME=${HOME}/android-sdk
- ANDROID_TOOLS_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
- EMU_FLAVOR=default # use google_apis flavor if no default flavor emulator
- GRAVIS="https://raw.githubusercontent.com/DanySK/Gravis-CI/master/"
- JDK="1.8"
- TOOLS=${ANDROID_HOME}/tools
# PATH order is incredibly important. e.g. the 'emulator' script exists in more than one place!
- PATH=${ANDROID_HOME}:${ANDROID_HOME}/emulator:${TOOLS}:${TOOLS}/bin:${ANDROID_HOME}/platform-tools:${PATH}
matrix:
- API=29
before_install:
# This section may run on all platforms, and may run for unit tests or for coverage finalization
# It should not make assumptions about os platform or desired tool installation
# Set up JDK 8 for Android SDK - Java is universally needed: codacy, unit tests, emulators
- curl "${GRAVIS}.install-jdk-travis.sh" --output ~/.install-jdk-travis.sh
- export TARGET_JDK="${JDK}"
- JDK="1.8"
- source ~/.install-jdk-travis.sh
# Set up Android SDK - this is needed everywhere but coverage finalization, so toggle on that
- wget -q "${ANDROID_TOOLS_URL}" -O android-sdk-tools.zip
- unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}
- rm android-sdk-tools.zip
- mkdir ~/.android # avoid harmless sdkmanager warning
- echo 'count=0' > ~/.android/repositories.cfg # avoid harmless sdkmanager warning
- yes | sdkmanager --licenses >/dev/null # accept all sdkmanager warnings
- echo y | sdkmanager --no_https "platform-tools" >/dev/null
- echo y | sdkmanager --no_https "tools" >/dev/null # A second time per Travis docs, gets latest versions
- echo y | sdkmanager --no_https "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null # Implicit gradle dependency - gradle drives changes
- echo y | sdkmanager --no_https "platforms;android-${COMPILE_API}" >/dev/null # We need the API of the current compileSdkVersion from gradle.properties
install:
# In our setup, install only runs on matrix entries we want full emulator tests on
# That only happens currently on linux, so this section can assume linux + emulator is desired
# Download required emulator tools
- echo y | sdkmanager --no_https "platforms;android-$API" >/dev/null # We need the API of the emulator we will run
- echo y | sdkmanager --no_https "emulator" >/dev/null
- echo y | sdkmanager --no_https "system-images;android-$API;$EMU_FLAVOR;$ABI" >/dev/null # install our emulator
# Set up KVM on linux for hardware acceleration. Manually here so it only happens for emulator tests, takes ~30s
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends install bridge-utils libpulse0 libvirt-bin qemu-kvm virtinst ubuntu-vm-builder
- sudo adduser $USER libvirt
- sudo adduser $USER kvm
# Create an Android emulator
- echo no | avdmanager create avd --force -n test -k "system-images;android-$API;$EMU_FLAVOR;$ABI" -c 10M
- |
EMU_PARAMS="-verbose -no-snapshot -no-window -camera-back none -camera-front none -selinux permissive -qemu -m 2048"
EMU_COMMAND="emulator"
# This double "sudo" monstrosity is used to have Travis execute the
# emulator with its new group permissions and help preserve the rule
# of least privilege.
sudo -E sudo -u $USER -E bash -c "${ANDROID_HOME}/emulator/${EMU_COMMAND} -avd test ${AUDIO} ${EMU_PARAMS} &"
# Wait for emulator to be ready
- ./.wait_for_emulator.sh
- adb shell input keyevent 82 &
# Switch back to our target JDK version to build and run tests
- JDK="${TARGET_JDK}"
- source ~/.install-jdk-travis.sh
script:
- ./gradlew :app:lintGoogleplayRelease
- ./gradlew :app:jacocoTestReportGoogleplayDebug
- ./gradlew -Pcoverage :app:createGoogleplayDebugAndroidTestCoverageReport
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- curl "${GRAVIS}.clean_gradle_cache.sh" --output ~/.clean_gradle_cache.sh
- bash ~/.clean_gradle_cache.sh > /dev/null
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
after_success:
- bash <(curl -s https://codecov.io/bash)

@ -1,24 +0,0 @@
#!/bin/bash
set +e
bootanim=""
failcounter=0
timeout_in_sec=600 # 10 minutes
until [[ "$bootanim" =~ "stopped" ]]; do
bootanim=`adb -e shell getprop init.svc.bootanim 2>&1 &`
if [[ "$bootanim" =~ "device not found" || "$bootanim" =~ "device offline"
|| "$bootanim" =~ "running" || "$bootanim" =~ "error: no emulators found" ]]; then
let "failcounter += 1"
echo "Waiting for emulator to start"
if [[ $failcounter -gt timeout_in_sec ]]; then
echo "Timeout ($timeout_in_sec seconds) reached; failed to start emulator"
exit 1
fi
fi
sleep 1
done
echo "Emulator is ready"

File diff suppressed because it is too large Load Diff

@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at github@tasks.org. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

@ -0,0 +1,34 @@
### Translation
You can translate Tasks using [Weblate](https://hosted.weblate.org/projects/tasks/android). To get started, register a new account or login with your GitHub account if you have one.
### Opening issues
Before opening an issue, please make sure that your issue:
- is not a duplicate (i.e. it has not been reported before, closed or open)
- has not been fixed
- is in English (issues in a language other than English will be closed unless someone translates them)
- does not contain multiple feature requests/bug reports. Please open a separate issue for each one.
### Code contribution
#### To get started with development:
1. [Fork](https://help.github.com/articles/fork-a-repo/) and [clone](https://help.github.com/articles/cloning-a-repository/) the repository
2. Install and launch [Android Studio's canary build](https://developer.android.com/studio/preview) (Tasks depends on some bleeding-edge features of the canary build, but in the future when those features are stabilized, you will be able to use the stable release of Android Studio)
3. Select `File > Open`, select the Tasks directory, and accept prompts to install missing SDK components
#### Set up Mapbox
1. Register at [mapbox.com](https://www.mapbox.com)
2. Add `tasks_mapbox_key_debug="<your_api_key>"` to your [`gradle.properties`](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties) file. You can create an access token or use your [default public token](https://docs.mapbox.com/help/glossary/access-token/#default-public-token)
#### Set up Google Tasks and Google Drive
1. Register at [cloud.google.com](https://cloud.google.com)
2. Enable [Google Tasks API](https://console.cloud.google.com/apis/library/tasks.googleapis.com) and [Google Drive API](https://console.cloud.google.com/apis/library/drive.googleapis.com)
3. [Create android authorization credentials](https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred)
#### Set up Google Maps and Google Places
1. Register at [cloud.google.com](https://cloud.google.com)
2. Enable [Google Maps SDK](https://console.cloud.google.com/apis/library/maps-android-backend.googleapis.com) and [Google Places API](https://console.cloud.google.com/apis/library/places-backend.googleapis.com)
3. [Set up an API key](https://cloud.google.com/video-intelligence/docs/common/auth#set_up_an_api_key)
4. Add `tasks_google_key_debug="<your_api_key>"` to your [`gradle.properties`](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties) file
5. Select `Build > Select Build Variant` and choose the `googleplay` variant

@ -1,3 +1,4 @@
source "https://rubygems.org"
gem "fastlane"
gem "abbrev"

@ -1,161 +1,230 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
CFPropertyList (3.0.7)
base64
nkf
rexml
abbrev (0.1.2)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
artifactory (3.0.17)
atomos (0.1.3)
babosa (1.0.3)
claide (1.0.3)
aws-eventstream (1.4.0)
aws-partitions (1.1196.0)
aws-sdk-core (3.240.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
bigdecimal
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.118.0)
aws-sdk-core (~> 3, >= 3.239.1)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.208.0)
aws-sdk-core (~> 3, >= 3.234.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.12.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.3.0)
bigdecimal (4.0.1)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander-fastlane (4.4.6)
highline (~> 1.7.2)
declarative (0.0.10)
declarative-option (0.1.0)
digest-crc (0.4.1)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.5)
emoji_regex (1.0.1)
excon (0.72.0)
faraday (0.17.3)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
commander (4.6.0)
highline (~> 2.0.0)
declarative (0.0.20)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
faraday_middleware (0.13.1)
faraday (>= 0.7.4, < 1.0)
fastimage (2.1.7)
fastlane (2.141.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.1)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.1.1)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.0)
fastlane (2.228.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
babosa (>= 1.0.2, < 2.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
commander-fastlane (>= 4.4.6, < 5.0.0)
colored (~> 1.2)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 2.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 0.17)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 0.13.1)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-api-client (>= 0.29.2, < 0.37.0)
google-cloud-storage (>= 1.15.0, < 2.0.0)
highline (>= 1.7.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (~> 2.1.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multi_xml (~> 0.5)
multipart-post (~> 2.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
public_suffix (~> 2.0.0)
rubyzip (>= 1.3.0, < 2.0.0)
security (= 0.1.3)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.5)
simctl (~> 1.6.3)
slack-notifier (>= 2.0.0, < 3.0.0)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
xcpretty (~> 0.4.1)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
gh_inspector (1.1.3)
google-api-client (0.36.4)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.9)
httpclient (>= 2.8.1, < 3.0)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
signet (~> 0.12)
google-cloud-core (1.5.0)
google-cloud-env (~> 1.0)
retriable (>= 2.0, < 4.a)
rexml
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.8.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.3.0)
faraday (~> 0.11)
google-cloud-errors (1.0.0)
google-cloud-storage (1.25.1)
addressable (~> 2.5)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.5.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-api-client (~> 0.33)
google-cloud-core (~> 1.2)
googleauth (~> 0.9)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (0.10.0)
faraday (~> 0.12)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (~> 0.12)
highline (1.7.10)
http-cookie (1.0.3)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.8.3)
json (2.3.0)
jwt (2.1.0)
memoist (0.16.2)
mini_magick (4.10.1)
mini_mime (1.0.2)
multi_json (1.14.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
nanaimo (0.2.6)
naturally (2.2.0)
os (1.0.1)
plist (3.5.0)
public_suffix (2.0.5)
representable (3.0.4)
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.12.2)
jwt (2.10.2)
base64
logger (1.7.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.3.0)
nkf (0.2.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.2)
public_suffix (6.0.2)
rake (13.3.0)
representable (3.2.0)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rouge (2.0.7)
rubyzip (1.3.0)
security (0.1.3)
signet (0.12.0)
addressable (~> 2.3)
faraday (~> 0.9)
rexml (3.4.2)
rouge (3.28.0)
ruby2_keywords (0.0.5)
rubyzip (2.4.1)
security (0.1.5)
signet (0.20.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.8)
simctl (1.6.10)
CFPropertyList
naturally
slack-notifier (2.3.2)
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.7.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.6)
unicode-display_width (1.6.1)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.15.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.6)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.0)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.1)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
DEPENDENCIES
abbrev
fastlane
BUNDLED WITH
2.1.2
2.6.9

@ -11,29 +11,18 @@ Please visit [tasks.org](https://tasks.org) for end user documentation and suppo
---
[![Donate with Bitcoin](https://img.shields.io/badge/bitcoin-donate-yellow.svg?logo=bitcoin)](https://en.cryptobadges.io/donate/136mW34jW3cmZKhxuTDn3tHXMRwbbaRU8s)
[![Donate with Bitcoin](https://img.shields.io/badge/bitcoin-donate-yellow.svg?logo=bitcoin)](https://tasks.org/docs/donate)
[![PayPal donate button](https://img.shields.io/badge/paypal-donate-yellow.svg?logo=paypal)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=alex@tasks.org)
[![Liberapay donate button](https://img.shields.io/liberapay/receives/tasks.svg?logo=liberapay)](https://liberapay.com/tasks/donate)
[![Build Status](https://travis-ci.org/tasks/tasks.svg?branch=master)](https://travis-ci.org/tasks/tasks) [![weblate](https://hosted.weblate.org/widgets/tasks/-/android/svg-badge.svg)](https://hosted.weblate.org/engage/tasks/?utm_source=widget) [![codecov](https://codecov.io/gh/tasks/tasks/branch/master/graph/badge.svg)](https://codecov.io/gh/tasks/tasks) [![codebeat badge](https://codebeat.co/badges/6f2274f0-1bd3-4d6b-9151-d336c5545d05)](https://codebeat.co/projects/github-com-tasks-tasks-master)
[![build](https://github.com/tasks/tasks/actions/workflows/bundle.yml/badge.svg)](https://github.com/tasks/tasks/actions/workflows/bundle.yml) [![weblate](https://hosted.weblate.org/widgets/tasks/-/android/svg-badge.svg)](https://hosted.weblate.org/engage/tasks/?utm_source=widget)
#### To get started with development:
1. [Fork](https://help.github.com/articles/fork-a-repo/) and [clone](https://help.github.com/articles/cloning-a-repository/) the repository
2. Install and launch [Android Studio](https://developer.android.com/studio/index.html)
3. Select `File > Open`, select the Tasks directory, and accept prompts to install missing SDK components
### Contributing
#### Set up Mapbox
1. Register at [mapbox.com](https://www.mapbox.com)
2. Add `tasks_mapbox_key_debug="<your_api_key>"` to your [`gradle.properties`](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties) file. You can create an access token or use your [default public token](https://docs.mapbox.com/help/glossary/access-token/#default-public-token)
Contributions are always welcome! Whether translations, code changes, bug reports, feature requests, or otherwise, your help is appreciated. To get started, take a look at [CONTRIBUTING.md](CONTRIBUTING.md).
#### Set up Google Tasks and Google Drive
1. Register at [cloud.google.com](https://cloud.google.com)
2. Enable [Google Tasks API](https://console.cloud.google.com/apis/library/tasks.googleapis.com) and [Google Drive API](https://console.cloud.google.com/apis/library/drive.googleapis.com)
3. [Create android authorization credentials](https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred)
### Communication
#### Set up Google Maps and Google Places
1. Register at [cloud.google.com](https://cloud.google.com)
2. Enable [Google Maps SDK](https://console.cloud.google.com/apis/library/maps-android-backend.googleapis.com) and [Google Places API](https://console.cloud.google.com/apis/library/places-backend.googleapis.com)
3. [Set up an API key](https://cloud.google.com/video-intelligence/docs/common/auth#set_up_an_api_key)
4. Add `tasks_google_key_debug="<your_api_key>"` to your [`gradle.properties`](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties) file
5. Select `Build > Select Build Variant` and choose the `googleplay` variant
You can submit questions to [GitHub Discussions](https://github.com/tasks/tasks/discussions).
If you have a suggestion or want to report a bug, please see [CONTRIBUTING.md](CONTRIBUTING.md).

@ -0,0 +1,579 @@
[Newer releases](https://github.com/tasks/tasks/blob/main/CHANGELOG.md)
### 9.7.3 (2020-07-07)
* Fix Google Task bugs
### 9.7.2 (2020-06-22)
* Downgrade Mapbox SDK to remove non-free library (F-Droid only)
### 9.7.1 (2020-06-19)
* Fix crash on backup import
* Fix CalDAV/EteSync subtask move bug
### 9.7 (2020-06-12)
* Added '☰ > Manage lists'
* Drag and drop to rearrange the drawer
* Tap to edit or delete a list
* Display 2 additional snooze options - @rangzen
### 9.6 (2020-06-06)
* Add support for offline lists. Offline lists support manual ordering and infinite-depth subtasks
* Rename 'My order' to 'Astrid manual sorting' for 'My Tasks', 'Today', and tags
* Add '⚙ > Look and feel > Disable sort groups'
* Add '⚙ > Look and feel > Open last viewed list'
* Add '⚙ > Look and feel > Chips' toggles for subtasks, places, lists, and tags
* Add '⚙ > Navigation drawer > Lists'
* Add '⚙ > Task defaults > Default list'
* Add '⚙ > Task defaults > New tasks on top'
* Add '⚙ > Advanced > Astrid manual sorting'
* Fix preference reset button
### 9.5 (2020-06-03)
* Drag and drop to change subtasks in all list types
* Drag and drop to reprioritize or reschedule tasks while sorting by due date
or priority
* Bug fixes
### 9.4.1 (2020-06-01)
* Add 'Tasks settings > Advanced > Improve performance' toggle
* Bug fixes
### 9.4 (2020-05-27)
* Add collapsible group headers when sorting by due date, priority, created, or modified
### 9.3.1 (2020-05-26)
* Fix offline subtasks
### 9.3 (2020-05-22)
* Add manual sorting support for CalDAV and EteSync
### 9.2 (2020-05-13)
* 'New task' quick settings tile (Android 7+)
* Search results match place names and addresses, caldav list names, google task list names, and comments
* Fix duplicated search results
* Began migrating codebase to Kotlin
### 9.1 (2020-05-04)
* 'New task' launcher shortcut (Android 7.1+)
* Add option to disable subtask chip on widget
### 9.0 (2020-05-03)
* Show What's New after update
* Collapsible subtasks enabled by default
* 20 new icons
* Show subtask chip even if list chips are disabled
* Indent subtasks in 'Share' output
* Don't trigger location reminders for snoozed or hidden tasks
* Minimum supported version is now Android 6.0
### 8.11 (2020-04-27)
* Edit existing custom filters
* Drag and drop to rearrange filter criteria
* Swipe to delete filter criteria
* Tap on filter criteria to choose filter operator
* Offer additional built-in filters
* Add sort by creation time
* Choose any day as start of week
### 8.10 (2020-04-20)
* New widget features
* Menu button to quickly change list
* Expand and collapse subtasks
* Click on due date to reschedule
* Access widget settings from main app preferences
* Show description
* Show hidden task indicators
* New widget settings
* Row spacing: default, compact, none
* Due date: after title, below title, or hidden
* Configure header, row, and footer opacity
* Configure footer click behavior
* Show full task title
* Show full description
* Hide dividers
* Improve widget touch targets
* Expand/collapse Google Task subtasks in 'My order' mode
* Fix bug when changing sort order to/from 'My order'
* Fix crash when switching to 'My order' list with subtasks disabled
### 8.9.2 (2020-04-10)
* Fix 'Add reminder' layout issues
* Fix move between EteSync lists
* Accept date time changes when dismissing dialog
* Improve date time picker behavior in landscape mode
### 8.9.1 (2020-04-08)
* Add option to always hide check button
* Hide check button for new tasks
* Rearrange multi-select buttons
* Allow more space for time buttons in date time picker
* Fix priority button layout on smaller devices
* Fix clicking on hidden task titles
* Fix tag picker checkbox tint on Android 4.4
* Fix EteSync crash on malformed iCalendar data
### 8.9 (2020-04-06)
* Add 'Select all' option to multi-select menu
* Add 'Share' to menu and multi-select menu
* Display 'Calendar event created' snackbar after creating a calendar event
### 8.8 (2020-04-01)
* New bottom sheet due date picker
* Shortcuts and calendar displayed together (Android 6+)
* Click on due date in task list to reschedule
* Option to autoclose due date picker after selecting a date or time
* Redesigned title in edit screen
* 'Discard' in overflow menu when 'Back button saves task' enabled
* Add preference for linkifying edit screen
* Updated date and time formatting
* Minimum supported version is now Android 4.4
* Custom backup/attachment directory requires Android 5+
### 8.7.1 (2020-03-31)
* Fix multi-account Google Task synchronization
### 8.7 (2020-03-19)
* Places are now lists
* Rename a place
* Assign an icon and color to a place
* Add new navigation drawer settings
* Option to remove filters, tags, and places from drawer
* Option to hide unused tags and places in drawer
### 8.6.1 (2020-03-19)
* Fix crash on startup
### 8.6 (2020-03-17)
* Expand and collapse navigation drawer groups
### 8.5 (2020-03-13)
* Synchronize locations with CalDAV and EteSync
* Fix crash when clearing completed from recently modified filter
### 8.4 (2020-03-11)
* New chip configuration options
* Outlined or filled
* Text and icon, text only, or icon only
* Add option to disable color desaturation
* Fix EteSync shared lists
* Google Task sync requires Android 4.4+
### 8.3 (2020-03-08)
* Synchronize CalDAV and EteSync colors
* Rename CalDAV and EteSync lists
* Update Turkish translations - @emintufan
### 8.2.1 (2020-03-07)
* Increase default chip text contrast
* New purchase activity
* Fix dividers on Android 4.x
### 8.2 (2020-03-04)
* Choose your own app and widget colors with a color wheel
* Dark theme now free for all
* New 'System default' theme
* New outlined chip style
* Dark theme is now darker
* Light theme is now lighter
* Desaturate theme colors in dark mode
* Improve dialog theming consistency
* Bug fixes
### 8.1 (2020-02-21)
* Updated app settings screen
### 8.0.1 (2020-02-16)
* Fix missing sync settings on fdroid
### 8.0 (2020-02-12)
* EteSync support
### 7.8 (2020-01-24)
* Android AutoBackup integration
### 7.7 (2020-01-21)
* Add support for offline multi-level subtasks
* Update Simplified Chinese translations - @sr093906
### 7.6.1 (2020-01-17)
* Fix long press in Google Task and CalDAV lists
* Fix bug when moving multi-level CalDAV subtasks
* Preserve remote VTODO when moving CalDAV tasks
* Add Interlingua translations - @softinterlingua
### 7.6 (2020-01-10)
* Change tags with multi-select
* Fix custom filter crash on deleted tag
### 7.5 (2020-01-07)
* New tag picker
* Support self-signed SSL certificates
### 7.4.2 (2019-12-30)
* Fix Tasker plugin settings
### 7.4.1 (2019-12-27)
* Add option to enable subtasks in task list
* Performance improvements
* Ask Play Services to update security provider
* Display custom icons in tag picker
* Fix case comparison when sorting navigation drawer
### 7.4 (2019-12-16)
* Add Google Task and CalDAV subtasks from the edit screen
* 'Recently modified' shows all modifications in past 24 hours
* Fix duplicated multi-level subtask count
* Increase checkbox touch target
* Naturally order lists and filters
### 7.3.2 (2019-12-12)
* Fix slow query for subtasks
* Fix setting icon on new CalDAV list
* Fix clear completed for subtasks
* Fix crash when clearing 1000+ tasks
### 7.3.1 (2019-12-05)
* Fix crash on missing filter
### 7.3 (2019-12-03)
* Expand and collapse subtasks
### 7.2.2 (2019-12-03)
* Fix Google Task sorting
* Fix crash when deleting 500+ tasks
### 7.2.1 (2019-11-27)
* Bug fixes and minor improvements
### 7.2 (2019-11-25)
* Display Google Task and CalDAV subtasks in all lists (Android 5+)
* Remove completed tasks immediately - @creywood
### 7.1.2 (2019-11-22)
* Add CalDAV account setting for repeating tasks
* Fix CalDAV repeating tasks
* Fix Google Tasks HTTP 400 response
### 7.1.1 (2019-11-18)
* Improve subtask query performance
* Fix crash when deleting 1000+ CalDAV tasks
### 7.1 (2019-11-14)
* Display subtasks on Google Task and CalDAV widgets (Android 5+)
* Fix subtasks after backup import
* Fix chained subtask completion
### 7.0 (2019-11-12)
* Add support for CalDAV subtasks (Android 5+) - @creywood
* Display Google subtasks in all sort modes (Android 5+)
### 6.9.3 (2019-10-31)
* Fix disappearance of remotely completed recurring Google Tasks
* Fix '0 tasks' notification
* Limit to 20 active notifications due to change in Android 10
### 6.9.2 (2019-10-25)
* Fix bug forcing new Google Tasks to top
* Fix bug preventing deleted tasks from being synchronized - @creywood
### 6.9.1 (2019-10-09)
* Fix location reminders on Android 10
* Fix CalDAV time zone issue
### 6.9 (2019-09-23)
* Synchronize tags with CalDAV
* Target Android 10
* Bug fixes
### 6.8.1 (2019-08-05)
* Fix CalDAV filter migration
* Fix native date picker crash
### 6.8 (2019-07-30)
* Name your own subscription price! Upgrade, downgrade, or cancel at any time
* Choose icons for lists (requires [subscription](https://tasks.org/subscribe))
* Choose color for custom filters
* Performance improvements
* Allow duplicate CalDAV list names
* Fix duplicate tag name bug
### 6.7.3 (2019-07-16)
* Workaround for [list updated time bug](https://issuetracker.google.com/issues/136123247) in Google Tasks API
* Fix crash in CalDAV sync
### 6.7.2 (2019-07-08)
* Handle 404 errors when creating new Google Tasks
* Ignore 404 errors when deleting Google Drive files
* Don't report connection errors
### 6.7.1 (2019-07-05)
* Add location chip to task list
* Reduce chip sizes
* Accept 'send to' for more attachment types
* Synchronize multiple accounts in parallel
* Fix Google Task migration from older versions
* Fix corrupted checkbox issue
* Fix some RTL issues
### 6.7 (2019-06-13)
* Use drag and drop to indent tasks
* Add new Google Tasks to top or bottom
* Toggle hidden and completed in manually sorted Google Task lists
* Rearrange Google Tasks without a network connection
* Optional workaround for [custom order bug](https://issuetracker.google.com/issues/132432317) in Google Tasks API
* Include subtasks when moving or deleting Google Tasks
* Ignore 404 errors when fetching Google Drive folders
* Match tags in search results
* Fix stuck 'Generating notifications' notification
* Don't display sync indicator when there is no network connection
* Don't synchronize immediately after every change
* Added Estonian translations - Eraser
### 6.6.4 (2019-05-21)
* Handle [breaking change](https://issuetracker.google.com/issues/133254108) in Google Tasks API
### 6.6.3 (2019-05-08)
* Fix backup import crash
* Fix crash when refreshing purchases
* Google Tasks synchronization bug fix
### 6.6.2 (2019-04-22)
* Backup and restore preferences
* Google Task performance improvements
* Google Task and Drive support added to F-Droid and Amazon
* Add third-party licenses, changelog, and version info
* Fix backup import crash
* Fix widget bugs
### 6.6.1 (2019-04-15)
* Fix crash on devices running Android 5.1 and below
* Fix analytics opt-out
### 6.6 (2019-04-10)
* New location picker
* Choose Mapbox or Google Maps tiles
* Choose Mapbox or Google Places search
* Google Places search restricted to subscribers due to new Google Maps pricing
* Use Mapbox for reverse geocoding
* Select from previously used locations
* Dark maps
* Enable location picker in F-Droid build
* Resume support for Amazon App Store
* Fix Android Q background warning
### 6.5.6 (2019-03-27)
* Fix crash when clearing completed on a manually sorted Google Task list
* Update Ukrainian translations - nathalier
### 6.5.5 (2019-03-14)
* Bug fixes
### 6.5.4 (2019-03-11)
* Fix black screen issue
* Fix crash when task not found
### 6.5.3 (2019-02-19)
* Fix crash when upgrading from Android 7 to 8+
* Improve OneTask interoperability
* Performance improvement
### 6.5.2 (2019-02-11)
* Bug fixes
### 6.5.1 (2019-02-10)
* Bug fixes
### 6.5 (2019-02-08)
* Improve notification accuracy
* Performance improvements
* Bug fixes
* Add Tagalog translations - Topol
### 6.4.1 (2019-01-16)
* Limit number of active notifications
* Limit rate of notifications
* Fix Synology Calendar sync issue
* Fix exception when external storage is unavailable
### 6.4 (2019-01-10)
* Copy backups to Google Drive
* Improved search
* Use system file picker (Android 4.4+)
* Use system directory picker (Android 5.0+)
* Accept 'send' and 'send_multiple' actions with images
* File attachment bug fixes
### 6.3.1 (2018-11-07)
* New location row in task edit screen
* Add location departure notifications
* Set CalDAV completion percentage and status
* Bug fixes
### 6.2 (2018-10-29)
* New white theme color
* New icons
* New list and tag chips
* Linkify text when editing tasks
* Option to linkify text on task list
* Show description on task list
* Move due date next to title
* Updated hidden task visualization
* No longer require contacts permission (Oreo+)
* Dropped support for Android 4.0
### 6.1.3 (2018-10-22)
* Fix translation error
### 6.1.2 (2018-10-18)
* Remove missed call functionality due to Google Play Developer policy change
* Fix manual sort issue affecting Samsung Oreo devices
* Fix refresh issue affecting Pure Calendar Widget
* Fix memory leak
* Schedule jobs with WorkManager instead of android-job
### 6.1.1 (2018-07-20)
* Fix notification badge issues
* Allow non-SSL connections
* Allow user-defined certificate authorities
### 6.1 (2018-06-30)
* Customize launcher icon
* Customize shortcut widget icon and label
* Add custom text selection action (Android 6+)
* Target Android P
* Remove 'Tasks' from notification body
* Fix localization issues - @marmo
* Fix crash when calendar permissions are revoked
* Fix crash when opening task from widget
* Fix crash when recording audio note
* Fix crash when dismissing dialogs
* Fix crash in backup import
* Fix crash on invalid URL during CalDAV setup
* Fix crash when editing task
### 6.0.6 (2018-04-28)
* Fix crash when creating shortcuts on pre-Oreo devices
* Fix crash when Google Task or CalDAV list is missing
* Downgrade Play Services for compatibility with MicroG
### 6.0.5 (2018-04-26)
* Fix crash when deleting 1000+ tasks at once
* Fix hidden dates in date picker
* Fix crash on bad response from billing client
* Report crash when database fails to open
### 6.0.4 (2018-04-25)
* Fix crash caused by leftover Google Analytics campaign tracker
### 6.0.3 (2018-04-25)
* Fix crash when manually sorting Google Task lists
* Fix multi account Google Task sync issue
### 6.0.2 (2018-04-25)
* Fix crash caused by missing tag metadata
* Fix crash caused by missing Android System WebView
* Replace Google Analytics with Firebase Analytics
* Add Crashlytics exception reporting
### 6.0.1 (2018-04-23)
* Fix crash caused by missing Google Task metadata
### 6.0 (2018-04-23)
* Change to [annual subscription](https://tasks.org/subscribe) pricing
* [CalDAV synchronization](https://tasks.org/caldav)
* Sync with [multiple Google Task accounts](https://tasks.org/docs/google_tasks_intro.html)
* Default theme changed to blue
* Display Google Task and CalDAV chips on task list
* Display sync error icon in navigation drawer
* Move tasks between Google Task and CalDAV lists using multi-select
* Add "Don't Sync" option when choosing a Google Task or CalDAV list
* Add option to restrict background synchronization to unmetered connections
* Custom filters with due date criteria no longer set a due time of 23:59/11:59PM
* Internal improvements to notification scheduling should reduce notification delays
* Fix list animation bug

@ -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,25 +1,32 @@
@file:Suppress("UnstableApiUsage")
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
id("com.android.application")
id("checkstyle")
alias(libs.plugins.android.application)
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
kotlin("android")
kotlin("kapt")
id("com.cookpad.android.plugin.license-tools") version "1.2.2"
id("com.github.ben-manes.versions") version "0.28.0"
id("com.vanniktech.android.junit.jacoco") version "0.16.0"
id("dagger.hilt.android.plugin")
id("com.google.android.gms.oss-licenses-plugin")
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.ksp)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kotlin.compose.compiler)
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
}
}
repositories {
jcenter()
google()
maven(url = "https://jitpack.io")
composeCompiler {
enableStrongSkippingMode = true
}
android {
val commonTest = "src/commonTest/java"
sourceSets["test"].java.srcDir(commonTest)
sourceSets["androidTest"].java.srcDirs("src/androidTest/java", commonTest)
bundle {
language {
enableSplit = false
@ -29,31 +36,26 @@ android {
buildFeatures {
viewBinding = true
dataBinding = true
compose = true
buildConfig = true
}
lintOptions {
disable("InvalidPeriodicWorkRequestInterval")
lint {
lintConfig = file("lint.xml")
textOutput("stdout")
textOutput = File("stdout")
textReport = true
}
compileSdkVersion(Versions.targetSdk)
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
testApplicationId = "org.tasks.test"
applicationId = "org.tasks"
versionCode = 90703
versionName = "9.7.2"
targetSdkVersion(Versions.targetSdk)
minSdkVersion(Versions.minSdk)
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
}
}
versionCode = libs.versions.versionCode.get().toInt()
versionName = libs.versions.versionName.get()
targetSdk = libs.versions.android.targetSdk.get().toInt()
minSdk = libs.versions.android.minSdk.get().toInt()
testInstrumentationRunner = "org.tasks.TestRunner"
}
signingConfigs {
@ -71,30 +73,32 @@ android {
}
compileOptions {
coreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "1.8"
}
flavorDimensions += listOf("store")
@Suppress("LocalVariableName")
buildTypes {
getByName("debug") {
debug {
configure<CrashlyticsExtension> {
mappingFileUploadEnabled = false
}
val tasks_mapbox_key_debug: String? by project
val tasks_google_key_debug: String? by project
applicationIdSuffix = ".debug"
val tasks_caldav_url: String? by project
resValue("string", "mapbox_key", tasks_mapbox_key_debug ?: "")
resValue("string", "google_key", tasks_google_key_debug ?: "")
isTestCoverageEnabled = project.hasProperty("coverage")
resValue("string", "tasks_caldav_url", tasks_caldav_url ?: "https://caldav.tasks.org")
resValue("string", "tasks_nominatim_url", tasks_caldav_url ?: "https://nominatim.tasks.org")
resValue("string", "tasks_places_url", tasks_caldav_url ?: "https://places.tasks.org")
enableUnitTestCoverage = project.hasProperty("coverage")
}
getByName("release") {
release {
val tasks_mapbox_key: String? by project
val tasks_google_key: String? by project
resValue("string", "mapbox_key", tasks_mapbox_key ?: "")
resValue("string", "google_key", tasks_google_key ?: "")
isMinifyEnabled = true
@ -103,119 +107,186 @@ android {
}
}
flavorDimensions("store")
productFlavors {
create("generic") {
setDimension("store")
dimension = "store"
}
create("googleplay") {
setDimension("store")
isDefault = true
dimension = "store"
}
}
packaging {
resources {
excludes += setOf("META-INF/*.kotlin_module", "META-INF/INDEX.LIST")
}
}
packagingOptions {
exclude("META-INF/*.kotlin_module")
testOptions {
managedDevices {
localDevices {
create("pixel2api30") {
device = "Pixel 2"
apiLevel = 30
systemImageSource = "aosp-atd"
}
}
}
}
}
configure<CheckstyleExtension> {
configFile = project.file("google_checks.xml")
toolVersion = "8.16"
namespace = "org.tasks"
}
configurations.all {
exclude(group = "com.google.guava", module = "guava-jdk5")
exclude(group = "org.apache.httpcomponents", module = "httpclient")
exclude(group = "com.google.http-client", module = "google-http-client-apache")
exclude(group = "org.apache.httpcomponents")
exclude(group = "org.checkerframework")
exclude(group = "com.google.code.findbugs")
exclude(group = "com.google.errorprone")
exclude(group = "com.google.j2objc")
exclude(group = "com.google.http-client", module = "google-http-client-apache-v2")
exclude(group = "com.google.http-client", module = "google-http-client-jackson2")
}
val genericImplementation by configurations
val googleplayImplementation by configurations
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.0.5")
implementation("com.gitlab.bitfireAT:dav4jvm:2.1")
implementation("com.gitlab.bitfireAT:ical4android:a675c7194b")
implementation("com.gitlab.bitfireAT:cert4android:1488e39a66")
kapt("com.google.dagger:dagger-compiler:${Versions.dagger}")
implementation("com.google.dagger:dagger:${Versions.dagger}")
implementation("androidx.room:room-rxjava2:${Versions.room}")
kapt("androidx.room:room-compiler:${Versions.room}")
implementation("androidx.lifecycle:lifecycle-extensions:2.2.0")
implementation("io.reactivex.rxjava2:rxandroid:2.1.1")
implementation("androidx.paging:paging-runtime:2.1.2")
kapt("com.jakewharton:butterknife-compiler:${Versions.butterknife}")
implementation("com.jakewharton:butterknife:${Versions.butterknife}")
debugImplementation("com.facebook.flipper:flipper:${Versions.flipper}")
debugImplementation("com.facebook.flipper:flipper-network-plugin:${Versions.flipper}")
debugImplementation("com.facebook.soloader:soloader:0.9.0")
debugImplementation("com.squareup.leakcanary:leakcanary-android:${Versions.leakcanary}")
implementation("org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}")
implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.2")
implementation("com.squareup.okhttp3:okhttp:${Versions.okhttp}")
implementation("com.google.code.gson:gson:2.8.6")
implementation("com.google.android.material:material:1.1.0")
implementation("androidx.annotation:annotation:1.1.0")
implementation("androidx.constraintlayout:constraintlayout:2.0.0-beta4")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0")
implementation("androidx.preference:preference:1.1.1")
implementation("com.jakewharton.timber:timber:4.7.1")
implementation("com.google.android.apps.dashclock:dashclock-api:2.0.0")
implementation("com.twofortyfouram:android-plugin-api-for-locale:1.0.2") {
isTransitive = false
implementation(projects.data)
implementation(projects.kmp)
implementation(projects.icons)
implementation(libs.androidx.navigation)
implementation(libs.androidx.adaptive.navigation.android)
coreLibraryDesugaring(libs.desugar.jdk.libs)
implementation(libs.bitfire.dav4jvm) {
exclude(group = "junit")
exclude(group = "org.ogce", module = "xpp3")
}
implementation(libs.bitfire.ical4android) {
exclude(group = "commons-logging")
exclude(group = "org.json", module = "json")
exclude(group = "org.codehaus.groovy", module = "groovy")
exclude(group = "org.codehaus.groovy", module = "groovy-dateutil")
}
implementation(libs.bitfire.cert4android)
implementation(libs.dmfs.opentasks.provider) {
exclude("com.github.tasks.opentasks", "opentasks-contract")
}
implementation("com.rubiconproject.oss:jchronic:0.2.6") {
implementation(libs.dmfs.rfc5545.datetime)
implementation(libs.dmfs.recur)
implementation(libs.dmfs.jems)
implementation(libs.dagger.hilt)
ksp(libs.dagger.hilt.compiler)
ksp(libs.androidx.hilt.compiler)
implementation(libs.androidx.hilt.navigation)
implementation(libs.androidx.hilt.work)
implementation(libs.androidx.core.splashscreen)
implementation(libs.androidx.datastore)
implementation(libs.androidx.fragment.compose)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.room)
implementation(libs.androidx.sqlite)
implementation(libs.androidx.appcompat)
implementation(libs.iconics)
implementation(libs.markwon)
implementation(libs.markwon.editor)
implementation(libs.markwon.linkify)
implementation(libs.markwon.strikethrough)
implementation(libs.markwon.tables)
implementation(libs.markwon.tasklist)
debugImplementation(libs.leakcanary)
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation(libs.kotlin.reflect)
implementation(libs.kotlin.jdk8)
implementation(libs.kotlinx.immutable)
implementation(libs.kotlinx.serialization)
implementation(libs.okhttp)
implementation(libs.persistent.cookiejar)
implementation(libs.material)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.material3.adaptive)
implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.swiperefreshlayout)
implementation(libs.androidx.preference)
implementation(libs.timber)
implementation(libs.dashclock.api)
implementation(libs.locale) {
isTransitive = false
}
implementation("org.scala-saddle:google-rfc-2445:20110304") {
implementation(libs.jchronic) {
isTransitive = false
}
implementation("com.wdullaer:materialdatetimepicker:4.2.3")
implementation("me.leolin:ShortcutBadger:1.1.22@aar")
implementation("com.google.apis:google-api-services-tasks:v1-rev20200129-1.30.9")
implementation("com.google.apis:google-api-services-drive:v3-rev20200413-1.30.9")
implementation("com.google.auth:google-auth-library-oauth2-http:0.20.0")
implementation("androidx.work:work-runtime:${Versions.work}")
implementation("com.mapbox.mapboxsdk:mapbox-sdk-services:5.2.1")
implementation("com.etesync:journalmanager:1.1.0")
implementation("com.github.QuadFlask:colorpicker:0.0.15")
// https://github.com/mapbox/mapbox-gl-native-android/issues/316
genericImplementation("com.mapbox.mapboxsdk:mapbox-android-sdk:7.4.1")
googleplayImplementation("com.mapbox.mapboxsdk:mapbox-android-sdk:9.2.1")
googleplayImplementation("com.crashlytics.sdk.android:crashlytics:${Versions.crashlytics}")
googleplayImplementation("com.google.firebase:firebase-analytics:${Versions.analytics}")
googleplayImplementation("com.google.firebase:firebase-config-ktx:${Versions.remote_config}")
googleplayImplementation("com.google.android.gms:play-services-location:17.0.0")
googleplayImplementation("com.google.android.gms:play-services-maps:17.0.0")
googleplayImplementation("com.google.android.libraries.places:places:2.2.0")
googleplayImplementation("com.android.billingclient:billing:1.2.2")
kaptAndroidTest("com.google.dagger:dagger-compiler:${Versions.dagger}")
kaptAndroidTest("com.jakewharton:butterknife-compiler:${Versions.butterknife}")
androidTestImplementation("org.mockito:mockito-android:${Versions.mockito}")
androidTestImplementation("com.natpryce:make-it-easy:${Versions.make_it_easy}")
androidTestImplementation("androidx.test:runner:${Versions.androidx_test}")
androidTestImplementation("androidx.test:rules:${Versions.androidx_test}")
androidTestImplementation("androidx.test.ext:junit:1.1.1")
androidTestImplementation("androidx.annotation:annotation:1.1.0")
testImplementation("junit:junit:4.13")
testImplementation("com.natpryce:make-it-easy:${Versions.make_it_easy}")
testImplementation("androidx.test:core:${Versions.androidx_test}")
testImplementation("org.mockito:mockito-core:${Versions.mockito}")
implementation(libs.shortcut.badger)
implementation(libs.google.api.tasks)
implementation(libs.google.api.drive)
implementation(libs.google.oauth2)
implementation(libs.androidx.work)
implementation(libs.etebase)
implementation(libs.colorpicker)
implementation(libs.appauth)
implementation(libs.osmdroid)
implementation(libs.androidx.recyclerview)
implementation(platform(libs.androidx.compose))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.foundation:foundation")
implementation("androidx.compose.material:material")
implementation("androidx.compose.runtime:runtime-livedata")
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.material.icons.extended)
implementation(libs.androidx.lifecycle.viewmodel.compose)
implementation("androidx.compose.ui:ui-tooling-preview")
implementation(libs.coil.compose)
implementation(libs.coil.video)
implementation(libs.coil.svg)
implementation(libs.coil.gif)
implementation(libs.ktor)
implementation(libs.ktor.client.logging)
implementation(libs.ktor.content.negotiation)
implementation(libs.ktor.serialization)
implementation(libs.accompanist.permissions)
googleplayImplementation(platform(libs.firebase))
googleplayImplementation(libs.firebase.crashlytics)
googleplayImplementation(libs.firebase.analytics) {
exclude("com.google.android.gms", "play-services-ads-identifier")
}
googleplayImplementation(libs.firebase.config.ktx)
googleplayImplementation(libs.play.services.location)
googleplayImplementation(libs.play.services.maps)
googleplayImplementation(libs.play.billing.ktx)
googleplayImplementation(libs.play.review)
googleplayImplementation(libs.play.services.oss.licenses)
googleplayImplementation(libs.horologist.datalayer.phone)
googleplayImplementation(libs.horologist.datalayer.grpc)
googleplayImplementation(libs.horologist.datalayer.core)
googleplayImplementation(libs.play.services.wearable)
googleplayImplementation(libs.microsoft.authentication) {
exclude("com.microsoft.device.display", "display-mask")
}
googleplayImplementation(projects.wearDatalayer)
androidTestImplementation(libs.dagger.hilt.testing)
kspAndroidTest(libs.dagger.hilt.compiler)
kspAndroidTest(libs.androidx.hilt.compiler)
androidTestImplementation(libs.mockito.android)
androidTestImplementation(libs.make.it.easy)
androidTestImplementation(libs.androidx.test.runner)
androidTestImplementation(libs.androidx.test.rules)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.okhttp.mockwebserver)
testImplementation(libs.junit)
testImplementation(libs.kotlinx.coroutines.test)
testImplementation(libs.make.it.easy)
testImplementation(libs.androidx.test.core)
testImplementation(libs.mockito.core)
testImplementation(libs.xpp3)
}
apply(mapOf("plugin" to "com.google.gms.google-services"))

@ -0,0 +1,20 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "org.tasks.ak",
"variantName": "genericRelease",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 130804,
"versionName": "14.0.6",
"outputFile": "app-generic-release.apk"
}
],
"elementType": "File"
}

@ -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,756 +0,0 @@
- artifact: com.gitlab.bitfireAT: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.bitfireAT: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: com.mapbox.mapboxsdk:mapbox-sdk-services:+
name: Mapbox services
copyrightHolder: Mapbox
license: MIT License
licenseUrl: http://www.opensource.org/licenses/mit-license.php
url: https://github.com/mapbox/mapbox-java
forceGenerate: true
- 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: com.mapbox.mapboxsdk:mapbox-sdk-turf:+
name: Mapbox services-turf
copyrightHolder: Mapbox
license: MIT License
licenseUrl: http://www.opensource.org/licenses/mit-license.php
url: https://github.com/mapbox/mapbox-java
forceGenerate: true
- 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: com.mapbox.mapboxsdk:mapbox-android-core:+
name: Mapbox Android Core Library
copyrightHolder: Mapbox
license: MIT License
licenseUrl: http://www.opensource.org/licenses/mit-license.php
url: https://github.com/mapbox/mapbox-events-android
forceGenerate: true
- 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: com.mapbox.mapboxsdk:mapbox-android-sdk:+
name: Mapbox Maps SDK for Android
copyrightHolder: Mapbox
license: BSD 2-Clause
licenseUrl: https://opensource.org/licenses/BSD-2-Clause
url: https://github.com/mapbox/mapbox-gl-native
forceGenerate: true
- 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: org.scala-saddle:google-rfc-2445:+
name: google-rfc-2445
copyrightHolder: Google Inc.
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
url: http://code.google.com/p/google-rfc-2445/
- 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: com.wdullaer:materialdatetimepicker:+
name: MaterialDateTimePicker
copyrightHolder: Wouter Dullaert
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
url: https://github.com/wdullaer/MaterialDateTimePicker
- 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: com.mapbox.mapboxsdk:mapbox-sdk-geojson:+
name: Mapbox services-geojson
copyrightHolder: Mapbox
license: MIT License
licenseUrl: http://www.opensource.org/licenses/mit-license.php
url: https://github.com/mapbox/mapbox-java
forceGenerate: true
- artifact: com.mapbox.mapboxsdk:mapbox-android-telemetry:+
name: Mapbox Android Telemetry Library
copyrightHolder: Mapbox
license: BSD 2-Clause
licenseUrl: https://opensource.org/licenses/BSD-2-Clause
url: https://github.com/mapbox/mapbox-events-android
forceGenerate: true
- 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: io.reactivex.rxjava2:rxandroid:+
name: RxAndroid
copyrightHolder: The RxAndroid authors
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
url: https://github.com/ReactiveX/RxAndroid
- 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.documentfile:documentfile:+
name: Android Support Library Document File
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.legacy:legacy-support-core-utils:+
name: Android Support Library 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.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: com.fasterxml.jackson.core:jackson-core:+
name: Jackson-core
copyrightHolder: FasterXML
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
url: https://github.com/FasterXML/jackson-core
- 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: androidx.print:print:+
name: Android Support Library 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.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: androidx.localbroadcastmanager:localbroadcastmanager:+
name: Android Support Library Local Broadcast Manager
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: org.reactivestreams:reactive-streams:+
name: reactive-streams
copyrightHolder: Public domain
license: CC0
licenseUrl: http://creativecommons.org/publicdomain/zero/1.0/
url: http://www.reactive-streams.org/
- 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: com.mapbox.mapboxsdk:mapbox-sdk-core:+
name: Mapbox services-core
copyrightHolder: Mapbox
license: MIT License
licenseUrl: http://www.opensource.org/licenses/mit-license.php
url: https://github.com/mapbox/mapbox-java
forceGenerate: true
- artifact: com.mapbox.mapboxsdk:mapbox-android-gestures:+
name: Mapbox Android Gestures Library
copyrightHolder: Mapbox
license: BSD 2-Clause
licenseUrl: https://opensource.org/licenses/BSD-2-Clause
url: https://github.com/mapbox/mapbox-gestures-android
forceGenerate: true
- 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.room:room-rxjava2:+
name: Android Room RXJava2
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.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: io.reactivex.rxjava2:rxjava:+
name: RxJava
copyrightHolder: RxJava Contributors
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
url: https://github.com/ReactiveX/RxJava
- 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: androidx.constraintlayout:constraintlayout-solver:+
name: Android ConstraintLayout Solver
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: 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: com.squareup.retrofit2:retrofit:+
name: Retrofit
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.google.http-client:google-http-client-jackson2:+
name: Jackson 2 extensions to the 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: com.jakewharton:butterknife:+
name: ButterKnife
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/butterknife/
- artifact: com.jakewharton:butterknife-annotations:+
name: ButterKnife Annotations
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/butterknife/
- artifact: com.squareup.retrofit2:converter-gson:+
name: "Converter: Gson"
copyrightHolder: Square, Inc.
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
- 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: com.jakewharton:butterknife-runtime:+
name: ButterKnife Runtime
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/butterknife/
- 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.jetbrains.kotlinx:kotlinx-coroutines-core-common:+
name: kotlinx-coroutines-core-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://github.com/Kotlin/kotlinx.coroutines
- 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.kotlin:kotlin-stdlib-jdk8:+
name: org.jetbrains.kotlin: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: 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:+
name: kotlinx-coroutines-core
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: org.apache.httpcomponents:httpcore:+
name: Apache HttpCore
copyrightHolder: The Apache Software Foundation
license: The Apache Software License, Version 2.0
url: http://hc.apache.org/httpcomponents-core-ga
- 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: com.madgag.spongycastle:core:+
name: Spongy Castle Core
copyrightHolder: The Legion of the Bouncy Castle Inc.
license: Bouncy Castle Licence
licenseUrl: http://www.bouncycastle.org/licence.html
url: http://rtyley.github.io/spongycastle/
- artifact: com.etesync:journalmanager:+
name: EteSync JVM
copyrightHolder: Tom Hacohen
license: LGPL-3.0-only
licenseUrl: https://spdx.org/licenses/LGPL-3.0-only.html
url: https://www.etesync.com
- artifact: com.madgag.spongycastle:prov:+
name: Spongy Castle
copyrightHolder: The Legion of the Bouncy Castle Inc.
license: Bouncy Castle Licence
licenseUrl: http://www.bouncycastle.org/licence.html
url: http://rtyley.github.io/spongycastle/
- 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.mapbox.mapboxsdk:mapbox-sdk-directions-refresh-models:+
name: mapbox-sdk-directions-refresh-models
copyrightHolder: Mapbox
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
url: https://github.com/mapbox/mapbox-java
- artifact: com.mapbox.mapboxsdk:mapbox-sdk-directions-models:+
name: mapbox-sdk-directions-models
copyrightHolder: Mapbox
license: The Apache Software License, Version 2.0
licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
url: https://github.com/mapbox/mapbox-java
- artifact: com.mapbox.mapboxsdk:mapbox-android-accounts:+
name: mapbox-android-accounts
copyrightHolder: Mapbox
license: Mapbox Terms of Service
licenseUrl: https://www.mapbox.com/tos/
url: https://github.com/mapbox/mapbox-accounts-android
- 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

44
app/proguard.pro vendored

@ -2,22 +2,6 @@
-keep class org.tasks.** { *; }
# remove logging statements
-assumenosideeffects class timber.log.Timber* {
public static *** v(...);
public static *** d(...);
public static *** i(...);
}
# google-rfc-2445-20110304
-dontwarn com.google.ical.compat.jodatime.**
# https://github.com/JakeWharton/butterknife/blob/581666a28022796fdd62caaf3420e621215abfda/butterknife/proguard-rules.txt
-keep public class * implements butterknife.Unbinder { public <init>(**, android.view.View); }
-keep class butterknife.*
-keepclasseswithmembernames class * { @butterknife.* <methods>; }
-keepclasseswithmembernames class * { @butterknife.* <fields>; }
# guava
-dontwarn sun.misc.Unsafe
-dontwarn java.lang.ClassValue
@ -25,9 +9,7 @@
-dontwarn javax.inject.**
-dontwarn com.google.j2objc.annotations.**
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn com.google.errorprone.annotations.CanIgnoreReturnValue
-dontwarn com.google.errorprone.annotations.concurrent.LazyInit
-dontwarn com.google.errorprone.annotations.ForOverride
-dontwarn com.google.errorprone.annotations.**
# https://github.com/square/okhttp/blob/0b74bba08805c28f6aede626cf06f213ef6480f2/README.md
-dontwarn okhttp3.**
@ -44,8 +26,9 @@
-dontwarn net.fortuna.ical4j.model.**
-dontwarn org.codehaus.groovy.**
-dontwarn org.apache.log4j.** # ignore warnings from log4j dependency
-dontwarn com.github.erosb.jsonsKema.** # ical4android
-dontwarn org.jparsec.** # ical4android
-keep class net.fortuna.ical4j.** { *; } # keep all model classes (properties/factories, created at runtime)
-keep class org.threeten.bp.** { *; } # keep ThreeTen (for time zone processing)
-keep class at.bitfire.** { *; } # all DAVdroid code is required
# https://github.com/google/google-api-java-client-samples/blob/34c3b43cb15f4ee1b636a0e01521cc81a2451dcd/tasks-android-sample/proguard-google-api-client.txt
@ -59,4 +42,23 @@
-dontnote java.nio.file.Files, java.nio.file.Path
-dontnote **.ILicensingService
-dontnote sun.misc.Unsafe
-dontwarn sun.misc.Unsafe
-dontwarn sun.misc.Unsafe
# errors from upgrading to AGP 8
-dontwarn java.beans.Transient
-dontwarn org.joda.convert.FromString
-dontwarn org.joda.convert.ToString
-dontwarn org.json.JSONString
# material icons
-keep class androidx.compose.material.icons.outlined.** { *; }
# microsoft authentication
-dontwarn com.microsoft.device.display.DisplayMask
-dontwarn com.google.android.libraries.identity.**
-dontwarn edu.umd.cs.findbugs.annotations.**
-dontwarn com.google.crypto.tink.subtle.**
-dontwarn net.jcip.annotations.**
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite { <fields>; }

@ -9,7 +9,7 @@ import android.content.res.Configuration
import android.content.res.Resources
import androidx.test.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Assert.*
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.R.string
@ -27,7 +27,7 @@ class TranslationTests {
private fun forEachLocale(callback: (Resources) -> Unit) {
val locales = Locale.getAvailableLocales()
for (locale in locales) {
callback.invoke(getResourcesForLocale(locale))
callback(getResourcesForLocale(locale))
}
}
@ -38,77 +38,6 @@ class TranslationTests {
return Resources(resources.assets, resources.displayMetrics, configuration)
}
/** Internal test of format string parser */
@Test
fun testFormatStringParser() {
var s = "abc"
var data = FormatStringData(s)
assertEquals(s, data.string)
assertEquals(0, data.characters.size)
s = "abc %s def"
data = FormatStringData(s)
assertEquals(1, data.characters.size)
assertEquals('s', data.characters[0])
s = "abc %%s def %d"
data = FormatStringData(s)
assertEquals(2, data.characters.size)
assertEquals('%', data.characters[0])
assertEquals('d', data.characters[1])
assertTrue(data.toString(), data.toString().contains("[%"))
assertTrue(data.toString(), data.toString().contains("d]"))
assertTrue(data.toString(), data.toString().contains(s))
assertTrue(data.matches(FormatStringData("espanol %% und %d si")))
assertFalse(data.matches(FormatStringData("ingles %d ja %% pon")))
s = "% abc %"
data = FormatStringData(s)
assertEquals(2, data.characters.size)
assertEquals(' ', data.characters[0])
assertEquals('\u0000', data.characters[1])
}
/**
* Test that the format specifiers in translations match exactly the translations in the default
* text
*/
@Test
fun testFormatStringsMatch() {
val resources = InstrumentationRegistry.getTargetContext().resources
val strings = getResourceIds(string::class.java)
val formatStrings = arrayOfNulls<FormatStringData>(strings.size)
val failures = StringBuilder()
for (i in strings.indices) {
try {
val string = resources.getString(strings[i])
formatStrings[i] = FormatStringData(string)
} catch (e: Exception) {
val name = resources.getResourceName(strings[i])
failures.append(String.format("error opening %s: %s\n", name, e.message))
}
}
forEachLocale { r: Resources ->
val locale = r.configuration.locale
for (i in strings.indices) {
try {
if (strings[i] == string.abc_shareactionprovider_share_with_application) {
continue
}
val string = r.getString(strings[i])
val newFS = FormatStringData(string)
if (!newFS.matches(formatStrings[i])) {
val name = r.getResourceName(strings[i])
failures.append(String.format(
"%s (%s): %s != %s\n", name, locale.toString(), newFS, formatStrings[i]))
}
} catch (e: Exception) {
val name = r.getResourceName(strings[i])
failures.append(String.format(
"%s: error opening %s: %s\n", locale.toString(), name, e.message))
}
}
}
assertEquals(failures.toString(), 0, errorCount(failures))
}
/** check if string contains contains substrings */
private fun contains(r: Resources, resource: Int, failures: StringBuilder, expected: String) {
val translation = r.getString(resource)
@ -126,105 +55,11 @@ class TranslationTests {
forEachLocale { r: Resources ->
contains(r, string.CFC_tag_text, failures, "?")
contains(r, string.CFC_title_contains_text, failures, "?")
contains(r, string.CFC_startBefore_text, failures, "?")
contains(r, string.CFC_dueBefore_text, failures, "?")
contains(r, string.CFC_tag_contains_text, failures, "?")
contains(r, string.CFC_gtasks_list_text, failures, "?")
}
assertEquals(failures.toString(), 0, failures.toString().replace("[^\n]".toRegex(), "").length)
}
/** Count newlines */
private fun errorCount(failures: StringBuilder): Int {
var count = 0
var pos = -1
while (true) {
pos = failures.indexOf("\n", pos + 1)
if (pos == -1) {
return count
}
count++
}
}
/** @return an array of all string resource id's
*/
private fun getResourceIds(resources: Class<*>): IntArray {
val fields = resources.declaredFields
val ids: MutableList<Int> = ArrayList(fields.size)
for (field in fields) {
try {
ids.add(field.getInt(null))
} catch (e: Exception) {
// not a field we care about
}
}
val idsAsIntArray = IntArray(ids.size)
for (i in ids.indices) {
idsAsIntArray[i] = ids[i]
}
return idsAsIntArray
}
private class FormatStringData internal constructor(
/** the original string */
val string: String) {
/** format characters */
val characters: CharArray
/** test that the characters match */
fun matches(other: FormatStringData?): Boolean {
if (characters.size != other!!.characters.size) {
return false
}
outer@ for (i in characters.indices) {
if (Character.isDigit(characters[i])) {
for (j in other.characters.indices) {
if (characters[i] == other.characters[j]) {
break@outer
}
}
return false
} else if (characters[i] != other.characters[i]) {
return false
}
}
return true
}
override fun toString(): String {
val value = StringBuilder("[")
for (i in characters.indices) {
value.append(characters[i])
if (i < characters.size - 1) {
value.append(',')
}
}
value.append("]: '").append(string).append('\'')
return value.toString()
}
companion object {
private val scratch = CharArray(10)
}
init {
var pos = -1
var count = 0
while (true) {
pos = string.indexOf('%', ++pos)
if (pos++ == -1) {
break
}
if (pos >= string.length) {
scratch[count++] = '\u0000'
} else {
scratch[count++] = string[pos]
}
}
characters = CharArray(count)
for (i in 0 until count) {
characters[i] = scratch[i]
}
}
}
}

@ -5,399 +5,372 @@
*/
package com.todoroo.andlib.utility
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import kotlinx.coroutines.runBlocking
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze.Companion.freezeAt
import org.tasks.SuspendFreeze
import org.tasks.SuspendFreeze.Companion.freezeAt
import org.tasks.TestUtilities.withLocale
import org.tasks.date.DateTimeUtils
import org.tasks.extensions.Context.is24HourFormat
import org.tasks.extensions.Context.is24HourOverride
import org.tasks.kmp.formatDayOfWeek
import org.tasks.kmp.org.tasks.time.DateStyle
import org.tasks.kmp.org.tasks.time.TextStyle
import org.tasks.kmp.org.tasks.time.getRelativeDateTime
import org.tasks.kmp.org.tasks.time.getRelativeDay
import org.tasks.kmp.org.tasks.time.getTimeString
import org.tasks.time.DateTime
import java.time.format.FormatStyle
import java.util.*
import java.util.Locale
@RunWith(AndroidJUnit4::class)
class DateUtilitiesTest {
@After
fun after() {
DateUtilities.is24HourOverride = null
is24HourOverride = null
}
@Test
fun testGet24HourTime() {
DateUtilities.is24HourOverride = true
assertEquals("09:05", DateUtilities.getTimeString(null, DateTime(2014, 1, 4, 9, 5, 36)))
assertEquals("13:00", DateUtilities.getTimeString(null, DateTime(2014, 1, 4, 13, 0, 1)))
is24HourOverride = true
assertEquals("09:05", getTimeString(DateTime(2014, 1, 4, 9, 5, 36).millis, is24HourFormat))
assertEquals("13:00", getTimeString(DateTime(2014, 1, 4, 13, 0, 1).millis, is24HourFormat))
}
@Test
fun testGetTime() {
DateUtilities.is24HourOverride = false
assertEquals("9:05 AM", DateUtilities.getTimeString(null, DateTime(2014, 1, 4, 9, 5, 36)))
assertEquals("1:05 PM", DateUtilities.getTimeString(null, DateTime(2014, 1, 4, 13, 5, 36)))
is24HourOverride = false
assertEquals("9:05 AM", getTimeString(DateTime(2014, 1, 4, 9, 5, 36).millis, is24HourFormat))
assertEquals("1:05 PM", getTimeString(DateTime(2014, 1, 4, 13, 5, 36).millis, is24HourFormat))
}
@Test
fun testGetTimeWithNoMinutes() {
DateUtilities.is24HourOverride = false
assertEquals("1 PM", DateUtilities.getTimeString(null, DateTime(2014, 1, 4, 13, 0, 59))) // derp?
is24HourOverride = false
assertEquals("1 PM", getTimeString(DateTime(2014, 1, 4, 13, 0, 59).millis, is24HourFormat)) // derp?
}
@Test
fun testGetDateStringWithYear() {
assertEquals("Jan 4, 2014", DateUtilities.getDateString(ApplicationProvider.getApplicationContext(), DateTime(2014, 1, 4, 0, 0, 0)))
fun testGetDateStringWithYear() = runBlocking {
assertEquals("Jan 4, 2014", getRelativeDay(DateTime(2014, 1, 4, 0, 0, 0).millis))
}
@Test
fun testGetDateStringHidingYear() {
fun testGetDateStringHidingYear() = runBlocking {
freezeAt(DateTimeUtils.newDate(2014, 2, 1)) {
assertEquals("Jan 1", DateUtilities.getDateString(ApplicationProvider.getApplicationContext(), DateTime(2014, 1, 1)))
assertEquals("Jan 1", getRelativeDay(DateTime(2014, 1, 1).millis))
}
}
@Test
fun testGetDateStringWithDifferentYear() {
fun testGetDateStringWithDifferentYear() = runBlocking {
freezeAt(DateTimeUtils.newDate(2013, 12, 1)) {
assertEquals("Jan 1, 2014", DateUtilities.getDateString(ApplicationProvider.getApplicationContext(), DateTime(2014, 1, 1, 0, 0, 0)))
assertEquals("Jan 1, 2014", getRelativeDay(DateTime(2014, 1, 1, 0, 0, 0).millis))
}
}
@Test
fun testGetWeekdayLongString() {
assertEquals("Sunday", DateUtilities.getWeekday(DateTimeUtils.newDate(2013, 12, 29), Locale.US))
assertEquals("Monday", DateUtilities.getWeekday(DateTimeUtils.newDate(2013, 12, 30), Locale.US))
assertEquals("Tuesday", DateUtilities.getWeekday(DateTimeUtils.newDate(2013, 12, 31), Locale.US))
assertEquals("Wednesday", DateUtilities.getWeekday(DateTimeUtils.newDate(2014, 1, 1), Locale.US))
assertEquals("Thursday", DateUtilities.getWeekday(DateTimeUtils.newDate(2014, 1, 2), Locale.US))
assertEquals("Friday", DateUtilities.getWeekday(DateTimeUtils.newDate(2014, 1, 3), Locale.US))
assertEquals("Saturday", DateUtilities.getWeekday(DateTimeUtils.newDate(2014, 1, 4), Locale.US))
fun testGetWeekdayLongString() = withLocale(Locale.US) {
assertEquals("Sunday", formatDayOfWeek(DateTimeUtils.newDate(2013, 12, 29).millis, TextStyle.FULL))
assertEquals("Monday", formatDayOfWeek(DateTimeUtils.newDate(2013, 12, 30).millis, TextStyle.FULL))
assertEquals("Tuesday", formatDayOfWeek(DateTimeUtils.newDate(2013, 12, 31).millis, TextStyle.FULL))
assertEquals("Wednesday", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 1).millis, TextStyle.FULL))
assertEquals("Thursday", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 2).millis, TextStyle.FULL))
assertEquals("Friday", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 3).millis, TextStyle.FULL))
assertEquals("Saturday", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 4).millis, TextStyle.FULL))
}
@Test
fun testGetWeekdayShortString() {
assertEquals("Sun", DateUtilities.getWeekdayShort(DateTimeUtils.newDate(2013, 12, 29), Locale.US))
assertEquals("Mon", DateUtilities.getWeekdayShort(DateTimeUtils.newDate(2013, 12, 30), Locale.US))
assertEquals("Tue", DateUtilities.getWeekdayShort(DateTimeUtils.newDate(2013, 12, 31), Locale.US))
assertEquals("Wed", DateUtilities.getWeekdayShort(DateTimeUtils.newDate(2014, 1, 1), Locale.US))
assertEquals("Thu", DateUtilities.getWeekdayShort(DateTimeUtils.newDate(2014, 1, 2), Locale.US))
assertEquals("Fri", DateUtilities.getWeekdayShort(DateTimeUtils.newDate(2014, 1, 3), Locale.US))
assertEquals("Sat", DateUtilities.getWeekdayShort(DateTimeUtils.newDate(2014, 1, 4), Locale.US))
fun testGetWeekdayShortString() = withLocale(Locale.US) {
assertEquals("Sun", formatDayOfWeek(DateTimeUtils.newDate(2013, 12, 29).millis, TextStyle.SHORT))
assertEquals("Mon", formatDayOfWeek(DateTimeUtils.newDate(2013, 12, 30).millis, TextStyle.SHORT))
assertEquals("Tue", formatDayOfWeek(DateTimeUtils.newDate(2013, 12, 31).millis, TextStyle.SHORT))
assertEquals("Wed", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 1).millis, TextStyle.SHORT))
assertEquals("Thu", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 2).millis, TextStyle.SHORT))
assertEquals("Fri", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 3).millis, TextStyle.SHORT))
assertEquals("Sat", formatDayOfWeek(DateTimeUtils.newDate(2014, 1, 4).millis, TextStyle.SHORT))
}
@Test
fun getRelativeFullDate() {
fun getRelativeFullDate() = withLocale(Locale.US) {
freezeAt(DateTime(2018, 1, 1)) {
assertEquals(
"Sunday, January 14",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.US,
FormatStyle.FULL))
"Sunday, January 14",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun getRelativeFullDateWithYear() {
fun getRelativeFullDateWithYear() = withLocale(Locale.US) {
freezeAt(DateTime(2017, 12, 12)) {
assertEquals(
"Sunday, January 14, 2018",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.US,
FormatStyle.FULL))
"Sunday, January 14, 2018",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun getRelativeFullDateTime() {
fun getRelativeFullDateTime() = withLocale(Locale.US) {
freezeAt(DateTime(2018, 1, 1)) {
assertMatches(
"Sunday, January 14( at)? 1:43 PM",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 43, 1).millis,
Locale.US,
FormatStyle.FULL))
"Sunday, January 14( at)? 1:43 PM",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 43, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun getRelativeFullDateTimeWithYear() {
@Ignore("Fails on CI - need to investigate")
fun getRelativeDateTimeWithAlwaysDisplayFullDateOption() = withLocale(Locale.US) {
freezeAt(DateTime(2020, 1, 1)) {
assertMatches(
"Thursday, January 2 at 11:50 AM",
getRelativeDateTime(DateTime(2020, 1, 2, 11, 50, 1).millis, is24HourFormat, DateStyle.FULL, true, false)
)
}
}
@Test
fun getRelativeFullDateTimeWithYear() = withLocale(Locale.US) {
freezeAt(DateTime(2017, 12, 12)) {
assertMatches(
"Sunday, January 14, 2018( at)? 11:50 AM",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 11, 50, 1).millis,
Locale.US,
FormatStyle.FULL))
"Sunday, January 14, 2018( at)? 11:50 AM",
getRelativeDateTime(DateTime(2018, 1, 14, 11, 50, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun getRelativeDayWithAlwaysDisplayFullDateOption() = withLocale(Locale.US) {
freezeAt(DateTime(2020, 1, 1)) {
assertEquals(
"Thursday, January 2",
getRelativeDay(DateTime(2020, 1, 2, 11, 50, 1).millis, DateStyle.FULL, alwaysDisplayFullDate = true, lowercase = true)
)
}
}
@Test
fun germanDateNoYear() {
fun getRelativeDayWithoutAlwaysDisplayFullDateOption() = withLocale(Locale.US) {
freezeAt(DateTime(2020, 1, 1)) {
assertEquals(
"tomorrow",
getRelativeDay(DateTime(2020, 1, 2, 11, 50, 1).millis, DateStyle.FULL, lowercase = true)
)
}
}
@Test
fun germanDateNoYear() = withLocale(Locale.GERMAN) {
freezeAt(DateTime(2018, 1, 1)) {
assertEquals(
"Sonntag, 14. Januar",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.GERMAN,
FormatStyle.FULL))
"Sonntag, 14. Januar",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun germanDateWithYear() {
fun germanDateWithYear() = withLocale(Locale.GERMAN) {
freezeAt(DateTime(2017, 12, 12)) {
assertEquals(
"Sonntag, 14. Januar 2018",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.GERMAN,
FormatStyle.FULL))
"Sonntag, 14. Januar 2018",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun koreanDateNoYear() {
fun koreanDateNoYear() = withLocale(Locale.KOREAN) {
freezeAt(DateTime(2018, 1, 1)) {
assertEquals(
"1월 14일 일요일",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.KOREAN,
FormatStyle.FULL))
"1월 14일 일요일",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun koreanDateWithYear() {
fun koreanDateWithYear() = withLocale(Locale.KOREAN) {
freezeAt(DateTime(2017, 12, 12)) {
assertEquals(
"2018년 1월 14일 일요일",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.KOREAN,
FormatStyle.FULL))
"2018년 1월 14일 일요일",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun japaneseDateNoYear() {
fun japaneseDateNoYear() = withLocale(Locale.JAPANESE) {
freezeAt(DateTime(2018, 1, 1)) {
assertEquals(
"1月14日日曜日",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.JAPANESE,
FormatStyle.FULL))
"1月14日日曜日",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun japaneseDateWithYear() {
fun japaneseDateWithYear() = withLocale(Locale.JAPANESE) {
freezeAt(DateTime(2017, 12, 12)) {
assertEquals(
"2018年1月14日日曜日",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.JAPANESE,
FormatStyle.FULL))
"2018年1月14日日曜日",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun chineseDateNoYear() {
fun chineseDateNoYear() = withLocale(Locale.CHINESE) {
freezeAt(DateTime(2018, 1, 1)) {
assertEquals(
"1月14日星期日",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.CHINESE,
FormatStyle.FULL))
"1月14日星期日",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun chineseDateWithYear() {
freezeAt(DateTime(2017, 12, 12)) {
fun chineseDateWithYear() = withLocale(Locale.CHINESE) {
SuspendFreeze.freezeAt(DateTime(2017, 12, 12)) {
assertEquals(
"2018年1月14日星期日",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14).millis,
Locale.CHINESE,
FormatStyle.FULL))
"2018年1月14日星期日",
getRelativeDateTime(DateTime(2018, 1, 14).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun chineseDateTimeNoYear() {
fun chineseDateTimeNoYear() = withLocale(Locale.CHINESE) {
freezeAt(DateTime(2018, 1, 1)) {
assertEquals(
"1月14日星期日 上午11:53",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 11, 53, 1).millis,
Locale.CHINESE,
FormatStyle.FULL))
"1月14日星期日 上午11:53",
getRelativeDateTime(DateTime(2018, 1, 14, 11, 53, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun chineseDateTimeWithYear() {
fun chineseDateTimeWithYear() = withLocale(Locale.CHINESE) {
freezeAt(DateTime(2017, 12, 12)) {
assertEquals(
"2018年1月14日星期日 下午1:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.CHINESE,
FormatStyle.FULL))
"2018年1月14日星期日 下午1:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun frenchDateTimeWithYear() {
fun frenchDateTimeWithYear() = withLocale(Locale.FRENCH) {
freezeAt(DateTime(2017, 12, 12)) {
assertMatches(
"dimanche 14 janvier 2018( à)? 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.FRENCH,
FormatStyle.FULL))
"dimanche 14 janvier 2018( à)? 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun indiaDateTimeWithYear() {
fun indiaDateTimeWithYear() = withLocale(Locale.forLanguageTag("hi-IN")) {
freezeAt(DateTime(2017, 12, 12)) {
assertMatches(
"रविवार, 14 जनवरी 2018( को)? 1:45 pm",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("hi-IN"),
FormatStyle.FULL))
"रविवार, 14 जनवरी 2018( को)? 1:45 pm",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun russiaDateTimeNoYear() {
fun russiaDateTimeNoYear() = withLocale(Locale.forLanguageTag("ru")) {
freezeAt(DateTime(2018, 12, 12)) {
assertMatches(
"воскресенье, 14 января,? 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("ru"),
FormatStyle.FULL))
"воскресенье, 14 января,? 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun russiaDateTimeWithYear() {
fun russiaDateTimeWithYear() = withLocale(Locale.forLanguageTag("ru")) {
freezeAt(DateTime(2017, 12, 12)) {
assertMatches(
"воскресенье, 14 января 2018 г.,? 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("ru"),
FormatStyle.FULL))
"воскресенье, 14 января 2018 г.,? 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun brazilDateTimeNoYear() {
fun brazilDateTimeNoYear() = withLocale(Locale.forLanguageTag("pt-br")) {
freezeAt(DateTime(2018, 12, 12)) {
assertEquals(
"domingo, 14 de janeiro 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("pt-br"),
FormatStyle.FULL))
"domingo, 14 de janeiro 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun brazilDateTimeWithYear() {
fun brazilDateTimeWithYear() = withLocale(Locale.forLanguageTag("pt-br")) {
freezeAt(DateTime(2017, 12, 12)) {
assertEquals(
"domingo, 14 de janeiro de 2018 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("pt-br"),
FormatStyle.FULL))
"domingo, 14 de janeiro de 2018 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun spainDateTimeNoYear() {
fun spainDateTimeNoYear() = withLocale(Locale.forLanguageTag("es")) {
freezeAt(DateTime(2018, 12, 12)) {
assertMatches(
"domingo, 14 de enero,? 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("es"),
FormatStyle.FULL))
"domingo, 14 de enero,? 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun spainDateTimeWithYear() {
fun spainDateTimeWithYear() = withLocale(Locale.forLanguageTag("es")) {
freezeAt(DateTime(2017, 12, 12)) {
assertMatches(
"domingo, 14 de enero de 2018,? 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("es"),
FormatStyle.FULL))
"domingo, 14 de enero de 2018,? 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun hebrewDateTimeNoYear() {
fun hebrewDateTimeNoYear() = withLocale(Locale.forLanguageTag("he")) {
freezeAt(DateTime(2018, 12, 12)) {
assertMatches(
"יום ראשון, 14 בינואר( בשעה)? 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("iw"),
FormatStyle.FULL))
"יום ראשון, 14 בינואר( בשעה)? 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
@Test
fun hebrewDateTimeWithYear() {
fun hebrewDateTimeWithYear() = withLocale(Locale.forLanguageTag("he")) {
freezeAt(DateTime(2017, 12, 12)) {
assertMatches(
"יום ראשון, 14 בינואר 2018( בשעה)? 13:45",
DateUtilities.getRelativeDateTime(
ApplicationProvider.getApplicationContext(),
DateTime(2018, 1, 14, 13, 45, 1).millis,
Locale.forLanguageTag("iw"),
FormatStyle.FULL))
"יום ראשון, 14 בינואר 2018( בשעה)? 13:45",
getRelativeDateTime(DateTime(2018, 1, 14, 13, 45, 1).millis, is24HourFormat, DateStyle.FULL)
)
}
}
private fun assertMatches(regex: String, actual: String) = assertTrue(actual.matches(Regex(regex)))
private fun assertMatches(regex: String, actual: String) =
assertTrue("expected=$regex\nactual=$actual", actual.matches(Regex(regex)))
private val is24HourFormat: Boolean
get() = InstrumentationRegistry.getInstrumentation().targetContext.is24HourFormat
}

@ -1,16 +1,17 @@
package com.todoroo.andlib.utility
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import kotlinx.coroutines.runBlocking
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze
import org.tasks.kmp.org.tasks.time.DateStyle
import org.tasks.kmp.org.tasks.time.getRelativeDay
import org.tasks.time.DateTime
import java.time.format.FormatStyle
import java.util.*
import java.util.Locale
@RunWith(AndroidJUnit4::class)
class RelativeDayTest {
@ -67,12 +68,12 @@ class RelativeDayTest {
checkRelativeDay(DateTime().plusDays(7), "January 7, 2014", "Jan 7, 2014")
}
private fun checkRelativeDay(now: DateTime, full: String, abbreviated: String) {
private fun checkRelativeDay(now: DateTime, full: String, abbreviated: String) = runBlocking {
assertEquals(
full,
DateUtilities.getRelativeDay(ApplicationProvider.getApplicationContext(), now.millis, Locale.US, FormatStyle.LONG))
getRelativeDay(now.millis, DateStyle.LONG))
assertEquals(
abbreviated,
DateUtilities.getRelativeDay(ApplicationProvider.getApplicationContext(), now.millis, Locale.US, FormatStyle.MEDIUM))
getRelativeDay(now.millis))
}
}

@ -0,0 +1,32 @@
package com.todoroo.astrid.activity
import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.extensions.isFromHistory
@RunWith(AndroidJUnit4::class)
class MainActivityTest {
@Test
fun newTaskIsNotFromHistory() {
assertFalse(Intent().setFlags(FLAG_ACTIVITY_NEW_TASK).isFromHistory)
}
@Test
fun oldTaskIsNotFromHistory() {
assertFalse(Intent().setFlags(FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY).isFromHistory)
}
@Test
fun newTaskIsFromHistory() {
assertTrue(
Intent()
.setFlags(FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)
.isFromHistory)
}
}

@ -1,25 +1,27 @@
package com.todoroo.astrid.adapter
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskMover
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager
import org.tasks.R
import org.tasks.data.CaldavCalendar
import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer
import org.tasks.data.TaskListQuery.getQuery
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_CALDAV
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.Task
import org.tasks.filters.CaldavFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.REMOTE_PARENT
import org.tasks.makers.CaldavTaskMaker.TASK
@ -31,17 +33,21 @@ import org.tasks.preferences.Preferences
import org.tasks.time.DateTime
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
@Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var preferences: Preferences
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var taskMover: TaskMover
private lateinit var adapter: CaldavManualSortTaskAdapter
private val tasks = ArrayList<TaskContainer>()
private val filter = CaldavFilter(CaldavCalendar("calendar", "1234"))
private val filter = CaldavFilter(
calendar = CaldavCalendar(name = "calendar", uuid = "1234"),
account = CaldavAccount(accountType = TYPE_CALDAV)
)
private val dataSource = object : TaskAdapterDataSource {
override fun getItem(position: Int) = tasks[position]
@ -54,7 +60,7 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
preferences.clear()
preferences.setBoolean(R.string.p_manual_sort, true)
tasks.clear()
adapter = CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager)
adapter = CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover)
adapter.setDataSource(dataSource)
}
@ -213,16 +219,16 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
checkOrder(created.plusSeconds(6), 3)
}
private fun move(from: Int, to: Int, indent: Int = 0) {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
private fun move(from: Int, to: Int, indent: Int = 0) = runBlocking {
tasks.addAll(taskDao.fetchTasks(getQuery(preferences, filter)))
val adjustedTo = if (from < to) to + 1 else to // match DragAndDropRecyclerAdapter behavior
adapter.moved(from, adjustedTo, indent)
}
private fun checkOrder(dateTime: DateTime, index: Int) = checkOrder(dateTime.toAppleEpoch(), index)
private fun checkOrder(order: Long?, index: Int) {
val sortOrder = caldavDao.getTask(adapter.getTask(index).id)!!.order
private fun checkOrder(order: Long?, index: Int) = runBlocking {
val sortOrder = taskDao.fetch(adapter.getTask(index).id)!!.order
if (order == null) {
assertNull(sortOrder)
} else {
@ -230,7 +236,7 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
}
}
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long {
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long = runBlocking {
val task = newTask(*properties)
taskDao.createNew(task)
val remoteParent = if (task.parent > 0) caldavDao.getRemoteIdForTask(task.parent) else null
@ -239,8 +245,6 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
with(TASK, task.id),
with(CALENDAR, "1234"),
with(REMOTE_PARENT, remoteParent)))
return task.id
task.id
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -1,28 +1,31 @@
package com.todoroo.astrid.adapter
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.service.TaskMover
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.*
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager
import org.tasks.data.*
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.entity.CaldavTask
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TaskContainerMaker.PARENT
import org.tasks.makers.TaskContainerMaker.newTaskContainer
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class CaldavTaskAdapterTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var taskMover: TaskMover
private lateinit var adapter: TaskAdapter
private val tasks = ArrayList<TaskContainer>()
@ -32,7 +35,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
super.setUp()
tasks.clear()
adapter = TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager)
adapter = TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover)
adapter.setDataSource(object : TaskAdapterDataSource {
override fun getItem(position: Int) = tasks[position]
@ -135,7 +138,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
}
@Test
fun movingTaskToNewParentSetsId() {
fun movingTaskToNewParentSetsId() = runBlocking {
addTask()
addTask()
@ -145,7 +148,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
}
@Test
fun movingTaskToNewParentSetsRemoteId() {
fun movingTaskToNewParentSetsRemoteId() = runBlocking {
addTask()
addTask()
@ -158,7 +161,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
}
@Test
fun unindentingTaskRemovesParent() {
fun unindentingTaskRemovesParent() = runBlocking {
addTask()
addTask(with(PARENT, tasks[0]))
@ -169,7 +172,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
}
@Test
fun moveSubtaskUpToParent() {
fun moveSubtaskUpToParent() = runBlocking {
addTask()
addTask(with(PARENT, tasks[0]))
addTask(with(PARENT, tasks[1]))
@ -180,7 +183,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
}
@Test
fun moveSubtaskUpToGrandparent() {
fun moveSubtaskUpToGrandparent() = runBlocking {
addTask()
addTask(with(PARENT, tasks[0]))
addTask(with(PARENT, tasks[1]))
@ -191,26 +194,20 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
assertEquals(tasks[0].id, taskDao.fetch(tasks[3].id)!!.parent)
}
private fun addTask(vararg properties: PropertyValue<in TaskContainer?, *>) {
private fun addTask(vararg properties: PropertyValue<in TaskContainer?, *>) = runBlocking {
val t = newTaskContainer(*properties)
tasks.add(t)
val task = t.task
taskDao.createNew(task)
val caldavTask = CaldavTask(t.id, "calendar")
val caldavTask = CaldavTask(task = t.id, calendar = "calendar")
if (task.parent > 0) {
caldavTask.remoteParent = caldavDao.getRemoteIdForTask(task.parent)
}
caldavTask.id = caldavDao.insert(caldavTask)
t.caldavTask = caldavTask.toSubset()
}
private fun CaldavTask.toSubset(): SubsetCaldav {
val result = SubsetCaldav()
result.cd_id = id
result.cd_calendar = calendar
result.cd_remote_parent = remoteParent
return result
}
override fun inject(component: TestComponent) = component.inject(this)
}
tasks.add(
t.copy(
caldavTask = caldavTask.copy(
id = caldavDao.insert(caldavTask)
)
)
)
}
}

@ -1,46 +1,49 @@
package com.todoroo.astrid.adapter
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskMover
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
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.data.dao.CaldavDao
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.Task
import org.tasks.filters.CaldavFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID
import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList
import org.tasks.makers.GoogleTaskMaker
import org.tasks.makers.GoogleTaskMaker.LIST
import org.tasks.makers.GoogleTaskMaker.TASK
import org.tasks.makers.GoogleTaskMaker.newGoogleTask
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class GoogleTaskManualSortAdapterTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var preferences: Preferences
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var taskMover: TaskMover
private lateinit var adapter: GoogleTaskManualSortAdapter
private val tasks = ArrayList<TaskContainer>()
private val filter = GtasksFilter(newGoogleTaskList(with(REMOTE_ID, "1234")))
private val filter = CaldavFilter(
calendar = CaldavCalendar(uuid = "1234"),
account = CaldavAccount(accountType = TYPE_GOOGLE_TASKS)
)
private val dataSource = object : TaskAdapterDataSource {
override fun getItem(position: Int) = tasks[position]
@ -415,35 +418,33 @@ class GoogleTaskManualSortAdapterTest : InjectingTestCase() {
preferences.clear()
preferences.setBoolean(R.string.p_manual_sort, true)
tasks.clear()
adapter = GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager)
adapter = GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover)
adapter.setDataSource(dataSource)
}
private fun move(from: Int, to: Int, indent: Int = 0) {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
private fun move(from: Int, to: Int, indent: Int = 0) = runBlocking {
tasks.addAll(taskDao.fetchTasks(getQuery(preferences, filter)))
val adjustedTo = if (from < to) to + 1 else to
adapter.moved(from, adjustedTo, indent)
}
private fun checkOrder(order: Long, index: Int, parent: Long = 0) {
val googleTask = googleTaskDao.getByTaskId(adapter.getTask(index).id)!!
private fun checkOrder(order: Long, index: Int, parent: Long = 0) = runBlocking {
val googleTask = taskDao.fetch(adapter.getTask(index).id)!!
assertEquals(order, googleTask.order)
assertEquals(parent, googleTask.parent)
}
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long {
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long = runBlocking {
val task = newTask(*properties)
val parent = task.parent
task.parent = 0
taskDao.createNew(task)
googleTaskDao.insertAndShift(
newGoogleTask(
with(TASK, task.id),
with(LIST, "1234"),
with(GoogleTaskMaker.PARENT, parent)),
false)
return task.id
task,
newCaldavTask(
with(TASK, task.id),
with(CALENDAR, "1234"),
),
false
)
task.id
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -1,79 +0,0 @@
package com.todoroo.astrid.adapter
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
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 org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
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.TestComponent
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
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 {
val task = newTask(*properties)
taskDao.createNew(task)
return task.id
}
private fun query() {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -1,54 +1,34 @@
package com.todoroo.astrid.adapter
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
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 kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager
import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer
import org.tasks.data.TaskListQuery.getQuery
import org.tasks.data.entity.Task
import org.tasks.filters.MyTasksFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class OfflineSubtaskTest : 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
}
private val filter = runBlocking { MyTasksFilter.create() }
@Before
override fun setUp() {
super.setUp()
preferences.clear()
tasks.clear()
adapter = TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager)
adapter.setDataSource(dataSource)
}
@Test
@ -56,7 +36,7 @@ class OfflineSubtaskTest : InjectingTestCase() {
val parent = addTask()
val child = addTask(with(PARENT, parent))
query()
val tasks = query()
assertEquals(child, tasks[1].id)
assertEquals(parent, tasks[1].parent)
@ -69,22 +49,81 @@ class OfflineSubtaskTest : InjectingTestCase() {
val parent = addTask(with(PARENT, grandparent))
val child = addTask(with(PARENT, parent))
query()
val tasks = query()
assertEquals(child, tasks[2].id)
assertEquals(parent, tasks[2].parent)
assertEquals(2, tasks[2].indent)
}
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long {
@Test
fun parentWithOneChildHasChildrenCountOne() {
val parent = addTask()
addTask(with(PARENT, parent))
val tasks = query()
val parentTask = tasks.find { it.id == parent }!!
assertEquals(1, parentTask.children)
}
@Test
fun parentWithMultipleChildrenHasCorrectCount() {
val parent = addTask()
addTask(with(PARENT, parent))
addTask(with(PARENT, parent))
addTask(with(PARENT, parent))
val tasks = query()
val parentTask = tasks.find { it.id == parent }!!
assertEquals(3, parentTask.children)
}
@Test
fun grandparentCountsAllDescendants() {
val grandparent = addTask()
val parent = addTask(with(PARENT, grandparent))
addTask(with(PARENT, parent))
val tasks = query()
val grandparentTask = tasks.find { it.id == grandparent }!!
assertEquals(2, grandparentTask.children)
}
@Test
fun leafTaskHasNoChildren() {
val parent = addTask()
val child = addTask(with(PARENT, parent))
val tasks = query()
val childTask = tasks.find { it.id == child }!!
assertEquals(0, childTask.children)
}
@Test
fun deepHierarchyCountsAllDescendants() {
val root = addTask()
val level1 = addTask(with(PARENT, root))
val level2 = addTask(with(PARENT, level1))
val level3 = addTask(with(PARENT, level2))
addTask(with(PARENT, level3))
val tasks = query()
val rootTask = tasks.find { it.id == root }!!
assertEquals(4, rootTask.children)
}
private fun addTask(vararg properties: PropertyValue<in Task?, *>): Long = runBlocking {
val task = newTask(*properties)
taskDao.createNew(task)
return task.id
task.id
}
private fun query() {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
private fun query(): List<TaskContainer> = runBlocking {
taskDao.fetchTasks(getQuery(preferences, filter))
}
override fun inject(component: TestComponent) = component.inject(this)
}
}

@ -0,0 +1,91 @@
package com.todoroo.astrid.adapter
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.tasks.data.TaskListQuery.getQuery
import org.tasks.data.entity.Task
import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.filters.TodayFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.makers.TaskMaker.DUE_DATE
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences
import javax.inject.Inject
@HiltAndroidTest
class RecursiveLoopTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var preferences: Preferences
@Before
override fun setUp() {
super.setUp()
preferences.clear()
}
@Test
fun handleSelfLoop() = runBlocking {
addTask(with(DUE_DATE, newDateTime()), with(PARENT, 1L))
val tasks = getTasks()
assertEquals(1, tasks.size)
assertEquals(1L, tasks[0].id)
}
@Test
fun handleSingleLevelLoop() = runBlocking {
val parent = addTask(with(DUE_DATE, newDateTime()))
val child = addTask(with(PARENT, parent))
taskDao.setParent(child, listOf(parent))
val tasks = getTasks()
assertEquals(2, tasks.size)
assertEquals(parent, tasks[0].id)
assertEquals(child, tasks[1].id)
}
@Test
fun handleMultiLevelLoop() = runBlocking {
val parent = addTask(with(DUE_DATE, newDateTime()))
val child = addTask(with(PARENT, parent))
val grandchild = addTask(with(PARENT, child))
taskDao.setParent(grandchild, listOf(parent))
val tasks = getTasks()
assertEquals(3, tasks.size)
assertEquals(parent, tasks[0].id)
assertEquals(child, tasks[1].id)
assertEquals(grandchild, tasks[2].id)
}
@Test
fun descendantsRecursiveLoopBothMatchFilter() = runBlocking {
val parent = addTask(with(DUE_DATE, newDateTime()))
val child = addTask(with(DUE_DATE, newDateTime()), with(PARENT, parent))
taskDao.setParent(child, listOf(parent))
val tasks = getTasks()
assertEquals(2, tasks.size)
}
private suspend fun getTasks() = taskDao.fetchTasks(
getQuery(preferences, TodayFilter.create())
)
private suspend fun addTask(vararg properties: PropertyValue<in Task?, *>): Long {
val task = newTask(*properties)
taskDao.createNew(task)
return task.id
}
}

@ -1,52 +1,287 @@
package com.todoroo.astrid.alarms
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.Alarm
import org.tasks.data.AlarmDao
import org.tasks.SuspendFreeze.Companion.freezeAt
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.TestComponent
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.DateTimeUtils2
import java.util.concurrent.TimeUnit
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class AlarmJobServiceTest : InjectingTestCase() {
@Inject lateinit var alarmDao: AlarmDao
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var jobs: NotificationQueue
@Inject lateinit var alarmService: AlarmService
@Test
fun scheduleAlarm() {
val task = newTask()
taskDao.createNew(task)
val alarmTime = DateTime(2017, 9, 24, 19, 57)
val alarm = Alarm(task.id, alarmTime.millis)
alarm.id = alarmDao.insert(alarm)
alarmService.scheduleAllAlarms()
fun testNoAlarms() = runBlocking {
testResults(emptyList(), 0)
}
@Test
fun futureAlarmWithNoPastAlarm() = runBlocking {
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)))
assertEquals(listOf(AlarmEntry(alarm)), jobs.getJobs())
testResults(emptyList(), DateTime(2024, 5, 18, 18, 0).millis)
}
}
@Test
fun ignoreStaleAlarm() {
val alarmTime = DateTime(2017, 9, 24, 19, 57)
val task = newTask(with(REMINDER_LAST, alarmTime.endOfMinute()))
taskDao.createNew(task)
alarmDao.insert(Alarm(task.id, alarmTime.millis))
alarmService.scheduleAllAlarms()
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)))
assertTrue(jobs.getJobs().isEmpty())
testResults(
listOf(
Notification(
taskId = 1L,
timestamp = DateTimeUtils2.currentTimeMillis(),
type = Alarm.TYPE_REL_END
)
),
0
)
}
}
override fun inject(component: TestComponent) = component.inject(this)
@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)
)
}
}
@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
fun ignoreStaleAlarm() = runBlocking {
freezeAt(DateTime(2024, 5, 17, 23, 20)) {
taskDao.insert(
Task(
dueDate = createDueDate(
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
)
}
}
@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)
}
}

@ -5,29 +5,25 @@
*/
package com.todoroo.astrid.dao
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.*
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class TaskDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var taskDeleter: TaskDeleter
/** Test basic task creation, fetch, and save */
@Test
fun testTaskCreation() {
fun testTaskCreation() = runBlocking {
assertEquals(0, taskDao.getAll().size)
// create task "happy"
@ -62,7 +58,7 @@ class TaskDaoTests : InjectingTestCase() {
/** Test various task fetch conditions */
@Test
fun testTaskConditions() {
fun testTaskConditions() = runBlocking {
// create normal task
var task = Task()
task.title = "normal"
@ -76,23 +72,23 @@ class TaskDaoTests : InjectingTestCase() {
// create hidden task
task = Task()
task.title = "hidden"
task.hideUntil = DateUtilities.now() + 10000
task.hideUntil = currentTimeMillis() + 10000
taskDao.createNew(task)
// create task with deadlines
task = Task()
task.title = "deadlineInFuture"
task.dueDate = DateUtilities.now() + 10000
task.dueDate = currentTimeMillis() + 10000
taskDao.createNew(task)
task = Task()
task.title = "deadlineInPast"
task.dueDate = DateUtilities.now() - 10000
task.dueDate = currentTimeMillis() - 10000
taskDao.createNew(task)
// create completed task
task = Task()
task.title = "completed"
task.completionDate = DateUtilities.now() - 10000
task.completionDate = currentTimeMillis() - 10000
taskDao.createNew(task)
// check is active
@ -104,7 +100,7 @@ class TaskDaoTests : InjectingTestCase() {
/** Test task deletion */
@Test
fun testTDeletion() {
fun testTDeletion() = runBlocking {
assertEquals(0, taskDao.getAll().size)
// create task "happy"
@ -120,7 +116,7 @@ class TaskDaoTests : InjectingTestCase() {
/** Test save without prior create doesn't work */
@Test
fun testSaveWithoutCreate() {
fun testSaveWithoutCreate() = runBlocking {
// try to save task "happy"
val task = Task()
task.title = "happy"
@ -131,7 +127,7 @@ class TaskDaoTests : InjectingTestCase() {
/** Test passing invalid task indices to various things */
@Test
fun testInvalidIndex() {
fun testInvalidIndex() = runBlocking {
assertEquals(0, taskDao.getAll().size)
assertNull(taskDao.fetch(1))
taskDeleter.delete(listOf(1L))
@ -139,29 +135,4 @@ class TaskDaoTests : InjectingTestCase() {
// make sure db still works
assertEquals(0, taskDao.getAll().size)
}
@Test
fun findChildrenInList() {
taskDao.createNew(newTask(with(ID, 1L)))
taskDao.createNew(newTask(with(ID, 2L), with(PARENT, 1L)))
assertEquals(listOf(2L), taskDao.getChildren(listOf(1L, 2L)))
}
@Test
fun findRecursiveChildrenInList() {
taskDao.createNew(newTask(with(ID, 1L)))
taskDao.createNew(newTask(with(ID, 2L), with(PARENT, 1L)))
taskDao.createNew(newTask(with(ID, 3L), with(PARENT, 2L)))
assertEquals(listOf(2L, 3L, 3L), taskDao.getChildren(listOf(1L, 2L, 3L)))
}
@Test
fun findRecursiveChildrenInListAfterSkippingParent() {
taskDao.createNew(newTask(with(ID, 1L)))
taskDao.createNew(newTask(with(ID, 2L), with(PARENT, 1L)))
taskDao.createNew(newTask(with(ID, 3L), with(PARENT, 2L)))
assertEquals(listOf(2L, 3L), taskDao.getChildren(listOf(1L, 3L)))
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -0,0 +1,142 @@
package com.todoroo.astrid.gcal
import android.Manifest
import android.content.ContentUris
import android.content.ContentValues
import android.content.Context
import android.provider.CalendarContract
import android.provider.CalendarContract.Calendars
import android.provider.CalendarContract.Events
import androidx.core.net.toUri
import androidx.test.core.app.ApplicationProvider
import androidx.test.rule.GrantPermissionRule
import dagger.hilt.android.testing.HiltAndroidTest
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.tasks.TestUtilities.withTZ
import org.tasks.data.entity.Task
import org.tasks.injection.InjectingTestCase
import org.tasks.time.DateTime
import timber.log.Timber
import javax.inject.Inject
@HiltAndroidTest
class GCalHelperTest : InjectingTestCase() {
@get:Rule
val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
Manifest.permission.READ_CALENDAR,
Manifest.permission.WRITE_CALENDAR
)
@Inject lateinit var gcalHelper: GCalHelper
private var testCalendarId: Long = -1
@Before
override fun setUp() {
super.setUp()
testCalendarId = createTestCalendar()
}
@After
fun tearDown() {
if (testCalendarId > 0) {
try {
val context = ApplicationProvider.getApplicationContext<Context>()
context.contentResolver.delete(
ContentUris.withAppendedId(Calendars.CONTENT_URI, testCalendarId),
null,
null
)
} catch (e: Exception) {
Timber.e(e)
}
}
}
@Test fun allDayEventInNewYork() = assertAllDayEvent("America/New_York") // UTC-5
@Test fun allDayEventInBerlin() = assertAllDayEvent("Europe/Berlin") // UTC+1
@Test fun allDayEventInAuckland() = assertAllDayEvent("Pacific/Auckland") // UTC+13
@Test fun allDayEventInTokyo() = assertAllDayEvent("Asia/Tokyo") // UTC+9
@Test fun allDayEventInHonolulu() = assertAllDayEvent("Pacific/Honolulu") // UTC-10
@Test fun allDayEventInChatham() = assertAllDayEvent("Pacific/Chatham") // UTC+13:45
private fun assertAllDayEvent(timezone: String) = withTZ(timezone) {
val task = Task(dueDate = DateTime(2024, 12, 20).millis)
val eventUri = gcalHelper.createTaskEvent(task, testCalendarId.toString())
?: throw RuntimeException("Event not created")
val event = queryEvent(eventUri.toString()) ?: throw RuntimeException("Event not found")
assertEquals(
"DTSTART should be Dec 20 00:00 UTC",
DateTime(2024, 12, 20, timeZone = DateTime.UTC).millis,
event.dtStart
)
assertEquals(
"DTEND should be Dec 21 00:00 UTC",
DateTime(2024, 12, 21, timeZone = DateTime.UTC).millis,
event.dtEnd
)
}
private fun createTestCalendar(): Long {
val context = ApplicationProvider.getApplicationContext<Context>()
val values = ContentValues().apply {
put(Calendars.ACCOUNT_NAME, "test@test.com")
put(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL)
put(Calendars.NAME, "Test Calendar")
put(Calendars.CALENDAR_DISPLAY_NAME, "Test Calendar")
put(Calendars.CALENDAR_COLOR, 0xFF0000)
put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER)
put(Calendars.OWNER_ACCOUNT, "test@test.com")
put(Calendars.VISIBLE, 1)
put(Calendars.SYNC_EVENTS, 1)
}
val uri = Calendars.CONTENT_URI.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(Calendars.ACCOUNT_NAME, "test@test.com")
.appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL)
.build()
val calendarUri = context.contentResolver.insert(uri, values)
return ContentUris.parseId(calendarUri!!)
}
private fun queryEvent(eventUri: String): CalendarEvent? {
val context = ApplicationProvider.getApplicationContext<Context>()
val cursor = context.contentResolver.query(
eventUri.toUri(),
arrayOf(
Events.DTSTART,
Events.DTEND,
Events.ALL_DAY,
Events.EVENT_TIMEZONE
),
null,
null,
null
)
return cursor?.use {
if (it.moveToFirst()) {
CalendarEvent(
dtStart = it.getLong(0),
dtEnd = it.getLong(1),
allDay = it.getInt(2) == 1,
timezone = it.getString(3)
)
} else null
}
}
private data class CalendarEvent(
val dtStart: Long,
val dtEnd: Long,
val allDay: Boolean,
val timezone: String?
)
}

@ -1,92 +1,93 @@
package com.todoroo.astrid.gtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.api.services.tasks.model.TaskList
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager
import org.tasks.data.GoogleTaskAccount
import org.tasks.data.GoogleTaskListDao
import org.tasks.data.dao.CaldavDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavCalendar
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.GtaskListMaker.ID
import org.tasks.makers.GtaskListMaker.NAME
import org.tasks.makers.GtaskListMaker.REMOTE_ID
import org.tasks.makers.GtaskListMaker.newGtaskList
import org.tasks.makers.RemoteGtaskListMaker
import org.tasks.makers.RemoteGtaskListMaker.newRemoteList
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class GtasksListServiceTest : InjectingTestCase() {
@Inject lateinit var taskDeleter: TaskDeleter
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var googleTaskListDao: GoogleTaskListDao
@Inject lateinit var caldavDao: CaldavDao
private lateinit var gtasksListService: GtasksListService
@Before
override fun setUp() {
super.setUp()
gtasksListService = GtasksListService(googleTaskListDao, taskDeleter, localBroadcastManager)
gtasksListService = GtasksListService(caldavDao, taskDeleter, localBroadcastManager)
}
override fun inject(component: TestComponent) = component.inject(this)
@Test
fun testCreateNewList() {
fun testCreateNewList() = runBlocking {
setLists(
newRemoteList(
with(RemoteGtaskListMaker.REMOTE_ID, "1"), with(RemoteGtaskListMaker.NAME, "Default")))
assertEquals(
newGtaskList(with(ID, 1L), with(REMOTE_ID, "1"), with(NAME, "Default")),
googleTaskListDao.getById(1L))
CaldavCalendar(id = 1, account = "account", uuid = "1", name = "Default"),
caldavDao.getCalendarById(1L)
)
}
@Test
fun testGetListByRemoteId() {
val list = newGtaskList(with(REMOTE_ID, "1"))
list.id = googleTaskListDao.insertOrReplace(list)
assertEquals(list, gtasksListService.getList("1"))
fun testGetListByRemoteId() = runBlocking {
val list = CaldavCalendar(uuid = "1")
caldavDao.insert(list)
assertEquals(list, caldavDao.getCalendarByUuid("1"))
}
@Test
fun testGetListReturnsNullWhenNotFound() {
assertNull(gtasksListService.getList("1"))
fun testGetListReturnsNullWhenNotFound() = runBlocking {
assertNull(caldavDao.getCalendarByUuid("1"))
}
@Test
fun testDeleteMissingList() {
googleTaskListDao.insertOrReplace(newGtaskList(with(ID, 1L), with(REMOTE_ID, "1")))
fun testDeleteMissingList() = runBlocking {
caldavDao.insert(CaldavCalendar(account = "account", uuid = "1"))
val taskList = newRemoteList(with(RemoteGtaskListMaker.REMOTE_ID, "2"))
setLists(taskList)
assertEquals(
listOf(newGtaskList(with(ID, 2L), with(REMOTE_ID, "2"))),
googleTaskListDao.getLists("account"))
listOf(CaldavCalendar(id = 2, account = "account", uuid = "2", name = "Default")),
caldavDao.getCalendarsByAccount("account")
)
}
@Test
fun testUpdateListName() {
googleTaskListDao.insertOrReplace(
newGtaskList(with(ID, 1L), with(REMOTE_ID, "1"), with(NAME, "oldName")))
fun testUpdateListName() = runBlocking {
val calendar = CaldavCalendar(uuid = "1", name = "oldName", account = "account")
caldavDao.insert(calendar)
setLists(
newRemoteList(
with(RemoteGtaskListMaker.REMOTE_ID, "1"), with(RemoteGtaskListMaker.NAME, "newName")))
assertEquals("newName", googleTaskListDao.getById(1)!!.title)
assertEquals("newName", caldavDao.getCalendarById(calendar.id)!!.name)
}
@Test
fun testNewListLastSyncIsZero() {
fun testNewListLastSyncIsZero() = runBlocking {
setLists(TaskList().setId("1"))
assertEquals(0L, gtasksListService.getList("1").lastSync)
assertEquals(0L, caldavDao.getCalendarByUuid("1")!!.lastSync)
}
private fun setLists(vararg list: TaskList) {
val account = GoogleTaskAccount("account")
googleTaskListDao.insert(account)
private suspend fun setLists(vararg list: TaskList) {
val account = CaldavAccount(
username = "account",
uuid = "account",
)
caldavDao.insert(account)
gtasksListService.updateLists(account, listOf(*list))
}
}

@ -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 androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.GoogleTask
import org.tasks.data.GoogleTaskDao
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
class GtasksMetadataServiceTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var googleTaskDao: GoogleTaskDao
private var task: Task? = null
private var metadata: GoogleTask? = null
override fun inject(component: TestComponent) = component.inject(this)
@Test
fun testMetadataFound() {
givenTask(taskWithMetadata(null))
whenSearchForMetadata()
thenExpectMetadataFound()
}
@Test
fun testMetadataDoesntExist() {
givenTask(taskWithoutMetadata())
whenSearchForMetadata()
thenExpectNoMetadataFound()
}
private fun thenExpectNoMetadataFound() {
assertNull(metadata)
}
private fun thenExpectMetadataFound() {
assertNotNull(metadata)
}
// --- helpers
private fun whenSearchForMetadata() {
metadata = googleTaskDao.getByTaskId(task!!.id)
}
private 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 fun taskWithoutMetadata(): Task {
val task = Task()
task.title = "dogs"
taskDao.createNew(task)
return task
}
}

@ -1,37 +1,34 @@
package com.todoroo.astrid.model
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze
import org.tasks.SuspendFreeze.Companion.freezeClock
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.time.DateTimeUtils
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class TaskTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Test
fun testSavedTaskHasCreationDate() {
Freeze.freezeClock {
fun testSavedTaskHasCreationDate() = runBlocking {
freezeClock {
val task = Task()
taskDao.createNew(task)
assertEquals(DateTimeUtils.currentTimeMillis(), task.creationDate)
assertEquals(currentTimeMillis(), task.creationDate)
}
}
@Test
fun testReadTaskFromDb() {
fun testReadTaskFromDb() = runBlocking {
val task = Task()
taskDao.createNew(task)
val fromDb = taskDao.fetch(task.id)
assertEquals(task, fromDb)
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -1,326 +0,0 @@
package com.todoroo.astrid.reminders
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze
import org.tasks.R
import org.tasks.date.DateTimeUtils
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
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.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
@RunWith(AndroidJUnit4::class)
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
override fun setUp() {
super.setUp()
random = RandomStub()
preferences.clear()
service = ReminderService(preferences, jobs, random, taskDao)
}
override fun inject(component: TestComponent) = component.inject(this)
@Test
fun dontScheduleDueDateReminderWhenFlagNotSet() {
service.scheduleAlarm(newTask(with(ID, 1L), with(DUE_TIME, DateTimeUtils.newDateTime())))
assertTrue(jobs.isEmpty())
}
@Test
fun dontScheduleDueDateReminderWhenTimeNotSet() {
service.scheduleAlarm(newTask(with(ID, 1L), with(REMINDERS, Task.NOTIFY_AT_DEADLINE)))
assertTrue(jobs.isEmpty())
}
@Test
fun schedulePastDueDate() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTimeUtils.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, DateTimeUtils.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 = DateTimeUtils.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, DateTimeUtils.newDateTime().plusDays(1)),
with(COMPLETION_TIME, DateTimeUtils.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, DateTimeUtils.newDateTime().plusDays(1)),
with(DELETION_TIME, DateTimeUtils.newDateTime()),
with(REMINDERS, Task.NOTIFY_AT_DEADLINE))
service.scheduleAlarm(task)
assertTrue(jobs.isEmpty())
}
@Test
fun dontScheduleDueDateReminderWhenAlreadyReminded() {
val now = DateTimeUtils.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, DateTimeUtils.newDateTime()),
with(SNOOZE_TIME, DateTimeUtils.newDateTime().minusMinutes(5)),
with(REMINDER_LAST, DateTimeUtils.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 = DateTimeUtils.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
Freeze.freezeClock {
val now = DateTimeUtils.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
Freeze.freezeClock {
val now = DateTimeUtils.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
Freeze.freezeClock {
val now = DateTimeUtils.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 = DateTimeUtils.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,193 +0,0 @@
package com.todoroo.astrid.repeats
import android.annotation.SuppressLint
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.RRule
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.alarms.AlarmService
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.gcal.GCalHelper
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.InOrder
import org.mockito.Mockito
import org.tasks.LocalBroadcastManager
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TaskMaker.AFTER_COMPLETE
import org.tasks.makers.TaskMaker.COMPLETION_TIME
import org.tasks.makers.TaskMaker.DUE_TIME
import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.RRULE
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime
import java.text.ParseException
import javax.inject.Inject
@SuppressLint("NewApi")
@RunWith(AndroidJUnit4::class)
class RepeatTaskHelperTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
private lateinit var localBroadcastManager: LocalBroadcastManager
private lateinit var alarmService: AlarmService
private lateinit var gCalHelper: GCalHelper
private lateinit var helper: RepeatTaskHelper
private lateinit var mocks: InOrder
@Before
fun before() {
alarmService = Mockito.mock(AlarmService::class.java)
gCalHelper = Mockito.mock(GCalHelper::class.java)
localBroadcastManager = Mockito.mock(LocalBroadcastManager::class.java)
mocks = Mockito.inOrder(alarmService, gCalHelper, localBroadcastManager)
helper = RepeatTaskHelper(gCalHelper, alarmService, taskDao, localBroadcastManager)
}
@After
fun after() {
Mockito.verifyNoMoreInteractions(localBroadcastManager, gCalHelper, alarmService)
}
@Test
fun noRepeat() {
helper.handleRepeat(newTask(with(DUE_TIME, DateTime(2017, 10, 4, 13, 30))))
}
@Test
@Throws(ParseException::class)
fun testMinutelyRepeat() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=MINUTELY;INTERVAL=30")))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2017, 10, 4, 14, 0, 1))
}
@Test
@Throws(ParseException::class)
fun testMinutelyRepeatAfterCompletion() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(COMPLETION_TIME, DateTime(2017, 10, 4, 13, 17, 45, 340)),
with(RRULE, RRule("RRULE:FREQ=MINUTELY;INTERVAL=30")),
with(AFTER_COMPLETE, true))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2017, 10, 4, 13, 47, 1))
}
@Test
@Throws(ParseException::class)
fun testMinutelyDecrementCount() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=MINUTELY;COUNT=2;INTERVAL=30")))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2017, 10, 4, 14, 0, 1))
assertEquals(1, RRule(task.getRecurrenceWithoutFrom()).count)
}
@Test
@Throws(ParseException::class)
fun testMinutelyLastOccurrence() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=MINUTELY;COUNT=1;INTERVAL=30")))
helper.handleRepeat(task)
}
@Test
@Throws(ParseException::class)
fun testHourlyRepeat() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=HOURLY;INTERVAL=6")))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2017, 10, 4, 19, 30, 1))
}
@Test
@Throws(ParseException::class)
fun testHourlyRepeatAfterCompletion() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(COMPLETION_TIME, DateTime(2017, 10, 4, 13, 17, 45, 340)),
with(RRULE, RRule("RRULE:FREQ=HOURLY;INTERVAL=6")),
with(AFTER_COMPLETE, true))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2017, 10, 4, 19, 17, 1))
}
@Test
@Throws(ParseException::class)
fun testDailyRepeat() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=DAILY;INTERVAL=6")))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2017, 10, 10, 13, 30, 1))
}
@Test
@Throws(ParseException::class)
fun testRepeatWeeklyNoDays() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=WEEKLY;INTERVAL=2")))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2017, 10, 18, 13, 30, 1))
}
@Test
@Throws(ParseException::class)
fun testYearly() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=YEARLY;INTERVAL=3")))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2020, 10, 4, 13, 30, 1))
}
@Test
@Throws(ParseException::class)
fun testMonthlyRepeat() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 10, 4, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=MONTHLY;INTERVAL=3")))
repeatAndVerify(
task, DateTime(2017, 10, 4, 13, 30, 1), DateTime(2018, 1, 4, 13, 30, 1))
}
@Test
@Throws(ParseException::class)
fun testMonthlyRepeatAtEndOfMonth() {
val task = newTask(
with(ID, 1L),
with(DUE_TIME, DateTime(2017, 1, 31, 13, 30)),
with(RRULE, RRule("RRULE:FREQ=MONTHLY;INTERVAL=1")))
repeatAndVerify(
task, DateTime(2017, 1, 31, 13, 30, 1), DateTime(2017, 2, 28, 13, 30, 1))
}
private fun repeatAndVerify(task: Task, oldDueDate: DateTime, newDueDate: DateTime) {
helper.handleRepeat(task)
mocks.verify(gCalHelper).rescheduleRepeatingTask(task)
mocks.verify(alarmService).rescheduleAlarms(1, oldDueDate.millis, newDueDate.millis)
mocks.verify(localBroadcastManager).broadcastRepeat(1, oldDueDate.millis, newDueDate.millis)
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -0,0 +1,66 @@
package com.todoroo.astrid.repeats
import org.tasks.data.entity.Task
import com.todoroo.astrid.service.TaskCompleter
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.data.dao.TaskDao
import org.tasks.injection.InjectingTestCase
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@HiltAndroidTest
class RepeatWithSubtasksTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var taskCompleter: TaskCompleter
@Test
fun uncompleteGrandchildren() = runBlocking {
val grandparent = taskDao.createNew(
Task(
recurrence = "RRULE:FREQ=DAILY"
)
)
val parent = taskDao.createNew(
Task(
parent = grandparent
)
)
val child = taskDao.createNew(
Task(
parent = parent,
completionDate = currentTimeMillis(),
)
)
assertTrue(taskDao.fetch(child)!!.isCompleted)
taskCompleter.setComplete(grandparent)
assertFalse(taskDao.fetch(child)!!.isCompleted)
}
@Test
fun uncompleteGoogleTaskChildren() = runBlocking {
val parent = taskDao.createNew(
Task(
recurrence = "RRULE:FREQ=DAILY"
)
)
val child = taskDao.createNew(
Task(
parent = parent,
completionDate = currentTimeMillis(),
)
)
assertTrue(taskDao.fetch(child)!!.isCompleted)
taskCompleter.setComplete(parent)
assertFalse(taskDao.fetch(child)!!.isCompleted)
}
}

@ -5,26 +5,23 @@
*/
package com.todoroo.astrid.service
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import com.todoroo.astrid.utility.TitleParser
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.TagDataDao
import org.tasks.data.dao.TagDataDao
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import java.util.*
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class QuickAddMarkupTest : InjectingTestCase() {
private val tags = ArrayList<String>()
@Inject lateinit var tagDataDao: TagDataDao
private var task: Task? = null
override fun inject(component: TestComponent) = component.inject(this)
@Test
fun testTags() {
@ -82,11 +79,11 @@ class QuickAddMarkupTest : InjectingTestCase() {
assertEquals(title, task!!.title)
}
private fun whenTitleIs(title: String) {
private fun whenTitleIs(title: String) = runBlocking {
task = Task()
task!!.title = title
tags.clear()
TitleParser.parse(tagDataDao, task, tags)
TitleParser.parse(tagDataDao, task!!, tags)
}
private fun assertPriority(priority: Int) {

@ -0,0 +1,100 @@
package com.todoroo.astrid.service
import com.todoroo.astrid.api.PermaSql.VALUE_EOD
import com.todoroo.astrid.api.PermaSql.VALUE_EOD_NEXT_WEEK
import com.todoroo.astrid.api.PermaSql.VALUE_EOD_TOMORROW
import org.tasks.data.entity.Task
import org.tasks.data.entity.Task.Companion.DUE_DATE
import org.tasks.data.entity.Task.Companion.HIDE_UNTIL
import org.tasks.data.entity.Task.Companion.URGENCY_SPECIFIC_DAY
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Test
import org.tasks.R
import org.tasks.SuspendFreeze.Companion.freezeAt
import org.tasks.data.createDueDate
import org.tasks.injection.InjectingTestCase
import org.tasks.preferences.Preferences
import org.tasks.time.DateTime
import javax.inject.Inject
@HiltAndroidTest
class TaskCreatorTest : InjectingTestCase() {
@Inject lateinit var preferences: Preferences
@Inject lateinit var taskCreator: TaskCreator
@Test
fun setStartAndDueFromFilter() = runBlocking {
val task = freezeAt(DateTime(2021, 2, 4, 14, 56, 34, 126)) {
taskCreator.create(mapOf(
HIDE_UNTIL.name!! to VALUE_EOD,
DUE_DATE.name!! to VALUE_EOD_TOMORROW
), null)
}
assertEquals(DateTime(2021, 2, 4).millis, task.hideUntil)
assertEquals(
createDueDate(URGENCY_SPECIFIC_DAY, DateTime(2021, 2, 5).millis),
task.dueDate
)
}
@Test
fun setDefaultStartWithFilterDue() = runBlocking {
preferences.setString(R.string.p_default_hideUntil_key, Task.HIDE_UNTIL_DUE.toString())
val task = freezeAt(DateTime(2021, 2, 4, 14, 56, 34, 126)) {
taskCreator.create(mapOf(
DUE_DATE.name!! to VALUE_EOD
), null)
}
assertEquals(DateTime(2021, 2, 4).millis, task.hideUntil)
}
@Test
fun setStartAndDueFromPreferences() = runBlocking {
preferences.setString(R.string.p_default_urgency_key, Task.URGENCY_TODAY.toString())
preferences.setString(R.string.p_default_hideUntil_key, Task.HIDE_UNTIL_DUE.toString())
val task = freezeAt(DateTime(2021, 2, 4, 14, 56, 34, 126)) {
taskCreator.create(null, "test")
}
assertEquals(DateTime(2021, 2, 4).millis, task.hideUntil)
assertEquals(
createDueDate(URGENCY_SPECIFIC_DAY, DateTime(2021, 2, 4).millis),
task.dueDate
)
}
@Test
fun filterStartOverridesDefaultStart() = runBlocking {
preferences.setString(R.string.p_default_urgency_key, Task.URGENCY_TODAY.toString())
preferences.setString(R.string.p_default_hideUntil_key, Task.HIDE_UNTIL_DUE.toString())
val task = freezeAt(DateTime(2021, 2, 4, 14, 56, 34, 126)) {
taskCreator.create(mapOf(
HIDE_UNTIL.name!! to VALUE_EOD_NEXT_WEEK
), null)
}
assertEquals(DateTime(2021, 2, 11).millis, task.hideUntil)
}
@Test
fun filterDueOverridesDefaultDue() = runBlocking {
preferences.setString(R.string.p_default_urgency_key, Task.URGENCY_TODAY.toString())
val task = freezeAt(DateTime(2021, 2, 4, 14, 56, 34, 126)) {
taskCreator.create(mapOf(
DUE_DATE.name!! to VALUE_EOD_TOMORROW
), null)
}
assertEquals(
createDueDate(URGENCY_SPECIFIC_DAY, DateTime(2021, 2, 5).millis),
task.dueDate
)
}
}

@ -0,0 +1,39 @@
package com.todoroo.astrid.service
import org.tasks.data.entity.Task
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.data.dao.TaskDao
import org.tasks.injection.InjectingTestCase
import javax.inject.Inject
@HiltAndroidTest
class TaskDeleterTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var taskDeleter: TaskDeleter
@Test
fun markTaskAsDeleted() = runBlocking {
val task = Task()
taskDao.createNew(task)
taskDeleter.markDeleted(task)
assertTrue(taskDao.fetch(task.id)!!.isDeleted)
}
@Test
fun dontDeleteReadOnlyTasks() = runBlocking {
val task = Task(
readOnly = true
)
taskDao.createNew(task)
taskDeleter.markDeleted(task)
assertFalse(taskDao.fetch(task.id)!!.isDeleted)
}
}

@ -1,123 +1,123 @@
package com.todoroo.astrid.service
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.dao.TaskDao
import org.junit.Assert.*
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.CaldavCalendar
import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_CALDAV
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS
import org.tasks.data.entity.CaldavCalendar
import org.tasks.filters.CaldavFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.jobs.WorkManager
import org.tasks.makers.CaldavTaskMaker
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.REMOTE_ID
import org.tasks.makers.CaldavTaskMaker.REMOTE_PARENT
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.GoogleTaskMaker.LIST
import org.tasks.makers.GoogleTaskMaker.PARENT
import org.tasks.makers.GoogleTaskMaker.TASK
import org.tasks.makers.GoogleTaskMaker.newGoogleTask
import org.tasks.makers.GtaskListMaker
import org.tasks.makers.GtaskListMaker.newGtaskList
import org.tasks.makers.TaskMaker
import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class TaskMoverTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var workManager: WorkManager
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var taskMover: TaskMover
@Before
override fun setUp() {
super.setUp()
taskDao.initialize(workManager)
fun setup() {
runBlocking {
caldavDao.insert(CaldavCalendar(uuid = "1", account = "account1"))
caldavDao.insert(CaldavCalendar(uuid = "2", account = "account2"))
}
}
@Test
fun moveBetweenGoogleTaskLists() {
fun moveBetweenGoogleTaskLists() = runBlocking {
setAccountType("account1", TYPE_GOOGLE_TASKS)
setAccountType("account2", TYPE_GOOGLE_TASKS)
createTasks(1)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
moveToGoogleTasks("2", 1)
assertEquals("2", googleTaskDao.getByTaskId(1)!!.listId)
assertEquals("2", googleTaskDao.getByTaskId(1)?.calendar)
}
@Test
fun deleteGoogleTaskAfterMove() {
fun deleteGoogleTaskAfterMove() = runBlocking {
createTasks(1)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
moveToGoogleTasks("2", 1)
val deleted = googleTaskDao.getDeletedByTaskId(1)
val deleted = googleTaskDao.getDeletedByTaskId(1, "account1")
assertEquals(1, deleted.size.toLong())
assertEquals(1, deleted[0].task)
assertTrue(deleted[0].deleted > 0)
}
@Test
fun moveChildrenBetweenGoogleTaskLists() {
createTasks(1, 2)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newGoogleTask(with(TASK, 2), with(LIST, "1"), with(PARENT, 1L)))
fun moveChildrenBetweenGoogleTaskLists() = runBlocking {
setAccountType("account1", TYPE_GOOGLE_TASKS)
setAccountType("account2", TYPE_GOOGLE_TASKS)
createTasks(1)
createSubtask(2, 1)
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 2), with(CALENDAR, "1")))
moveToGoogleTasks("2", 1)
val deleted = googleTaskDao.getDeletedByTaskId(2)
val deleted = googleTaskDao.getDeletedByTaskId(2, "account1")
assertEquals(1, deleted.size.toLong())
assertEquals(2, deleted[0].task)
assertTrue(deleted[0].deleted > 0)
val task = googleTaskDao.getByTaskId(2)!!
assertEquals(1, task.parent)
assertEquals("2", task.listId)
assertEquals(1L, taskDao.fetch(2)?.parent)
assertEquals("2", googleTaskDao.getByTaskId(2)?.calendar)
}
@Test
fun moveBetweenCaldavList() {
fun moveBetweenCaldavList() = runBlocking {
createTasks(1)
caldavDao.insert(newCaldavTask(with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1")))
caldavDao.insert(newCaldavTask(with(TASK, 1L), with(CALENDAR, "1")))
moveToCaldavList("2", 1)
assertEquals("2", caldavDao.getTask(1)!!.calendar)
}
@Test
fun deleteCaldavTaskAfterMove() {
fun deleteCaldavTaskAfterMove() = runBlocking {
createTasks(1)
caldavDao.insert(newCaldavTask(with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1")))
caldavDao.insert(newCaldavTask(with(TASK, 1L), with(CALENDAR, "1")))
moveToCaldavList("2", 1)
val deleted = caldavDao.getDeleted("1")
val deleted = caldavDao.getMoved("1")
assertEquals(1, deleted.size.toLong())
assertEquals(1, deleted[0].task)
assertTrue(deleted[0].deleted > 0)
}
@Test
fun moveRecursiveCaldavChildren() {
fun moveRecursiveCaldavChildren() = runBlocking {
createTasks(1)
createSubtask(2, 1)
createSubtask(3, 2)
caldavDao.insert(
listOf(
newCaldavTask(
with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
with(TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
newCaldavTask(
with(CaldavTaskMaker.TASK, 2L),
with(TASK, 2L),
with(CALENDAR, "1"),
with(REMOTE_ID, "b"),
with(REMOTE_PARENT, "a")),
newCaldavTask(
with(CaldavTaskMaker.TASK, 3L),
with(TASK, 3L),
with(CALENDAR, "1"),
with(REMOTE_PARENT, "b"))))
moveToCaldavList("2", 1)
val deleted = caldavDao.getDeleted("1")
val deleted = caldavDao.getMoved("1")
assertEquals(3, deleted.size.toLong())
val task = caldavDao.getTask(3)
assertEquals("2", task!!.calendar)
@ -125,36 +125,38 @@ class TaskMoverTest : InjectingTestCase() {
}
@Test
fun moveGoogleTaskChildrenToCaldav() {
createTasks(1, 2)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newGoogleTask(with(TASK, 2), with(LIST, "1"), with(PARENT, 1L)))
moveToCaldavList("1", 1)
fun moveGoogleTaskChildrenToCaldav() = runBlocking {
setAccountType("account1", TYPE_GOOGLE_TASKS)
setAccountType("account2", TYPE_CALDAV)
createTasks(1)
createSubtask(2, 1)
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 2), with(CALENDAR, "1")))
moveToCaldavList("2", 1)
val task = caldavDao.getTask(2)
assertEquals("1", task!!.calendar)
assertEquals(1, taskDao.fetch(2)!!.parent)
assertEquals("2", task!!.calendar)
assertEquals(1L, taskDao.fetch(2)?.parent)
}
@Test
fun flattenLocalSubtasksWhenMovingToGoogleTasks() {
fun flattenLocalSubtasksWhenMovingToGoogleTasks() = runBlocking {
createTasks(1)
createSubtask(2, 1)
createSubtask(3, 2)
moveToGoogleTasks("1", 1)
assertEquals(1, googleTaskDao.getByTaskId(3)!!.parent)
assertEquals(0, taskDao.fetch(3)!!.parent)
assertEquals(1L, taskDao.fetch(3)?.parent)
}
@Test
fun moveLocalChildToGoogleTasks() {
fun moveLocalChildToGoogleTasks() = runBlocking {
createTasks(1)
createSubtask(2, 1)
moveToGoogleTasks("1", 2)
assertEquals(0, taskDao.fetch(2)!!.parent)
assertEquals(0L, taskDao.fetch(2)?.parent)
}
@Test
fun moveLocalChildToCaldav() {
fun moveLocalChildToCaldav() = runBlocking {
createTasks(1)
createSubtask(2, 1)
moveToCaldavList("1", 2)
@ -162,49 +164,50 @@ class TaskMoverTest : InjectingTestCase() {
}
@Test
fun flattenCaldavSubtasksWhenMovingToGoogleTasks() {
fun flattenCaldavSubtasksWhenMovingToGoogleTasks() = runBlocking {
createTasks(1)
createSubtask(2, 1)
createSubtask(3, 2)
caldavDao.insert(
listOf(
newCaldavTask(
with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
with(TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
newCaldavTask(
with(CaldavTaskMaker.TASK, 2L),
with(TASK, 2L),
with(CALENDAR, "1"),
with(REMOTE_ID, "b"),
with(REMOTE_PARENT, "a")),
newCaldavTask(
with(CaldavTaskMaker.TASK, 3L),
with(TASK, 3L),
with(CALENDAR, "1"),
with(REMOTE_PARENT, "b"))))
moveToGoogleTasks("1", 1)
val task = googleTaskDao.getByTaskId(3L)!!
assertEquals(1, task.parent)
moveToGoogleTasks("2", 1)
val task = taskDao.fetch(3L)
assertEquals(1L, task?.parent)
}
@Test
fun moveGoogleTaskChildWithoutParent() {
createTasks(1, 2)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newGoogleTask(with(TASK, 2), with(LIST, "1"), with(PARENT, 1L)))
fun moveGoogleTaskChildWithoutParent() = runBlocking {
setAccountType("account2", TYPE_GOOGLE_TASKS)
createTasks(1)
createSubtask(2, 1)
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 2), with(CALENDAR, "1")))
moveToGoogleTasks("2", 2)
val task = googleTaskDao.getByTaskId(2)!!
assertEquals(0L, task.parent)
assertEquals("2", task.listId)
assertEquals(0L, taskDao.fetch(2)?.parent)
assertEquals("2", googleTaskDao.getByTaskId(2)?.calendar)
}
@Test
fun moveCaldavChildWithoutParent() {
fun moveCaldavChildWithoutParent() = runBlocking {
createTasks(1)
createSubtask(2, 1)
caldavDao.insert(
listOf(
newCaldavTask(
with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
with(TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
newCaldavTask(
with(CaldavTaskMaker.TASK, 2L),
with(TASK, 2L),
with(CALENDAR, "1"),
with(REMOTE_PARENT, "a"))))
moveToCaldavList("2", 2)
@ -213,91 +216,114 @@ class TaskMoverTest : InjectingTestCase() {
}
@Test
fun moveGoogleTaskToCaldav() {
fun moveGoogleTaskToCaldav() = runBlocking {
createTasks(1)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
moveToCaldavList("2", 1)
assertEquals("2", caldavDao.getTask(1)!!.calendar)
}
@Test
fun moveCaldavToGoogleTask() {
fun moveCaldavToGoogleTask() = runBlocking {
setAccountType("account1", TYPE_CALDAV)
setAccountType("account2", TYPE_GOOGLE_TASKS)
createTasks(1)
caldavDao.insert(newCaldavTask(with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1")))
caldavDao.insert(newCaldavTask(with(TASK, 1L), with(CALENDAR, "1")))
moveToGoogleTasks("2", 1)
assertEquals("2", googleTaskDao.getByTaskId(1L)!!.listId)
assertEquals("2", googleTaskDao.getByTaskId(1L)?.calendar)
}
@Test
fun moveLocalToCaldav() {
fun moveLocalToCaldav() = runBlocking {
createTasks(1)
createSubtask(2, 1)
createSubtask(3, 2)
moveToCaldavList("1", 1)
assertEquals("1", caldavDao.getTask(3)!!.calendar)
assertEquals(2, taskDao.fetch(3)!!.parent)
assertEquals("1", caldavDao.getTask(3)?.calendar)
assertEquals(2L, taskDao.fetch(3)?.parent)
}
@Test
fun moveToSameGoogleTaskListIsNoop() {
fun moveToSameGoogleTaskListIsNoop() = runBlocking {
setAccountType("account1", TYPE_GOOGLE_TASKS)
createTasks(1)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
moveToGoogleTasks("1", 1)
assertTrue(googleTaskDao.getDeletedByTaskId(1).isEmpty())
assertTrue(googleTaskDao.getDeletedByTaskId(1, "account1").isEmpty())
assertEquals(1, googleTaskDao.getAllByTaskId(1).size.toLong())
}
@Test
fun moveToSameCaldavListIsNoop() {
fun moveToSameCaldavListIsNoop() = runBlocking {
createTasks(1)
caldavDao.insert(newCaldavTask(with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1")))
caldavDao.insert(newCaldavTask(with(TASK, 1L), with(CALENDAR, "1")))
moveToCaldavList("1", 1)
assertTrue(caldavDao.getDeleted("1").isEmpty())
assertTrue(caldavDao.getMoved("1").isEmpty())
assertEquals(1, caldavDao.getTasks(1).size.toLong())
}
@Test
fun dontDuplicateWhenParentAndChildGoogleTaskMoved() {
createTasks(1, 2)
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newGoogleTask(with(TASK, 2), with(LIST, "1"), with(PARENT, 1L)))
fun dontDuplicateWhenParentAndChildGoogleTaskMoved() = runBlocking {
createTasks(1)
createSubtask(2, 1)
googleTaskDao.insert(newCaldavTask(with(TASK, 1), with(CALENDAR, "1")))
googleTaskDao.insert(newCaldavTask(with(TASK, 2), with(CALENDAR, "1")))
moveToGoogleTasks("2", 1, 2)
assertEquals(1, googleTaskDao.getAllByTaskId(2).filter { it.deleted == 0L }.size)
}
@Test
fun dontDuplicateWhenParentAndChildCaldavMoved() {
fun dontDuplicateWhenParentAndChildCaldavMoved() = runBlocking {
createTasks(1)
createSubtask(2, 1)
caldavDao.insert(
listOf(
newCaldavTask(
with(CaldavTaskMaker.TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
with(TASK, 1L), with(CALENDAR, "1"), with(REMOTE_ID, "a")),
newCaldavTask(
with(CaldavTaskMaker.TASK, 2L),
with(TASK, 2L),
with(CALENDAR, "1"),
with(REMOTE_PARENT, "a"))))
moveToCaldavList("2", 1, 2)
assertEquals(1, caldavDao.getTasks(2).filter { it.deleted == 0L }.size)
}
private fun createTasks(vararg ids: Long) {
private suspend fun createTasks(vararg ids: Long) {
for (id in ids) {
taskDao.createNew(newTask(with(ID, id)))
}
}
private fun createSubtask(id: Long, parent: Long) {
taskDao.createNew(newTask(with(ID, id), with(TaskMaker.PARENT, parent)))
private suspend fun createSubtask(id: Long, parent: Long) {
taskDao.createNew(newTask(with(ID, id), with(PARENT, parent)))
}
private fun moveToGoogleTasks(list: String, vararg tasks: Long) {
taskMover.move(tasks.toList(), GtasksFilter(newGtaskList(with(GtaskListMaker.REMOTE_ID, list))))
private suspend fun moveToGoogleTasks(list: String, vararg tasks: Long) {
taskMover.move(
tasks.toList(),
CaldavFilter(
calendar = CaldavCalendar(uuid = list),
account = CaldavAccount(accountType = TYPE_GOOGLE_TASKS)
)
)
}
private fun moveToCaldavList(calendar: String, vararg tasks: Long) {
taskMover.move(tasks.toList(), CaldavFilter(CaldavCalendar("", calendar)))
private suspend fun moveToCaldavList(calendar: String, vararg tasks: Long) {
taskMover.move(
tasks.toList(),
CaldavFilter(
CaldavCalendar(name = "", uuid = calendar),
account = CaldavAccount(accountType = TYPE_CALDAV)
)
)
}
override fun inject(component: TestComponent) = component.inject(this)
private suspend fun setAccountType(account: String, type: Int) {
caldavDao.insert(
CaldavAccount(
uuid = account,
accountType = type,
)
)
}
}

@ -5,42 +5,53 @@
*/
package com.todoroo.astrid.service
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.Frequency
import com.google.ical.values.RRule
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.utility.TitleParser
import org.junit.Assert.*
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import net.fortuna.ical4j.model.Recur.Frequency.DAILY
import net.fortuna.ical4j.model.Recur.Frequency.MONTHLY
import net.fortuna.ical4j.model.Recur.Frequency.WEEKLY
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotSame
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.R
import org.tasks.data.TagDataDao
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.Task
import org.tasks.data.newLocalAccount
import org.tasks.date.DateTimeUtils
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.preferences.Preferences
import java.util.*
import org.tasks.repeats.RecurrenceUtils.newRecur
import java.util.Calendar
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class TitleParserTest : InjectingTestCase() {
@Inject lateinit var tagDataDao: TagDataDao
@Inject lateinit var preferences: Preferences
@Inject lateinit var taskCreator: TaskCreator
@Inject lateinit var caldavDao: CaldavDao
@Before
override fun setUp() {
super.setUp()
preferences.setStringFromInteger(R.string.p_default_urgency_key, 0)
runBlocking {
super.setUp()
preferences.setStringFromInteger(R.string.p_default_urgency_key, 0)
caldavDao.newLocalAccount()
}
}
override fun inject(component: TestComponent) = component.inject(this)
/**
* test that completing a task w/ no regular expressions creates a simple task with no date, no
* repeat, no lists
*/
@Test
fun testNoRegexes() {
fun testNoRegexes() = runBlocking {
val task = taskCreator.basicQuickAddTask("Jog")
val nothing = Task()
assertFalse(task.hasDueTime())
@ -146,13 +157,14 @@ class TitleParserTest : InjectingTestCase() {
}
}
private fun insertTitleAddTask(title: String): Task {
return taskCreator.createWithValues(title)
private fun insertTitleAddTask(title: String): Task = runBlocking {
taskCreator.createWithValues(title)
}
// ----------------Days begin----------------//
@Test
fun testDays() {
@Ignore("Flaky test")
fun testDays() = runBlocking {
val today = Calendar.getInstance()
var title = "Jog today"
var task = taskCreator.createWithValues(title)
@ -181,7 +193,7 @@ class TitleParserTest : InjectingTestCase() {
// ----------------Priority begin----------------//
/** tests all words using priority 0 */
@Test
fun testPriority0() {
fun testPriority0() = runBlocking {
val acceptedStrings = arrayOf("priority 0", "least priority", "lowest priority", "bang 0")
for (acceptedString in acceptedStrings) {
val title = "Jog $acceptedString"
@ -196,7 +208,7 @@ class TitleParserTest : InjectingTestCase() {
}
@Test
fun testPriority1() {
fun testPriority1() = runBlocking {
val acceptedStringsAtEnd = arrayOf("priority 1", "low priority", "bang", "bang 1")
val acceptedStringsAnywhere = arrayOf("!1", "!")
var task: Task
@ -221,7 +233,7 @@ class TitleParserTest : InjectingTestCase() {
}
@Test
fun testPriority2() {
fun testPriority2() = runBlocking {
val acceptedStringsAtEnd = arrayOf("priority 2", "high priority", "bang bang", "bang 2")
val acceptedStringsAnywhere = arrayOf("!2", "!!")
for (acceptedStringAtEnd in acceptedStringsAtEnd) {
@ -243,7 +255,7 @@ class TitleParserTest : InjectingTestCase() {
}
@Test
fun testPriority3() {
fun testPriority3() = runBlocking {
val acceptedStringsAtEnd = arrayOf(
"priority 3",
"highest priority",
@ -273,25 +285,25 @@ class TitleParserTest : InjectingTestCase() {
// ----------------Repeats begin----------------//
/** test daily repeat from due date, but with no due date set */
@Test
fun testDailyWithNoDueDate() {
fun testDailyWithNoDueDate() = runBlocking {
var title = "Jog daily"
var task = taskCreator.createWithValues(title)
val rrule = RRule()
rrule.freq = Frequency.DAILY
rrule.interval = 1
assertEquals(task.recurrence, rrule.toIcal())
val recur = newRecur()
recur.setFrequency(DAILY.name)
recur.interval = 1
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
title = "Jog every day"
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
for (i in 1..12) {
title = "Jog every $i days."
rrule.interval = i
recur.interval = i
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
}
@ -299,25 +311,25 @@ class TitleParserTest : InjectingTestCase() {
/** test weekly repeat from due date, with no due date & time set */
@Test
fun testWeeklyWithNoDueDate() {
fun testWeeklyWithNoDueDate() = runBlocking {
var title = "Jog weekly"
var task = taskCreator.createWithValues(title)
val rrule = RRule()
rrule.freq = Frequency.WEEKLY
rrule.interval = 1
assertEquals(task.recurrence, rrule.toIcal())
val recur = newRecur()
recur.setFrequency(WEEKLY.name)
recur.interval = 1
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
title = "Jog every week"
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
for (i in 1..12) {
title = "Jog every $i weeks"
rrule.interval = i
recur.interval = i
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
}
@ -325,70 +337,70 @@ class TitleParserTest : InjectingTestCase() {
/** test hourly repeat from due date, with no due date but no time */
@Test
fun testMonthlyFromNoDueDate() {
fun testMonthlyFromNoDueDate() = runBlocking {
var title = "Jog monthly"
var task = taskCreator.createWithValues(title)
val rrule = RRule()
rrule.freq = Frequency.MONTHLY
rrule.interval = 1
assertEquals(task.recurrence, rrule.toIcal())
val recur = newRecur()
recur.setFrequency(MONTHLY.name)
recur.interval = 1
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
title = "Jog every month"
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
for (i in 1..12) {
title = "Jog every $i months"
rrule.interval = i
recur.interval = i
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertFalse(task.hasDueTime())
assertFalse(task.hasDueDate())
}
}
@Test
fun testDailyFromDueDate() {
fun testDailyFromDueDate() = runBlocking {
var title = "Jog daily starting from today"
var task = taskCreator.createWithValues(title)
val rrule = RRule()
rrule.freq = Frequency.DAILY
rrule.interval = 1
assertEquals(task.recurrence, rrule.toIcal())
val recur = newRecur()
recur.setFrequency(DAILY.name)
recur.interval = 1
assertEquals(task.recurrence, recur.toString())
assertTrue(task.hasDueDate())
title = "Jog every day starting from today"
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertTrue(task.hasDueDate())
for (i in 1..12) {
title = "Jog every $i days starting from today"
rrule.interval = i
recur.interval = i
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertTrue(task.hasDueDate())
}
}
@Test
fun testWeeklyFromDueDate() {
fun testWeeklyFromDueDate() = runBlocking {
var title = "Jog weekly starting from today"
var task = taskCreator.createWithValues(title)
val rrule = RRule()
rrule.freq = Frequency.WEEKLY
rrule.interval = 1
assertEquals(task.recurrence, rrule.toIcal())
val recur = newRecur()
recur.setFrequency(WEEKLY.name)
recur.interval = 1
assertEquals(task.recurrence, recur.toString())
assertTrue(task.hasDueDate())
title = "Jog every week starting from today"
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertTrue(task.hasDueDate())
for (i in 1..12) {
title = "Jog every $i weeks starting from today"
rrule.interval = i
recur.interval = i
task = taskCreator.createWithValues(title)
assertEquals(task.recurrence, rrule.toIcal())
assertEquals(task.recurrence, recur.toString())
assertTrue(task.hasDueDate())
}
}
@ -396,7 +408,7 @@ class TitleParserTest : InjectingTestCase() {
// ----------------Tags begin----------------//
/** tests all words using priority 0 */
@Test
fun testTagsPound() {
fun testTagsPound() = runBlocking {
val acceptedStrings = arrayOf("#tag", "#a", "#(a cool tag)", "#(cool)")
var task: Task
for (acceptedString in acceptedStrings) {
@ -413,7 +425,7 @@ class TitleParserTest : InjectingTestCase() {
/** tests all words using priority 0 */
@Test
fun testTagsAt() {
fun testTagsAt() = runBlocking {
val acceptedStrings = arrayOf("@tag", "@a", "@(a cool tag)", "@(cool)")
var task: Task
for (acceptedString in acceptedStrings) {

@ -0,0 +1,62 @@
@file:Suppress("ClassName")
package com.todoroo.astrid.service
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.service.Upgrade_11_12_3.Companion.LEGACY_PREFERENCE
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.TestUtilities.newPreferences
import org.tasks.preferences.Preferences
@RunWith(AndroidJUnit4::class)
class Upgrade_11_12_3_Test {
private lateinit var preferences: Preferences
private lateinit var upgrader: Upgrade_11_12_3
@Test
fun migrateNoDefaultReminders() {
preferences.setString(LEGACY_PREFERENCE, "0")
upgrader.migrateDefaultReminderPreference()
assertEquals(emptySet<String>(), preferences.defaultRemindersSet)
assertEquals(0, preferences.defaultReminders)
}
@Test
fun migrateWhenDue() {
preferences.setString(LEGACY_PREFERENCE, "2")
upgrader.migrateDefaultReminderPreference()
assertEquals(setOf("2"), preferences.defaultRemindersSet)
assertEquals(2, preferences.defaultReminders)
}
@Test
fun migrateWhenOverdue() {
preferences.setString(LEGACY_PREFERENCE, "4")
upgrader.migrateDefaultReminderPreference()
assertEquals(setOf("4"), preferences.defaultRemindersSet)
assertEquals(4, preferences.defaultReminders)
}
@Test
fun migrateWhenDueAndOverdue() {
preferences.setString(LEGACY_PREFERENCE, "6")
upgrader.migrateDefaultReminderPreference()
assertEquals(setOf("2", "4"), preferences.defaultRemindersSet)
assertEquals(6, preferences.defaultReminders)
}
@Before
fun setUp() {
preferences = newPreferences(ApplicationProvider.getApplicationContext())
preferences.clear()
upgrader = Upgrade_11_12_3(preferences)
}
}

@ -0,0 +1,217 @@
@file:Suppress("ClassName")
package com.todoroo.astrid.service
import com.natpryce.makeiteasy.MakeItEasy.with
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Before
import org.junit.Test
import org.tasks.SuspendFreeze.Companion.freezeAt
import org.tasks.TestUtilities.assertEquals
import org.tasks.caldav.VtodoCache
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.TaskDao
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.Task
import org.tasks.injection.InjectingTestCase
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.REMOTE_ID
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker.DUE_DATE
import org.tasks.makers.TaskMaker.HIDE_TYPE
import org.tasks.makers.TaskMaker.MODIFICATION_TIME
import org.tasks.makers.TaskMaker.newTask
import org.tasks.opentasks.TestOpenTaskDao
import org.tasks.time.DateTime
import javax.inject.Inject
@HiltAndroidTest
class Upgrade_11_3_Test : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var openTaskDao: TestOpenTaskDao
@Inject lateinit var upgrader: Upgrade_11_3
@Inject lateinit var vtodoCache: VtodoCache
private lateinit var calendar: CaldavCalendar
@Before
override fun setUp() {
super.setUp()
calendar = CaldavCalendar()
runBlocking {
caldavDao.insert(calendar)
}
}
@Test
fun applyRemoteiCalendarStartDate() = runBlocking {
val taskId = taskDao.insert(newTask())
val caldavTask = newCaldavTask(with(TASK, taskId), with(CALENDAR, calendar.uuid))
caldavDao.insert(caldavTask)
vtodoCache.putVtodo(calendar, caldavTask, VTODO_WITH_START_DATE)
upgrader.applyiCalendarStartDates()
assertEquals(DateTime(2021, 1, 21), taskDao.fetch(taskId)?.hideUntil)
}
@Test
fun ignoreRemoteiCalendarStartDate() = runBlocking {
val taskId = taskDao.insert(newTask(
with(DUE_DATE, DateTime(2021, 1, 20)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE)
))
val caldavTask = newCaldavTask(with(TASK, taskId), with(CALENDAR, calendar.uuid))
caldavDao.insert(caldavTask)
vtodoCache.putVtodo(calendar, caldavTask, VTODO_WITH_START_DATE)
upgrader.applyiCalendarStartDates()
assertEquals(DateTime(2021, 1, 20), taskDao.fetch(taskId)?.hideUntil)
}
@Test
fun touchTaskWithLocaliCalendarStartDate() = runBlocking {
val upgradeTime = DateTime(2021, 1, 21, 11, 47, 32, 450)
val taskId = taskDao.insert(newTask(
with(DUE_DATE, DateTime(2021, 1, 20)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE),
with(MODIFICATION_TIME, DateTime(2021, 1, 21, 9, 50, 4, 348))
))
val caldavTask = newCaldavTask(with(TASK, taskId), with(CALENDAR, calendar.uuid))
caldavDao.insert(caldavTask)
vtodoCache.putVtodo(calendar, caldavTask, VTODO_WITH_START_DATE)
freezeAt(upgradeTime) {
upgrader.applyiCalendarStartDates()
}
assertEquals(upgradeTime, taskDao.fetch(taskId)?.modificationDate)
}
@Test
fun dontTouchWhenNoiCalendarStartDate() = runBlocking {
val modificationTime = DateTime(2021, 1, 21, 9, 50, 4, 348)
val taskId = taskDao.insert(newTask(with(MODIFICATION_TIME, modificationTime)))
val caldavTask = newCaldavTask(with(TASK, taskId), with(CALENDAR, calendar.uuid))
caldavDao.insert(caldavTask)
vtodoCache.putVtodo(calendar, caldavTask, VTODO_NO_START_DATE)
upgrader.applyiCalendarStartDates()
assertEquals(modificationTime, taskDao.fetch(taskId)?.modificationDate)
}
@Test
fun applyRemoteOpenTaskStartDate() = runBlocking {
val (listId, list) = openTaskDao.insertList()
openTaskDao.insertTask(listId, VTODO_WITH_START_DATE)
val taskId = taskDao.insert(newTask())
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(REMOTE_ID, "4586964443060640060"),
with(TASK, taskId)
))
upgrader.applyOpenTaskStartDates()
assertEquals(DateTime(2021, 1, 21), taskDao.fetch(taskId)?.hideUntil)
}
@Test
fun ignoreRemoteOpenTaskStartDate() = runBlocking {
val (listId, list) = openTaskDao.insertList()
openTaskDao.insertTask(listId, VTODO_WITH_START_DATE)
val taskId = taskDao.insert(newTask(
with(DUE_DATE, DateTime(2021, 1, 20)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE)
))
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(REMOTE_ID, "4586964443060640060"),
with(TASK, taskId)
))
upgrader.applyOpenTaskStartDates()
assertEquals(DateTime(2021, 1, 20), taskDao.fetch(taskId)?.hideUntil)
}
@Test
fun touchWithOpenTaskStartDate() = runBlocking {
val upgradeTime = DateTime(2021, 1, 21, 11, 47, 32, 450)
val (listId, list) = openTaskDao.insertList()
openTaskDao.insertTask(listId, VTODO_WITH_START_DATE)
val taskId = taskDao.insert(newTask(
with(DUE_DATE, DateTime(2021, 1, 20)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE),
with(MODIFICATION_TIME, DateTime(2021, 1, 21, 9, 50, 4, 348))
))
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(REMOTE_ID, "4586964443060640060"),
with(TASK, taskId)
))
freezeAt(upgradeTime) {
upgrader.applyOpenTaskStartDates()
}
assertEquals(upgradeTime, taskDao.fetch(taskId)?.modificationDate)
}
@Test
fun dontTouchNoOpenTaskStartDate() = runBlocking {
val modificationTime = DateTime(2021, 1, 21, 9, 50, 4, 348)
val (listId, list) = openTaskDao.insertList()
openTaskDao.insertTask(listId, VTODO_NO_START_DATE)
val taskId = taskDao.insert(newTask(with(MODIFICATION_TIME, modificationTime)))
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(REMOTE_ID, "4586964443060640060"),
with(TASK, taskId)
))
upgrader.applyOpenTaskStartDates()
assertEquals(modificationTime, taskDao.fetch(taskId)?.modificationDate)
}
companion object {
val VTODO_WITH_START_DATE = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110301//EN
BEGIN:VTODO
DTSTAMP:20210121T153032Z
UID:4586964443060640060
CREATED:20210121T153000Z
LAST-MODIFIED:20210121T153029Z
SUMMARY:Test
PRIORITY:9
X-APPLE-SORT-ORDER:-27
DTSTART;VALUE=DATE:20210121
END:VTODO
END:VCALENDAR
""".trimIndent()
val VTODO_NO_START_DATE = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110301//EN
BEGIN:VTODO
DTSTAMP:20210121T153032Z
UID:4586964443060640060
CREATED:20210121T153000Z
LAST-MODIFIED:20210121T153029Z
SUMMARY:Test
PRIORITY:9
X-APPLE-SORT-ORDER:-27
END:VTODO
END:VCALENDAR
""".trimIndent()
}
}

@ -1,26 +1,28 @@
package com.todoroo.astrid.subtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.TaskListMetadata
import org.tasks.injection.TestComponent
import org.tasks.data.entity.TaskListMetadata
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class SubtasksHelperTest : SubtasksTestCase() {
@Before
override fun setUp() {
super.setUp()
createTasks()
val m = TaskListMetadata()
m.filter = TaskListMetadata.FILTER_ID_ALL
updater.initializeFromSerializedTree(
m, filter, SubtasksHelper.convertTreeToRemoteIds(taskDao, DEFAULT_SERIALIZED_TREE))
runBlocking {
updater.initializeFromSerializedTree(
m, filter, SubtasksHelper.convertTreeToRemoteIds(taskDao, DEFAULT_SERIALIZED_TREE))
}
}
private fun createTask(title: String, uuid: String) {
private fun createTask(title: String, uuid: String) = runBlocking {
val t = Task()
t.title = title
t.uuid = uuid
@ -47,16 +49,14 @@ class SubtasksHelperTest : SubtasksTestCase() {
}
@Test
fun testLocalToRemoteIdMapping() {
fun testLocalToRemoteIdMapping() = runBlocking {
val mapped = SubtasksHelper.convertTreeToRemoteIds(taskDao, DEFAULT_SERIALIZED_TREE)
.replace("\\s".toRegex(), "")
assertEquals(EXPECTED_REMOTE, mapped)
}
override fun inject(component: TestComponent) = component.inject(this)
companion object {
private val EXPECTED_ORDER = arrayOf("-1", "1", "2", "3", "4", "5", "6")
private val EXPECTED_REMOTE = "[\"-1\", [\"6\", \"4\", [\"3\", \"1\"]], \"2\", \"5\"]".replace("\\s".toRegex(), "")
private val EXPECTED_REMOTE = """["-1", ["6", "4", ["3", "1"]], "2", "5"]""".replace("\\s".toRegex(), "")
}
}

@ -1,13 +1,13 @@
package com.todoroo.astrid.subtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.TaskListMetadata
import org.tasks.injection.TestComponent
import org.tasks.data.entity.TaskListMetadata
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class SubtasksMovingTest : SubtasksTestCase() {
private lateinit var A: Task
private lateinit var B: Task
@ -16,13 +16,16 @@ class SubtasksMovingTest : SubtasksTestCase() {
private lateinit var E: Task
private lateinit var F: Task
@Before
override fun setUp() {
super.setUp()
createTasks()
val m = TaskListMetadata()
m.filter = TaskListMetadata.FILTER_ID_ALL
updater.initializeFromSerializedTree(
m, filter, SubtasksHelper.convertTreeToRemoteIds(taskDao, DEFAULT_SERIALIZED_TREE))
runBlocking {
updater.initializeFromSerializedTree(
m, filter, SubtasksHelper.convertTreeToRemoteIds(taskDao, DEFAULT_SERIALIZED_TREE))
}
// Assert initial state is correct
expectParentAndPosition(A, null, 0)
@ -33,8 +36,6 @@ class SubtasksMovingTest : SubtasksTestCase() {
expectParentAndPosition(F, null, 2)
}
override fun inject(component: TestComponent) = component.inject(this)
private fun createTasks() {
A = createTask("A")
B = createTask("B")
@ -44,16 +45,16 @@ class SubtasksMovingTest : SubtasksTestCase() {
F = createTask("F")
}
private fun createTask(title: String): Task {
private fun createTask(title: String): Task = runBlocking {
val task = Task()
task.title = title
taskDao.createNew(task)
return task
task
}
private fun whenTriggerMoveBefore(target: Task?, before: Task?) {
val beforeId = if (before == null) "-1" else before.uuid
updater.moveTo(null, filter, target!!.uuid, beforeId)
private fun whenTriggerMoveBefore(target: Task?, before: Task?) = runBlocking {
val beforeId = before?.uuid ?: "-1"
updater.moveTo(TaskListMetadata(), filter, target!!.uuid, beforeId)
}
/* Starting State (see SubtasksTestCase):

@ -1,37 +1,37 @@
package com.todoroo.astrid.subtasks
import androidx.test.InstrumentationRegistry
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.core.BuiltInFilterExposer
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.tasks.data.TaskListMetadataDao
import org.tasks.data.dao.TaskListMetadataDao
import org.tasks.data.entity.Task
import org.tasks.filters.AstridOrderingFilter
import org.tasks.filters.MyTasksFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.preferences.Preferences
import javax.inject.Inject
abstract class SubtasksTestCase : InjectingTestCase() {
lateinit var updater: SubtasksFilterUpdater
lateinit var filter: Filter
lateinit var filter: AstridOrderingFilter
@Inject lateinit var taskListMetadataDao: TaskListMetadataDao
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var preferences: Preferences
override fun setUp() {
super.setUp()
filter = BuiltInFilterExposer.getMyTasksFilter(InstrumentationRegistry.getTargetContext().resources)
filter = runBlocking { MyTasksFilter.create() }
preferences.clear(SubtasksFilterUpdater.ACTIVE_TASKS_ORDER)
updater = SubtasksFilterUpdater(taskListMetadataDao, taskDao)
}
fun expectParentAndPosition(task: Task, parent: Task?, positionInParent: Int) {
val parentId = if (parent == null) "-1" else parent.uuid
val parentId = parent?.uuid ?: "-1"
val n = updater.findNodeForTask(task.uuid)
assertNotNull("No node found for task " + task.title, n)
assertEquals("Parent mismatch", parentId, n.parent.uuid)
assertEquals("Position mismatch", positionInParent, n.parent.children.indexOf(n))
assertEquals("Parent mismatch", parentId, n!!.parent!!.uuid)
assertEquals("Position mismatch", positionInParent, n.parent!!.children.indexOf(n))
}
companion object {

@ -1,34 +1,31 @@
package com.todoroo.astrid.sync
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.tasks.data.TagData
import org.tasks.data.TagDataDao
import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.TagData
import org.tasks.data.entity.Task
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import javax.inject.Inject
open class NewSyncTestCase : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var tagDataDao: TagDataDao
fun createTask(): Task {
val task = Task()
task.title = SYNC_TASK_TITLE
task.priority = SYNC_TASK_IMPORTANCE
suspend fun createTask(): Task {
val task = Task(
title = SYNC_TASK_TITLE,
priority = SYNC_TASK_IMPORTANCE,
)
taskDao.createNew(task)
return task
}
fun createTagData(): TagData {
val tag = TagData()
tag.name = "new tag"
tagDataDao.createNew(tag)
suspend fun createTagData(): TagData {
val tag = TagData(name = "new tag")
tagDataDao.insert(tag)
return tag
}
override fun inject(component: TestComponent) = component.inject(this)
companion object {
private const val SYNC_TASK_TITLE = "new title"
private const val SYNC_TASK_IMPORTANCE = Task.Priority.MEDIUM

@ -1,21 +1,22 @@
package com.todoroo.astrid.sync
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertNotEquals
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class SyncModelTest : NewSyncTestCase() {
@Test
fun testCreateTaskMakesUuid() {
fun testCreateTaskMakesUuid() = runBlocking{
val task = createTask()
assertNotEquals(Task.NO_UUID, task.uuid)
}
@Test
fun testCreateTagMakesUuid() {
fun testCreateTagMakesUuid() = runBlocking{
val tag = createTagData()
assertNotEquals(Task.NO_UUID, tag.remoteId)
}

@ -0,0 +1 @@
../../../../test/java/org/tasks/Freeze.kt

@ -0,0 +1 @@
../../../../test/java/org/tasks/SuspendFreeze.kt

@ -0,0 +1,13 @@
package org.tasks
import android.app.Application
import android.content.Context
import androidx.test.runner.AndroidJUnitRunner
import dagger.hilt.android.testing.HiltTestApplication
@Suppress("unused")
class TestRunner : AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, name: String?, context: Context?): Application {
return super.newApplication(cl, HiltTestApplication::class.java.name, context)
}
}

@ -0,0 +1 @@
../../../../test/java/org/tasks/TestUtilities.kt

@ -1,20 +1,18 @@
package org.tasks.caldav
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.TestUtilities.newPreferences
import java.security.KeyManagementException
import java.security.NoSuchAlgorithmException
import org.tasks.injection.InjectingTestCase
import javax.inject.Inject
@HiltAndroidTest
class CaldavClientTest : InjectingTestCase() {
@Inject lateinit var clientProvider: CaldavClientProvider
@RunWith(AndroidJUnit4::class)
class CaldavClientTest {
@Test
fun dontCrashOnSpaceInUrl() {
val context = ApplicationProvider.getApplicationContext<Context>()
CaldavClient(context, null, newPreferences(context), null)
.forUrl("https://example.com/remote.php/a space/", "username", "password")
fun dontCrashOnSpaceInUrl(): Unit = runBlocking {
clientProvider.forUrl("https://example.com/remote.php/a space/", "username", "password")
}
}

@ -0,0 +1,220 @@
package org.tasks.caldav
import com.natpryce.makeiteasy.MakeItEasy.with
import org.tasks.data.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavCalendar
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.ETAG
import org.tasks.makers.CaldavTaskMaker.OBJECT
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker.newTask
@HiltAndroidTest
class CaldavSynchronizerTest : CaldavTest() {
@Before
override fun setUp() = runBlocking {
super.setUp()
account = CaldavAccount(
uuid = UUIDHelper.newUUID(),
username = "username",
password = encryption.encrypt("password"),
url = server.url("/remote.php/dav/calendars/user1/").toString(),
).let {
it.copy(id = caldavDao.insert(it))
}
}
@Test
fun setMessageOnError() = runBlocking {
enqueue()
synchronizer.sync(account)
assertEquals("HTTP 500 Server Error", caldavDao.getAccounts().first().error)
}
@Test
fun dontFetchCalendarIfCtagMatches() = runBlocking {
caldavDao.insert(
CaldavCalendar(
account = this@CaldavSynchronizerTest.account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${this@CaldavSynchronizerTest.account.url}test-shared/",
)
)
enqueue(OC_SHARE_PROPFIND)
sync()
}
@Test
fun dontFetchTaskIfEtagMatches() = runBlocking {
val calendar = CaldavCalendar(
account = this@CaldavSynchronizerTest.account.uuid,
uuid = UUIDHelper.newUUID(),
url = "${this@CaldavSynchronizerTest.account.url}test-shared/",
)
caldavDao.insert(calendar)
caldavDao.insert(newCaldavTask(
with(TASK, taskDao.insert(newTask())),
with(OBJECT, "3164728546640386952.ics"),
with(ETAG, "43b3ffaac5131880e4dd07a79adba82a"),
with(CALENDAR, calendar.uuid)
))
enqueue(OC_SHARE_PROPFIND, OC_SHARE_REPORT)
sync()
}
@Test
fun syncNewTask() = runBlocking {
enqueue(OC_SHARE_PROPFIND, OC_SHARE_REPORT, OC_SHARE_TASK)
sync()
val calendar = caldavDao.getCalendars().takeIf { it.size == 1 }!!.first()
val caldavTask = caldavDao.getTaskByRemoteId(calendar.uuid!!, "3164728546640386952")!!
assertEquals("Test task", taskDao.fetch(caldavTask.task)!!.title)
}
companion object {
private val OC_SHARE_PROPFIND = """
<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav"
xmlns:cs="http://calendarserver.org/ns/" xmlns:oc="http://owncloud.org/ns">
<d:response>
<d:href>/remote.php/dav/calendars/user1/test-shared/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection />
<cal:calendar />
</d:resourcetype>
<d:displayname>Test shared</d:displayname>
<cal:supported-calendar-component-set>
<cal:comp name="VTODO" />
</cal:supported-calendar-component-set>
<cs:getctag>http://sabre.io/ns/sync/1</cs:getctag>
<x1:calendar-color xmlns:x1="http://apple.com/ns/ical/">#0082c9</x1:calendar-color>
<d:sync-token>http://sabre.io/ns/sync/1</d:sync-token>
<oc:owner-principal>principals/users/user1</oc:owner-principal>
<oc:invite>
<oc:user>
<d:href>principal:principals/users/user2</d:href>
<oc:common-name>user2</oc:common-name>
<oc:invite-accepted />
<oc:access>
<oc:read />
</oc:access>
</oc:user>
</oc:invite>
<d:current-user-privilege-set>
<d:privilege>
<d:write />
</d:privilege>
<d:privilege>
<d:write-properties />
</d:privilege>
<d:privilege>
<d:write-content />
</d:privilege>
<d:privilege>
<d:unlock />
</d:privilege>
<d:privilege>
<d:bind />
</d:privilege>
<d:privilege>
<d:unbind />
</d:privilege>
<d:privilege>
<d:write-acl />
</d:privilege>
<d:privilege>
<d:read />
</d:privilege>
<d:privilege>
<d:read-acl />
</d:privilege>
<d:privilege>
<d:read-current-user-privilege-set />
</d:privilege>
<d:privilege>
<cal:read-free-busy />
</d:privilege>
</d:current-user-privilege-set>
<d:current-user-principal>
<d:href>/remote.php/dav/principals/users/user1/</d:href>
</d:current-user-principal>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<d:share-access />
<d:invite />
</d:prop>
<d:status>HTTP/1.1 404 Not Found</d:status>
</d:propstat>
</d:response>
</d:multistatus>
""".trimIndent()
private val OC_SHARE_REPORT = """
<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:">
<d:response>
<d:href>/remote.php/dav/calendars/user1/test-shared/3164728546640386952.ics</d:href>
<d:propstat>
<d:prop>
<d:getetag>&quot;43b3ffaac5131880e4dd07a79adba82a&quot;</d:getetag>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>
""".trimIndent()
private val OC_SHARE_TASK = """
<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav">
<d:response>
<d:href>/remote.php/dav/calendars/user1/test-shared/3164728546640386952.ics</d:href>
<d:propstat>
<d:prop>
<d:getcontenttype>text/calendar; charset=utf-8; component=vtodo</d:getcontenttype>
<d:getetag>&quot;43b3ffaac5131880e4dd07a79adba82a&quot;</d:getetag>
<cal:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110500//EN
BEGIN:VTODO
DTSTAMP:20210223T154147Z
UID:3164728546640386952
CREATED:20210223T154134Z
LAST-MODIFIED:20210223T154140Z
SUMMARY:Test task
PRIORITY:9
END:VTODO
END:VCALENDAR</cal:calendar-data>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<cal:schedule-tag />
</d:prop>
<d:status>HTTP/1.1 404 Not Found</d:status>
</d:propstat>
</d:response>
</d:multistatus>
""".trimIndent()
}
}

@ -0,0 +1,68 @@
package org.tasks.caldav
import com.todoroo.astrid.dao.TaskDao
import junit.framework.Assert.assertFalse
import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.rules.Timeout
import org.tasks.R
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.dao.CaldavDao
import org.tasks.injection.InjectingTestCase
import org.tasks.preferences.Preferences
import org.tasks.security.KeyStoreEncryption
import javax.inject.Inject
abstract class CaldavTest : InjectingTestCase() {
@Inject lateinit var synchronizer: CaldavSynchronizer
@Inject lateinit var encryption: KeyStoreEncryption
@Inject lateinit var preferences: Preferences
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var taskDao: TaskDao
protected val server = MockWebServer()
protected lateinit var account: CaldavAccount
@get:Rule
val globalTimeout: Timeout = Timeout.seconds(30)
@Before
override fun setUp() {
super.setUp()
preferences.setBoolean(R.string.p_debug_pro, true)
server.start()
headers.clear()
}
@After
fun after() = server.shutdown()
protected suspend fun sync(account: CaldavAccount = this.account) {
synchronizer.sync(account)
assertFalse(caldavDao.getAccountByUuid(account.uuid!!)!!.hasError)
}
val headers = HashMap<String, String>()
protected fun enqueue(vararg responses: String) {
responses.forEach {
server.enqueue(
MockResponse()
.setResponseCode(207)
.setHeader("Content-Type", "text/xml; charset=\"utf-8\"")
.apply { this@CaldavTest.headers.forEach { (k, v) -> setHeader(k, v) } }
.setBody(it))
}
server.enqueue(MockResponse().setResponseCode(500))
}
companion object {
init {
CaldavSynchronizer.registerFactories()
}
}
}

@ -0,0 +1,97 @@
package org.tasks.caldav
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Test
import org.tasks.data.UUIDHelper
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.SERVER_NEXTCLOUD
import org.tasks.data.entity.CaldavAccount.Companion.SERVER_OPEN_XCHANGE
import org.tasks.data.entity.CaldavAccount.Companion.SERVER_SABREDAV
import org.tasks.data.entity.CaldavAccount.Companion.SERVER_TASKS
import org.tasks.data.entity.CaldavAccount.Companion.SERVER_UNKNOWN
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_CALDAV
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_TASKS
@HiltAndroidTest
class ServerDetectionTest : CaldavTest() {
@Test
fun detectTasksServer() = runBlocking {
setup(
"DAV" to SABREDAV_COMPLIANCE,
"x-sabre-version" to "4.1.3",
accountType = TYPE_TASKS
)
sync()
assertEquals(SERVER_TASKS, loadAccount().serverType)
}
@Test
fun detectNextcloudServer() = runBlocking {
setup("DAV" to NEXTCLOUD_COMPLIANCE)
sync()
assertEquals(SERVER_NEXTCLOUD, loadAccount().serverType)
}
@Test
fun detectSabredavServer() = runBlocking {
setup(
"DAV" to SABREDAV_COMPLIANCE,
"x-sabre-version" to "4.1.3"
)
sync()
assertEquals(SERVER_SABREDAV, loadAccount().serverType)
}
@Test
fun detectOpenXchangeServer() = runBlocking {
setup("server" to "Openexchange WebDAV")
sync()
assertEquals(SERVER_OPEN_XCHANGE, loadAccount().serverType)
}
@Test
fun unknownServer() = runBlocking {
setup()
sync()
assertEquals(SERVER_UNKNOWN, loadAccount().serverType)
}
private suspend fun loadAccount(): CaldavAccount =
caldavDao.getAccounts().apply { assertEquals(1, size) }.first()
private suspend fun setup(
vararg headers: Pair<String, String>,
accountType: Int = TYPE_CALDAV
) {
account = CaldavAccount(
uuid = UUIDHelper.newUUID(),
username = "username",
password = encryption.encrypt("password"),
url = server.url("/remote.php/dav/calendars/user1/").toString(),
accountType = accountType,
).let {
it.copy(id = caldavDao.insert(it))
}
this.headers.putAll(headers)
enqueue(NO_CALENDARS)
}
companion object {
private const val NO_CALENDARS = """<?xml version="1.0"?><d:multistatus xmlns:d="DAV:"/>"""
private const val SABREDAV_COMPLIANCE = "1, 3, extended-mkcol, access-control, calendarserver-principal-property-search, calendar-access, calendar-proxy, calendarserver-subscribed, calendar-auto-schedule, calendar-availability, resource-sharing, calendarserver-sharing"
private const val NEXTCLOUD_COMPLIANCE = "1, 3, extended-mkcol, access-control, calendarserver-principal-property-search, calendar-access, calendar-proxy, calendar-auto-schedule, calendar-availability, nc-calendar-webcal-cache, calendarserver-subscribed, oc-resource-sharing, oc-calendar-publishing, calendarserver-sharing, nc-calendar-search, nc-enable-birthday-calendar"
}
}

@ -0,0 +1,149 @@
package org.tasks.caldav
import org.tasks.data.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_WRITE
import org.tasks.data.dao.PrincipalDao
import javax.inject.Inject
@HiltAndroidTest
class SharingMailboxDotOrgTest : CaldavTest() {
@Inject lateinit var principalDao: PrincipalDao
@Test
fun ownerAccess() = runBlocking {
account = CaldavAccount(
uuid = UUIDHelper.newUUID(),
username = "3",
password = encryption.encrypt("password"),
url = server.url("/caldav/").toString(),
).let {
it.copy(id = caldavDao.insert(it))
}
val calendar = CaldavCalendar(
account = this@SharingMailboxDotOrgTest.account.uuid,
ctag = "1614876450015",
url = "${this@SharingMailboxDotOrgTest.account.url}MzM/",
)
caldavDao.insert(calendar)
enqueue(SHARE_OWNER)
sync()
// TODO: mailbox.org uses share-access differently, need to figure out how to set owner
assertEquals(ACCESS_READ_WRITE, caldavDao.getCalendar(calendar.uuid!!)!!.access)
}
@Test
fun principalForSharee() = runBlocking {
account = CaldavAccount(
uuid = UUIDHelper.newUUID(),
username = "3",
password = encryption.encrypt("password"),
url = server.url("/caldav/").toString(),
).let {
it.copy(id = caldavDao.insert(it))
}
val calendar = CaldavCalendar(
account = this@SharingMailboxDotOrgTest.account.uuid,
ctag = "1614876450015",
url = "${this@SharingMailboxDotOrgTest.account.url}MzM/",
)
caldavDao.insert(calendar)
enqueue(SHARE_OWNER)
sync()
val principal = principalDao.getAll().first()
assertEquals(calendar.id, principal.list)
assertEquals("/principals/users/5", principal.href)
assertNull(principal.displayName)
assertEquals(CaldavCalendar.INVITE_ACCEPTED, principal.inviteStatus)
assertEquals(CaldavCalendar.ACCESS_UNKNOWN, principal.access.access)
}
companion object {
private val SHARE_OWNER = """
<?xml version="1.0" encoding="UTF-8"?>
<D:multistatus xmlns:APPLE="http://apple.com/ns/ical/" xmlns:CAL="urn:ietf:params:xml:ns:caldav"
xmlns:CS="http://calendarserver.org/ns/" xmlns:D="DAV:">
<D:response>
<D:href>/caldav/MzM/</D:href>
<D:propstat>
<D:prop>
<D:current-user-privilege-set>
<D:privilege>
<D:read-acl />
</D:privilege>
<D:privilege>
<D:read-current-user-privilege-set />
</D:privilege>
<D:privilege>
<D:read />
</D:privilege>
<D:privilege>
<D:write />
</D:privilege>
<D:privilege>
<D:write-content />
</D:privilege>
<D:privilege>
<D:write-properties />
</D:privilege>
<D:privilege>
<D:write-acl />
</D:privilege>
<D:privilege>
<D:bind />
</D:privilege>
<D:privilege>
<D:unbind />
</D:privilege>
</D:current-user-privilege-set>
<D:displayname>Tasks</D:displayname>
<D:current-user-principal>
<D:href>/principals/users/3</D:href>
</D:current-user-principal>
<calendar-color symbolic-color="custom" xmlns="http://apple.com/ns/ical/">
#CEE7FFFF
</calendar-color>
<D:invite>
<D:sharee>
<D:href>/principals/users/5</D:href>
<D:invite-accepted />
<D:share-access>read</D:share-access>
</D:sharee>
</D:invite>
<D:sync-token>1614876450015</D:sync-token>
<D:share-access>shared-owner</D:share-access>
<D:resourcetype>
<D:collection />
<CAL:calendar />
</D:resourcetype>
<supported-calendar-component-set xmlns="urn:ietf:params:xml:ns:caldav">
<CAL:comp name="VTODO" />
</supported-calendar-component-set>
<getctag xmlns="http://calendarserver.org/ns/">33-1614876450015</getctag>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
<D:propstat>
<D:prop>
<invite xmlns="http://owncloud.org/ns" />
<owner-principal xmlns="http://owncloud.org/ns" />
</D:prop>
<D:status>HTTP/1.1 404 NOT FOUND</D:status>
</D:propstat>
</D:response>
</D:multistatus>
""".trimIndent()
}
}

@ -0,0 +1,250 @@
package org.tasks.caldav
import org.tasks.data.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.*
import org.junit.Test
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_OWNER
import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_ONLY
import org.tasks.data.dao.PrincipalDao
import javax.inject.Inject
@HiltAndroidTest
class SharingOwncloudTest : CaldavTest() {
@Inject lateinit var principalDao: PrincipalDao
private suspend fun setupAccount(user: String) {
account = CaldavAccount(
uuid = UUIDHelper.newUUID(),
username = user,
password = encryption.encrypt("password"),
url = server.url("/remote.php/dav/calendars/$user/").toString(),
).let {
it.copy(id = caldavDao.insert(it))
}
}
@Test
fun calendarOwner() = runBlocking {
setupAccount("user1")
val calendar = CaldavCalendar(
account = this@SharingOwncloudTest.account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${this@SharingOwncloudTest.account.url}test-shared/",
)
caldavDao.insert(calendar)
enqueue(OC_OWNER)
sync()
assertEquals(ACCESS_OWNER, caldavDao.getCalendarByUuid(calendar.uuid!!)?.access)
}
@Test
fun readOnly() = runBlocking {
setupAccount("user2")
val calendar = CaldavCalendar(
account = this@SharingOwncloudTest.account.uuid,
ctag = "http://sabre.io/ns/sync/2",
url = "${this@SharingOwncloudTest.account.url}test-shared_shared_by_user1/",
)
caldavDao.insert(calendar)
enqueue(OC_READ_ONLY)
sync()
assertEquals(ACCESS_READ_ONLY, caldavDao.getCalendarByUuid(calendar.uuid!!)?.access)
}
@Test
fun principalForSharee() = runBlocking {
setupAccount("user1")
val calendar = CaldavCalendar(
account = this@SharingOwncloudTest.account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${this@SharingOwncloudTest.account.url}test-shared/",
)
caldavDao.insert(calendar)
enqueue(OC_OWNER)
sync()
val principal = principalDao.getAll()
.apply { assertTrue(size == 1) }
.first()
assertEquals(calendar.id, principal.list)
assertEquals("principal:principals/users/user2", principal.href)
assertEquals("user2", principal.name)
assertEquals(CaldavCalendar.INVITE_ACCEPTED, principal.inviteStatus)
assertEquals(ACCESS_READ_ONLY, principal.access.access)
}
@Test
fun principalForOwner() = runBlocking {
setupAccount("user2")
val calendar = CaldavCalendar(
account = this@SharingOwncloudTest.account.uuid,
ctag = "http://sabre.io/ns/sync/2",
url = "${this@SharingOwncloudTest.account.url}test-shared_shared_by_user1/",
)
caldavDao.insert(calendar)
enqueue(OC_READ_ONLY)
sync()
val principal = principalDao.getAll()
.apply { assertTrue(size == 1) }
.first()
assertEquals(calendar.id, principal.list)
assertEquals("principals/users/user1", principal.href)
assertEquals(null, principal.displayName)
assertEquals(CaldavCalendar.INVITE_ACCEPTED, principal.inviteStatus)
assertEquals(ACCESS_OWNER, principal.access.access)
}
companion object {
private val OC_OWNER = """
<?xml version="1.0"?>
<d:multistatus xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav"
xmlns:cs="http://calendarserver.org/ns/" xmlns:oc="http://owncloud.org/ns">
<d:response>
<d:href>/remote.php/dav/calendars/user1/test-shared/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection />
<cal:calendar />
</d:resourcetype>
<d:displayname>Test shared</d:displayname>
<cal:supported-calendar-component-set>
<cal:comp name="VTODO" />
</cal:supported-calendar-component-set>
<cs:getctag>http://sabre.io/ns/sync/1</cs:getctag>
<x1:calendar-color xmlns:x1="http://apple.com/ns/ical/">#0082c9</x1:calendar-color>
<d:sync-token>http://sabre.io/ns/sync/1</d:sync-token>
<oc:owner-principal>principals/users/user1</oc:owner-principal>
<oc:invite>
<oc:user>
<d:href>principal:principals/users/user2</d:href>
<oc:common-name>user2</oc:common-name>
<oc:invite-accepted />
<oc:access>
<oc:read />
</oc:access>
</oc:user>
</oc:invite>
<d:current-user-privilege-set>
<d:privilege>
<d:write />
</d:privilege>
<d:privilege>
<d:write-properties />
</d:privilege>
<d:privilege>
<d:write-content />
</d:privilege>
<d:privilege>
<d:unlock />
</d:privilege>
<d:privilege>
<d:bind />
</d:privilege>
<d:privilege>
<d:unbind />
</d:privilege>
<d:privilege>
<d:write-acl />
</d:privilege>
<d:privilege>
<d:read />
</d:privilege>
<d:privilege>
<d:read-acl />
</d:privilege>
<d:privilege>
<d:read-current-user-privilege-set />
</d:privilege>
<d:privilege>
<cal:read-free-busy />
</d:privilege>
</d:current-user-privilege-set>
<d:current-user-principal>
<d:href>/remote.php/dav/principals/users/user1/</d:href>
</d:current-user-principal>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<d:share-access />
<d:invite />
</d:prop>
<d:status>HTTP/1.1 404 Not Found</d:status>
</d:propstat>
</d:response>
</d:multistatus>
""".trimIndent()
val OC_READ_ONLY = """
<?xml version="1.0"?>
<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/"
xmlns:d="DAV:" xmlns:nc="http://nextcloud.org/ns"
xmlns:oc="http://owncloud.org/ns" xmlns:s="http://sabredav.org/ns">
<d:response>
<d:href>/remote.php/dav/calendars/user2/test-shared_shared_by_user1/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection />
<cal:calendar />
</d:resourcetype>
<d:displayname>Test shared (user1)</d:displayname>
<cal:supported-calendar-component-set>
<cal:comp name="VTODO" />
</cal:supported-calendar-component-set>
<cs:getctag>http://sabre.io/ns/sync/2</cs:getctag>
<x1:calendar-color xmlns:x1="http://apple.com/ns/ical/">#0082c9</x1:calendar-color>
<d:sync-token>http://sabre.io/ns/sync/2</d:sync-token>
<oc:owner-principal>principals/users/user1</oc:owner-principal>
<oc:invite />
<d:current-user-privilege-set>
<d:privilege>
<d:write-properties />
</d:privilege>
<d:privilege>
<d:read />
</d:privilege>
<d:privilege>
<d:read-acl />
</d:privilege>
<d:privilege>
<d:read-current-user-privilege-set />
</d:privilege>
<d:privilege>
<cal:read-free-busy />
</d:privilege>
</d:current-user-privilege-set>
<d:current-user-principal>
<d:href>/remote.php/dav/principals/users/user2/</d:href>
</d:current-user-principal>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<d:share-access />
<d:invite />
</d:prop>
<d:status>HTTP/1.1 404 Not Found</d:status>
</d:propstat>
</d:response>
</d:multistatus>
""".trimIndent()
}
}

@ -0,0 +1,318 @@
package org.tasks.caldav
import org.tasks.data.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_OWNER
import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_WRITE
import org.tasks.data.entity.CaldavCalendar.Companion.INVITE_ACCEPTED
import org.tasks.data.dao.PrincipalDao
import javax.inject.Inject
@HiltAndroidTest
class SharingSabredavTest : CaldavTest() {
@Inject lateinit var principalDao: PrincipalDao
private suspend fun setupAccount(user: String) {
account = CaldavAccount(
uuid = UUIDHelper.newUUID(),
username = user,
password = encryption.encrypt("password"),
url = server.url("/calendars/$user/").toString(),
).let {
it.copy(id = caldavDao.insert(it))
}
}
@Test
fun calendarOwner() = runBlocking {
setupAccount("user1")
val calendar = CaldavCalendar(
account = this@SharingSabredavTest.account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${this@SharingSabredavTest.account.url}940468858232147861/",
)
caldavDao.insert(calendar)
enqueue(SD_OWNER)
sync()
assertEquals(
ACCESS_OWNER,
caldavDao.getCalendarByUuid(calendar.uuid!!)?.access
)
}
@Test
fun calendarSharee() = runBlocking {
setupAccount("user2")
val calendar = CaldavCalendar(
account = this@SharingSabredavTest.account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${this@SharingSabredavTest.account.url}c3853d69-cb7a-476c-a23b-30ffd70f110b/",
)
caldavDao.insert(calendar)
enqueue(SD_SHAREE)
sync()
assertEquals(
ACCESS_READ_WRITE,
caldavDao.getCalendarByUuid(calendar.uuid!!)?.access
)
}
@Test
fun excludeCurrentUserPrincipalFromSharees() = runBlocking {
setupAccount("user1")
caldavDao.insert(
CaldavCalendar(
account = account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${account.url}940468858232147861/",
)
)
enqueue(SD_OWNER)
sync()
assertEquals(1, principalDao.getAll().size)
}
@Test
fun principalForSharee() = runBlocking {
setupAccount("user1")
val calendar = CaldavCalendar(
account = this@SharingSabredavTest.account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${this@SharingSabredavTest.account.url}940468858232147861/",
)
caldavDao.insert(calendar)
enqueue(SD_OWNER)
sync()
val principal = principalDao.getAll().first()
assertEquals(calendar.id, principal.list)
assertEquals("mailto:user@example.com", principal.href)
assertEquals("Example User", principal.displayName)
assertEquals(INVITE_ACCEPTED, principal.inviteStatus)
assertEquals(ACCESS_READ_WRITE, principal.access.access)
}
@Test
fun principalForOwner() = runBlocking {
setupAccount("user2")
val calendar = CaldavCalendar(
account = this@SharingSabredavTest.account.uuid,
ctag = "http://sabre.io/ns/sync/1",
url = "${this@SharingSabredavTest.account.url}c3853d69-cb7a-476c-a23b-30ffd70f110b/",
)
caldavDao.insert(calendar)
enqueue(SD_SHAREE)
sync()
val principal = principalDao.getAll()
.apply { assertTrue(size == 1) }
.first()
assertEquals(calendar.id, principal.list)
assertEquals("/principals/user1", principal.href)
assertEquals(null, principal.displayName)
assertEquals(INVITE_ACCEPTED, principal.inviteStatus)
assertEquals(ACCESS_OWNER, principal.access.access)
}
companion object {
private val SD_OWNER = """
<?xml version="1.0"?>
<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/"
xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<d:response>
<d:href>/calendars/user1/940468858232147861/</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection />
<cal:calendar />
<cs:shared-owner />
</d:resourcetype>
<d:displayname>Shared</d:displayname>
<cal:supported-calendar-component-set>
<cal:comp name="VTODO" />
</cal:supported-calendar-component-set>
<cs:getctag>http://sabre.io/ns/sync/1</cs:getctag>
<d:sync-token>http://sabre.io/ns/sync/1</d:sync-token>
<d:share-access>
<d:shared-owner />
</d:share-access>
<d:invite>
<d:sharee>
<d:href>/principals/user1</d:href>
<d:prop />
<d:share-access>
<d:shared-owner />
</d:share-access>
<d:invite-accepted />
</d:sharee>
<d:sharee>
<d:href>mailto:user@example.com</d:href>
<d:prop>
<d:displayname>Example User</d:displayname>
</d:prop>
<d:share-access>
<d:read-write />
</d:share-access>
<d:invite-accepted />
</d:sharee>
</d:invite>
<d:current-user-privilege-set>
<d:privilege>
<cal:read-free-busy />
</d:privilege>
<d:privilege>
<d:read />
</d:privilege>
<d:privilege>
<d:read-acl />
</d:privilege>
<d:privilege>
<d:read-current-user-privilege-set />
</d:privilege>
<d:privilege>
<d:write-properties />
</d:privilege>
<d:privilege>
<d:write />
</d:privilege>
<d:privilege>
<d:write-content />
</d:privilege>
<d:privilege>
<d:unlock />
</d:privilege>
<d:privilege>
<d:bind />
</d:privilege>
<d:privilege>
<d:unbind />
</d:privilege>
<d:privilege>
<d:write-acl />
</d:privilege>
<d:privilege>
<d:share />
</d:privilege>
</d:current-user-privilege-set>
<d:current-user-principal>
<d:href>/principals/user1/</d:href>
</d:current-user-principal>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<x1:calendar-color xmlns:x1="http://apple.com/ns/ical/" />
<x2:owner-principal xmlns:x2="http://owncloud.org/ns" />
<x2:invite xmlns:x2="http://owncloud.org/ns" />
</d:prop>
<d:status>HTTP/1.1 404 Not Found</d:status>
</d:propstat>
</d:response>
</d:multistatus>
""".trimIndent()
private val SD_SHAREE = """
<?xml version="1.0"?>
<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/"
xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<d:response>
<d:href>/calendars/user2/c3853d69-cb7a-476c-a23b-30ffd70f110b/
</d:href>
<d:propstat>
<d:prop>
<d:resourcetype>
<d:collection />
<cal:calendar />
</d:resourcetype>
<d:displayname>Shared</d:displayname>
<cal:supported-calendar-component-set>
<cal:comp name="VTODO" />
</cal:supported-calendar-component-set>
<cs:getctag>http://sabre.io/ns/sync/1</cs:getctag>
<d:sync-token>http://sabre.io/ns/sync/1</d:sync-token>
<d:share-access>
<d:read-write />
</d:share-access>
<d:invite>
<d:sharee>
<d:href>/principals/user1</d:href>
<d:prop />
<d:share-access>
<d:shared-owner />
</d:share-access>
<d:invite-accepted />
</d:sharee>
</d:invite>
<d:current-user-privilege-set>
<d:privilege>
<cal:read-free-busy />
</d:privilege>
<d:privilege>
<d:read />
</d:privilege>
<d:privilege>
<d:read-acl />
</d:privilege>
<d:privilege>
<d:read-current-user-privilege-set />
</d:privilege>
<d:privilege>
<d:write-properties />
</d:privilege>
<d:privilege>
<d:write />
</d:privilege>
<d:privilege>
<d:write-content />
</d:privilege>
<d:privilege>
<d:unlock />
</d:privilege>
<d:privilege>
<d:bind />
</d:privilege>
<d:privilege>
<d:unbind />
</d:privilege>
<d:privilege>
<d:write-acl />
</d:privilege>
</d:current-user-privilege-set>
<d:current-user-principal>
<d:href>/principals/user2/</d:href>
</d:current-user-principal>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
<d:propstat>
<d:prop>
<x1:calendar-color xmlns:x1="http://apple.com/ns/ical/" />
<x2:owner-principal xmlns:x2="http://owncloud.org/ns" />
<x2:invite xmlns:x2="http://owncloud.org/ns" />
</d:prop>
<d:status>HTTP/1.1 404 Not Found</d:status>
</d:propstat>
</d:response>
</d:multistatus>
""".trimIndent()
}
}

@ -0,0 +1,25 @@
package org.tasks.data
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withTimeout
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.data.dao.CaldavDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.injection.InjectingTestCase
import javax.inject.Inject
@HiltAndroidTest
class CaldavDaoExtensionsTest : InjectingTestCase() {
@Inject lateinit var caldavDao: CaldavDao
@Test
fun getLocalListCreatesAccountIfNeeded() = runBlocking {
withTimeout(5000L) {
assertTrue(caldavDao.getAccounts().isEmpty())
caldavDao.getLocalList()
assertTrue(caldavDao.getAccounts(CaldavAccount.TYPE_LOCAL).isNotEmpty())
}
}
}

@ -1,32 +1,32 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze.Companion.freezeAt
import org.tasks.SuspendFreeze.Companion.freezeAt
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.TaskDao
import org.tasks.data.entity.CaldavTask
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TaskContainerMaker
import org.tasks.makers.TaskContainerMaker.CREATED
import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class CaldavDaoShiftTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao
private val tasks = ArrayList<TaskContainer>()
@Test
fun basicShiftDown() {
fun basicShiftDown() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created))
addTask(with(CREATED, created.plusSeconds(1)))
@ -40,7 +40,7 @@ class CaldavDaoShiftTests : InjectingTestCase() {
}
@Test
fun shiftDownOnlyWhenNecessary() {
fun shiftDownOnlyWhenNecessary() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created))
addTask(with(CREATED, created.plusSeconds(1)))
@ -56,7 +56,7 @@ class CaldavDaoShiftTests : InjectingTestCase() {
}
@Test
fun ignoreUnnecessaryShiftDown() {
fun ignoreUnnecessaryShiftDown() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created))
addTask(with(CREATED, created.plusSeconds(2)))
@ -68,7 +68,7 @@ class CaldavDaoShiftTests : InjectingTestCase() {
}
@Test
fun ignoreOtherCalendarWhenShiftingDown() {
fun ignoreOtherCalendarWhenShiftingDown() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask("calendar1", with(CREATED, created))
addTask("calendar2", with(CREATED, created))
@ -80,7 +80,7 @@ class CaldavDaoShiftTests : InjectingTestCase() {
}
@Test
fun partialShiftDown() {
fun partialShiftDown() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created))
addTask(with(CREATED, created.plusSeconds(1)))
@ -98,29 +98,31 @@ class CaldavDaoShiftTests : InjectingTestCase() {
}
@Test
fun ignoreMovedTasksWhenShiftingDown() {
fun ignoreMovedTasksWhenShiftingDown() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created))
caldavDao.update(caldavDao.getTask(tasks[0].id).apply { this?.deleted = now() }!!)
caldavDao.update(caldavDao.getTask(tasks[0].id).apply { this?.deleted =
currentTimeMillis()
}!!)
caldavDao.shiftDown("calendar", 0, created.toAppleEpoch())
assertNull(caldavDao.getTasks(tasks[0].id)[0].order)
assertNull(taskDao.fetch(tasks[0].id)!!.order)
}
@Test
fun ignoreDeletedTasksWhenShiftingDown() {
fun ignoreDeletedTasksWhenShiftingDown() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created))
taskDao.update(taskDao.fetch(tasks[0].id).apply { this?.deletionDate = now() }!!)
taskDao.update(taskDao.fetch(tasks[0].id).apply { this?.deletionDate = currentTimeMillis() }!!)
caldavDao.shiftDown("calendar", 0, created.toAppleEpoch())
assertNull(caldavDao.getTasks(tasks[0].id)[0].order)
assertNull(taskDao.fetch(tasks[0].id)!!.order)
}
@Test
fun touchShiftedTasks() {
fun touchShiftedTasks() = runBlocking {
val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created))
addTask(with(CREATED, created.plusSeconds(1)))
@ -133,36 +135,31 @@ class CaldavDaoShiftTests : InjectingTestCase() {
assertEquals(created.plusMinutes(1).millis, taskDao.fetch(tasks[1].id)!!.modificationDate)
}
private fun checkOrder(dateTime: DateTime?, task: TaskContainer) {
private suspend fun checkOrder(dateTime: DateTime?, task: TaskContainer) {
val order = taskDao.fetch(task.id)!!.order
if (dateTime == null) {
assertNull(caldavDao.getTask(task.id)!!.order)
assertNull(order)
} else {
assertEquals(dateTime.toAppleEpoch(), caldavDao.getTask(task.id)!!.order)
assertEquals(dateTime.toAppleEpoch(), order)
}
}
private fun addTask(vararg properties: PropertyValue<in TaskContainer?, *>) = addTask("calendar", *properties)
private suspend fun addTask(vararg properties: PropertyValue<in TaskContainer?, *>) = addTask("calendar", *properties)
private fun addTask(calendar: String, vararg properties: PropertyValue<in TaskContainer?, *>) {
private suspend fun addTask(calendar: String, vararg properties: PropertyValue<in TaskContainer?, *>) {
val t = TaskContainerMaker.newTaskContainer(*properties)
tasks.add(t)
val task = t.task
taskDao.createNew(task)
val caldavTask = CaldavTask(t.id, calendar)
val caldavTask = CaldavTask(task = t.id, calendar = calendar)
if (task.parent > 0) {
caldavTask.remoteParent = caldavDao.getRemoteIdForTask(task.parent)
}
caldavTask.id = caldavDao.insert(caldavTask)
t.caldavTask = caldavTask.toSubset()
}
private fun CaldavTask.toSubset(): SubsetCaldav {
val result = SubsetCaldav()
result.cd_id = id
result.cd_calendar = calendar
result.cd_remote_parent = remoteParent
return result
tasks.add(
t.copy(
caldavTask = caldavTask.copy(
id = caldavDao.insert(caldavTask)
)
)
)
}
override fun inject(component: TestComponent) = component.inject(this)
}
}

@ -1,26 +1,25 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.helper.UUIDHelper
import org.junit.Assert.*
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.TagDao
import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavTask
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TagDataMaker.newTagData
import org.tasks.makers.TagMaker.TAGDATA
import org.tasks.makers.TagMaker.TASK
import org.tasks.makers.TagMaker.newTag
import org.tasks.makers.TaskMaker.CREATION_TIME
import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class CaldavDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var tagDao: TagDao
@ -28,121 +27,80 @@ class CaldavDaoTests : InjectingTestCase() {
@Inject lateinit var caldavDao: CaldavDao
@Test
fun insertNewTaskAtTopOfEmptyList() {
fun insertNewTaskAtTopOfEmptyList() = runBlocking {
val task = newTask()
taskDao.createNew(task)
val caldavTask = CaldavTask(task.id, "calendar")
caldavDao.insert(task, caldavTask, true)
caldavDao.insert(task, CaldavTask(task = task.id, calendar = "calendar"), true)
checkOrder(null, task.id)
}
@Test
fun insertNewTaskAboveExistingTask() {
fun insertNewTaskAboveExistingTask() = runBlocking {
val created = DateTime(2020, 5, 21, 15, 29, 16, 452)
val first = newTask(with(CREATION_TIME, created))
val second = newTask(with(CREATION_TIME, created.plusSeconds(1)))
taskDao.createNew(first)
taskDao.createNew(second)
caldavDao.insert(first, CaldavTask(first.id, "calendar"), true)
caldavDao.insert(second, CaldavTask(second.id, "calendar"), true)
caldavDao.insert(first, CaldavTask(task = first.id, calendar = "calendar"), true)
caldavDao.insert(second, CaldavTask(task = second.id, calendar = "calendar"), true)
checkOrder(null, first.id)
checkOrder(created.minusSeconds(1), second.id)
}
@Test
fun insertNewTaskBelowExistingTask() {
fun insertNewTaskBelowExistingTask() = runBlocking {
val created = DateTime(2020, 5, 21, 15, 29, 16, 452)
val first = newTask(with(CREATION_TIME, created))
val second = newTask(with(CREATION_TIME, created.plusSeconds(1)))
taskDao.createNew(first)
taskDao.createNew(second)
caldavDao.insert(first, CaldavTask(first.id, "calendar"), false)
caldavDao.insert(second, CaldavTask(second.id, "calendar"), false)
caldavDao.insert(first, CaldavTask(task = first.id, calendar = "calendar"), false)
caldavDao.insert(second, CaldavTask(task = second.id, calendar = "calendar"), false)
checkOrder(null, first.id)
checkOrder(null, second.id)
}
@Test
fun insertNewTaskBelowExistingTaskWithSameCreationDate() {
fun insertNewTaskBelowExistingTaskWithSameCreationDate() = runBlocking {
val created = DateTime(2020, 5, 21, 15, 29, 16, 452)
val first = newTask(with(CREATION_TIME, created))
val second = newTask(with(CREATION_TIME, created))
taskDao.createNew(first)
taskDao.createNew(second)
caldavDao.insert(first, CaldavTask(first.id, "calendar"), false)
caldavDao.insert(second, CaldavTask(second.id, "calendar"), false)
caldavDao.insert(first, CaldavTask(task = first.id, calendar = "calendar"), false)
caldavDao.insert(second, CaldavTask(task = second.id, calendar = "calendar"), false)
checkOrder(null, first.id)
checkOrder(created.plusSeconds(1), second.id)
}
@Test
fun insertNewTaskAtBottomOfEmptyList() {
fun insertNewTaskAtBottomOfEmptyList() = runBlocking {
val task = newTask()
taskDao.createNew(task)
val caldavTask = CaldavTask(task.id, "calendar")
caldavDao.insert(task, caldavTask, false)
caldavDao.insert(task, CaldavTask(task = task.id, calendar = "calendar"), false)
checkOrder(null, task.id)
}
@Test
fun getCaldavTasksWithTags() {
val task = newTask(with(ID, 1L))
taskDao.createNew(task)
val one = newTagData()
val two = newTagData()
tagDataDao.createNew(one)
tagDataDao.createNew(two)
tagDao.insert(newTag(with(TASK, task), with(TAGDATA, one)))
tagDao.insert(newTag(with(TASK, task), with(TAGDATA, two)))
caldavDao.insert(CaldavTask(task.id, "calendar"))
assertEquals(listOf(task.id), caldavDao.getTasksWithTags())
}
@Test
fun ignoreNonCaldavTaskWithTags() {
val task = newTask(with(ID, 1L))
taskDao.createNew(task)
val tag = newTagData()
tagDataDao.createNew(tag)
tagDao.insert(newTag(with(TASK, task), with(TAGDATA, tag)))
assertTrue(caldavDao.getTasksWithTags().isEmpty())
}
@Test
fun ignoreCaldavTaskWithoutTags() {
val task = newTask(with(ID, 1L))
taskDao.createNew(task)
tagDataDao.createNew(newTagData())
caldavDao.insert(CaldavTask(task.id, "calendar"))
assertTrue(caldavDao.getTasksWithTags().isEmpty())
}
@Test
fun noResultsForEmptyAccounts() {
val caldavAccount = CaldavAccount()
caldavAccount.uuid = UUIDHelper.newUUID()
fun noResultsForEmptyAccounts() = runBlocking {
val caldavAccount = CaldavAccount(uuid = UUIDHelper.newUUID())
caldavDao.insert(caldavAccount)
assertTrue(caldavDao.getCaldavFilters(caldavAccount.uuid!!).isEmpty())
}
private fun checkOrder(dateTime: DateTime, task: Long) = checkOrder(dateTime.toAppleEpoch(), task)
private suspend fun checkOrder(dateTime: DateTime, task: Long) = checkOrder(dateTime.toAppleEpoch(), task)
private fun checkOrder(order: Long?, task: Long) {
val sortOrder = caldavDao.getTask(task)!!.order
private suspend fun checkOrder(order: Long?, task: Long) {
val sortOrder = taskDao.fetch(task)!!.order
if (order == null) {
assertNull(sortOrder)
} else {
assertEquals(order, sortOrder)
}
}
override fun inject(component: TestComponent) = component.inject(this)
}
}

@ -1,65 +1,70 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.helper.UUIDHelper
import org.junit.Assert.*
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.CaldavDao.Companion.LOCAL
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.DeletionDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavTask
import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TaskMaker.CREATION_TIME
import org.tasks.makers.TaskMaker.DELETION_TIME
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class DeletionDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var deletionDao: DeletionDao
@Inject lateinit var caldavDao: CaldavDao
@Test
fun deleting1000DoesntCrash() {
deletionDao.delete((1L..1000L).toList())
fun deleting1000DoesntCrash() = runBlocking {
deletionDao.delete((1L..1000L).toList(), {})
}
@Test
fun marking998ForDeletionDoesntCrash() {
deletionDao.markDeleted(1L..1000L)
fun marking998ForDeletionDoesntCrash() = runBlocking {
deletionDao.markDeleted(1L..1000L, {})
}
@Test
fun markDeletedUpdatesModificationTime() {
fun markDeletedUpdatesModificationTime() = runBlocking {
var task = newTask(with(CREATION_TIME, DateTime().minusMinutes(1)))
taskDao.createNew(task)
deletionDao.markDeleted(listOf(task.id))
deletionDao.markDeleted(listOf(task.id), {})
task = taskDao.fetch(task.id)!!
assertTrue(task.modificationDate > task.creationDate)
assertTrue(task.modificationDate < DateTimeUtils.currentTimeMillis())
assertTrue(task.modificationDate < currentTimeMillis())
}
@Test
fun markDeletedUpdatesDeletionTime() {
fun markDeletedUpdatesDeletionTime() = runBlocking {
var task = newTask(with(CREATION_TIME, DateTime().minusMinutes(1)))
taskDao.createNew(task)
deletionDao.markDeleted(listOf(task.id))
deletionDao.markDeleted(listOf(task.id), {})
task = taskDao.fetch(task.id)!!
assertTrue(task.deletionDate > task.creationDate)
assertTrue(task.deletionDate < DateTimeUtils.currentTimeMillis())
assertTrue(task.deletionDate < currentTimeMillis())
}
@Test
fun purgeDeletedLocalTask() {
fun purgeDeletedLocalTask() = runBlocking {
val task = newTask(with(DELETION_TIME, newDateTime()))
taskDao.createNew(task)
caldavDao.insert(CaldavCalendar("", "1234").apply { account = LOCAL })
caldavDao.insert(CaldavTask(task.id, "1234"))
caldavDao.insert(CaldavAccount(uuid = "abcd", accountType = CaldavAccount.TYPE_LOCAL))
caldavDao.insert(CaldavCalendar(name = "", uuid = "1234", account = "abcd"))
caldavDao.insert(CaldavTask(task = task.id, calendar = "1234"))
deletionDao.purgeDeleted()
@ -67,11 +72,12 @@ class DeletionDaoTests : InjectingTestCase() {
}
@Test
fun dontPurgeActiveTasks() {
fun dontPurgeActiveTasks() = runBlocking {
val task = newTask()
taskDao.createNew(task)
caldavDao.insert(CaldavCalendar("", "1234").apply { account = LOCAL })
caldavDao.insert(CaldavTask(task.id, "1234"))
caldavDao.insert(CaldavAccount(uuid = "abcd", accountType = CaldavAccount.TYPE_LOCAL))
caldavDao.insert(CaldavCalendar(name = "", uuid = "1234", account = "abcd"))
caldavDao.insert(CaldavTask(task = task.id, calendar = "1234"))
deletionDao.purgeDeleted()
@ -79,16 +85,14 @@ class DeletionDaoTests : InjectingTestCase() {
}
@Test
fun dontPurgeDeletedCaldavTask() {
fun dontPurgeDeletedCaldavTask() = runBlocking {
val task = newTask(with(DELETION_TIME, newDateTime()))
taskDao.createNew(task)
caldavDao.insert(CaldavCalendar("", "1234").apply { account = UUIDHelper.newUUID() })
caldavDao.insert(CaldavTask(task.id, "1234"))
caldavDao.insert(CaldavCalendar(name = "", uuid = "1234", account = UUIDHelper.newUUID()))
caldavDao.insert(CaldavTask(task = task.id, calendar = "1234"))
deletionDao.purgeDeleted()
assertNotNull(taskDao.fetch(task.id))
}
override fun inject(component: TestComponent) = component.inject(this)
}
}

@ -1,182 +1,283 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavTask
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.GoogleTaskMaker.LIST
import org.tasks.makers.GoogleTaskMaker.PARENT
import org.tasks.makers.GoogleTaskMaker.REMOTE_ID
import org.tasks.makers.GoogleTaskMaker.TASK
import org.tasks.makers.GoogleTaskMaker.newGoogleTask
import org.tasks.makers.GtaskListMaker.newGtaskList
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.REMOTE_ID
import org.tasks.makers.CaldavTaskMaker.REMOTE_PARENT
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker.newTask
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class GoogleTaskDaoTests : InjectingTestCase() {
@Inject lateinit var googleTaskListDao: GoogleTaskListDao
@Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao
@Before
override fun setUp() {
super.setUp()
googleTaskListDao.insert(newGtaskList())
runBlocking {
caldavDao.insert(CaldavAccount(uuid = "account", accountType = TYPE_GOOGLE_TASKS))
caldavDao.insert(CaldavCalendar(account = "account", uuid = "calendar"))
}
}
@Test
fun insertAtTopOfEmptyList() {
insertTop(newGoogleTask(with(REMOTE_ID, "1234")))
val tasks = googleTaskDao.getByLocalOrder("1")
fun insertAtTopOfEmptyList() = runBlocking {
insertTop(newCaldavTask(with(REMOTE_ID, "1234")))
val tasks = googleTaskDao.getByLocalOrder("calendar")
assertEquals(1, tasks.size.toLong())
val task = tasks[0]
assertEquals("1234", task.remoteId)
assertEquals(0, task.order)
assertEquals("1234", googleTaskDao.getByTaskId(task.id)?.remoteId)
assertEquals(0L, task.order)
}
@Test
fun insertAtBottomOfEmptyList() {
insertBottom(newGoogleTask(with(REMOTE_ID, "1234")))
val tasks = googleTaskDao.getByLocalOrder("1")
fun insertAtBottomOfEmptyList() = runBlocking {
insertBottom(newCaldavTask(with(REMOTE_ID, "1234")))
val tasks = googleTaskDao.getByLocalOrder("calendar")
assertEquals(1, tasks.size.toLong())
val task = tasks[0]
assertEquals("1234", task.remoteId)
assertEquals(0, task.order)
assertEquals("1234", googleTaskDao.getByTaskId(task.id)?.remoteId)
assertEquals(0L, task.order)
}
@Test
fun getPreviousIsNullForTopTask() {
googleTaskDao.insertAndShift(newGoogleTask(), true)
fun getPreviousIsNullForTopTask() = runBlocking {
insert(newCaldavTask())
assertNull(googleTaskDao.getPrevious("1", 0, 0))
}
@Test
fun getPrevious() {
insertTop(newGoogleTask())
insertTop(newGoogleTask(with(REMOTE_ID, "1234")))
assertEquals("1234", googleTaskDao.getPrevious("1", 0, 1))
fun getPrevious() = runBlocking {
insertTop(newCaldavTask())
insertTop(newCaldavTask(with(REMOTE_ID, "1234")))
assertEquals("1234", googleTaskDao.getPrevious("calendar", 0, 1))
}
@Test
fun insertAtTopOfList() {
insertTop(newGoogleTask(with(REMOTE_ID, "1234")))
insertTop(newGoogleTask(with(REMOTE_ID, "5678")))
val tasks = googleTaskDao.getByLocalOrder("1")
fun insertAtTopOfList() = runBlocking {
insertTop(newCaldavTask(with(REMOTE_ID, "1234")))
insertTop(newCaldavTask(with(REMOTE_ID, "5678")))
val tasks = googleTaskDao.getByLocalOrder("calendar")
assertEquals(2, tasks.size.toLong())
val top = tasks[0]
assertEquals("5678", top.remoteId)
assertEquals(0, top.order)
assertEquals("5678", googleTaskDao.getByTaskId(top.id)?.remoteId)
assertEquals(0L, top.order)
}
@Test
fun insertAtTopOfListShiftsExisting() {
insertTop(newGoogleTask(with(REMOTE_ID, "1234")))
insertTop(newGoogleTask(with(REMOTE_ID, "5678")))
val tasks = googleTaskDao.getByLocalOrder("1")
fun insertAtTopOfListShiftsExisting() = runBlocking {
insertTop(newCaldavTask(with(REMOTE_ID, "1234")))
insertTop(newCaldavTask(with(REMOTE_ID, "5678")))
val tasks = googleTaskDao.getByLocalOrder("calendar")
assertEquals(2, tasks.size.toLong())
val bottom = tasks[1]
assertEquals("1234", bottom.remoteId)
assertEquals(1, bottom.order)
assertEquals("1234", googleTaskDao.getByTaskId(bottom.id)?.remoteId)
assertEquals(1L, bottom.order)
}
@Test
fun getTaskFromRemoteId() {
googleTaskDao.insert(newGoogleTask(with(REMOTE_ID, "1234"), with(TASK, 4)))
assertEquals(4, googleTaskDao.getTask("1234"))
fun getTaskFromRemoteId() = runBlocking {
insert(newCaldavTask(with(REMOTE_ID, "1234")))
assertEquals(1L, googleTaskDao.getTask("1234"))
}
@Test
fun getRemoteIdForTask() {
googleTaskDao.insert(newGoogleTask(with(REMOTE_ID, "1234"), with(TASK, 4)))
assertEquals("1234", googleTaskDao.getRemoteId(4L))
fun getRemoteIdForTask() = runBlocking {
insert(newCaldavTask(with(REMOTE_ID, "1234")))
assertEquals("1234", googleTaskDao.getRemoteId(1L))
}
@Test
fun moveDownInList() {
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "1")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "2")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "3")), false)
fun moveDownInList() = runBlocking {
insert(newCaldavTask(with(REMOTE_ID, "1")))
insert(newCaldavTask(with(REMOTE_ID, "2")))
insert(newCaldavTask(with(REMOTE_ID, "3")))
val two = getByRemoteId("2")
googleTaskDao.move(two, 0, 0)
assertEquals(0, googleTaskDao.getByRemoteId("2")!!.order)
assertEquals(1, googleTaskDao.getByRemoteId("1")!!.order)
assertEquals(2, googleTaskDao.getByRemoteId("3")!!.order)
googleTaskDao.move(taskDao.fetch(two.task)!!, "calendar", 0, 0)
assertEquals(0L, getOrder("2"))
assertEquals(1L, getOrder("1"))
assertEquals(2L, getOrder("3"))
}
@Test
fun moveUpInList() {
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "1")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "2")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "3")), false)
fun moveUpInList() = runBlocking {
insert(newCaldavTask(with(REMOTE_ID, "1")))
insert(newCaldavTask(with(REMOTE_ID, "2")))
insert(newCaldavTask(with(REMOTE_ID, "3")))
val one = getByRemoteId("1")
googleTaskDao.move(one, 0, 1)
assertEquals(0, googleTaskDao.getByRemoteId("2")!!.order)
assertEquals(1, googleTaskDao.getByRemoteId("1")!!.order)
assertEquals(2, googleTaskDao.getByRemoteId("3")!!.order)
googleTaskDao.move(taskDao.fetch(one.task)!!, "calendar", 0, 1)
assertEquals(0L, getOrder("2"))
assertEquals(1L, getOrder("1"))
assertEquals(2L, getOrder("3"))
}
@Test
fun moveToTop() {
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "1")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "2")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "3")), false)
fun moveToTop() = runBlocking {
insert(newCaldavTask(with(REMOTE_ID, "1")))
insert(newCaldavTask(with(REMOTE_ID, "2")))
insert(newCaldavTask(with(REMOTE_ID, "3")))
val three = getByRemoteId("3")
googleTaskDao.move(three, 0, 0)
assertEquals(0, googleTaskDao.getByRemoteId("3")!!.order)
assertEquals(1, googleTaskDao.getByRemoteId("1")!!.order)
assertEquals(2, googleTaskDao.getByRemoteId("2")!!.order)
googleTaskDao.move(taskDao.fetch(three.task)!!, "calendar", 0, 0)
assertEquals(0L, getOrder("3"))
assertEquals(1L, getOrder("1"))
assertEquals(2L, getOrder("2"))
}
@Test
fun moveToBottom() {
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "1")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "2")), false)
googleTaskDao.insertAndShift(newGoogleTask(with(REMOTE_ID, "3")), false)
fun moveToBottom() = runBlocking {
insert(newCaldavTask(with(REMOTE_ID, "1")))
insert(newCaldavTask(with(REMOTE_ID, "2")))
insert(newCaldavTask(with(REMOTE_ID, "3")))
val one = getByRemoteId("1")
googleTaskDao.move(one, 0, 2)
assertEquals(0, googleTaskDao.getByRemoteId("2")!!.order)
assertEquals(1, googleTaskDao.getByRemoteId("3")!!.order)
assertEquals(2, googleTaskDao.getByRemoteId("1")!!.order)
googleTaskDao.move(taskDao.fetch(one.task)!!, "calendar", 0, 2)
assertEquals(0L, getOrder("2"))
assertEquals(1L, getOrder("3"))
assertEquals(2L, getOrder("1"))
}
@Test
fun findChildrenInList() {
googleTaskDao.insert(newGoogleTask(with(TASK, 1), with(LIST, "1")))
googleTaskDao.insert(newGoogleTask(with(TASK, 2), with(LIST, "1"), with(PARENT, 1L)))
assertEquals(listOf(2L), googleTaskDao.getChildren(listOf(1L, 2L)))
fun dontAllowEmptyParent() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "1234")))
googleTaskDao.updatePosition("1234", "", "0")
assertNull(googleTaskDao.getByTaskId(1)!!.remoteParent)
}
@Test
fun updatePositionWithNullParent() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "1234")))
googleTaskDao.updatePosition("1234", null, "0")
assertNull(googleTaskDao.getByTaskId(1)!!.remoteParent)
}
@Test
fun updatePosition() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "1234")))
googleTaskDao.updatePosition("1234", "abcd", "0")
assertEquals("abcd", googleTaskDao.getByTaskId(1)!!.remoteParent)
}
@Test
fun ignoreSelfParent() = runBlocking {
insert(
newCaldavTask(
with(TASK, 1),
with(REMOTE_ID, "123"),
with(REMOTE_PARENT, "123")
)
)
private fun insertTop(googleTask: GoogleTask) {
caldavDao.updateParents()
assertEquals(0, taskDao.fetch(1)!!.parent)
}
@Test
fun updateParents() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "123")))
insert(newCaldavTask(with(TASK, 2), with(REMOTE_PARENT, "123")))
caldavDao.updateParents()
assertEquals(1, taskDao.fetch(2)!!.parent)
}
@Test
fun updateParentsByList() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "123")))
insert(newCaldavTask(with(TASK, 2), with(REMOTE_PARENT, "123")))
caldavDao.updateParents("calendar")
assertEquals(1, taskDao.fetch(2)!!.parent)
}
@Test
fun updateParentsMustMatchList() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "123")))
insert(newCaldavTask(with(TASK, 2), with(CALENDAR, "2"), with(REMOTE_PARENT, "123")))
caldavDao.updateParents()
assertEquals(0, taskDao.fetch(2)!!.parent)
}
@Test
fun updateParentsByListMustMatchList() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "123")))
insert(newCaldavTask(with(TASK, 2), with(CALENDAR, "2"), with(REMOTE_PARENT, "123")))
caldavDao.updateParents("2")
assertEquals(0, taskDao.fetch(2)!!.parent)
}
@Test
fun ignoreEmptyStringWhenUpdatingParents() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "")))
insert(newCaldavTask(with(TASK, 2), with(REMOTE_ID, ""), with(REMOTE_PARENT, "")))
caldavDao.updateParents()
assertEquals(0, taskDao.fetch(2)!!.parent)
}
@Test
fun ignoreEmptyStringWhenUpdatingParentsForList() = runBlocking {
insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "")))
insert(newCaldavTask(with(TASK, 2), with(REMOTE_ID, ""), with(REMOTE_PARENT, "")))
caldavDao.updateParents("1")
assertEquals(0, taskDao.fetch(2)!!.parent)
}
private suspend fun getOrder(remoteId: String): Long? {
return taskDao.fetch(googleTaskDao.getByRemoteId(remoteId)!!.task)?.order
}
private suspend fun insertTop(googleTask: CaldavTask) {
insert(googleTask, true)
}
private fun insertBottom(googleTask: GoogleTask) {
private suspend fun insertBottom(googleTask: CaldavTask) {
insert(googleTask, false)
}
private fun insert(googleTask: GoogleTask, top: Boolean) {
private suspend fun insert(googleTask: CaldavTask, top: Boolean = false) {
val task = newTask()
taskDao.createNew(task)
googleTask.task = task.id
googleTaskDao.insertAndShift(googleTask, top)
googleTaskDao.insertAndShift(
task,
googleTask.copy(task = task.id),
top
)
}
private fun getByRemoteId(remoteId: String): SubsetGoogleTask {
val googleTask = googleTaskDao.getByRemoteId(remoteId)!!
val result = SubsetGoogleTask()
result.gt_id = googleTask.id
result.gt_list_id = googleTask.listId
result.gt_order = googleTask.order
result.gt_parent = googleTask.parent
return result
private suspend fun getByRemoteId(remoteId: String): CaldavTask {
return googleTaskDao.getByRemoteId(remoteId)!!
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -1,54 +1,26 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import org.junit.Assert.*
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.dao.CaldavDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.GoogleTaskListMaker.ACCOUNT
import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID
import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class GoogleTaskListDaoTest : InjectingTestCase() {
@Inject lateinit var googleTaskListDao: GoogleTaskListDao
@Test
fun noResultsForEmptyAccount() {
val account = GoogleTaskAccount()
account.account = "user@gmail.com"
googleTaskListDao.insert(account)
assertTrue(googleTaskListDao.getGoogleTaskFilters(account.account!!).isEmpty())
}
@Inject lateinit var caldavDao: CaldavDao
@Test
fun findListWithNullAccount() {
val list = newGoogleTaskList(with(REMOTE_ID, "1234"), with(ACCOUNT, null as String?))
list.id = googleTaskListDao.insert(list)
assertEquals(list, googleTaskListDao.findExistingList("1234"))
fun noResultsForEmptyAccount() = runBlocking {
val account = CaldavAccount(
uuid = "user@gmail.com",
username = "user@gmail.com",
)
caldavDao.insert(account)
assertTrue(caldavDao.getCaldavFilters(account.username!!).isEmpty())
}
@Test
fun findListWithEmptyAccount() {
val list = newGoogleTaskList(with(REMOTE_ID, "1234"), with(ACCOUNT, ""))
list.id = googleTaskListDao.insert(list)
assertEquals(list, googleTaskListDao.findExistingList("1234"))
}
@Test
fun ignoreListWithAccount() {
val list = newGoogleTaskList(with(REMOTE_ID, "1234"), with(ACCOUNT, "user@gmail.com"))
googleTaskListDao.insert(list)
assertNull(googleTaskListDao.findExistingList("1234"))
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -1,60 +1,59 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.junit.Assert.*
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze
import org.tasks.SuspendFreeze.Companion.freezeAt
import org.tasks.caldav.GeoUtils.toLikeString
import org.tasks.data.dao.AlarmDao
import org.tasks.data.dao.LocationDao
import org.tasks.data.entity.Alarm
import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE
import org.tasks.data.entity.Geofence
import org.tasks.data.entity.Place
import org.tasks.data.entity.Task
import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.GeofenceMaker.ARRIVAL
import org.tasks.makers.GeofenceMaker.DEPARTURE
import org.tasks.makers.GeofenceMaker.PLACE
import org.tasks.makers.GeofenceMaker.TASK
import org.tasks.makers.GeofenceMaker.newGeofence
import org.tasks.makers.PlaceMaker.LATITUDE
import org.tasks.makers.PlaceMaker.LONGITUDE
import org.tasks.makers.PlaceMaker.newPlace
import org.tasks.makers.TaskMaker.COMPLETION_TIME
import org.tasks.makers.TaskMaker.DELETION_TIME
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.SNOOZE_TIME
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class LocationDaoTest : InjectingTestCase() {
@Inject lateinit var locationDao: LocationDao
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var alarmDao: AlarmDao
@Test
fun getExistingPlace() {
locationDao.insert(newPlace(with(LATITUDE, 48.067222), with(LONGITUDE, 12.863611)))
fun getExistingPlace() = runBlocking {
locationDao.insert(Place(latitude = 48.067222, longitude = 12.863611))
val place = locationDao.findPlace(48.067222.toLikeString(), 12.863611.toLikeString())
assertEquals(48.067222, place?.latitude)
assertEquals(12.863611, place?.longitude)
}
@Test
fun getPlaceWithLessPrecision() {
locationDao.insert(newPlace(with(LATITUDE, 50.7547), with(LONGITUDE, -2.2279)))
fun getPlaceWithLessPrecision() = runBlocking {
locationDao.insert(Place(latitude = 50.7547, longitude = -2.2279))
val place = locationDao.findPlace(50.754712.toLikeString(), (-2.227945).toLikeString())
assertEquals(50.7547, place?.latitude)
assertEquals(-2.2279, place?.longitude)
}
@Test
fun getPlaceWithMorePrecision() {
locationDao.insert(newPlace(with(LATITUDE, 36.246944), with(LONGITUDE, -116.816944)))
fun getPlaceWithMorePrecision() = runBlocking {
locationDao.insert(Place(latitude = 36.246944, longitude = -116.816944))
locationDao.getPlaces().forEach { println(it) }
val place = locationDao.findPlace(36.2469.toLikeString(), (-116.8169).toLikeString())
assertEquals(36.246944, place?.latitude)
@ -62,21 +61,21 @@ class LocationDaoTest : InjectingTestCase() {
}
@Test
fun noActiveGeofences() {
val place = newPlace()
fun noActiveGeofences() = runBlocking {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1)))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid)))
locationDao.insert(Geofence(task = 1, place = place.uid))
assertNull(locationDao.getGeofencesByPlace(place.uid!!))
}
@Test
fun activeArrivalGeofence() {
val place = newPlace()
fun activeArrivalGeofence() = runBlocking {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1)))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(ARRIVAL, true)))
locationDao.insert(Geofence(task = 1, place = place.uid, isArrival = true))
val geofence = locationDao.getGeofencesByPlace(place.uid!!)
@ -85,11 +84,11 @@ class LocationDaoTest : InjectingTestCase() {
}
@Test
fun activeDepartureGeofence() {
val place = newPlace()
fun activeDepartureGeofence() = runBlocking {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1)))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(DEPARTURE, true)))
locationDao.insert(Geofence(task = 1, place = place.uid, isDeparture = true))
val geofence = locationDao.getGeofencesByPlace(place.uid!!)
@ -98,137 +97,173 @@ class LocationDaoTest : InjectingTestCase() {
}
@Test
fun geofenceInactiveForCompletedTask() {
val place = newPlace()
fun geofenceInactiveForCompletedTask() = runBlocking {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1), with(COMPLETION_TIME, newDateTime())))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(ARRIVAL, true)))
locationDao.insert(Geofence(task = 1, place = place.uid, isArrival = true))
assertNull(locationDao.getGeofencesByPlace(place.uid!!))
}
@Test
fun geofenceInactiveForDeletedTask() {
val place = newPlace()
fun geofenceInactiveForDeletedTask() = runBlocking {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1), with(DELETION_TIME, newDateTime())))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(ARRIVAL, true)))
locationDao.insert(Geofence(task = 1, place = place.uid, isArrival = true))
assertNull(locationDao.getGeofencesByPlace(place.uid!!))
}
@Test
fun ignoreArrivalForSnoozedTask() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun ignoreArrivalForSnoozedTask() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1), with(SNOOZE_TIME, newDateTime().plusMinutes(15))))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(ARRIVAL, true)))
assertTrue(locationDao.getArrivalGeofences(place.uid!!, now()).isEmpty())
val task = taskDao.createNew(newTask())
alarmDao.insert(
Alarm(
task = task,
time = newDateTime().plusMinutes(15).millis,
type = TYPE_SNOOZE
)
)
locationDao.insert(Geofence(task = task, place = place.uid, isArrival = true))
assertTrue(locationDao.getArrivalGeofences(place.uid!!, currentTimeMillis()).isEmpty())
}
}
@Test
fun ignoreDepartureForSnoozedTask() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun ignoreDepartureForSnoozedTask() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1), with(SNOOZE_TIME, newDateTime().plusMinutes(15))))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(DEPARTURE, true)))
assertTrue(locationDao.getDepartureGeofences(place.uid!!, now()).isEmpty())
val task = taskDao.createNew(newTask())
alarmDao.insert(
Alarm(
task = task,
time = newDateTime().plusMinutes(15).millis,
type = TYPE_SNOOZE
)
)
locationDao.insert(Geofence(task = task, place = place.uid, isDeparture = true))
assertTrue(locationDao.getDepartureGeofences(place.uid!!, currentTimeMillis()).isEmpty())
}
}
@Test
fun getArrivalWithElapsedSnooze() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun getArrivalWithElapsedSnooze() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1), with(SNOOZE_TIME, newDateTime().minusMinutes(15))))
val geofence = newGeofence(with(TASK, 1), with(PLACE, place.uid), with(ARRIVAL, true))
geofence.id = locationDao.insert(geofence)
assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!, now()))
val task = taskDao.createNew(newTask())
alarmDao.insert(
Alarm(
task = task,
time = newDateTime().minusMinutes(15).millis,
type = TYPE_SNOOZE
)
)
val geofence = Geofence(task = task, place = place.uid, isArrival = true)
.let { it.copy(id = locationDao.insert(it)) }
assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!,
currentTimeMillis()
))
}
}
@Test
fun getDepartureWithElapsedSnooze() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun getDepartureWithElapsedSnooze() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(with(ID, 1), with(SNOOZE_TIME, newDateTime().minusMinutes(15))))
val geofence = newGeofence(with(TASK, 1), with(PLACE, place.uid), with(DEPARTURE, true))
geofence.id = locationDao.insert(geofence)
assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!, now()))
val task = taskDao.createNew(newTask())
alarmDao.insert(
Alarm(
task = task,
time = newDateTime().minusMinutes(15).millis,
type = TYPE_SNOOZE
)
)
val geofence = Geofence(task = task, place = place.uid, isDeparture = true)
.let { it.copy(id = locationDao.insert(it)) }
assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!,
currentTimeMillis()
))
}
}
@Test
fun ignoreArrivalForHiddenTask() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun ignoreArrivalForHiddenTask() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(
with(ID, 1),
with(DUE_TIME, newDateTime().plusMinutes(15)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME)))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(ARRIVAL, true)))
locationDao.insert(Geofence(task = 1, place = place.uid, isArrival = true))
assertTrue(locationDao.getArrivalGeofences(place.uid!!, now()).isEmpty())
assertTrue(locationDao.getArrivalGeofences(place.uid!!, currentTimeMillis()).isEmpty())
}
}
@Test
fun ignoreDepartureForHiddenTask() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun ignoreDepartureForHiddenTask() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(
with(ID, 1),
with(DUE_TIME, newDateTime().plusMinutes(15)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME)))
locationDao.insert(newGeofence(with(TASK, 1), with(PLACE, place.uid), with(DEPARTURE, true)))
locationDao.insert(Geofence(task = 1, place = place.uid, isDeparture = true))
assertTrue(locationDao.getDepartureGeofences(place.uid!!, now()).isEmpty())
assertTrue(locationDao.getDepartureGeofences(place.uid!!, currentTimeMillis()).isEmpty())
}
}
@Test
fun getArrivalWithElapsedHideUntil() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun getArrivalWithElapsedHideUntil() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(
with(ID, 1),
with(DUE_TIME, newDateTime().minusMinutes(15)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME)))
val geofence = newGeofence(with(TASK, 1), with(PLACE, place.uid), with(ARRIVAL, true))
geofence.id = locationDao.insert(geofence)
assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!, now()))
val geofence = Geofence(task = 1, place = place.uid, isArrival = true)
.let {
it.copy(id = locationDao.insert(it))
}
assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!,
currentTimeMillis()
))
}
}
@Test
fun getDepartureWithElapsedHideUntil() {
Freeze.freezeAt(now()).thawAfter {
val place = newPlace()
fun getDepartureWithElapsedHideUntil() = runBlocking {
freezeAt(currentTimeMillis()).thawAfter {
val place = Place()
locationDao.insert(place)
taskDao.createNew(newTask(
with(ID, 1),
with(DUE_TIME, newDateTime().minusMinutes(15)),
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME)))
val geofence = newGeofence(with(TASK, 1), with(PLACE, place.uid), with(DEPARTURE, true))
geofence.id = locationDao.insert(geofence)
val geofence = Geofence(task = 1, place = place.uid, isDeparture = true)
.let { it.copy(id = locationDao.insert(it)) }
assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!, now()))
assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!,
currentTimeMillis()
))
}
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -1,48 +1,53 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.helper.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.R
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS
import org.tasks.data.entity.CaldavCalendar
import org.tasks.filters.CaldavFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID
import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList
import org.tasks.makers.GoogleTaskMaker.LIST
import org.tasks.makers.GoogleTaskMaker.ORDER
import org.tasks.makers.GoogleTaskMaker.PARENT
import org.tasks.makers.GoogleTaskMaker.TASK
import org.tasks.makers.GoogleTaskMaker.newGoogleTask
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker
import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.UUID
import org.tasks.makers.TaskMaker.ORDER
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.preferences.Preferences
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class ManualGoogleTaskQueryTest : InjectingTestCase() {
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var preferences: Preferences
private val filter: GtasksFilter = GtasksFilter(newGoogleTaskList(with(REMOTE_ID, "1234")))
private lateinit var filter: CaldavFilter
@Before
override fun setUp() {
super.setUp()
preferences.clear()
preferences.setBoolean(R.string.p_manual_sort, true)
val calendar = CaldavCalendar(uuid = "1234")
runBlocking {
caldavDao.insert(CaldavAccount())
caldavDao.insert(calendar)
}
filter = CaldavFilter(calendar, account = CaldavAccount(accountType = TYPE_GOOGLE_TASKS))
}
@Test
fun setIndentOnSubtask() {
fun setIndentOnSubtask() = runBlocking {
newTask(1, 0, 0)
newTask(2, 0, 1)
@ -52,7 +57,7 @@ class ManualGoogleTaskQueryTest : InjectingTestCase() {
}
@Test
fun setParentOnSubtask() {
fun setParentOnSubtask() = runBlocking {
newTask(2, 0, 0)
newTask(1, 0, 2)
@ -62,7 +67,7 @@ class ManualGoogleTaskQueryTest : InjectingTestCase() {
}
@Test
fun querySetsPrimarySort() {
fun querySetsPrimarySort() = runBlocking {
newTask(1, 0, 0)
newTask(2, 1, 0)
newTask(3, 0, 2)
@ -75,7 +80,7 @@ class ManualGoogleTaskQueryTest : InjectingTestCase() {
}
@Test
fun querySetsSecondarySortOnSubtasks() {
fun querySetsSecondarySortOnSubtasks() = runBlocking {
newTask(1, 0, 0)
newTask(2, 0, 1)
newTask(3, 1, 1)
@ -87,25 +92,17 @@ class ManualGoogleTaskQueryTest : InjectingTestCase() {
assertEquals(1, subtasks[2].secondarySort)
}
@Test
fun ignoreDisableSubtasksPreference() {
preferences.setBoolean(R.string.p_use_paged_queries, true)
newTask(1, 0, 0)
newTask(2, 0, 1)
val parent = query()[0]
assertTrue(parent.hasChildren())
}
private fun newTask(id: Long, order: Long, parent: Long = 0) {
taskDao.insert(TaskMaker.newTask(with(ID, id), with(UUID, UUIDHelper.newUUID())))
googleTaskDao.insert(newGoogleTask(with(LIST, filter.list.remoteId), with(TASK, id), with(PARENT, parent), with(ORDER, order)))
}
private fun query(): List<TaskContainer> = taskDao.fetchTasks {
TaskListQuery.getQuery(preferences, filter, it)
private suspend fun newTask(id: Long, order: Long, parent: Long = 0) {
taskDao.insert(TaskMaker.newTask(
with(ID, id),
with(TaskMaker.UUID, UUIDHelper.newUUID()),
with(ORDER, order),
with(PARENT, parent),
))
googleTaskDao.insert(newCaldavTask(with(CALENDAR, filter.uuid), with(TASK, id)))
}
override fun inject(component: TestComponent) = component.inject(this)
private suspend fun query(): List<TaskContainer> = taskDao.fetchTasks(
TaskListQuery.getQuery(preferences, filter)
)
}

@ -1,90 +1,84 @@
package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.dao.TagDao
import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.Tag
import org.tasks.data.entity.TagData
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.makers.TagDataMaker.NAME
import org.tasks.makers.TagDataMaker.newTagData
import org.tasks.makers.TagMaker.TAGDATA
import org.tasks.makers.TagMaker.TAGUID
import org.tasks.makers.TagMaker.TASK
import org.tasks.makers.TagMaker.newTag
import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.newTask
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class TagDataDaoTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var tagDao: TagDao
@Inject lateinit var tagDataDao: TagDataDao
@Test
fun tagDataOrderedByNameIgnoresNullNames() {
tagDataDao.createNew(newTagData(with(NAME, null as String?)))
fun tagDataOrderedByNameIgnoresNullNames() = runBlocking {
tagDataDao.insert(TagData(name = null))
assertTrue(tagDataDao.tagDataOrderedByName().isEmpty())
}
@Test
fun tagDataOrderedByNameIgnoresEmptyNames() {
tagDataDao.createNew(newTagData(with(NAME, "")))
fun tagDataOrderedByNameIgnoresEmptyNames() = runBlocking {
tagDataDao.insert(TagData(name = ""))
assertTrue(tagDataDao.tagDataOrderedByName().isEmpty())
}
@Test
fun getTagWithCaseForMissingTag() {
fun getTagWithCaseForMissingTag() = runBlocking {
assertEquals("derp", tagDataDao.getTagWithCase("derp"))
}
@Test
fun getTagWithCaseFixesCase() {
tagDataDao.createNew(newTagData(with(NAME, "Derp")))
fun getTagWithCaseFixesCase() = runBlocking {
tagDataDao.insert(TagData(name = "Derp"))
assertEquals("Derp", tagDataDao.getTagWithCase("derp"))
}
@Test
fun getTagsByName() {
val tagData = newTagData(with(NAME, "Derp"))
tagDataDao.createNew(tagData)
fun getTagsByName() = runBlocking {
val tagData = TagData(name = "Derp").let { it.copy(id = tagDataDao.insert(it)) }
assertEquals(listOf(tagData), tagDataDao.getTags(listOf("Derp")))
}
@Test
fun getTagsByNameCaseSensitive() {
tagDataDao.createNew(newTagData(with(NAME, "Derp")))
fun getTagsByNameCaseSensitive() = runBlocking {
tagDataDao.insert(TagData(name = "Derp"))
assertTrue(tagDataDao.getTags(listOf("derp")).isEmpty())
}
@Test
fun getTagDataForTask() {
fun getTagDataForTask() = runBlocking {
val taskOne = newTask()
val taskTwo = newTask()
taskDao.createNew(taskOne)
taskDao.createNew(taskTwo)
val tagOne = newTagData(with(NAME, "one"))
val tagTwo = newTagData(with(NAME, "two"))
tagDataDao.createNew(tagOne)
tagDataDao.createNew(tagTwo)
tagDao.insert(newTag(with(TAGDATA, tagOne), with(TASK, taskOne)))
tagDao.insert(newTag(with(TAGDATA, tagTwo), with(TASK, taskTwo)))
val tagOne = TagData(name = "one").let { it.copy(id = tagDataDao.insert(it)) }
val tagTwo = TagData(name = "two").let { it.copy(id = tagDataDao.insert(it)) }
tagDao.insert(Tag(task = taskOne.id, taskUid = taskOne.uuid, tagUid = tagOne.remoteId))
tagDao.insert(Tag(task = taskTwo.id, taskUid = taskTwo.uuid, tagUid = tagTwo.remoteId))
assertEquals(listOf(tagOne), tagDataDao.getTagDataForTask(taskOne.id))
}
@Test
fun getEmptyTagSelections() {
fun getEmptyTagSelections() = runBlocking {
val selections = tagDataDao.getTagSelections(listOf(1L))
assertTrue(selections.first!!.isEmpty())
assertTrue(selections.second!!.isEmpty())
assertTrue(selections.first.isEmpty())
assertTrue(selections.second.isEmpty())
}
@Test
fun getPartialTagSelections() {
fun getPartialTagSelections() = runBlocking {
newTag(1, "tag1", "tag2")
newTag(2, "tag2", "tag3")
assertEquals(
@ -92,50 +86,48 @@ class TagDataDaoTest : InjectingTestCase() {
}
@Test
fun getEmptyPartialSelections() {
fun getEmptyPartialSelections() = runBlocking {
newTag(1, "tag1")
newTag(2, "tag1")
assertTrue(tagDataDao.getTagSelections(listOf(1L, 2L)).first!!.isEmpty())
assertTrue(tagDataDao.getTagSelections(listOf(1L, 2L)).first.isEmpty())
}
@Test
fun getCommonTagSelections() {
fun getCommonTagSelections() = runBlocking {
newTag(1, "tag1", "tag2")
newTag(2, "tag2", "tag3")
assertEquals(setOf("tag2"), tagDataDao.getTagSelections(listOf(1L, 2L)).second)
}
@Test
fun getEmptyCommonSelections() {
fun getEmptyCommonSelections() = runBlocking {
newTag(1, "tag1")
newTag(2, "tag2")
assertTrue(tagDataDao.getTagSelections(listOf(1L, 2L)).second!!.isEmpty())
assertTrue(tagDataDao.getTagSelections(listOf(1L, 2L)).second.isEmpty())
}
@Test
fun getSelectionsWithNoTags() {
fun getSelectionsWithNoTags() = runBlocking {
newTag(1)
val selections = tagDataDao.getTagSelections(listOf(1L))
assertTrue(selections.first!!.isEmpty())
assertTrue(selections.second!!.isEmpty())
assertTrue(selections.first.isEmpty())
assertTrue(selections.second.isEmpty())
}
@Test
fun noCommonSelectionsWhenOneTaskHasNoTags() {
fun noCommonSelectionsWhenOneTaskHasNoTags() = runBlocking {
newTag(1, "tag1")
newTag(2)
val selections = tagDataDao.getTagSelections(listOf(1L, 2L))
assertEquals(setOf("tag1"), selections.first)
assertTrue(selections.second!!.isEmpty())
assertTrue(selections.second.isEmpty())
}
private fun newTag(taskId: Long, vararg tags: String) {
private suspend fun newTag(taskId: Long, vararg tags: String) {
val task = newTask(with(ID, taskId))
taskDao.createNew(task)
for (tag in tags) {
tagDao.insert(newTag(with(TASK, task), with(TAGUID, tag)))
tagDao.insert(Tag(task = task.id, taskUid = task.uuid, tagUid = tag))
}
}
override fun inject(component: TestComponent) = component.inject(this)
}

@ -0,0 +1,133 @@
/*
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package org.tasks.data
import com.natpryce.makeiteasy.MakeItEasy.with
import org.tasks.data.entity.Task
import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
import org.tasks.data.dao.TaskDao
import org.tasks.injection.InjectingTestCase
import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@HiltAndroidTest
class TaskDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var taskDeleter: TaskDeleter
/** Test various task fetch conditions */
@Test
fun testTaskConditions() = runBlocking {
// create normal task
var task = Task()
task.title = "normal"
taskDao.createNew(task)
// create blank task
task = Task()
task.title = ""
taskDao.createNew(task)
// create hidden task
task = Task()
task.title = "hidden"
task.hideUntil = currentTimeMillis() + 10000
taskDao.createNew(task)
// create task with deadlines
task = Task()
task.title = "deadlineInFuture"
task.dueDate = currentTimeMillis() + 10000
taskDao.createNew(task)
task = Task()
task.title = "deadlineInPast"
task.dueDate = currentTimeMillis() - 10000
taskDao.createNew(task)
// create completed task
task = Task()
task.title = "completed"
task.completionDate = currentTimeMillis() - 10000
taskDao.createNew(task)
// check is active
assertEquals(5, taskDao.getActiveTasks().size)
// check is visible
assertEquals(5, taskDao.getActiveTasks().size)
}
/** Test task deletion */
@Test
fun testTDeletion() = runBlocking {
assertEquals(0, taskDao.getAll().size)
// create task "happy"
val task = Task()
task.title = "happy"
taskDao.createNew(task)
assertEquals(1, taskDao.getAll().size)
// delete
taskDeleter.delete(task)
assertEquals(0, taskDao.getAll().size)
}
/** Test passing invalid task indices to various things */
@Test
fun testInvalidIndex() = runBlocking {
assertEquals(0, taskDao.getAll().size)
assertNull(taskDao.fetch(1))
taskDeleter.delete(listOf(1L))
// make sure db still works
assertEquals(0, taskDao.getAll().size)
}
@Test
fun findChildrenInList() = runBlocking {
val parent = taskDao.createNew(newTask())
val child = taskDao.createNew(newTask(with(PARENT, parent)))
assertEquals(listOf(child), taskDao.getChildren(listOf(parent, child)))
}
@Test
fun findRecursiveChildrenInList() = runBlocking {
val parent = taskDao.createNew(newTask())
val child = taskDao.createNew(newTask(with(PARENT, parent)))
val grandchild = taskDao.createNew(newTask(with(PARENT, child)))
assertEquals(
listOf(child, grandchild, grandchild),
taskDao.getChildren(listOf(parent, child, grandchild)))
}
@Test
fun findRecursiveChildrenInListAfterSkippingParent() = runBlocking {
val parent = taskDao.createNew(newTask())
val child = taskDao.createNew(newTask(with(PARENT, parent)))
val grandchild = taskDao.createNew(newTask(with(PARENT, child)))
assertEquals(listOf(child, grandchild), taskDao.getChildren(listOf(parent, grandchild)))
}
@Test
fun dontSetParentToSelf() = runBlocking {
val parent = taskDao.createNew(newTask())
val child = taskDao.createNew(newTask())
taskDao.setParent(parent, listOf(parent, child))
assertEquals(0, taskDao.fetch(parent)!!.parent)
assertEquals(parent, taskDao.fetch(child)!!.parent)
}
}

@ -0,0 +1,62 @@
package org.tasks.data
import com.natpryce.makeiteasy.MakeItEasy
import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.TagDao
import org.tasks.data.dao.TagDataDao
import org.tasks.data.dao.UpgraderDao
import org.tasks.data.entity.CaldavTask
import org.tasks.data.entity.Tag
import org.tasks.data.entity.TagData
import org.tasks.injection.InjectingTestCase
import org.tasks.makers.TaskMaker
import javax.inject.Inject
@HiltAndroidTest
class UpgraderDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var tagDao: TagDao
@Inject lateinit var tagDataDao: TagDataDao
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var upgraderDao: UpgraderDao
@Test
fun getCaldavTasksWithTags() = runBlocking {
val task = TaskMaker.newTask(MakeItEasy.with(TaskMaker.ID, 1L))
taskDao.createNew(task)
val one = TagData()
val two = TagData()
tagDataDao.insert(one)
tagDataDao.insert(two)
tagDao.insert(Tag(task = task.id, taskUid = task.uuid, tagUid = one.remoteId))
tagDao.insert(Tag(task = task.id, taskUid = task.uuid, tagUid = two.remoteId))
caldavDao.insert(CaldavTask(task = task.id, calendar = "calendar"))
assertEquals(listOf(task.id), upgraderDao.tasksWithTags())
}
@Test
fun ignoreNonCaldavTaskWithTags() = runBlocking {
val task = TaskMaker.newTask(MakeItEasy.with(TaskMaker.ID, 1L))
taskDao.createNew(task)
val tag = TagData()
tagDataDao.insert(tag)
tagDao.insert(Tag(task = task.id, taskUid = task.uuid, tagUid = tag.remoteId))
assertTrue(upgraderDao.tasksWithTags().isEmpty())
}
@Test
fun ignoreCaldavTaskWithoutTags() = runBlocking {
val task = TaskMaker.newTask(MakeItEasy.with(TaskMaker.ID, 1L))
taskDao.createNew(task)
tagDataDao.insert(TagData())
caldavDao.insert(CaldavTask(task = task.id, calendar = "calendar"))
assertTrue(upgraderDao.tasksWithTags().isEmpty())
}
}

@ -2,7 +2,7 @@ package org.tasks.gtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test

@ -1,20 +1,24 @@
package org.tasks.injection
import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.core.app.ApplicationProvider.getApplicationContext
import androidx.test.platform.app.InstrumentationRegistry
import dagger.hilt.android.testing.HiltAndroidRule
import org.junit.Before
import timber.log.Timber
import org.junit.Rule
abstract class InjectingTestCase {
@get:Rule
var hiltRule = HiltAndroidRule(this)
@Before
open fun setUp() {
Thread.setDefaultUncaughtExceptionHandler { _, e: Throwable? -> Timber.e(e) }
val context = ApplicationProvider.getApplicationContext<Context>()
val component = DaggerTestComponent.builder()
.applicationModule(ApplicationModule(context))
.testModule(TestModule()).build()
inject(component)
hiltRule.inject()
}
protected abstract fun inject(component: TestComponent)
protected fun runOnMainSync(runnable: Runnable) =
InstrumentationRegistry.getInstrumentation().runOnMainSync(runnable)
protected val context: Context
get() = getApplicationContext()
}

@ -1,51 +0,0 @@
package org.tasks.injection
import com.todoroo.astrid.adapter.*
import com.todoroo.astrid.alarms.AlarmJobServiceTest
import com.todoroo.astrid.dao.TaskDaoTests
import com.todoroo.astrid.gtasks.GtasksListServiceTest
import com.todoroo.astrid.gtasks.GtasksMetadataServiceTest
import com.todoroo.astrid.model.TaskTest
import com.todoroo.astrid.reminders.ReminderServiceTest
import com.todoroo.astrid.repeats.RepeatTaskHelperTest
import com.todoroo.astrid.service.QuickAddMarkupTest
import com.todoroo.astrid.service.TaskMoverTest
import com.todoroo.astrid.service.TitleParserTest
import com.todoroo.astrid.subtasks.SubtasksHelperTest
import com.todoroo.astrid.subtasks.SubtasksMovingTest
import com.todoroo.astrid.sync.NewSyncTestCase
import dagger.Component
import org.tasks.data.*
import org.tasks.jobs.BackupServiceTests
@ApplicationScope
@Component(modules = [TestModule::class])
interface TestComponent : ApplicationComponent {
fun inject(tests: GtasksListServiceTest)
fun inject(tests: ReminderServiceTest)
fun inject(tests: TaskTest)
fun inject(tests: TaskDaoTests)
fun inject(tests: NewSyncTestCase)
fun inject(tests: SubtasksMovingTest)
fun inject(tests: SubtasksHelperTest)
fun inject(tests: QuickAddMarkupTest)
fun inject(tests: TitleParserTest)
fun inject(tests: BackupServiceTests)
fun inject(tests: AlarmJobServiceTest)
fun inject(tests: RepeatTaskHelperTest)
fun inject(tests: GtasksMetadataServiceTest)
fun inject(tests: DeletionDaoTests)
fun inject(tests: GoogleTaskDaoTests)
fun inject(tests: TagDataDaoTest)
fun inject(tests: CaldavDaoTests)
fun inject(tests: TaskMoverTest)
fun inject(tests: LocationDaoTest)
fun inject(tests: GoogleTaskListDaoTest)
fun inject(tests: CaldavTaskAdapterTest)
fun inject(tests: ManualGoogleTaskQueryTest)
fun inject(tests: CaldavDaoShiftTests)
fun inject(tests: CaldavManualSortTaskAdapterTest)
fun inject(tests: GoogleTaskManualSortAdapterTest)
fun inject(tests: OfflineSubtaskTest)
fun inject(tests: NonRecursiveQueryTest)
}

@ -2,31 +2,54 @@ package org.tasks.injection
import android.content.Context
import androidx.room.Room
import com.todoroo.astrid.dao.Database
import dagger.Module
import dagger.Provides
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dagger.hilt.testing.TestInstallIn
import org.mockito.Mockito.mock
import org.tasks.TestUtilities
import org.tasks.data.db.Database
import org.tasks.jobs.WorkManager
import org.tasks.location.LocationManager
import org.tasks.location.MockLocationManager
import org.tasks.preferences.PermissionChecker
import org.tasks.preferences.PermissivePermissionChecker
import org.tasks.preferences.Preferences
import javax.inject.Singleton
@Module(includes = [ApplicationModule::class])
@Module
@TestInstallIn(
components = [SingletonComponent::class],
replaces = [ProductionModule::class]
)
class TestModule {
@Provides
@ApplicationScope
fun getDatabase(@ForApplication context: Context): Database {
return Room.inMemoryDatabaseBuilder(context, Database::class.java)
.fallbackToDestructiveMigration()
.build()
}
@Singleton
fun getDatabase(@ApplicationContext context: Context): Database =
Room
.inMemoryDatabaseBuilder(context, Database::class.java)
.fallbackToDestructiveMigration(dropAllTables = true)
.setDriver()
.build()
@Provides
fun getPermissionChecker(@ForApplication context: Context): PermissionChecker {
fun getPermissionChecker(@ApplicationContext context: Context): PermissionChecker {
return PermissivePermissionChecker(context)
}
@Provides
fun getPreferences(@ForApplication context: Context): Preferences {
fun getPreferences(@ApplicationContext context: Context): Preferences {
return TestUtilities.newPreferences(context)
}
@Provides
@Singleton
fun getMockLocationManager(): MockLocationManager = MockLocationManager()
@Provides
fun getLocationManager(locationManager: MockLocationManager): LocationManager = locationManager
@Provides
fun getWorkManager(): WorkManager = mock(WorkManager::class.java)
}

@ -7,56 +7,58 @@ package org.tasks.jobs
import android.net.Uri
import androidx.test.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.tasks.data.entity.Task
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.R
import org.tasks.backup.BackupConstants.BACKUP_CLEANUP_MATCHER
import org.tasks.backup.TasksJsonExporter
import org.tasks.backup.TasksJsonExporter.ExportType
import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import org.tasks.preferences.Preferences
import java.io.File
import java.io.IOException
import javax.inject.Inject
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class BackupServiceTests : InjectingTestCase() {
@Inject lateinit var jsonExporter: TasksJsonExporter
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var preferences: Preferences
private lateinit var temporaryDirectory: File
@Before
override fun setUp() {
super.setUp()
temporaryDirectory = try {
File.createTempFile("backup", System.nanoTime().toString())
} catch (e: IOException) {
throw RuntimeException(e)
}
if (!temporaryDirectory.delete()) {
throw RuntimeException(
"Could not delete temp file: " + temporaryDirectory.absolutePath)
}
if (!temporaryDirectory.mkdir()) {
throw RuntimeException(
"Could not create temp directory: " + temporaryDirectory.absolutePath)
}
preferences.setUri(R.string.p_backup_dir, Uri.fromFile(temporaryDirectory))
runBlocking {
super.setUp()
temporaryDirectory = try {
File.createTempFile("backup", System.nanoTime().toString())
} catch (e: IOException) {
throw RuntimeException(e)
}
if (!temporaryDirectory.delete()) {
throw RuntimeException(
"Could not delete temp file: " + temporaryDirectory.absolutePath)
}
if (!temporaryDirectory.mkdir()) {
throw RuntimeException(
"Could not create temp directory: " + temporaryDirectory.absolutePath)
}
preferences.setUri(R.string.p_backup_dir, Uri.fromFile(temporaryDirectory))
// make a temporary task
val task = Task()
task.title = "helicopter"
taskDao.createNew(task)
// make a temporary task
val task = Task()
task.title = "helicopter"
taskDao.createNew(task)
}
}
override fun inject(component: TestComponent) = component.inject(this)
@After
fun tearDown() {
for (file in temporaryDirectory.listFiles()!!) {
@ -66,13 +68,13 @@ class BackupServiceTests : InjectingTestCase() {
}
@Test
fun testBackup() {
fun testBackup() = runBlocking {
assertEquals(0, temporaryDirectory.list()!!.size)
jsonExporter.exportTasks(InstrumentationRegistry.getTargetContext(), ExportType.EXPORT_TYPE_SERVICE, null)
// assert file created
val files = temporaryDirectory.listFiles()
assertEquals(1, files!!.size)
assertTrue(files[0].name.matches(Regex(BackupWork.BACKUP_FILE_NAME_REGEX)))
assertTrue(files[0].name.matches(BACKUP_CLEANUP_MATCHER))
}
}

@ -0,0 +1,73 @@
package org.tasks.location
import android.location.Location
import android.location.LocationManager.GPS_PROVIDER
import android.location.LocationManager.NETWORK_PROVIDER
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
import org.tasks.injection.InjectingTestCase
import org.tasks.time.DateTime
import javax.inject.Inject
@HiltAndroidTest
class LocationServiceAndroidTest : InjectingTestCase() {
@Inject lateinit var service: LocationServiceAndroid
@Inject lateinit var locationManager: MockLocationManager
@Test
fun sortByAccuracy() = runBlocking {
newLocation(NETWORK_PROVIDER, 45.0, 46.0, 50f, DateTime(2021, 2, 4, 13, 35, 45, 121))
newLocation(GPS_PROVIDER, 45.1, 46.1, 30f, DateTime(2021, 2, 4, 13, 33, 45, 121))
assertEquals(MapPosition(45.1, 46.1), service.currentLocation())
}
@Test
fun sortWithStaleLocation() = runBlocking {
newLocation(GPS_PROVIDER, 45.1, 46.1, 30f, DateTime(2021, 2, 4, 13, 33, 44, 121))
newLocation(NETWORK_PROVIDER, 45.0, 46.0, 50f, DateTime(2021, 2, 4, 13, 35, 45, 121))
assertEquals(MapPosition(45.0, 46.0), service.currentLocation())
}
@Test
fun useNewerUpdateWhenAccuracySame() = runBlocking {
newLocation(GPS_PROVIDER, 45.1, 46.1, 50f, DateTime(2021, 2, 4, 13, 35, 45, 100))
newLocation(NETWORK_PROVIDER, 45.0, 46.0, 50f, DateTime(2021, 2, 4, 13, 35, 45, 121))
assertEquals(MapPosition(45.0, 46.0), service.currentLocation())
}
@Test
fun returnCachedLocation() = runBlocking {
newLocation(GPS_PROVIDER, 45.1, 46.1, 50f, DateTime(2021, 2, 4, 13, 35, 45, 100))
service.currentLocation()
locationManager.clearLocations()
assertEquals(MapPosition(45.1, 46.1), service.currentLocation())
}
@Test
fun nullWhenNoPosition() = runBlocking {
assertNull(service.currentLocation())
}
private fun newLocation(
provider: String,
latitude: Double,
longitude: Double,
accuracy: Float,
time: DateTime) {
locationManager.addLocations(Location(provider).apply {
this.latitude = latitude
this.longitude = longitude
this.accuracy = accuracy
this.time = time.millis
})
}
}

@ -0,0 +1,26 @@
package org.tasks.location
import android.app.PendingIntent
import android.location.Location
class MockLocationManager : LocationManager {
private val mockLocations = ArrayList<Location>()
fun addLocations(vararg locations: Location) {
mockLocations.addAll(locations)
}
fun clearLocations() = mockLocations.clear()
override val lastKnownLocations: List<Location>
get() = mockLocations
override fun addProximityAlert(
latitude: Double,
longitude: Double,
radius: Float,
intent: PendingIntent
) {}
override fun removeProximityAlert(intent: PendingIntent) {}
}

@ -0,0 +1 @@
../../../../test/java/org/tasks/makers

@ -1,73 +0,0 @@
package org.tasks.notifications
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito
import org.tasks.Freeze
import org.tasks.notifications.Throttle
import org.tasks.time.DateTimeUtils
@RunWith(AndroidJUnit4::class)
class ThrottleTest {
private lateinit var sleeper: Throttle.Sleeper
private lateinit var throttle: Throttle
@Before
fun setUp() {
sleeper = Mockito.mock(Throttle.Sleeper::class.java)
throttle = Throttle(3, sleeper)
}
@After
fun tearDown() {
Mockito.verifyNoMoreInteractions(sleeper)
}
@Test
fun dontThrottle() {
val now = DateTimeUtils.currentTimeMillis()
runAt(now)
runAt(now)
runAt(now)
runAt(now + 1000)
}
@Test
fun throttleForOneMillisecond() {
val now = DateTimeUtils.currentTimeMillis()
runAt(now)
runAt(now)
runAt(now)
runAt(now + 999)
Mockito.verify(sleeper).sleep(1)
}
@Test
fun throttleForOneSecond() {
val now = DateTimeUtils.currentTimeMillis()
runAt(now)
runAt(now)
runAt(now)
runAt(now)
Mockito.verify(sleeper).sleep(1000)
}
@Test
fun throttleMultiple() {
val now = DateTimeUtils.currentTimeMillis()
runAt(now)
runAt(now + 200)
runAt(now + 600)
runAt(now + 700)
Mockito.verify(sleeper).sleep(300)
runAt(now + 750)
Mockito.verify(sleeper).sleep(450)
}
private fun runAt(millis: Long) {
Freeze.freezeAt(millis) { throttle.run {} }
}
}

@ -0,0 +1,237 @@
package org.tasks.opentasks
import com.natpryce.makeiteasy.MakeItEasy.with
import org.tasks.data.entity.Task
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Test
import org.tasks.TestUtilities.withTZ
import org.tasks.makers.CaldavTaskMaker
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime
import java.util.*
@HiltAndroidTest
class OpenTasksDueDateTests : OpenTasksTest() {
@Test
fun readDueDatePositiveOffset() = runBlocking {
val (_, list) = withVtodo(ALL_DAY_DUE)
withTZ(BERLIN) {
synchronizer.sync()
}
val caldavTask = caldavDao.getTaskByRemoteId(list.uuid!!, "3863299529704302692")
val task = taskDao.fetch(caldavTask!!.task)
assertEquals(
DateTime(2021, 2, 1, 12, 0, 0, 0, BERLIN).millis,
task?.dueDate
)
}
@Test
fun writeDueDatePositiveOffset() = withTZ(BERLIN) {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask(
with(TaskMaker.DUE_DATE, DateTime(2021, 2, 1))
))
caldavDao.insert(newCaldavTask(
with(CaldavTaskMaker.CALENDAR, list.uuid),
with(CaldavTaskMaker.REMOTE_ID, "1234"),
with(CaldavTaskMaker.TASK, taskId)
))
synchronizer.sync()
assertEquals(
1612137600000,
openTaskDao.getTask(listId, "1234")?.task?.due?.date?.time
)
}
@Test
fun readDueDateNoOffset() = runBlocking {
val (_, list) = withVtodo(ALL_DAY_DUE)
withTZ(LONDON) {
synchronizer.sync()
}
val caldavTask = caldavDao.getTaskByRemoteId(list.uuid!!, "3863299529704302692")
val task = taskDao.fetch(caldavTask!!.task)
assertEquals(
DateTime(2021, 2, 1, 12, 0, 0, 0, LONDON).millis,
task?.dueDate
)
}
@Test
fun writeDueDateNoOffset() = withTZ(LONDON) {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask(
with(TaskMaker.DUE_DATE, DateTime(2021, 2, 1))
))
caldavDao.insert(newCaldavTask(
with(CaldavTaskMaker.CALENDAR, list.uuid),
with(CaldavTaskMaker.REMOTE_ID, "1234"),
with(CaldavTaskMaker.TASK, taskId)
))
synchronizer.sync()
assertEquals(
1612137600000,
openTaskDao.getTask(listId, "1234")?.task?.due?.date?.time
)
}
@Test
fun readDueDateNegativeOffset() = runBlocking {
val (_, list) = withVtodo(ALL_DAY_DUE)
withTZ(NEW_YORK) {
synchronizer.sync()
}
val caldavTask = caldavDao.getTaskByRemoteId(list.uuid!!, "3863299529704302692")
val task = taskDao.fetch(caldavTask!!.task)
assertEquals(
DateTime(2021, 2, 1, 12, 0, 0, 0, NEW_YORK).millis,
task?.dueDate
)
}
@Test
fun writeDueDateNegativeOffset() = withTZ(NEW_YORK) {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask(
with(TaskMaker.DUE_DATE, DateTime(2021, 2, 1))
))
caldavDao.insert(newCaldavTask(
with(CaldavTaskMaker.CALENDAR, list.uuid),
with(CaldavTaskMaker.REMOTE_ID, "1234"),
with(CaldavTaskMaker.TASK, taskId)
))
synchronizer.sync()
assertEquals(
1612137600000,
openTaskDao.getTask(listId, "1234")?.task?.due?.date?.time
)
}
@Test
fun pushStartTimeBeforeDueTime() = withTZ(CHICAGO) {
val (listId, list) = openTaskDao.insertList()
val task = newTask(
with(TaskMaker.HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME),
with(TaskMaker.DUE_TIME, DateTime(2021, 2, 1, 16, 0))
)
taskDao.createNew(task)
caldavDao.insert(newCaldavTask(
with(CaldavTaskMaker.CALENDAR, list.uuid),
with(CaldavTaskMaker.REMOTE_ID, "1234"),
with(CaldavTaskMaker.TASK, task.id)
))
synchronizer.sync()
assertEquals(
1612216800000,
openTaskDao.getTask(listId, "1234")?.task?.dtStart?.date?.time
)
assertEquals(
1612216801000,
openTaskDao.getTask(listId, "1234")?.task?.due?.date?.time
)
}
@Test
fun startTimeEqualDueTime() = runBlocking {
val (_, list) = withVtodo(START_TIME_DUE_TIME)
withTZ(CHICAGO) {
synchronizer.sync()
}
val caldavTask = caldavDao.getTaskByRemoteId(list.uuid!!, "2009955511573185442")
val task = taskDao.fetch(caldavTask!!.task)!!
assertEquals(DateTime(2021, 2, 4, 8, 0, 1, 0, CHICAGO).millis, task.dueDate)
assertEquals(task.dueDate, task.hideUntil)
}
@Test
fun startTimeEqualDueTimeNoOffset() = runBlocking {
val (_, list) = withVtodo(START_TIME_DUE_TIME_NO_OFFSET)
withTZ(CHICAGO) {
synchronizer.sync()
}
val caldavTask = caldavDao.getTaskByRemoteId(list.uuid!!, "2009955511573185442")
val task = taskDao.fetch(caldavTask!!.task)!!
assertEquals(DateTime(2021, 2, 4, 8, 0, 1, 0, CHICAGO).millis, task.dueDate)
assertEquals(task.dueDate, task.hideUntil)
}
companion object {
private val BERLIN = TimeZone.getTimeZone("Europe/Berlin")
private val LONDON = TimeZone.getTimeZone("Europe/London")
private val NEW_YORK = TimeZone.getTimeZone("America/New_York")
private val CHICAGO = TimeZone.getTimeZone("America/Chicago")
private val ALL_DAY_DUE = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110304//EN
BEGIN:VTODO
DTSTAMP:20210129T155402Z
UID:3863299529704302692
CREATED:20210129T155318Z
LAST-MODIFIED:20210129T155329Z
SUMMARY:Due date
DUE;VALUE=DATE:20210201
END:VTODO
END:VCALENDAR
""".trimIndent()
private val START_TIME_DUE_TIME = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110305//EN
BEGIN:VTODO
DTSTAMP:20210203T164753Z
UID:2009955511573185442
CREATED:20210203T164728Z
LAST-MODIFIED:20210203T164750Z
SUMMARY:Start time
X-APPLE-SORT-ORDER:-5
DUE;TZID=America/Chicago:20210204T080001
DTSTART;TZID=America/Chicago:20210204T080000
END:VTODO
END:VCALENDAR
""".trimIndent()
private val START_TIME_DUE_TIME_NO_OFFSET = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110305//EN
BEGIN:VTODO
DTSTAMP:20210203T164753Z
UID:2009955511573185442
CREATED:20210203T164728Z
LAST-MODIFIED:20210203T164750Z
SUMMARY:Start time
X-APPLE-SORT-ORDER:-5
DUE;TZID=America/Chicago:20210204T080000
DTSTART;TZID=America/Chicago:20210204T080000
END:VTODO
END:VCALENDAR
""".trimIndent()
}
}

@ -0,0 +1,389 @@
package org.tasks.opentasks
import com.natpryce.makeiteasy.MakeItEasy.with
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.SuspendFreeze.Companion.freezeAt
import org.tasks.TestUtilities.withTZ
import org.tasks.caldav.iCalendar.Companion.collapsed
import org.tasks.caldav.iCalendar.Companion.order
import org.tasks.caldav.iCalendar.Companion.parent
import org.tasks.caldav.iCalendar.Companion.snooze
import org.tasks.data.dao.AlarmDao
import org.tasks.data.dao.TagDao
import org.tasks.data.dao.TagDataDao
import org.tasks.data.entity.Alarm
import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE
import org.tasks.data.entity.Tag
import org.tasks.data.entity.TagData
import org.tasks.data.entity.Task
import org.tasks.makers.CaldavTaskMaker
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.REMOTE_ID
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker
import org.tasks.makers.TaskMaker.COLLAPSED
import org.tasks.makers.TaskMaker.ORDER
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime
import java.util.TimeZone
import javax.inject.Inject
@HiltAndroidTest
class OpenTasksPropertiesTests : OpenTasksTest() {
@Inject lateinit var tagDataDao: TagDataDao
@Inject lateinit var tagDao: TagDao
@Inject lateinit var alarmDao: AlarmDao
@Test
fun loadRemoteParentInfo() = runBlocking {
val (_, list) = withVtodo(SUBTASK)
synchronizer.sync()
val task = caldavDao.getTaskByRemoteId(list.uuid!!, "dfede1b0-435b-4bba-9708-2422e781747c")
assertEquals("7daa4a5c-cc76-4ddf-b4f8-b9d3a9cb00e7", task?.remoteParent)
}
@Test
fun pushParentInfo() = runBlocking {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask(with(TaskMaker.PARENT, 594)))
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(CaldavTaskMaker.TASK, taskId),
with(REMOTE_ID, "abcd"),
with(CaldavTaskMaker.REMOTE_PARENT, "1234")
))
synchronizer.sync()
assertEquals("1234", openTaskDao.getTask(listId, "abcd")?.task?.parent)
}
@Test
fun createNewTags() = runBlocking {
val (_, list) = withVtodo(TWO_TAGS)
synchronizer.sync()
assertEquals(
setOf("Tag1", "Tag2"),
caldavDao.getTaskByRemoteId(list.uuid!!, "3076145036806467726")
?.task
?.let { tagDao.getTagsForTask(it) }
?.map { it.name }
?.toSet()
)
}
@Test
fun matchExistingTag() = runBlocking {
val (_, list) = withVtodo(ONE_TAG)
val tag = TagData(name = "Tag1").let { it.copy(id = tagDataDao.insert(it)) }
synchronizer.sync()
assertEquals(
listOf(tag),
caldavDao.getTaskByRemoteId(list.uuid!!, "3076145036806467726")
?.task
?.let { tagDataDao.getTagDataForTask(it)}
)
}
@Test
fun uploadTags() = runBlocking {
val (listId, list) = openTaskDao.insertList()
val task = newTask().apply { taskDao.createNew(this) }
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(REMOTE_ID, "1234"),
with(CaldavTaskMaker.TASK, task.id)
))
insertTag(task, "Tag1")
insertTag(task, "Tag2")
synchronizer.sync()
assertEquals(
setOf("Tag1", "Tag2"),
openTaskDao.getTask(listId, "1234")?.task?.categories?.toSet()
)
}
@Test
fun loadOrder() = runBlocking {
val (_, list) = withVtodo(ONE_TAG)
synchronizer.sync()
val task = caldavDao.getTaskByRemoteId(list.uuid!!, "3076145036806467726")!!.task
assertEquals(633734058L, taskDao.fetch(task)?.order)
}
@Test
fun pushOrder() = runBlocking {
val (listId, list) = openTaskDao.insertList()
val task = newTask(with(ORDER, 5678L))
taskDao.createNew(task)
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(REMOTE_ID, "1234"),
with(CaldavTaskMaker.TASK, task.id)
))
synchronizer.sync()
assertEquals(
5678L,
openTaskDao.getTask(listId, "1234")?.task?.order
)
}
@Test
fun readCollapsedState() = runBlocking {
val (_, list) = withVtodo(HIDE_SUBTASKS)
synchronizer.sync()
val task = caldavDao
.getTaskByRemoteId(list.uuid!!, "2822976a-b71e-4962-92e4-db7297789c20")
?.let { taskDao.fetch(it.task) }
assertTrue(task!!.isCollapsed)
}
@Test
fun pushCollapsedState() = runBlocking {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask(with(COLLAPSED, true)))
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(CaldavTaskMaker.TASK, taskId),
with(REMOTE_ID, "abcd")
))
synchronizer.sync()
assertTrue(openTaskDao.getTask(listId, "abcd")?.task!!.collapsed)
}
@Test
fun removeCollapsedState() = runBlocking {
val (listId, list) = withVtodo(HIDE_SUBTASKS)
synchronizer.sync()
val task = caldavDao.getTaskByRemoteId(list.uuid!!, "2822976a-b71e-4962-92e4-db7297789c20")
taskDao.setCollapsed(task!!.task, false)
synchronizer.sync()
assertFalse(
openTaskDao
.getTask(listId, "2822976a-b71e-4962-92e4-db7297789c20")
?.task
!!.collapsed
)
}
@Test
fun readSnoozeTime() = runBlocking {
val (_, list) = withVtodo(SNOOZED)
withTZ(CHICAGO) {
synchronizer.sync()
}
val task = caldavDao
.getTaskByRemoteId(list.uuid!!, "4CBBC669-70E3-474D-A0A3-0FC42A14A5A5")
?.let { taskDao.fetch(it.task) }
assertEquals(
listOf(
Alarm(
id = 1,
task = task!!.id,
time = 1612972355000,
type = TYPE_SNOOZE
)
),
alarmDao.getAlarms(task.id)
)
}
@Test
fun pushSnoozeTime() = withTZ(CHICAGO) {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask())
alarmDao.insert(
Alarm(
task = taskId,
time = DateTime(2021, 2, 4, 13, 30).millis,
type = TYPE_SNOOZE
)
)
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(CaldavTaskMaker.TASK, taskId),
with(REMOTE_ID, "abcd")
))
freezeAt(DateTime(2021, 2, 4, 12, 30, 45, 125)) {
synchronizer.sync()
}
assertEquals(1612467000000, openTaskDao.getTask(listId, "abcd")?.task!!.snooze)
}
@Test
fun dontPushLapsedSnoozeTime() = withTZ(CHICAGO) {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask())
alarmDao.insert(
Alarm(
task = taskId,
time = DateTime(2021, 2, 4, 13, 30).millis,
type = TYPE_SNOOZE
)
)
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(CaldavTaskMaker.TASK, taskId),
with(REMOTE_ID, "abcd")
))
freezeAt(DateTime(2021, 2, 4, 13, 30, 45, 125)) {
synchronizer.sync()
}
assertNull(openTaskDao.getTask(listId, "abcd")?.task!!.snooze)
}
@Test
fun removeSnoozeTime() = withTZ(CHICAGO) {
val (listId, list) = withVtodo(SNOOZED)
synchronizer.sync()
val task = caldavDao.getTaskByRemoteId(list.uuid!!, "4CBBC669-70E3-474D-A0A3-0FC42A14A5A5")
?: throw IllegalStateException("Missing task")
assertEquals(
listOf(Alarm(1, task.id, DateTime(2021, 2, 10, 9, 52, 35).millis, TYPE_SNOOZE)),
alarmDao.getAlarms(1)
)
alarmDao.deleteSnoozed(listOf(1))
taskDao.touch(task.task)
synchronizer.sync()
assertNull(
openTaskDao
.getTask(listId, "4CBBC669-70E3-474D-A0A3-0FC42A14A5A5")
?.task
!!.snooze
)
}
private suspend fun insertTag(task: Task, name: String) =
TagData(name = name)
.apply { tagDataDao.insert(this) }
.let { tagDao.insert(Tag(task = task.id, taskUid = task.uuid, tagUid = it.remoteId)) }
companion object {
private val CHICAGO = TimeZone.getTimeZone("America/Chicago")
private val SUBTASK = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Nextcloud Tasks v0.13.6
BEGIN:VTODO
UID:dfede1b0-435b-4bba-9708-2422e781747c
CREATED:20210128T150333
LAST-MODIFIED:20210128T150338
DTSTAMP:20210128T150338
SUMMARY:Child
RELATED-TO:7daa4a5c-cc76-4ddf-b4f8-b9d3a9cb00e7
END:VTODO
END:VCALENDAR
""".trimIndent()
private val ONE_TAG = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110304//EN
BEGIN:VTODO
DTSTAMP:20210201T204211Z
UID:3076145036806467726
CREATED:20210201T204143Z
LAST-MODIFIED:20210201T204209Z
SUMMARY:Tags
CATEGORIES:Tag1
X-APPLE-SORT-ORDER:633734058
END:VTODO
END:VCALENDAR
""".trimIndent()
private val TWO_TAGS = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:+//IDN tasks.org//android-110304//EN
BEGIN:VTODO
DTSTAMP:20210201T204211Z
UID:3076145036806467726
CREATED:20210201T204143Z
LAST-MODIFIED:20210201T204209Z
SUMMARY:Tags
CATEGORIES:Tag1,Tag2
X-APPLE-SORT-ORDER:633734058
END:VTODO
END:VCALENDAR
""".trimIndent()
private val HIDE_SUBTASKS = """
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Nextcloud Tasks v0.13.6
BEGIN:VTODO
UID:2822976a-b71e-4962-92e4-db7297789c20
CREATED:20210209T104536
LAST-MODIFIED:20210209T104548
DTSTAMP:20210209T104548
SUMMARY:Parent
X-OC-HIDESUBTASKS:1
END:VTODO
END:VCALENDAR
""".trimIndent()
private val SNOOZED = """
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTODO
CREATED:20210210T151826Z
LAST-MODIFIED:20210210T152235Z
DTSTAMP:20210210T152235Z
UID:4CBBC669-70E3-474D-A0A3-0FC42A14A5A5
SUMMARY:Test snooze
STATUS:NEEDS-ACTION
X-MOZ-LASTACK:20210210T152235Z
DTSTART;TZID=America/Chicago:20210210T091900
DUE;TZID=America/Chicago:20210210T091900
X-MOZ-SNOOZE-TIME:20210210T155235Z
X-MOZ-GENERATION:1
END:VTODO
END:VCALENDAR
""".trimIndent()
}
}

@ -0,0 +1,109 @@
package org.tasks.opentasks
import com.natpryce.makeiteasy.MakeItEasy.with
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_OPENTASKS
import org.tasks.data.entity.CaldavCalendar
import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.REMOTE_ID
import org.tasks.makers.CaldavTaskMaker.TASK
import org.tasks.makers.CaldavTaskMaker.newCaldavTask
import org.tasks.makers.TaskMaker.RECUR
import org.tasks.makers.TaskMaker.newTask
@HiltAndroidTest
class OpenTasksSynchronizerTest : OpenTasksTest() {
@Test
fun createNewAccounts() = runBlocking {
openTaskDao.insertList()
synchronizer.sync()
val accounts = caldavDao.getAccounts()
assertEquals(1, accounts.size)
with(accounts[0]) {
assertEquals("bitfire.at.davdroid:test_account", uuid)
assertEquals("test_account", name)
assertEquals(TYPE_OPENTASKS, accountType)
}
}
@Test
fun deleteRemovedAccounts() = runBlocking {
caldavDao.insert(
CaldavAccount(
uuid = "bitfire.at.davdroid:test_account",
accountType = TYPE_OPENTASKS,
)
)
synchronizer.sync()
assertTrue(caldavDao.getAccounts().isEmpty())
}
@Test
fun createNewLists() = runBlocking {
openTaskDao.insertList()
synchronizer.sync()
val lists = caldavDao.getCalendarsByAccount("bitfire.at.davdroid:test_account")
assertEquals(1, lists.size)
with(lists[0]) {
assertEquals(name, "default_list")
}
}
@Test
fun removeMissingLists() = runBlocking {
val (_, list) = openTaskDao.insertList(url = "url1")
caldavDao.insert(
CaldavCalendar(
account = list.account,
url = "url2",
)
)
synchronizer.sync()
assertEquals(listOf(list), caldavDao.getCalendars())
}
@Test
fun simplePushNewTask() = runBlocking {
val (listId, list) = openTaskDao.insertList()
val taskId = taskDao.createNew(newTask())
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(REMOTE_ID, "1234"),
with(TASK, taskId)
))
synchronizer.sync()
assertNotNull(openTaskDao.getTask(listId.toLong(), "1234"))
}
@Test
fun sanitizeRecurrenceRule() = runBlocking {
val (_, list) = openTaskDao.insertList()
val taskId = taskDao.insert(newTask(with(RECUR, "RRULE:FREQ=WEEKLY;COUNT=-1")))
caldavDao.insert(newCaldavTask(
with(CALENDAR, list.uuid),
with(TASK, taskId)
))
synchronizer.sync()
val task = openTaskDao.getTasks().first()
assertEquals("FREQ=WEEKLY", task.rRule?.value)
}
}

@ -0,0 +1,34 @@
package org.tasks.opentasks
import com.todoroo.astrid.dao.TaskDao
import org.junit.Before
import org.tasks.R
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.dao.CaldavDao
import org.tasks.injection.InjectingTestCase
import org.tasks.preferences.Preferences
import javax.inject.Inject
abstract class OpenTasksTest : InjectingTestCase() {
@Inject lateinit var openTaskDao: TestOpenTaskDao
@Inject lateinit var preferences: Preferences
@Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var synchronizer: OpenTasksSynchronizer
@Inject lateinit var taskDao: TaskDao
@Before
override fun setUp() {
super.setUp()
openTaskDao.reset()
preferences.setBoolean(R.string.p_debug_pro, true)
}
protected suspend fun withVtodo(vtodo: String): Pair<Long, CaldavCalendar> =
openTaskDao
.insertList()
.let { (listId, list) ->
openTaskDao.insertTask(listId, vtodo)
Pair(listId, list)
}
}

@ -0,0 +1,98 @@
package org.tasks.opentasks
import android.content.ContentProviderResult
import android.content.Context
import at.bitfire.ical4android.BatchOperation
import at.bitfire.ical4android.Task
import dagger.hilt.android.qualifiers.ApplicationContext
import org.dmfs.tasks.contract.TaskContract
import org.dmfs.tasks.contract.TaskContract.TaskListColumns.ACCESS_LEVEL_OWNER
import org.tasks.caldav.iCalendar
import org.tasks.data.MyAndroidTask
import org.tasks.data.OpenTaskDao
import org.tasks.data.UUIDHelper
import org.tasks.data.dao.CaldavDao
import org.tasks.data.entity.CaldavCalendar
import javax.inject.Inject
class TestOpenTaskDao @Inject constructor(
@ApplicationContext context: Context,
private val caldavDao: CaldavDao
) : OpenTaskDao(context, caldavDao) {
suspend fun insertList(
name: String = DEFAULT_LIST,
type: String = DEFAULT_TYPE,
account: String = DEFAULT_ACCOUNT,
url: String = UUIDHelper.newUUID(),
accessLevel: Int = ACCESS_LEVEL_OWNER,
): Pair<Long, CaldavCalendar> {
val uri = taskLists.buildUpon()
.appendQueryParameter(TaskContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(TaskContract.TaskLists.ACCOUNT_NAME, account)
.appendQueryParameter(TaskContract.TaskLists.ACCOUNT_TYPE, type)
.build()
val result = applyOperation(
BatchOperation.CpoBuilder.newInsert(uri)
.withValue(TaskContract.CommonSyncColumns._SYNC_ID, url)
.withValue(TaskContract.TaskListColumns.LIST_NAME, name)
.withValue(TaskContract.TaskLists.SYNC_ENABLED, "1")
.withValue(TaskContract.TaskLists.ACCESS_LEVEL, accessLevel)
)
val calendar = CaldavCalendar(
uuid = UUIDHelper.newUUID(),
name = name,
account = "$type:$account",
url = url,
)
caldavDao.insert(calendar)
return Pair(result.uri!!.lastPathSegment!!.toLong(), calendar)
}
fun insertTask(listId: Long, vtodo: String) {
val ops = ArrayList<BatchOperation.CpoBuilder>()
val task = MyAndroidTask(iCalendar.fromVtodo(vtodo)!!)
ops.add(task.toBuilder(tasks).withValue(TaskContract.TaskColumns.LIST_ID, listId))
task.enqueueProperties(properties, ops, 0)
applyOperation(*ops.toTypedArray())
}
fun getTasks(): List<Task> {
val result = ArrayList<Task>()
cr.query(
tasks.buildUpon().appendQueryParameter(TaskContract.LOAD_PROPERTIES, "1").build(),
null,
null,
null,
null)?.use {
while (it.moveToNext()) {
MyAndroidTask(it).task?.let { task -> result.add(task) }
}
}
return result
}
fun reset(
type: String = DEFAULT_TYPE,
account: String = DEFAULT_ACCOUNT
) {
cr.delete(
taskLists.buildUpon()
.appendQueryParameter(TaskContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(TaskContract.TaskLists.ACCOUNT_NAME, account)
.appendQueryParameter(TaskContract.TaskLists.ACCOUNT_TYPE, type)
.build(),
null,
null
)
cr.delete(tasks, null, null)
}
private fun applyOperation(vararg builders: BatchOperation.CpoBuilder): ContentProviderResult =
cr.applyBatch(authority, ArrayList(builders.asList().map { it.build() }))[0]
companion object {
const val DEFAULT_ACCOUNT = "test_account"
const val DEFAULT_TYPE = ACCOUNT_TYPE_DAVX5
const val DEFAULT_LIST = "default_list"
}
}

@ -1,14 +1,12 @@
package org.tasks.preferences
import android.content.Context
import org.tasks.injection.ForApplication
import dagger.hilt.android.qualifiers.ApplicationContext
class PermissivePermissionChecker(@ForApplication context: Context) : PermissionChecker(context) {
class PermissivePermissionChecker(@ApplicationContext context: Context) : PermissionChecker(context) {
override fun canAccessCalendars() = true
override fun canAccessAccounts() = true
override fun canAccessForegroundLocation() = true
override fun canAccessLocation() = true
override fun canAccessMic() = true
override fun canAccessBackgroundLocation() = true
}

@ -3,6 +3,9 @@ package org.tasks.preferences
import android.annotation.SuppressLint
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.tasks.data.entity.Task.Companion.NOTIFY_AFTER_DEADLINE
import org.tasks.data.entity.Task.Companion.NOTIFY_AT_DEADLINE
import org.tasks.data.entity.Task.Companion.NOTIFY_AT_START
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
@ -116,6 +119,16 @@ class PreferenceTests {
assertEquals(dueDate, preferences.adjustForQuietHours(dueDate))
}
@Test
fun testDefaultReminders() {
assertEquals(0, defaultReminders())
assertEquals(2, defaultReminders(NOTIFY_AT_DEADLINE))
assertEquals(4, defaultReminders(NOTIFY_AFTER_DEADLINE))
assertEquals(6, defaultReminders(NOTIFY_AT_DEADLINE, NOTIFY_AFTER_DEADLINE))
assertEquals(32, defaultReminders(NOTIFY_AT_START))
assertEquals(38, defaultReminders(NOTIFY_AT_START, NOTIFY_AT_DEADLINE, NOTIFY_AFTER_DEADLINE))
}
private fun setQuietHoursStart(hour: Int) {
preferences.setInt(R.string.p_rmd_quietStart, hour * MILLIS_PER_HOUR)
}
@ -124,6 +137,14 @@ class PreferenceTests {
preferences.setInt(R.string.p_rmd_quietEnd, hour * MILLIS_PER_HOUR)
}
private fun defaultReminders(vararg values: Int): Int {
preferences.setStringSet(
R.string.p_default_reminders_key,
values.map { it.toString() }.toSet()
)
return preferences.defaultReminders
}
companion object {
@SuppressLint("NewApi")
private val MILLIS_PER_HOUR = TimeUnit.HOURS.toMillis(1).toInt()

@ -1,16 +1,27 @@
package org.tasks.repeats
import androidx.test.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.RRule
import dagger.hilt.android.testing.HiltAndroidTest
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.locale.Locale
import org.tasks.Freeze
import org.tasks.TestUtilities.withTZ
import org.tasks.analytics.Firebase
import org.tasks.injection.InjectingTestCase
import org.tasks.time.DateTime
import java.text.ParseException
import java.util.Locale
import java.util.TimeZone
import javax.inject.Inject
@HiltAndroidTest
class RepeatRuleToStringTest : InjectingTestCase() {
@Inject lateinit var firebase: Firebase
@Test
fun daily() {
assertEquals("Repeats daily", toString("RRULE:FREQ=DAILY"))
}
@RunWith(AndroidJUnit4::class)
class RepeatRuleToStringTest {
@Test
fun weekly() {
assertEquals("Repeats weekly", toString("RRULE:FREQ=WEEKLY;INTERVAL=1"))
@ -38,21 +49,90 @@ class RepeatRuleToStringTest {
@Test
fun useLocaleForDays() {
assertEquals(
"Wiederholt sich wöchentlich am Sa., So.",
"Wiederholt sich wöchentlich Sa., So.",
toString("de", "RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=SA,SU"))
}
private fun toString(rrule: String): String {
@Test
fun everyFifthTuesday() {
assertEquals(
"Repeats monthly on every fifth Tuesday",
toString("RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=5TU")
)
}
@Test
fun everyLastWednesday() {
assertEquals(
"Repeats monthly on every last Wednesday",
toString("RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=-1WE")
)
}
@Test
fun everyFirstThursday() {
assertEquals(
"Repeats every 2 months on every first Thursday",
toString("RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=1TH")
)
}
@Test
fun repeatUntilPositiveOffset() {
Freeze.freezeAt(DateTime(2021, 1, 4)) {
withTZ(BERLIN) {
assertEquals(
"Repeats daily, ends on February 23",
toString("RRULE:FREQ=DAILY;UNTIL=20210223;INTERVAL=1")
)
}
}
}
@Test
fun repeatUntilNoOffset() {
Freeze.freezeAt(DateTime(2021, 1, 4)) {
withTZ(LONDON) {
assertEquals(
"Repeats daily, ends on February 23",
toString("RRULE:FREQ=DAILY;UNTIL=20210223;INTERVAL=1")
)
}
}
}
@Test
fun repeatUntilNegativeOffset() {
Freeze.freezeAt(DateTime(2021, 1, 4)) {
withTZ(NEW_YORK) {
assertEquals(
"Repeats daily, ends on February 23",
toString("RRULE:FREQ=DAILY;UNTIL=20210223;INTERVAL=1")
)
}
}
}
private fun toString(rrule: String): String? {
return toString(null, rrule)
}
private fun toString(language: String?, rrule: String): String {
private fun toString(language: String?, rrule: String): String? {
return try {
val locale = Locale(java.util.Locale.getDefault(), language)
RepeatRuleToString(locale.createConfigurationContext(InstrumentationRegistry.getTargetContext()), locale)
.toString(RRule(rrule))
val locale = language?.let { Locale.forLanguageTag(it) } ?: Locale.getDefault()
val configuration = context.resources.configuration.apply {
setLocale(locale)
}
RepeatRuleToString(context.createConfigurationContext(configuration), locale, firebase)
.toString(rrule)
} catch (e: ParseException) {
throw RuntimeException(e)
}
}
companion object {
private val BERLIN = TimeZone.getTimeZone("Europe/Berlin")
private val LONDON = TimeZone.getTimeZone("Europe/London")
private val NEW_YORK = TimeZone.getTimeZone("America/New_York")
}
}

@ -1,30 +0,0 @@
package org.tasks.ui
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class DescriptionControlSetTest {
@Test
fun replaceCRLF() {
assertEquals("aaa\nbbb", DescriptionControlSet.stripCarriageReturns("aaa\r\nbbb"))
}
@Test
fun replaceCR() {
assertEquals("aaa\nbbb", DescriptionControlSet.stripCarriageReturns("aaa\rbbb"))
}
@Test
fun dontReplaceLF() {
assertEquals("aaa\nbbb", DescriptionControlSet.stripCarriageReturns("aaa\nbbb"))
}
@Test
fun checkIfNull() {
assertNull(DescriptionControlSet.stripCarriageReturns(null))
}
}

@ -0,0 +1,95 @@
package org.tasks.ui.editviewmodel
import androidx.lifecycle.SavedStateHandle
import com.todoroo.astrid.activity.TaskEditFragment
import com.todoroo.astrid.alarms.AlarmService
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.gcal.GCalHelper
import com.todoroo.astrid.service.TaskCompleter
import com.todoroo.astrid.service.TaskDeleter
import com.todoroo.astrid.service.TaskMover
import com.todoroo.astrid.timers.TimerPlugin
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.runBlocking
import org.junit.Before
import org.tasks.calendars.CalendarEventProvider
import org.tasks.data.dao.AlarmDao
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.LocationDao
import org.tasks.data.dao.TagDataDao
import org.tasks.data.dao.UserActivityDao
import org.tasks.data.db.Database
import org.tasks.data.entity.Task
import org.tasks.data.newLocalAccount
import org.tasks.injection.InjectingTestCase
import org.tasks.location.GeofenceApi
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.PermissivePermissionChecker
import org.tasks.preferences.Preferences
import org.tasks.ui.TaskEditViewModel
import javax.inject.Inject
open class BaseTaskEditViewModelTest : InjectingTestCase() {
@Inject lateinit var db: Database
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var taskDeleter: TaskDeleter
@Inject lateinit var timerPlugin: TimerPlugin
@Inject lateinit var calendarEventProvider: CalendarEventProvider
@Inject lateinit var gCalHelper: GCalHelper
@Inject lateinit var taskMover: TaskMover
@Inject lateinit var geofenceApi: GeofenceApi
@Inject lateinit var preferences: Preferences
@Inject lateinit var taskCompleter: TaskCompleter
@Inject lateinit var alarmService: AlarmService
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var locationDao: LocationDao
@Inject lateinit var tagDataDao: TagDataDao
@Inject lateinit var alarmDao: AlarmDao
@Inject lateinit var userActivityDao: UserActivityDao
@Inject lateinit var caldavDao: CaldavDao
protected lateinit var viewModel: TaskEditViewModel
@Before
override fun setUp() {
runBlocking {
super.setUp()
caldavDao.newLocalAccount()
}
}
protected fun setup(task: Task) = runBlocking {
viewModel = TaskEditViewModel(
context,
SavedStateHandle().apply {
set(TaskEditFragment.EXTRA_TASK, task)
},
taskDao,
taskDeleter,
timerPlugin,
PermissivePermissionChecker(context),
calendarEventProvider,
gCalHelper,
taskMover,
db.locationDao(),
geofenceApi,
db.tagDao(),
db.tagDataDao(),
preferences,
db.googleTaskDao(),
db.caldavDao(),
taskCompleter,
alarmService,
MutableSharedFlow(),
userActivityDao = userActivityDao,
taskAttachmentDao = db.taskAttachmentDao(),
alarmDao = db.alarmDao(),
defaultFilterProvider = defaultFilterProvider,
)
}
protected fun save(): Boolean = runBlocking(Dispatchers.Main) {
viewModel.save()
}
}

@ -0,0 +1,41 @@
package org.tasks.ui.editviewmodel
import com.natpryce.makeiteasy.MakeItEasy
import dagger.hilt.android.testing.HiltAndroidTest
import org.junit.Assert
import org.junit.Test
import org.tasks.data.entity.Task
import org.tasks.makers.TaskMaker
@HiltAndroidTest
class PriorityTests : BaseTaskEditViewModelTest() {
@Test
fun changePriorityCausesChange() {
setup(TaskMaker.newTask(MakeItEasy.with(TaskMaker.PRIORITY, Task.Priority.HIGH)))
viewModel.setPriority(Task.Priority.MEDIUM)
Assert.assertTrue(viewModel.hasChanges())
}
@Test
fun applyPriorityChange() {
val task = TaskMaker.newTask(MakeItEasy.with(TaskMaker.PRIORITY, Task.Priority.HIGH))
setup(task)
viewModel.setPriority(Task.Priority.MEDIUM)
save()
Assert.assertEquals(Task.Priority.MEDIUM, task.priority)
}
@Test
fun noChangeWhenRevertingPriority() {
setup(TaskMaker.newTask(MakeItEasy.with(TaskMaker.PRIORITY, Task.Priority.HIGH)))
viewModel.setPriority(Task.Priority.MEDIUM)
viewModel.setPriority(Task.Priority.HIGH)
Assert.assertFalse(viewModel.hasChanges())
}
}

@ -0,0 +1,192 @@
package org.tasks.ui.editviewmodel
import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.service.TaskCreator.Companion.setDefaultReminders
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.collections.immutable.persistentSetOf
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.R
import org.tasks.data.createDueDate
import org.tasks.data.entity.Alarm
import org.tasks.data.entity.Alarm.Companion.whenDue
import org.tasks.data.entity.Alarm.Companion.whenOverdue
import org.tasks.data.entity.Alarm.Companion.whenStarted
import org.tasks.data.entity.Task
import org.tasks.makers.TaskMaker.DUE_TIME
import org.tasks.makers.TaskMaker.START_DATE
import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils2.currentTimeMillis
@HiltAndroidTest
class ReminderTests : BaseTaskEditViewModelTest() {
@Test
fun whenStartReminder() = runBlocking {
preferences.setStringSet(
R.string.p_default_reminders_key,
hashSetOf(Task.NOTIFY_AT_START.toString())
)
val task = newTask(with(START_DATE, DateTime()))
task.setDefaultReminders(preferences)
setup(task)
assertEquals(
persistentSetOf(Alarm(type = Alarm.TYPE_REL_START)),
viewModel.viewState.value.alarms
)
}
@Test
fun whenDueReminder() = runBlocking {
preferences.setStringSet(
R.string.p_default_reminders_key,
hashSetOf(Task.NOTIFY_AT_DEADLINE.toString())
)
val task = newTask(with(DUE_TIME, DateTime()))
task.setDefaultReminders(preferences)
setup(task)
assertEquals(
persistentSetOf(Alarm(type = Alarm.TYPE_REL_END)),
viewModel.viewState.value.alarms
)
}
@Test
fun whenOverDueReminder() = runBlocking {
preferences.setStringSet(
R.string.p_default_reminders_key,
hashSetOf(Task.NOTIFY_AFTER_DEADLINE.toString())
)
val task = newTask(with(DUE_TIME, DateTime()))
task.setDefaultReminders(preferences)
setup(task)
assertEquals(
persistentSetOf(whenOverdue(0)),
viewModel.viewState.value.alarms
)
}
@Test
fun ringFiveTimes() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringFiveTimes = true
save()
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeFive)
}
@Test
fun ringNonstop() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringNonstop = true
save()
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
}
@Test
fun ringFiveTimesCantRingNonstop() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringNonstop = true
viewModel.ringFiveTimes = true
save()
assertFalse(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeFive)
}
@Test
fun ringNonStopCantRingFiveTimes() = runBlocking {
val task = newTask()
setup(task)
viewModel.ringFiveTimes = true
viewModel.ringNonstop = true
save()
assertFalse(taskDao.fetch(task.id)!!.isNotifyModeFive)
assertTrue(taskDao.fetch(task.id)!!.isNotifyModeNonstop)
}
@Test
fun noDefaultRemindersWithNoDates() = runBlocking {
val task = newTask()
task.setDefaultReminders(preferences)
setup(task)
save()
assertTrue(alarmDao.getAlarms(task.id).isEmpty())
}
@Test
fun addDefaultRemindersWhenAddingDueDate() = runBlocking {
preferences.setStringSet(
R.string.p_default_reminders_key,
hashSetOf(
Task.NOTIFY_AT_DEADLINE.toString(),
Task.NOTIFY_AFTER_DEADLINE.toString(),
)
)
val task = newTask()
setup(task)
viewModel.setDueDate(
createDueDate(
Task.URGENCY_SPECIFIC_DAY_TIME,
currentTimeMillis()
)
)
save()
assertEquals(
listOf(whenDue(1).copy(id = 1), whenOverdue(1).copy(id = 2)),
alarmDao.getAlarms(task.id)
)
}
@Test
fun addDefaultRemindersWhenAddingStartDate() = runBlocking {
preferences.setStringSet(
R.string.p_default_reminders_key,
hashSetOf(Task.NOTIFY_AT_START.toString())
)
val task = newTask()
setup(task)
viewModel.setStartDate(
createDueDate(
Task.URGENCY_SPECIFIC_DAY_TIME,
currentTimeMillis()
)
)
save()
assertEquals(
listOf(whenStarted(1).copy(id = 1)),
alarmDao.getAlarms(task.id)
)
}
}

@ -0,0 +1,39 @@
package org.tasks.ui.editviewmodel
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.runBlocking
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.tasks.data.entity.Task
import org.tasks.makers.TaskMaker.newTask
@HiltAndroidTest
class TaskEditViewModelTest : BaseTaskEditViewModelTest() {
@Test
fun noChangesForNewTask() {
setup(newTask())
assertFalse(viewModel.hasChanges())
}
@Test
fun dontSaveTaskWithoutChanges() = runBlocking {
setup(newTask())
assertFalse(save())
assertTrue(taskDao.getAll().isEmpty())
}
@Test
fun dontSaveTaskTwice() = runBlocking {
setup(newTask())
viewModel.setPriority(Task.Priority.HIGH)
assertTrue(save())
assertFalse(viewModel.save())
}
}

@ -0,0 +1,163 @@
package org.tasks.ui.editviewmodel
import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.testing.HiltAndroidTest
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.CaldavDao
import org.tasks.data.dao.DeletionDao
import org.tasks.data.dao.TaskDao
import org.tasks.data.entity.Task
import org.tasks.filters.MyTasksFilter
import org.tasks.injection.InjectingTestCase
import org.tasks.preferences.PermissivePermissionChecker
import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.TaskListViewModel
import javax.inject.Inject
@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
@Inject lateinit var caldavDao: CaldavDao
@Before
override fun setUp() {
super.setUp()
viewModel = TaskListViewModel(
applicationContext = context,
preferences = preferences,
taskDao = taskDao,
deletionDao = deletionDao,
taskDeleter = taskDeleter,
localBroadcastManager = localBroadcastManager,
inventory = inventory,
firebase = firebase,
permissionChecker = PermissivePermissionChecker(context),
caldavDao = caldavDao,
)
viewModel.setFilter(runBlocking { MyTasksFilter.create() })
}
@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())
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save