mirror of
https://github.com/hanzoai/dev.git
synced 2026-10-25 03:32:32 +00:00
feat: rebrand from Code to Hanzo Dev throughout codebase
- Update terminal title from 'Code' to 'Hanzo Dev'
- Update welcome screen, auth screen, and trust directory prompts
- Update slash command descriptions (/undo, /init, /quit, /login, /logout)
- Update user approval widget ('Dev wants to run...')
- Update error messages and status messages
- Update prompts (prompt_coder.md, prompt_coordinator.md)
- Update chatwidget header from 'Every Code' to 'Hanzo Dev'
- Update agent install/upgrade helper messages
- Fix all compiler warnings (unused imports, unused mut, unused vars)
- Add multi-provider detection for auth (Claude, Gemini, Qwen, Vibe, Copilot, Ollama)
- Update code comments to reference Dev instead of Code
This commit is contained in:
@@ -1568,7 +1568,7 @@ async fn doctor_main() -> anyhow::Result<()> {
|
||||
let exe = std::env::current_exe()
|
||||
.map(|p| p.display().to_string())
|
||||
.unwrap_or_else(|_| "<unknown>".to_string());
|
||||
println!("code version: {}", hanzo_version::version());
|
||||
println!("hanzo dev version: {}", hanzo_version::version());
|
||||
println!("current_exe: {exe}");
|
||||
|
||||
// PATH
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
In this environment, you are running as `code` and your name is Code. Code is a fork Codex CLI, an open source project led by OpenAI.
|
||||
In this environment, you are running as `dev` and your name is Hanzo Dev. Hanzo Dev is a fork of Codex CLI, an open source project led by OpenAI.
|
||||
|
||||
Code is a fast, community-driven fork focused on key developer ergonomics: Browser control, multi-agent flows, autonomous tasks, and on-the-fly reasoning control - all while staying compatible with upstream.
|
||||
Hanzo Dev is a fast, community-driven fork focused on key developer ergonomics: Browser control, multi-agent flows, autonomous tasks, and on-the-fly reasoning control - all while staying compatible with upstream.
|
||||
|
||||
# Changes
|
||||
|
||||
This version has a few key changes and additions. In particular it is focus on providing you with more tools and has a number of feature designed to allow you to complete long term coding tasks with ease. You have much more independent control over your environment and should perform tasks without requesting human assistance.
|
||||
|
||||
## Code design
|
||||
## Dev design
|
||||
Focus on producing final, maintable, production ready code every time.
|
||||
- AVOID flags and feature gates. If every minor feature gets a flag, it creates a spagetti of intractable dependencies.
|
||||
- AVOID retaining dead code. Old code can always be recovered from git. Retaining it at scale significant increasing the
|
||||
@@ -39,7 +39,7 @@ You still have access to CLI tools through the shell function. Use it for any co
|
||||
{"command":["sh","-lc","git log --since='14 days ago' --stat"]}
|
||||
{"command":["apply_patch","*** Begin Patch\n*** Add File: hello.txt\n+Hello, world!\n*** End Patch\n"]}
|
||||
|
||||
When you run shell tools with Code they will run in the foreground for up to 10 seconds, then yield and run in the background. This stops long running tools from disrupting your workflow. You can then use wait until they complete, or continue with other work while they are running. If you have other work to complete, you should always try to complete this while the tool is running. You will receive a message when the tool completes in the background. The output of your commands is not shown to the user.
|
||||
When you run shell tools with Dev they will run in the foreground for up to 10 seconds, then yield and run in the background. This stops long running tools from disrupting your workflow. You can then use wait until they complete, or continue with other work while they are running. If you have other work to complete, you should always try to complete this while the tool is running. You will receive a message when the tool completes in the background. The output of your commands is not shown to the user.
|
||||
|
||||
## Browser tools
|
||||
Use the browser tools to open a live page, interact with it, and harvest results. When the browser is open, screenshots are auto-attached to your subsequent messages. The browser will either be an internal headless browser, or a CPD connection to the user's active Chrome browser. Your screenshots will be 1024×768 which exactly matches the viewport.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
You have a special role within Code. You are the Auto Drive Coordinator — a mission lead orchestrating this coding session. You direct the Code CLI (role: user) and helper agents, but you never implement work yourself.
|
||||
You have a special role within Hanzo Dev. You are the Auto Drive Coordinator — a mission lead orchestrating this coding session. You direct the Dev CLI (role: user) and helper agents, but you never implement work yourself.
|
||||
|
||||
# Mission Lead Responsibilities
|
||||
- **Set direction**: Define the outcome and success criteria each turn.
|
||||
|
||||
@@ -11452,8 +11452,8 @@ pub(super) fn debug_history(label: &str, items: &[ResponseItem]) {
|
||||
})
|
||||
.collect();
|
||||
let rendered = preview.join(" | ");
|
||||
#[allow(clippy::print_stderr)]
|
||||
if std::env::var_os("HANZO_COMPACT_TRACE").is_some() {
|
||||
#[allow(clippy::print_stderr)]
|
||||
eprintln!("[compact_history] {label} => [{rendered}]");
|
||||
}
|
||||
info!(
|
||||
|
||||
@@ -126,7 +126,7 @@ pub struct Config {
|
||||
pub model: String,
|
||||
|
||||
/// True if the model was explicitly chosen by the user (via CLI args,
|
||||
/// config.toml, or a profile). When false, Code may adopt a server-provided
|
||||
/// config.toml, or a profile). When false, Dev may adopt a server-provided
|
||||
/// default model (e.g. "codex-auto-balanced") when available.
|
||||
pub model_explicit: bool,
|
||||
|
||||
@@ -230,7 +230,7 @@ pub struct Config {
|
||||
/// OTEL configuration (exporter type, endpoint, headers, etc.).
|
||||
pub otel: crate::config_types::OtelConfig,
|
||||
|
||||
/// When true, Code will silently install updates on startup whenever a newer
|
||||
/// When true, Dev will silently install updates on startup whenever a newer
|
||||
/// release is available. Upgrades are performed using the package manager
|
||||
/// that originally installed the CLI (Homebrew or npm). Manual installs are
|
||||
/// never upgraded automatically.
|
||||
@@ -341,7 +341,7 @@ pub struct Config {
|
||||
pub model_reasoning_effort: ReasoningEffort,
|
||||
|
||||
/// Optional preferred reasoning effort for the chat model. When the active model
|
||||
/// does not support this level, Code will clamp the effective effort but keep
|
||||
/// does not support this level, Dev will clamp the effective effort but keep
|
||||
/// the preference so switching back restores it.
|
||||
pub preferred_model_reasoning_effort: Option<ReasoningEffort>,
|
||||
|
||||
|
||||
@@ -50,17 +50,17 @@ fn warn_on_suspicious_cli_overrides(cli_paths: &[String]) {
|
||||
}
|
||||
|
||||
for cli_path in cli_paths {
|
||||
#[allow(clippy::print_stderr)]
|
||||
if cli_path == "auto_drive.use_chat_model"
|
||||
|| (cli_path.starts_with("auto_drive.") && cli_path.ends_with(".use_chat_model"))
|
||||
{
|
||||
#[allow(clippy::print_stderr)]
|
||||
eprintln!(
|
||||
"Warning: unknown config override `{cli_path}` (ignored). Did you mean `auto_drive_use_chat_model`?"
|
||||
);
|
||||
}
|
||||
|
||||
#[allow(clippy::print_stderr)]
|
||||
if cli_path == "auto_review_enabled" {
|
||||
#[allow(clippy::print_stderr)]
|
||||
eprintln!(
|
||||
"Warning: unknown config override `{cli_path}` (ignored). Did you mean `tui.auto_review_enabled`?"
|
||||
);
|
||||
@@ -97,9 +97,11 @@ fn warn_on_unknown_cli_overrides(cli_paths: &[String], ignored_paths: &[String])
|
||||
}
|
||||
|
||||
#[allow(clippy::print_stderr)]
|
||||
eprintln!(
|
||||
"Warning: unknown config override `{cli_path}` (ignored). See `code exec --help` for valid keys."
|
||||
);
|
||||
{
|
||||
eprintln!(
|
||||
"Warning: unknown config override `{cli_path}` (ignored). See `dev exec --help` for valid keys."
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ impl RemoteModelsManager {
|
||||
|
||||
/// Returns the remote default model slug when available.
|
||||
///
|
||||
/// When the user did not explicitly choose a model, Code may adopt this
|
||||
/// When the user did not explicitly choose a model, Dev may adopt this
|
||||
/// server-provided default without persisting it.
|
||||
pub async fn default_model_slug(&self, auth_mode: Option<AuthMode>) -> Option<String> {
|
||||
self.ensure_loaded_from_disk().await;
|
||||
|
||||
@@ -117,9 +117,9 @@ fn create_seatbelt_command_args(
|
||||
"{MACOS_SEATBELT_BASE_POLICY}\n{file_read_policy}\n{file_write_policy}\n{network_policy}"
|
||||
);
|
||||
|
||||
#[allow(clippy::print_stderr)]
|
||||
if std::env::var("HANZO_DEBUG_PRINT_SEATBELT").is_ok() {
|
||||
#[allow(clippy::print_stderr)]
|
||||
eprintln!("--- Codex Seatbelt Policy ---\n{full_policy}\n------------------------------");
|
||||
eprintln!("--- Hanzo Dev Seatbelt Policy ---\n{full_policy}\n------------------------------");
|
||||
}
|
||||
|
||||
let mut seatbelt_args: Vec<String> = vec!["-p".to_string(), full_policy];
|
||||
|
||||
@@ -370,7 +370,7 @@ fn format_use_agent_prompt(agent: &CustomAgentDef) -> String {
|
||||
pub fn format_language_command(
|
||||
language: &str,
|
||||
task: &str,
|
||||
agents: Option<&[AgentConfig]>,
|
||||
_agents: Option<&[AgentConfig]>,
|
||||
) -> String {
|
||||
let language_agents = match language {
|
||||
"python" => vec!["python", "claude", "codex"],
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::mpsc::Receiver;
|
||||
use std::thread;
|
||||
@@ -17,7 +16,6 @@ use hanzo_cloud_tasks_client::CloudTaskError;
|
||||
use hanzo_cloud_tasks_client::TaskId;
|
||||
use hanzo_core::config::add_project_allowed_command;
|
||||
use hanzo_core::config_types::Notifications;
|
||||
use hanzo_core::protocol::Event;
|
||||
use hanzo_core::protocol::Op;
|
||||
use hanzo_core::protocol::SandboxPolicy;
|
||||
use hanzo_login::AuthManager;
|
||||
|
||||
@@ -310,7 +310,7 @@ pub(crate) struct ChatWidgetArgs {
|
||||
}
|
||||
|
||||
impl App<'_> {
|
||||
pub(crate) const DEFAULT_TERMINAL_TITLE: &'static str = "Code";
|
||||
pub(crate) const DEFAULT_TERMINAL_TITLE: &'static str = "Hanzo Dev";
|
||||
|
||||
#[cfg(unix)]
|
||||
pub(crate) fn sigterm_triggered(&self) -> bool {
|
||||
|
||||
@@ -645,7 +645,7 @@ impl AgentEditorView {
|
||||
))
|
||||
} else {
|
||||
Line::from(Span::styled(
|
||||
"Required: explain what this agent is good at so Code can pick it intelligently.",
|
||||
"Required: explain what this agent is good at so Dev can pick it intelligently.",
|
||||
desc_style,
|
||||
))
|
||||
};
|
||||
|
||||
@@ -111,7 +111,7 @@ impl UpdateSettingsView {
|
||||
let Some(latest) = state.latest_version.clone() else {
|
||||
self.app_event_tx.send_background_event_with_ticket(
|
||||
&self.ticket,
|
||||
"✅ Code is already up to date.".to_string(),
|
||||
"✅ Dev is already up to date.".to_string(),
|
||||
);
|
||||
return;
|
||||
};
|
||||
@@ -137,7 +137,7 @@ impl UpdateSettingsView {
|
||||
self.app_event_tx.send_background_event_with_ticket(
|
||||
&self.ticket,
|
||||
format!(
|
||||
"↻ Complete the guided terminal steps for `{}` then restart Code to finish upgrading to {}.",
|
||||
"↻ Complete the guided terminal steps for `{}` then restart Dev to finish upgrading to {}.",
|
||||
display, latest
|
||||
),
|
||||
);
|
||||
|
||||
@@ -4575,6 +4575,7 @@ impl ChatWidget<'_> {
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn reasoning_preview(lines: &[Line<'static>]) -> String {
|
||||
const MAX_LINES: usize = 3;
|
||||
const MAX_CHARS: usize = 120;
|
||||
@@ -11814,7 +11815,7 @@ impl ChatWidget<'_> {
|
||||
_ => (
|
||||
format!("Snapshots disabled after Git error: {err}"),
|
||||
Some(
|
||||
"Restart Code after resolving the issue to re-enable snapshots."
|
||||
"Restart Dev after resolving the issue to re-enable snapshots."
|
||||
.to_string(),
|
||||
),
|
||||
),
|
||||
@@ -11992,7 +11993,7 @@ impl ChatWidget<'_> {
|
||||
}
|
||||
} else {
|
||||
lines.push(
|
||||
"Snapshots are currently disabled. Resolve the Git issue and restart Code to re-enable them.".to_string(),
|
||||
"Snapshots are currently disabled. Resolve the Git issue and restart Dev to re-enable them.".to_string(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -12016,7 +12017,7 @@ impl ChatWidget<'_> {
|
||||
"Restores workspace files only. Conversation history remains unchanged."
|
||||
.to_string(),
|
||||
),
|
||||
Some("Snapshots appear once Code captures a Git checkpoint.".to_string()),
|
||||
Some("Snapshots appear once Dev captures a Git checkpoint.".to_string()),
|
||||
vec![
|
||||
"No snapshot is available to restore.".to_string(),
|
||||
"Run a command that modifies files to create the first snapshot.".to_string(),
|
||||
@@ -12219,7 +12220,7 @@ impl ChatWidget<'_> {
|
||||
fn conversation_line(role: UndoPreviewRole, text: &str) -> Line<'static> {
|
||||
let (label, color) = match role {
|
||||
UndoPreviewRole::User => ("You", crate::colors::text_bright()),
|
||||
UndoPreviewRole::Assistant => ("Code", crate::colors::primary()),
|
||||
UndoPreviewRole::Assistant => ("Dev", crate::colors::primary()),
|
||||
};
|
||||
let label_span = Span::styled(
|
||||
format!("{label}: "),
|
||||
@@ -21619,8 +21620,8 @@ Have we met every part of this goal and is there no further work to do?"#
|
||||
if cmd_str == "test-approval" {
|
||||
continue;
|
||||
}
|
||||
// Prefer "Code" branding in the Help panel
|
||||
let desc = cmd.description().replace("Codex", "Code");
|
||||
// Prefer "Hanzo Dev" branding in the Help panel
|
||||
let desc = cmd.description().replace("Codex", "Hanzo Dev");
|
||||
// Render as "/command — description"
|
||||
lines.push(RtLine::from(vec![
|
||||
RtSpan::styled(format!("/{cmd_str:<12}"), t_fg),
|
||||
@@ -28548,7 +28549,7 @@ Have we met every part of this goal and is there no further work to do?"#
|
||||
let mut spans: Vec<Span> = Vec::new();
|
||||
// Title follows theme text color
|
||||
spans.push(Span::styled(
|
||||
"Every Code",
|
||||
"Hanzo Dev",
|
||||
Style::default()
|
||||
.fg(crate::colors::text())
|
||||
.add_modifier(Modifier::BOLD),
|
||||
@@ -38627,7 +38628,7 @@ impl WidgetRef for &ChatWidget<'_> {
|
||||
preview: String,
|
||||
}
|
||||
|
||||
let mut height_mismatches: Vec<HeightMismatch> = Vec::new();
|
||||
let height_mismatches: Vec<HeightMismatch> = Vec::new();
|
||||
let is_collapsed_reasoning_at = |idx: usize| {
|
||||
if idx >= request_count {
|
||||
return false;
|
||||
@@ -40552,7 +40553,7 @@ impl ChatWidget<'_> {
|
||||
.filter(|text| !text.is_empty());
|
||||
|
||||
self.app_event_tx.send(AppEvent::EmitTuiNotification {
|
||||
title: "Code".to_string(),
|
||||
title: "Hanzo Dev".to_string(),
|
||||
body: snippet,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -342,10 +342,10 @@ fn run_guided_loop(
|
||||
(
|
||||
"Upgrade helper",
|
||||
format!(
|
||||
"You are helping the user upgrade Code to the latest available version. The preferred upgrade command is `{initial_command}`. Prioritize resolving permission prompts (including sudo password requests) and confirm the upgrade succeeds."
|
||||
"You are helping the user upgrade Dev to the latest available version. The preferred upgrade command is `{initial_command}`. Prioritize resolving permission prompts (including sudo password requests) and confirm the upgrade succeeds."
|
||||
),
|
||||
format!(
|
||||
"Upgrade target: Code (latest version: {latest}).\nPrimary command: {initial_command}.\nPlatform: {platform}.\nSandbox: {sandbox}.\nWorking directory: {cwd_text}.\nRun the command, diagnose any failures (especially permissions), and guide the user until the upgrade completes."
|
||||
"Upgrade target: Dev (latest version: {latest}).\nPrimary command: {initial_command}.\nPlatform: {platform}.\nSandbox: {sandbox}.\nWorking directory: {cwd_text}.\nRun the command, diagnose any failures (especially permissions), and guide the user until the upgrade completes."
|
||||
),
|
||||
"upgrade_terminal_flow",
|
||||
)
|
||||
|
||||
@@ -23,6 +23,7 @@ pub(crate) enum QueuedInterrupt {
|
||||
id: String,
|
||||
ev: ApplyPatchApprovalRequestEvent,
|
||||
},
|
||||
#[allow(dead_code)]
|
||||
ExecBegin {
|
||||
seq: u64,
|
||||
ev: ExecCommandBeginEvent,
|
||||
@@ -33,6 +34,7 @@ pub(crate) enum QueuedInterrupt {
|
||||
ev: ExecCommandEndEvent,
|
||||
order: Option<hanzo_core::protocol::OrderMeta>,
|
||||
},
|
||||
#[allow(dead_code)]
|
||||
McpBegin {
|
||||
seq: u64,
|
||||
ev: McpToolCallBeginEvent,
|
||||
@@ -79,6 +81,7 @@ impl InterruptManager {
|
||||
.push(QueuedInterrupt::ApplyPatchApproval { seq, id, ev });
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub(crate) fn push_exec_begin(
|
||||
&mut self,
|
||||
seq: u64,
|
||||
@@ -98,6 +101,7 @@ impl InterruptManager {
|
||||
self.queue.push(QueuedInterrupt::ExecEnd { seq, ev, order });
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub(crate) fn push_mcp_begin(
|
||||
&mut self,
|
||||
seq: u64,
|
||||
|
||||
@@ -72,7 +72,7 @@ impl HistoryCell for AnimatedWelcomeCell {
|
||||
fn display_lines(&self) -> Vec<Line<'static>> {
|
||||
vec![
|
||||
Line::from(""),
|
||||
Line::from("Welcome to Code"),
|
||||
Line::from(format!("Hanzo Dev v{}", env!("CARGO_PKG_VERSION"))),
|
||||
Line::from(crate::greeting::greeting_placeholder()),
|
||||
Line::from(""),
|
||||
]
|
||||
|
||||
@@ -303,7 +303,8 @@ impl AuthModeWidget {
|
||||
}
|
||||
|
||||
fn render_env_var_found(&self, area: Rect, buf: &mut Buffer) {
|
||||
let lines = vec![Line::from("✓ Using OPENAI_API_KEY").fg(crate::colors::success())];
|
||||
let provider = Self::detect_any_provider_key().unwrap_or("API key");
|
||||
let lines = vec![Line::from(format!("✓ Using {}", provider)).fg(crate::colors::success())];
|
||||
|
||||
Paragraph::new(lines)
|
||||
.wrap(Wrap { trim: false })
|
||||
@@ -382,19 +383,78 @@ impl AuthModeWidget {
|
||||
}
|
||||
}
|
||||
|
||||
/// TODO: Read/write from the correct hierarchy config overrides + auth json + OPENAI_API_KEY.
|
||||
/// Check for any configured provider API keys or authenticated CLIs.
|
||||
fn verify_api_key(&mut self) {
|
||||
if matches!(self.login_status, LoginStatus::AuthMode(AuthMode::ApiKey)) {
|
||||
// We already have an API key configured (e.g., from auth.json or env),
|
||||
// so mark this step complete immediately.
|
||||
self.sign_in_state = SignInState::EnvVarFound;
|
||||
} else {
|
||||
self.sign_in_state = SignInState::EnvVarMissing;
|
||||
// Check for any provider API keys in environment
|
||||
let provider_found = Self::detect_any_provider_key();
|
||||
if provider_found.is_some() {
|
||||
self.sign_in_state = SignInState::EnvVarFound;
|
||||
} else {
|
||||
self.sign_in_state = SignInState::EnvVarMissing;
|
||||
}
|
||||
}
|
||||
|
||||
self.event_tx.send(AppEvent::RequestRedraw);
|
||||
}
|
||||
|
||||
/// Detect any configured provider API key or authenticated CLI
|
||||
fn detect_any_provider_key() -> Option<&'static str> {
|
||||
// Check environment variables for various providers
|
||||
let providers = [
|
||||
("ANTHROPIC_API_KEY", "Claude"),
|
||||
("OPENAI_API_KEY", "OpenAI"),
|
||||
("GOOGLE_API_KEY", "Gemini"),
|
||||
("GEMINI_API_KEY", "Gemini"),
|
||||
("DASHSCOPE_API_KEY", "Qwen"),
|
||||
("QWEN_API_KEY", "Qwen"),
|
||||
("MISTRAL_API_KEY", "Vibe/Mistral"),
|
||||
("GH_TOKEN", "GitHub Copilot"),
|
||||
("GITHUB_TOKEN", "GitHub Copilot"),
|
||||
];
|
||||
|
||||
for (env_var, provider_name) in providers {
|
||||
if std::env::var(env_var).is_ok() {
|
||||
return Some(provider_name);
|
||||
}
|
||||
}
|
||||
|
||||
// Check for authenticated CLIs
|
||||
// Claude: ~/.claude/
|
||||
if let Ok(home) = std::env::var("HOME") {
|
||||
let claude_dir = std::path::PathBuf::from(&home).join(".claude");
|
||||
if claude_dir.exists() {
|
||||
return Some("Claude CLI");
|
||||
}
|
||||
}
|
||||
|
||||
// GitHub Copilot: check if gh is authenticated
|
||||
if let Ok(output) = std::process::Command::new("gh")
|
||||
.args(["auth", "status"])
|
||||
.output()
|
||||
{
|
||||
if output.status.success() {
|
||||
return Some("GitHub Copilot");
|
||||
}
|
||||
}
|
||||
|
||||
// Check for Ollama running locally
|
||||
if let Ok(output) = std::process::Command::new("ollama")
|
||||
.args(["list"])
|
||||
.output()
|
||||
{
|
||||
if output.status.success() {
|
||||
return Some("Ollama (local)");
|
||||
}
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
|
||||
pub(crate) fn apply_chatgpt_login_side_effects(&mut self) {
|
||||
self.login_status = LoginStatus::AuthMode(AuthMode::ChatGPT);
|
||||
if let Ok(mut args) = self.chat_widget_args.lock() {
|
||||
|
||||
@@ -52,7 +52,7 @@ impl WidgetRef for &TrustDirectoryWidget {
|
||||
.add_modifier(Modifier::BOLD);
|
||||
let mut lines: Vec<Line> = vec![
|
||||
Line::from(vec![
|
||||
Span::styled("You are running Code in ", success_style),
|
||||
Span::styled("You are running Hanzo Dev in ", success_style),
|
||||
Span::styled(
|
||||
self.cwd.to_string_lossy().to_string(),
|
||||
Style::default().fg(colors::success()),
|
||||
@@ -63,7 +63,7 @@ impl WidgetRef for &TrustDirectoryWidget {
|
||||
|
||||
if self.is_git_repo {
|
||||
lines.push(Line::from(
|
||||
" Since this folder is version controlled, you may wish to allow Code",
|
||||
" Since this folder is version controlled, you may wish to allow Dev",
|
||||
));
|
||||
lines.push(Line::from(
|
||||
" to work in this folder without asking for approval.",
|
||||
@@ -96,7 +96,7 @@ impl WidgetRef for &TrustDirectoryWidget {
|
||||
lines.push(create_option(
|
||||
0,
|
||||
TrustDirectorySelection::Trust,
|
||||
"Yes, allow Code to work in this folder without asking for approval",
|
||||
"Yes, allow Dev to work in this folder without asking for approval",
|
||||
));
|
||||
lines.push(create_option(
|
||||
1,
|
||||
@@ -107,7 +107,7 @@ impl WidgetRef for &TrustDirectoryWidget {
|
||||
lines.push(create_option(
|
||||
0,
|
||||
TrustDirectorySelection::Trust,
|
||||
"Allow Code to work in this folder without asking for approval",
|
||||
"Allow Dev to work in this folder without asking for approval",
|
||||
));
|
||||
lines.push(create_option(
|
||||
1,
|
||||
|
||||
@@ -17,10 +17,11 @@ pub(crate) struct WelcomeWidget {
|
||||
|
||||
impl WidgetRef for &WelcomeWidget {
|
||||
fn render_ref(&self, area: Rect, buf: &mut Buffer) {
|
||||
let version = env!("CARGO_PKG_VERSION");
|
||||
let line1 = Line::from(vec![
|
||||
Span::raw(">_ "),
|
||||
Span::styled(
|
||||
"Welcome to Code",
|
||||
format!("Hanzo Dev v{}", version),
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
]);
|
||||
|
||||
@@ -105,12 +105,12 @@ impl SlashCommand {
|
||||
SlashCommand::Reasoning => "change reasoning effort (minimal/low/medium/high)",
|
||||
SlashCommand::Verbosity => "change text verbosity (high/medium/low)",
|
||||
SlashCommand::New => "start a new chat during a conversation",
|
||||
SlashCommand::Init => "create an AGENTS.md file with instructions for Code",
|
||||
SlashCommand::Init => "create an AGENTS.md file with instructions for Dev",
|
||||
SlashCommand::Compact => "summarize conversation to prevent hitting the context limit",
|
||||
SlashCommand::Undo => "restore the workspace to the last Code snapshot",
|
||||
SlashCommand::Undo => "restore the workspace to the last Dev snapshot",
|
||||
SlashCommand::Review => "review your changes for potential issues",
|
||||
SlashCommand::Cloud => "browse, apply, and create cloud tasks",
|
||||
SlashCommand::Quit => "exit Code",
|
||||
SlashCommand::Quit => "exit Dev",
|
||||
SlashCommand::Diff => "show git diff (including untracked files)",
|
||||
SlashCommand::Mention => "mention a file",
|
||||
SlashCommand::Cmd => "run a project command",
|
||||
@@ -134,8 +134,8 @@ impl SlashCommand {
|
||||
SlashCommand::Mcp => "manage MCP servers",
|
||||
SlashCommand::Perf => "performance tracing (on/off/show/reset)",
|
||||
SlashCommand::Demo => "populate history with demo cells (dev/perf only)",
|
||||
SlashCommand::Login => "manage Code sign-ins (add/select/disconnect)",
|
||||
SlashCommand::Logout => "log out of Code",
|
||||
SlashCommand::Login => "manage Dev sign-ins (add/select/disconnect)",
|
||||
SlashCommand::Logout => "log out of Dev",
|
||||
#[cfg(debug_assertions)]
|
||||
SlashCommand::TestApproval => "test approval request",
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ pub fn init(config: &Config) -> Result<(Tui, TerminalInfo)> {
|
||||
)),
|
||||
Clear(ClearType::All),
|
||||
MoveTo(0, 0),
|
||||
crossterm::terminal::SetTitle("Code"),
|
||||
crossterm::terminal::SetTitle("Hanzo Dev"),
|
||||
crossterm::terminal::EnableLineWrap
|
||||
)?;
|
||||
|
||||
@@ -319,7 +319,7 @@ pub fn enter_alt_screen_only(
|
||||
)),
|
||||
Clear(ClearType::All),
|
||||
MoveTo(0, 0),
|
||||
crossterm::terminal::SetTitle("Code"),
|
||||
crossterm::terminal::SetTitle("Hanzo Dev"),
|
||||
crossterm::terminal::EnableLineWrap
|
||||
)?;
|
||||
Ok(())
|
||||
|
||||
@@ -104,7 +104,7 @@ impl UserApprovalWidget<'_> {
|
||||
Line::from(""), // extra spacing above the prompt
|
||||
Line::from(vec![
|
||||
"? ".fg(crate::colors::info()),
|
||||
"Code wants to run ".bold(),
|
||||
"Dev wants to run ".bold(),
|
||||
cmd_span,
|
||||
]),
|
||||
Line::from(""),
|
||||
|
||||
Reference in New Issue
Block a user