Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ t = "test --all-features --all-targets"
bb = "build --bin run --bin runner"
bbr = "bb --release"
cl = "clippy --all-targets --all-features"
dwn = "--config .cargo/nightly.toml doc --workspace --all-features" # rustup run nightly cargo dwn
rq = "run --quiet"
rr = "run --release"

Expand Down
8 changes: 8 additions & 0 deletions .cargo/nightly.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[build] # rustup run nightly -- cargo dwn
rustflags = ["-D", "warnings"]
rustdocflags = [
"-Zcrate-attr=feature(rustdoc_missing_doc_code_examples)",
"-Zcrate-attr=warn(rustdoc::missing_doc_code_examples)",
"-D",
"warnings",
]
48 changes: 14 additions & 34 deletions .zed/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,48 +15,28 @@
"url": "https://json-schema.org/draft/2020-12/schema",
},
{
"fileMatch": ["schemas/doctor.v1.example.json", "doctor.v1.example.json"],
"url": "./schemas/doctor.v1.schema.json",
"fileMatch": ["schemas/doctor.example.json", "doctor.example.json"],
"url": "./schemas/doctor.schema.json",
},
{
"fileMatch": ["schemas/doctor.v2.example.json", "doctor.v2.example.json"],
"url": "./schemas/doctor.v2.schema.json",
"fileMatch": ["schemas/list.example.json", "list.example.json"],
"url": "./schemas/list.schema.json",
},
{
"fileMatch": ["schemas/list.v1.example.json", "list.v1.example.json"],
"url": "./schemas/list.v1.schema.json",
},
{
"fileMatch": ["schemas/list.v2.example.json", "list.v2.example.json"],
"url": "./schemas/list.v2.schema.json",
},
{
"fileMatch": ["schemas/why.v1.example.json", "why.v1.example.json"],
"url": "./schemas/why.v1.schema.json",
},
{
"fileMatch": ["schemas/why.v2.example.json", "why.v2.example.json"],
"url": "./schemas/why.v2.schema.json",
},
{
"fileMatch": ["schemas/doctor.v3.example.json", "doctor.v3.example.json"],
"url": "./schemas/doctor.v3.schema.json",
},
{
"fileMatch": ["schemas/why.v3.example.json", "why.v3.example.json"],
"url": "./schemas/why.v3.schema.json",
"fileMatch": ["schemas/why.example.json", "why.example.json"],
"url": "./schemas/why.schema.json",
},
],
},
},
},
"rust-analyzer": {
"initialization_options": {
"diagnostics": { "experimental": { "enable": true } },
"check": { "allTargets": true, "features": "all", "workspace": true },
"cargo": { "allTargets": true, "features": ["all"] },
},
},
// "rust-analyzer": {
// "initialization_options": {
// "diagnostics": { "experimental": { "enable": true } },
// "check": { "allTargets": true, "features": "all", "workspace": true },
// "cargo": { "allTargets": true, "features": ["all"] },
// },
// },
"cargo-tom": {
"initialization_options": {
"per_page": 25, // Search
Expand All @@ -68,5 +48,5 @@
},
},
"file_types": { "SVG": ["*.ico"], "Shell Script": [".runner-dev"] },
"languages": { "TOML": { "language_servers": ["tombi", "..."] } },
"languages": { "TOML": { "language_servers": ["tombi", "..."] }, "Rust": { "wrap_guides": [100] } },
}
36 changes: 36 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,42 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
- [ ] Update the `[Unreleased]` compare link to the new tag.
- [ ] Create and push a signed `vX.Y.Z` tag from `master`.

### 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.

### Fixed

- `runner schema --all` no longer surfaces a raw Rust panic if the
init-template generator ever drifts from `RunnerConfig` in a released
binary (the drift-guard test should already catch this before merge);
it now reports a clean CLI error instead.

## [0.18.1] - 2026-07-04

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ l -- → clippy --all-targets --all-features -- -D warnings -D clipp
--explain -- Print a one-line trace describing how the package manager was resolved. Also enabled when RUNNER_EXPLAIN is set to a truthy value.
--no-warnings -- Suppress all non-fatal warnings on stderr. Also enabled when RUNNER_NO_WARNINGS is set to a truthy value.
-q, --quiet -- Suppress the dispatch arrow on stderr. Also enabled when RUNNER_QUIET is set to a truthy value.
--schema-version -- Pin JSON output schema version (1 or 2). Defaults to latest. Affects --json output of doctor/list/why only.
--schema-version -- Pin JSON output schema version (currently always 1). Affects --json output of doctor/list/why only.
--sequential -- Run the given tasks sequentially. Conflicts with `--parallel`
--parallel -- Run the given tasks in parallel. Conflicts with `--sequential`
--keep-going -- Run every task in the chain regardless of failures. Conflicts with `--kill-on-fail`
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://kjanat.github.io/runner/schemas/doctor.v3.schema.json",
"schema_version": 3,
"$schema": "https://kjanat.github.io/runner/schemas/doctor.schema.json",
"schema_version": 1,
"kind": "runner.doctor",
"invocation": {
"argv": [
Expand Down
Loading