]> git.scottworley.com Git - vopamoi/log
vopamoi
2 years agoDisallow all-spaces task descriptions and tag-names
Scott Worley [Thu, 27 Jan 2022 23:37:51 +0000 (15:37 -0800)]
Disallow all-spaces task descriptions and tag-names

2 years agoDon't listen for keystrokes until log replay is done
Scott Worley [Thu, 27 Jan 2022 23:32:16 +0000 (15:32 -0800)]
Don't listen for keystrokes until log replay is done

2 years agoProvide a visual indicator of the current view-state
Scott Worley [Thu, 27 Jan 2022 23:27:19 +0000 (15:27 -0800)]
Provide a visual indicator of the current view-state

h/t https://css-tricks.com/body-border/

2 years agoKeep tags visually associated with their task
Scott Worley [Thu, 27 Jan 2022 23:05:50 +0000 (15:05 -0800)]
Keep tags visually associated with their task

If a task's tags line-wrap, the shouldn't go into the next task's space.

2 years agoKeep tags sorted
Scott Worley [Thu, 27 Jan 2022 21:34:30 +0000 (13:34 -0800)]
Keep tags sorted

2 years agoColor tags
Scott Worley [Thu, 27 Jan 2022 21:24:18 +0000 (13:24 -0800)]
Color tags

2 years agoKeep description in its own span
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.

2 years agoDo more filtering in faster browser-native code
Scott Worley [Thu, 27 Jan 2022 20:45:58 +0000 (12:45 -0800)]
Do more filtering in faster browser-native code

2 years agoThe tag-input box appearing should not move other tasks' tags around
Scott Worley [Thu, 27 Jan 2022 20:40:30 +0000 (12:40 -0800)]
The tag-input box appearing should not move other tasks' tags around

2 years agoFix: Escape aborts tagging
Scott Worley [Thu, 27 Jan 2022 20:26:23 +0000 (12:26 -0800)]
Fix: Escape aborts tagging

2 years agoDisallow empty-string as a tag name
Scott Worley [Thu, 27 Jan 2022 20:13:49 +0000 (12:13 -0800)]
Disallow empty-string as a tag name

2 years agoUse previous tag name as default new tag name
Scott Worley [Thu, 27 Jan 2022 20:10:11 +0000 (12:10 -0800)]
Use previous tag name as default new tag name

This makes tagging a bunch of tasks with the same tag easier.

2 years agoDon't create duplicate tags; Tagging is idempotent
Scott Worley [Thu, 27 Jan 2022 20:02:27 +0000 (12:02 -0800)]
Don't create duplicate tags; Tagging is idempotent

2 years agoDon't attempt to create duplicate tags
Scott Worley [Thu, 27 Jan 2022 19:59:03 +0000 (11:59 -0800)]
Don't attempt to create duplicate tags

2 years agoAdd tags
Scott Worley [Thu, 27 Jan 2022 19:57:00 +0000 (11:57 -0800)]
Add tags

2 years agoAvoid children[0]
Scott Worley [Thu, 27 Jan 2022 19:41:01 +0000 (11:41 -0800)]
Avoid children[0]

2 years agoSort log apply actions
Scott Worley [Thu, 27 Jan 2022 19:40:09 +0000 (11:40 -0800)]
Sort log apply actions

2 years agoUse classList to set class
Scott Worley [Thu, 27 Jan 2022 19:12:40 +0000 (11:12 -0800)]
Use classList to set class

2 years agoChange "todo" view key "t" -> "q" ("queue")
Scott Worley [Thu, 27 Jan 2022 19:06:48 +0000 (11:06 -0800)]
Change "todo" view key "t" -> "q" ("queue")

2 years agoDon't select-all the task description when beginning editing
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"

2 years agoEscape to abort a task edit
Scott Worley [Thu, 27 Jan 2022 08:30:22 +0000 (00:30 -0800)]
Escape to abort a task edit

2 years agoAlways return to command mode (leave input box) after creating a task
Scott Worley [Thu, 27 Jan 2022 08:25:01 +0000 (00:25 -0800)]
Always return to command mode (leave input box) after creating a task

Even in other views, where the just-created task cannot accept focus.

2 years agoundoLog is private to the UI
Scott Worley [Thu, 27 Jan 2022 08:07:27 +0000 (00:07 -0800)]
undoLog is private to the UI

