Skip to content

Releases: obsidian-tasks-group/obsidian-tasks

4.8.1: Fix crash at startup on first install - or if settings never before edited

27 Sep 01:10
Compare
Choose a tag to compare

What's Changed

  • fix: Prevent crash at startup if user never previously edited settings by @claremacrae in #2303

Full Changelog: 4.8.0...4.8.1

4.8.0: See total task counts, 'group by backlink' now hyperlinks and easier scripting access to paths and filenames

26 Sep 20:18
Compare
Choose a tag to compare

What's Changed

🌟 Most Notable

Dependencies have been updated. Please restart Obsidian after updating the plugin. Thank you.

  • Added more query file properties
  • Added more task file properties
  • Add hyperlink to group by backlink headings (thanks, @ilandikov)
    • As well as jumping to the relevant heading, it also shows a hover preview of the section containing the task(s)
  • Add total task count to show task count display
    • If a limit instruction means not all matching tasks are shown, the total tasks count is shown, such as 50 of 686 tasks.
    • This is useful when combined with limit 0 if you just want to see how many tasks match your query.
    • docs: Limiting

Main changes

Here are the most notable user-visible changes, and the more significant internal ones.

🌟 Features

  • feat: Scripting enables removing file extension from path and filename properties by @claremacrae in #2288
  • feat: group by backlink headings link to location & show hover previews by @ilandikov in #2285
  • feat: show task count now shows total, if 'limit' applied by @claremacrae in #2301

🛠️ Dependencies

🛠️ Behind the scenes

  • chore: Fix error TS5055: Cannot write file ...tests/global-setup.js by @claremacrae in #2277
  • chore: automate detection of circular code dependencies by @claremacrae in #2295
  • chore: Specify supported node versions in package.json by @axelson in #2065
  • refactor: Introduce GlobalQuery class: the plugin uses a singleton. by @ilandikov in #2215
  • refactor: Remove recently-added cyclic dependencies. by @claremacrae in #2279
  • refactor: Separate settings out of GlobalFilter by @claremacrae in #2282
  • refactor: remove unused return value in createTasksList() by @ilandikov in #2280
  • refactor: Add getInstance() to GlobalFilter & make all else non-static by @claremacrae in #2283
  • refactor: Convert one use of GlobalFilter.getInstance() to instance by @claremacrae in #2286
  • refactor: remove cyclic dependencies & optional parameter in TaskLineRenderer.ts by @ilandikov in #2284
  • refactor: extract data attribute names dictionary from getComponentDataAttribute() by @ilandikov in #2255
  • refactor: remove destructured object and return in createTaskList() by @ilandikov in #2293
  • refactor: remove destructured types in Query.ts by @ilandikov in #2292
  • refactor: move code for task counts text to QueryResult by @claremacrae in #2300

New Contributors

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

🙏 Support Tasks development

4.7.1: 2 fixes for auto-adding Created Date

21 Sep 18:19
Compare
Choose a tag to compare

What's Changed

Please restart Obsidian after updating the plugin. Thank you.

Main changes

Here are the most notable user-visible changes.

💪 Fixes

  • fix: Editing a checkbox line with empty description now adds creation date, if enabled by @ilandikov in #2264
  • fix: 'Create or edit task' now adds Created date if adding global filter by @claremacrae in #2274

🛠️ Behind the scenes

  • test: Add exhaustive testing of 'Edit task modal' under wide range of scenarios by @claremacrae in #2272

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

🙏 Support Tasks development

4.7.0: Use Query file path, folder, root and name in queries directly

12 Sep 09:20
Compare
Choose a tag to compare

What's Changed

Please restart Obsidian after updating the plugin. Thank you.

🌟 Use Query file path, folder, root and name in queries directly 🌟

  • support placeholders like {{query.file.path}} in queries by @claremacrae and @ilandikov in #2254
    • no more need to use dataview to access query file information
  • examples:
    • folder includes {{query.file.folder}}
      • Find tasks in files in the folder that contains the query and any sub-folders.
    • filter by function task.file.folder.includes( '{{query.file.folder}}' )
      • Find tasks in files in the folder that contains the query and any sub-folders.
      • Note that the placeholder text is expanded to a raw string, so needs to be inside quotes.
    • filter by function task.file.folder === '{{query.file.folder}}'
      • Find tasks in files in the folder that contains the query only (not tasks in any sub-folders).
  • docs:

Other changes

🛠️ Behind the scenes

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

4.6.1: Auto-Suggest is more selective

01 Sep 21:31
Compare
Choose a tag to compare

What's Changed

Please restart Obsidian after updating the plugin. Thank you.

Main changes

Here are the user-visible changes.

💪 Fixes: Auto-Suggest is more selective

  • fix: Only show dataview suggestions when there is an open bracket preceding the cursor position. by @kedestin in #2204
  • fix: Prevent auto-suggest appearing before the end of the checkbox by @claremacrae in #2244

Docs:

🛠️ Behind the scenes

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

4.6.0: 'ignore global query', dates 'on or before' and 'on or after', debug logging removed

12 Aug 14:17
Compare
Choose a tag to compare

What's Changed

