feat: per-project todo boards via --project #12

Merged
jwarykowski merged 6 commits from feat/per-project-files into master 2026-07-12 11:34:33 +00:00
jwarykowski commented 2026-07-12 11:31:23 +00:00 (Migrated from github.com)

summary

Add per-project todo boards. --project <name> (or $SHEPHERD_PROJECT) selects ~/.config/shepherd/projects/<name>.md; unset uses the default todo.md. Works in both the TUI and the command API (flags follow the verb).

  • Pin all boards to ~/.config/shepherd; stop reading HERDR_PLUGIN_STATE_DIR.
  • Rename the whole-file override HERDR_TODO_FILE → SHEPHERD_TODO_FILE (herdr never set it) and drop the old name.
  • Per-project archive (web.md → web-archive.md); config.toml stays shared at the base dir.
  • Validate project names against a slug regex at one resolve point, so env input can't traverse out of the base dir.

migration (ships for others)

Anyone who ran shepherd inside herdr has a board under $HERDR_PLUGIN_STATE_DIR; it looks empty until moved:

mv "$HERDR_PLUGIN_STATE_DIR"/{todo,archive}.md ~/.config/shepherd/

docs

README: defaults-at-a-glance table up top, new projects section, --project in the command API, launch filter re-framed (view vs board), config split (herdr placement/direction moved into the herdr section). SKILL.md / AGENTS.md updated.

## summary Add per-project todo boards. `--project <name>` (or `$SHEPHERD_PROJECT`) selects `~/.config/shepherd/projects/<name>.md`; unset uses the default `todo.md`. Works in both the TUI and the command API (flags follow the verb). - Pin all boards to `~/.config/shepherd`; stop reading `HERDR_PLUGIN_STATE_DIR`. - Rename the whole-file override `HERDR_TODO_FILE` → `SHEPHERD_TODO_FILE` (herdr never set it) and drop the old name. - Per-project archive (`web.md` → `web-archive.md`); `config.toml` stays shared at the base dir. - Validate project names against a slug regex at one resolve point, so env input can't traverse out of the base dir. ## migration (ships for others) Anyone who ran shepherd inside herdr has a board under `$HERDR_PLUGIN_STATE_DIR`; it looks empty until moved: ```sh mv "$HERDR_PLUGIN_STATE_DIR"/{todo,archive}.md ~/.config/shepherd/ ``` ## docs README: defaults-at-a-glance table up top, new `projects` section, `--project` in the command API, `launch filter` re-framed (view vs board), config split (herdr `placement`/`direction` moved into the herdr section). `SKILL.md` / `AGENTS.md` updated.
Sign in to join this conversation.
No description provided.