chore: release v0.23.1 - #135
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
tegami/version-packages
branch
6 times, most recently
from
July 29, 2026 19:35
d869eb5 to
db9c0d3
Compare
github-actions
Bot
force-pushed
the
tegami/version-packages
branch
from
July 30, 2026 01:22
db9c0d3 to
d4fda8d
Compare
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
All bumped packages.
@reactunity/create0.23.00.23.1@reactunity/material0.23.00.23.1@reactunity/renderer0.23.00.23.1@reactunity/scripts0.23.00.23.1Changelogs
2026-07-28-9c4e2b.mdShow Bumped Packages (1)
npm:@reactunity/rendererFix gradients rendering too dark in gamma colour space
Every gradient —
linear-gradient,radial-gradient,conic-gradientand their repeating forms — had its colours converted to linear space regardless of the project's colour space. A gamma-space project never converts them back, so the whole ramp came out darkened by a 2.2 exponent: CSSgreenpainted asrgb(0,55,0)rather thanrgb(0,128,0), andlinear-gradient(red, blue)crossed atrgb(54,0,55)rather thanrgb(127,0,128). Saturated endpoints survived while everything between them sank toward black.The ramp is stored in a texture flagged linear and its contents have to agree with that flag, so the conversion is right in a linear-space project and stays. It now follows
QualitySettings.activeColorSpaceinstead of applying unconditionally. Gamma-space projects again match what a browser paints for the same CSS declaration, to the byte.Introduced in 0.23.0. Projects on Linear colour space were never affected, and need no changes.
2026-07-29-b71c4e.mdShow Bumped Packages (1)
npm:@reactunity/rendererFix non-solid border styles rendering as solid until the next style update
inset,outset,groove,ridge,dotted,dashedanddoubleborders came out flat solid on an element's first render. Any later style update — a hot reload, a state change, anything that re-ran the style pass — painted them correctly, so in the Editor they appeared to work while a build, where no such update ever arrives, showed solid borders forever.The style is encoded as UVs into a lookup texture that the border graphic samples. That texture was bound from the
Roundingsetter alone, and the graphic is also created from the layout pass, which never assigns rounding: styles run before layout, so on the first pass Yoga has no border widths yet and no border graphic exists to receive the rounding, and by the time the layout pass creates one the style pass is over. With no texture bound, Unity substitutes a white one and every style samples as solid.The texture is now resolved on each material rebuild instead of being cached on assignment, so it is correct however the graphic came to exist.
Borders with a
border-radiusstill ignoreborder-styleand paint solid — a separate, pre-existing limitation of the rounded mesh path.2026-07-29-e35a90.mdShow Bumped Packages (1)
npm:@reactunity/rendererSupport border-style and outline-style on rounded corners
border-radiusused to dropborder-styleentirely: the rounded mesh path sampled no style at all, so every style painted as flat solid, andnonepainted a solid border rather than nothing. Browsers render all of them with rounded corners, so a declaration that worked on a square element silently lost its style once a radius was added.outline-stylewas dropped the same way. All seven styles now render along the curve.groove,ridge,inset,outsetanddoubleare ramps across the border width, and the rounded path already emitted an inner and an outer vertex ring stitched 1:1 into a quad strip. Feeding the style band's inner edge to the inner ring and its outer edge to the outer ring makes the strip interpolate the ramp, using the same bands and the same per-side inversion as the square path.dottedanddashedrepeat along the edge instead, which one continuous ring cannot express. When a side asks for one, the rings are emitted as vertices only and each side is drawn as its own strip, walked out by arc length along the border's centreline so a dash keeps its length through a corner. The dash and dot counts are fitted to a whole number per side, so a side begins and ends with half a gap rather than a clipped dash at the mitre. Sides can mix freely - a dashed top against solid sides keeps a clean mitre, since each corner arc doubles its vertex at 45 degrees and the per-side split lands exactly on that pair.2026-07-30-c73d51.mdShow Bumped Packages (1)
npm:@reactunity/rendererFix React Fast Refresh never repainting a hot-updated component
An edit to a component was fetched, applied and acknowledged by the dev server, and then nothing on screen changed. Both dev servers were affected — webpack and Vite alike — so any hot reload that was not a full page reload silently did nothing.
renderregistered the renderer with the devtools hook after committing the tree. React Refresh learns which roots it may refresh from the hook'sonCommitFiberRoot, and only callsscheduleRefreshfor roots it has seen mount — so a renderer that registers after its first commit is invisible to it forever. The initial mount was the commit being missed, which meant the app's only root was never a refresh candidate.injectIntoDevToolsnow runs before the first commit, and once per reconciler rather than on everyrendercall — repeated injection was registering the same renderer under a new id each time.Publish
The following packages will be published if merged:
@reactunity/create0.23.1npm@reactunity/material0.23.1npm@reactunity/renderer0.23.1npm@reactunity/scripts0.23.1npm