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>
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.
🚀 New features to boost your workflow:
|
This was referenced Oct 1, 2026
Open
No conflicted files; preserve composition changes and main ESLint checks.
No conflicted files; combine updated parent and PR changes.
No conflicted files; combine updated parent and PR changes.
Conflicted file: libs/extractor/src/lib.rs. Retain both composition helper and regression tests from PR 706 and Tailwind per-class regression tests from main 11790be; take rewritten main Tailwind implementation with Rust 1.99 assertions. bun.lock regenerated by bun install; no snapshots were hand-merged. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge updated parent PR 706 (30247ba), containing main 11790be. Conflicted file: libs/extractor/src/prop_modify_utils.rs. Preserve PR 707's last-written className/style spread semantics and no spread_props parameter with capacity 2, together with main's per-class Tailwind compiler. No snapshots were hand-merged. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
owjs3901
added a commit
that referenced
this pull request
Oct 8, 2026
owjs3901
added a commit
that referenced
this pull request
Oct 8, 2026
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>
owjs3901
added a commit
that referenced
this pull request
Oct 14, 2026
Refs #688 #708 #707 Local merge preserved while #707 coverage fix is completed first Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
owjs3901
added a commit
that referenced
this pull request
Oct 14, 2026
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 #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 #688 (A 두 번째 PR). #706 위에 쌓은 브랜치라 #706 커밋을 포함합니다. #706 병합 후 이 PR의 차이는 마지막 커밋
1cedf9f8하나입니다.문제
styled(Base)확장이<Base>를 감싸 렌더링해 Base와 확장의 atomic class가 함께 붙고, 같은 속성은 stylesheet 순서로 승패가 정해져 Base가 이기는 경우가 있었습니다 (.c{color:blue}.a{color:red}→ 빨강).styled(Base).attrs({type:'password'})가text가 되고 호출자의title도 Base 값으로 바뀌었습니다.className/style이 호출자의 값을 덮어써 호출자 class와 style이 사라졌습니다.<Box className="direct" {...spread} />에서 뒤에 오는 spread가 이겨야 하는데 명시 prop이 항상 이겼습니다.변경
const에 묶인 styled 컴포넌트를 확장하면 Base의 태그를 직접 렌더링하고, Base 스타일 위에 확장 스타일을 #706의 합성(속성·selector·반응형 단계·layer별 나중 선언 우선)으로 합칩니다. Base의 attrs는 확장의 attrs보다 먼저 적용됩니다.className은 이어 붙이고(호출자 class는 마지막),style은 병합, 그 밖의 prop은 나중 값이 이깁니다.className/style이 없는 객체 attrs는 기존처럼 spread만 합니다.className/style은 쓴 순서대로 마지막 값이 이깁니다. 키를 이름으로 쓴 객체 리터럴 spread는 빌드 시점에 결정하고, 키를 런타임에만 알 수 있는 spread는"className" in Object(spread)로 고릅니다.styled를 import한 파일도 semantic scoping을 만듭니다.동작 변화
displayName·memo 등 런타임 정체성에 의존하는 코드는 영향이 없습니다(빌드가 만든 함수였음).새로 생기는 오류
styled(make()))나let으로 바뀔 수 있는 Base를 확장하면 기존처럼 Base 컴포넌트를 감싸 렌더링합니다(K [전수조사/K] 문서: 과장된 주장, 틀린 예제, 결정 사항 반영 #693 "스타일 덮어쓰기 규칙"에 문서화 예정).남은 항목
include라이브러리에서 import한 styled 정의의 평탄화(모듈 해석).@emotion/csscx및 Emotion css prop 합성(이슈 D와 함께).props/attrs나중 값 우선과null(다음 PR).검증
cargo clippy -D warnings(Rust 1.99),cargo test1449 통과, 새 테스트test_styled_extension_composes_base,test_styled_attrs_merge_in_order,test_jsx_props_written_later_win(6 case).bun test5474 통과, 커버리지 100%.04-extend-basic,25-attrs-extension-order,26-attrs-class-style,55-extend-pseudo,64-config-chain-order,24-spread-conflicts, Emotionstyled-extension)로 probe 확인.2026-10-08 main 11790bef를 병합하여 업데이트했습니다. libs/extractor/src/prop_modify_utils.rs 충돌은 부모의 Tailwind 컴파일러와 이 PR의 마지막 className/style 값 선택 및 capacity 2를 함께 보존하여 해결했습니다.
2026-10-14 갱신: main a2b74d0(#776/#778/#702 포함) 및 정확한 #780 핫픽스 7960b48/b71ca4ea 병합으로 최신 main(#776, #778 포함)을 반영했으며, 충돌 파일 libs/extractor/src/extractor/extract_style_from_styled.rs, libs/extractor/src/visit.rs은 styled 확장/attrs/나중 선언 우선, 조건부 spread 우선순위와 진단을 함께 보존하고 상속된 평가 바인딩을 결정론적으로 충돌 없이 다시 묶음(40개 실제 렌더 회귀와 6개 방문 회귀 통과, 새 스냅샷 변경 없음) 방식으로 해결했습니다. 새로 생기는 오류 없음.
2026-10-14 갱신: 최신 main 76b1a15(#776/#778/#780/#777/#716/#743 포함) 병합으로 최신 main(#776, #778 포함)을 반영했으며, 충돌 파일 libs/extractor/src/extractor/extract_style_from_styled.rs, libs/extractor/src/visit.rs은 기존 구성과 조건부 spread 평가 바인딩을 유지하고 실제 TS 렌더 대상 및 Emotion 클래스 메타데이터를 함께 보존함; 동적 기반 렌더 4개·단언 가드 4개·상속 대상 실행 3개 회귀를 추가하여 Linux 커버리지를 재검증하며 새 스냅샷 변경 없음 방식으로 해결했습니다. 새로 생기는 오류 없음.
2026-10-14 갱신: main 76b1a15 반영 상태 유지 및 후속 커버리지 구조 정리 커밋 53011cf 병합으로 최신 main(#776, #778 포함)을 반영했으며, 충돌 파일 없음(후속 정리: libs/extractor/src/extractor/extract_style_from_styled.rs)은 기존 Rename 구조체와 동일한 방문자 구현을 모듈 범위로 옮겨 Tarpaulin의 제네릭 메서드 내부 선언 강제 커버 위치를 제거함; 알고리즘·단언·스냅샷·분석 설정·제외 규칙은 바꾸지 않고 Linux 100%를 재검증 방식으로 해결했습니다. 새로 생기는 오류 없음.
2026-10-16 갱신: 확정 main a6ecc12570338475df40a429c719160e63db86b5을 병합했습니다. 충돌 파일 libs/extractor/src/style_values.rs, libs/extractor/src/visit.rs는 기존 imported CSS/스타일 정의 메타데이터와 main의 문자열 className 메타데이터를 각각 유지하고, DynamicClassNames 또는 css/keyframes/styled 발견 경로 및 declarator의 pending_styled/insert_text 처리를 모두 보존해 해결했습니다. 자동 병합된 extract_style_from_styled.rs의 새 진단 조기 반환은 실제 기존 StyledExtraction 형식에 맞췄으며 조건부 스프레드 우선순위·bounded capture binder·attrs 순서·나중 스타일 우선 동작을 유지했습니다. 병합 해결 자체가 추가한 새 오류는 없습니다.
생성 스냅샷 extractor__tests__maintain_value 및 extractor__tests__with_prefix 두 개만 재생성·독립 비교·해시 검증 후 수락했습니다. main의 숫자 출력 수정인 -moz-tab-size 16px → 단위 없는 4와 현재 테스트 표현식 메타데이터만 반영했으며 나머지 접두 속성·스타일 원자·생성 코드는 유지했습니다. 스냅샷을 수동 병합하지 않았습니다.
검증: 기본 Rust 스택/CARGO_BUILD_JOBS=2, Rust 1.99 all-target Clippy와 fmt 통과, 일반 모드 cargo test --workspace 4,066개 통과, 최신 WASM/루트 빌드 통과, 실제 공개 WASM+React SSR 합성·attrs·overwritten capture·Tailwind className 네 시나리오 통과, 전체 커밋 훅 통과(12GiB 전체 프로세스 한도, 최대 3.340GiB), Bun 5,909개/실패 0개/커버리지 100%. 기존 React 마이그레이션 경고 9개는 추가하지 않았으며 LSP는 사용 불가였습니다. 로컬 Windows Rust 커버리지 98.10%는 Linux 100% 증거가 아니며 새 head 851b24f16294112c59dc1ca4ad90ce8cb89827c0의 CI 38759549516은 확인 중입니다. 부모 두 개와 main 포함 여부 및 깨끗한 트리를 확인한 정상 push이며 추가 rebase/amend/force push 또는 런타임 스타일러를 사용하지 않았습니다.
실제 WASM/공개 API 검증 출력: