feat: one-level subtasks on tasks #24

Merged
jwarykowski merged 9 commits from feat/subtasks into master 2026-07-14 21:44:43 +00:00
jwarykowski commented 2026-07-14 12:31:03 +00:00 (Migrated from github.com)

summary

Adds one level of subtasks to shepherd tasks. A subtask is a full nested todo.Item embedded on its parent (Subs []Item), so todo.Sort carries subs along with no sort change. Completion cascades both ways: parent done ⇄ all subs done.

changes

  • todo — Subs field; cascade logic in subtasks.go (SetParentDone, SetSubDone, SetSubStatus, CycleSubStatus, AllSubsDone, SubCount); deep-copy Clone for safe undo/redo.
  • store — nested markdown round-trip: 2-space subtask checkbox, 4-space sub meta; never recurses past one level.
  • cli — sub <n> "<text>" verb; dotted n.m refs on done/undone/rm/status; nested subtasks in list --json; done/total badge.
  • tui — inline row navigation into subs; cascade on space/enter; tab cycles sub status; S adds a subtask; sub-aware defer/link/due/edit/remove; footer keys dim for parent-only actions (g category, o when sub has no link).
  • docs — README/AGENTS/SKILL subtasks sections; herdr-plugin.toml bumped to 0.7.0.

deferred

  • Collapse/fold of subs, subtask category (parent-only), sub-level stats.
## summary Adds one level of subtasks to shepherd tasks. A subtask is a full nested `todo.Item` embedded on its parent (`Subs []Item`), so `todo.Sort` carries subs along with no sort change. Completion cascades both ways: parent done ⇄ all subs done. ## changes - **todo** — `Subs` field; cascade logic in `subtasks.go` (`SetParentDone`, `SetSubDone`, `SetSubStatus`, `CycleSubStatus`, `AllSubsDone`, `SubCount`); deep-copy `Clone` for safe undo/redo. - **store** — nested markdown round-trip: 2-space subtask checkbox, 4-space sub meta; never recurses past one level. - **cli** — `sub <n> "<text>"` verb; dotted `n.m` refs on `done`/`undone`/`rm`/`status`; nested `subtasks` in `list --json`; done/total badge. - **tui** — inline row navigation into subs; cascade on space/enter; `tab` cycles sub status; `S` adds a subtask; sub-aware defer/link/due/edit/remove; footer keys dim for parent-only actions (`g` category, `o` when sub has no link). - **docs** — README/AGENTS/SKILL subtasks sections; `herdr-plugin.toml` bumped to `0.7.0`. ## deferred - Collapse/fold of subs, subtask category (parent-only), sub-level stats.
Sign in to join this conversation.
No description provided.