feat(setup): display ASCII art banner during onboarding (#851)

[skip-regression-check]
This commit is contained in:
Reid
2026-03-11 16:54:42 -07:00
committed by GitHub
parent f3e8e7c599
commit 977b7fde99
2 changed files with 17 additions and 2 deletions
+14
View File
@@ -284,6 +284,20 @@ pub fn confirm(prompt: &str, default: bool) -> io::Result<bool> {
})
}
/// Print the IronClaw ASCII art banner in blue.
pub fn print_banner() {
let mut stdout = io::stdout();
let _ = execute!(stdout, SetForegroundColor(Color::Cyan));
println!();
println!(r" ██╗██████╗ ██████╗ ███╗ ██╗ ██████╗██╗ █████╗ ██╗ ██╗");
println!(r" ██║██╔══██╗██╔═══██╗████╗ ██║██╔════╝██║ ██╔══██╗██║ ██║");
println!(r" ██║██████╔╝██║ ██║██╔██╗ ██║██║ ██║ ███████║██║ █╗ ██║");
println!(r" ██║██╔══██╗██║ ██║██║╚██╗██║██║ ██║ ██╔══██║██║███╗██║");
println!(r" ██║██║ ██║╚██████╔╝██║ ╚████║╚██████╗███████╗██║ ██║╚███╔███╔╝");
println!(r" ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ ");
let _ = execute!(stdout, ResetColor);
}
/// Print a styled header box.
///
/// # Example
+3 -2
View File
@@ -30,8 +30,8 @@ use crate::setup::channels::{
SecretsContext, setup_http, setup_signal, setup_tunnel, setup_wasm_channel,
};
use crate::setup::prompts::{
confirm, input, optional_input, print_error, print_header, print_info, print_step,
print_success, secret_input, select_many, select_one,
confirm, input, optional_input, print_banner, print_error, print_header, print_info,
print_step, print_success, secret_input, select_many, select_one,
};
// unused const, keep commented for clarity / future use
@@ -141,6 +141,7 @@ impl SetupWizard {
/// settings are loaded from the database after Step 1 establishes a
/// connection, so users don't have to re-enter everything.
pub async fn run(&mut self) -> Result<(), SetupError> {
print_banner();
print_header("IronClaw Setup Wizard");
if self.config.channels_only {