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

Screenshot

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.1.tar.gz (19.3 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.1-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pydue-0.1.1.tar.gz
  • Upload date:
  • Size: 19.3 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.1.tar.gz
Algorithm Hash digest
SHA256 838682a2000e764403d665414ff9ac471712cb9de267fffea68f3fa07834f98c
MD5 dc3537597f4441ba39c25b8d1442b42b
BLAKE2b-256 1b78f5b03743b9f2a67574dec9df1eb9d87b6ec7ee5b23d4cbeca154fbb08445

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pydue-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 37fff759429d6d7e9154ffe371fae06e562f7bccb9ed1c49b74e70b7e6d79324
MD5 63ee091daba375bfd261222ecef6e568
BLAKE2b-256 f01295db46a3430ce229ed9e0ed2f660469d070f5c40f16307dba29be1db0025

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