summaryrefslogtreecommitdiff
path: root/keys.md
diff options
context:
space:
mode:
authorT <t@tjp.lol>2025-08-05 11:37:02 -0600
committerT <t@tjp.lol>2025-08-05 11:37:08 -0600
commit665bd389a0a1c8adadcaa1122e846cc81f5ead31 (patch)
treef34f9ec77891308c600c680683f60951599429c3 /keys.md
parentdc895cec9d8a84af89ce2501db234dff33c757e2 (diff)
WIP TUI
Diffstat (limited to 'keys.md')
-rw-r--r--keys.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/keys.md b/keys.md
new file mode 100644
index 0000000..fe461c6
--- /dev/null
+++ b/keys.md
@@ -0,0 +1,56 @@
+## Global always-available bindings
+
+* **Ctrl-n**: cycle selection to next pane
+* **Ctrl-p**: cycle selection to previous pane
+* **p**: punch in/punch out
+* **/**: search clients and projects (pulls up a modal with fuzzy search-as-you-type where Ctrl-n and Ctrl-p cycle the active suggestions, and **Enter** jumps you to the projects pane with that client or project selected)
+* **r**: refresh view - will go back to the database to reload all displayed data
+* **q**: quit
+
+* **Ctrl-c**: quit (not shown on bottom bar)
+* **Ctrl-d**: quit (not shown on bottom bar)
+
+
+## Timer pane bindings
+
+* **Enter** (no active timer): punch back in to most recent project (and copy description)
+* **Enter** (timer active): punch out
+
+## Projects pane bindings
+
+The projects pane shows a 2-level tree view of all clients, and all their projects beneath them.
+
+One row of this view (a client or a project) is always selected. When a user navigates away from the pane (ctrl-n, ctrl-p) they should their previous row selection should come back.
+
+* **j**: select next row
+* **k**: select previous row
+* **down arrow**: select next row (not shown on bottom bar)
+* **up arrow**: select previous row (not shown on bottom bar)
+* **Enter**: equivalent to `punch in -c <selected-client> [-p <selected-project-if-any>]` (will punch in to the selected client or project, punching out if a different client/project is currently active)
+* **n**: new project
+* **N**: new client
+
+## History pane - level 1: summaries
+
+The history pane will show recent time_entry history (sorted descending).
+
+At first it displays a 2-level tree view of dates, and `Client[ / Project]` rows beneath that with the total duration worked on that project in that day. If there were time entries for a client not associated with a project, those will be in a `Client` row.
+
+Like the projects pane, this always has a row selected. Date rows display the total for the day, but can't be selected - j and k and up and down arrows just skip over them.
+
+* **j** (and secretly down arrow): select next row
+* **k** (and secretly up arrow): select previous row
+* **Enter**: drill down on the selected date/project
+
+## History pane - level 2: details
+
+When drilling down on a date and project (or just client), all the time_entry rows which made up that summary row total are displayed in reverse-chronological order.
+
+They also have a selection.
+
+* **j** (and down arrow): select next entry
+* **k** (and up arrow): select previous entry
+* **e**: edit selected entry (pulls up an edit form modal)
+* **d**: delete selected entry
+* **Enter**: "Resume" - punch into a new copy of this entry (potentially punching out of an existing one, mirroring `punch in` behavior)
+* **b**: back to level 1 view. escape key also does this but that doesn't show up on the bottom bar.