Releases: obsidian-tasks-group/obsidian-tasks
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):
4.1.0: `hide tags` and `show tags`
What's Changed
🌟 Most Notable
Please restart Obsidian after updating the plugin. Thank you.
- Added
hide tags
andshow tags
instructions - thanks @ilandikov and @esm7!- See the documentation
Main changes
Here are the most notable user-visible changes.
🌟 Features
- feat: Add
hide tags
instruction by @ilandikov in #2076
💪 Fixes
- fix:
hide tags
now preserves styling of description for specific tags by @claremacrae in #2086
🛠️ Dependencies
- chore(deps): bump actions/checkout from 2 to 3 by @dependabot in #2051
- chore(deps-dev): bump markdownlint-cli2 from 0.5.1 to 0.8.1 by @dependabot in #2036
🛠️ Behind the scenes
- test: use call GlobalFilter.set() by @ilandikov in #2084
Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):
4.0.1: Bug fixes to Urgency and Edit Task modal
What's Changed
Please restart Obsidian after updating the plugin. Thank you.
Main changes
Here are the most notable user-visible changes.
💪 Fixes
- fix: Make Edit modal use existing emojis if Global Filter missing by @ilandikov in #2054
- fix: Prevent date components of Urgency changing at midday by @claremacrae in #2072
📖 Documentation
- docs: Urgency numbers in docs now match actual values by @claremacrae in #2071
🛠️ Behind the scenes
- refactor: use TasksDate to simplify EditTask.svelte by @ilandikov in #2057
- refactor: Extract generic class QueryComponentOrError by @claremacrae in #2058
- refactor: Reduce complexity in QueryRenderChild.render() by @claremacrae in #2063
- refactor: Introduce QueryResult class by @claremacrae in #2064
- refactor: use PriorityTools in TaskLineRenderer.ts by @ilandikov in #2067
- test: set date in TaskProperties.test.ts to fix failing test by @ilandikov in #2056
Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):
4.0.0 - Custom Grouping!
What's Changed
Please restart Obsidian after updating the plugin. Thank you.
Most notable
group by urgency
now puts most urgent tasks first, not last.
If your vault uses group by urgency
, please update your query blocks like this:
Old instruction | Use this instruction instead |
---|---|
group by urgency reverse |
group by urgency |
group by urgency |
group by urgency reverse |
🌟 group by function
custom groups! - by @claremacrae and @hauntedhost
- A powerful, flexible mechanism to give users total control over task grouping.
- Credit: This work was only made possible by @hauntedhost, who kindly taught me how to evaluate user-supplied functions in TypeScript.
- Docs
Some example custom groups:
# Group by due date year and month number
group by function task.due.format("YYYY-MM")
# Group by any tags that contain "#context/"
group by function task.tags.filter( (tag) => tag.includes("#context/") )
# The opposite: create headings for all tags that do not contain "#tag".
group by function task.tags.filter( (tag) => ! tag.includes("#tag") )
You can also embed formatting in the group names, as markdown there is rendered.
For example, see the paler text in these group headings:
🙏 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 group 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 custom grouping, with
group by function
option by @claremacrae and @hauntedhost in #2028 - feat: Add TasksDate class for use in
group by function
by @claremacrae in #2032 - feat:
group by priority
names are now more readable by @ilandikov in #2047 - feat:
group by status.type
names are now more readable by @ilandikov in #2045
💪 Fixes
- fix: Stop bundling Moment in release by @claremacrae in #2016
- fix: 'remove global filter' broke display of sub-tags of global filter by @ilandikov in #2022
- fix!!:
group by urgency
now puts most urgent tasks first, not last by @ilandikov in #2046
📖 Documentation
- docs: Add Scripting column to Quick Reference, showing property names by @claremacrae in #2033
- docs: Update snippets and examples in markdown by @github-actions in #2048
- contrib: Update snippets and examples in markdown by @github-actions in #2002
🛠️ Behind the scenes
- chore: Automate content generation of some Priority docs by @claremacrae in #2011
- chore(deps): bump peter-evans/create-pull-request from 3 to 5 by @dependabot in #2004
- chore: Fix "Cannot write file '....../global-setup.js' errors'" by @ilandikov in #2008
- chore(deps-dev): bump @types/jest from 29.5.1 to 29.5.2 by @dependabot in #2005
- test: add custom matcher to test group sort order by @ilandikov in #1999
- test: Add TaskBuilder.createFullyPopulatedTask() by @claremacrae in #2013
- test: add group sort order tests by @ilandikov in #2024
New Contributors
- @github-actions made their first contribution in #2002
- @hauntedhost made their first contribution in #2028
Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):
3.10.0 - Fix Auto Suggest for High priority, more links in Settings
What's Changed
Please restart Obsidian after updating the plugin. Thank you.
Here are the most notable user-visible changes.
🌟 Features
- feat: All settings sections now link to their docs by @claremacrae in #1987
💪 Fixes
- fix: Enable 'High priority' to be selected easily in Auto Suggest by @claremacrae in #1996
🛠️ Dependencies
- chore(deps-dev): bump ts-jest from 29.0.3 to 29.1.0 by @dependabot in #1912
- chore(deps-dev): Bump jest packages to latest by @claremacrae in #1988
- chore(deps-dev): bump typescript from 4.7.4 to 5.0.4 by @claremacrae in #1990
- chore(deps-dev): bump svelte from 3.49.0 to 3.59.1 by @dependabot in #1992
- build(deps-dev): bump svelte-preprocess from 4.10.7 to 5.0.4 by @dependabot in #1983
- chore(deps-dev): bump esbuild-svelte from 0.7.1 to 0.7.3 by @dependabot in #1991
- chore(deps-dev): bump eslint to 8.41.0, eslint-plugin-import to 2.27.5 by @claremacrae in #1993
Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):
3.9.0 - More priorities: Highest & lowest; fix Obsidian 1.3.0 log spam
What's Changed
🌟 Most Notable
Please restart Obsidian after updating the plugin. Thank you.
Main changes
Here are the most notable user-visible changes.
🌟 Features
- feat: Add new priorities: highest and lowest by @chrabia in #1943
- Highest: 🔺
- Lowest: ⏬
- docs
- feat: Update Urgency for Lowest to make linear by @claremacrae in #1984
💪 Fixes
🛠️ Behind the scenes
- jsdoc,comment: Copy 2 tiny additions from my fork by @claremacrae in #1975
- refactor: Simplify grouping code in Field.ts by @claremacrae in #1976
- refactor: Simplify sorting code in Field.ts by @claremacrae in #1977
- test: More custom matchers, for easier Task testing by @claremacrae in #1979
- test: Add jest custom matcher toEqualMoment() by @claremacrae in #1980
New Contributors
Full Changelog (including changes too small to note above, and that do not affect the behaviour of the plugin itself):