From 058c1277f07195f1b02dd002fa5fac7fdf429d8a Mon Sep 17 00:00:00 2001 From: "dgesteves-release[bot]" <343266878+dgesteves-release[bot]@users.noreply.github.com> Date: Fri, 23 Oct 2026 21:38:01 +0000 Subject: [PATCH] chore: release --- .changeset/bright-cats-explain.md | 5 ----- .changeset/clear-warning-cap-errors.md | 5 ----- .changeset/long-token-values.md | 7 ------- .changeset/token-readers.md | 10 ---------- CHANGELOG.md | 19 +++++++++++++++++++ package.json | 2 +- plugins/onsystem-agent/mcp.json | 2 +- plugins/onsystem-agent/plugin.json | 2 +- .../.cursor-plugin/plugin.json | 2 +- plugins/onsystem-cursor/mcp.json | 2 +- plugins/onsystem/.claude-plugin/plugin.json | 2 +- plugins/onsystem/.mcp.json | 2 +- plugins/onsystem/hooks/check-ui.mjs | 2 +- server.json | 4 ++-- 14 files changed, 29 insertions(+), 37 deletions(-) delete mode 100644 .changeset/bright-cats-explain.md delete mode 100644 .changeset/clear-warning-cap-errors.md delete mode 100644 .changeset/long-token-values.md delete mode 100644 .changeset/token-readers.md diff --git a/.changeset/bright-cats-explain.md b/.changeset/bright-cats-explain.md deleted file mode 100644 index b5db273c..00000000 --- a/.changeset/bright-cats-explain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'onsystem': patch ---- - -Explain when a project has no design-system components available. diff --git a/.changeset/clear-warning-cap-errors.md b/.changeset/clear-warning-cap-errors.md deleted file mode 100644 index 93ab0aa3..00000000 --- a/.changeset/clear-warning-cap-errors.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'onsystem': patch ---- - -Explain a failed warning cap in every CLI output format: a GitHub error annotation, or a message on stderr that leaves JSON and SARIF output parseable. diff --git a/.changeset/long-token-values.md b/.changeset/long-token-values.md deleted file mode 100644 index c50e0598..00000000 --- a/.changeset/long-token-values.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'onsystem': patch ---- - -A long length or color no longer slows onsystem down. A class with an arbitrary length thousands of digits long, such as `p-[999…9x]`, took a second to check at 20,000 characters and about 25 seconds at 100,000, in `check`, the MCP `check_ui` tool, the ESLint plugin and the GitHub Action: the pattern that reads a length tried every way to split the digits. It now takes a few milliseconds. The same goes for token values: a length, a `var()` with a fallback, or bare HSL or RGB channels in the design system's stylesheets or Tailwind config, and typography, spacing and radius values in `onsystem export`. A `var()` whose fallback holds `calc()` or another `var()` now has the fallback's value, inside `calc()` too: `calc(2 * var(--gap, var(--space-2)))` is read as a length, and `calc(var(--gap, var(--space-2)) + 1px)` no longer drops the `+ 1px`. - -`onsystem export --format dtcg` keeps a token whose path has a `__proto__` part, such as `--color-__proto__`, under a `"__proto__"` key of its group. It was left out, and a name such as `--__proto__.polluted` added a `polluted` property to every object in the process that ran the export. diff --git a/.changeset/token-readers.md b/.changeset/token-readers.md deleted file mode 100644 index 04cb225d..00000000 --- a/.changeset/token-readers.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'onsystem': patch ---- - -Tokens are read the way the stylesheets and the Tailwind config apply them, in four cases where they were not. - -- An `@theme` color that wraps a variable of bare channels, as shadcn/ui's Tailwind v4 codemod leaves a v3 theme (`--color-destructive: hsl(var(--destructive))` with `--destructive: 0 84.2% 60.2%`), is the token `destructive` with its class. The class and the color were on two tokens, so every fix was an arbitrary value: `text-red-500` was fixed to `text-[hsl(var(--destructive))]`, and now to `text-destructive`. `rgb(var(--x))` over RGB channels counts too. An `@theme` value that names another variable takes its color: with `--color-brand: var(--color-blue-600)`, `bg-blue-600` suggests `bg-brand`. -- Stylesheets imported one after another apply as CSS applies them: a later `@import` overrides an earlier one, and the importing stylesheet's own rules override both. With `@import "./base.css"; @import "./brand.css";`, `--primary` came from base.css, so `bg-[#171717]` was fixed to `bg-primary`, which renders brand.css's color. -- A Tailwind v3 config that extends `borderRadius` (as shadcn/ui's does, with `lg`, `md` and `sm`), or sets none, keeps Tailwind's default scale: `rounded-[12px]` is fixed to `rounded-xl`, not `rounded-lg` (8px), and `rounded-b-[24px]` to `rounded-b-3xl`, not `rounded-b-full`. A `theme.borderRadius` outside `extend` replaces the scale, unless it spreads `defaultTheme.borderRadius` into it. No default step is added when the scale cannot be read: a step of the config has no known size, because no stylesheet read sets the variable it uses (`var(--radius)`); the config takes a preset, a theme or the whole config from an installed package (`presets: [require("@acme/preset")]`, `theme: require("@acme/theme")`, `module.exports = require("@acme/tailwind-config")`, `{ ...base, content }`), which may replace the scale; or `borderRadius` is set from a variable, a function or a spread other than `defaultTheme.borderRadius`. Tailwind's own modules (`tailwindcss/defaultConfig`) do not count. A `theme` that is a module of the project, or spreads one (`theme: require("./theme")`, `theme: { ...require("./theme") }`), replaces the scale with its own `borderRadius`, and `presets: []` leaves out Tailwind's default config, so neither keeps the default steps unless a `theme.borderRadius` spreads them back in. Nor is one added in a Tailwind v4 project that reads the config through `@config`, which has v4's scale. In a Tailwind v3 project with no radius tokens of its own, such as Dub, `no-hardcoded-radius` now runs against that scale, so `check` can report warnings it did not before. -- When `components.json` names a stylesheet in another package, as cal.com's names coss/ui's, zero config also reads the app's own stylesheet first (`styles/globals.css`, `app/globals.css` and the others it looks for without `components.json`), and the named one through it when the app's stylesheet imports it. cal.com's own tokens (`text-subtle`, `bg-emphasis`, `rounded-cal`) were not read, and color fixes named coss/ui's tokens instead. When the app's stylesheet imports Tailwind v4, the spacing and radius rules use Tailwind's scale, as in any Tailwind v4 app. diff --git a/CHANGELOG.md b/CHANGELOG.md index c3b85d34..56f49b3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # onsystem (formerly @dgesteves/design-system-mcp) +## 0.9.1 + +### Patch Changes + +- [#234](https://github.com/dgesteves/onsystem/pull/234) [`643bc6f`](https://github.com/dgesteves/onsystem/commit/643bc6f0e2d31b05088ef28d3b5ad062a9ddbf6f) Thanks [@Aaqibhafeezkhan](https://github.com/Aaqibhafeezkhan)! - Explain when a project has no design-system components available. + +- [#235](https://github.com/dgesteves/onsystem/pull/235) [`65f91f5`](https://github.com/dgesteves/onsystem/commit/65f91f58d81de850737776289cf379f6d29cdde4) Thanks [@Golden007-prog](https://github.com/Golden007-prog)! - Explain a failed warning cap in every CLI output format: a GitHub error annotation, or a message on stderr that leaves JSON and SARIF output parseable. + +- [#232](https://github.com/dgesteves/onsystem/pull/232) [`a965061`](https://github.com/dgesteves/onsystem/commit/a965061791d9e780098580042c2a4b18409a511f) - A long length or color no longer slows onsystem down. A class with an arbitrary length thousands of digits long, such as `p-[999…9x]`, took a second to check at 20,000 characters and about 25 seconds at 100,000, in `check`, the MCP `check_ui` tool, the ESLint plugin and the GitHub Action: the pattern that reads a length tried every way to split the digits. It now takes a few milliseconds. The same goes for token values: a length, a `var()` with a fallback, or bare HSL or RGB channels in the design system's stylesheets or Tailwind config, and typography, spacing and radius values in `onsystem export`. A `var()` whose fallback holds `calc()` or another `var()` now has the fallback's value, inside `calc()` too: `calc(2 * var(--gap, var(--space-2)))` is read as a length, and `calc(var(--gap, var(--space-2)) + 1px)` no longer drops the `+ 1px`. + + `onsystem export --format dtcg` keeps a token whose path has a `__proto__` part, such as `--color-__proto__`, under a `"__proto__"` key of its group. It was left out, and a name such as `--__proto__.polluted` added a `polluted` property to every object in the process that ran the export. + +- [#201](https://github.com/dgesteves/onsystem/pull/201) [`ee231a8`](https://github.com/dgesteves/onsystem/commit/ee231a8a8c7a1afb09aea67e882bf10414c96dcd) - Tokens are read the way the stylesheets and the Tailwind config apply them, in four cases where they were not. + + - An `@theme` color that wraps a variable of bare channels, as shadcn/ui's Tailwind v4 codemod leaves a v3 theme (`--color-destructive: hsl(var(--destructive))` with `--destructive: 0 84.2% 60.2%`), is the token `destructive` with its class. The class and the color were on two tokens, so every fix was an arbitrary value: `text-red-500` was fixed to `text-[hsl(var(--destructive))]`, and now to `text-destructive`. `rgb(var(--x))` over RGB channels counts too. An `@theme` value that names another variable takes its color: with `--color-brand: var(--color-blue-600)`, `bg-blue-600` suggests `bg-brand`. + - Stylesheets imported one after another apply as CSS applies them: a later `@import` overrides an earlier one, and the importing stylesheet's own rules override both. With `@import "./base.css"; @import "./brand.css";`, `--primary` came from base.css, so `bg-[[#171717](https://github.com/dgesteves/onsystem/issues/171717)]` was fixed to `bg-primary`, which renders brand.css's color. + - A Tailwind v3 config that extends `borderRadius` (as shadcn/ui's does, with `lg`, `md` and `sm`), or sets none, keeps Tailwind's default scale: `rounded-[12px]` is fixed to `rounded-xl`, not `rounded-lg` (8px), and `rounded-b-[24px]` to `rounded-b-3xl`, not `rounded-b-full`. A `theme.borderRadius` outside `extend` replaces the scale, unless it spreads `defaultTheme.borderRadius` into it. No default step is added when the scale cannot be read: a step of the config has no known size, because no stylesheet read sets the variable it uses (`var(--radius)`); the config takes a preset, a theme or the whole config from an installed package (`presets: [require("@acme/preset")]`, `theme: require("@acme/theme")`, `module.exports = require("@acme/tailwind-config")`, `{ ...base, content }`), which may replace the scale; or `borderRadius` is set from a variable, a function or a spread other than `defaultTheme.borderRadius`. Tailwind's own modules (`tailwindcss/defaultConfig`) do not count. A `theme` that is a module of the project, or spreads one (`theme: require("./theme")`, `theme: { ...require("./theme") }`), replaces the scale with its own `borderRadius`, and `presets: []` leaves out Tailwind's default config, so neither keeps the default steps unless a `theme.borderRadius` spreads them back in. Nor is one added in a Tailwind v4 project that reads the config through `@config`, which has v4's scale. In a Tailwind v3 project with no radius tokens of its own, such as Dub, `no-hardcoded-radius` now runs against that scale, so `check` can report warnings it did not before. + - When `components.json` names a stylesheet in another package, as cal.com's names coss/ui's, zero config also reads the app's own stylesheet first (`styles/globals.css`, `app/globals.css` and the others it looks for without `components.json`), and the named one through it when the app's stylesheet imports it. cal.com's own tokens (`text-subtle`, `bg-emphasis`, `rounded-cal`) were not read, and color fixes named coss/ui's tokens instead. When the app's stylesheet imports Tailwind v4, the spacing and radius rules use Tailwind's scale, as in any Tailwind v4 app. + ## 0.9.0 ### Minor Changes diff --git a/package.json b/package.json index 7e31b730..3aa5f9d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "onsystem", - "version": "0.9.0", + "version": "0.9.1", "mcpName": "io.github.dgesteves/onsystem", "description": "Keeps coding agents on your design system: catches palette colors, native elements and APIs your system lacks, at every edit and pull request, with the fix. Set it up once in your design-system package; every app in your monorepo gets it.", "keywords": [ diff --git a/plugins/onsystem-agent/mcp.json b/plugins/onsystem-agent/mcp.json index 257f5850..2f5366af 100644 --- a/plugins/onsystem-agent/mcp.json +++ b/plugins/onsystem-agent/mcp.json @@ -4,7 +4,7 @@ "onsystem": { "type": "stdio", "command": "npx", - "args": ["-y", "onsystem@0.9.0"] + "args": ["-y", "onsystem@0.9.1"] } } } diff --git a/plugins/onsystem-agent/plugin.json b/plugins/onsystem-agent/plugin.json index 3d0eece9..213b55ae 100644 --- a/plugins/onsystem-agent/plugin.json +++ b/plugins/onsystem-agent/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "onsystem", - "version": "0.9.0", + "version": "0.9.1", "description": "Keeps coding agents on your design system: catches palette colors, native elements and APIs your system lacks, at every edit and pull request, with the fix. Set it up once in your design-system package; every app in your monorepo gets it.", "author": { "name": "Diogo Esteves", diff --git a/plugins/onsystem-cursor/.cursor-plugin/plugin.json b/plugins/onsystem-cursor/.cursor-plugin/plugin.json index 43588f60..c05003df 100644 --- a/plugins/onsystem-cursor/.cursor-plugin/plugin.json +++ b/plugins/onsystem-cursor/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "onsystem", "displayName": "onsystem", - "version": "0.9.0", + "version": "0.9.1", "description": "Keeps coding agents on your design system: catches palette colors, native elements and APIs your system lacks, at every edit and pull request, with the fix. Set it up once in your design-system package; every app in your monorepo gets it.", "author": { "name": "Diogo Esteves" diff --git a/plugins/onsystem-cursor/mcp.json b/plugins/onsystem-cursor/mcp.json index d893bf08..b926f589 100644 --- a/plugins/onsystem-cursor/mcp.json +++ b/plugins/onsystem-cursor/mcp.json @@ -2,7 +2,7 @@ "mcpServers": { "onsystem": { "command": "npx", - "args": ["-y", "onsystem@0.9.0"] + "args": ["-y", "onsystem@0.9.1"] } } } diff --git a/plugins/onsystem/.claude-plugin/plugin.json b/plugins/onsystem/.claude-plugin/plugin.json index f7459917..ee916338 100644 --- a/plugins/onsystem/.claude-plugin/plugin.json +++ b/plugins/onsystem/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "onsystem", "displayName": "onsystem", - "version": "0.9.0", + "version": "0.9.1", "description": "Keeps coding agents on your design system: catches palette colors, native elements and APIs your system lacks, at every edit and pull request, with the fix. Set it up once in your design-system package; every app in your monorepo gets it.", "author": { "name": "Diogo Esteves", diff --git a/plugins/onsystem/.mcp.json b/plugins/onsystem/.mcp.json index d893bf08..b926f589 100644 --- a/plugins/onsystem/.mcp.json +++ b/plugins/onsystem/.mcp.json @@ -2,7 +2,7 @@ "mcpServers": { "onsystem": { "command": "npx", - "args": ["-y", "onsystem@0.9.0"] + "args": ["-y", "onsystem@0.9.1"] } } } diff --git a/plugins/onsystem/hooks/check-ui.mjs b/plugins/onsystem/hooks/check-ui.mjs index 98a33b60..8e7cc934 100644 --- a/plugins/onsystem/hooks/check-ui.mjs +++ b/plugins/onsystem/hooks/check-ui.mjs @@ -61,7 +61,7 @@ import path from 'node:path'; const PACKAGE = 'onsystem'; // The exact release this plugin runs; scripts/sync-versions.mjs sets it with each release. -const VERSION = '0.9.0'; +const VERSION = '0.9.1'; const UI_FILE = /\.[jt]sx$/i; const MAX_FINDINGS = 30; // Both runs together, within the 60 seconds hooks.json gives the hook. Tests shorten it. diff --git a/server.json b/server.json index 5dc0a93f..c9a7d893 100644 --- a/server.json +++ b/server.json @@ -20,12 +20,12 @@ "sizes": ["180x180"] } ], - "version": "0.9.0", + "version": "0.9.1", "packages": [ { "registryType": "npm", "identifier": "onsystem", - "version": "0.9.0", + "version": "0.9.1", "transport": { "type": "stdio" }