Repository navigation
Welcome providers: Vespyr, Fastfetch, Neofetch and None #135
Copy link
Copy link
Closed
Labels
area:uiUI and visual presentationUI and visual presentationtype:featureNew feature or improvementNew feature or improvement
Milestone
Description
Goal
Let users choose what appears at the top of a new presentation session.
| Provider | Kind | Notes |
|---|---|---|
| Vespyr | NMSh Native | Default. The current NMSh cat welcome (#56) |
| Fastfetch | External | Uses the user's installed fastfetch and its configuration |
| Neofetch | Legacy external | Upstream is archived; supported only if already installed |
| None | — | No startup welcome |
UX / product direction
- The selection UI mirrors
/promptprovider selection: list/gallery, install/detection state, preview, persisted choice, safe fallback. Built on Provider framework and unified provider UX #134. - A
/welcomegallery command is optional; include it only if natural. The/settingsprovider page is enough for v1.
Behavior
- Welcome content is session presentation, not command output. It never enters shell history,
/copy, exit status, command counts or Smart Folding. - New presentation sessions (launch,
/clear) use the selected welcome. - Resumed archived sessions keep the welcome that belonged to them, stored as a session snapshot like today's
WelcomeSnapshot. Changing provider never rewrites history. - Fastfetch/Neofetch run the user's installed tool with the user's own configuration. NMSh does not reimplement them. Output is captured once at session start (argv, timeout, bounded size, no stdin) and stored as the snapshot.
- Narrow terminals clip or hide the welcome rather than wrapping garbage.
- Failure or timeout falls back to Vespyr with a quiet notice.
- Real images can come later through terminal image protocols (Rich terminal preview surfaces #151). v1 uses text logos; fetch-tool image logo modes are not passed through blindly.
Non-goals
- Reimplementing fetch tools.
- Arbitrary custom welcome scripts.
- New animation beyond the existing blink.
Acceptance criteria
- All four providers are selectable, previewed and persisted.
- Fastfetch/Neofetch show installed/missing/version. Missing tools offer install via Optional shell-tool discovery and first-run setup #9 only with explicit confirmation.
-
/copy, history, Smart Folding and exit status are unaffected. -
/resumerestores the original welcome;/clearuses the current provider. - A slow or hanging fetch tool never blocks the composer beyond the timeout.
- Physical Ghostty check including narrow widths.
Dependencies / related
- Part of Provider framework and unified provider UX #134; depends on its foundation checkpoint.
- Welcome rows render through Transcript presenter: centralize command/output row presentation #122. Related Fresh-session welcome header and NMSh cat mascot #56, Optional shell-tool discovery and first-run setup #9, Rich terminal preview surfaces #151.
Research references
- Fastfetch: https://github.com/fastfetch-cli/fastfetch
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:uiUI and visual presentationUI and visual presentationtype:featureNew feature or improvementNew feature or improvement
Activity
[-]Welcome providers: Miss Whiskers, Fastfetch, Neofetch and None[/-][+]Welcome providers: Vespyr, Fastfetch, Neofetch and None[/+]raiseCatError commentedon Sep 27, 2026
Merged to dev in c8e937d (PR #157). Vespyr (default), Fastfetch, Neofetch (legacy, no install offer) and None, selectable from /settings via the shared provider panel. Captured once per new presentation into the welcome snapshot; /resume restores the archived welcome; failures and timeouts (2.5s) fall back to Vespyr with a quiet notice. CI green, 458/458 tests. Physical Ghostty check, including narrow widths, is deferred to the consolidated v0.5 validation.