Please restart Obsidian after updating the plugin. Thank you.

🌟 Features

  • Add ignore global query instruction by @ilandikov in #2113
  • New date options: on or before, on or after, in or before & in or after by @ilandikov in #2186
    • This greatly simplifies queries for daily notes!
    • No more ( due before {{date:YYYY-MM-DD}} ) OR ( due on {{date:YYYY-MM-DD}} )
    • docs for single dates
    • docs for date ranges

💪 Fixes

📖 Documentation

🛠️ Behind the scenes

  • docs/contrib/vault: Update snippets and examples in markdown by @github-actions in #2194

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

🙏 Support Tasks development (Optional!)

4.5.0: Support + character as a list marker

06 Aug 13:19
Compare
Choose a tag to compare

What's Changed

Dependencies have been updated. Please restart Obsidian after updating the plugin. Thank you.

Here are the most notable user-visible changes.

🌟 Features

🛠️ Behind the scenes

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

4.4.0: custom groups and filters support variables, functions, if and return statements

30 Jul 10:54
Compare
Choose a tag to compare

What's Changed

Please restart Obsidian after updating the plugin. Thank you.

Here are the most notable user-visible changes.

🌟 Features

  • feat: Support variables and more in custom filters and groups by @claremacrae in #2179

The following can now be used in filter by function and group by function:

  • Named variables
  • Functions
  • if statements
  • return

There are some simple examples in the Expressions docs page.

For example, Before:

# 4 places need updating to change from using task.due to, say, task.happens:
group by function (!task.due.moment) ? '%%4%% ==Undated==' : task.due.moment.isBefore(moment(), 'day') ? '%%1%% ==Overdue==' : task.due.moment.isSame(moment(), 'day') ? '%%2%% ==Today==' : '%%3%% ==Future=='

After:

# Only 1 place needs updating to change from using task.due to, say, task.happens:
group by function const date = task.due.moment; return (!date) ? '%%4%% ==Undated==' : date.isBefore(moment(), 'day') ? '%%1%% ==Overdue==' : date.isSame(moment(), 'day') ? '%%2%% ==Today==' : '%%3%% ==Future=='

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

4.3.0: Regular Expressions bug-fixing and usability

17 Jul 14:25
Compare
Choose a tag to compare

What's Changed

🌟 Most Notable

Dependencies have been updated. Please restart Obsidian after updating the plugin. Thank you.

🌟 Major safety and usability improvements for regular expressions (regex) searches

  • / characters no longer need to be escaped (as \/) in regular expressions.
    • This fixes #2136 - that file paths in regular expressions were wrongly truncated.
  • explain now explains regular expressions.
  • It's easier to correct syntax errors in regexes, as error info is now displayed, such as:
    • SyntaxError: Invalid regular expression: /hello(/: Unterminated group
  • The u unicode flag is now supported.
  • Any invalid flags are reported now instead of ignored.
    • These are often a sign of a missing / at the end of the regex.
  • Any problems with regex result in the following 'help' being displayed inside Tasks code blocks:
    image|500

Main changes

Here are the most notable user-visible changes.

🌟 Features

💪 Fixes

📖 Documentation

🛠️ Dependencies

🛠️ Behind the scenes

  • test: Simplify code-review of filter, sort and group additions by @claremacrae in #2126

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):

4.2.0: Add 'filter by function'

09 Jul 19:38
Compare
Choose a tag to compare

What's Changed

🌟 Most Notable

Please restart Obsidian after updating the plugin. Thank you.

🌟 filter by function custom filters! - by @claremacrae

  • A powerful, flexible mechanism to give users total control over task filtering.
  • Docs

Some example custom filters, several of which were not previously possible:

# Find tasks due on Tuesdays, that is, any Tuesday.
filter by function task.due.format('dddd') === 'Tuesday'

# Find tasks that toggle to themselves, because the next symbol is the same as the current symbol.
filter by function task.status.symbol === task.status.nextSymbol

# Find tasks with more than one tag (other than any global filter)
filter by function task.tags.length > 1

# Find tasks with an urgency score between 8.0 and 11.0, inclusive.
filter by function task.urgency > 7.9999 && task.urgency < 11.0001

# Find tasks with any urgency other than the default score of 1.95.
filter by function task.urgency.toFixed(2) !== 1.95.toFixed(2)

# Find tasks that have a broken/invalid recurrence rule.
filter by function (!task.isRecurring) && task.originalMarkdown.includes('🔁')

🙏 Supporting Tasks development (Optional!)

The Tasks plugin is completely free to use, and very willingly developed and supported by Clare Macrae since May 2022.

Making the filter by function facility so well documented and usable, and this thoroughly tested, has been many, many days of work. It opens up some very exciting future capabilities.

If you would like to support Tasks development, and are able to do so, please see:

Donations will go towards my computing costs and licenses for development tools that I use for productivity. Thank you 🙏.


Main changes

Here are the most notable user-visible changes.

🌟 Features

📖 Documentation

  • docs: How to create groups Overdue, Today, Future & Undated by @claremacrae in #2110
  • docs: Finish docs for filter by function custom filters feature by @claremacrae in #2114

🛠️ Behind the scenes

Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):