Releases: VladimirMarkelov/ttdl
Basic support for month names in dates
New special dates are available when setting due and other dates. The new special dates are names of months. You can use short (3 first letters) or full month names. After substitution a month name is replaced with the first day of the month. Note that the date is always in the future. In other words, if you set due:dec
on the December 1st, the due date will be December 1st of the next year.
You can use the new dates in expression. E.g, assuming that today is January 2025, setting due:apr+1w
defines the due date as 2025-04-08
. Note that because of apr
means the first day of April, adding a week makes April 8th, not April 7th.
See section "Human-readable dates" in the README for more details.
Default configuration file
A default configuration file is incorporated into the binary. Now, you do not have to keep ttdl.toml
just in case. You always can generate it from scratch. Use one of two command-line options:
--init
- this option creates the global TTDL configuration file if it does not exist yet.--init-local
- this option creates a local TTDL configuratoin file in the current working directory, if the file does not exist yet
In both cases, if the configuration file already exists, TTDL does not overwrite anything. It is safe to run TTDL with any of those option - all your existing changes in configuration file will be kept intact. TTDL displays a proper message about it.
If TTDL creates a new configuration file successfully, it prints out the location of the new file.
External editor support
Add a way to edit selected tasks (or all of them) in an external editor of your choice. See details in the README.md, a new section "Interactive edit".
Support expressions when setting `due` and `threshold` dates
Now you can define due
and threshold
dates relatively from any tag. Eg, ttdl add "water plants due:today+4d t:due-2d"
or ttdl edit 1 --set-due=due+1w
.
The expression are rather limited and have some features, please see the new section Date Expressions
in the README.md for details.
Small fixes
- update rust and fix new clippy warnings
- bump dependencies
- when a recurrent task is completed, all time tracking tags are not copied to a new task (to the clone of the completed one)
Rules to setting completion date when completing a task
Before 4.4.0
TTDL sets completion date for a completed task only if the task had creation date before completion. Now this behavior is defined by TTDL configuration file - see global.add_completion_date_always
option, and by a command-line option --add-completion-date-always
. By default the option is disabled, and TTDL works in the same way as it did in older versions.
Edit a subject and keep the original tags
- Update packages and fix clippy warnings
- New option
--keep-tags
or-k
for edit mode. If the option is set, the command must contain a new subject text. A modified todo keeps all
properties (project, context, tags, hashtags), but the regular text is replaced with the new subject (see README.md, sectionEdit in keep-tags mode
for more details)
v4.2.1
Forbid running rm
, done
, undone
, edit
, and postpone
commands without specifying tasks to process
New recurrence interval `b`
- New recurrence interval: business days.
It works as the day interval but all Sundays and Saturdays are skipped. - Now the character
~
can be used in configuration file to set todo and
done files.~
is a shortcut for user's home directory.
Thanks to Enno Zickler for contribution. - Updated docs:
- Added description of strict and non-strict recurrences
- Added ArchLinux installation instructions. Thanks to Justin
Calendar and todotxt compatibilty
Changes since 4.0.0:
-
Fixed a few bugs related to calendar:
- fixed panic when printing calendar for more than 1 year
- when displaying more than 1 year, calendar does not abruptly stops printing after the first day of the last month in the range
- calendar ranges like
--calendar=-2y..-1y
did not work - they displayed emptiness, now it is works as expected
-
Fixed bug with date ranges that has
none
on one of its ends. e.g.--due=today..none
. It should print all tasks which due date is today or later and tasks without due date set, but the old version displayed all the tasks -
New command-line flag
priority-on-done
(see documentation sectionMarking task completed and uncompleted
) and configuration optionglobal.priority_on_done
. They define what to do with task priority when the task is completed. There are four modes: keep, erase, move, and tag - see details in the help.