Skip to main content

Show tasks with @due tags from Markdown files

Project description

due – Tasks with @due tags from Markdown files

A terminal CLI that scans Markdown files for tasks carrying a @due(...) tag and presents them in an interactive fuzzy finder. Select a task to open the file at the exact line in your editor.

Python License PyPI

Termplate Logo

Table of Contents

Features

  • Fuzzy finder – interactive search across all tasks powered by InquirerPy
  • Two views – grouped by file (default) or flat list sorted by due date
  • Urgency indicators – overdue tasks are prefixed with !!! , tasks due today with !
  • Flexible filtering – include undated tasks, closed tasks, or filter to overdue / today / future only
  • Jump to line – opens the selected file at the exact task line in your editor
  • Path argument – pass any directory to scan instead of the current working directory
  • Zero-config start – works out of the box with nvim; one-line config to change the editor

Planned features

  • Support for additional tag formats
  • Multiple path arguments
  • Config option for custom date formats

Motivation & Mission

Most task managers pull you away from the files where the work actually lives. due stays out of the way: your tasks remain plain Markdown, your editor stays your editor. due just surfaces what needs attention and gets you to the right line in one keypress.

Installation

Requirements

See pyproject.toml.

Installation via pip

pip install pydue

due on PyPI

Installation from Source

  1. Clone this repository:

    git clone https://github.com/cgroening/due.git
    cd due
    
  2. Install the package to make the due command available globally:

    uv pip install .
    

Alternatively, due can be run without installation from the project root:

python -m due

Configuration

Create ~/.config/due/config.yaml. The file is optional – without it due falls back to nvim (or the $EDITOR environment variable).

editor: nvim

Configuration Options

Option Type Required Description Default
editor string No Editor command used to open files nvim

Usage

Basic Usage

due                   # grouped by file, @due tasks only, open tasks only
due ~/notes           # scan ~/notes instead of the current directory

Task Format

due recognises standard Markdown checkboxes with a @due(...) tag:

- [ ] Write release notes @due(2025-05-01)
- [ ] Review PR @due(2025-04-20)
- [x] Deploy to staging @due(2025-04-15)

Supported status characters: [ ] open, [x] done, [c] / [/] cancelled.

Command Line Commands and Options

due [PATH] [OPTIONS]
due list [PATH] [OPTIONS]
Option Short Description
--sort-by-date -s Flat list sorted by due date (oldest first) instead of grouped by file
--include-undated -u Include tasks that have no @due tag
--include-closed -c Include completed [x] and cancelled [c] tasks
--due-filter INT -d Show only: -1 overdue, 0 today, 1 future

Examples:

due                            # grouped by file, @due tasks, open only
due --sort-by-date             # flat list sorted by date (oldest first)
due --include-undated          # also show tasks without @due
due --include-closed           # also show [x] and [c] tasks
due --due-filter -1            # only overdue tasks
due --due-filter 0             # only tasks due today
due --due-filter 1             # only future tasks
due list --sort-by-date -u     # explicit list subcommand with flags
due ~/notes --sort-by-date     # scan a specific directory

Without Installation

python -m due

License

This project is licensed under the MIT License – see the LICENSE file for details.

Acknowledgments

  • Rich – Rich text and beautiful formatting in the terminal
  • InquirerPy – Fuzzy finder and interactive prompts
  • Typer – CLI framework based on Python type hints

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydue-0.1.0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydue-0.1.0-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file pydue-0.1.0.tar.gz.

File metadata

  • Download URL: pydue-0.1.0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pydue-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bd2b5ea0495ff1eaf192ba9e2cc8534c623969ac2d7f4302ee9094b653c2331f
MD5 9b554666f6910ec9fc66026af8047e99
BLAKE2b-256 7a474264eeccad49de9b4811d373c5ae85f20a21d7cd77b5fb7f1cdb0bf9dfe5

See more details on using hashes here.

File details

Details for the file pydue-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pydue-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pydue-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 207bb05d8e48b682d0946e2f2dff401859b17bbf3efe6bcd242775dc945d0041
MD5 db5b23781a3304bcaada3babfaa045be
BLAKE2b-256 4a09b58b6d6d7e22c0389ce78eac1c16c0558f411f4d61bcd9a153df951a35da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page