Releases: obsidian-tasks-group/obsidian-tasks
4.8.1: Fix crash at startup on first install - or if settings never before edited
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
What's Changed
🌟 Most Notable
Dependencies have been updated. Please restart Obsidian after updating the plugin. Thank you.
- Added more query file properties
query.file.pathWithoutExtension
query.file.filenameWithoutExtension
- docs: Values for Query File Properties
- Added more task file properties
task.file.pathWithoutExtension
task.file.filenameWithoutExtension
- docs: Values for 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 as50 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
- If a
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
- chore(deps): bump rrule from 2.7.1 to 2.7.2 by @dependabot in #2120
- chore(deps): bump word-wrap from 1.2.3 to 1.2.5 by @dependabot in #2291
- chore(deps-dev): bump ts-jest from 29.1.0 to 29.1.1 by @dependabot in #2122
- chore(deps): bump boon-js from 2.0.3 to 2.0.4 by @dependabot in #2121
- build(deps): bump @adobe/css-tools from 4.2.0 to 4.3.1 by @dependabot in #2240
- build(deps): bump actions/checkout from 3 to 4 by @dependabot in #2248
🛠️ 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
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
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
- refactor: separate concerns in
TaskLayout.ApplyOptions()
by @ilandikov in #2235 - test: enable combination-testing of async code by @claremacrae in #2251
- test: refactoring to simplify EditTask.test.ts by @claremacrae in #2253
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
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
- refactor: split getComponentClassesAndData() in to 2 functions by @claremacrae in #2226
- refactor: simplify
getTaskComponentClass()
by @ilandikov in #2228 - refactor: remove unused parameter from
TaskLayout
constructor by @ilandikov in #2234 - test: Add tests for logic in EditorSuggestor.onTrigger() by @claremacrae in #2233
- vault: update smoke test for recent code changes by @ilandikov in #2207
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
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
💪 Fixes
- Single # symbol in task line no longer treated as a tag by @claremacrae in #2201
- Remove verbose debug console output by @claremacrae in #2203
📖 Documentation
- Add a Tags page, to help with FAQs by @claremacrae in #2202
- Live page: Tags
🛠️ 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
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
- feat: Add + sign to supported list markers by @claremacrae in #2193
🛠️ Behind the scenes
- chore: Add Sponsor button to GitHub repo by @claremacrae in #2181
- refactor: simplify if-elses in DateField by @ilandikov in #2185
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
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
statementsreturn
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
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.
- These are often a sign of a missing
- Any problems with regex result in the following 'help' being displayed inside Tasks code blocks:
Main changes
Here are the most notable user-visible changes.
🌟 Features
- feat: query error messages now show problem line by @claremacrae in #2128
- feat: explain now shows regex interpretation by @claremacrae in #2132
- feat: Show help message for invalid regular expressions by @claremacrae in #2139
💪 Fixes
- fix: Display reason for any failure to read regex by @claremacrae in #2134
- fix: Support 'u' flag (Unicode) & detect duplicate flags by @claremacrae in #2135
- fix: prevent truncation of regex /a/b/c/d/ searching only /a/ by @claremacrae in #2136
- fix: Report invalid regex flags - likely a missing slash by @claremacrae in #2137
- fix: Improve readability of exception reports. by @claremacrae in #2140
📖 Documentation
- docs: Simulate a horizontal rule before each level-2 heading by @claremacrae in 6903294
- docs: Remove HRs before level-2 headings by @claremacrae in 60d5c2d
- docs: Fix incorrect 'not scheduled' instruction - fixes #2116 by @claremacrae in 40e8a02
- docs: Standardise punctuation in custom filter and group examples by @claremacrae in 81cc8ef
- docs: Remove links to two GitHub issues that have been fixed by @claremacrae in 962c18a
- docs: Standardise text for links to GitHub issues. by @claremacrae in 97c5dc2
- docs: Remove now-fixed limitations from Regular Expressions docs by @claremacrae in f210d0d
- docs: Add example of global query in Explaining Queries.md by @claremacrae in 28a3c68
- docs: Record that 'explain' now shows regexes. by @claremacrae in 6b9f02a
🛠️ Dependencies
- chore(deps-dev): bump prettier from 2.7.1 to 2.8.8 by @dependabot in #2090
- chore(deps): bump semver from 6.3.0 to 6.3.1 by @dependabot in #2117
- chore(deps): bump tough-cookie from 4.1.2 to 4.1.3 by @dependabot in #2115
- chore: Fix error message from newer svelte dependencies. by @claremacrae in #2119
- chore(deps-dev): bump svelte-check from 2.10.3 to 3.4.6 by @dependabot in #2118
🛠️ 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'
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
- feat: Add
task.descriptionWithoutTags
forgroup by function
andfilter by function
by @claremacrae in #2094 - feat: Add
filter by function
by @claremacrae in #2097 - feat: Tasks code block now shows any error messages from searches by @claremacrae in #2098
📖 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
- refactor: Divide up
evaluateExpression()
for re-use by @claremacrae in #2095 - refactor: Add
TaskExpression
to encapsulateExpression
functions by @claremacrae in #2096
Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):