From 16bef50c90d8cca04fde4b87e18c50e8fe7c725a Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 26 Sep 2026 17:37:27 +0000 Subject: [PATCH] feat(project-runner): add popup package.json script runner Lists the nearest package.json's scripts (file order, fuzzy filter) and runs the chosen one via the detected package manager in a new tab or split. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01N3jnKVRN7yeC6muFFCaGLD --- Cargo.lock | 13 ++ Cargo.toml | 2 +- README.md | 29 +++ plugins/project-runner/Cargo.toml | 15 ++ plugins/project-runner/herdr-plugin.toml | 24 ++ plugins/project-runner/src/app.rs | 183 +++++++++++++++ plugins/project-runner/src/launch.rs | 126 +++++++++++ plugins/project-runner/src/log.rs | 34 +++ plugins/project-runner/src/main.rs | 130 +++++++++++ plugins/project-runner/src/matcher.rs | 105 +++++++++ plugins/project-runner/src/project.rs | 276 +++++++++++++++++++++++ plugins/project-runner/src/render.rs | 133 +++++++++++ plugins/project-runner/src/testing.rs | 50 ++++ 13 files changed, 1119 insertions(+), 1 deletion(-) create mode 100644 plugins/project-runner/Cargo.toml create mode 100644 plugins/project-runner/herdr-plugin.toml create mode 100644 plugins/project-runner/src/app.rs create mode 100644 plugins/project-runner/src/launch.rs create mode 100644 plugins/project-runner/src/log.rs create mode 100644 plugins/project-runner/src/main.rs create mode 100644 plugins/project-runner/src/matcher.rs create mode 100644 plugins/project-runner/src/project.rs create mode 100644 plugins/project-runner/src/render.rs create mode 100644 plugins/project-runner/src/testing.rs diff --git a/Cargo.lock b/Cargo.lock index 6547693..df5adbc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -959,6 +959,19 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "project-runner" +version = "0.1.0" +dependencies = [ + "herdr-client", + "nucleo-matcher", + "ratatui", + "serde", + "serde_json", + "tempfile", + "unicode-segmentation", +] + [[package]] name = "quote" version = "1.0.47" diff --git a/Cargo.toml b/Cargo.toml index 26ddf93..2246716 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ resolver = "3" # Rust plugins must be listed here. Plugins in other languages live under # plugins/ too but are not cargo members. -members = ["crates/herdr-client", "plugins/command-palette", "plugins/git-glance"] +members = ["crates/herdr-client", "plugins/command-palette", "plugins/git-glance", "plugins/project-runner"] [workspace.package] edition = "2024" diff --git a/README.md b/README.md index 5581aaa..d182ad5 100644 --- a/README.md +++ b/README.md @@ -121,3 +121,32 @@ no editor opens. A failed commit keeps your message in the prompt. never takes the index lock from an agent or editor working in the same repo. - Git errors show in the footer. The full text goes to `~/.local/state/herdr/plugins/jacob.git-glance/glance.log`. + +## Project runner (`plugins/project-runner`) + +Popup picker for the `package.json` scripts of the focused pane's project. +Pick one and it runs in a new tab (or split) as ` run