todo_lib 8.1.0

Collection of utilities for todo.txt format
Documentation
2025-01-17 - version 8.1.0
[+] Added new special dates: month names. It is possible to use short (3
    letter names and full month names when setting due and other dates. Also
	these special dates can be used in expression, e.g 'due:apr+7d'.
	Setting a date to a month name effectively sets the date to the first day
	of that month. The date is always in the future. So, if you set 'apr' on
	the first of April, the date will be first of April in the next year.
2024-11-17 - version 8.0.0
[*] Breaking changes:
	- deprecated function `done` (since 7.2.0) is removed. The new function
	  `done_with_config` is renamed as `done`
	- Conf struct reorganization:
		* previously separated fields `<name>` and `<name>_action` are grouped
		  into sub-structs in a form `<name>: { <action>, <value> }`
		+ added field `soon_days` for calculating dates like `soon+1d`
		+ all date fields (`due` and `threshold`) got extra feature: you can
		  define a new value not only by setting an exact date, but by setting
		  an expression that is calculated for each task. It makes easier to,
		  e.g, push all due dates by a week by passing expression `due+1w`
[+] Added a lot of functions to deal with human-readable date expressions like
    `due+1w` or `today+1m`

2024-08-24 - version 7.2.2
[*] Update dependencies. Switch to 'thiserror' v2 from v1. Clippy fixes.

2024-08-24 - version 7.2.1
[*] Remove certain tags from a new task that is cloned from a completed
    recurrent one. At this moment, the list of removed tags is short:
	"tmr:" and "spent:".

2024-07-16 - version 7.2.0
[*] Add new API to complete tasks. The new API allows setting completion date
	regardless of creation date presence. The new is `done_with_config`. The
	old API `done` is still available but marked deprecated.

2024-02-14 - version 7.1.0
[*] Introduce new recurrency range: business days. Use 'b' to define the
    number of days in the 'rec' tag. Example: 'rec:7b'.
	At this moment, it skips only Saturdays and Sundays when calculating
	the next day.

2023-08-31 - version 7.0.1
[*] It was not possible to use custom CompletionMode when call `done` and
    `undone` in todo.rs

2023-08-30 - version 7.0.0
[!] Improve compatibility with todotxt rules:
	Now task `complete` and `uncomplete` require an extra argument `CompletionMode`.
	todo_lib::Conf got new field for the completion mode: `completion_mode`.
	Details: https://github.com/todotxt/todo.txt#complete-tasks-2-format-rules

2023-08-21 - version 6.1.3
[*] Fix filtering any date field by a range when one end of the range is
    'none'. The bug resulted in that, e.g., '--due none' and
	'--due today..none' displayed the same output which included only tasks
	that do not have due date set

2023-05-07 - version 6.1.2
[+] Remove a few debug println calls

2023-01-31 - version 6.1.1
[+] Fix building using 32-bit compilers

2023-01-29 - version 6.1.0
[+] Empty todos are skipped by default. To show them, use `--all` flag

2022-12-21 - version 6.0.0
[+] Add API to edit any tag in the subject. Standard tags are ignored
    by the new API, use the existing specific functions to change due
	date, threshold, and recurrence
[+] Add API for hashtags: add, remove, edit, filter

2022-08-30 - version 5.1.1
[*] Set creation date to today for new todo created for a recurrent task if
    the original todo has creation date
[*] TodoStatus::All did not show todos with threshold later than today's date

2022-07-24 - version 5.1.0
[*] Fix updating recurrence for a normal todo item

2022-06-12 - version 5.0.0
[*] Replace 'failure' crate with 'thiserror' one
[*] Clippy fixes

2021-10-17 - version 4.0.0
[+] Threshold date also move forward like due dates when a todo is done
[*] Instead of modifying an existing todo with recurrence, "done" marks the
    current todo completed and creates a new unfinished one with changed
	due and threshold dates.
	If a todo contains only recurrence but no due and threshold dates, the
	todo is marked comleted and no new todo is created.

2021-10-14 - version 3.0.2
[*] When passing list of task IDs, the first task was always ignored

2021-10-13 - version 3.0.1
[*] Fix regression: filter "due=none..4d" did not show tasks with empty due
    dates
2021-09-30 - version 3.0.0
[+] Implement exclude filter for projects, contexts, and tags
    Breaking change: filter struct changed

2021-09-25 - version 2.1.1
[*] Ranges with "none" are inclusive now - as it was stated in docs.
2021-09-25 - version 2.1.0
[+] Threshold in filter is range [..today] by default. It makes all tasks with
    threshold after today hidden.
2021-02-02 - version 2.0.0
[!] The todotxt low-level library is replaced with a new one
[*] Names of projects and contexts are case-sensitive now
[+] Tag order in todo's subject is preserved
[*] Completing todos with recurrence and threshold date does not change
    threshold date
[+] Todo completion now follows strict flag of todo's recurrence. Depending on
    the flag, the next due date is either calculated from previous due date or
	from the current date
[*] Every tag must have a non-empty value. Changing tag's value to an empty
    string removes the tag.
[*] if a todo is incomplete and has two dates in the beginning, only the first
    date is parsed as a creation date. The second date becomes part of a subject

2020-12-27 - version 1.0.0
[+] New option to filter by 'tag'

2020-12-25 - version 0.5.2
[*] Make filter rules for threshold the same as for other date fields

2020-08-08 - version 0.5.1
[+] Support for 'none' in ranges: if one end of a range is 'none', the range
    becomes an open range that combines two lists: todo with empty data and
	todos that are in the open range.
	Example: `--due=none..tomorrow` shows all todos that are overdue, due
	today and tomorrow, and that does not have due date.

2020-07-25 - version 0.5.0
Breaking changes:
[+] Struct `tfilter::Due` is renamed to `tfilter::DateRange` as now todo_lib
    supports filtering not only by due date, but by creation and finish dates
[*] Filter for due date did not support `Greater` condition
[+] Todos can be filtered by their creation and finish dates

2020-07-23 - version 0.4.0
[*] When a recurrent todo is done, its new due date is always set in the
    future. If the todo has a treshold, it is corrected accordingly

2019-01-19 - version 0.3.2
[*] Allow to use '=' when setting sort order: '-s=pri' works the same as
    '-s pri' and '--sort=pri'

2019-01-19 - version 0.3.0
[+] Timer support: start, stop timer for a todo, and related functions
[*] Marking a todo completed stops todo's timer if it is active

2019-01-04 - version 0.2.3
[+] New range for ID selection: List = list of IDs

2019-01-04 - version 0.2.2
[+] New option in config: `creation_date_auto` - automatically adds creation
    date to a new todo if it does not have it in its subject
[+] New command line argument `--done` to load archived todos

2018-12-29 - version 0.2.0
[!] First release