You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(cli): add revela info command tree with TUI inlining (#23)
Adds three new diagnostic commands plus the inlining mechanism that
lets a parent command render flat in the interactive menu while
keeping a clean nested CLI surface.
Commands:
revela info Revela summary panel (default action)
revela info plugins Lists installed plugins
revela info plugins <name> Plugin detail (Phase 2, plugin-provided)
revela info themes Lists installed themes (active marker)
revela info themes <name> Theme detail (Phase 2, theme-provided)
TUI rendering:
Info
Revela ← virtual default-action entry
Plugins → ← only shown when plugins register sub-subcommands
Themes → ← only shown when themes register sub-subcommands
> Exit
The menu group is registered with order 90 (bottom of main menu, above
Exit). Plugins/themes contribute per-package detail subcommands via the
existing multi-level `ParentCommand` mechanism ("info plugins" or
"info themes") — no SDK API change required.
Mechanism (CommandDescriptor + CommandOrderRegistry + MenuChoice):
- New opt-in fields `InlineInMenu` and `InlineDefaultActionLabel`
on CommandDescriptor (default false → zero impact on existing
descriptors).
- InteractiveMenuService.BuildGroupedSelectionPrompt expands inlined
parents into a virtual default-action entry plus visible sub-
subcommands, each with absolute path overrides so CLI dispatch
remains correct.
- Inlined subcommands without nested children are filtered out — a
leaf entry with no extension provides no menu value beyond the
parent's default action.
Bug fix bundled in:
ShowMainMenuAsync had its own dispatch switch that hardcoded
`[selection.Command.Name]` for the args path, ignoring
CommandPathOverride from inlined entries. Clicking an inlined
subcommand at top level produced `Unrecognized command or argument`
from System.CommandLine. The top-level menu now routes through the
same HandleMenuActionAsync as nested menus, honoring the override.
Plugin convention documented in .github/instructions/plugins.instructions.md:
info subcommands are read-only diagnostics (no prompts, compact
output suitable for bug-report copy-paste, safe without project).
0 commit comments