Repository navigation
Conversation
…rations css(a, b) composing classes whose styles the build knows, bound to css() in the file or exported by another module, merges their atoms per property, selector, breakpoint and layer, conditions included, instead of joining classes whose winner the stylesheet order picked. vanilla-extract style([...]) passes each composed style as its own argument, keeping a style composed again later. Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…asurable Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…JSX spreads win Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…led order and JSX element className Refs #688 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…uate shouldForwardProp at build time Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ring Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
… and conditional styles Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…h Emotion Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ed parameters Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ead through namespaces Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…akes from the visitor Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…eclared after their use Refs #695, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…nding Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Contributor
Changepacks@devup-ui/wasm@1.0.83 → 1.0.84 - bindings/devup-ui-wasm/package.jsonPatch
@devup-ui/bun-plugin@1.0.22 → 1.0.23 - packages/bun-plugin/package.jsonPatch
@devup-ui/components@0.1.60 → 0.1.61 - packages/components/package.jsonPatch
@devup-ui/eslint-plugin@1.0.22 → 1.0.23 - packages/eslint-plugin/package.jsonPatch
@devup-ui/next-plugin@1.0.90 → 1.0.91 - packages/next-plugin/package.jsonPatch
@devup-ui/plugin-utils@1.0.17 → 1.0.18 - packages/plugin-utils/package.jsonPatch
@devup-ui/react@1.0.44 → 1.0.45 - packages/react/package.jsonPatch
@devup-ui/reset-css@1.0.31 → 1.0.32 - packages/reset-css/package.jsonPatch
@devup-ui/rsbuild-plugin@1.0.67 → 1.0.68 - packages/rsbuild-plugin/package.jsonPatch
@devup-ui/vite-plugin@1.0.73 → 1.0.74 - packages/vite-plugin/package.jsonPatch
@devup-ui/webpack-plugin@1.0.71 → 1.0.72 - packages/webpack-plugin/package.jsonPatch
|
Codecov Report✅ All modified and coverable lines are covered by tests.
... and 12 files with indirect coverage changes 🚀 New features to boost your workflow:
|
owjs3901
marked this pull request as ready for review
October 12, 2026 13:56
Refs #688 #707 #776 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 #707 Keep the visitor unchanged at module scope so coverage analysis does not invent an uncovered nested declaration Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688 #710 #707 Retain inherited captures for withComponent and as in JSX and TypeScript renderers Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691 #695 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…sition Refs #690 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #682 #695 #688 #689 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
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.
Refs #695 (F: JSX-02, issue #682 survey W53 / 2026-10-11 Q5). #756 위에 쌓은 PR입니다. base는
main이며 #756과 그 선행 PR들이 먼저 병합된 뒤 이 PR을 병합해야 합니다.기준은 #756
f2fc451793a8b6ee42a2f2a0dcd8bae09cd601a5입니다. 이 PR 자체의 변경은 이 기준 이후 다섯 파일이며, #756 브랜치나 일반 JSX의 의미론은 변경하지 않았습니다.요약
jsx,jsxs,jsxDEV의 props 객체가 괄호나 syntax-only TypeScript wrapper로 감싸져 있어도 추출한 클래스와 CSS 변수가 실제 요소에 붙습니다.Patch입니다.동작
규칙은 #756의 일반 JSX와 같습니다. 명시적 값과 spread는 작성 순서대로 한 번씩 평가합니다. 뒤의 unknown spread에 같은 own enumerable 키가 있으면 그 값이 이기고, 키가 없으면 명시적 값이 적용됩니다. spread 뒤의 명시적 값은 항상 이깁니다. inherited/non-enumerable 키는 복사하지 않으며, own
undefined/null은 이전 값을 되살리지 않습니다. getter는 복사할 때 한 번만 읽습니다.원본 증거:
first()가 red,read()가{color:'green'}을 반환할 때 실제 fresh WASM 출력은 다음과 같습니다.수정 전 (#756):
수정 후:
두 경우 모두 CSS는
.a{color:var(--b)}입니다.수정 전에는 class/style이 없어 실제 computed color가 black이었습니다. 수정 후에는 class
a,--b:green이 붙고 375/1440px 및 hover 여부와 관계없이 실제 computed color가rgb(0,128,0)입니다. 두 경우 모두 호출 순서는first,spread이며 각각 한 번 실행합니다. spread에 color가 없으면 red, spread가 먼저이면 명시적 red가 적용됩니다.responsive 값, spread 뒤의 nested selector, conditional styleOrder, 외부 className 및 inline style 보존도 일반 JSX와 동일합니다. props 비교에서는 class token 순서/공백만 정규화하고 나머지 실제 props/style/trace를 비교했습니다.
새로 생기는 오류
새 오류 정책은 없습니다. 기존 일반 JSX/bare call 오류가 이제 wrapped call에서도 정상 적용됩니다. unknown spread가 뒤에서 selector 객체나 단일 CSS 변수로 표현할 수 없는 style shape를 덮어쓸 수 있으면 기존 JSX-02 빌드 오류를 냅니다. unsupported styleOrder도 기존 prescan 검증을 받습니다.
실제 예시
jsx(Box,({_hover:{color:'blue'},...read()})):spread를 selector 앞에 작성하면 정상 컴파일됩니다. runtime selector 객체 합성은 추가하지 않았습니다.
남는 한계
검증
cargo fmt --all, Rust 1.99clippy --workspace --all-targets -- -D warnings, workspace Rust 테스트 3006개 통과.as const/satisfies, spread 전후 및 같은 키/없는 키, nullish/own-enumerable/getter, selector, responsive, conditional styleOrder, 일반 JSX parity..snap.new0. 이 PR의 의도한 snapshot 변경 목록: 없음.main대비 보이는 선행 stack의 snapshot 변경은 fix(extractor): preserve JavaScript semantics across values and element calls #756 소유 변경입니다.CARGO_BUILD_JOBS=2, foreground descendant-tree 6 GiB watchdog으로 순차 실행했습니다. hook은 12 GiB이며, MSYS ancestry 측정 한계를 발견해 동일 hook test payload를 직접 다시 실행하여 약 3.98 GB peak와 통과를 확인했습니다. 실제 commit hook도 lint/tarpaulin/Bun 모두 실행했고 bypass하지 않았습니다.eaa4c340d9b886e23d4f18fd9823115470a3e329: success.publish,landing-next-e2e,vinext-rsc-css-e2e,benchmark네 job 모두 통과했습니다.2026-10-17 업데이트: 갱신된 부모 #756
628f7c7846eac7f331d84eadcc37387c28ea25ff를 병합하여 maina6ecc12570338475df40a429c719160e63db86b5를 포함합니다. 유일한 충돌libs/extractor/src/jsx_semantics_tests.rs의 모듈 목록은 #775의call_spread_attachment와 부모의boundary_classes,boundary_selection을 모두 등록하여 해결했으며 원래 픽스처·단언·스냅샷은 바꾸지 않았습니다. 괄호/as const/satisfies로 감싼 jsx/jsxs/jsxDEV props에서도 기존 클래스·CSS 변수·속성 평가 순서·뒤쪽 스프레드 우선순위를 보존하고 부모의 안전한 선택 캡처/상수 클래스 처리와 단일 forwardRef 렌더러를 유지합니다. 새 오류 종류를 추가하지 않았고 기존의 숨겨지는 선택자/알 수 없는 스프레드 진단을 감싼 호출 props에도 동일하게 적용합니다. 스냅샷 신규 수락 0개, 기본 스택 Rust 5123/0·Rust1.99 fmt/Clippy·새 WASM/루트 빌드 통과, Bun 5939/0·커버리지 100%, 기존 경고 9개 외 lint 오류 0, 실제 React/SSR 공개 경로 125회(호출/JSX 비교 105+부모 회귀 20) 통과했습니다. 전체 커밋 훅도 기본 스택/jobs2/12GiB 제한에서 통과했으며 LSP는 시간 초과로 확인 불가입니다. 기존 main JSX pragma 손실은 #784로 별도 추적하고 현재 머리의 CI 결과를 완료 후 추가 기록합니다.실제 WASM/공개 API 검증 출력:
2026-10-17 CI 기록: 머리
1fbc589cda16855d6b9fdc79e74f4230c0b9abe2, 실행39006166801은 Linux Rust 커버리지 100.00%(16102/16102), Bun 5939/0 및 다른 3개 작업을 통과했습니다. publish는 이후 bun-plugin 배럴 소비자 회귀에서react/jsx-dev-runtime해석 오류로 실패했으며, main에서 독립 검증된 기존 JSX pragma 손실 #784와 일치합니다. 이는 정상 또는 Codecov 외부 장애로 표기하지 않으며 워크플로·픽스처·tsconfig 우회나 #784 직접 병합은 하지 않았습니다.