CLI ↔ Dashboard Coverage Gap Inventory
Last updated: 2026-08-24
Methodology
Every user-facing capability — ndx orchestration commands, rex / sourcevision / hench package CLI commands, and rex / sourcevision MCP tools — is rated:
- full — dashboard has a trigger, status view, and configuration surface for this capability
- partial — dashboard exposes some but not all meaningful facets (read-only view without trigger, trigger without config, or a subset of the CLI's options)
- none — no dashboard representation at all
- n/a — intentionally terminal-only or not meaningful inside the dashboard (rationale given)
"User impact" is rated high / medium / low based on how frequently the capability appears in a normal daily workflow.
Coverage was verified against the current viewer (packages/web/src/viewer/views/view-registry.ts, components/sidebar.ts) and server routes (packages/web/src/server/routes-*.ts), including the trigger controls shipped in feat(web): add dashboard trigger controls for CLI commands (/api/commands/*).
Changes since the 2026-04-18 audit
The Dashboard Trigger Controls feature closed five of the previous Tier 1–3 gaps:
| Command | Was | Now | Shipped surface |
|---|---|---|---|
ndx analyze | none | full | "Run Analysis" button on Overview → POST /api/commands/sv-analyze (lite/full) |
ndx sync | none | full | Push / Pull / Sync buttons in ndx sync settings → POST /api/commands/sync |
ndx recommend | partial | full | "Refresh Recommendations" on Suggestions → POST /api/commands/recommend |
ndx export | none | partial | Export panel in Commands view → POST /api/commands/export (no --deploy=github flow) |
ndx self-heal | none | partial | Self-Heal panel in Commands view → POST /api/commands/self-heal + status poll (no live phase/iteration view, no stop control) |
One capability regressed: the Analyze/Batch-Import panels (ndx plan proposal review) are no longer reachable — see Orphaned UI surface.
ndx orchestration commands
| Command | Coverage | Impact | Notes |
|---|---|---|---|
ndx work | full | high | Per-task Execute button (task detail), "Start" on next-task card, epic-by-epic panel with pause/resume, terminate + throttle/emergency-stop controls |
ndx analyze | full | high | "Run Analysis" on Overview (lite/full); --deep not exposed |
ndx sync | full | high | Push/pull/sync triggers + Notion config, connection test, schema wizard |
ndx recommend | full | high | Suggestions view + refresh trigger |
ndx plan / --accept | partial | high | Regression: smart-add preview + accept-edited work (SmartAddInput), but the proposal-review panel (AnalyzePanel → /api/rex/analyze, /api/rex/proposals*) is only mounted by the orphaned views/analysis.ts |
ndx add | full | high | Smart-add input with debounced preview, accept-edited flow |
ndx status | full | high | Rex dashboard + PRD tree |
ndx usage | full | high | Period grouping (day/week/month toggle), per-command breakdown with package filter, and budget alerts by severity — all served by the aggregate /api/token/utilization endpoint |
ndx refresh | partial | high | "Refresh Data" panel triggers the data phases live (--data-only --live-server); full UI rebuild still requires the terminal (server must stop) |
ndx self-heal | full | medium | Trigger, status poll, iteration/phase display, and a Stop control that cancels the running loop |
ndx export | partial | medium | Export trigger exists; deploy flow not exposed |
ndx ci | full | medium | Run-CI-check action in the Validation view with structured results from --format=json |
ndx config | full | medium | Settings section: General (LLM provider), project settings, hench config, Notion, feature flags, CLI timeouts — grouped by CLI command |
ndx auth | full | low | Credential status chip in Settings → General (GET /api/commands/auth), with re-check |
ndx install-sample / ndx destroy-sample | full | low | Sample App panel in Commands view (packages/web/src/viewer/views/commands.ts) — Install/Destroy buttons, live status polling via GET /api/commands/sample-status, POST /api/commands/install-sample and /api/commands/destroy-sample |
ndx pair-programming / bicker | none | low | Experimental; not yet a dashboard workflow |
ndx init | n/a | — | One-time setup; dashboard requires init to exist |
ndx start / ndx dev | n/a | — | These commands launch the dashboard |
ndx version / ndx help | n/a | — | Footer version + Guide/FAQ views cover this |
ndx config — LLM Provider view detail
- Local vendor (full): the LLM Provider view (
packages/web/src/viewer/views/llm-provider.ts) adds a "local" vendor alongside Claude/Codex — host/port/model fields, a live status probe, a connection smoke test (latency + tokens/sec), and saved server profiles. Backed by GET/PUT/api/llm/configplus GET/api/llm/local-status, POST/api/llm/local-test, and GET/POST/DELETE/api/llm/local-profiles(packages/web/src/server/routes-llm.ts). - Google/Gemini vendor (none, impact: medium): the CLI's
googlevendor (packages/core/config.js) has no dashboard representation —VENDORSinllm-provider.tsandVALID_VENDORSinroutes-llm.tscover only claude/codex/local; no tab, no field in theGET/PUT /api/llm/configcontract.
rex package CLI
| Command | Coverage | Impact | Notes |
|---|---|---|---|
rex status / tree | full | high | PRD tree view |
rex next | full | high | Next-task card on Rex dashboard |
rex add (manual + smart) | full | high | Inline add + smart-add |
rex update / remove / move | full | medium | Inline status picker, bulk actions, delete, reparent |
rex validate | full | medium | Validation view re-fetches /api/rex/validate + dependency graph with cycle detection |
rex health | full | medium | Health gauge on dashboard |
rex reorganize | full | medium | Reorganize panel with preview + apply |
rex prune | full | medium | Prune preview + confirmation + execute |
rex reshape | full | medium | Reshape action in the Validation view: previews proposals via --dry-run, applies only on explicit confirm |
rex fix | full | medium | Fix action in the Validation view: --dry-run preview, then apply, then automatic re-validation |
rex restore | full | high | Snapshots/Restore panel on the Rex dashboard (list + restore-with-confirmation) — GET /api/rex/backups, POST /api/rex/restore (routes-rex/restore.ts). The in-app undo for reorganize/prune/reshape/fix |
rex verify | full | medium | Requirements page renders coverage + traceability matrix (per-item CRUD deferred to the task detail panel) |
rex analyze / import | partial | medium | Same orphaned-panel regression as ndx plan |
rex usage | full | medium | Same coverage as ndx usage |
rex sync | full | medium | Via sync triggers |
rex adapter | partial | low | Integrations view provides schema-driven config for registered adapters; no add/remove |
rex report | none | low | JSON for CI; health view covers interactive use |
rex facets (MCP facets) | partial | low | Deferred by decision (2026-08-14). Facet filters exist in the PRD tree. A distribution view was scoped and skipped: facets is MCP-only (no CLI command), no facets are configured in this project, and the panel would render an empty state for most users. Revisit if facet configuration becomes common. |
rex migrate-to-md / migrate-folder-tree-filenames / backfill-commit-attribution | n/a | — | One-time migrations; terminal-only by design |
rex mcp | n/a | — | Server plumbing; MCP HTTP endpoints served by the dashboard itself |
sourcevision package CLI
| Command | Coverage | Impact | Notes |
|---|---|---|---|
sourcevision analyze | full | high | Run Analysis trigger + eight data views |
sourcevision pr-markdown | full | medium | PR Markdown tab with per-section copy + freshness state |
sourcevision validate | none | low | No UI to validate .sourcevision/ outputs; freshness indicator partially covers intent |
sourcevision export-pdf | full | medium | "Export PDF report" beside the Export panel; reports the written path (the viewer sandbox blocks page-initiated downloads) |
sourcevision workspace | none | low | Multi-repo aggregation has no dashboard concept yet (project switcher /api/projects is single-repo) |
sourcevision serve | n/a | — | Legacy standalone viewer; superseded by ndx start |
sourcevision reset | n/a | — | Destructive; intentionally terminal-only |
sourcevision git-credential-helper | n/a | — | Interactive terminal flow |
sourcevision mcp | n/a | — | Server plumbing |
hench package CLI
| Command | Coverage | Impact | Notes |
|---|---|---|---|
hench run | full | high | Execute buttons + epic-by-epic panel (see ndx work) |
hench status / show | full | medium | Runs view: history, transcript, token breakdown, files changed |
hench config | full | medium | ndx work settings view (GET/PUT /api/hench/config) |
hench template | full | medium | Templates view: gallery, apply, save, delete |
hench validate-tokens | full | low | "Validate token reporting" trigger in the Runs view, beside the per-run token diagnostics |
hench record | n/a | — | Plumbing for the assisted-run skills (/ndx-work, /ndx-capture, /ndx-plan, /ndx-reshape, /ndx-config); reads its token usage from the Claude Code session transcript |
hench init | n/a | — | Covered by ndx init |
Rex MCP tools (17)
MCP tools are AI-assistant-facing; the dashboard need not mirror them 1:1. Coverage below records whether an equivalent human surface exists, since a capability reachable by agents but invisible to humans is an observability gap.
| Tool | Equivalent UI | Coverage |
|---|---|---|
get_prd_status | Rex dashboard stats + PRD tree | full |
get_next_task | Next-task card | full |
update_task_status | Inline status picker / bulk actions | full |
add_item | Add-item + smart-add | full |
edit_item | Detail panel editing | full |
get_item | Detail panel | full |
move_item | Tree reparent | full |
merge_items | Merge preview | full |
get_recommendations | Suggestions view | full |
verify_criteria | Requirements page (coverage + traceability matrix) | full |
reorganize | Reorganize panel | full |
health | Health gauge | full |
facets | Facet filters (no distribution view) | partial |
append_log | Activity view (REX → Activity) renders the log | full |
sync_with_remote | Sync triggers | full |
get_token_usage | Token Usage view (utilization only) | partial |
get_capabilities | — | n/a (protocol handshake) |
Sourcevision MCP tools (10)
| Tool | Equivalent UI | Coverage |
|---|---|---|
get_overview | Overview tab | full |
get_next_steps | Next Steps panel on Overview (derived steps, any pass) + Suggestions tab | full |
get_zone | — | none — the zone-detail view (views/zones.ts, 2569 lines) exists but is unreachable (see orphaned surface) |
get_findings | Architecture / Problems / Suggestions tabs | full |
get_file_info | Files tab | full |
search_files | Files tab filters + global search overlay | full |
get_imports | Map tab | full |
get_classifications | Files tab Archetype column (via /api/sv/classifications) | full |
set_file_archetype | Archetype override control in the Files tab (POST /api/sv/archetype) | full |
get_route_tree | Routes tab | full |
Orphaned UI surface — resolved 2026-08-12
Roughly 2,900 lines of built view code were unreachable; both views are now registered (guarded by tests/unit/viewer/restored-views.test.ts):
views/analysis.ts(AnalysisView) — was never registered after the web-package extraction, leaving POST/api/rex/analyze,/api/rex/proposals*, and/api/rex/batch-importwithout reachable UI. Nowanalysis(REX → "Analyze & Import").views/zones.ts(ZonesView, 2569 lines) — removed from navigation in PR #189 ("obsolete Zones navigation") before PRs #317/#321 invested in expandable zones and a11y, leaving that feature work invisible. Nowzones(SourceVision → "Zones" tab).
Server APIs with no UI consumer
| API surface | Size | Note |
|---|---|---|
/api/hench/adaptive/* | 873 lines, 10 endpoints | Done 2026-08-13: Adaptive Optimization view (HENCH → Adaptive) consumes all 10 endpoints |
/api/rex/requirements/* | 575 lines | Done 2026-08-13: Requirements page (REX → Requirements) renders coverage + traceability; per-item CRUD deferred to the task detail panel |
/api/sv/* (all except pr-markdown) | 8 endpoints | Viewer reads /data/*.json directly; these serve external/MCP consumers — document as external API, not a UI gap |
/api/token/{summary,events,by-command,by-period,budget} | 5 endpoints | Not a UI gap (verified 2026-08-14). utilization returns commands, budget and trend in one response, and the Token Usage view already renders all three — a day/week/month toggle (ndx usage --group parity), a per-command table with package filtering, and budget alerts by severity. These five are the granular/external split of the same data; wiring them separately would duplicate working UI and add redundant requests. |
/api/hench/{metrics,metrics/snapshots,memory/history,memory/leaks,runs/health} | 5 endpoints | Panels exist for live memory/concurrency; historical metrics unexposed |
/api/rex/{next,stats} | 2 endpoints | Dashboard consumes /api/rex/dashboard instead; candidates for removal or documentation |
SourceVision full-flow note — trigger shipped 2026-08-12
The SourceVision tabs are gated by zones.enrichmentPass (Architecture ≥ 2, Problems ≥ 3, Suggestions ≥ 4). The Overview now has a "Full analysis" control that runs sourcevision analyze --full (all four enrichment passes) as a background job — POST /api/commands/sv-analyze with full: true returns 202 and progress streams via GET /api/commands/sv-analyze/status (30-minute budget for the LLM passes; the old synchronous path capped out at 3 minutes). Locked tabs unlock automatically as the viewer's data polling picks up the refreshed zones.json. Remaining scope for the feature lives in its second task: surfacing every recommendation/function per tab once data exists.
Priority-ordered gap list
Tier 1 — high impact
Restore the orphaned— done 2026-08-12: registered asAnalysisViewanalysis(REX → "Analyze & Import");ndx planproposal review is reachable again.Restore the orphaned— done 2026-08-12: registered asZonesViewzones(SourceVision → "Zones" tab); zone drill-down (get_zoneequivalent) is navigable.— done 2026-08-12: "Refresh Data" panel in the Commands view → POSTndx refreshtrigger/api/commands/refresh(spawnsndx refresh --data-only --live-server, a new CLI mode that keeps the running server alive) with phase progress from the[refresh]output and a status poll endpoint.- Full-flow analysis trigger — extend
/api/commands/sv-analyzeto drive deep/enrichment passes with per-pass progress so all SourceVision tabs unlock from the UI (feeds featurea83b1a2f).
Tier 2 — medium impact
Requirements / traceability page— done 2026-08-13 (REX → Requirements: coverage stats + expandable traceability matrix).Adaptive-optimization page— done 2026-08-13 (HENCH → Adaptive view: metrics, apply/dismiss/lock, settings, overrides, history).— done 2026-08-14 (Validation view, dry-run preview then apply).rex fixaction— done 2026-08-14 (preview proposals, apply on confirm).rex reshapeflow— done 2026-08-14 (async run with structured JSON results).ndx citriggerToken usage depth— closed 2026-08-14, no work needed: the capabilities were already present viautilization(see the API table). The audit had flagged unused endpoints, not missing features.Self-heal live view— done 2026-08-14: iteration/phase display parsed from loop output, plus a Stop control (newPOST /api/commands/self-heal/stop, backed by AbortSignal support added to the foundationexec).
Tier 3 — low impact
— done 2026-08-14.sourcevision export-pdfcontrol— done 2026-08-12 (Files tab Archetype column with override control).set_file_archetypeoverride UIFacet distribution view— deferred 2026-08-14 with rationale (see the rex CLI table): MCP-only, unconfigured in practice, would render empty for most projects.— done 2026-08-14 (Settings → General).ndx authstatus chip— done 2026-08-14.hench validate-tokenstriggerExecution-log viewer— done 2026-08-14: REX → Activity renders the full log with event filtering and search.
Intentionally terminal-only (excluded)
| Capability | Rationale |
|---|---|
ndx start / ndx dev | These launch the dashboard |
ndx init / hench init / rex init / sourcevision init | One-time setup; dashboard presupposes init |
ndx version / ndx help | Footer version, Guide + FAQ views |
sourcevision reset | Destructive, low frequency |
sourcevision serve | Superseded by ndx start |
sourcevision git-credential-helper | Interactive terminal flow |
rex migrate-* / backfill-commit-attribution | One-time migrations |
rex mcp / sourcevision mcp | Transport plumbing; HTTP MCP is served by the dashboard |
hench record | Skill-integration plumbing (writes the run record, and the tokens the skill spent) |
MCP get_capabilities | Protocol handshake |
/api/sv/* read endpoints | External/MCP-facing API by design; viewer reads /data/*.json |
