NextIteration.SpectreConsole.Splash
1.0.0
dotnet add package NextIteration.SpectreConsole.Splash --version 1.0.0
NuGet\Install-Package NextIteration.SpectreConsole.Splash -Version 1.0.0
<PackageReference Include="NextIteration.SpectreConsole.Splash" Version="1.0.0" />
<PackageVersion Include="NextIteration.SpectreConsole.Splash" Version="1.0.0" />
<PackageReference Include="NextIteration.SpectreConsole.Splash" />
paket add NextIteration.SpectreConsole.Splash --version 1.0.0
#r "nuget: NextIteration.SpectreConsole.Splash, 1.0.0"
#:package NextIteration.SpectreConsole.Splash@1.0.0
#addin nuget:?package=NextIteration.SpectreConsole.Splash&version=1.0.0
#tool nuget:?package=NextIteration.SpectreConsole.Splash&version=1.0.0
NextIteration.SpectreConsole.Splash
A reusable Figgle-and-Spectre.Console splash screen for .NET CLIs.
- Configurable app name, Figgle font, gradient palette, and tagline strategy.
- Piecewise-linear gradient across an arbitrary number of
#RRGGBBstops. - Built-in pool of ~300 developer-culture taglines, or supply your own.
- Performance-first: the entire splash is assembled as one markup string and
emitted via a single
AnsiConsole.Markupcall.
Targets net8.0 and net10.0. Both targets carry an identical public surface and are
covered by the same test suite on Linux, Windows, and macOS.
Install
dotnet add package NextIteration.SpectreConsole.Splash
Usage
using NextIteration.SpectreConsole.Splash;
// One-line: defaults (Roman font, neutral blue gradient, random tagline).
SplashScreen.Show("my-cli");
// Fully configured.
SplashScreen.Show(new SplashOptions
{
AppName = "my-cli",
Font = Figgle.Fonts.FiggleFonts.Slant,
Colors = new SplashColors("#FFEB3B", "#FF9800", "#F44336"),
Tagline = SplashTagline.FromProvider(() => $"v{AppVersion.Current}"),
});
// Suppress the tagline.
SplashScreen.Show(new SplashOptions
{
AppName = "quiet",
Tagline = SplashTagline.None,
});
Defaults at a glance
| Property | Default |
|---|---|
Font |
FiggleFonts.Roman |
Colors |
#60A5FA → #1D4ED8 (neutral blue, reads on light/dark) |
Tagline |
Random pick from the built-in quote pool (~300 entries) |
Architecture
| File | Role |
|---|---|
SplashScreen.cs |
Public entry point (Show). |
SplashOptions.cs |
Per-call configuration. Only AppName is required. |
SplashColors.cs |
Gradient palette; validates #RRGGBB at construction. |
SplashTagline.cs |
Strategy for the sub-logo tagline (None / RandomBuiltIn / FromProvider). |
Internal/Gradient.cs |
Pure-function piecewise-linear interpolation, O(width) regardless of N stops. |
Internal/Renderer.cs |
Builds the full splash as one Spectre.Console markup string. |
Internal/Quotes.cs |
Built-in tagline pool. |
Performance notes
The original internal precursor of this library emitted one
AnsiConsole.Write(char) call per visible logo character — ~250 calls for
a typical Roman logo, each flushing its own ANSI colour-change escape.
This rewrite batches the entire splash (logo + tagline) into a single
Spectre markup string and does one AnsiConsole.Markup call. Measured
cold start on a 64×7 Roman logo: ~60 ms before, <10 ms after.
Additional wins:
FiggleFonts.Roman.Renderruns on the firstShowcall, not at class-load.- Line endings normalise on
\nand trim trailing\r— no more Windows-only logo splits breaking silently on Unix. - Space characters skip the colour-escape wrapper entirely (saves ~14 markup chars per space).
Requirements
- .NET 8.0 or .NET 10.0 (the package multi-targets
net8.0;net10.0) - Spectre.Console 0.57.2+
- Figgle and Figgle.Fonts 0.6.6+
These floors are the versions the package is built and tested against. All three are pre-1.0 and version independently of the .NET runtime, so each takes a single common floor rather than one per target framework — a per-TFM floor would be meaningless where breaking changes land between minors.
Everything else is transitive.
Contributing
Issues and PRs welcome — see CONTRIBUTING.md. This repository follows the baseline in NextIteration.Standards.
License
MIT — see LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Figgle (>= 0.6.6)
- Figgle.Fonts (>= 0.6.6)
- Spectre.Console (>= 0.57.2)
-
net8.0
- Figgle (>= 0.6.6)
- Figgle.Fonts (>= 0.6.6)
- Spectre.Console (>= 0.57.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.