Summary
Add an interactive splash screen shown when ytstudio is run with no command (and optionally behind a ytstudio / ytstudio menu entrypoint). It gives the tool a recognizable header and turns the bare CLI into a friendly launcher: an ASCII logo + wordmark, a one-line tagline, the current auth/profile state, and an arrow-key menu of the top-level command groups with short descriptions.
This keeps the tool fully scriptable (every command stays available non-interactively) while giving humans a nicer entry point. AI-agent usage is unaffected: the splash only renders for an interactive TTY with no subcommand.
Proposed ASCII layout
True ASCII (no Unicode block/box glyphs) so it renders identically across terminals and fonts. Logo (play button) on the left, wordmark on the right, mirroring a typical TUI header:
+-----------+ __ _______ ____ _____ _ _ ____ ___ ___
| |\ | \ \ / /_ _| / ___|_ _| | | | _ \_ _/ _ \
| | \ | \ V / | | \___ \ | | | | | | | | | | | | |
| | > | | | | | ___) || | | |_| | |_| | | |_| |
| | / | |_| |_| |____/ |_| \___/|____/___\___/
| |/ | manage & analyze your YouTube channel from the terminal
+-----------+
Below the header: a status line, the prompt, and the selectable menu. The > marks the
highlighted row; the command name is bold, the description dimmed:
Signed in as @channelhandle | profile: default
What would you like to do?
> Videos - bulk update, upload, search-replace metadata
Analytics - channel & video performance queries
Comments - list, reply, approve, reject, ban
Livestreams - schedule, start, stop, update broadcasts
Playlists - bulk-add by search, reorder by views
Profile - switch or manage channel profiles
Status - show auth & current configuration
Quit
Selecting an item either runs the simple command directly (Status, Quit) or drops into that
group's own help/submenu (Videos, Analytics, ...). Menu items map 1:1 to the existing top-level
commands, so nothing new has to be wired into the command tree.
Not-yet-authenticated state
When there are no credentials/active profile, surface onboarding first instead of the channel menu:
Not signed in.
What would you like to do?
> Init - set up Google OAuth credentials
Login - authenticate with YouTube
Quit
Behavior / scope
- Render the splash only when: stdout is a TTY and no subcommand was given. Otherwise behave exactly as today (so pipes, CI, and agents are unaffected).
- Add a
--no-splash / YTSTUDIO_NO_SPLASH=1 escape hatch, and keep ytstudio --help as the plain Typer help (unchanged).
- Menu selection: arrow keys + enter; also accept first-letter / number shortcuts.
q or Ctrl-C quits cleanly.
- Colors via the existing Rich/terminal styling; degrade gracefully with
NO_COLOR.
- The exact figlet wordmark + play-button glyphs above are a starting point; open to refinement (e.g. a tighter logo, or a "YouTube red" accent on the wordmark).
Open questions
- Standalone entrypoint: splash on bare
ytstudio, or a dedicated ytstudio menu, or both?
- Should the status line do a (cached) channel-handle lookup, or stay purely local config to avoid an API call on startup?
- Wordmark text:
YTSTUDIO (one word, as above) vs YT STUDIO (two words)?
Summary
Add an interactive splash screen shown when
ytstudiois run with no command (and optionally behind aytstudio/ytstudio menuentrypoint). It gives the tool a recognizable header and turns the bare CLI into a friendly launcher: an ASCII logo + wordmark, a one-line tagline, the current auth/profile state, and an arrow-key menu of the top-level command groups with short descriptions.This keeps the tool fully scriptable (every command stays available non-interactively) while giving humans a nicer entry point. AI-agent usage is unaffected: the splash only renders for an interactive TTY with no subcommand.
Proposed ASCII layout
True ASCII (no Unicode block/box glyphs) so it renders identically across terminals and fonts. Logo (play button) on the left, wordmark on the right, mirroring a typical TUI header:
Below the header: a status line, the prompt, and the selectable menu. The
>marks thehighlighted row; the command name is bold, the description dimmed:
Selecting an item either runs the simple command directly (Status, Quit) or drops into that
group's own help/submenu (Videos, Analytics, ...). Menu items map 1:1 to the existing top-level
commands, so nothing new has to be wired into the command tree.
Not-yet-authenticated state
When there are no credentials/active profile, surface onboarding first instead of the channel menu:
Behavior / scope
--no-splash/YTSTUDIO_NO_SPLASH=1escape hatch, and keepytstudio --helpas the plain Typer help (unchanged).qor Ctrl-C quits cleanly.NO_COLOR.Open questions
ytstudio, or a dedicatedytstudio menu, or both?YTSTUDIO(one word, as above) vsYT STUDIO(two words)?