From 01e47c5db7b350fa0f9682ae1c8e46ef57666f8f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 1 Jul 2026 09:27:16 +0000 Subject: [PATCH 1/7] Propagate qr go failures from shell wrapper Co-authored-by: Aanish Bhirud --- src/shell.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/shell.rs b/src/shell.rs index 66a370d..06c24fb 100644 --- a/src/shell.rs +++ b/src/shell.rs @@ -106,6 +106,10 @@ pub fn shell_wrapper_snippet(shell: ShellKind, binary_name: &str) -> String { r#"function {binary_name} if test (count $argv) -gt 0; and test $argv[1] = go -o $argv[1] = g set -l target (command {binary_name} go $argv[2..-1] --print-path) + set -l go_status $status + if test $go_status -ne 0 + return $go_status + end if test -n "$target" cd $target end @@ -118,7 +122,7 @@ end"# r#"{binary_name}() {{ if [ "$1" = "go" ] || [ "$1" = "g" ]; then local dir - dir=$(command {binary_name} go "${{@:2}}" --print-path) + dir=$(command {binary_name} go "${{@:2}}" --print-path) || return $? if [ -n "$dir" ]; then cd "$dir" fi @@ -287,8 +291,14 @@ mod tests { #[test] fn wrapper_generation_matches_shell() { - assert!(shell_wrapper_snippet(ShellKind::Zsh, "qr").contains(r#"dir=$(command qr go"#)); - assert!(shell_wrapper_snippet(ShellKind::Fish, "qr").contains("function qr")); + let zsh = shell_wrapper_snippet(ShellKind::Zsh, "qr"); + assert!(zsh.contains(r#"dir=$(command qr go"#)); + assert!(zsh.contains("|| return $?")); + + let fish = shell_wrapper_snippet(ShellKind::Fish, "qr"); + assert!(fish.contains("function qr")); + assert!(fish.contains("set -l go_status $status")); + assert!(fish.contains("return $go_status")); } #[test] From 5faa99161504c37b4054bb125e7ad42f48cda80e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 1 Jul 2026 09:28:50 +0000 Subject: [PATCH 2/7] Add release metadata and MSRV CI verification Co-authored-by: Aanish Bhirud --- .github/workflows/ci.yml | 12 ++++++++++++ Cargo.toml | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a849777..26070c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,18 @@ jobs: - name: Test run: cargo test --locked --verbose + msrv: + name: test (msrv 1.85.0) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@1.85.0 + - uses: Swatinem/rust-cache@v2 + - name: Build + run: cargo build --locked --verbose + - name: Test + run: cargo test --locked --verbose + lint: name: fmt & clippy runs-on: ubuntu-latest diff --git a/Cargo.toml b/Cargo.toml index ee9ce33..25344a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,11 @@ edition = "2024" rust-version = "1.85" license = "MIT" description = "QuickRunner (qr) is a blazing-fast, AI-augmented developer shell helper." +repository = "https://github.com/baanish/quick-runner" +homepage = "https://github.com/baanish/quick-runner" +readme = "README.md" +keywords = ["cli", "developer-tools", "shell", "ai", "rust"] +categories = ["command-line-utilities", "development-tools"] [[bin]] name = "qr" From bfd59343462f2e2ad7a09e9255c1548ff9ef5ed6 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 1 Jul 2026 09:28:52 +0000 Subject: [PATCH 3/7] Clean up public docs drift for release Co-authored-by: Aanish Bhirud --- README.md | 10 +-- docs/PRE_RELEASE_REVIEW.md | 172 +++++++++---------------------------- 2 files changed, 44 insertions(+), 138 deletions(-) diff --git a/README.md b/README.md index acf7c3d..91e817e 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # QuickRunner -QuickRunner (`qr`) is a fast Rust CLI for common developer shell workflows: jumping to projects, running scripts, managing aliases, scanning project roots, tracking lightweight command stats, and an AI router (`qr do`) that turns natural language into a shell command or a hand-off to a coding agent. Every config key can be overridden via `QR_` environment variables. +QuickRunner (`qr`) is a fast Rust CLI for common developer shell workflows: jumping to projects, running scripts, managing aliases, scanning project roots, tracking lightweight command stats, and an AI router (`qr do`) that turns natural language into a shell command or a hand-off to a coding agent. ## Features - `qr go ` / `qr g`: fuzzy project lookup backed by a cached scanner (interactive picker on multiple matches) -- `qr run [watch|log|output]