2 years agoViews: Show tasks by state
Scott Worley [Thu, 27 Jan 2022 07:49:58 +0000 (23:49 -0800)]
Views: Show tasks by state

2 years agoAllow browserUI private fields
Scott Worley [Thu, 27 Jan 2022 07:28:51 +0000 (23:28 -0800)]
Allow browserUI private fields

2 years agoUse CSS for filtering the view
Scott Worley [Thu, 27 Jan 2022 07:19:31 +0000 (23:19 -0800)]
Use CSS for filtering the view

2 years agoAlways set state attribute
Scott Worley [Thu, 27 Jan 2022 07:12:18 +0000 (23:12 -0800)]
Always set state attribute

2 years agoLeader key "v" for selecting views
Scott Worley [Thu, 27 Jan 2022 07:00:48 +0000 (23:00 -0800)]
Leader key "v" for selecting views

2 years agoCommands are in command mode
Scott Worley [Thu, 27 Jan 2022 06:53:54 +0000 (22:53 -0800)]
Commands are in command mode

2 years agoUse a monotonic clock
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).

2 years agoExplicitly remove the completeEdit onblur event listener
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.

So this is needed for Chromium.

2 years agoEdit task descriptions
Scott Worley [Thu, 27 Jan 2022 06:07:18 +0000 (22:07 -0800)]
Edit task descriptions

2 years agoDon't change state if it's already in that state
Scott Worley [Thu, 27 Jan 2022 03:32:16 +0000 (19:32 -0800)]
Don't change state if it's already in that state

2 years agoChange focus in BrowserUI, never in Model
Scott Worley [Thu, 27 Jan 2022 02:44:21 +0000 (18:44 -0800)]
Change focus in BrowserUI, never in Model

We don't want updates coming in from network sync to move focus around.

2 years agoTasks have one state. Enables undo for state changes
Scott Worley [Thu, 27 Jan 2022 01:51:51 +0000 (17:51 -0800)]
Tasks have one state.  Enables undo for state changes

2 years agoUndo for task creation and reordering
Scott Worley [Wed, 26 Jan 2022 22:46:28 +0000 (14:46 -0800)]
Undo for task creation and reordering

2 years agoNever mind about Destroy. Deleting is just state "deleted"
Scott Worley [Wed, 26 Jan 2022 22:17:16 +0000 (14:17 -0800)]
Never mind about Destroy.  Deleting is just state "deleted"

It doesn't get erased from the log anyway.

2 years agoFull-width input box
Scott Worley [Wed, 26 Jan 2022 21:59:25 +0000 (13:59 -0800)]
Full-width input box

2 years agoStart with focus on top task
Scott Worley [Wed, 26 Jan 2022 21:46:03 +0000 (13:46 -0800)]
Start with focus on top task

2 years agoControl-enter to make new tasks top-priority
Scott Worley [Wed, 26 Jan 2022 21:25:47 +0000 (13:25 -0800)]
Control-enter to make new tasks top-priority

2 years agoAllow Model to return values through UI
Scott Worley [Wed, 26 Jan 2022 21:25:06 +0000 (13:25 -0800)]
Allow Model to return values through UI

2 years agoInitiate task creation with Enter key rather than form submit
Scott Worley [Wed, 26 Jan 2022 21:11:09 +0000 (13:11 -0800)]
Initiate task creation with Enter key rather than form submit

This will let us detect modifiers on the keystroke.

2 years agoEliminate createTask. It's part of addTask
Scott Worley [Wed, 26 Jan 2022 21:00:15 +0000 (13:00 -0800)]
Eliminate createTask.  It's part of addTask

In the spirit of maintaining the invariant: all tasks are in the DOM; no
loose, floating tasks.

2 years agoRe-order tasks
Scott Worley [Wed, 26 Jan 2022 20:55:28 +0000 (12:55 -0800)]
Re-order tasks

2 years agoPut tasks in a div
Scott Worley [Wed, 26 Jan 2022 20:50:10 +0000 (12:50 -0800)]
Put tasks in a div

2 years agoSort Model methods
Scott Worley [Wed, 26 Jan 2022 19:31:02 +0000 (11:31 -0800)]
Sort Model methods

2 years agoFactor out task offset logic
Scott Worley [Wed, 26 Jan 2022 18:59:16 +0000 (10:59 -0800)]
Factor out task offset logic

