From b445a3320f9659118bf50c5d1b565da3a8d8cbd3 Mon Sep 17 00:00:00 2001 From: Yeachan-Heo Date: Wed, 1 Apr 2026 01:44:55 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20rebrand=20to=20Claw=20Code=20with=20ASC?= =?UTF-8?q?II=20art=20banner,=20claw=20binary,=20lobster=20prompt=20?= =?UTF-8?q?=F0=9F=A6=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/sessions/session-1775007846522.json | 1 + rust/crates/rusty-claude-cli/Cargo.toml | 4 ++ rust/crates/rusty-claude-cli/src/main.rs | 70 ++++++++++++--------- 3 files changed, 46 insertions(+), 29 deletions(-) create mode 100644 .claude/sessions/session-1775007846522.json diff --git a/.claude/sessions/session-1775007846522.json b/.claude/sessions/session-1775007846522.json new file mode 100644 index 0000000..62be311 --- /dev/null +++ b/.claude/sessions/session-1775007846522.json @@ -0,0 +1 @@ +{"messages":[{"blocks":[{"text":"Say hi in one sentence","type":"text"}],"role":"user"},{"blocks":[{"text":"Hi! I'm Claude, ready to help you with any software engineering tasks or questions you have.","type":"text"}],"role":"assistant","usage":{"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":11,"output_tokens":23}}],"version":1} \ No newline at end of file diff --git a/rust/crates/rusty-claude-cli/Cargo.toml b/rust/crates/rusty-claude-cli/Cargo.toml index 7fe9991..625d1e5 100644 --- a/rust/crates/rusty-claude-cli/Cargo.toml +++ b/rust/crates/rusty-claude-cli/Cargo.toml @@ -5,6 +5,10 @@ edition.workspace = true license.workspace = true publish.workspace = true +[[bin]] +name = "claw" +path = "src/main.rs" + [dependencies] api = { path = "../api" } commands = { path = "../commands" } diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index 08a1380..dc8e3ec 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -49,7 +49,7 @@ fn main() { eprintln!( "error: {error} -Run `rusty-claude-cli --help` for usage." +Run `claw --help` for usage." ); std::process::exit(1); } @@ -878,7 +878,7 @@ fn run_repl( permission_mode: PermissionMode, ) -> Result<(), Box> { let mut cli = LiveCli::new(model, true, allowed_tools, permission_mode)?; - let mut editor = input::LineEditor::new("โ€บ ", slash_command_completion_candidates()); + let mut editor = input::LineEditor::new("๐Ÿฆž ", slash_command_completion_candidates()); println!("{}", cli.startup_banner()); loop { @@ -965,14 +965,26 @@ impl LiveCli { } fn startup_banner(&self) -> String { + let cwd = env::current_dir().map_or_else( + |_| "".to_string(), + |path| path.display().to_string(), + ); format!( - "Rusty Claude CLI\n Model {}\n Permission mode {}\n Working directory {}\n Session {}\n\nType /help for commands. Shift+Enter or Ctrl+J inserts a newline.", + "\x1b[38;5;196m\ + โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—\n\ +โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘\n\ +โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ•— โ–ˆโ–ˆโ•‘\n\ +โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘\n\ +โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ•”โ•\n\ + โ•šโ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ• โ•šโ•โ• โ•šโ•โ•โ•โ•šโ•โ•โ•\x1b[0m \x1b[38;5;208mCode\x1b[0m ๐Ÿฆž\n\n\ + \x1b[2mModel\x1b[0m {}\n\ + \x1b[2mPermissions\x1b[0m {}\n\ + \x1b[2mDirectory\x1b[0m {}\n\ + \x1b[2mSession\x1b[0m {}\n\n\ + Type \x1b[1m/help\x1b[0m for commands ยท \x1b[2mShift+Enter\x1b[0m for newline", self.model, self.permission_mode.as_str(), - env::current_dir().map_or_else( - |_| "".to_string(), - |path| path.display().to_string(), - ), + cwd, self.session.id, ) } @@ -981,7 +993,7 @@ impl LiveCli { let mut spinner = Spinner::new(); let mut stdout = io::stdout(); spinner.tick( - "Waiting for Claude", + "๐Ÿฆ€ Thinking...", TerminalRenderer::new().color_theme(), &mut stdout, )?; @@ -990,7 +1002,7 @@ impl LiveCli { match result { Ok(_) => { spinner.finish( - "Claude response complete", + "โœจ Done", TerminalRenderer::new().color_theme(), &mut stdout, )?; @@ -1000,7 +1012,7 @@ impl LiveCli { } Err(error) => { spinner.fail( - "Claude request failed", + "โŒ Request failed", TerminalRenderer::new().color_theme(), &mut stdout, )?; @@ -1742,7 +1754,7 @@ fn render_version_report() -> String { let git_sha = GIT_SHA.unwrap_or("unknown"); let target = BUILD_TARGET.unwrap_or("unknown"); format!( - "Version\n Version {VERSION}\n Git SHA {git_sha}\n Target {target}\n Build date {DEFAULT_DATE}" + "Claw Code\n Version {VERSION}\n Git SHA {git_sha}\n Target {target}\n Build date {DEFAULT_DATE}" ) } @@ -2267,41 +2279,41 @@ fn convert_messages(messages: &[ConversationMessage]) -> Vec { } fn print_help_to(out: &mut impl Write) -> io::Result<()> { - writeln!(out, "rusty-claude-cli v{VERSION}")?; + writeln!(out, "claw v{VERSION}")?; writeln!(out)?; writeln!(out, "Usage:")?; writeln!( out, - " rusty-claude-cli [--model MODEL] [--allowedTools TOOL[,TOOL...]]" + " claw [--model MODEL] [--allowedTools TOOL[,TOOL...]]" )?; writeln!(out, " Start the interactive REPL")?; writeln!( out, - " rusty-claude-cli [--model MODEL] [--output-format text|json] prompt TEXT" + " claw [--model MODEL] [--output-format text|json] prompt TEXT" )?; writeln!(out, " Send one prompt and exit")?; writeln!( out, - " rusty-claude-cli [--model MODEL] [--output-format text|json] TEXT" + " claw [--model MODEL] [--output-format text|json] TEXT" )?; writeln!(out, " Shorthand non-interactive prompt mode")?; writeln!( out, - " rusty-claude-cli --resume SESSION.json [/status] [/compact] [...]" + " claw --resume SESSION.json [/status] [/compact] [...]" )?; writeln!( out, " Inspect or maintain a saved session without entering the REPL" )?; - writeln!(out, " rusty-claude-cli dump-manifests")?; - writeln!(out, " rusty-claude-cli bootstrap-plan")?; + writeln!(out, " claw dump-manifests")?; + writeln!(out, " claw bootstrap-plan")?; writeln!( out, - " rusty-claude-cli system-prompt [--cwd PATH] [--date YYYY-MM-DD]" + " claw system-prompt [--cwd PATH] [--date YYYY-MM-DD]" )?; - writeln!(out, " rusty-claude-cli login")?; - writeln!(out, " rusty-claude-cli logout")?; - writeln!(out, " rusty-claude-cli init")?; + writeln!(out, " claw login")?; + writeln!(out, " claw logout")?; + writeln!(out, " claw init")?; writeln!(out)?; writeln!(out, "Flags:")?; writeln!( @@ -2337,22 +2349,22 @@ fn print_help_to(out: &mut impl Write) -> io::Result<()> { writeln!(out, "Examples:")?; writeln!( out, - " rusty-claude-cli --model claude-opus \"summarize this repo\"" + " claw --model claude-opus \"summarize this repo\"" )?; writeln!( out, - " rusty-claude-cli --output-format json prompt \"explain src/main.rs\"" + " claw --output-format json prompt \"explain src/main.rs\"" )?; writeln!( out, - " rusty-claude-cli --allowedTools read,glob \"summarize Cargo.toml\"" + " claw --allowedTools read,glob \"summarize Cargo.toml\"" )?; writeln!( out, - " rusty-claude-cli --resume session.json /status /diff /export notes.txt" + " claw --resume session.json /status /diff /export notes.txt" )?; - writeln!(out, " rusty-claude-cli login")?; - writeln!(out, " rusty-claude-cli init")?; + writeln!(out, " claw login")?; + writeln!(out, " claw init")?; Ok(()) } @@ -2670,7 +2682,7 @@ mod tests { let mut help = Vec::new(); print_help_to(&mut help).expect("help should render"); let help = String::from_utf8(help).expect("help should be utf8"); - assert!(help.contains("rusty-claude-cli init")); + assert!(help.contains("claw init")); } #[test]