v0.16.0
Added
- Editor language server (
runner lsp, built with--features lsp): a stdio LSP
forrunner.tomlproviding live diagnostics (the same checks as
runner config validate, plus deprecation hints), hover docs sourced from
the JSON Schema, and completion of section names, field names, and value
sets (package managers, the[tasks]runner/PM/source labels, policy enums,
booleans). The validation, schema docs, and label vocabulary are reused from
the CLI, so editor feedback never drifts fromrunneritself. [tasks]section inrunner.tomlfor a persistent, declarative preference
over which source runs an ambiguous task name (one that exists under more than
one source — e.g. apackage.jsonscript and aturbotask). Previously
this could only be expressed per-invocation (package.json:build,
--pm bun,--runner turbo).[tasks].prefer— a rank-only global order. Labels may be task runners
(turbo,make, …), package managers (bun,npm, … map to
package.json;deno→deno.jsonthenpackage.json), or source names
(package.json). Unlike the old[task_runner].prefer, it never
hard-rejects an unlisted source — it only reorders ties.[tasks.overrides]— per-task pins, e.g.build = "turbo",dev = "bun",
that beat the global order for those names.- An explicit
source:taskqualifier,--runner, or--pm/RUNNER_PMstill
outranks these file settings.
Deprecated
[task_runner].preferis deprecated in favor of[tasks].prefer. Existing
configs keep working with their original restrictive behavior and now emit a
migration warning; when both sections are set,[tasks]takes over. The key
is flaggeddeprecatedin the committed JSON Schema;runner config init
keeps a commented migration stub.
What's Changed
Full Changelog: v0.15.0...v0.16.0