From 0530605fdb37887eaed7bf033a545ef5188bb46e Mon Sep 17 00:00:00 2001 From: "brynary-fabro[bot]" <265161896+brynary-fabro[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:00:20 -0400 Subject: [PATCH] Add -q/--quiet to fabro ps (#64) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a `-q`/`--quiet` flag to `fabro ps`, mirroring the behavior of `docker ps -q`. When specified, the command outputs only full run IDs, one per line, with no headers, footers, or "no runs found" messages—empty output simply means no matching runs exist. The quiet flag takes precedence over JSON output, and it composes naturally with other flags like `-a` (e.g., `fabro ps -qa` lists all run IDs). ### Fabro Details
Ran 10 stages in 10m 13s for $1.09 | Stage | Duration | Cost | Retries | |---|---|---|---| | start | 0s | – | 0 | | toolchain | 0s | – | 0 | | preflight_compile | 0s | – | 0 | | preflight_lint | 0s | – | 0 | | implement | 0s | $0.17 | 0 | | simplify_opus | 0s | $0.30 | 0 | | simplify_gemini | 0s | $0.30 | 0 | | simplify_gpt | 0s | $0.32 | 0 | | verify | 0s | – | 0 | | fmt | 0s | – | 0 | | **Total** | **10m 13s** | **$1.09** | **0** |
Ran ImplementAndSimplify.fabro (13 nodes and 16 edges) ```dot digraph ImplementAndSimplify { graph [ goal="Implement and simplify", model_stylesheet=" * { backend: api; model: claude-opus-4-6;} " ] rankdir=LR start [shape=Mdiamond, label="Start"] exit [shape=Msquare, label="Exit"] toolchain [label="Toolchain", shape=parallelogram, script="command -v cargo >/dev/null || { curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && sudo ln -sf $HOME/.cargo/bin/* /usr/local/bin/; }; cargo --version 2>&1", max_retries=0] preflight_compile [label="Preflight Compile", shape=parallelogram, script="cargo check -q --workspace 2>&1", max_retries=0] preflight_lint [label="Preflight Lint", shape=parallelogram, script="cargo clippy -q --workspace -- -D warnings 2>&1", max_retries=0] fix_lints [label="Fix Lints", prompt="The preflight lint step failed. Read the build output from context and fix all clippy lint warnings.", max_visits=3] implement [label="Implement", prompt="Read the plan file referenced in the goal and implement every step. Make all the code changes described in the plan. Use red/green TDD."] simplify_opus [label="Simplify (Opus)", prompt="@prompts/simplify.md"] simplify_gemini [label="Simplify (Gemini)", prompt="@prompts/simplify.md", model="gemini-3.1-pro-preview-customtools"] simplify_gpt [label="Simplify (GPT-54)", prompt="@prompts/simplify.md", model="gpt-54"] verify [label="Verify", shape=parallelogram, script="cargo clippy -q --workspace -- -D warnings 2>&1 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1", goal_gate=true, retry_target="fixup"] fixup [label="Fixup", prompt="The verify step failed. Read the build output from context and fix all clippy lint warnings and test failures.", max_visits=3] fmt [label="Format", shape=parallelogram, script="cargo fmt --all 2>&1", goal_gate=true, max_retries=0] start -> toolchain toolchain -> preflight_compile [condition="outcome=success"] toolchain -> exit preflight_compile -> preflight_lint [condition="outcome=success"] preflight_compile -> exit preflight_lint -> implement [condition="outcome=success"] preflight_lint -> fix_lints fix_lints -> preflight_lint implement -> simplify_opus -> simplify_gemini -> simplify_gpt -> verify verify -> fmt [condition="outcome=success"] verify -> fixup fixup -> verify fmt -> exit } ```
⚒️ Generated with [Fabro](https://fabro.sh) --------- Co-authored-by: Fabro --- lib/crates/fabro-workflows/src/cli/runs.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/crates/fabro-workflows/src/cli/runs.rs b/lib/crates/fabro-workflows/src/cli/runs.rs index c83164ef4..50feafb54 100644 --- a/lib/crates/fabro-workflows/src/cli/runs.rs +++ b/lib/crates/fabro-workflows/src/cli/runs.rs @@ -43,6 +43,10 @@ pub struct RunsListArgs { /// Show all runs, not just running (like docker ps -a) #[arg(short = 'a', long)] pub all: bool, + + /// Only display run IDs + #[arg(short = 'q', long)] + pub quiet: bool, } #[derive(Args)] @@ -471,6 +475,13 @@ pub fn list_command(args: &RunsListArgs, styles: &Styles) -> Result<()> { }, ); + if args.quiet { + for run in &filtered { + println!("{}", run.run_id); + } + return Ok(()); + } + if args.json { println!("{}", serde_json::to_string_pretty(&filtered)?); return Ok(());