Below you will find pages that utilize the taxonomy term “Kjanat”
July 17, 2026
Setup runner cli
Version updated for https://github.com/kjanat/runner to version v0.20.0.
This action is used across all versions by 0 repositories. Action Type This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
Action Summary runner is an action designed to help developers quickly identify and run commands across multiple task runners and package managers within their projects. It provides a tab completion feature that suggests available tasks and packages, reducing the need to remember specific command structures or configurations for different repositories. This tool enhances efficiency by automating the process of selecting the correct runner and command for executing tasks, making it easier to manage and run project-related commands without manual configuration.
July 5, 2026
Setup runner cli
Version updated for https://github.com/kjanat/runner to version v0.19.1.
This action is used across all versions by 0 repositories. Action Type This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
What’s Changed Added runner lsp completes [tasks.overrides] entry keys with the project’s own task names (discovered from the document’s directory, same detection as the CLI), each carrying its source and description. Works both under the [tasks.overrides] header and as a dotted overrides.<task> key in [tasks]; names that aren’t bare TOML keys (e.g. build:web) insert quoted. Dotted overrides.<task> = values now complete the source-label vocabulary like their [tasks.overrides] equivalents. runner lsp key completions scaffold the value shape the field’s schema type calls for, when the client supports snippets: array fields insert pms = ["|"], string fields node = "|", others a bare tab stop; table fields continue the dotted key path (overrides.), which re-triggers completion. Clients without snippet support keep the plain name = insert. Fixed runner lsp no longer offers field completions after a dotted key (group_output. suggested the section’s whole field list; TOML reads the dot as a key path, and no section has enumerable sub-keys). Key completions also now carry an explicit text edit replacing the typed token, so a completion accepted from a stale list (e.g. left open across a backspace) substitutes the token instead of pasting after it (group_outputgroup_output =). runner lsp value completions inside an open string literal (prefer = ["ba) insert the bare word instead of a quoted one — the quotes are already typed (and auto-paired), so accepting previously produced ""bacon"". runner lsp is now comment-aware: no completions or hover at or after a # (whole-line or trailing); a # inside a string literal still isn’t treated as a comment. What’s Changed fix(lsp): dotted-key completion fixes + complete [tasks.overrides] keys with project task names by @kjanat in https://github.com/kjanat/runner/pull/85 Full Changelog: https://github.com/kjanat/runner/compare/v0.19.0...v0.19.1
July 5, 2026
Setup runner cli
Version updated for https://github.com/kjanat/runner to version v0.19.0.
This action is used across all versions by 0 repositories. Action Type This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
What’s Changed Added doctor --json overrides now reports every resolver override state except parent_group_open (internal runner-to-runner plumbing, never a user override): failure_policy, install_pms, output_grouping (group_output/github_group_parallel/parallel_grouped), prefer_sources, script_policy, and task_source_pins. Previously only pm/pm_by_ecosystem/runner/prefer_runners/fallback/ on_mismatch/explain/no_warnings/quiet were surfaced, so -k/-K, [tasks].prefer, [tasks.overrides], [install], and [github]/ [parallel] config could be set without doctor ever showing it. Changed Breaking: doctor --json and why --json now always emit the structured report (previously reachable via --schema-version 3); the flat v1/v2 shape is gone from both. --schema-version now only accepts 1; 2/3 are rejected. runner config init’s scaffold is now generated from RunnerConfig’s schemars metadata instead of hand-typed: section headers and their leading comments come straight from the section structs’ doc comments, and every enum-valued field’s inline hint (pm.node, pm.python, resolution.fallback, resolution.on_mismatch, install.scripts, task_runner.prefer) is generated from the same types the resolver parses those values with, not hand-typed prose. A config field, or an accepted value for one of these, can no longer ship without scaffold coverage — drift-guard tests fail the build instead. A few section descriptions read slightly differently as a result. FallbackPolicy, MismatchPolicy, and ScriptPolicy gained real label()/ALL (or SETTABLE) methods, replacing four separate hardcoded copies of their accepted strings (parse function, two display call sites, and now the scaffold) with one. Removed The v1/v2/v3 schema split. Not enough external adoption yet to justify carrying three versions per surface — today’s shape is the only one, retroactively called v1. Committed schema files dropped their version suffix (doctor.v3.schema.json → doctor.schema.json, etc.); the 10 superseded schema/example files are deleted.
July 5, 2026
Setup runner cli
Version updated for https://github.com/kjanat/runner to version v0.18.1.
This action is used across all versions by 0 repositories. Action Type This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
What’s Changed Fixed The v0.18.0 npm packages spawn-failed with EACCES: the platform packages’ new explicit bin field disabled directories.bin linking, so npm no longer marked the native binaries executable at install — breaking both npx @runner-run/<platform> … and the runner-run facade. Platform bin entries now point directly at the native binaries and expose both commands (npx --package=@runner-run/<platform> runner … and … run …); the launcher shim and the erroneous bin + directories.bin combination are gone. Versions up to 0.17.0 were unaffected; 0.18.0 is deprecated on npm. The npm dist artifact now crosses the build→publish handoff as a tarball so unix file modes survive the zip-based artifact store; the publish job refuses non-executable binaries and smoke-tests the packed tarballs (install + execute every bin) before publishing. Full Changelog: https://github.com/kjanat/runner/compare/v0.18.0...v0.18.1
July 4, 2026
Setup runner cli
Version updated for https://github.com/kjanat/runner to version v0.17.0.
This action is used across all versions by 0 repositories. Action Type This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
What’s Changed Added FQN task syntax: the root:<source>#<name> identity that doctor --json / why --json print for a task is now runnable — run 'root:package.json#deno:importsmap' (the root: scope prefix is optional) dispatches that exact task. Every source label of every schema version round-trips, including v3’s cargo-alias, which previously named a task no syntax could invoke. runner why interprets its argument exactly like run does — qualified syntax (why deno:lint), FQN (why root:package.json#build), and the colon-name fallback below — so it explains the very dispatch run would perform instead of reporting “no candidates” for tokens run accepts. Makefile descriptions from the inline self-documenting form (build: deps ## Build the project), the idiom ## help targets are built on. The preceding-line ## doc form still wins when both are present. Changed A qualified or FQN miss (deno:nope, package.json#nope) is now a hard error in every path. Previously an FQN token fell through to the PM-exec fallback, where bunx/npx treated it as a package spec and resolved it off the network — a typo could hang on registry resolution or download an arbitrary package. Bare unmatched names still fall through; user/repo#ref package specs still work. Single runs and chain pre-validation (run -p/-s) report a qualified miss with one unified message, and miss errors add a note when a source’s task list failed to load (a broken package.json used to produce only a misleading did you mean …? hint). A CLI chain-failure flag now beats the opposite polarity from a lower layer: run -s a b -k with [chain] kill_on_fail = true in runner.toml keeps going instead of aborting with a cross-source conflict — the config polarity had no command-line escape hatch. Same-source conflicts (-k -K, both env vars, both config keys) still error. Boolean RUNNER_* env vars (RUNNER_QUIET, RUNNER_EXPLAIN, RUNNER_NO_WARNINGS, RUNNER_KEEP_GOING, RUNNER_KILL_ON_FAIL) warn and are ignored when set to an unrecognized token. RUNNER_KEEP_GOING=flase (typo’d “false”) used to silently read as truthy — the opposite of the intent. Recognized, case-insensitive: 1/true/yes/on and 0/false/no/off. Fixed package.json scripts whose names start with a source label (deno:importsmap, cargo:check, …) are reachable by their bare name again. The qualifier parser claimed the prefix (deno → deno.json), the qualified lookup missed, and dispatch fell through to PM-exec; an exact full-name match now wins on a qualified miss. A genuine deno.json task still outranks the colon-named script when both exist. Streaming parallel chains (run -p, the default outside GitHub Actions) no longer hang when a task exits but leaves a backgrounded descendant holding the inherited stdout/stderr pipe (some-daemon & exit 0). Pipe readers are now drained with the same bounded grace the grouped path already used, instead of an unbounded join that blocked until the descendant died. A try_wait error while polling a parallel chain no longer orphans the already-spawned sibling processes and their reader threads; both parallel paths route the error through the same kill-and-reap cleanup as a spawn failure. A malformed devEngines value in package.json (e.g. a Corepack-style string where the spec wants an object) no longer erases every script and the packageManager signal behind a false not valid JSON warning. The field degrades to “absent”; the rest of the manifest parses normally. The Taskfile fallback parser (used when the task binary is absent) is a real YAML parse now: quoted and namespaced task names ("build:prod":) are no longer silently dropped, and a Taskfile that fails to parse surfaces a failed to read tasks warning instead of silently yielding zero tasks. A Makefile target whose header appears twice (legal in make) is listed once instead of twice; a later documented duplicate still contributes the description when the first occurrence had none. Full Changelog: https://github.com/kjanat/runner/compare/v0.16.1...v0.17.0
July 4, 2026
Setup runner cli
Version updated for https://github.com/kjanat/runner to version v0.16.1.
This action is used across all versions by 0 repositories. Action Type This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
What’s Changed Fixed npx runner-run now resolves to the full CLI. Added a runner-run bin alias; previously npx failed with could not determine executable to run because neither shipped bin (run, runner) matched the package name. (Reaches users only on this published release; npx runner-run@0.16.0 stays broken.) The no-prebuilt-binary error now names the bun minimumReleaseAge pitfall: its age gate also filters the @runner-run/* platform packages, which must be excluded by exact name (no scope/glob), not just the runner-run facade. Changed Internal: the run alias binary now dispatches through the same dispatch entry point as runner, building a typed Cli from the parsed alias rather than keeping a second resolver-override and command-dispatch copy in dispatch_run_alias. The alias keeps its bespoke help/version forwarding, flat completions, and run man page. One behavior delta: a bare run -k/-K (a chain-failure flag with no task and no -s/-p) now maps to the project dashboard (command: None) and drops the inert chain-failure flag before resolving overrides, so it no longer errors when the opposite polarity is supplied out-of-band via RUNNER_KILL_ON_FAIL/RUNNER_KEEP_GOING or a [chain] config. The old eager builder kept the flag and hit the cross-source conflict; the dashboard never consults the failure policy, so dropping it is correct. See https://github.com/kjanat/runner/issues/52. What’s Changed refactor(run): unify run alias dispatch; do not remove RunAliasCli by @kjanat in https://github.com/kjanat/runner/pull/72 Full Changelog: https://github.com/kjanat/runner/compare/v0.16.0...v0.16.1