Repository navigation
Conversation
…d a dist-only package's type declarations The Compatibility section names what package.json declares and CI runs: Node.js 20.19 or later (tests on 22, 24 and 26, the built package on 20.19), Linux, macOS and Windows, ESLint 8.57, 9 and 10, the TypeScript onsystem brings, React 18 and 19 components, Tailwind v3 and v4, both shadcn/ui bases, and the MCP protocols CI connects on, with a link to the clients page. test/compatibility.test.ts reads package.json, ci.yml and scripts/smoke.mjs, so the section cannot drift from them. Since 0.9.0 (#194), an app on a package published as compiled dist/ with type declarations gets every rule; the Quickstart still said such apps got the token rules alone. Only a package that publishes no type declarations gets those now.
This was referenced Oct 22, 2026
Open
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
Roadmap item X2-23-onsystem (the onsystem part of X2-23, a compatibility statement for the three repos).
No compatibility statement. The README gave the Node.js floor in the Quickstart and the ESLint versions in passing, and nothing else: no list of what CI runs and nothing on TypeScript, React, Tailwind, shadcn/ui bases or MCP clients. This PR adds a short
## Compatibilitytable before## Docs. Each row says only whatpackage.jsonor CI shows:engines). CI runs the tests on Node.js 22, 24 and 26, and the built package on 20.19.eslintis an optional peer.forwardRef) or 19 (refas a prop). The tests cover both.@themeand v3tailwind.config, or no Tailwind.asChild) and Base UI (render).pnpm smokeconnects on the 2025-11-25 and 2026-07-28 protocols. The row links the clients page without an anchor, because X2-22-onsystem adds the support tiers table there.Node 20 stays. The finding proposed dropping Node 20, which reached end of life on 2026-04-30. The owner decided to keep
>=20.19: adopters run onsystem throughnpxin their own CI, the floor costs one CI job (node20), and dropping it would break those runs for no gain. The README says "Node.js 20.19 or later" and names the versions CI runs.Dependabot is unchanged. The finding asked for one github-actions cadence across the three repos. onsystem's
.github/dependabot.ymlalready checks github-actions monthly, like signoff-ui. ondocs is still weekly and moves to monthly in its own PR in wave 6. The npm ecosystem is weekly in all three repos, so it already matches.README.md:78 was wrong about dist-only packages (the follow-up from the OS2-49 review, #194). The Quickstart said: "From a package that publishes only compiled code, installed apps get the token rules but no component, prop, variant or native-element checks." Since 0.9.0, an app on a package published as
dist/plus.d.tsgets every rule. I checked this on main before editing:test/installed-declarations.test.tspasses ("every rule runs in the app").initsets it up. Withdist/index.d.ts,checkreportedno-unknown-componentandprefer-design-system-component. With no.d.ts, it reportedno-hardcoded-coloronly, plus "No design-system components found: the component rules did not run."The sentence now says that apps read the components from the published sources, or from the type declarations when the package publishes only compiled
dist/, and get every rule either way. Only a package with no type declarations gets the token rules alone. #202 (OS2-76) keeps the same "no component, prop, variant or native-element checks" wording insrc/init.tsfor that case, so the README andinitstill agree after it merges.One file outside the listed boundary.
test/readme.test.tshad a test that pinned the old sentence word for word. This PR updates that one test case so it checks the new sentence. No other wave 4 PR touches that file.How it was tested
New
test/compatibility.test.ts, which readspackage.json,.github/workflows/ci.yml,scripts/smoke.mjsand the installed MCP SDK's latest protocol version. It checks that:engines, wherever the README names one (the Compatibility section and the Quickstart);node20job runs the floor;test,osandpackjobs;eslint-v9alias and theeslintdevDependency;dependencies.typescript, and TypeScript is not a peer;pnpm smokeconnects with;The updated case in
test/readme.test.tschecks both halves of the dist-only sentence.On main, before the README edit, all 6 cases fail: 5 because there is no
## Compatibilitysection, and the README one because the Quickstart still has the old sentence. All pass after the edit.Gate, all passing:
pnpm install --frozen-lockfile --prefer-offline,pnpm format:check,pnpm lint,pnpm typecheck,pnpm test(92 files passed, 1 skipped; 1136 tests passed, 3 skipped),pnpm build. I did not runpnpm smoke, because this PR does not touch the MCP server or tools.Tests cover the change, with realistic fixtures
pnpm lint,pnpm typecheck,pnpm testandpnpm buildpass (pnpm smokenot needed: no server change)A changeset (
pnpm changeset) for a user-facing change: none, this is a docs-only changeThe docs (
docs/*.md), the README,schema.jsonand.github/assetsare updated if the change affects themFollow-ups (not in this PR)
docs/clients.md, which the MCP clients row points to. Merge it with this PR or after it.