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
5 changes: 0 additions & 5 deletions .changeset/bright-cats-explain.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/clear-warning-cap-errors.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/long-token-values.md

This file was deleted.

10 changes: 0 additions & 10 deletions .changeset/token-readers.md

This file was deleted.

19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion plugins/onsystem-agent/mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"onsystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "onsystem@0.9.0"]
"args": ["-y", "onsystem@0.9.1"]
}
}
}
2 changes: 1 addition & 1 deletion plugins/onsystem-agent/plugin.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion plugins/onsystem-cursor/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion plugins/onsystem-cursor/mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"mcpServers": {
"onsystem": {
"command": "npx",
"args": ["-y", "onsystem@0.9.0"]
"args": ["-y", "onsystem@0.9.1"]
}
}
}
2 changes: 1 addition & 1 deletion plugins/onsystem/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion plugins/onsystem/.mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"mcpServers": {
"onsystem": {
"command": "npx",
"args": ["-y", "onsystem@0.9.0"]
"args": ["-y", "onsystem@0.9.1"]
}
}
}
2 changes: 1 addition & 1 deletion plugins/onsystem/hooks/check-ui.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions server.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
Expand Down
Loading