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>
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/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:
|
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