Skip to content

Commit 5f856ee

Browse files
committed
refactor(cli): drop ASCII logo, slim welcome panel (#23)
The block-letter ASCII art "Revela" rendered at startup was off-brand vs. the actual aperture wordmark — generic figlet output that has nothing to do with the project's visual identity. It also added ~6 lines of friction on every interactive menu render, pushing real content offscreen on small terminals and SSH sessions. Removed: `LogoLines` array, `ShowLogo()`, `ClearAndShowLogo()`. Welcome panel slimmed: - Header: "Welcome" → "Revela" - Removed: redundant "Version" line (now in `revela info`) - Removed: "Modern static site generator for photographers" tagline (already known to the user invoking the binary) - Kept: project/directory line and navigation hint The first-run panel (`ShowFirstRunPanel`) is unchanged — that genuine first-contact moment may welcome a future, brand-aligned visual element, but the per-menu-render branding is gone. Three call sites in InteractiveMenuService updated from `ClearAndShowLogo()` to `ClearConsole()` were already shipped in the previous commit alongside the menu-rendering refactor. CHANGELOG documents all three #23 commits in one consolidated block. Closes #23
1 parent 42f35a4 commit 5f856ee

2 files changed

Lines changed: 31 additions & 44 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- **`revela info` command tree** — new diagnostic command tree exposing version data and installed packages. `revela info` (default action) prints a Revela summary panel; `revela info plugins` lists all installed plugins with version and source; `revela info themes` lists themes with the active one marked. Plugins/themes can contribute per-package detail subcommands by registering with `ParentCommand: "info plugins"` / `"info themes"` (read-only diagnostic convention documented in `plugins.instructions.md`). ([#23](https://github.com/Spectara/Revela/issues/23))
13+
- **`IBuildInfo` SDK service** — new `Spectara.Revela.Sdk.Hosting.IBuildInfo` interface (with `HostKind` enum: `Standalone` / `Embedded`) exposes the immutable build-time identity of the running host. Single source of truth for `--version`, `revela info`, and any plugin that needs to branch on host kind (e.g. self-update plugins hiding themselves in embedded builds). Detected via `Revela.HostKind` assembly metadata attribute set in `Cli.Embedded.csproj` — sidesteps the `AssemblyName="revela"` collision that makes name-based detection impossible. ([#23](https://github.com/Spectara/Revela/issues/23))
14+
- **`CommandDescriptor.InlineInMenu` + `InlineDefaultActionLabel`** — opt-in fields that flatten a parent command's inline appearance in the interactive menu while leaving CLI behavior unchanged. Used by `revela info` to render `Info → Revela / Plugins → / Themes →` instead of `Info → info → …`. Default `false`, zero impact on existing descriptors. ([#23](https://github.com/Spectara/Revela/issues/23))
15+
16+
### Changed
17+
18+
- **`revela --version` is now human-readable and host-kind aware** — the System.CommandLine default action is replaced with a renderer that prints `revela 1.0.0 (.NET 10.0.7)` (or `… — embedded build` for the standalone variant). Identical to the first line of `revela info`, so both surfaces report the same identifier. ([#23](https://github.com/Spectara/Revela/issues/23))
19+
- **Welcome panel slimmed down** — the ASCII-art Revela logo is removed from interactive startup (it was off-brand vs. the actual aperture wordmark and added ~6 lines of friction on every menu render). The welcome panel header is now `Revela`; the redundant `Version` line and the `Modern static site generator for photographers` tagline are gone. Version data lives in `revela info` (canonical for both CLI and TUI users). The first-run panel is unchanged. ([#23](https://github.com/Spectara/Revela/issues/23))
20+
21+
### Fixed
22+
23+
- **Inlined-parent menu entries dispatched to the wrong command** — clicking an inlined subcommand in the interactive main menu (e.g. `Plugins` under `Info`) built the args path from the leaf name only (`["plugins"]`) instead of the absolute path (`["info","plugins"]`), producing an `Unrecognized command or argument` error from System.CommandLine. The top-level menu now routes `Navigate`/`Execute` selections through the same dispatcher as nested menus, honoring `MenuChoice.CommandPathOverride`. ([#23](https://github.com/Spectara/Revela/issues/23))
24+
1025
## [0.0.1-beta.20] - 2026-05-06
1126

1227
### Fixed

src/Cli/Hosting/ConsoleUI.cs

Lines changed: 16 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
using System.Reflection;
2-
31
using Spectara.Revela.Sdk;
42

53
using Spectre.Console;
@@ -30,68 +28,42 @@ internal static class ConsoleUI
3028
/// </summary>
3129
internal static readonly Style GroupHeaderStyle = new(Color.Grey);
3230

33-
private static readonly string[] LogoLines =
34-
[
35-
@" ____ _ ",
36-
@" | _ \ _____ _____| | __ _ ",
37-
@" | |_) / _ \ \ / / _ \ |/ _` |",
38-
@" | _ < __/\ V / __/ | (_| |",
39-
@" |_| \_\___| \_/ \___|_|\__,_|",
40-
];
41-
4231
/// <summary>
43-
/// Clears the console and displays the Revela ASCII logo.
32+
/// Clears the console (no banner).
4433
/// </summary>
45-
public static void ClearAndShowLogo()
46-
{
47-
AnsiConsole.Clear();
48-
ShowLogo();
49-
}
34+
/// <remarks>
35+
/// Version data is no longer shown at startup — use <c>revela info</c>
36+
/// (CLI) or the <c>Info</c> menu group (TUI) for version and host details.
37+
/// </remarks>
38+
public static void ClearConsole() => AnsiConsole.Clear();
5039

5140
/// <summary>
52-
/// Displays the Revela ASCII logo.
41+
/// Displays a compact welcome panel with optional project context.
5342
/// </summary>
54-
public static void ShowLogo()
55-
{
56-
foreach (var line in LogoLines)
57-
{
58-
AnsiConsole.MarkupLine("[cyan1]" + line + "[/]");
59-
}
60-
61-
AnsiConsole.WriteLine();
62-
}
63-
64-
/// <summary>
65-
/// Displays a welcome panel with version and optional project context.
66-
/// </summary>
67-
/// <param name="projectName">Project name to display (null for no project context)</param>
68-
/// <param name="folderName">Folder name to display when no project name is set</param>
43+
/// <param name="projectName">Project name to display (null for no project context).</param>
44+
/// <param name="folderName">Folder name to display when no project name is set.</param>
6945
public static void ShowWelcomePanel(string? projectName = null, string? folderName = null)
7046
{
71-
var version = Assembly.GetEntryAssembly()?.GetName().Version?.ToString(3) ?? "1.0.0";
72-
73-
var lines = new List<string>
74-
{
75-
$"[bold]Version {version}[/]",
76-
"[dim]Modern static site generator for photographers[/]"
77-
};
47+
var lines = new List<string>();
7848

7949
if (!string.IsNullOrEmpty(projectName))
8050
{
81-
lines.Add(string.Empty);
8251
lines.Add($"[blue]Project:[/] {Markup.Escape(projectName)}");
8352
}
8453
else if (!string.IsNullOrEmpty(folderName))
8554
{
86-
lines.Add(string.Empty);
8755
lines.Add($"[dim]Directory:[/] {Markup.Escape(folderName)}");
8856
}
8957

90-
lines.Add(string.Empty);
58+
if (lines.Count > 0)
59+
{
60+
lines.Add(string.Empty);
61+
}
62+
9163
lines.Add("[blue]Navigate with[/] [bold]↑↓[/][blue], select with[/] [bold]Enter[/]");
9264

9365
var panel = new Panel(new Markup(string.Join("\n", lines)))
94-
.WithHeader("[cyan1]Welcome[/]")
66+
.WithHeader("[cyan1]Revela[/]")
9567
.WithInfoStyle();
9668

9769
AnsiConsole.Write(panel);

0 commit comments

Comments
 (0)