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>
Codecov Report✅ All modified and coverable lines are covered by tests.
... and 12 files with indirect coverage changes 🚀 New features to boost your workflow:
|
This was referenced Oct 5, 2026
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>
Merge updated parent PR 727 (12328b9), containing main 11790be. Conflicted file: packages/bun-plugin/src/plugin.ts. Preserve PR 728's readJsxImportSource alias discovery and main PR 703's compiledPackages scanner, Bun.build stylesheet deferral, runtime writes and debug policy; keep main PR 704 plugin CSS behavior. WASM/root builds and real Bun stylesheet regression passed; 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 737 (70d6417), containing main 11790be. Conflicted file: packages/bun-plugin/src/plugin.ts. Union main's direct StyleX/alias package scanner with PR 742's alias-aware hasDevupUI resolver detection so local barrel consumers remain compiled; preserve main Bun.build CSS deferral, runtime writes and debug policy. Add real Box/css local-barrel regression; all 7 Bun CSS regressions and fresh WASM/root builds pass. No snapshots were hand-merged. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
The automatic merge of main 11790be replaced the Bun source gate with a direct package scanner, which missed PR 737 local barrel imports. Keep that scanner for main's StyleX/alias behavior and add the original three-argument resolver-aware hasDevupUI fallback. Add a real-process Box/css barrel regression; fresh WASM/root builds and all 7 Bun stylesheet regressions pass. No new build errors or runtime styling are introduced. Refs #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge updated parent PR 737 fix f66b4c5, containing main 11790be and the real Bun barrel regression. Conflicted file: packages/bun-plugin/src/plugin.ts. Preserve the identical scanner/resolver union and retain PR 742's fourth importAliases argument instead of the parent's three-argument API. The resolved tree is identical to the already-verified PR 742 tree; fresh WASM/root builds still pass. Refs #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge updated parent PR 750 (74afb76), containing main 11790be. Conflicts: libs/extractor/src/prop_modify_utils.rs and conditional Tailwind snapshot. Share main's per-class Tailwind compiler between normal generation and PR 756 class capture, retaining semantic IDs and single evaluation. Regenerate the conditional snapshot to combine main's extra line-height declaration with the captured controller; retain all assertions and update five exact template-code expectations for PR 756 single-coercion IIFEs. Full workspace tests, fresh WASM/root builds and real WASM probe pass; no snapshots were hand-merged. Refs #686 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
Merge #756 at f2fc451, retaining the style-order metadata policy and forwarding/callback provenance from faff4a0. Keep the current scope-aware style-order-range rule and clarify that nested style metadata is checked while ordinary props and data are ignored. Coordinator-approved integration reconciliation: the incoming test_tailwind_keeps_other_classes cases 07, 08, 09, 14 and 15 retain the current once-only __devupValue0 controller captures; case 10 folds the truthy literal a without reading the right side of OR. See the source-fed failure evidence D/W38g-756-test-conflict.md and successful executed controls W38g-756-tailwind-qa3.log. Existing HEAD assertions and goldens are unchanged. Reclassify exactly the two incoming ESLint fixtures containing nested zero and a computed styleOrder zero from valid to invalid, retaining their source and ordinary props/data controls. #766 reads metadata at those positions; #756 alone predated it. Pin the 2+1 original diagnostic locations, as recorded in W38g-756-eslint-focused.log. Rule production behavior is unchanged. Fresh gates: Rust1.99 clippy, default workspace4119/0, rebuilt WASM/root, Bun6472/0 aggregate100%, lint0errors/2baselinewarnings, original48probes with only the incoming1.0.82-to1.0.83 banner delta, and named literal/wrapper QA. The incoming guarded-hover/active cascade finding is reported separately, not fixed by this merge, per coordinator attribution instructions. Refs #684 #685 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
Merge #757 at 78ef660 after the genuine #756 integration975f3371. Recursive merge bases74afb760 and6d0c9c83 produce an identical tree3c14e7e427686d8802d1e0722afc33515d3eed28 with no conflicts or source changes. Preserve both exact base histories and normal hook gates. Keep the approved six incoming Tailwind expectation and two incoming ESLint fixture reconciliations from the prior merge, current JSX capture/constant-fold semantics, located metadata errors, and existing HEAD assertions/goldens. F195 and the remaining coverage units are separate subsequent changes. Refs #684 #685 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
Refs #690, #693 Merge exact f2fc451 retaining the current native/readback/provenance and incoming namespace/JS-semantics changes, without resetting merge state. Resolve five combined source/snapshot seams, use direct private tracking fields and current evaluate_located test API, and bind the incoming reachable-file helper to existing resolveSourceFile. Coordinator-approved merge-test alignments: lexical local require is not a module request; genuine unbound require keeps its original helper.ts:1:25 semantic site and unchanged cause/Fix/no-publication, while reference-free exploration falls back to entry.tsx:2:23 ingress; eight native consumer cases evaluate independent runtime sentinels, exact once-only getters/calls and wrong-slot/restoration instead of generated identifier spellings; only positive g uses valid styleOrder={undefined}, with the complete original invalid JSX retained as the located a.tsx:9:34 negative. All other fixtures and oracles remain unchanged; incoming capture/spread snapshot preserves the existing CJS_DYNAMIC alias. Full workspace4719, Rust1.99clippy, fresh WASM/root, Bun5535, preservation/API/carrier/graph and50both-mode browser positive/wrong-class/restoration gates passed. The prior advisory B Oracle result was lost to tool failure; coordinator authorized full-diff self-review and objective gates, not a claimed clean Oracle review. No contextual carrier/plugin delivery or out-of-scope Devup-only composition fix is included. 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: FN-08, FN-09, JSX-02, JSX-06, JSX-09, JSX-12, FN-04 및 namespace runtime escape)
이 PR은 #750 위에 쌓인 PR이며 GitHub base는
main입니다. #750 및 그 기반인 #742/#737/composition 선행 PR이 먼저 병합되어야 합니다. 이 PR 또는 #741 중 나중에 병합하는 PR에 동일한 UI 키트 props 재배치가 적용되어야 합니다. Radio의1px sold오타는 #741 소유 변경이므로 여기에서는 수정하지 않았습니다.요약
require는 CommonJS loader가 아닌 일반 호출로 취급하여 해당 경로를 resolve하지 않습니다.createElement/jsx-runtime lowering에서 원본 props 평가와 스타일 선택을 분리합니다. 덮어쓴 표현식도 실행하고 getter/iterator/coercion을 원래 위치에서 한 번만 평가합니다.var읽기는 dynamic CSS variable을 사용합니다.Patch입니다.동작
JavaScript 평가와 JSX-02 우선순위
<Box {...rest} color="red"/>의 명시적 값은 항상 이깁니다.<Box color="red" {...rest}/>는 마지막 own enumerablecolor가 변수에 전달되며, 키가 없으면red로 fallback합니다. 나중 spread의 ownundefined/null은 이전 spread 값을 다시 살리지 않습니다. inherited/non-enumerable key는 복사하지 않고 symbol 및 nullish spread는 native JavaScript 동작을 유지합니다. spread에만 존재하는 key는 DOM/pass-through로 남습니다.responsive 값은 breakpoint마다 다른 fallback을 유지하면서 하나의 override variable을 공유합니다. 정적 theme fallback은
var(--token)을 유지합니다. Devup 기반 styled instance는 component/ref/theme/attrs를 유지하면서 명시적 style props를 컴파일하고, plain-tag styled의 기존 동작은 바꾸지 않습니다.native
{ __proto__: null, ...source }는 getter 값을 DOM/className/style/slot이 함께 사용하는 데이터 스냅샷입니다. React 호출은 가능한 경우 props 인자만 감싸므로 callee/receiver lookup이 props보다 먼저, children/key가 props보다 뒤에서 평가됩니다. dynamicas가 필요한 경우에도 이 순서를 보존합니다. computed table은 native selection을 한 번 실행하고 primitive 분기 tag/이미 평가한 leaf를 공유하므로 static 숫자 scale, token, typography, keyframes 및 Tailwind 정적 규칙을 유지합니다.실제 ReactDOMServer에서 getter 총 실행 횟수는
1, 덮어쓴 explicit effect와 missing-key effect의 trace는 모두12로 검증했습니다. whole-emitted-props Boa 회귀는 오류·던지는 getter·분기 laziness·식별자 변이·일반 attrs/className/style/children·factory receiver·hygiene·shadowed globals를 함께 실행합니다.UI 키트 컴파일 전후
기준 컴파일러
29812f37로 Button/Checkbox/Input/Radio/Select/Textarea를 컴파일하고 selector sentinel을 전달해 SSR했습니다. selector 객체는 DOM 속성으로만 전달되었고 sentinel CSS 규칙은 0개였습니다. 재배치는 작동하던 selector override를 제거하지 않습니다.debug CSS를 비교하면 재배치 전/후(동일한 기준 컴파일러)는 34,225 bytes, byte-identical입니다. 새 컴파일러 출력은 41,756 bytes이고 JSX-02 scalar fallback 규칙은 89개입니다. 각 fallback을 원래 값으로 정규화하면 추가 규칙 0/삭제 규칙 0입니다. 아래에 실제 compact CSS 전/후와 89개 차이를 모두 기재합니다. compact class/variable 이름은 추출 순서에 따라 바뀔 수 있으며 이름 변경 자체는 CSS 값 변경이 아닙니다.
새로 생기는 오류
모든 오류는
file:line:col: ... cannot use ... at build time: ...형식입니다.@media/@supports를 숨기는 경우: selector를 spread 뒤의 명시적 prop으로 쓰도록 안내합니다. 조용히 DOM 객체로 보내지 않습니다.styleOrder와 unsupported 조건/논리 branch: build-known 숫자 또는 숫자 사이 조건식이 필요합니다. shadow된undefined및 effectfulvoid도 버리지 않습니다.spyOn(ns, 'css')등): named member/import 사용을 안내합니다. type query와 shadow된 다른 객체는 유지됩니다.let/const/class style 읽기: 읽기 위치, binding 이름, 원본 ReferenceError 원인, 선언을 use 위로 이동하는 수정 방법을 포함합니다.await/yield: 원래 async/generator scope에서 값을 변수로 평가한 뒤 렌더링하도록 안내합니다. 단순 await/yield 인자 capture는 caller scope에 남겨 지원합니다.남는 한계
fix/composition-rest) 소유 범위로 남겼습니다.검증
29812f37기준에서 먼저 probe하여 오류/잘못된 결과를 확인했습니다. 아래 전후 요약과 실제 출력이 포함됩니다.gate_edges18 pass). 이번 coverage 구조 변경은 별도의 foreground read-only Oracle에서 PASS를 받았습니다. 원본 negative 입력을 유지했습니다.bun lint+ Rust tarpaulin +bun test전체 hook을 통과했습니다. Windows default coverage는97.20%이며 이를100%로 주장하지 않습니다. 최종 기준인 **Linux Rust coverage는100.00%(13312/13312)**입니다. 보고된64개 미커버 라인은51개 의미 있는 회귀와 class 초기화/known-spread helper 분리, 이미 처리된 중복 fallback 제거로 해결했습니다. coverage 제외·경고 억제·의존성·styling runtime 추가는 없습니다.f0969a040ed4f926965468cd27fc92387bb84fa8: publish, landing-next-e2e, benchmark, vinext-rsc-css-e2e 및 codecov/patch 모두 성공했습니다. publish의 Vite landing E2E도 per-file/singleCss 모두 통과했습니다. 이전 실패99.52% 및 중간99.75%를 거쳐100%를 확인했습니다.기준 결과 요약
E.Bheight:20pxwidth:48px / 124px / 6pxObject.is(...,-0)에 따른 green실제 전후 components CSS 공통 prefix 전체 (8171자; 아래 before/after 각각 앞에 동일하게 붙이면 해당 실제 전체 출력)
실제 components before CSS 나머지 전체 (위 공통 prefix 바로 뒤에 이어지는 출력)
실제 components after CSS 나머지 전체 (위 공통 prefix 바로 뒤에 이어지는 출력)
JSX-02로 생긴 89개 scalar fallback 차이 전체 (각 항목은 해당 style key/breakpoint fallback이며 원래 값 불변)
public WASM의 실제 항목별 compiled code/error 출력 (공통 theme CSS는 위 CSS 및 검증 보고서 참조)
fn08.tsx
fn09-imul.tsx
fn09-clz.tsx
fn09-fround.tsx
jsx02.tsx
jsx02-responsive.tsx
jsx02-selectors-error.tsx
jsx02-css-error.tsx
jsx02-styled.tsx
jsx06.tsx
jsx09.tsx
jsx12.tsx
fn04.ts
namespace.ts
tdz-error.tsx
tdz-deferred-var.tsx
tdz-block-function.tsx
의도한 snapshot 변경 111개 전체 설명
apply_var_typography-3.snap: native 선택1회; static token 유지, missing key 빈 classapply_var_typography-5.snap: native 선택1회; static token 유지, missing key 빈 classapply_var_typography-6.snap: native 선택1회; static token 유지, missing key 빈 classbacktick_prop-2.snap: source capture; CSS 값 불변changed_constants.snap: TDZ/self dependency는 ReferenceError 원인 오류; mutable 값은 원래 읽기 위치에서 capturecompose_rules_the_module_computes.snap: source capture; CSS 값 불변compute_what_elements_and_styled_objects_take.snap: source capture; CSS 값 불변conditional_styles.snap: 중첩 stable primitive const folding으로 실제 선택되지 않는 규칙 제거constant_objects_arrays_and_enums.snap: source capture; CSS 값 불변devup_props_optional_chaining.snap: native 선택1회; static token 유지, missing key 빈 classdynamic_as_elements.snap: source capture; CSS 값 불변dynamic_value_with_important.snap: source capture; CSS 값 불변enum_style_prop.snap: source capture; CSS 값 불변evaluate_build_time_values.snap: source capture; CSS 값 불변every_runtime_value_an_element_holds.snap: source capture; CSS 값 불변extract_conditional_style_props-7.snap: source capture; CSS 값 불변extract_conditional_style_props-8.snap: source capture; CSS 값 불변extract_conditional_style_props-9.snap: source capture; CSS 값 불변extract_conditional_style_props_with_class_name-2.snap: native 선택1회; static token 유지, missing key 빈 classextract_dynamic_logical_case-2.snap: source capture; CSS 값 불변extract_dynamic_logical_case-4.snap: source capture; CSS 값 불변extract_dynamic_logical_case.snap: source capture; CSS 값 불변extract_dynamic_style_props-2.snap: source capture; CSS 값 불변extract_dynamic_style_props-4.snap: source capture; CSS 값 불변extract_dynamic_style_props-5.snap: source capture; CSS 값 불변extract_dynamic_style_props_binary_member_call_arm-2.snap: native 선택1회; static token 유지, missing key 빈 classextract_dynamic_style_props_binary_member_call_arm-3.snap: native 선택1회; static token 유지, missing key 빈 classextract_dynamic_style_props_binary_member_call_arm.snap: native 선택1회; static token 유지, missing key 빈 classextract_dynamic_style_props_with_type-2.snap: native 선택1회; static token 유지, missing key 빈 classextract_responsive_conditional_style_props_with_class_name.snap: native 선택1회; static token 유지, missing key 빈 classextract_same_dynamic_value_conditional_style_props-2.snap: source capture; CSS 값 불변extract_selector-2.snap: source capture; CSS 값 불변extract_style_props_with_class_name-6.snap: native 선택1회; static token 유지, missing key 빈 classextract_style_props_with_class_name-9.snap: native 선택1회; static token 유지, missing key 빈 classinline_imported_constants.snap: 명시적 정적 값이 unknown spread 뒤의 own key에 양보하는 CSS variable + 동일 fallbackinline_local_constants.snap: TDZ const self-use는 별도 negative regression으로 유지하고 var self-use dynamic 경로를 fixture에서 검증member_expression_style.snap: source capture; CSS 값 불변member_expression_with_dynamic_values.snap: source capture; CSS 값 불변negative_props-2.snap: source capture; CSS 값 불변negative_props-3.snap: source capture; CSS 값 불변negative_props-4.snap: source capture; CSS 값 불변props_direct_array_responsive_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_responsive_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_select-3.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_select-4.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_select-5.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_select-6.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_select-7.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_array_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_hybrid_responsive_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_object_responsive_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_object_responsive_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_object_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_object_select-3.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_object_select-4.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_object_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_variable_array_responsive_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_variable_array_responsive_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_variable_object_responsive_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_variable_object_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_variable_object_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_direct_wrong.snap: native 선택1회; static token 유지, missing key 빈 classprops_multi_expression.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select-3.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select-4.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select-5.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select-6.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select-7.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select-8.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_array_select.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_object_select-2.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_object_select-3.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_object_select-4.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_object_select-5.snap: native 선택1회; static token 유지, missing key 빈 classprops_wrong_direct_object_select.snap: native 선택1회; static token 유지, missing key 빈 classread_once_in_every_place.snap: source capture; CSS 값 불변remove_semicolon-4.snap: capture 전 기존 CSS suffix 처리 보존; runtime variable에 semicolon을 남기지 않음remove_semicolon-5.snap: capture 전 기존 CSS suffix 처리 보존; runtime variable에 semicolon을 남기지 않음rest_props-2.snap: source capture; CSS 값 불변rest_props.snap: 명시적 정적 값이 unknown spread 뒤의 own key에 양보하는 CSS variable + 동일 fallbackspread_props.snap: source capture; CSS 값 불변spreads_are_read_once.snap: source capture; CSS 값 불변style_order_conditional-2.snap: 조용한 오해석 대신 original-span build error로 변경; 원래 입력의 negative regression 유지style_order_conditional-3.snap: 조용한 오해석 대신 original-span build error로 변경; 원래 입력의 negative regression 유지style_order_conditional_coverage-3.snap: source capture; CSS 값 불변style_order_conditional_coverage-6.snap: 조용한 오해석 대신 original-span build error로 변경; 원래 입력의 negative regression 유지style_order_coverage_additional-4.snap: source capture; CSS 값 불변style_results_read_as_values.snap: source capture; CSS 값 불변style_variables-11.snap: source capture; CSS 값 불변style_variables-9.snap: source capture; CSS 값 불변styles_the_build_cannot_read.snap: source capture; CSS 값 불변support_transpile_cjs-7.snap: 조용한 오해석 대신 original-span build error로 변경; 원래 입력의 negative regression 유지support_transpile_mjs-5.snap: source capture; CSS 값 불변tailwind_template_literal_with_function_call_expression.snap: template coercion을 원래 순서에서 capture하되 기존 정적 Tailwind 규칙과 styleOrder 유지tailwind_template_literal_with_logical_expression.snap: template coercion을 원래 순서에서 capture하되 기존 정적 Tailwind 규칙과 styleOrder 유지tailwind_template_literal_with_nested_template_literal.snap: template coercion을 원래 순서에서 capture하되 기존 정적 Tailwind 규칙과 styleOrder 유지tailwind_template_literal_with_parenthesized_expression.snap: template coercion을 원래 순서에서 capture하되 기존 정적 Tailwind 규칙과 styleOrder 유지tailwind_template_literal_with_style_order.snap: template coercion을 원래 순서에서 capture하되 기존 정적 Tailwind 규칙과 styleOrder 유지tailwind_template_literal_with_variable_expression.snap: template coercion을 원래 순서에서 capture하되 기존 정적 Tailwind 규칙과 styleOrder 유지tailwind_with_conditional_template_literal.snap: template coercion을 원래 순서에서 capture하되 기존 정적 Tailwind 규칙과 styleOrder 유지values_known_only_at_runtime.snap: source capture; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변index.browser.test.tsx.snap: reorder + JSX-02 fallback; CSS 값 불변Linux CI가 요구한 landing caller 재배치 및 실제 CSS 전후
추가 재배치 파일:
apps/landing/src/app/(detail)/components/Card.tsx,apps/landing/src/components/Header/HeaderInput.tsx. private landing이므로 changepack 없음.Card 호출부는 MdxCard:45(className만 전달), overview/page:69/129/189(children만 전달)입니다. HeaderInput은 Header/index:187 및 MobMenu:15의 readOnly 호출뿐입니다. 어떤 호출도 selector를 spread로 전달하지 않습니다. 두 파일 모두 기준 compiler의 pure reorder CSS byte equality를 검증했습니다. 새 compiler에서 Card는 background/border/border-radius/cursor/transition, HeaderInput은 background/border/color/outline/width의 5개 fallback씩만 추가되며 값은 동일합니다. 전체 landing Next build도 통과했습니다. 아래 출력은 공통 license banner만 생략했습니다.
card before
card after
header-input before
header-input after
2026-10-08 main 11790bef를 병합하여 업데이트했습니다. libs/extractor/src/prop_modify_utils.rs는 main의 클래스별 Tailwind 컴파일과 단일 평가 캡처를 공유하도록 결합했습니다. 조건부 Tailwind 스냅샷은 추가 line-height 선언과 캡처를 결합한 테스트 결과로 재생성했고, 관련 정확한 출력 단언도 함께 유지했습니다.