Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python.announce > #4361

[Python-announce] Subject: [ANN] tklr — local, keyboard-first tickler file (0.0.51)

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Daniel Graham <dnlgrhm@gmail.com>
Newsgroups comp.lang.python.announce
Subject [Python-announce] Subject: [ANN] tklr — local, keyboard-first tickler file (0.0.51)
Date Sat, 14 Feb 2026 15:33:02 -0500
Lines 42
Approved python-announce-list@python.org
Message-ID <DAF2DE03-C53C-4FA0-BECD-548B2995BA48@gmail.com> (permalink)
Reply-To python-list@python.org
Mime-Version 1.0 (Mac OS X Mail 16.0 \(3864.300.41.1.7\))
Content-Type text/plain; charset=us-ascii
Content-Transfer-Encoding quoted-printable
X-Trace news.uni-berlin.de 30VAhpvJfLFuGqicVXdZmAYhGT8Up/XOvS5Au3p/QuCA==
Cancel-Lock sha1:0yqfQR5JTK3vPRm2m5Ok8Ah6HXY= sha256:J426X8A0AqaSOXDtulVQdvq6i07lIij8yZXpFbINBkA=
Delivered-To python-announce-list@x.python.org
Authentication-Results mail.python.org; dkim=pass reason="2048-bit key; unprotected key" header.d=gmail.com header.i=@gmail.com header.b=jpm+eyXQ; dkim-adsp=pass; dkim-atps=neutral
X-Spam-Status OK 0.011
X-Spam-Evidence '*H*': 0.98; '*S*': 0.00; 'projects,': 0.03; 'pip': 0.04; 'subject:first': 0.09; 'tasks,': 0.09; 'to:addr:python- announce-list': 0.09; 'url:master': 0.09; 'announce': 0.15; 'url- ip:140/8': 0.15; 'classic': 0.16; 'fri': 0.16; 'inspired': 0.16; 'license:': 0.16; 'notes,': 0.16; 'prompts': 0.16; 'received:apple': 0.16; 'received:smtpclient.apple': 0.16; 'scheduling': 0.16; 'subject:ANN': 0.16; 'subject:local': 0.16; 'textual': 0.16; 'url:project': 0.16; 'url:pypi': 0.16; 'github': 0.17; 'url-ip:140.82/16': 0.17; 'subject:] ': 0.18; 'message- id:@gmail.com': 0.18; 'subject:: [': 0.19; 'subject:file': 0.22; 'install': 0.23; 'url:github': 0.23; 'views': 0.23; 'local': 0.27; 'discussions': 0.32; "i'm": 0.32; 'received:google.com': 0.34; 'from:addr:gmail.com': 0.35; 'url-ip:151.101.0.223/32': 0.37; 'url-ip:151.101.128.223/32': 0.37; 'url-ip:151.101.192.223/32': 0.37; 'url-ip:151.101.64.223/32': 0.37; 'example': 0.37; 'file': 0.38; 'hello,': 0.39; 'url-ip:185.199.108.153/32': 0.39; 'url- ip:185.199.108/24': 0.39; 'url-ip:185.199/16': 0.39; 'forms': 0.40; 'daniel': 0.61; 'skip:k 10': 0.64; 'email': 0.64; 'pleased': 0.67; 'live': 0.68; 'contact:': 0.70; 'links:': 0.76; 'subjectcharset:utf-8': 0.80; 'local,': 0.84; 'navigation': 0.84; 'reminders': 0.84; 'type,': 0.84; 'url:demo': 0.84; 'flexible': 0.91; 'goals,': 0.91; 'priority.': 0.91; 'goals': 0.96
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771101214; x=1771706014; darn=python.org; h=to:date:message-id:subject:mime-version:content-transfer-encoding :from:from:to:cc:subject:date:message-id:reply-to; bh=MLgm5vmGIz/Q+BXacjujVmVdKCOlMyYmBOt7GkJRS8o=; b=jpm+eyXQ1LPljXcwMI2CDIGf3bF1YvSfV/VNb1Yt8Fg9oj/vh3PUTQ4Ooe1ujcAPbK EIAb3rbjes0/dLVeOOJu+pGjQ01r99vnAL6DlCMFklmPzW+S2cmbizMah+NRk1Oc+EGL Kx5edbtv0fHgI+X3A2C0NX0GBDIHyahClf1ZPKtECqx/oJsI9HX1pqDag+nwpoaymzAb uVbaEfV1FleDc4sgZAZ38IAEUJ/iYm3adOHkcEjK6GS56xMS+e9j3I09CyV77HbtIpRQ 6L65WO9tsREbUKQN7Kbn3/UZTxozIz6iYkGDV6/x/RKLAgT/RwpBb77h+IlbxYKm9L6n pG4A==
X-Google-DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771101214; x=1771706014; h=to:date:message-id:subject:mime-version:content-transfer-encoding :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MLgm5vmGIz/Q+BXacjujVmVdKCOlMyYmBOt7GkJRS8o=; b=amX+6ekUs5pceEY9MQQpf4rCxtrLWFKLE6IGyZM9UBbWHj5NR9MA4gS3oHb6GmHWeJ Hmon/V0dh2SuUmATi9BFHct8eVI7I+VwZdU2tMqVApkNKr/8y85MLhC2eTA0sSclSsvr rk6LvV4thsOiQyvGWBveGO/1gQFUN5aKmrmx8EKCBDCQYmiE3sRXYsBVlcDjh0FOPQ57 NBNErZz86cAwfDM1LiD3jtd3VxLcewHG5f5WUYnIvfyDwC2NaAE2SE7yLWjv8A3WJnSd aa86oJubqkUzBLnRwrKh/kDlmL2PvqSJBfrH5itbTXs1uwHzxUiQtcd7Xwmha9GEHGD+ flKQ==
X-Gm-Message-State AOJu0YwJSOUUuWFLATtcGGdaZMJyDgS71UguyRZwG4N9jnhTon0yFVCM lokUzr4cfCAQcck74u7qLzl+Xx5R53YSX0ux4aH3l6P4klDe+LAuZ0ERz3sSNPln
X-Gm-Gg AZuq6aIG0TkPqpn7kWaOe/M+iUpDYcVlqmR5iJXeI6xS5uIAYjPCXY5e7C79CxtQfon Tkl79UZ2S5MU5c+kEuPMQCjD0ipfiKsTOj0pWQ3qCvFjkymiHqV3s9Mq4y/4h2rAnT9YniPB6Y0 DgT068GeGGG9jmIxAm4vzCV3Eqx6MySIEo7b2gOFJ8KM26gEIavFt4AnNKOqYTSO1eIn+rTQyhM 6t6XgVJtFZ6GdJe0AD7H6TaqpkC8icl3Yifku/jTppvWlEqbk5P4bmGbYYSel0Qm1QhkcIOqruC SwBwBcHt1h/IuM3n4znOpxRvH6lpHqv5EksjTpvsRqaweIn0ViBZSpuBhNLbHv6X+tP2s2I/OU4 z0TT9sMDowjEDiRY5Ax37k5yM55mPvcjxXcTmGUbEC1rDFrNtnTU9gUUSGvg54x+DJG99JWfXHT V/qLEz5fSAbIyGUUIUYzJQZROitfS30e6Rz7I1VZTIvR2wRB8hzA381Fia1vWkBsB6JkyHEkSGp xMWQ8lyKIZaooc=
X-Received by 2002:a05:690c:62c1:b0:795:e46:4eef with SMTP id 00721157ae682-797aa6d8419mr39831097b3.0.1771101213804; Sat, 14 Feb 2026 12:33:33 -0800 (PST)
X-Mailer Apple Mail (2.3864.300.41.1.7)
X-MailFrom dnlgrhm@gmail.com
X-Mailman-Rule-Hits emergency
X-Mailman-Rule-Misses dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-python-announce-list.python.org-0; header-match-python-announce-list.python.org-1; header-match-python-announce-list.python.org-2; header-match-python-announce-list.python.org-3; header-match-python-announce-list.python.org-4
Message-ID-Hash BTNF6FASFPZLZVQL5I36PYH6QWBN2HAF
X-Message-ID-Hash BTNF6FASFPZLZVQL5I36PYH6QWBN2HAF
X-Mailman-Approved-At Sat, 14 Feb 2026 15:39:04 -0500
X-Mailman-Version 3.3.11b1
Precedence list
List-Id Announcement-only list for the Python programming language <python-announce-list.python.org>
Archived-At <https://mail.python.org/archives/list/python-announce-list@python.org/message/BTNF6FASFPZLZVQL5I36PYH6QWBN2HAF/>
List-Archive <https://mail.python.org/archives/list/python-announce-list@python.org/>
List-Help <mailto:python-announce-list-request@python.org?subject=help>
List-Owner <mailto:python-announce-list-owner@python.org>
List-Post <mailto:python-announce-list@python.org>
List-Subscribe <mailto:python-announce-list-join@python.org>
List-Unsubscribe <mailto:python-announce-list-leave@python.org>
Xref csiph.com comp.lang.python.announce:4361

