CLI · §11

Terminal UI

A keyboard-driven terminal UI sits inside the same parc binary. It uses the same parc-core queries as the CLI — there's no separate state — so anything you can do in the TUI you can also reach from a script.

# Launching

parc          # opens the TUI when stdout is a TTY; otherwise prints `parc today`
parc tui      # always launches the TUI
parc --no-tui # forces the plain `parc today` digest, even in a TTY

The CLI auto-falls-back to the today digest when output is piped or redirected, so parc | head and parc > digest.txt both work without dropping you into a UI.

# Layout

A persistent menu strip across the top selects between six tabs. Below it sits a two-pane split: a list panel on the left, a detail panel on the right. Exactly one pane is focused at a time — its border is highlighted and navigation keys (arrows, page, etc.) act on it. A footer strip at the bottom shows the current focus and a key cheat-sheet.

Tab Number What it shows
Today 1 The same three sections as parc today (touched today / due / open & high priority)
List 2 Recent fragments, newest first
Stale 3 The same set as parc stale
Due 4 Open todos due this week, grouped by overdue / today / soon
Review 5 The same multi-section digest as parc review
Search 6 The most recent launcher fragment search results

The detail pane renders the selected fragment's body as styled Markdown — headings, lists, blockquotes, code, inline code, bold/italic, links, and [[id]] wiki-links are highlighted. A scrollbar appears when the body overflows the pane. When the fragment has incoming links, a ## Backlinks section is appended automatically.

Two in-detail actions use a vimium-style overlay: f follows a [[wiki-link]] and x toggles a [ ] / [x] checkbox. Each visible target gets a letter label; press the letter to act, or Esc to cancel. With only one target in view the action runs immediately. After following a link, Ctrl-O jumps back through the navigation stack and Ctrl-I jumps forward.

/ opens a two-pane universal launcher over the current view. Plain input searches fragments with the full DSL and also matches commands/views, so typing review, due, archive, or #backend surfaces the relevant action or fragment result. When a fragment is selected, typed field intents such as status done, due friday, priority high, or assignee alice appear as runnable actions; partial inputs like status , priority h, due tom, or assignee al suggest schema-aware values. Tag actions are explicit to avoid accidental replacement: add tag tui, remove tag old, or set tags tui backend. The right pane previews the highlighted fragment, command, or action; field-action previews show validation errors or normalized due dates before you run them. Enter on a fragment opens the result set in the Search tab; Enter on a command/action runs it. Ctrl-P opens the same launcher with > prefilled for command-only filtering; typing after > filters commands.

# Keybindings

Key Action
1 / 2 / 3 / 4 / 5 / 6 Jump to a tab
Tab Cycle to the next tab
Shift-Tab Toggle pane focus (list ↔ detail)
/ Open the universal launcher
Ctrl-P Open the launcher command-only
/ Move within the focused pane
PgDn / PgUp Page within the focused pane
Home / End Top / bottom of the focused pane
Ctrl-d / Ctrl-u Half-page scroll within the focused pane
Ctrl-o / Ctrl-i Navigate back / forward through followed links
r Reload the current tab

# Actions on the selected fragment

Key Action
e Edit in $EDITOR (suspends the TUI, resumes on exit)
t Toggle todo status (open ↔ done) — no-op for non-todos
s Set status
D Set due date
P Set priority
@ Set assignee
# Set tags
p Promote to another type — opens an input prompt
a Archive (toggle)
d Delete — opens a y/n confirm dialog
y Copy the full ID to the system clipboard

# In-detail actionables (detail pane focused)

Key Action
f Open the follow-link overlay; type the letter label of a [[wiki-link]] to jump to it
x Open the toggle-checkbox overlay; type the letter label of a [ ] / [x] to flip it

# Modals and general

Key Action
? Toggle the help overlay
Esc Cancel a modal; close the launcher
y / n Confirm or cancel inside a confirm dialog
Enter Submit inside an input prompt
q Quit
Ctrl-C Quit from anywhere

In universal launcher mode, all printable keystrokes append to the query. The query is parsed as the full search DSL, so type:todo #backend due:this-week filters fragments as you type, while command/view/action matches are mixed into the same result list. Use Shift-Tab to move focus between results and preview, Enter to open a selected fragment search result in the Search tab or run a selected command/action, and Esc to close the launcher.

If the launcher input starts with >, it switches to command-only mode. Command results include existing TUI actions such as edit, toggle status, archive, delete, promote, yank ID, quick field edits, capture, reload, help, and tab switching. Commands that need a selected fragment are hidden when nothing is selected.

# When to use it

The TUI shines for browsing and quick edits — flipping between tabs to see what you've been doing, using the launcher to search or run actions, and editing or toggling todos without leaving the keyboard. For one-shot queries, scripted output, or piping into other tools, the CLI is faster: every persistent TUI tab maps directly to a resurfacing/list command, and every TUI action maps to parc edit, parc set, parc archive, parc delete, or parc promote.