2 years agoFix moving focus over completed tasks
Scott Worley [Wed, 26 Jan 2022 18:44:48 +0000 (10:44 -0800)]
Fix moving focus over completed tasks

It sure would be nice if we could just trigger whatever the browser does
for tab and shift-tab key presses, instead of doing all this.

2 years agoUse a prefix for localStorage keys
Scott Worley [Wed, 26 Jan 2022 17:45:41 +0000 (09:45 -0800)]
Use a prefix for localStorage keys

2 years agoSet tasks "done" (or "waiting", "cancelled", "someday-maybe")
Scott Worley [Wed, 26 Jan 2022 09:01:48 +0000 (01:01 -0800)]
Set tasks "done" (or "waiting", "cancelled", "someday-maybe")

2 years agoLeave something focused after destroying a task
Scott Worley [Wed, 26 Jan 2022 07:54:34 +0000 (23:54 -0800)]
Leave something focused after destroying a task

2 years agoMove focusTaskNameInput and moveCursor into BrowserUI
Scott Worley [Wed, 26 Jan 2022 07:51:50 +0000 (23:51 -0800)]
Move focusTaskNameInput and moveCursor into BrowserUI

2 years agoDestroy tasks
Scott Worley [Wed, 26 Jan 2022 07:45:42 +0000 (23:45 -0800)]
Destroy tasks

2 years agoBrowserUI
Scott Worley [Wed, 26 Jan 2022 06:47:55 +0000 (22:47 -0800)]
BrowserUI

2 years agomoveCursor returns whether it was able to or not
Scott Worley [Wed, 26 Jan 2022 06:35:52 +0000 (22:35 -0800)]
moveCursor returns whether it was able to or not

2 years agoKeep the creation timestamp in the DOM
Scott Worley [Wed, 26 Jan 2022 06:29:14 +0000 (22:29 -0800)]
Keep the creation timestamp in the DOM

2 years agoKeep handleKey lean
Scott Worley [Wed, 26 Jan 2022 06:24:05 +0000 (22:24 -0800)]
Keep handleKey lean

2 years agoKeep Log narrowly about log stuff
Scott Worley [Wed, 26 Jan 2022 06:17:51 +0000 (22:17 -0800)]
Keep Log narrowly about log stuff

2 years agoPersistence
Scott Worley [Wed, 26 Jan 2022 06:13:35 +0000 (22:13 -0800)]
Persistence

2 years agoBuild and consume Log entries
Scott Worley [Wed, 26 Jan 2022 05:47:53 +0000 (21:47 -0800)]
Build and consume Log entries

2 years agoWrites go through the Log
Scott Worley [Tue, 25 Jan 2022 23:53:04 +0000 (15:53 -0800)]
Writes go through the Log

2 years agoNo empty-string-named tasks
Scott Worley [Tue, 25 Jan 2022 22:33:34 +0000 (14:33 -0800)]
No empty-string-named tasks

2 years ago"c" to "Create" tasks
Scott Worley [Tue, 25 Jan 2022 22:29:23 +0000 (14:29 -0800)]
"c" to "Create" tasks

2 years agoNew tasks get focus.
Scott Worley [Tue, 25 Jan 2022 22:28:35 +0000 (14:28 -0800)]
New tasks get focus.

2 years agoCall some things "Model", to distinguish them from "Log"
Scott Worley [Tue, 25 Jan 2022 22:20:22 +0000 (14:20 -0800)]
Call some things "Model", to distinguish them from "Log"

2 years agoj/k movement keys
Scott Worley [Tue, 25 Jan 2022 21:31:52 +0000 (13:31 -0800)]
j/k movement keys

2 years agoNo MVMVC; DOM *is* the model.
Scott Worley [Tue, 25 Jan 2022 19:43:08 +0000 (11:43 -0800)]
No MVMVC; DOM *is* the model.

2 years agoTasks can be focused
Scott Worley [Tue, 25 Jan 2022 10:36:51 +0000 (02:36 -0800)]
Tasks can be focused

2 years agoCreate tasks
Scott Worley [Tue, 25 Jan 2022 10:28:10 +0000 (02:28 -0800)]
Create tasks

2 years agoStart
Scott Worley [Tue, 25 Jan 2022 10:08:21 +0000 (02:08 -0800)]
Start