chore(release): react-ui 0.12.0, lang-core 0.2.6, cli 0.0.8#630
Open
ankit-thesys wants to merge 2 commits into
Open
chore(release): react-ui 0.12.0, lang-core 0.2.6, cli 0.0.8#630ankit-thesys wants to merge 2 commits into
ankit-thesys wants to merge 2 commits into
Conversation
….0.8 Version bumps for the first publish since 2026-05-20 (4b663b9): - @openuidev/react-ui 0.11.8 -> 0.12.0 (minor): component CSS now ships in `@layer openui` (#589/#621) and react-syntax-highlighter moved to ^16.1.1 (#577, fixes prismjs CVE-2024-53382) - @openuidev/lang-core 0.2.5 -> 0.2.6 (patch): parser preserves markdown fences and comments inside string props (#605) - @openuidev/cli 0.0.7 -> 0.0.8 (patch): cross-platform template build (#601, #627); no functional changes to the published CLI Remaining packages have no consumer-visible changes since the last publish and are not republished; the lang wrappers pick up lang-core 0.2.6 transitively via their ^0.2.5 ranges. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
537fa5e to
0d1a02e
Compare
Sass emits a UTF-8 BOM for compressed output containing non-ASCII characters. At byte 0 the CSS decoder strips it, but wrapInLayer() concatenated the layer prelude in front of it, pushing the BOM inside the block where U+FEFF parses as an identifier: `:root` becomes a type selector that matches nothing, silently killing the first rule. In the packed 0.12.0 tarball this dropped the entire :root theme-token block of dist/components/index.css (and the first rule of dist/styles/index.css and markDownRenderer.css). Verified in Chrome: the BOM-poisoned rule does not apply; subsequent rules are unaffected. Strip the BOM before wrapping. Repacked tarball now has 0 BOMs across all 171 shipped CSS files and the :root block parses correctly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Summary
Situation — All nine
@openuidev/*packages have been at parity with npm since the 2026-05-20 publish (4b663b90, #534; browser-bundle republished 2026-06-09 from current main). Since then, main accumulated consumer-visible work — the CSS cascade-layers re-land, a parser correctness fix, and a security-driven dependency major — with no version bumps, so none of it is releasable.Task — Audit every commit per package since the publish baseline, decide which packages actually need a release and at what semver level, cut the bumps, and verify the artifacts are publish-ready.
Action — Reviewed each package's diff against
4b663b90(final baseline: main at #624) and separated consumer-visible changes from internal/dev-only churn (catalog migration #612/#624, test-script hygiene, build tooling #604/#627/#628). Three packages have real consumer impact and are bumped here; six are deliberately left alone. Verified release mechanics empirically: packed the bumped packages with both pnpm 10.23.0 and the publish workflow's pinned pnpm 9.15.4 to confirmcatalog:/workspace:^specifiers are replaced with concrete ranges in the published manifests (this release is the first withcatalog:in package manifests, including the react/react-dom peers from #624). The tarball inspection caught a release blocker: the@layerbuild wrapper pushed Sass's UTF-8 BOM mid-stylesheet, whereU+FEFFparses as an identifier and silently killed the first CSS rule — the entire:roottheme-token block ofcomponents.css. Confirmed the dead rule empirically in Chrome and fixed it in this PR.Result — Three packages ready to publish, artifacts verified:
@openuidev/react-ui@layer openuichanges CSS override behavior; react-syntax-highlighter 15→16@openuidev/lang-core@openuidev/cliNot republished:
react-lang/svelte-lang/vue-lang(depend on lang-core via^0.2.5— consumers get 0.2.6 transitively on lockfile refresh),react-headless/react-email(no consumer-visible delta),browser-bundle(0.1.1 already published from current main on 2026-06-09).Also in this PR
@layer openui(cp-css.js) — without this,dist/components/index.css,dist/styles/index.css, anddist/styles/markDownRenderer.cssshipped with a mid-file BOM that made browsers drop their first rule (verified in Chrome: a BOM-prefixed:rootrule inside the layer does not apply; the same rule without the BOM does). Caught during pre-publish tarball inspection; never shipped publicly.Changelog
@openuidev/react-ui 0.12.0
Changed — component CSS now ships inside
@layer openui(#589, #621)Every published component stylesheet — the
components.cssaggregate and each per-component file under./styles/*— is wrapped in@layer openui { ... }. Since unlayered CSS always beats layered CSS, plain app rules like.openui-button-base-primary { background: hotpink; }now override OpenUI without!importantor specificity hacks../defaults.css(theme tokens) andThemeProvider's runtime style injection intentionally stay unlayered so runtime theming keeps winning. (Component JS does not import CSS — stylesheets are loaded explicitly, as before.)Migration:
!importantworkarounds.* { margin: 0 },:where(...)-based) now beat OpenUI styles regardless of specificity — wrap them in a lower layer, e.g.@layer base { ... }."browserslist": "defaults and supports css-cascade-layers".Security —
react-syntax-highlighter^15.6.1 → ^16.1.1 (#577)Removes the DOM-clobbering-vulnerable prismjs 1.27 (CVE-2024-53382) that v15 pinned via refractor 3 — semver could never resolve a patched copy on 15.x, so the major bump is the only consumer-side fix. Affects
CodeBlockand fenced code in markdown rendering; react-ui's public API is unchanged and no peer deps changed. Fresh installs also pick up patchedlodash-es/lodash≥ 4.18 (incl. high-severity_.templateCVE-2026-4800) andmdast-util-to-hast13.2.1 within existing ranges — refresh your lockfile.Heads-up: refractor 5 is ESM-only, so
require()-ing@openuidev/react-uifrom CommonJS (CJS SSR, Jest without ESM) needs Node ≥ 20.19 / ≥ 22.12. If your app also depends on react-syntax-highlighter directly, align it to ^16 to avoid shipping two copies. Prism 1.27 → 1.30 grammar updates may subtly change code-block tokenization.@openuidev/lang-core 0.2.6
Fixed — string-aware parser preprocessing (#605)
```) inside double-quoted string props no longer corrupt parsing — streaming a UI that displays a code snippet now works instead of erroring.//and#on continuation lines of multiline strings are no longer stripped as comments — URLs inside string props survive intact.parse,createParser,createStreamingParser, andmergeStatements.Migration: none. Consumers of
@openuidev/react-lang/svelte-lang/vue-langget this transitively (^0.2.5range) on lockfile refresh — no wrapper republish needed.@openuidev/cli 0.0.8
Maintenance release — template build scripts moved from Unix shell one-liners to cross-platform Node
fsAPIs (#601, #627), fixingpnpm install/build for Windows contributors. No functional changes to the published CLI; scaffolded output is identical to 0.0.7.Pre-publish checklist
dist/components/index.cssstarts with@layer openui{:root{— BOM-free;dist/styles/openui-defaults.cssis unlayered; 0 BOMs across all 171 shipped CSS filescatalog:— packed manifest showsreact: ^18.3.1 || ^19.0.0,react-dom: ^18.0.0 || ^19.0.0,zustand: ^4.5.5,zod: ^3.25.0 || ^4.0.0,@openuidev/react-headless: ^0.8.2,@openuidev/react-lang: ^0.2.6(verified with pnpm 9.15.4 — the publish workflow's version — and 10.23.0)🤖 Generated with Claude Code