From c9eb188e0530634ac7487f63b1a51a1e033f180f Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Mon, 27 Apr 2026 11:49:46 -0700 Subject: [PATCH] =?UTF-8?q?C0:=20blumeops-tasks=20=E2=80=94=20replace=20am?= =?UTF-8?q?biguous=20due:+N=20with=20"Nd=20overdue"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The signed offset format read as "due in 5 days" rather than "5 days overdue", causing misreads. Switch to self-explanatory text: "5d overdue" / "due in 2d" / "due today". Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/changelog.d/+blumeops-tasks-due-recurrence.feature.md | 2 +- mise-tasks/blumeops-tasks | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/changelog.d/+blumeops-tasks-due-recurrence.feature.md b/docs/changelog.d/+blumeops-tasks-due-recurrence.feature.md index 3d00e1c..83072dd 100644 --- a/docs/changelog.d/+blumeops-tasks-due-recurrence.feature.md +++ b/docs/changelog.d/+blumeops-tasks-due-recurrence.feature.md @@ -1 +1 @@ -`blumeops-tasks` now annotates each task with a signed `due:±N` offset (or `due:today`) and a `↻ ` marker for recurring tasks, and sorts by overdue-ness (most overdue first, no-due-date last) with priority as tiebreaker. +`blumeops-tasks` now annotates each task with a human-readable due offset (`5d overdue` / `due in 2d` / `due today`) and a `↻ ` marker for recurring tasks, and sorts by overdue-ness (most overdue first, no-due-date last) with priority as tiebreaker. diff --git a/mise-tasks/blumeops-tasks b/mise-tasks/blumeops-tasks index 1c41dea..e07e9bf 100755 --- a/mise-tasks/blumeops-tasks +++ b/mise-tasks/blumeops-tasks @@ -189,7 +189,12 @@ def main() -> int: meta = [] days = days_until_due(task) if days is not None: - meta.append(f"due:{days:+d}" if days != 0 else "due:today") + if days == 0: + meta.append("due today") + elif days > 0: + meta.append(f"{days}d overdue") + else: + meta.append(f"due in {-days}d") recurrence = recurrence_string(task) if recurrence: meta.append(f"↻ {recurrence}")