From acd7639acb72688637b83ed46bcfb4431cadc69e Mon Sep 17 00:00:00 2001 From: xerus2000 <27jf@pm.me> Date: Sat, 26 Sep 2020 21:55:58 +0200 Subject: [PATCH] Specify custom id algorithm --- concepts.md | 13 +++++++++++++ ids.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ plans.md | 4 ++-- 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 concepts.md create mode 100644 ids.md diff --git a/concepts.md b/concepts.md new file mode 100644 index 0000000..583da0a --- /dev/null +++ b/concepts.md @@ -0,0 +1,13 @@ +All task managers I have seen so far were quite opinionated. Since task management is a deeply personal matter, this likely yields many people to abandon these digital tools not long after embracing them. +To build trust in the system, it needs to be your system. + +So the foundational principle of this task manager is to rely as little as possible on special mechanics, implementing all convenience behavior and specialized features in a generalized way, allowing to easily compose and customize them. +The + +``` +[tag] + big=size:l + break=size:s -pc + + +``` diff --git a/ids.md b/ids.md new file mode 100644 index 0000000..8a1f200 --- /dev/null +++ b/ids.md @@ -0,0 +1,51 @@ +# User-Ids + +One important concept is to identify tasks effortlessly with recognizable, consistent alphabetical ids. +To distinguish them clearly from the unique ids (uuid/ulid) and potential ids of the plumber, they will henceforth be called user-ids. + +These ids are always lowercase. +Note that they only have to unique among open tasks. Closed tasks loose their userid and will have a new one generated should they be reactivated. + +1. Generate an index of the task description: An array of all uppercase letters and initials. +2. If there is a parent task with a user-id, take its first letter as start of the id. Remove the first letter of the index if it is identical. +3. Find consecutive letters (preferably among the uppercase letters) in the index that yield a unique id with a length of 2-3. +4. Take up to 3 letters of the description and see if they create a unique id. +5. Otherwise, find a random combination of 2-3 characters that isn't used yet. + +Example: + + Configure my ArchLinux properly + +Index: + + CmALp + +Generated ids, in order: + + ca + al + cal + + cm + ma + lp + cma + mal + alp + + co + con + +If there is a parent with the id `c`: + + ca + cl + cal + + cm + cp + + co + con + +Taskwarrior UDA: userid diff --git a/plans.md b/plans.md index 9d8a7b8..0d0e1e8 100644 --- a/plans.md +++ b/plans.md @@ -33,7 +33,7 @@ Maybe prefix internal values (ulid and state) with underscore. Does no interpret ## The task manager - [porcelain][plumbing] -Name ideas: Taskforc/Tofo +Name ideas: Taskforc/Tafo Basically a parser & visualizer with a few quirks. @@ -41,7 +41,7 @@ Unknown commands are passed on to the plumber with potential parameter modificat Reports & parameter configurations should support some kind of inheritance, i.e. allowing to create a new property/report that initially uses all values from its ancestor. -Automatically generates short ids for new tasks based on description - first initials, then following letters in case of collisions (e.g. "al" for "Arch Linux setup"), length may depend on whether there is a parent (root tasks get single letter if possible) unless an id is explicitly set. +Automatically generates short user-ids for new tasks based on description - first initials, then following letters in case of collisions (e.g. "al" for "Arch Linux setup"), length may depend on whether there is a parent (root tasks get single letter if possible) unless a user-id is explicitly set. ### Commands