Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
9e29139
fix(extractor): let a later css() part replace an earlier one's decla…
owjs3901 Oct 1, 2026
337ddeb
test(extractor): cover known style composition branches
owjs3901 Oct 1, 2026
024a24c
chore: satisfy clippy assert_is_empty lint on Rust 1.99
owjs3901 Oct 1, 2026
71585a9
test(extractor): cover false ?? composition branch
owjs3901 Oct 1, 2026
52f4518
refactor(extractor): split coalesce check so composition lines are me…
owjs3901 Oct 1, 2026
1cedf9f
fix(extractor): compose styled extensions, merge attrs and let later …
owjs3901 Oct 1, 2026
01adab9
test(extractor): restore runtime-value composition test and cover sty…
owjs3901 Oct 1, 2026
53f740b
fix(extractor): render styled as targets and compile withComponent
owjs3901 Oct 1, 2026
b4b42cf
fix(extractor): keep read, $ and theme props off styled tags and eval…
owjs3901 Oct 1, 2026
e2cfa67
test(extractor): cover shouldForwardProp forms and element prop filte…
owjs3901 Oct 1, 2026
fd1783d
fix(react,components): support React 18 peers and drop React 19-only …
owjs3901 Oct 2, 2026
a641f0b
chore: satisfy clippy assert_is_empty lint on Rust 1.99
owjs3901 Oct 2, 2026
b6c0d89
fix(components): forward refs from the UI kit form components
owjs3901 Oct 2, 2026
ce9f390
fix(extractor): forward refs from generated styled components
owjs3901 Oct 2, 2026
dc2746b
Merge remote-tracking branch 'origin/fix/ui-kit-forward-ref' into tes…
owjs3901 Oct 3, 2026
6f85301
Merge remote-tracking branch 'origin/fix/styled-forward-ref' into tes…
owjs3901 Oct 3, 2026
d6453d8
fix(components): provide Select and Stepper context as React 18 does
owjs3901 Oct 3, 2026
ac3fda7
Merge branch 'fix/react-18-support' into test/react-18-fixture
owjs3901 Oct 3, 2026
b566e51
test: build and drive a React 18 app in CI
owjs3901 Oct 3, 2026
0ad2ad6
ci: pin actions and toolchains, scope permissions per event, and gene…
owjs3901 Oct 3, 2026
97ab976
ci: give the pull request changepacks check the local main it compare…
owjs3901 Oct 3, 2026
8cf1e1a
ci: fail the benchmark job on a Devup UI regression and keep a WASM s…
owjs3901 Oct 3, 2026
56a37f1
ci: calibrate the benchmark baseline, results and WASM budget from th…
owjs3901 Oct 3, 2026
5644a8a
chore: merge main into React 18 fixture CI
owjs3901 Oct 6, 2026
7a81003
chore: merge updated React 18 CI into hardening
owjs3901 Oct 6, 2026
1936fa3
chore: merge hardened main CI into benchmark regressions
owjs3901 Oct 6, 2026
af1177d
merge: update PR #706 with main ESLint checks
owjs3901 Oct 8, 2026
944e723
merge: update PR #706 with 9a953607
owjs3901 Oct 8, 2026
5a70d2a
merge: update PR #706 with db631c6c
owjs3901 Oct 8, 2026
19437d1
Merge main b711ed1f into fix/react-18-support
owjs3901 Oct 8, 2026
b878357
Merge main 9a953607 into fix/react-18-support
owjs3901 Oct 8, 2026
2b5cc38
Merge main db631c6c into fix/react-18-support
owjs3901 Oct 8, 2026
820e7c1
Merge main 11790bef into fix/react-18-support
owjs3901 Oct 8, 2026
141596c
Merge main b711ed1f into fix/ui-kit-forward-ref
owjs3901 Oct 8, 2026
65dd129
Merge main 9a953607 into fix/ui-kit-forward-ref
owjs3901 Oct 8, 2026
cf33ef6
Merge main db631c6c into fix/ui-kit-forward-ref
owjs3901 Oct 8, 2026
583b735
Merge main 11790bef into fix/ui-kit-forward-ref
owjs3901 Oct 8, 2026
30247ba
merge: update PR #706 with main
owjs3901 Oct 8, 2026
c7ea90a
merge: update PR #707 with main
owjs3901 Oct 8, 2026
4669b17
merge: update PR #710 with PR #707
owjs3901 Oct 8, 2026
9e4d28a
merge: update PR #711 with PR #710
owjs3901 Oct 8, 2026
ae283a7
merge: update PR #722 with PR #711
owjs3901 Oct 8, 2026
037143a
merge: update PR #731 with PR #722
owjs3901 Oct 8, 2026
2f08483
merge: update PR #731 with PR #720
owjs3901 Oct 8, 2026
49f8fc8
merge: update PR #731 with PR #721
owjs3901 Oct 8, 2026
2fcff60
merge: update PR #744 with PR #731
owjs3901 Oct 8, 2026
07391c2
merge: update PR #746 with PR #744
owjs3901 Oct 8, 2026
fac1d7d
ci(benchmark): recalibrate for main Tailwind v4 output
owjs3901 Oct 8, 2026
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
7 changes: 7 additions & 0 deletions .changepacks/changepack_log_ci_hardening.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"changes": {
"bindings/devup-ui-wasm/package.json": "Patch"
},
"note": "CI and test infrastructure: the workflow pins every third-party action by commit SHA and every toolchain (Rust 1.99.0, Bun, Node, wasm-pack, cargo-binstall by checksum, cargo-tarpaulin) with the versions in the cache keys, runs pull requests read-only and moves npm publishing and Pages deployment into jobs that run only on pushes to main, never creates or commits e2e baselines, and sets timeouts. The wasm package build now starts from an empty pkg/ and verify:dist rejects files of the removed lite export, its README describes the real API, state and errors, and a Bun test checks the JS/WASM interface. The README benchmark tables are generated from one checked result file in both languages with the CSS size in its own column.",
"date": "2026-10-01T00:00:00.000Z"
}
7 changes: 7 additions & 0 deletions .changepacks/changepack_log_compose_known_styles.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"changes": {
"bindings/devup-ui-wasm/package.json": "Patch"
},
"note": "css(a, b) composing classes whose styles the build knows (a const bound to css() in the file, or a css() result another module exports with a rule object every value of which is known) merges their styles: a later part's declaration replaces an earlier one's for the same property, selector, breakpoint and layer, also under conditions (css(base, cond && danger)) and for ||/?? parts, where the classes used to be joined and the stylesheet order picked the winner. vanilla-extract style([a, b]) passes each composed style as its own argument, so the later one wins, and a style composed again later (style([a, b, a])) is kept. Classes the build does not know (strings, props, CSS Modules) are kept as they are",
"date": "2026-10-01T00:00:00.000Z"
}
7 changes: 7 additions & 0 deletions .changepacks/changepack_log_compose_styled.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"changes": {
"bindings/devup-ui-wasm/package.json": "Patch"
},
"note": "styled(Base) extending a styled component the file binds to a const renders Base's tag directly with Base's styles composed under its own, so the extension's declarations replace Base's for the same property, selector, breakpoint and layer instead of losing to them by stylesheet order; Base's attrs apply before the extension's. attrs merge as styled-components merges them: className is joined with the caller's, style is merged and other props replace earlier ones. On an element, a className or style spread after the explicit prop now wins, as React merges props in the order they are written",
"date": "2026-10-01T00:00:00.000Z"
}
8 changes: 8 additions & 0 deletions .changepacks/changepack_log_react_18_support.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"changes": {
"packages/react/package.json": "Patch",
"packages/components/package.json": "Patch"
},
"note": "@devup-ui/react and @devup-ui/components take React as a peer of ^18 || ^19 instead of `*` and no longer depend on React 19 themselves, so a React 18 app no longer gets a second React. Select and Stepper read their context with useContext instead of React 19's use() and provide it with Context.Provider instead of React 19's <Context value> (which crashes React 18), and Select repositions its container from an effect instead of a callback ref returning cleanup, which React 18 ignores",
"date": "2026-10-01T00:00:00.000Z"
}
7 changes: 7 additions & 0 deletions .changepacks/changepack_log_styled_forward_ref.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"changes": {
"bindings/devup-ui-wasm/package.json": "Patch"
},
"note": "Styled components the build generates are wrapped in React's forwardRef, so a ref passed to them reaches the element they render on React 18 as well as React 19; the file imports forwardRef from react when it defines one",
"date": "2026-10-01T00:00:00.000Z"
}
7 changes: 7 additions & 0 deletions .changepacks/changepack_log_styled_props.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"changes": {
"bindings/devup-ui-wasm/package.json": "Patch"
},
"note": "Styled components no longer pass every prop to the tag they render: `$` props, `theme` and the props their style functions or attrs read are kept away from a tag unless it takes them as attributes, and `shouldForwardProp` (Emotion options or styled-components withConfig) is evaluated at build time. A `shouldForwardProp` the build cannot evaluate is a build error naming the file, line and code, with the forms it accepts. An element using a styled component the file defines drops props the component neither reads nor passes on; spread props are passed as written",
"date": "2026-10-01T00:00:00.000Z"
}
7 changes: 7 additions & 0 deletions .changepacks/changepack_log_styled_targets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"changes": {
"bindings/devup-ui-wasm/package.json": "Patch"
},
"note": "Styled components render what their `as` prop names, defaulting to the tag or component they were defined with, and pass `forwardedAs` on as `as`, as styled-components and Emotion do; `as` used to reach the rendered tag as an attribute. `Component.withComponent(target)` on a styled component the file binds to a const builds a component rendering the same styles and attrs as `target` (a tag name or a component JSX can name), where it used to call a method the generated function does not have and throw",
"date": "2026-10-01T00:00:00.000Z"
}
7 changes: 7 additions & 0 deletions .changepacks/changepack_log_ui_kit_forward_ref.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"changes": {
"packages/components/package.json": "Patch"
},
"note": "Button, Checkbox, Input, Radio and Textarea forward their ref to the button, input or textarea they render, so a ref reaches the form element on React 18 as well as React 19",
"date": "2026-10-01T00:00:00.000Z"
}
Loading
Loading