This often isn't the right thing to do. It's especially
counter-productive in the while viewing the "Project" tag -- new
sub-tasks in projects are not themselves Projects.
Scott Worley [Wed, 9 Feb 2022 19:48:21 +0000 (11:48 -0800)]
Invert priorities
Making "high" priorities low numbers was a mistake.
1. Things that come freshly to attention are much more often among the
highest priority things and are very rarely lower priority that
everything else being tracked.
2. Logging the completion of an already-done task, a task that was *so*
high-priority that it was completed before even being tracked here,
feels bad when it ends up initially marked as lowest-priority-ever
unless some additional action is taken.
3. Marking a new task highest-ever-priority is fairly common and
oughtn't cost two log entries.
4. All the high priority tasks ever tracked oughtn't be fighting over
the smallest-representable IEEE floating point values, as they all
try to get slightly closer to zero. When highest-priority is now(),
these tasks get nicely spread out over the keyspace. This helps with
* keeping priority values integer-rounded, which helps with
* serialized log size
* log parsing simplicity (clients needn't support scientific notation)
* preventing underflow
* making the priority-sorted 'done' views be not-completely-useless
as all the tasks that have ever been high-priority get haphazardly
interleaved near zero. Instead, it becomes almost chronological.
This change does rather a lot of violence to current users of this tool,
inverting their displayed task list order & making no provision
whatsoever for gentle migration across this change of an implementation
detail. This is fine, because there's still only one user of this tool:
the author. Breaking changes like this will not be tolerated after
deployment.
Scott Worley [Fri, 28 Jan 2022 06:24:42 +0000 (22:24 -0800)]
"sm" and "vsm" for someday-*maybe*, rather than just "s"
The "maybe" in "someday-maybe" feels really important. It feels
importantly different than "someday". It definitely feels worth the
extra keystrokes & extra keystroke state logic.
Scott Worley [Thu, 27 Jan 2022 20:52:53 +0000 (12:52 -0800)]
Keep description in its own span
Tags broke task.textContent being an easy way to get the task
description, which editTask was using. This restores neatness & fixes a
bug in which tag names were slurped into the edit-task buffer.
Scott Worley [Thu, 27 Jan 2022 08:36:25 +0000 (00:36 -0800)]
Don't select-all the task description when beginning editing
I find that
* most edits are more gentle than complete replacement
* I consistently reach for the "end" key to begin editing
* If I want complete replacement, ^A is easier to type than "end"
Scott Worley [Thu, 27 Jan 2022 06:33:53 +0000 (22:33 -0800)]
Use a monotonic clock
Generally assume that clock values always increase to simplify reasoning
everywhere clock values are used. Then enforce that assumption.
Clock values don't really, truly always go up because page reloads &
multiple devices, but since I'm not currently planning to spend the
effort that would be required to perfectly handle this in all cases,
making it happen in fewer cases is a win (rather than just making bugs
I want to fix harder to reproduce).
Scott Worley [Thu, 27 Jan 2022 06:17:43 +0000 (22:17 -0800)]
Explicitly remove the completeEdit onblur event listener
When the completeEdit is invoked by keystroke, we don't want it invoked
a second time as a result of its own action removing the input field.
Firefox does *not* call the "blur" event when a focused input element is removed.
Chromium *does* call the "blur" event when a focused input element is removed.