From 702181a808bf736c84f470943f5ed0950656f5a0 Mon Sep 17 00:00:00 2001 From: Jonathan Warykowski Date: Wed, 29 Jul 2026 22:14:46 +1000 Subject: [PATCH] docs: correct the README key table for 0.19.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three claims didn't match the shipped binary: - `space` / `enter` toggled done — only space does. `enter` has no case in updateList, and per the key conventions space toggles while enter activates. - The detail view's `esc`/`q` were both described as "back". `q` quits (saving first), as the footer grid itself says. - The global view section didn't say which keys stay live there, now that A and F work in it: j/k, d, v, /, e, b, o, F, ?, A/esc, q, with every editing key inert and dimmed in both footers. Also fixes two `--help` flag descriptions: --filter listed a stale field set (no tags/defer/link) and --board read "open this board's board", a leftover from the projects→boards rename. --- README.md | 12 ++++++++---- main.go | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6e14a3e..37137c5 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ herdr plugin install jwarykowski/shepherd | key | action | |-----|--------| | `j` / `↓`, `k` / `↑` | move | -| `space` / `enter` | toggle done (on a parent, cascades to its subtasks; the last subtask done completes the parent) | +| `space` | toggle done (on a parent, cascades to its subtasks; the last subtask done completes the parent) | | `tab` | cycle status (open → in-progress → done → open); see `statuses` config | | `h` / `m` / `l` | set priority high / medium / low | | `g` | set category | @@ -101,9 +101,9 @@ herdr plugin install jwarykowski/shepherd The detail view is also an editor: the same field keys work there — `u` text, `h`/`m`/`l` priority, `g` category, `T` tags, `t` due, `s` defer, `L` link, `tab` status — and saving returns you to the detail view rather than the list. Plus -`n` edit note · `space` toggle · `o` open link · `esc`/`q` back. Its footer is -the same labelled key grid as the board's, narrowed to the keys that act on the -one item (`fields` · `dates` · `item` · `go`). +`n` edit note · `space` toggle · `o` open link · `esc` back · `q` save + quit. Its +footer is the same labelled key grid as the board's, narrowed to the keys that +act on the one item (`fields` · `dates` · `item` · `go`). **Rows carry two flush-right values**: the subtask progress (`1/2`) when the item has subtasks, else the due/defer label — then, pinned far right, whichever @@ -212,6 +212,10 @@ board grouping each board is a header; in the others every row carries a editing stays on the focused board, so the aggregate is never written back. `/` filters across boards (including by board name). +Only the keys that read or navigate work here — `j`/`k`, `d`, `v`, `/`, `e`, `b`, +`o`, `F`, `?`, `A`/`esc` to leave, `q` to quit. Every editing key is inert and +shown dimmed in the footer, on the board and in the detail view alike. + The command API mirrors it: `shepherd list --all` (see [command api](#command-api)). ## launch filter diff --git a/main.go b/main.go index 7cdc388..82b8f0a 100644 --- a/main.go +++ b/main.go @@ -38,8 +38,8 @@ func main() { } flag.Usage = func() { fmt.Fprintln(os.Stderr, cli.Usage()) } - filter := flag.String("filter", os.Getenv("SHEPHERD_FILTER"), "start with this filter applied (matches text/note/category/due)") - board := flag.String("board", "", "open this board's board (else $SHEPHERD_BOARD, else the default)") + filter := flag.String("filter", os.Getenv("SHEPHERD_FILTER"), "start with this filter applied (matches text/note/category/tags/due/defer/link)") + board := flag.String("board", "", "open this named board (else $SHEPHERD_BOARD, else the default)") all := flag.Bool("all", false, "open the read-only global view across all boards") ver := flag.Bool("version", false, "print the version and exit") flag.Parse()