Repository navigation
feat(extractor): compile containers, masks, 3D transforms, functional @utility and class helpers - #749
Open
owjs3901 wants to merge 16 commits into
Open
feat(extractor): compile containers, masks, 3D transforms, functional @utility and class helpers#749owjs3901 wants to merge 16 commits into
owjs3901 wants to merge 16 commits into
Conversation
…and declarations Classes Tailwind does not define stay in the className as written, a class with a variant the compiler does not understand is left unchanged instead of applying unconditionally, and utilities emit every declaration Tailwind v4 writes: multi-declaration utilities in full, translate/rotate/scale/skew through their own properties so they compose, and arbitrary values read with Tailwind's grammar. Template classNames keep text that runs into an interpolation attached to it. Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…and composed utilities Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…f Tailwind v4 Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…it with digits Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…Utility and class helpers Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…d unknown rotate axes Refs #687 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/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:
|
Resolve libs/extractor/src/tailwind.rs by preserving the new TailwindClass declaration/condition structure and the removal of the obsolete parser helper, matching the main integration in #749. Keep the Rust 1.99 assertion fixes and regenerate bun.lock workspace metadata for main published versions. Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge #705 head 031e8b5, which contains main a935315. Resolve libs/css/src/theme_tokens.rs by retaining the color/shadow token test and the Rust 1.99 typography assertion together, byte-for-byte matching #749; preserve all main integration and published versions. Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge #734 head faf23c5, which contains main a935315. No unresolved conflict files remain: lower-stack resolutions flow cleanly through theme_tokens.rs and tailwind.rs. Auto-merged packages/vite-plugin/src/plugin.ts and its plugin.test.ts retain both Tailwind definition watching and main RSC CSS forwarding/restoration, byte-for-byte matching reference merge 753f418 in #749; preserve main published versions. Refs #687 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This was referenced Oct 6, 2026
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Resolved libs/extractor/src/tailwind.rs by retaining #749's nested declarations alongside #705's per-class v4 compilation and #734/#739 theme and utility integration. Resolved packages/bun-plugin/src/plugin.ts by retaining #703's SourceLoader/scanner/build stylesheet emission and #749's Tailwind watcher with its returned file list. Resolved packages/rsbuild-plugin/src/plugin.ts by combining #704's synchronous complete stylesheet helpers with #749's stat-based Tailwind watch invalidation. Resolved packages/rsbuild-plugin/src/__tests__/checkout-isolation.test.ts and plugin.test.ts by retaining #704's onBeforeBuild/rootPath setup alongside all Tailwind watcher tests. After reproducing four failing stylesheet tests, their shared test setup now selects the second Rspack config callback (stylesheet completion), while the first remains the Tailwind watcher. No snapshots or lockfiles were hand-merged, no PR intent was removed, and #734/#739/#749 remain separate PRs. Refs #687 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 #687 (B, 권장 항목 3부: W8에서 보고한 Tailwind v4 빈틈 닫기). #739(
feat/tailwind-v4-utilities) 위에 쌓은 PR이며 #705 → #734 → #739 → 이 PR 순서로 병합되어야 합니다. base가main이라 병합 전에는 앞선 PR의 커밋도 함께 보입니다.요약
watchRun에서 mtime을 비교하고, 각 모듈에addDependency). Bun은 파일을fs.watch로 지켜 다시 읽습니다(bun-plugin은 런타임 플러그인이라 자체 재빌드가 없으므로 다음에 모듈을 로드할 때 새 정의로 컴파일됩니다).@sm:,@max-md:,@min-[400px]:,@[30rem]:, 이름 있는@sm/main:(너비는--container-*, 프로젝트가 바꾸거나initial로 비울 수 있음).@container,@container-normal,@container-size,@container/main.mask-none,mask-[...],mask-size-*,mask-position-*, composite, mode, type, size, position, repeat, clip, origin.text-shadow-*(2xs~lg, none, 색, inherit, initial)와inset-shadow-*(2xs, xs, sm, none, 색)는shadow-*와 같은 합성 구조입니다.font-variant-numeric:ordinal,slashed-zero,lining-nums,oldstyle-nums,proportional-nums,tabular-nums,diagonal-fractions,stacked-fractions가--tw-*변수로 합성되고normal-nums.rotate-x|y|z-*,translate-z-*,scale-z-*(음수 포함),translate-3d,scale-3d,transform-3d,transform-flat,transform-cpu|gpu,backface-*,perspective-*(테마--perspective-*와 임의 값),perspective-origin-*.contain-*(contain-size|inline-size|layout|paint|style은 변수로 합성),outline-hidden(@media (forced-colors: active)의outline: 2px solid transparent; outline-offset: 2px까지).outline-hidden을 위해 한 class가 규칙 안의 at-rule에 선언을 따로 가질 수 있게 했습니다(TailwindClass.nested).@utility name-*(--value(integer, number, percentage, 'literal', --ns-*, [length|color|number|url|…]),--modifier(...)),@utility안의@apply(다른@utility를 거쳐도 펼침, 순환·variant·자식 대상 유틸리티는 그@utility전체가 원문으로 남음), 임의 값 안의theme(--name)(프로젝트 변수, 색, 간격; 읽을 수 없으면 그 class는 원문).@plugin/@config는 JavaScript를 실행해야 출력이 나오므로 읽지 않고, 그 class(prose등)는 원문 그대로 둡니다(문서에 적음).cn(...)/twMerge(...): 모든 인자가 문자열·${}없는 템플릿·그들의 배열일 때만 tailwind-merge처럼 합칩니다(뒤의 class가 같은 속성·조건·중요도를 모두 덮으면 앞의 class를 지움,px-4와p-2는 둘 다 유지). 조건식 등 다른 인자가 있으면 건드리지 않습니다(런타임 결과여서,twMerge가 원문을 받아야 하므로).cva(base, { variants, compoundVariants }): base, variant 옵션, compoundclass/className의 class를 그 자리에서 컴파일합니다(cva는 이어붙이기만 하므로 정확). Devup UI를 import하는 파일에서만 동작합니다.const에 묶인 문자열(const base = 'p-4 card',${}없는 템플릿)을className이 읽는 자리에서 펼쳐 컴파일합니다. 심볼 분석(oxc semantic)으로 읽으므로 가려진(shadowed) 이름이나let은 건드리지 않습니다.docs/migration/tailwind의 읽는 위치, 정의, 원문으로 남는 목록을 위 내용에 맞게 갱신했습니다.동작
probe.ts(devup.json 색primary와 아래 Tailwind CSS)로 확인한 실제 출력:새로 생기는 오류
없음.
남는 한계
container(breakpoint마다 폭이 다른 규칙이라 한 class로 표현할 수 없음), 그라디언트 마스크(mask-linear-*,mask-radial-*,mask-conic-*,mask-t|r|b|l|x|y-from|to-*: 여러 변수와mask-composite: intersect에 걸친 합성이라 이번에는 정확히 재현하지 않음),@plugin/@config로 만들어지는 class,@utility안의 중첩 규칙,--spacing()/--alpha()등을 쓰는 함수형@utility.cn은twMerge(clsx(...))로 읽습니다(import를 확인할 수 없음). 다른 동작을 하는cn이면 이름을 바꿔야 한다고 문서에 적었습니다.cva는 Devup UI를 import하지 않는 파일에서는 처리되지 않습니다(파일 전체가 처리 대상이 아님). 다른 파일에서 import한 상수와let/매개변수의 class 문자열은 읽지 않습니다.검증
cargo fmt --all,cargo +1.99 clippy --workspace --all-targets -- -D warnings,cargo test --workspace통과. WASM 재빌드 후bun run build,bun test(5496 pass, 0 fail, 커버리지 100%),bun lint(기존 경고 2개 외 추가 없음).utilities.ts,variants.ts,theme.css)의 CSS와 비교(컨테이너 쿼리 11개 형태와 읽지 않는 형태, 컨테이너 유틸리티, 마스크, text/inset shadow, numeric/contain 합성, 3D, perspective,outline-hidden의 중첩 at-rule, 변수에 의한 컨테이너 폭), 정의(함수형@utility의 값 종류와 modifier,@apply순환·variant,theme()해석/미해석), 헬퍼(cn/twMerge병합 규칙과 건드리지 않는 경우,cva의 모든 위치와 스프레드, 가려진 const와let), 플러그인(RsbuildwatchRun·addDependency, Bun 감시자의 재읽기·오류·중복 감시 방지).2026-10-08 업데이트: main 11790bef를 merge commit으로 병합했습니다; 충돌 파일: libs/extractor/src/tailwind.rs, packages/bun-plugin/src/plugin.ts, packages/rsbuild-plugin/src/tests/checkout-isolation.test.ts, packages/rsbuild-plugin/src/tests/plugin.test.ts, packages/rsbuild-plugin/src/plugin.ts; Tailwind 중첩 선언과 Bun SourceLoader/CSS 출력 및 Tailwind 감시 기능을 모두 유지하고, Rsbuild 파일 입출력·감시 import와 테스트 setup을 결합했으며 스타일시트 테스트가 두 번째 콜백을 선택하도록 수정했습니다.