feat: Hackbox banner and brand-aligned CLI styling#78
Conversation
Wrap the ASCII art banner in the edison.watch Hackbox visual system (solid β border with 40% tag, half-height ββ top/bottom bars) and apply brand colors throughout the help output. - Section headers (Usage, Commands, Options, etc.): cyan + bold + underline - Subcommands and flags: cyan - Placeholders: dimmed - after_help sections (WORKFLOWS, EXAMPLES, etc.): styled headers + dim comments - Workflow steps prefixed with cyan βΈ markers - Dashed separator between banner and help text - Version tagline: bold white + graphene grey - All ANSI codes auto-stripped when piped (non-TTY safe) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Greptile SummaryThis PR introduces a "Hackbox" visual system for the CLI banner β a dynamically-sized solid Key changes:
Issues found (all P2 / cosmetic):
Confidence Score: 5/5Safe to merge β all findings are cosmetic/P2 with no functional, correctness, or security impact All three issues are purely visual: a color shade mismatch between banner and help text, a fixed-width separator that is shorter than the banner, and a one-space trailing-pad asymmetry in the tagline. None affect runtime behavior, data correctness, or the ANSI-stripping guarantee for piped output. The Hackbox layout math is self-consistent and TTY guards are correctly placed throughout. No files require special attention β the three cosmetic issues are minor and can be addressed in follow-up polish commits Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[main: no subcommand] --> B[print_banner]
B --> C{is_tty?}
C -- No --> D[Print plain logo lines\nPlain tagline\nReturn]
C -- Yes --> E[Compute box_width\ninner = max logo/tagline + 2\ntag_width = 40% box_width]
E --> F[Print top bar in CYAN]
F --> G[Print tag row with right border]
G --> H[Print blank row]
H --> I[Print each LOGO_LINE\nwith left border + padding]
I --> J[Print tagline\nWHITE_BOLD name + GREY subtitle]
J --> K[Print bottom bar in CYAN]
K --> L{is_tty?}
L -- Yes --> M[Print dashed cyan separator]
L -- No --> N[Skip separator]
M --> O[cmd.print_help via clap anstream\nANSI stripped if non-TTY]
N --> O
O --> P[BRAND_STYLES applied\nAnsiColor::Cyan headers + literals]
P --> Q[after_help rendered\nraw ANSI stripped by anstream on non-TTY]
Reviews (1): Last reviewed commit: "fix: rustfmt and clippy warnings" | Re-trigger Greptile |
- Unify colors: replace ANSI cyan (\x1b[36m) with true-color #C3FFFD (\x1b[38;2;195;255;253m) in both clap Styles and after_help sections to match the banner constants - Make separator width dynamic based on banner box_width - Fix tagline padding to use same ` ` prefix pattern as logo lines Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
βborder with 40% tag anchored top-left, half-heightββtop/bottom bars)after_helpsections (WORKFLOWS, EXAMPLES, PREREQUISITES, DEPRECATED) with colored headers, cyanβΈstep markers, and dimmed#commentsTest plan
cargo testβ 494 passed, 0 failedcargo run --(bare command) β Hackbox renders with aligned borderscargo run -- run --helpβ subcommand help styled correctlycargo run -- 2>&1 | head) β no ANSI codes, clean plaintextπ€ Generated with Claude Code