Show key headers only | View raw


Hello,

I'm pleased to announce tklr, a local reminder system inspired by the
classic tickler file. You enter reminders in plain text; tklr parses
dates, recurrence, and metadata as you type, then ranks tasks by urgency
and goals by priority.

Highlights:
- Form-free entry with live prompts (no forms to fill)
- CLI and Textual UI with mouse-free navigation
- Multiple reminder types: events, tasks, projects, goals, notes, jots,
  drafts
- Flexible scheduling with fuzzy dates, recurrence, and time zones
- Organized views (Agenda, Next/Last, Queries, bins, hashtags)

Install:
pip install -U tklr-dgraham
pipx install tklr-dgraham

Example entry:
* lunch with Ed @s 12p fri @e 1h30m @a 15m: n

Links:
PyPI: https://pypi.org/project/tklr-dgraham/
GitHub: https://github.com/dagraham/tklr-dgraham
Docs: https://dagraham.github.io/tklr-dgraham/
Demo: https://raw.githubusercontent.com/dagraham/tklr-dgraham/master/screenshots/demo.gif

License: GPL-3.0-or-later
Version: 0.0.51
Contact: Daniel Graham <dnlgrhm@gmail.com>
Follow-ups: GitHub Discussions or email

<P><A HREF="https://dagraham.github.io/tklr-dgraham/">tklr 0.0.51</A> -
local, keyboard-first tickler file reminder system with CLI and Textual
UI. (14-Feb-26)

Daniel Graham

Back to comp.lang.python.announce | Previous | Next | Find similar


Thread

[Python-announce] Subject: [ANN] tklr — local, keyboard-first tickler file (0.0.51)  Daniel Graham <dnlgrhm@gmail.com> - 2026-02-14 15:33 -0500

csiph-web