Obsidian Tasks Available

It should be possible to have both.

2 Likes

Hi @schemar

Hope you are well

I see that tasks/subtag works

Would it be possible to introduce something into your syntax that can reference the sub-tag?

Thanks a lot

I am not quite sure what you mean, sorry. Can you please elaborate?

Hi @schemar

So if I have something like

- [ ] #task/ataskcategory This is something I need to do

Your plugin picks this up perfectly

But if I just want to list tasks with the ataskcategory subtag there is no way to current do it

So it would be great to be able to do something like the following

```tasks
no due date
subtag ataskcategory
```

I hope this makes more sense? :slight_smile:

Thanks

you need to query by description instead of subtag. I think the solution posted here will work:

1 Like

Instead of pre-defined statuses, a more flexible approach is to allow tags to hold a value. For example, #status(delegated), #status(skipped) or #status(wait) and so on. Then the query could be something like: status is "wait" or status is not "skipped".

Similarly for due and defer dates, one could have #due(2021-06-18) or #defer(2021-06-18) and then query with operators such as due < 2021-06-19 or defer > 2021-06-18.

The general form of a query is: tag followed by operator or comparator followed by a value.

Of course, this is not a new idea. Taskpaper does this using @ to denote tags instead of #.

2 Likes

If I am not mistaken, you already achieve all requirements with the description filter, or not?

1 Like

Don’t know how I missed this when I started playing with it. Thank you very much :slight_smile:

This is really an incredible plugin, @schemar. Thanks for making it! Can you say a little bit about how it works… how does it do its magic? I ask because (a) I’m curious and (b) I’d like to get an idea of how scalable it is. Suppose I have a file with one query block. When I generate a preview, does it scan through all my markdown files to find the “-[ ]” lines that meet the query criteria? Alternatively, does the plugin maintain a database (e.g., sql) of “- [ ]” lines from which it pulls out the items matching a query? The database is updated whenever a file is created, edited or deleted.

Let me start by saying that there are definitely parts that can be optimized. However, so far it seems it works for most (all?) vaults without further optimization.

Also: all the event handling and dynamic updates of the rendered markdown preview are only possible due to Obsidian’s amazing plug-in API/infrastructure.

Obsidian has s.th. called a metadata cache. When you start obsidian, it scans all files and stores some metadata for each file. For example all tags or checklist items. The Tasks plugin waits for the metadata cache to finish. Then, or every file in the vault, Tasks asks the metadata cache for checklist items. If a file has checklist items, Tasks goes through all of them and parses them. So simplified: when you start Obsidian, Obsidian scans your whole vault for checklist items and then Tasks scans all checklist items (from the files in the vault).

During the inital scan, the Tasks plugin builds an in-memory cache of all tasks (with the additional data like due date, done date, and so on). After the initial scan, Obsidian will tell the Tasks plugin whenever a file has changed. Every time that happens, Tasks re-scans the checklist items of that file for tasks. In its in-memory cache, tasks replaces the old tasks from that file with the new tasks.

When you have a query block, it takes all tasks from the Tasks plugins in-memory cache and searches for all tasks that match the query. All matching tasks are sorted and then added to the markdown preview.

When a file changes and therefore the in-memory task cache changes, Tasks tells all rendered query results that there has been an update and each rendered query updates itself based on the existing query and the updated tasks. When a rendered query is removed, e.g. due to a closed file/panel, it won’t update anymore.

Hope this helps! Feel free to ask for more details! (the source is open too, of course :sweat_smile: )

6 Likes

Thanks very much, @schemar, for that detailed and very clear explanation. The reason I had asked the question was scalability. I wanted to be sure that I use the plugin in a way that minimizes workload and scales well as my vault grows. I’ll probably have follow-up thoughts/questions which I’ll post here. Thanks again for a great plugin!

Hi @schemar

Hope you are well,

I think I just picked up a minor bug:

When editing a task with no due information
This

  • [ ] #tasks/subtask
    becomes
  • [ ] #tasks /subtask This is a task :repeat: every week on Wednesday :date: 2021-06-30

Note the space added to #tasks/subtask which becomes #tasks /subtask

Thanks

Ah, true. Tasks isn’t good at supporting sub-tags at the moment. Would you be able to open an issue on GitHub? Issues · schemar/obsidian-tasks · GitHub

That would be of great help. Thanks!

1 Like

Will do. Thanks!

1 Like

Hi,
I just started with Obsidan and the Tasks plugin - mindblowing and awesome. Congratulation to this plugin.
Simple beginner’s question: I can’t find find out how to write the signifier for date and recurring. Is there any shortcut?
Thanks,
Simon

Hey there! You have two options:

  1. use the command to „create or edit task“ (you can bind it to a shortcut)
  2. add the Emoji from your operating system‘s emoji selector

The signifiers are simply emojis.

1 Like

I just returned to Obsidian after a brief flirtation with Craft. This plug-in is awesome. Is there anyway to have task dependencies? So task 2 is available when task 1 is done?

3 Likes

First of all, thank you for this plugin. I am relatively new to Obsidian and appreciate the functionality the task plugin provides.

I was wondering if you had considered adding a tag support to the task queries for often-used tag combinations in tasks.

For instance, I could configure the task plugin settings to include :house::arrow_up_small: and​:house::arrow_down_small: for high-priority home and low-priority home tasks, respectively. Then when I create a task using the Create/Edit Task menu, I can easily choose from these (via a dropdown?) so that the tags are appended to the task and I can query against them.

Examples of emoticon tag combinations and a query:
2021-09-06_16h49_45

3 Likes

Obsidian Tasks is now at version 1.4.0! Some long-standing bugs were closed and some shiny new things were added as well!
Full release notes:

Please report any new bugs to the issue tracker :pray:

What’s new:

  • It is now possible to reverse the order of the results using for example sort by due reverse.
  • Added a section to the documentation which describes how to integrate Tasks with the obsidian reminder plugin.
  • Internal changes which will enable the CodeMirror options plugin to show task query results in preview. This is going to be cool!
  • New and Expanded Documentation at Introduction - Obsidian Tasks.
  • Add priority to tasks
  • Add scheduled date
  • Add start date
  • All dates carry over for recurring tasks
  • Add urgency as new default sort
  • Add short mode to query results

Fixed:

  • Recurrence now works as intended
  • Block links are now kept
  • Sorting by description now regards markup
  • Filtering no longer applies to the global filter
  • Spaced tasks are now rendered correctly in preview
9 Likes

Hey – this is going to be a dumb question, so I apologize – how do I update? Do I just reinstall?

EDIT – Answered my own question. There’s a check for updates button in obsidian settings.

1 Like