Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Changelog

This document lists all notable changes to the functionality of TaskLite.



Unreleased

💻 General

  • Add tl history [--by day|week|month|year] [FILTER_EXP…] to show the number of added and closed tasks per period (default: week) as a table with a bar graph (similar to Taskwarrior’s history and ghistory reports).
  • Add tl ulids [FILTER_EXP…] to print only the ULIDs of matching tasks (one per line, e.g. for piping into other commands).
  • Support descriptions for tags via tl describetag <tag> <description> and tl deletetagdescription <tag>. They are stored in the new tags table and shown by tl tags and tl projects.
  • Breaking: Rename the tags view to tags_view (the name tags is now used by the new table) and add a description column to it.
  • Add a --utc flag to tl do, tl doonly, tl doall, tl end, and tl endall to set an explicit closing timestamp instead of the current time (e.g. tl do <id> --utc "2020-01-15 08:30:00").
  • Add task dependency support via blocks / unblocks subcommands and blocks:<id> / blocked-by:<id> body tokens for tl add (#14). The new task_to_task table can carry arbitrary relation types; only blocks is wired up in the CLI for now. tasks_view exposes blockers and blocked JSON-array columns. tl do / tl end / tl trash refuse to close a task while at least one of its blockers is still open.
  • Delete a task from within tl edit by setting state: x.
  • Existing tags and notes can now be edited and removed in tl edit (and in the editor of the Thunderbird add-on).
  • Rewrite the email (.eml) importer to properly support MIME: Multipart emails, quoted-printable and base64 encodings, charsets, encoded words in headers (e.g. non-ASCII subjects), and HTML-only emails, which are converted to plain text. The task body now consists of the subject and the text content, instead of the raw undecoded email body followed by the subject. The cc header is now stored in the metadata.
  • Add a Thunderbird add-on to import emails via their context menu and optionally edit the new task right away. The time of adding is stored in the metadata field addedUtc (#130).
  • Add tl nativehost install and tl nativehost run commands to use TaskLite as a native messaging host for add-ons.

2025-07-26 - 0.5

💻 General

  • Add new subcommand enter to open the default editor with an empty task (09df546)
  • Add support for importing YAML files (e5287d2) and Markdown files (87d5ae5)
  • Use Markdown with frontmatter instead of YAML for editing tasks (a22079d)
  • Add config field to select visible table columns and their order (9cbdaf5)
  • Add support for new Age column that shows the age of a task in a human readable fuzzy way (9cbdaf5)
  • Extend random subcommand to accept an optional filter expression (3d89593)
  • Support filters with open command, get returns any state again (3be80d2)
  • Improve results of fuzzy search (b9fcbe1)
    • Score continuous matches higher
    • Weight body score higher
    • Increase necessary minimum score
    • Always include the body in result output
  • Adapt the printed tasks count to the available terminal lines count (c3c740d)
  • Only show first line of multi-line tasks in task listings (2b9249a)
  • Add support for --no-color flag and NO_COLOR env variable (6d91299)
  • Add ARM builds to GitHub Action artifacts for macOS (2c88eb7) and for Linux (b6a814f)

🩹 Fixes

  • Correctly apply the maxWidth setting from the config (ce8dddd)
  • Fix execution of pre-modify hook (340d3a2)
  • Show warning if there are no tags or projects defined yet (02448be)
  • Include notes when exporting tasks as ndjson (2bd11a1)
  • Correctly handle recurring tasks without a due date (7ddddf5)
  • Make state matching in filter expressions case insensitive (9f4cf31)
  • Update ready state to match documentation. (2935a99)

🌐 Webapp

  • Set correct state when closing a task (2f3febc)

📚 Documentation

  • Add documentation on how to list and filter tasks (506d29e)
  • Explain handling of time and date (283471a)
  • Fix documentation for query command (081d3a7)
  • Fix installation instructions (d7ceb39)
  • Add note taking apps to related page (5d0eace)
  • Add taskfinder (cea4447) and Topydo to related.md (3de5f8e)

2024-09-23 - 0.4

💻 General

  • Add simple webapp powered by elm.land
  • Add support for hooks to execute code during a task’s lifecycle (ba2054b)
  • Set text color according to current background color (1d9ae64)
  • Add support for recurring tasks (8028190)
  • Add support for external CLI commands (9cb8fa3)
  • Use .yaml extension for edit to have syntax highlighting (10e1e52)
  • Support the full ISO8601 duration syntax everywhere (8df1c65)
  • Add support for filter expressions to sub-command new (9ab3992)
  • Improve design of detail view (used by “info” & “next” commands) (c32be9f)
  • Extend and restructure the documentation
  • Webapp: Show selected tags in header (ff1bf2e)
  • Edit mode: If parsing fails, re-open editor with modified content (2b5a0e1)
  • Improve import of user, title, labels fields (needed for importing GitHub issues) (af51aaa)

✨ New Subcommands

  • stats - List share of Done, Obsolete, Deletable tasks (c2a2d70)
  • server - Starts an API + GraphQL server powered by AirGQL (4669498)
  • random - Show a random task (88a999d)
  • deletetag (d3ab4de)
  • deletenote (581ffae)
  • json - Show tasks in JSON format (45ad3f3)
  • reviewin - Set review date in x days (b05c81a)
  • idea - Quickly capture ideas (6545500)
  • modified - List all tasks by modified UTC desc (71e4603)
  • modifiedonly - List tasks where modified UTC /= creation UTC by modified UTC desc (4809d5b)
  • notes - List all notes descending by creation UTC (81e6885)
  • recurring - List recurring tasks (0c11309)
  • ingest - Runs import -> edit -> delete workflow on files (325e0ac)
  • importdir - Import all .json and .eml files in a directory (4c3c50a)
  • ingestdir - Ingest all .json and .eml files in a directory (4c3c50a)
  • endall - End all provided tasks (change end to accept a closing note) (4d2032e)
  • unrecur - Remove recurring timestamp (2ee1c21)
  • unwake - Remove awake timestamp (987a4fe)
  • unready - Remove ready timestamp (987a4fe)
  • unreview - Remove review timestamp (1d82631)

📥 Import

  • Add support for importing .json and .eml files (8a821de)
  • Support list of strings as notes in JSON import (d07a328)
  • Add support for parsing unix timestamps with 10, 13, and 16 digits (ce0392d)
  • Add support for milliseconds in UTC timestamps (2e580ba)
  • Use timestamp of parent task for imported tags and notes (ac15d47)
  • Make it more robust (works with a larger variety of files now)

Check out the commit history for all changes.

2020-03-01 - 0.3

  • Add edit command to edit YAML version of task in $EDITOR (1add89e)
  • Add several un* commands to erase fields (0f09c3d)
  • Only execute trigger to set closed_utc after state changed (395a8e0)
  • Show descriptive variable names in brief help text (10f8cf6)
  • Hide aliases from main help (c52df72)
  • Display alias errors even with sub-arguments (c52df72)
  • Fix parsing of timestamp part in ULIDs for small timestamp values (258df47)
  • Also display full version slug with tl version (0c292d1)
  • Remove unnecessary import logging (c04b894)
  • Add git hash to the version string (5f7b1ef)
  • Create config directory if it does not exist (8d0657c)

2019-10-04 - 0.2.2

  • Support optional filter expression after “count” command (61e87b7)
  • Automatically create a config file if it doesn’t exist (7407f87)

2019-07-14 - 0.2.1

  • Fix creation of Docker image, extend documentation accordingly (fa4cad3)

2019-06-13 - 0.2

  • Initial release