Skip to content

Task View

The task view displays project tasks from any source (GitHub Issues, markdown files, or custom providers) directly in the navi dashboard via a pluggable provider system. Tasks are grouped by project or category with sorting, filtering, progress indicators, and summary statistics to help manage large backlogs efficiently.

  1. Create a .navi.yaml in your project root:
tasks:
provider: "markdown-tasks"
args:
path: "docs/delivery"
  1. Press T in navi to toggle the task panel

The task panel appears alongside the session list. Tasks are grouped by project or category.

KeyAction
TToggle task panel visibility
TabFocus task panel (when visible)
/ Navigate tasks
SpaceExpand / collapse task group
/Search tasks
EnterOpen task (URL or file viewer)
rRefresh tasks (invalidate cache)
[ / ]Resize task panel
sCycle sort mode
SToggle sort direction
fCycle filter mode
JJump to next group header
KJump to previous group header
eToggle expand / collapse all groups
aToggle accordion mode
EscReturn focus to session list

Cycle through sort modes with s, reverse direction with S.

ModeOrderDescription
sourceOriginal provider orderDefault — preserves the order your provider returns
statusActive first, done lastPriority: active → review → blocked → todo → done
nameAlphabetical (case-insensitive)Groups sorted by title
progressLeast complete firstGroups with lowest completion percentage appear first

All modes use source order as a stable tiebreaker. When sort mode is status, tasks within each group are also sorted by status priority.

The header shows the current sort mode and direction (e.g., sort:status↓). The indicator is hidden when using the default (source ascending).

Cycle through filter modes with f.

ModeShowsDescription
allEvery groupDefault — nothing hidden
activeActive, review, or blocked groupsHides done and todo groups
incompleteAll except done groupsShows everything that still has work remaining

The header shows the active filter and how many groups are hidden (e.g., filter:active (22 hidden)). Search operates within the filtered set — hidden groups are not searchable.

Each group header displays a completion counter and mini progress bar:

▶ 3. Enhanced Session Creation [3/5] ██░░ todo
  • [3/5] — completed tasks / total tasks in the group
  • ██░░ — 4-character proportional progress bar
  • Empty groups show (0) instead of a progress bar

Tasks with status “done”, “closed”, or “completed” count as complete.

When the panel is tall enough, a second header line shows overall task health across all groups (unfiltered totals):

12 done · 3 active · 1 review · 18 todo

Each category is color-coded: green (done), cyan (active), magenta (review), red (blocked), yellow (todo). Status strings are normalized to these five canonical categories.

KeyAction
JJump cursor to next group header (wraps to first)
KJump cursor to previous group header (wraps to last)
eToggle expand/collapse all groups
aToggle accordion mode (expanding one group collapses others)

Press r to immediately re-run the task provider, bypassing the cache. The header shows “Refreshing…” while the provider is running. Duplicate refresh requests while one is in progress are ignored.

Scans markdown files for task definitions. Designed for projects using the delivery documentation pattern.

tasks:
provider: "markdown-tasks"
args:
path: "docs/delivery"

Fetches issues from a GitHub repository using the gh CLI.

tasks:
provider: "github-issues"
args:
repo: "owner/repo"

Any executable script that outputs the standard JSON format works as a provider. The script receives arguments from the args field in .navi.yaml.

Expected output format:

{
"groups": [
{
"id": "group-1",
"title": "Sprint 1",
"status": "in_progress",
"url": "https://...",
"tasks": [
{
"id": "task-1",
"title": "Fix login bug",
"status": "todo",
"assignee": "alice",
"labels": ["bug", "auth"],
"priority": 1,
"url": "https://...",
"created": "2026-01-01T00:00:00Z",
"updated": "2026-01-02T00:00:00Z"
}
]
}
]
}
tasks:
provider: "markdown-tasks"
args:
path: "docs/delivery"
interval: "30s" # Refresh interval (optional)
tasks:
default_provider: "markdown-tasks"
interval: "30s"

Task results are cached and refreshed at the configured interval (default 30 seconds).

Sort mode, filter mode, sort direction, and accordion mode are session-persistent (stored in memory) but do not persist across restarts.