.\" Man page generated from reStructuredText. . .TH "TODOMAN" "1" "Nov 19, 2018" "3.5.0" "Todoman" .SH NAME todoman \- Todoman Documentation . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .sp Todoman is a simple, standards\-based, cli todo (aka: task) manager. Todos are stored into \fI\%icalendar\fP files, which means you can sync them via \fI\%CalDAV\fP using, for example, \fI\%vdirsyncer\fP\&. .sp Todoman is now part of the \fBpimutils\fP project, and is hosted at \fI\%GitHub\fP\&. .SH FEATURES .INDENT 0.0 .IP \(bu 2 Listing, editing and creating todos. .IP \(bu 2 Todos are read from individual ics files from the configured directory. This matches the \fI\%vdir\fP specification. .IP \(bu 2 There’s support for the most common TODO features for now (summary, description, location, due date and priority) for now. .IP \(bu 2 Runs on any Unix\-like OS. It’s been tested on GNU/Linux, BSD and macOS. .IP \(bu 2 Unsupported fields may not be shown but are \fInever\fP deleted or altered. .UNINDENT .SH CONTRIBUTING .sp See contributing for details on contributing. .SH CAVEATS .sp Support for the \fBpercent\-completed\fP attribute is incomplete. Todoman can only mark todos as completed (100%), and will nor reflect nor allow editing for values for \fBpercent > 0 ^ percent < 100\fP\&. .SH INSTALLING .SS Distribution packages .sp If todoman is packaged for your OS/distribution, using your system’s standard package manager is probably the easiest way to install todoman. .SS ArchLinux .sp todoman is packaged in the \fI\%community\fP repository, and can be installed using: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C pacman \-S todoman .ft P .fi .UNINDENT .UNINDENT .SS macOS .sp todoman is packaged in \fI\%homebrew\fP, an can be installed using: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C brew install todoman .ft P .fi .UNINDENT .UNINDENT .SS Installation via PIP .sp Since \fItodoman\fP is written in python, you can use python’s package managers, \fIpip\fP by executing: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C pip install todoman .ft P .fi .UNINDENT .UNINDENT .sp or the latest development version by executing: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C pip install git+git://github.com/pimutils/todoman.git .ft P .fi .UNINDENT .UNINDENT .sp This should also take care of installing all required dependencies. .SS Manual installation .sp If pip is not available either (this is most unlikely), you’ll need to download the source tarball and install via setup.py, though this is not a recommended installation method: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C python3 setup.py install .ft P .fi .UNINDENT .UNINDENT .SS bash autocompletion (optional) .sp There is an autocompletion function for bash provided in the \fBcontrib\fP directory. If you want to enable autocompletion for todoman in bash, copy the file \fBcontrib/autocompletion/bash/_todo\fP to any directory you want. Typically \fB/etc/bash_completion.d\fP is used for system\-wide installations or \fB~/.bash_completion.d\fP for local installations. In the former case, the file is automatically sourced in most distributions, in the latter case, you will most likely need to add: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C source ~/.bash_completion.d/_todo .ft P .fi .UNINDENT .UNINDENT .sp to your \fB~/.bashrc\fP\&. .SS zsh autocompletion (optional) .sp There is an autocompletion function for zsh provided in the \fBcontrib\fP directory. If you want to enable autocompletion for todoman in zsh, copy the file \fBcontrib/autocompletion/zsh/_todo\fP to any directory in your \fB$fpath\fP\&. Typically \fB/usr/local/share/zsh/site\-functions/\fP is used for system\-wide installations. .SS Requirements .sp Todoman requires python 3.4 or later. Installation of required libraries can be done via pip, or your OS’s package manager. .sp Todoman will not work with python 2. However, keep in mind that python 2 and python 3 can coexist (and most distributions actually ship both). .sp Recent versions also have experimental support for pypy3. .SS Notes for Packagers .sp All of todoman’s dependencies are listed in the \fI\%requirements.txt\fP file. New dependencies will be clearly announced in the \fBCHANGELOG.rst\fP file for each release. Patch releases (eg: those where the third digit of the version is incremented) \fBwill not\fP introduce new dependencies. .sp If your packages are generated by running \fBsetup.py install\fP or some similar mechanism, you’ll end up with a very slow entry point (that’s the file \fB/usr/bin/todo\fP file). Package managers should use the file included in this repository under \fBbin/todo\fP and replace the above one. .sp The root cause of the issue is really how python’s setuptools generates these and outside of the scope of this project. .sp If your packages are generated using python wheels, this should not be an issue (much like it won’t be an issue for users installing via \fBpip\fP). .SH CONFIGURING .sp You\(aqll need to configure Todoman before the first usage, using its simple ini\-like configuration file. .SS Configuration File .sp The configuration file should be placed in \fB$XDG_CONFIG_DIR/todoman/todoman.conf\fP\&. \fB$XDG_CONFIG_DIR\fP defaults to \fB~/.config\fP is most situations, so this will generally be \fB~/.config/todoman/todoman.conf\fP\&. .SS The [main] section .INDENT 0.0 .TP .B cache_path The location of the cache file (an sqlite database). This file is used to store todo data and speed up execution/startup, and also contains the IDs for todos. If the value is not specified, the database will be place in the \fBXDG_CACHE_HOME\fP directory, generally, \fB~/.cache\fP\&. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type cache_path .TP .B default .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B color By default todoman will disable colored output if stdout is not a TTY (value \fBauto\fP). Set to \fBnever\fP to disable colored output entirely, or \fBalways\fP to enable it regardless. This can be overridden with the \fB\-\-color\fP option. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type option, allowed values are \fIalways\fP, \fIauto\fP and \fInever\fP .TP .B default auto .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B date_format The date format used both for displaying dates, and parsing input dates. If this option is not specified the system locale\(aqs is used. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type date_format .TP .B default %x .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B default_command When running \fBtodo\fP with no commands, run this command. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type string .TP .B default list .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B default_due The default difference (in hours) between new todo’s due date and creation date. If not specified, the value is 24. If set to 0, the due date for new todos will not be set. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type integer .TP .B default 24 .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B default_list The default list for adding a todo. If you do not specify this option, you must use the \fB\-\-list\fP / \fB\-l\fP option every time you add a todo. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type string .TP .B default None .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B dt_separator The string used to separate date and time when displaying and parsing. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type string .TP .B default .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B humanize If set to true, datetimes will be printed in human friendly formats like "tomorrow", "in on hour", "3 weeks ago", etc. .sp If false, datetimes fill be formatted using \fBdate_format\fP and \fBtime_format\fP\&. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type boolean .TP .B default False .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B path A glob pattern matching the directories where your todos are located. This pattern will be expanded, and each matching directory (with any icalendar files) will be treated as a list. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type string .TP .B default None .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B startable If set to true, only show todos which are currently startable; these are todos which have a start date today, or some day in the past. Todos with no start date are always considered current. Incomplete todos (eg: partially\-complete) # are also included. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type boolean .TP .B default False .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B time_format The date format used both for displaying times, and parsing input times. .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B type time_format .TP .B default %X .UNINDENT .UNINDENT .UNINDENT .UNINDENT .SS Sample configuration .sp The below example should serve as a reference. It will read ics files from any directory inside \fB~/.local/share/calendars/\fP, use the ISO\-8601 date format, and set the due date for new todos in 48hs. .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C [main] # A glob expression which matches all directories relevant. path = ~/.local/share/calendars/* date_format = %Y\-%m\-%d time_format = %H:%M default_list = Personal default_due = 48 .ft P .fi .UNINDENT .UNINDENT .SS Color and displayname .INDENT 0.0 .IP \(bu 2 You can set a color for each task list by creating a \fBcolor\fP file containing a colorcode in the format \fB#RRGGBB\fP\&. .IP \(bu 2 A file named \fBdisplayname\fP decides how the task list should be named. The default is the directory name. .UNINDENT .sp See also \fI\%this discussion about metadata for collections in vdirsyncer\fP\&. .SH USAGE .sp Todoman usage is \fI\%CLI\fP based (thought there are some TUI bits, and the intentions is to also provide a fully \fI\%TUI\fP\-based interface). .sp First of all, the classic usage output: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C $ todoman \-\-help Usage: todoman [OPTIONS] COMMAND [ARGS]... Options: \-v, \-\-verbosity LVL Either CRITICAL, ERROR, WARNING, INFO or DEBUG \-\-colour, \-\-color [always|auto|never] By default todoman will disable colored output if stdout is not a TTY (value \(gaauto\(ga). Set to \(ganever\(ga to disable colored output entirely, or \(gaalways\(ga to enable it regardless. \-\-porcelain Use a JSON format that will remain stable regardless of configuration or version. \-h, \-\-humanize Format all dates and times in a human friendly way \-\-version Show the version and exit. \-\-help Show this message and exit. Commands: cancel Cancel one or more tasks. copy Copy tasks to another list. delete Delete tasks. done Mark one or more tasks as done. edit Edit the task with id ID. flush Delete done tasks. list List tasks. move Move tasks to another list. new Create a new task with SUMMARY. show Show details about a task. .ft P .fi .UNINDENT .UNINDENT .sp The default action is \fBlist\fP, which outputs all tasks for all calendars, each with a semi\-permanent unique id: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C 1 [ ] !!! 2015\-04\-30 Close bank account (0%) 2 [ ] ! Send minipimer back for warranty replacement (0%) 3 [X] 2015\-03\-29 Buy soy milk (100%) 4 [ ] !! Fix the iPad\(aqs screen (0%) 5 [ ] !! Fix the Touchad battery (0%) .ft P .fi .UNINDENT .UNINDENT .sp The columns, in order, are: .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 An id. .IP \(bu 2 Whether the task has been completed or not. .IP \(bu 2 An \fB!!!\fP indicating high priority,\(ga\(ga!!\(ga\(ga indicating medium priority, \fB!\fP indicating low priority tasks. .IP \(bu 2 The due date .IP \(bu 2 The task summary .IP \(bu 2 The completed percentage .UNINDENT .UNINDENT .UNINDENT .sp The id is retained by \fBtodoman\fP until the next time you run the \fBflush\fP command. .sp To operate on a todo, the id is what’s used to reference it. For example, to edit the \fIBuy soy milk\fP task from the example above, the proper command is \fBtodoman edit 3\fP, or \fBtodoman undo 3\fP to un\-mark the task as done. .sp Editing tasks can only be done via the TUI interface for now, and cannot be done via the command line yet. .SS Synchronization .sp If you want to synchronize your tasks, you’ll needs something that syncs via CalDAV. \fI\%vdirsyncer\fP is the recommended tool for this. .SS Interactive shell .sp If you install \fI\%click\-repl\fP, todoman gets a new command called \fBrepl\fP, which launches an interactive shell with tab\-completion. .SS Integrations .sp When attempting to integrate \fBtodoman\fP into other systems or parse its output, you’re advised to use the \fB\-\-porcelain\fP flag, which will print all output in a pre\-defined format that will remain stable regardless of user configuration or version. .sp The format is JSON, with a single array containing each todo as a single entry (object). Fields will always be present; if a todo does not have a value for a given field, it will be printed as \fBnull\fP\&. .sp Fields MAY be added in future, but will never be removed. .SS Sorting .INDENT 0.0 .TP .B The tasks can be sorted with the \fB\-\-sort\fP argument. Sorting may be done according to the following fields: .INDENT 7.0 .IP \(bu 2 \fBdescription\fP .IP \(bu 2 \fBlocation\fP .IP \(bu 2 \fBstatus\fP .IP \(bu 2 \fBsummary\fP .IP \(bu 2 \fBuid\fP .IP \(bu 2 \fBrrule\fP .IP \(bu 2 \fBpercent_complete\fP .IP \(bu 2 \fBpriority\fP .IP \(bu 2 \fBsequence\fP .IP \(bu 2 \fBcategories\fP .IP \(bu 2 \fBcompleted_at\fP .IP \(bu 2 \fBcreated_at\fP .IP \(bu 2 \fBdtstamp\fP .IP \(bu 2 \fBstart\fP .IP \(bu 2 \fBdue\fP .IP \(bu 2 \fBlast_modified\fP .UNINDENT .UNINDENT .SH CONTRIBUTING .sp Bug reports and code and documentation patches are greatly appreciated. You can also help by using the development version of todoman and reporting any bugs you might encounter \fI\%here\fP\&. .sp All participants must follow the pimutils \fI\%Code of Conduct\fP\&. .sp Before working on a new feature or a bug, please browse existing issues to see whether it has been previously discussed. If the change in question is a bigger one, it’s always good to open a new issue to discuss it before your starting working on it. .SS Hacking .sp Runtime dependencies are listed in \fBsetup.py\fP\&. We recommend that you use virtualenv to make sure that no additional dependencies are required without them being properly documented. Run \fBpip install \-e .\fP to install todoman and its dependencies into a virtualenv. .sp We strictly follow the \fI\%Style Guide for Python Code\fP, which I strongly recommend you read, though you may simply run \fBflake8\fP to verify that your code is compliant. .sp Commits should follow \fI\%Git Commit Guidelines\fP whenever possible, including rewriting branch histories to remove any noise, and using a 50\-message imperative present tense for commit summary messages. .sp All commits should pass all tests to facilitate bisecting in future. .SS An overview of the Todo lifecycle .sp This is a brief overview of the life cycles of todos (from the apps point of view) as they are read from disk, displayed, and or saved again. .sp When the app starts, it will read all todos from disk, and initialize from the cache any further display (either \fBlist\fP, \fBshow\fP, \fBedit\fP, etc) is then done reading from the cache, which only contains the fields we operate with. .sp When a Todo is edited, the entire cycle is: .INDENT 0.0 .IP \(bu 2 File is read from disk and cached (if not already cached). .IP \(bu 2 A Todo object is created by reading the cache. .IP \(bu 2 If edition is interactive, show the UI now. .IP \(bu 2 No matter how the edition occurs, apply changes to the Todo object. .IP \(bu 2 Start saving process: * Read file from disk (as a VTodo object). * Apply changes from fields to the VTodo object. * Write to disk. .UNINDENT .sp The main goal of this is to simplify how many conversions we have. If we read from disk to the editor, we’d need an extra VTodo\->Todo conversion code that skips the cache. .SS Running and testing locally .sp The easiest way to run tests, it to install \fBtox\fP, and then simply run \fBtox\fP\&. By default, several python versions and environments are tested. If you want to run a specific one use \fBtox \-e ENV\fP, where \fBENV\fP should be one of the environments listed by \fBtox \-l\fP\&. .sp See the \fI\%tox\fP documentation for further details. .sp To run your modified copy of \fBtodoman\fP without installing it, it’s recommended you set up a virtualenv, and run \fBpip install \-e .\fP to install your checked\-out copy into it (this’ll make \fBtodo\fP run your local copy while the virtualenv is active). .SS Patch review checklist .sp Please follow this checklist when submitting new PRs (or reviewing PRs by others): .INDENT 0.0 .IP 1. 3 Do all tests pass? .IP 2. 3 Does the documentation build? .IP 3. 3 Does the coding style conform to our guidelines? Are there any flake8 errors? .IP 4. 3 Are user\-facing changes documented? .IP 5. 3 Is there an entry for new features or dependencies in \fBCHANGELOG.rst\fP? .IP 6. 3 Are you the patch author? Are you listed in \fBAUTHORS.rst\fP? .UNINDENT .sp \fIHint: To quickly verify the first three items run\fP \fBtox\fP\&. .SS Authorship .sp While authors must add themselves to \fBAUTHORS.rst\fP, all copyright is retained by them. Contributions are accepted under the ISC licence\&. .SH CHANGELOG .sp This file contains a brief summary of new features and dependency changes or releases, in reverse chronological order. .SS v3.5.0 .INDENT 0.0 .IP \(bu 2 Fix crashes due to API changes in icalendar 4.0.3. .IP \(bu 2 Dropped compatibility for icalendar < 4.0.3. .UNINDENT .SS v3.4.1 .INDENT 0.0 .IP \(bu 2 Support Python 3.7. .IP \(bu 2 Support click>=7.0. .IP \(bu 2 Properly parse RBGA colours. .UNINDENT .SS v3.4.0 .INDENT 0.0 .IP \(bu 2 Add \fB\-r\fP option to \fBnew\fP to read description from \fBstdin\fP\&. .IP \(bu 2 Add a dedicated zsh completion function. .IP \(bu 2 Lists matching is now case insensitive, unless there are multiple lists with colliding names, in which case those will be treated case\-sensitive. .IP \(bu 2 Fix some tests that failed due to test dependency changes. .UNINDENT .SS v3.3.0 .INDENT 0.0 .IP \(bu 2 New runtime dependency: \fBclick\-log\fP\&. .IP \(bu 2 Drop support for Python 3.3, which has reached its end of life cycle. .IP \(bu 2 Add \fI–raw\fP flag to \fIedit\fP\&. This allows editing the raw icalendar file, but \fBonly use this if you really know what you’re doing\fP\&. There’s a big risk of data loss, and this is considered a developer / expert feature! .UNINDENT .SS v3.2.4 .INDENT 0.0 .IP \(bu 2 Deploy new versions to PyPI using \fBtwine\fP\&. Travis doesn’t seem to be working. .UNINDENT .SS v3.2.3 .INDENT 0.0 .IP \(bu 2 Tests should no longer fail with \fBpyicu\fP installed. .IP \(bu 2 Improved documentation regarding how to test locally. .UNINDENT .SS v3.2.2 .INDENT 0.0 .IP \(bu 2 Initial support for (bash) autocompletion. .IP \(bu 2 The location field is not printed as part of \fB\-\-porcelain\fP\&. .UNINDENT .SS v3.2.1 .INDENT 0.0 .IP \(bu 2 Fix start\-up crash caused by click_log interface change. .IP \(bu 2 Dropped runtime dependency: \fBclick_log\fP\&. .UNINDENT .SS v3.2.0 .INDENT 0.0 .IP \(bu 2 Completing recurring todos now works as expected and does not make if disappear forever. .UNINDENT .SS v3.1.0 .INDENT 0.0 .IP \(bu 2 Last\-modified fields of todos are now updated upon edition. .IP \(bu 2 Sequence numbers are now properly increased upon edition. .IP \(bu 2 Add new command \fBtodo cancel\fP to cancel an existing todo without deleting it. .IP \(bu 2 Add a new setting \fBdefault_command\fP\&. .IP \(bu 2 Replace \fB\-\-all\fP and \fB\-\-done\-only\fP with \fB\-\-status\fP, which allows fine\-grained status filtering. Use \fB\-\-status ANY\fP or \fB\-\-status COMPLETED\fP to obtain the same results as the previous flags. .IP \(bu 2 Rename \fB\-\-today\fP flag to \fB\-\-startable\fP\&. .IP \(bu 2 Illegal start dates (eg: start dates that are not before the due date) are ignored and are removed when saving an edited todo. .UNINDENT .SS v3.0.1 .INDENT 0.0 .IP \(bu 2 Fix a crash for users upgrading from pre\-v3.0.0, caused due to the cache’s schema not being updated. .UNINDENT .SS v3.0.0 .SS New features .INDENT 0.0 .IP \(bu 2 Add a \fBtoday\fP setting and flag to exclude todos that start in the future. .IP \(bu 2 Add the \fB\-\-humanize\fP to show friendlier date times (eg: \fBin 3 hours\fP). .IP \(bu 2 Drop \fB\-\-urgent\fP and introduced \fB\-\-priority\fP, which allows fine\-filtering by priority. .IP \(bu 2 Add support for times in due dates, new \fBtime_format\fP setting. .IP \(bu 2 Use the system’s date format as a default. .IP \(bu 2 Add list selector to the interactive editor. .IP \(bu 2 Add \fB\-\-start=[before|after] [DATE]\fP option for \fBlist\fP to only show todos starting before/after given date. .IP \(bu 2 Add flag “–done\-only” to todo list. Displays only completed tasks. .IP \(bu 2 Make the output of move, delete, copy and flush consistent. .IP \(bu 2 Porcelain now outputs proper JSON, rather than one\-JSON\-per\-line. .IP \(bu 2 Increment sequence number upon edits. .IP \(bu 2 Print a descriptive message when no lists are found. .IP \(bu 2 Add full support for locations. .UNINDENT .SS Packaging changes .INDENT 0.0 .IP \(bu 2 New runtime dependency: \fBtabulate\fP\&. .IP \(bu 2 New runtime dependency: \fBhumanize\fP\&. .IP \(bu 2 New supported python version: \fBpypy3\fP\&. .IP \(bu 2 Include an alternative [much faster] entry point (aka “bin”) which we recommend all downstream packagers use. Please see the Notes for Packagers documentation for further details. .UNINDENT .SS v2.1.0 .INDENT 0.0 .IP \(bu 2 The global \fB\-\-verbosity\fP option has been introduced. It doesn’t do much for now though, because we do not have many debug logging statements. .IP \(bu 2 New PyPI dependency \fBclick\-log\fP\&. .IP \(bu 2 The \fB\-\-no\-human\-time\fP flag is gone. Integrations/scripts might want to look at \fB\-\-porcelain\fP as an alternative. .IP \(bu 2 Fix crash when running \fBtodo new\fP\&. .IP \(bu 2 Fixes some issues when filtering todos from different timezones. .IP \(bu 2 Attempt to create the cache file’s directory if it does not exist. .IP \(bu 2 Fix crash when running \fB\-\-porcelain show\fP\&. .IP \(bu 2 Show \fBid\fP for todos everywhere (eg: including new, etc). .IP \(bu 2 Add the \fBctrl\-s\fP shortcut for saving in the interactive editor. .UNINDENT .SS v2.0.2 .INDENT 0.0 .IP \(bu 2 Fix a crash after editing or completing a todo. .UNINDENT .SS v2.0.1 .INDENT 0.0 .IP \(bu 2 Fix a packaging error. .UNINDENT .SS v2.0.0 .SS New features .INDENT 0.0 .IP \(bu 2 New flag \fB\-\-porcelain\fP for programmatic integrations to use. See the \fBintegrations\fP section here for details. .IP \(bu 2 Implement a new configuration option: \fBdefault_due\fP\&. .IP \(bu 2 The configuration file is now pre\-emptively validated. Users will be warned of any inconsistencies. .IP \(bu 2 The \fBlist\fP command has a new \fB\-\-due\fP flag to filter tasks due soon. .IP \(bu 2 Todo ids are now persisted in a cache. They can be manually purged using \fBflush\fP\&. .UNINDENT .SS Packaging changes .INDENT 0.0 .IP \(bu 2 New runtime dependency: configobj .IP \(bu 2 New runtime dependency: python\-dateutil .IP \(bu 2 New test dependency: flake8\-import\-order. .UNINDENT .SH LICENSE .sp Todoman is licensed under the ISC licence:: (see /usr/share/doc/todoman/copyright for complete text) .INDENT 0.0 .IP \(bu 2 genindex .IP \(bu 2 modindex .IP \(bu 2 search .UNINDENT .SH AUTHOR Hugo Osvaldo Barrera .SH COPYRIGHT 2015-2018, Hugo Osvaldo Barrera .\" Generated by docutils manpage writer. .