Repository navigation
Provider framework and unified provider UX #134
Copy link
Copy link
Closed
5 / 55 of 5 issues completedLabels
area:uiUI and visual presentationUI and visual presentationtype:featureNew feature or improvementNew feature or improvement
Milestone
Description
Goal
Shared product/UI infrastructure so every provider family looks and behaves consistently:
- provider discovery
- installed / not installed state
- healthy / unavailable state
- Native vs external
- selection and persisted choice
- configuration entry points
- optional install flow
- previews where relevant
- consistent
/settingspresentation - graceful fallback
- provider-specific capability reporting
Why
Prompt providers (NMSh Native, Starship, Powerlevel10k: #58, #67) already do this ad hoc. Welcome, Suggestions, Completions, History and Pickers are all gaining external options. Without shared infrastructure, each family would reinvent status, fallback and settings UI differently.
Product principle
Excellent Native implementation + optional external providers. Native stays the default in most categories. External tools enhance NMSh and never become required dependencies.
Architectural constraints
- No universal
Providerinterface with dozens of optional methods. Each family has its own TypeScript interface for its runtime job: prompt render, welcome render, suggestion query, completion candidates, history search, picker selection. - The shared layer covers metadata, status and UI only: id, family, display name, Native/external, detection (executable, version), health, family-specific capability flags, install reference (Optional shell-tool discovery and first-run setup #9), configuration link (Tool configuration center: read/edit supported tool config inside /settings #83), preview hook.
- Detection is cheap, cached and async. It never blocks startup or keystrokes.
- A missing binary, timeout, crash or bad output falls back to Native (or None) with a factual notice. It never breaks the editor or shell.
- External invocation uses argv (no shell interpolation), timeouts and bounded output.
Foundation checkpoint (this issue)
- Shared provider descriptor/status model and registry.
- Shared provider list/gallery component on the panel shell (Shared panel shell and temporary top boundary #90): status badges, preview area, persisted choice, fallback notice. Extracted from
/promptprovider selection. -
/settings(Central /settings root browser #86) presents each family's providers the same way. - Prompt providers migrate onto the shared descriptor with no visible change.
Provider families
- Welcome — Welcome providers: Vespyr, Fastfetch, Neofetch and None #135
- Suggestions — Suggestion providers and predictive ghost text #137
- Completions — Rich completion and CLI IntelliSense system #140
- History / search — Rich history search and metadata #143
- Pickers — Picker abstraction and external fuzzy finders #145
- Prompt — Native, Starship, Powerlevel10k already exist. Oh My Posh remains a research candidate only, not a committed provider.
Non-goals
- A plugin marketplace or third-party plugin API (Optional shell-tool discovery and first-run setup #9 explicitly excludes a marketplace).
- Automatic installation of any provider.
Acceptance criteria
- Prompt provider UI runs on the shared components without visual regression.
- A missing or broken external provider shows its status and falls back cleanly.
- Family runtime interfaces stay separate; shared code covers metadata, status and UI only.
Dependencies / related
- Next after Transcript presenter: centralize command/output row presentation #122 on the main implementation path.
- Optional shell-tool discovery and first-run setup #9 discovery/install, Tool configuration center: read/edit supported tool config inside /settings #83 tool configuration, Performance strategy: TypeScript first, native helpers only when measured #155 performance strategy.
Research references
- Starship: https://github.com/starship/starship (existing provider)
- Oh My Posh: https://github.com/JanDeDobbeleer/oh-my-posh (research candidate only)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:uiUI and visual presentationUI and visual presentationtype:featureNew feature or improvementNew feature or improvement
Activity
raiseCatError commentedon Sep 27, 2026
Foundation checkpoint merged to dev in c8e937d (PR #157): descriptors/status/detection/runExternal/fallback in src/providers/providers.ts, shared gallery panel in src/providers/ProviderPanel.ts, prompt providers on the shared descriptor with unchanged rows. Welcome (#135) is done. Suggestions (#137) is next. Completions/History/Pickers (#140/#143/#145) are outside v0.5.
raiseCatError commentedon Sep 27, 2026
v0.5 scope complete: shared descriptor/status/detection/fallback and gallery panel (PR #157), Prompt migrated with no visual change, Welcome (#135) and Suggestions (#137/#138/#139) on the shared foundation. Completions/History/Pickers (#140/#143/#145) will adopt it in their own milestones.