## 1. Project Overview & Quickstart (tasks/workflows.py)

# workflows.py

Open-source repository tasks/workflows.py

### Repository Details
- **Repository:** [tasks/workflows.py](https://github.com/tasks/workflows.py)
- **Primary Language:** Code

*Note: High-volume repository documentation is actively indexed and synchronized by YakaAI.*

## 2. Official Technical Reference & Guides (tasks/docs)

## File: docs/about.md

---
id: about
title: Welcome
slug: /
---

Tasks.org is a free and open-source task management app for Android. It supports CalDAV synchronization, recurring tasks, notifications, location-based reminders, custom filters, and much more.

## Getting started

- [Subscription information](subscribe)
- [Tasks.org Cloud](sync_tasks_org)
- [Self-hosted and third-party sync](sync)
- [Notifications](notifications)
- [Backups](backups)

## History

[Astrid Tasks](https://en.wikipedia.org/wiki/Astrid_(application)) was a popular cross-platform productivity service. In 2013 Yahoo purchased Astrid, later announcing that the service would be discontinued. The source code from Astrid's open-source Android app serves as the basis for Tasks.org.

Tasks.org is not affiliated with Astrid or Yahoo.

---

## File: docs/app_passwords.md

---
id: app_passwords
title: App Passwords
---

The Tasks.org Cloud synchronization service is powered by the open CalDAV protocol,
which means it is compatible with third-party task and calendar apps! You must
generate a username and password to sign in to Tasks.org with apps like
Outlook, Thunderbird, or Apple Reminders.

These credentials grant complete access to the tasks and calendars in your
Tasks.org account. Generate as many passwords as you need, but do not write
them down or share them with anyone!

#### To generate an app password:

App passwords can be generated from the Tasks.org app or by visiting [tasks.org/account](https://tasks.org/account) in a web browser.

**From the app:**

1. Open your account settings by tapping on `⚙ > App settings > Tasks.org`
2. Tap on `Generate new password`
3. (Optional) Enter a description for this password, like 'Outlook on my
   laptop'
4. Tap `OK`
5. Enter the URL, username, and password into your third-party app before
   dismissing the dialog. _These credentials cannot be displayed after
   dismissing the dialog!_

**From a web browser:**

1. Visit [tasks.org/account](https://tasks.org/account) and sign in
2. Generate a new app password
3. Enter the URL, username, and password into your third-party app before
   closing the page. _These credentials cannot be displayed again!_

#### To delete an app password:

1. Open your account settings by tapping on `⚙ > App settings > Tasks.org`
2. Tap the trashcan icon next to the password you would like to delete
3. Tap 'OK' to confirm. Any apps that were configured with this password will
   no longer have access to Tasks.org

---

## File: docs/backups.md

---
id: backups
title: Backups
---

## Automatic backups

Tasks.org creates daily backup files at midnight. Tasks.org will prune automatic backup
files, keeping only the latest seven files

## Manual backups

Select `Export tasks` to create a manual backup file. Manual backup files will
not be pruned

## Copy to Google Drive

Tasks.org can upload your backup files to Google Drive. Tasks.org will only upload
files created after this option is enabled, it will not upload files created
prior to enabling this option

This feature requires you to grant the OAuth 2.0 scope
[`drive.files`](https://developers.google.com/drive/api/v2/about-auth). This
permission grants Tasks.org access to files that are created or opened by the app.
Tasks.org will not have access to any other files on your Google Drive. You may
revoke this permission by visiting your Google [security
settings](https://myaccount.google.com/permissions)

## Android Backup Service

If your device is opted in to the Android Backup Service then Tasks.org will
automatically upload your latest backup file when Android runs the backup
service. When you re-install Tasks.org this backup file will be imported
automatically

## Backup location

Backup files are stored in Tasks.org's [private
directory](https://developer.android.com/training/data-storage/files.html#PrivateFiles).
**Android will delete this directory if Tasks.org is uninstalled!** Choose a
`Backup location` outside of Tasks.org's private directory to prevent Android from
deleting your backup files

## Attachments

File attachments are not backed up, however this functionality is planned for a
future release

---

## File: docs/beta.md

---
id: beta
title: Early access
sidebar_label: Beta testing
---

New releases for Tasks.org are available to beta testers before they are released publicly

* After registering to become a pre-release tester it can take several hours to begin receiving pre-release versions from the Google Play Store
* If you have multiple Google accounts make sure you opt-in with the same Google account that you used to download Tasks.org

### To join the beta test channel

Visit [here](https://play.google.com/apps/testing/org.tasks) and click 'Become a tester'

### To leave the beta test channel

Visit [here](https://play.google.com/apps/testing/org.tasks) and click 'Leave the program'

---

## File: docs/client_apple_reminders.md

---
id: client_apple_reminders
title: Apple Reminders
---

You can synchronize Tasks.org with Apple Reminders using Tasks.org Cloud, DAVx5, or CalDAV.

Tasks.org Cloud users will need to [generate an app password](app_passwords) before getting started.

## macOS

1. Open **System Settings** and navigate to **Internet Accounts**
2. Click **Add Account** and click **choose from a list**
3. Click **Add Other Account** and select **CalDAV Account**
4. Change **Account Type** to **Manual**
5. Enter your server, username, and password
6. Click **Sign In**
7. Make sure **Reminders** are toggled on
    * Tasks.org Cloud Subscribers: Toggle on **Calendars** if you would like to store them in Tasks.org Cloud
    * Tasks.org Cloud Guests: Toggle off **Calendars**

Your Tasks.org lists will appear in Reminders.

## iOS

1. Open **Settings** and navigate to **Apps**
2. Tap on **Reminders**, then tap **Reminder Accounts**
3. Tap **Add Account** and select **Add Other Account...**
4. Tap **Add CalDAV Account**
5. Enter your server, username, and password
6. Tap **Next**
7. Make sure **Reminders** are toggled on and tap **Save**
    * Tasks.org Cloud Subscribers: Toggle on **Calendars** if you would like to store them in Tasks.org Cloud
    * Tasks.org Cloud Guests: Toggle off **Calendars**

Your Tasks.org lists will appear in Reminders.

---

## File: docs/cloud_email.md

---
id: cloud_email
title: Email-to-task
---

Tasks.org Cloud subscribers can create tasks by sending an email. Forward emails to your Tasks.org address and they will automatically appear as new tasks.

## Your email address

Open `⚙ > App settings > Tasks.org` to find your private email address under the email-to-task section. Emails sent to this address will automatically be created as tasks.

## Usage

- The **subject line** becomes the task title
- The **email body** becomes the task description
- Forward emails from your inbox to quickly capture action items

## Options

- **Regenerate address** - Generate a new email address if you need to change it
- **Destination list** - Choose which list new tasks are created in (available after receiving your first email)

---

## File: docs/cloud_family.md

---
id: cloud_family
title: Family & Friends
---

Tasks.org Cloud subscribers can invite up to five guests who can access shared lists for free. This makes it easy to collaborate on grocery lists, household chores, trip planning, and more.

## What guests get

- Access to lists shared by the subscriber
- All [name-your-price](subscribe) features unlocked for free

## Guest limitations

- Guests cannot create their own Tasks.org Cloud lists
- Guests do not get an [email-to-task](cloud_email) address

## Sharing a list

1. Create a new list in your Tasks.org account
2. Give the list a title
3. Tap the share button and enter the guest's email address

If the guest is a new user they will receive an invitation email. Existing users will gain access to the shared list immediately.

## Removing a guest from a list

1. Tap on `☰` and select the shared list from your Tasks.org account
2. Tap on `⚙ > List settings`
3. Tap the `X` next to the guest you would like to remove

If a guest no longer has access to any of your shared lists they will lose guest access and no longer count against your five guest limit.

---

## File: docs/donate.md

---
id: donate
title: Donate
---

If you would like to provide a financial contribution to Tasks.org please consider a
[Google Play subscription](subscribe.md) or [GitHub sponsorship](https://github.com/sponsors/abaker). If you have already subscribed, or would rather
not subscribe, there are a few alternative methods of providing financial
support:

* [Liberapay](https://liberapay.com/tasks)
* [Patreon](https://www.patreon.com/tasks)
* [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=alex@tasks.org)
* Send bitcoin to [136mW34jW3cmZKhxuTDn3tHXMRwbbaRU8s](bitcoin:136mW34jW3cmZKhxuTDn3tHXMRwbbaRU8s)
* Send monero to [83oTCAmWtvmTLtjrYLSK117FymxavyHkM5qWgYrFM2HRh6ZixN48UgpfWPAkRUNSp1XVvywFiGinzDNZQw5vXv4ETMV3Kqg](monero:83oTCAmWtvmTLtjrYLSK117FymxavyHkM5qWgYrFM2HRh6ZixN48UgpfWPAkRUNSp1XVvywFiGinzDNZQw5vXv4ETMV3Kqg)

| Bitcoin |
|:-------:|
| [](bitcoin:136mW34jW3cmZKhxuTDn3tHXMRwbbaRU8s) |

| Monero |
|:------:|
| [](monero:83oTCAmWtvmTLtjrYLSK117FymxavyHkM5qWgYrFM2HRh6ZixN48UgpfWPAkRUNSp1XVvywFiGinzDNZQw5vXv4ETMV3Kqg) |

---

## File: docs/filters.md

---
id: filters
title: Custom filters
sidebar_label: Filters
---

Tasks.org offers the ability to create custom filters based on due dates,
priorities, titles, tags, and lists

### Adding a filter

Click on 'Add filter' to create a new custom filter, or select from the list of
pre-defined filters

### Editing filters

Click on 'Add criteria' to create additional custom filter criteria

* To rearrange: long press on the criteria, drag it to the desired location,
and drop it
* To remove: swipe criteria to the left or right

### AND, NOT, and OR

Click on a criteria row to configure the criteria operator

**AND** will include tasks that match the criteria

**NOT** will include tasks that **do not** match the criteria

**OR** starts a new set of criteria. This new set of criteria will be
independent of the previous criteria

---

## File: docs/intents.md

---
id: intents
title: Missing intents
sidebar_label: Intents
---

Android allows apps to handle requests from other apps. For example, web links
are handled by your browser app.

Tasks.org relies on third-party apps to capture images from your camera, record
audio from your microphone, play back audio, select images from a gallery, and
perform speech recognition.

This improves the privacy and security of Tasks.org because it does not need access
to your camera or microphone. These specialized apps are also able to provide
more features and a better user experience.

### Audio recorder

In order to attach an audio note to a task your device must have an audio
recorder that responds to the
[`android.provider.MediaStore.RECORD_SOUND`](https://developer.android.com/reference/android/provider/MediaStore.Audio.Media#RECORD_SOUND_ACTION)
intent. If your device does not include a preinstalled audio recorder you may
find one on the Play Store or F-Droid

### Camera

### Gallery

### Speech recognizer

---

## File: docs/location.md

---
id: location
title: Location
---

Tasks.org offers several location-based features

* Location-based reminders
  * Remind on arrival
  * Remind on departure
* Organize your tasks by places
  * Search for places by name
  * Look up places on a map

Your location is never transmitted to Tasks.org or shared with third-parties.
Some place search and reverse geocoding API calls are proxied through
Tasks.org. For more information visit [Tasks.org's privacy policy](/privacy)

### Map tiles

* If Google Play Services are available then Tasks.org will use Google Maps tiles
* If Google Play Services are unavailable then OpenStreetMap tiles will be used

### Reverse geocoding

* If Tasks.org is installed from the Play Store it will use Mapbox for reverse
  geocoding
* If Tasks.org is installed from F-Droid it will use Nominatim for reverse
  geocoding

### Location search

Location search will be biased towards the center of the visible map area

* If you have a Tasks.org account then Tasks.org will use Google Places. Google
Places results include business phone numbers and website URLs, which will be
provided as shortcuts
* If you do not have a Tasks.org account then Tasks.org will use Mapbox

### Location-based reminders

Tasks.org can notify you when you arrive and/or depart from a location. You must
grant Tasks.org permission to access your location in order to use location-based
reminders

* If Google Play Services are available then Tasks.org will use Google Play
  Location Services to set up geofences
* If Google Play Services are unavailable then Tasks.org will use the [Android
  LocationManager](https://developer.android.com/reference/android/location/LocationManager)
  to set up geofences. Some Android devices may not support LocationManager
  geofencing

---

## File: docs/manual_sort_mode.md

---
id: manual_sort_mode
title: Manual sorting
---

`My order` sort mode allows you to manually rearrange your tasks in a 
particular task list. Select a task list, open the overflow menu sort options, 
choose `My order`. Then long press to initiate a drag-and-drop gesture, then 
move your task up or down to re-arrange it, or move it to the side to turn it 
into a subtask

`My order` is supported for:

* Local lists
* Google Task lists
* CalDAV lists
* EteSync lists
* DAVx⁵ lists

`My order` is not yet supported for:

* Tags
* Filters

### CalDAV, DAVx⁵, and EteSync lists

Tasks.org implements `My order` using `x-apple-sort-order`, a non-standard
extension to the iCalendar protocol. This sort order is compatible with Apple
Reminders and Nextcloud Tasks.

### Astrid manual sorting

Tasks.org supports Astrid's legacy manual sort mode for 'My Tasks', 'Today', and
tags. *This sort mode is not recommended, proceed with caution!* This sort mode will be replaced in a future release,
and Astrid sort order data will not be migrated

* Toggle on `⚙ > App settings > Advanced > Astrid manual sorting` to enable this sort mode
* `Show hidden` and `Show completed` toggles are not supported
* Manual order changes in this sort mode are not reflected in `My order`
* Subtasks created in this sort mode are not visible in the edit screen
* Subtasks created in this sort mode are not visible in other sort modes
* Subtasks created in this sort mode are not collapsible