Skip to content

Version Packages - #1349

Open
tenphi wants to merge 1 commit into
mainfrom
changeset-release/main
Open

Version Packages#1349
tenphi wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@tenphi

@tenphi tenphi commented Aug 24, 2026

Copy link
Copy Markdown
Member

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@cube-dev/ui-kit@0.167.0

Minor Changes

  • #1350 ee97f365 Thanks @tenphi! - Board: corner-anchored widget chrome, app-defined widget modifiers, a reason on onLayoutChange, and a real dragCancel default.

    • dragCancel now defaults to BOARD_SELECTION_CANCEL instead of no cancel at all. A control inside a widget has to keep its own press whether or not the board happens to support selection — previously that only worked on a selectable board, where selectionCancel incidentally doubled as the drag guard, so every other board had to hand-write a selector or a pointer-down on a child's button would drag the widget instead. Pass your own selector to narrow or widen it, or '' for the old behaviour.
    • cornerChrome (with cornerChromePlacement, default 'ne') puts a control on a widget's corner, centred on it. It renders in the same layer as the corner resize grips, which is the layer that escapes the widget's own overflow: hidden — chrome hung off the corner from inside a widget is cropped in half by that clip, or by an ancestor's scroll container when the widget sits in the first row. Being outside the widget host, it is also outside the drag gesture, so pressing it can never start a drag and it needs no dragCancel entry.
    • mods on Board.Widget (and board-wide via widgetProps) merges app-defined modifiers into the ones the board sets, so a styles map can match on app state (mods={{ editing: true }} with styles={{ shadow: { editing: '…' } }}) instead of the app swapping whole style objects per state. Board's own modifiers are applied last, so a custom one can never shadow selected, drag and the rest, which the board's styling and its accessibility wiring both depend on.
    • onLayoutChange now reports why the layout changed'drag', 'resize', 'transfer', or 'normalize' for the commits no gesture caused (a reflow for a changed column count, an isAutoHeight widget growing). An app that persisted every commit had no way to tell a user's edit from the board fitting itself to a constraint that moved, so it wrote the reflow back as an edit and marked a document dirty nobody touched. The argument is additive: existing one-parameter handlers keep working.

    The docs also now explain that widget style maps are merged: a map with no '' entry extends the defaults, while one that sets '' replaces them and needs '@inherit' to keep any. Reaching for '': false to switch a single state off is the easy mistake — it silently takes selected, pre-selected and the drag lift with it.

  • #1345 8fdee382 Thanks @tenphi! - Update Tasty to 3.3.1 (from 3.1.0). Three things come with it.

    Color tokens no longer emit companion channel variables, and colorSpace is deprecated. A #name token used to declare --name-color plus a decomposed companion — --name-color-rgb here, since the kit configured colorSpace: 'rgb' — and only the companion is gone: --name-color is emitted exactly as authored. Opacity has used CSS relative color syntax since 3.1.0, so nothing inside Tasty needed the channels any more. If your own CSS reads a companion — rgb(var(--primary-color-rgb) / .2) and the like — it silently stops resolving. Rewrite it against the token itself: oklch(from var(--primary-color) l c h / .2), which works on any color, including the ones no build-time conversion could evaluate. configure({ colorSpace }) now warns in development and does nothing; the kit no longer sets it. One more consequence worth planning for: a token is emitted in the space it was authored in, so getComputedStyle(el).backgroundColor now returns oklch(…) / oklab(…) where it used to return rgb(…). The color is the same, but any test or code that parses those strings by hand has to stop assuming sRGB syntax.

    The inherited color is now readable as a color, through $current-color. #current keeps emitting the currentcolor keyword, so it still resolves against the element that reads it — which is what lets a ramp express its disabled state once, in color, and have everything painted from #current below it fade along. Beside that, every color style now publishes --current-color, registered with initial-value: currentcolor, for the cases the keyword cannot serve: hand-authored CSS, or anywhere the inherited color is needed as a color. Read it as $current-color. A value that already reads the color it inherits — #current, a #current fade — is deliberately not published into it, since resolving it again one level down would fade it twice.

    Opt-in batched style injection (from 3.2.0): configure({ batchInjection: true }) plus a <TastyBatchProvider> queue a commit's stylesheet writes into one FIFO and apply them together, so the document is style-invalidated once per flush instead of once per component — which matters in a tree that measures layout during render (popovers, autosizing inputs, virtualized lists). The provider flushes in useInsertionEffect, before any layout effect, so a queued write can never be observed by a measurement. flushStyles(), hasPendingStyleWrites() and resetStyleBatch() come with it, and all of it is re-exported from @cube-dev/ui-kit. Batching stays off unless an app turns it on.

Patch Changes

  • #1345 8fdee382 Thanks @tenphi! - no-redundant-default-prop now knows three defaults it used to miss: ItemTable's size and summary, and Pagination's summary. The registry it checks against is parsed line by line out of *.docs.mdx, so a documented default whose (default: …) annotation had been hard-wrapped onto the next line was invisible to the parser. Unwrapping the documentation surfaced them, and the generator proved each value against the component it belongs to.

Note

Medium Risk
The release bundles consumer-facing Board default behavior and Tasty token/CSS changes that can break custom styles or tests parsing computed colors; the diff here is only version and changelog housekeeping.

Overview
This is a Changesets release PR: it bumps @cube-dev/ui-kit from 0.166.0 to 0.167.0, folds three consumed changesets into CHANGELOG.md, and removes those .changeset files. Merging publishes the version already landed on main via #1350 and #1345.

0.167.0 ships Board improvements: default dragCancel to BOARD_SELECTION_CANCEL, cornerChrome / cornerChromePlacement, mergeable widget mods, and an optional change reason on onLayoutChange ('drag' | 'resize' | 'transfer' | 'normalize'). It also upgrades Tasty to 3.3.1 (drops *-rgb companion token vars and deprecates colorSpace, adds $current-color, and documents opt-in TastyBatchProvider / batched injection). A patch extends no-redundant-default-prop for ItemTable and Pagination defaults after docs were unwrapped.

Reviewed by Cursor Bugbot for commit b93e357. Bugbot is set up for automated code reviews on this repo. Configure here.

@vercel

vercel Bot commented Aug 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cube-ui-kit Ready Ready Preview Aug 24, 2026 6:13pm

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

🏋️ Size limit report

Name Size Passed?
All 497.02 KB (0% 🟰) Yes 🎉
Tree shaking (just a Button) 118.91 KB (0% 🟰) Yes 🎉

Compared against main at 8fdee38run 32753929263, 2026-08-24T16:58:31Z.

To see which modules changed, download the size-limit-statoscope-report artifact from this run and open report.html.

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Storybook is successfully deployed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant