diff --git a/crates/arc-workflows/src/cli/progress.rs b/crates/arc-workflows/src/cli/progress.rs index 66b9df579..0b03e1ebf 100644 --- a/crates/arc-workflows/src/cli/progress.rs +++ b/crates/arc-workflows/src/cli/progress.rs @@ -637,6 +637,19 @@ impl ProgressUI { } } + pub fn show_run_id(&mut self, run_id: &str) { + match &self.renderer { + ProgressRenderer::Tty(tty) => { + let bar = tty.multi.add(ProgressBar::new_spinner()); + bar.set_style(style_static_dim()); + bar.finish_with_message(format!("Run: {run_id}")); + } + ProgressRenderer::Plain => { + eprintln!(" Run: {run_id}"); + } + } + } + // ── Stages ────────────────────────────────────────────────────────── fn on_stage_started(&mut self, node_id: &str, name: &str, script: Option<&str>) { diff --git a/crates/arc-workflows/src/cli/run.rs b/crates/arc-workflows/src/cli/run.rs index 1bf5dc913..e55d0214a 100644 --- a/crates/arc-workflows/src/cli/run.rs +++ b/crates/arc-workflows/src/cli/run.rs @@ -704,7 +704,10 @@ pub async fn run_command( let run_id = worktree_run_id .or(daytona_run_id) .unwrap_or_else(|| ulid::Ulid::new().to_string()); - eprintln!("{} {run_id}", styles.bold.apply_to("Run:")); + progress_ui + .lock() + .expect("progress lock poisoned") + .show_run_id(&run_id); // Set up metadata branch for git checkpointing (host or remote) let meta_branch = if worktree_work_dir.is_some() || daytona_base_sha.is_some() { Some(crate::git::MetadataStore::branch_name(&run_id))