From a8769105e660a347c97f5a8aa3528cf0c6d7536f Mon Sep 17 00:00:00 2001 From: "vland-bot[bot]" <282456776+vland-bot[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 22:30:40 +0000 Subject: [PATCH] RELEASING: Releasing 5 package(s) Releases: @rrlab/biome-plugin@1.0.0 @rrlab/oxc-plugin@1.0.0 @rrlab/ts-plugin@1.0.0 @rrlab/tsdown-plugin@1.0.0 @rrlab/cli@1.0.0 [skip ci] --- .changeset/plugin-only-narrowing.md | 42 ------------------ .changeset/refresh-stale-tool-versions.md | 11 ----- .changeset/tool-versions-install-only.md | 10 ----- run-run/biome-plugin/CHANGELOG.md | 52 +++++++++++++++++++++++ run-run/biome-plugin/package.json | 2 +- run-run/cli/CHANGELOG.md | 36 ++++++++++++++++ run-run/cli/package.json | 2 +- run-run/oxc-plugin/CHANGELOG.md | 52 +++++++++++++++++++++++ run-run/oxc-plugin/package.json | 2 +- run-run/ts-plugin/CHANGELOG.md | 45 ++++++++++++++++++++ run-run/ts-plugin/package.json | 2 +- run-run/tsdown-plugin/CHANGELOG.md | 45 ++++++++++++++++++++ run-run/tsdown-plugin/package.json | 2 +- 13 files changed, 235 insertions(+), 68 deletions(-) delete mode 100644 .changeset/plugin-only-narrowing.md delete mode 100644 .changeset/refresh-stale-tool-versions.md delete mode 100644 .changeset/tool-versions-install-only.md diff --git a/.changeset/plugin-only-narrowing.md b/.changeset/plugin-only-narrowing.md deleted file mode 100644 index 0ce371da..00000000 --- a/.changeset/plugin-only-narrowing.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -"@rrlab/biome-plugin": major -"@rrlab/oxc-plugin": major -"@rrlab/ts-plugin": major -"@rrlab/tsdown-plugin": major -"@rrlab/cli": major ---- - -### Declarative plugin shape + first-class `only` narrowing - -Every official plugin factory now accepts an `only?: readonly Kind[]` option that narrows which capabilities the plugin contributes to the kernel's registry. The `only` array is typed against the kinds *that plugin* provides — `biome({ only: ["lint", "format"] })` and `oxc({ only: ["tsc"] })` are both valid; `oxc({ only: ["pack"] })` is a compile error. - -This unblocks host configurations that mix plugins with overlapping capabilities — for example, biome for lint+format alongside oxc for type-aware checks: - -```ts -import biome from "@rrlab/biome-plugin"; -import oxc from "@rrlab/oxc-plugin"; -import { defineConfig } from "@rrlab/cli/config"; - -export default defineConfig({ - plugins: [ - biome({ only: ["lint", "format"] }), - oxc({ only: ["tsc"] }), - ], -}); -``` - -### `@rrlab/oxc-plugin` — new `tsc` capability - -`@rrlab/oxc-plugin` now provides a `tsc` capability backed by the `oxlint-tsgolint` peer (already installed by `rr plugins add oxc`). `rr tsc` configured with the oxc plugin runs `oxlint --type-aware --type-check`. - -### `@rrlab/cli` — better multi-provider error - -The error thrown when two plugins claim the same capability now references the `only` syntax explicitly, e.g.: - -> Multiple plugins provide capability 'lint': biome, oxc. Narrow each plugin's capabilities in run-run.config.ts using the 'only' option — e.g. biome({ only: ['lint'] }) or oxc({ only: ['lint'] }). - -### Plugin authoring — declarative shape (internal-only) - -Plugins now declare `capabilities` (a `{ kind: service }` map) rather than implementing an imperative `setup()`. The kernel-internal SDK at `@rrlab/cli/plugin` applies `only` narrowing, deduplicates bin probes across services that share a `pkg`, and surfaces a single canonical "requires X to be installed" error when a peer-installed tool is missing. New plugin-authoring helpers `decideScaffold` and `pickPreset` are exported from `@rrlab/cli/plugin` and are the canonical path for any user interaction during `rr plugins add`. - -The plugin API remains internal to `@rrlab/*` (no third-party authoring contract). Architectural rationale recorded in `decisions/007-per-plugin-only-option.md` (superseded by 009) and `decisions/009-declarative-plugin-shape.md`. diff --git a/.changeset/refresh-stale-tool-versions.md b/.changeset/refresh-stale-tool-versions.md deleted file mode 100644 index c1262616..00000000 --- a/.changeset/refresh-stale-tool-versions.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@rrlab/biome-plugin": patch -"@rrlab/oxc-plugin": patch ---- - -Refresh stale install ranges in `oxc-plugin`'s `TOOL_VERSIONS` so `rr plugins add oxc` no longer pins users to old 0.x minors. `^0.X.Y` semver on 0.x packages only allows patch bumps — `oxfmt ^0.30.0` was strands at 0.30.x while upstream shipped through 0.51.0, and `oxlint-tsgolint ^0.15.0` strands at 0.15.x while upstream shipped 0.23.0. - -- `oxfmt`: install `^0.30.0` → `^0.51.0`; devDep `0.35.0` → `0.51.0`. -- `oxlint-tsgolint`: install `^0.15.0` → `^0.23.0`; devDep `0.15.0` → `0.23.0`. -- `oxlint`: install stays `^1.0.0` (caret on 1.x already covers 1.66.x); devDep `1.50.0` → `1.66.0`. -- `@biomejs/biome`: install stays `^2.0.0` (caret on 2.x covers latest); devDep `2.4.4` → `2.4.15`. diff --git a/.changeset/tool-versions-install-only.md b/.changeset/tool-versions-install-only.md deleted file mode 100644 index ff6662fd..00000000 --- a/.changeset/tool-versions-install-only.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@rrlab/biome-plugin": patch -"@rrlab/oxc-plugin": patch -"@rrlab/ts-plugin": patch -"@rrlab/tsdown-plugin": patch ---- - -`TOOL_VERSIONS` now carries only `install` (the prescriptive pin used by `rr plugins add`). The `peer` field is gone — `package.json#peerDependencies` is the single source of truth for the peer contract. The per-plugin `tool-versions.test.ts` asserts `semver.subset(install, peerDependencies[name])` instead of string-equality with a duplicated `peer` field. No runtime behaviour change — `peer` was never read outside its parity test. - -Architectural rationale: `decisions/010-tool-versions-install-only.md`. diff --git a/run-run/biome-plugin/CHANGELOG.md b/run-run/biome-plugin/CHANGELOG.md index dbf36f2c..12844db8 100644 --- a/run-run/biome-plugin/CHANGELOG.md +++ b/run-run/biome-plugin/CHANGELOG.md @@ -1,5 +1,57 @@ # @rrlab/biome-plugin +## 1.0.0 + +### Major Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - ### Declarative plugin shape + first-class `only` narrowing + + Every official plugin factory now accepts an `only?: readonly Kind[]` option that narrows which capabilities the plugin contributes to the kernel's registry. The `only` array is typed against the kinds _that plugin_ provides — `biome({ only: ["lint", "format"] })` and `oxc({ only: ["tsc"] })` are both valid; `oxc({ only: ["pack"] })` is a compile error. + + This unblocks host configurations that mix plugins with overlapping capabilities — for example, biome for lint+format alongside oxc for type-aware checks: + + ```ts + import biome from "@rrlab/biome-plugin"; + import oxc from "@rrlab/oxc-plugin"; + import { defineConfig } from "@rrlab/cli/config"; + + export default defineConfig({ + plugins: [biome({ only: ["lint", "format"] }), oxc({ only: ["tsc"] })], + }); + ``` + + ### `@rrlab/oxc-plugin` — new `tsc` capability + + `@rrlab/oxc-plugin` now provides a `tsc` capability backed by the `oxlint-tsgolint` peer (already installed by `rr plugins add oxc`). `rr tsc` configured with the oxc plugin runs `oxlint --type-aware --type-check`. + + ### `@rrlab/cli` — better multi-provider error + + The error thrown when two plugins claim the same capability now references the `only` syntax explicitly, e.g.: + + > Multiple plugins provide capability 'lint': biome, oxc. Narrow each plugin's capabilities in run-run.config.ts using the 'only' option — e.g. biome({ only: ['lint'] }) or oxc({ only: ['lint'] }). + + ### Plugin authoring — declarative shape (internal-only) + + Plugins now declare `capabilities` (a `{ kind: service }` map) rather than implementing an imperative `setup()`. The kernel-internal SDK at `@rrlab/cli/plugin` applies `only` narrowing, deduplicates bin probes across services that share a `pkg`, and surfaces a single canonical "requires X to be installed" error when a peer-installed tool is missing. New plugin-authoring helpers `decideScaffold` and `pickPreset` are exported from `@rrlab/cli/plugin` and are the canonical path for any user interaction during `rr plugins add`. + + The plugin API remains internal to `@rrlab/*` (no third-party authoring contract). Architectural rationale recorded in `decisions/007-per-plugin-only-option.md` (superseded by 009) and `decisions/009-declarative-plugin-shape.md`. + +### Patch Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - Refresh stale install ranges in `oxc-plugin`'s `TOOL_VERSIONS` so `rr plugins add oxc` no longer pins users to old 0.x minors. `^0.X.Y` semver on 0.x packages only allows patch bumps — `oxfmt ^0.30.0` was strands at 0.30.x while upstream shipped through 0.51.0, and `oxlint-tsgolint ^0.15.0` strands at 0.15.x while upstream shipped 0.23.0. + + - `oxfmt`: install `^0.30.0` → `^0.51.0`; devDep `0.35.0` → `0.51.0`. + - `oxlint-tsgolint`: install `^0.15.0` → `^0.23.0`; devDep `0.15.0` → `0.23.0`. + - `oxlint`: install stays `^1.0.0` (caret on 1.x already covers 1.66.x); devDep `1.50.0` → `1.66.0`. + - `@biomejs/biome`: install stays `^2.0.0` (caret on 2.x covers latest); devDep `2.4.4` → `2.4.15`. + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - `TOOL_VERSIONS` now carries only `install` (the prescriptive pin used by `rr plugins add`). The `peer` field is gone — `package.json#peerDependencies` is the single source of truth for the peer contract. The per-plugin `tool-versions.test.ts` asserts `semver.subset(install, peerDependencies[name])` instead of string-equality with a duplicated `peer` field. No runtime behaviour change — `peer` was never read outside its parity test. + + Architectural rationale: `decisions/010-tool-versions-install-only.md`. + +- Updated dependencies [[`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198)]: + - @rrlab/cli@1.0.0 + ## 0.1.1 ### Patch Changes diff --git a/run-run/biome-plugin/package.json b/run-run/biome-plugin/package.json index 30603280..d7290b4b 100644 --- a/run-run/biome-plugin/package.json +++ b/run-run/biome-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rrlab/biome-plugin", - "version": "0.1.1", + "version": "1.0.0", "description": "Biome plugin for @rrlab/cli — provides lint, format, and jsc capabilities.", "homepage": "https://github.com/variableland/dx/tree/main/run-run/biome-plugin#readme", "bugs": { diff --git a/run-run/cli/CHANGELOG.md b/run-run/cli/CHANGELOG.md index b76857d5..104fcaef 100644 --- a/run-run/cli/CHANGELOG.md +++ b/run-run/cli/CHANGELOG.md @@ -1,5 +1,41 @@ # @rrlab/cli +## 1.0.0 + +### Major Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - ### Declarative plugin shape + first-class `only` narrowing + + Every official plugin factory now accepts an `only?: readonly Kind[]` option that narrows which capabilities the plugin contributes to the kernel's registry. The `only` array is typed against the kinds _that plugin_ provides — `biome({ only: ["lint", "format"] })` and `oxc({ only: ["tsc"] })` are both valid; `oxc({ only: ["pack"] })` is a compile error. + + This unblocks host configurations that mix plugins with overlapping capabilities — for example, biome for lint+format alongside oxc for type-aware checks: + + ```ts + import biome from "@rrlab/biome-plugin"; + import oxc from "@rrlab/oxc-plugin"; + import { defineConfig } from "@rrlab/cli/config"; + + export default defineConfig({ + plugins: [biome({ only: ["lint", "format"] }), oxc({ only: ["tsc"] })], + }); + ``` + + ### `@rrlab/oxc-plugin` — new `tsc` capability + + `@rrlab/oxc-plugin` now provides a `tsc` capability backed by the `oxlint-tsgolint` peer (already installed by `rr plugins add oxc`). `rr tsc` configured with the oxc plugin runs `oxlint --type-aware --type-check`. + + ### `@rrlab/cli` — better multi-provider error + + The error thrown when two plugins claim the same capability now references the `only` syntax explicitly, e.g.: + + > Multiple plugins provide capability 'lint': biome, oxc. Narrow each plugin's capabilities in run-run.config.ts using the 'only' option — e.g. biome({ only: ['lint'] }) or oxc({ only: ['lint'] }). + + ### Plugin authoring — declarative shape (internal-only) + + Plugins now declare `capabilities` (a `{ kind: service }` map) rather than implementing an imperative `setup()`. The kernel-internal SDK at `@rrlab/cli/plugin` applies `only` narrowing, deduplicates bin probes across services that share a `pkg`, and surfaces a single canonical "requires X to be installed" error when a peer-installed tool is missing. New plugin-authoring helpers `decideScaffold` and `pickPreset` are exported from `@rrlab/cli/plugin` and are the canonical path for any user interaction during `rr plugins add`. + + The plugin API remains internal to `@rrlab/*` (no third-party authoring contract). Architectural rationale recorded in `decisions/007-per-plugin-only-option.md` (superseded by 009) and `decisions/009-declarative-plugin-shape.md`. + ## 0.0.3 ### Patch Changes diff --git a/run-run/cli/package.json b/run-run/cli/package.json index 7f6c3c53..8777d3e0 100644 --- a/run-run/cli/package.json +++ b/run-run/cli/package.json @@ -1,6 +1,6 @@ { "name": "@rrlab/cli", - "version": "0.0.3", + "version": "1.0.0", "description": "The CLI toolbox to fullstack common scripts in Variable Land", "homepage": "https://github.com/variableland/dx/tree/main/run-run/cli#readme", "bugs": { diff --git a/run-run/oxc-plugin/CHANGELOG.md b/run-run/oxc-plugin/CHANGELOG.md index c2791d2f..379759a1 100644 --- a/run-run/oxc-plugin/CHANGELOG.md +++ b/run-run/oxc-plugin/CHANGELOG.md @@ -1,5 +1,57 @@ # @rrlab/oxc-plugin +## 1.0.0 + +### Major Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - ### Declarative plugin shape + first-class `only` narrowing + + Every official plugin factory now accepts an `only?: readonly Kind[]` option that narrows which capabilities the plugin contributes to the kernel's registry. The `only` array is typed against the kinds _that plugin_ provides — `biome({ only: ["lint", "format"] })` and `oxc({ only: ["tsc"] })` are both valid; `oxc({ only: ["pack"] })` is a compile error. + + This unblocks host configurations that mix plugins with overlapping capabilities — for example, biome for lint+format alongside oxc for type-aware checks: + + ```ts + import biome from "@rrlab/biome-plugin"; + import oxc from "@rrlab/oxc-plugin"; + import { defineConfig } from "@rrlab/cli/config"; + + export default defineConfig({ + plugins: [biome({ only: ["lint", "format"] }), oxc({ only: ["tsc"] })], + }); + ``` + + ### `@rrlab/oxc-plugin` — new `tsc` capability + + `@rrlab/oxc-plugin` now provides a `tsc` capability backed by the `oxlint-tsgolint` peer (already installed by `rr plugins add oxc`). `rr tsc` configured with the oxc plugin runs `oxlint --type-aware --type-check`. + + ### `@rrlab/cli` — better multi-provider error + + The error thrown when two plugins claim the same capability now references the `only` syntax explicitly, e.g.: + + > Multiple plugins provide capability 'lint': biome, oxc. Narrow each plugin's capabilities in run-run.config.ts using the 'only' option — e.g. biome({ only: ['lint'] }) or oxc({ only: ['lint'] }). + + ### Plugin authoring — declarative shape (internal-only) + + Plugins now declare `capabilities` (a `{ kind: service }` map) rather than implementing an imperative `setup()`. The kernel-internal SDK at `@rrlab/cli/plugin` applies `only` narrowing, deduplicates bin probes across services that share a `pkg`, and surfaces a single canonical "requires X to be installed" error when a peer-installed tool is missing. New plugin-authoring helpers `decideScaffold` and `pickPreset` are exported from `@rrlab/cli/plugin` and are the canonical path for any user interaction during `rr plugins add`. + + The plugin API remains internal to `@rrlab/*` (no third-party authoring contract). Architectural rationale recorded in `decisions/007-per-plugin-only-option.md` (superseded by 009) and `decisions/009-declarative-plugin-shape.md`. + +### Patch Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - Refresh stale install ranges in `oxc-plugin`'s `TOOL_VERSIONS` so `rr plugins add oxc` no longer pins users to old 0.x minors. `^0.X.Y` semver on 0.x packages only allows patch bumps — `oxfmt ^0.30.0` was strands at 0.30.x while upstream shipped through 0.51.0, and `oxlint-tsgolint ^0.15.0` strands at 0.15.x while upstream shipped 0.23.0. + + - `oxfmt`: install `^0.30.0` → `^0.51.0`; devDep `0.35.0` → `0.51.0`. + - `oxlint-tsgolint`: install `^0.15.0` → `^0.23.0`; devDep `0.15.0` → `0.23.0`. + - `oxlint`: install stays `^1.0.0` (caret on 1.x already covers 1.66.x); devDep `1.50.0` → `1.66.0`. + - `@biomejs/biome`: install stays `^2.0.0` (caret on 2.x covers latest); devDep `2.4.4` → `2.4.15`. + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - `TOOL_VERSIONS` now carries only `install` (the prescriptive pin used by `rr plugins add`). The `peer` field is gone — `package.json#peerDependencies` is the single source of truth for the peer contract. The per-plugin `tool-versions.test.ts` asserts `semver.subset(install, peerDependencies[name])` instead of string-equality with a duplicated `peer` field. No runtime behaviour change — `peer` was never read outside its parity test. + + Architectural rationale: `decisions/010-tool-versions-install-only.md`. + +- Updated dependencies [[`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198)]: + - @rrlab/cli@1.0.0 + ## 0.1.1 ### Patch Changes diff --git a/run-run/oxc-plugin/package.json b/run-run/oxc-plugin/package.json index 03cf8312..60398dca 100644 --- a/run-run/oxc-plugin/package.json +++ b/run-run/oxc-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rrlab/oxc-plugin", - "version": "0.1.1", + "version": "1.0.0", "description": "oxc plugin for @rrlab/cli — provides lint (oxlint) and format (oxfmt) capabilities.", "homepage": "https://github.com/variableland/dx/tree/main/run-run/oxc-plugin#readme", "bugs": { diff --git a/run-run/ts-plugin/CHANGELOG.md b/run-run/ts-plugin/CHANGELOG.md index 54d612d6..47053bbf 100644 --- a/run-run/ts-plugin/CHANGELOG.md +++ b/run-run/ts-plugin/CHANGELOG.md @@ -1,5 +1,50 @@ # @rrlab/ts-plugin +## 1.0.0 + +### Major Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - ### Declarative plugin shape + first-class `only` narrowing + + Every official plugin factory now accepts an `only?: readonly Kind[]` option that narrows which capabilities the plugin contributes to the kernel's registry. The `only` array is typed against the kinds _that plugin_ provides — `biome({ only: ["lint", "format"] })` and `oxc({ only: ["tsc"] })` are both valid; `oxc({ only: ["pack"] })` is a compile error. + + This unblocks host configurations that mix plugins with overlapping capabilities — for example, biome for lint+format alongside oxc for type-aware checks: + + ```ts + import biome from "@rrlab/biome-plugin"; + import oxc from "@rrlab/oxc-plugin"; + import { defineConfig } from "@rrlab/cli/config"; + + export default defineConfig({ + plugins: [biome({ only: ["lint", "format"] }), oxc({ only: ["tsc"] })], + }); + ``` + + ### `@rrlab/oxc-plugin` — new `tsc` capability + + `@rrlab/oxc-plugin` now provides a `tsc` capability backed by the `oxlint-tsgolint` peer (already installed by `rr plugins add oxc`). `rr tsc` configured with the oxc plugin runs `oxlint --type-aware --type-check`. + + ### `@rrlab/cli` — better multi-provider error + + The error thrown when two plugins claim the same capability now references the `only` syntax explicitly, e.g.: + + > Multiple plugins provide capability 'lint': biome, oxc. Narrow each plugin's capabilities in run-run.config.ts using the 'only' option — e.g. biome({ only: ['lint'] }) or oxc({ only: ['lint'] }). + + ### Plugin authoring — declarative shape (internal-only) + + Plugins now declare `capabilities` (a `{ kind: service }` map) rather than implementing an imperative `setup()`. The kernel-internal SDK at `@rrlab/cli/plugin` applies `only` narrowing, deduplicates bin probes across services that share a `pkg`, and surfaces a single canonical "requires X to be installed" error when a peer-installed tool is missing. New plugin-authoring helpers `decideScaffold` and `pickPreset` are exported from `@rrlab/cli/plugin` and are the canonical path for any user interaction during `rr plugins add`. + + The plugin API remains internal to `@rrlab/*` (no third-party authoring contract). Architectural rationale recorded in `decisions/007-per-plugin-only-option.md` (superseded by 009) and `decisions/009-declarative-plugin-shape.md`. + +### Patch Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - `TOOL_VERSIONS` now carries only `install` (the prescriptive pin used by `rr plugins add`). The `peer` field is gone — `package.json#peerDependencies` is the single source of truth for the peer contract. The per-plugin `tool-versions.test.ts` asserts `semver.subset(install, peerDependencies[name])` instead of string-equality with a duplicated `peer` field. No runtime behaviour change — `peer` was never read outside its parity test. + + Architectural rationale: `decisions/010-tool-versions-install-only.md`. + +- Updated dependencies [[`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198)]: + - @rrlab/cli@1.0.0 + ## 0.1.1 ### Patch Changes diff --git a/run-run/ts-plugin/package.json b/run-run/ts-plugin/package.json index c492f737..00b774b8 100644 --- a/run-run/ts-plugin/package.json +++ b/run-run/ts-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rrlab/ts-plugin", - "version": "0.1.1", + "version": "1.0.0", "description": "TypeScript plugin for @rrlab/cli — provides the tsc capability.", "homepage": "https://github.com/variableland/dx/tree/main/run-run/ts-plugin#readme", "bugs": { diff --git a/run-run/tsdown-plugin/CHANGELOG.md b/run-run/tsdown-plugin/CHANGELOG.md index 3f6a44ed..c3e314b5 100644 --- a/run-run/tsdown-plugin/CHANGELOG.md +++ b/run-run/tsdown-plugin/CHANGELOG.md @@ -1,5 +1,50 @@ # @rrlab/tsdown-plugin +## 1.0.0 + +### Major Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - ### Declarative plugin shape + first-class `only` narrowing + + Every official plugin factory now accepts an `only?: readonly Kind[]` option that narrows which capabilities the plugin contributes to the kernel's registry. The `only` array is typed against the kinds _that plugin_ provides — `biome({ only: ["lint", "format"] })` and `oxc({ only: ["tsc"] })` are both valid; `oxc({ only: ["pack"] })` is a compile error. + + This unblocks host configurations that mix plugins with overlapping capabilities — for example, biome for lint+format alongside oxc for type-aware checks: + + ```ts + import biome from "@rrlab/biome-plugin"; + import oxc from "@rrlab/oxc-plugin"; + import { defineConfig } from "@rrlab/cli/config"; + + export default defineConfig({ + plugins: [biome({ only: ["lint", "format"] }), oxc({ only: ["tsc"] })], + }); + ``` + + ### `@rrlab/oxc-plugin` — new `tsc` capability + + `@rrlab/oxc-plugin` now provides a `tsc` capability backed by the `oxlint-tsgolint` peer (already installed by `rr plugins add oxc`). `rr tsc` configured with the oxc plugin runs `oxlint --type-aware --type-check`. + + ### `@rrlab/cli` — better multi-provider error + + The error thrown when two plugins claim the same capability now references the `only` syntax explicitly, e.g.: + + > Multiple plugins provide capability 'lint': biome, oxc. Narrow each plugin's capabilities in run-run.config.ts using the 'only' option — e.g. biome({ only: ['lint'] }) or oxc({ only: ['lint'] }). + + ### Plugin authoring — declarative shape (internal-only) + + Plugins now declare `capabilities` (a `{ kind: service }` map) rather than implementing an imperative `setup()`. The kernel-internal SDK at `@rrlab/cli/plugin` applies `only` narrowing, deduplicates bin probes across services that share a `pkg`, and surfaces a single canonical "requires X to be installed" error when a peer-installed tool is missing. New plugin-authoring helpers `decideScaffold` and `pickPreset` are exported from `@rrlab/cli/plugin` and are the canonical path for any user interaction during `rr plugins add`. + + The plugin API remains internal to `@rrlab/*` (no third-party authoring contract). Architectural rationale recorded in `decisions/007-per-plugin-only-option.md` (superseded by 009) and `decisions/009-declarative-plugin-shape.md`. + +### Patch Changes + +- [#229](https://github.com/variableland/dx/pull/229) [`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198) Thanks [@rqbazan](https://github.com/rqbazan)! - `TOOL_VERSIONS` now carries only `install` (the prescriptive pin used by `rr plugins add`). The `peer` field is gone — `package.json#peerDependencies` is the single source of truth for the peer contract. The per-plugin `tool-versions.test.ts` asserts `semver.subset(install, peerDependencies[name])` instead of string-equality with a duplicated `peer` field. No runtime behaviour change — `peer` was never read outside its parity test. + + Architectural rationale: `decisions/010-tool-versions-install-only.md`. + +- Updated dependencies [[`696de73`](https://github.com/variableland/dx/commit/696de73e4f602b860586df413757274dabc1c198)]: + - @rrlab/cli@1.0.0 + ## 0.1.1 ### Patch Changes diff --git a/run-run/tsdown-plugin/package.json b/run-run/tsdown-plugin/package.json index d103e14b..6c6c067e 100644 --- a/run-run/tsdown-plugin/package.json +++ b/run-run/tsdown-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rrlab/tsdown-plugin", - "version": "0.1.1", + "version": "1.0.0", "description": "tsdown plugin for @rrlab/cli — provides the pack capability for building TS libraries.", "homepage": "https://github.com/variableland/dx/tree/main/run-run/tsdown-plugin#readme", "bugs": {