diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f174ee..7c087fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,16 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic ## [Unreleased] +### Release checklist + +- [ ] Bump `Cargo.toml`; MUST run `cargo check` without `--locked` to update `Cargo.lock`. +- [ ] Update current-version references in `schemas/`, both AUR `PKGBUILD`s, and `README.md` container-image tags. +- [ ] Search repository-wide for the old version; account for every match. +- [ ] Move `Unreleased` entries into the new version section and rotate links. +- [ ] Create and push a signed `vX.Y.Z` tag from `master`. + +## [0.24.1] - 2026-08-03 + ### Added - Container images on GHCR (`ghcr.io/kjanat/runner`) and Docker Hub @@ -21,6 +31,13 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic ### Fixed +- Bun package-exec fallback now invokes the explicit `bun x` subcommand instead + of the `bunx` hard-link alias. On Windows, runner resolves bare executables + through `PATH` and `PATHEXT`; the stock uppercase `.EXE` produced `bunx.EXE`, + which Bun's case-sensitive invocation-name detection misclassified as plain + `bun` and reported `Script not found` for the requested package + (https://github.com/kjanat/runner/issues/103, + https://github.com/oven-sh/bun/issues/36826). - `install.sh` now completes on Alpine and other busybox userlands. Checksum verification called `sha256sum -c --status`, and `--status` is GNU-only, so busybox aborted the install right after downloading the archive @@ -28,12 +45,6 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic sha256sum` guard passes on busybox, which is why the failure surfaced mid-install rather than up front. -### Post-release checklist - -- [ ] Move completed `Unreleased` items into a new version section. -- [ ] Update the `[Unreleased]` compare link to the new tag. -- [ ] Create and push a signed `vX.Y.Z` tag from `master`. - ## [0.24.0] - 2026-08-01 ### Added @@ -1985,7 +1996,8 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic - `run` alias binary for shorter invocation. - Unified commands for task run/list, dependency install, clean, and exec. -[Unreleased]: https://github.com/kjanat/runner/compare/v0.24.0...HEAD +[Unreleased]: https://github.com/kjanat/runner/compare/v0.24.1...HEAD +[0.24.1]: https://github.com/kjanat/runner/compare/v0.24.0...v0.24.1 [0.24.0]: https://github.com/kjanat/runner/compare/v0.23.0...v0.24.0 [0.23.0]: https://github.com/kjanat/runner/compare/v0.22.0...v0.23.0 [0.22.0]: https://github.com/kjanat/runner/compare/v0.21.0...v0.22.0 diff --git a/Cargo.lock b/Cargo.lock index 88777f8..898ce04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -774,7 +774,7 @@ checksum = "323c417e1d9665a65b263ec744ba09030cfb277e9daa0b018a4ab62e57bc8189" [[package]] name = "runner-run" -version = "0.24.0" +version = "0.24.1" dependencies = [ "actions-rs", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 1c9944d..7cdb2a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ [package] name = "runner-run" -version = "0.24.0" +version = "0.24.1" edition = "2024" rust-version = "1.95" description = "Universal project task runner" diff --git a/README.md b/README.md index 3ae2fde..44333f3 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ And re-read/review the readme... **runner** is for people who bounce between codebases and refuse to memorize each repo’s private little task-running religion. -Instead of guessing whether this one wants `npm run`, `pnpm exec`, `bunx`, +Instead of guessing whether this one wants `npm run`, `pnpm exec`, `bun x`, `cargo`, `uv run`, `deno task`, `turbo`, `make`, `just`, etc. type: ```sh @@ -170,12 +170,12 @@ yay -S runner-run ```dockerfile # Container image, for build stages that run `run`-form package scripts: -COPY --from=ghcr.io/kjanat/runner:0.24.0 /run /usr/local/bin/run -COPY --from=ghcr.io/kjanat/runner:0.24.0 /runner /usr/local/bin/runner +COPY --from=ghcr.io/kjanat/runner:0.24.1 /run /usr/local/bin/run +COPY --from=ghcr.io/kjanat/runner:0.24.1 /runner /usr/local/bin/runner ``` -Also on Docker Hub as `kjanat/runner`. The image is `scratch` plus two -musl-static binaries, so one tag serves Alpine and Debian stages alike. +Also on Docker Hub as [`kjanat/runner`][dockerhub]. The image is `scratch` plus +two musl-static binaries, so one tag serves Alpine and Debian stages alike. ```sh # One-liner (latest): @@ -380,7 +380,7 @@ Failing that, it executes `` through the detected toolchain where appropriate, such as: ```text -npm exec / npx, yarn run / yarn exec, pnpm exec, bun x / bunx, +npm exec / npx, yarn run / yarn exec, pnpm exec, bun x, deno x, uvx, go run ``` @@ -401,13 +401,13 @@ manager gets no vote: | `--runtime` | `package.json` script | local file | ad-hoc binary | | ----------- | ---------------------- | ----------------- | ------------- | | `node` | `node --run ` | `node ` | `npx` | -| `bun` | `bun --bun run ` | `bun ` | `bunx --bun` | +| `bun` | `bun --bun run ` | `bun ` | `bun x --bun` | | `deno` | `deno task ` | `deno run ` | `deno x` | ```sh run --runtime bun build # bun --bun run build run --runtime bun ./cli.js # bun ./cli.js, even with a #!/usr/bin/env node line -run --runtime bun eslint . # bunx --bun eslint . +run --runtime bun eslint . # bun x --bun eslint . ``` `bun run build` starts the script under bun, but a dependency bin carrying a diff --git a/aur/runner-run-bin/PKGBUILD b/aur/runner-run-bin/PKGBUILD index 807de97..9eaf06d 100644 --- a/aur/runner-run-bin/PKGBUILD +++ b/aur/runner-run-bin/PKGBUILD @@ -5,7 +5,7 @@ # by CI (.github/workflows/aur-release.yml) on every release; the values below # are only a checked-in reference snapshot. pkgname=runner-run-bin -pkgver=0.24.0 +pkgver=0.24.1 pkgrel=1 pkgdesc='Universal project task runner (prebuilt binary)' arch=('x86_64' 'aarch64' 'armv7h') diff --git a/aur/runner-run/PKGBUILD b/aur/runner-run/PKGBUILD index 182329b..a08433b 100644 --- a/aur/runner-run/PKGBUILD +++ b/aur/runner-run/PKGBUILD @@ -5,7 +5,7 @@ # CI (.github/workflows/aur-release.yml) on every release; the values below # are only a checked-in reference snapshot. pkgname=runner-run -pkgver=0.24.0 +pkgver=0.24.1 pkgrel=1 pkgdesc='Universal project task runner' arch=('x86_64' 'aarch64') diff --git a/npm/facade/README.md b/npm/facade/README.md index d8d31c8..6f5a320 100644 --- a/npm/facade/README.md +++ b/npm/facade/README.md @@ -15,7 +15,7 @@ runner install --frozen test build ``` Instead of remembering whether this project wants `npm run`, `pnpm exec`, -`bunx`, `cargo`, `uv run`, `deno task`, `make`, `just`, `go-task`, or a monorepo +`bun x`, `cargo`, `uv run`, `deno task`, `make`, `just`, `go-task`, or a monorepo wrapper, use the same shape everywhere. ## What You Get diff --git a/schemas/doctor.example.json b/schemas/doctor.example.json index efc2a98..ebe541c 100644 --- a/schemas/doctor.example.json +++ b/schemas/doctor.example.json @@ -23,7 +23,7 @@ "runner": { "binary": "/usr/local/bin/runner", "name": "runner", - "version": "0.24.0", + "version": "0.24.1", "schema_versions": { "doctor": 2, "list": 2, diff --git a/schemas/doctor.schema.json b/schemas/doctor.schema.json index 0b429f0..e06d108 100644 --- a/schemas/doctor.schema.json +++ b/schemas/doctor.schema.json @@ -412,7 +412,7 @@ "const": "node" }, { - "description": "Bun, via `bun --bun run