2026-04-30
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 전날 시작한 CSS-in-JS 변환을 Babel 플러그인 수준으로 끌어올렸습니다. styled-components는 클래스 필드·IIFE·중첩 제어 흐름의 return 안 styled 호출까지 인식하고(#2238, #2239, #2241, #2243, #2244), 사용자 .withConfig와의 병합(#2242), ssr·minify·fileName·pure·namespace·meaninglessFileNames·topLevelImportPaths 등 babel-plugin과 같은 옵션(#2240, #2245, #2266, #2267, #2269, #2274, #2275), named helper import 인식(#2263)을 갖췄습니다. JSX css prop은 intrinsic 태그, css 태그드 템플릿, 커스텀 컴포넌트, 객체 형태, styled import 자동 주입과 프로그램 수준 호이스팅, 바인딩 충돌 감지, 동적 값 전달까지 단계별로 구현했습니다(#2276, #2280~#2284, #2288, #2289, #2290). glob 매처는 picomatch 호환으로 넓혔습니다(#2287).
emotion도 1st-party 변환을 새로 들였습니다. autoLabel(#2247)에서 시작해 @emotion/styled default, keyframes, styled 체인, primitives·styled-base 소스, JSX inline css와 멤버 태그, Global·injectGlobal, ClassNames render prop, 객체·배열 css prop을 인식하고(#2248, #2249, #2251, #2253, #2254, #2256, #2257, #2258, #2270), sourceMap, labelFormat, autoLabel 모드, importMap 옵션을 정식 스펙대로 지원합니다(#2260, #2261, #2262, #2273). emotion v10 격리 fixture와 E2E, styled·emotion 회귀 테스트 23개도 추가했습니다(#2255, #2291).
다운레벨링은 광역 감사에서 나온 엣지 케이스 의미 보존 수정을 다섯 차례 병합했고(#2259, #2264, #2271, #2277, #2285), 클래스 멤버 분류를 수집·설정·방문 단계로 나누고 codegen 전에 남은 private 문법을 검사하는 invariant를 넣었습니다(#2298, #2309). CLI는 help와 알 수 없는 플래그 처리, 빌드된 core JS만 로드하기, 설정 변경 시 dev 재시작, 브라우저 빌드의 NODE_ENV 기본 define, dev 서버 설정과 앱 루트 기준 config 로드를 고쳤고(#2299, #2303, #2304, #2305, #2307, #2308), JS 계열 로더의 파서 종류 보존과 JS 소스의 TS 문법 거부도 엄격하게 했습니다(#2313, #2320).
cheolsu-proxy는 대상 triple별 sidecar 빌드와 Apple Silicon 산출물 릴리스 CI를 손보고 v0.1.1 릴리스 커밋을 올렸습니다. ohah.github.io에는 4월 30일 요약과 오늘의 커밋 메타 갱신이 올라왔습니다.
공개 커밋 109개, 해당일 생성 또는 병합된 PR 70개를 정리했습니다. PR 생성 69개·병합 70개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/cheolsu-proxy
- ci: release apple silicon artifact
- ci: build release sidecars for target triple
- chore: release v0.1.1
ohah/ohah.github.io
- docs(cron): mark all .mdx files checked (2026-05-01 08:30 KST)
- cron: mark task complete at 2026-05-01 07:30 KST
- Cron: Mark all mdx files as checked (2026-05-01 07:00 KST)
- cron: mark 2026-05-01 06:30 KST run complete
- chore: update today-commit meta for 2026-05-01
- chore: mark CRON_CRD_WRITE.md task completed at 2026-05-01 03:00 KST
- docs: update CRON_CRD_WRITE.md - 2026-05-01 02:30 KST check complete
- cron: update CRON_CRD_WRITE.md - marked last task as completed
- docs: update today-activity summary for 2026-04-30
- docs: mark crd-write cron task as completed for 2026-05-01
- chore: mark cron task complete for 2026-04-30 13:30 UTC
- chore: cron-crd-write update - task completed 2026-04-30 21:30
- Cron: Update final status - all mdx files checked (2026-04-30)
- Cron: all .mdx files checked - no remaining tasks
- crd: mark all mdx files checked (2026-04-30)
- docs: mark cron check for CRON_CRD_WRITE.md as completed (2026-04-30)
- docs: CRON_CRD_WRITE.md - All mdx files completed (2026-04-30)
- [CRON] Check spelling in docs/today-commit/2026-05-01.md
- cron: Mark 2026-05-01.md as complete
ohah/zntc
- refactor(parser): fold JS-source TS rejection into applyExtension
- fix(parser): enforce js loader syntax strictness
- refactor(tests): tsc contextual typing skip → transpile-pass (#2314)
- chore(tests): install smoke-fixture deps to enable skipped tests
- refactor(simplify): tighten parser kind plumbing + final export emit
- fix(loader): preserve js parser kind
- refactor(linker): tighten final export entry build + docs
- refactor(linker): pass typed final export entries
- refactor(transform): drop redundant is_static from private mapping structs
- refactor(transform): drop dead
orelse "undefined"private class_name fallback - refactor(transform): consolidate private-syntax invariant + kind enum
- fix(transform): guard raw private syntax before codegen
- fix(cli): load app root config for dev and build
- fix(cli): honor strict dev server port
- fix(cli): support dev server config
- ci: exclude dist from format checks
- ci: avoid formatting generated core wrapper
- ci: verify fresh core wrapper in setup
- fix(core): align emotion autoLabel type
- fix(cli): define node env for browser builds
- test(transform): RN private field arrow init 안 #method 호출 회귀 가드 +2
- fix(cli): restart dev on config changes
- fix(cli): require built core JS for Node CLI
- fix(cli): handle help and unknown flags
- refactor(transform): drop classifyMembers backwards-compat band-aids + add phase-split fixtures
- refactor(transform): split classifyMembers into collect → setup → visit phases
- fix(examples/web): process.env.NODE_ENV define 추가 — 브라우저 ReferenceError 회피
- test(styled/emotion): 회귀 가드 테스트 보강 — 복합/edge case +23
- feat(transformer): styled cssProp A1 — object form dynamic value forwarding
- refactor(transform): document dual setupPrivateFieldMappings + dedupe class member key text
- fix(transform): cover deeper main audit regressions
- feat(transformer): styled cssProp A2 — template
${expr}prop forwarding - feat(transformer): styled cssProp B2 — auto-inject binding collision detection
- feat(util): picomatch 호환 glob — multi
*+?+ bracket + brace - chore: post-Round 4 simplify findings 적용
- feat(transformer): styled cssProp Step 5+6 — auto-inject + program-level hoist
- feat(transformer): styled cssProp Step 4 — object form
- feat(transformer): styled cssProp Step 3 — Custom component + member expr
- feat(transformer): styled cssProp Step 2 — css tagged template 인식
- feat(transformer): styled-components cssProp Step 1 — intrinsic tag MVP
- refactor(transform): tighten super-expr walker shape parity and consolidate gate predicates
- fix(transform): cover wide downlevel audit regressions
- feat(transformer): styled topLevelImportPaths 단일
*glob 지원 - chore(util): isInList shared util 추출
- feat(transformer): styled-components cssProp 옵션 surface (transform 후속 PR)
- refactor(transform): dedupe class/destructuring helpers and short-circuit super-expr walker
- fix(transform): harden deeper downlevel edge cases
- feat(transformer): styled-components topLevelImportPaths 옵션
- feat(transformer): styled-components meaninglessFileNames 옵션
- feat(transformer): emotion importMap 옵션 — vendored re-export 인식
- feat(transformer): emotion expression-statement form 에 sourceMap 적용
- feat(transformer): emotion object/array css prop —
css(value, label)wrap - feat(transformer): styled-components namespace 옵션 — componentId prefix
- refactor(transform): unify string_literal builders on heap path
- feat(transformer): styled-components pure 옵션 —
/* @__PURE__ */annotation - refactor(transform): share computed key memo helpers and harden rest exclude
- fix(transform): cover additional downlevel edge cases
- feat(transformer): styled-components fileName 옵션 (default true, babel parity)
- cleanup: post-Round1 simplify findings
- feat(transformer): styled-components named helper imports 인식 + minify
- feat(transformer): emotion autoLabel mode (never/always/dev-only)
- feat(transformer): emotion labelFormat + sanitizeLabelPart
- refactor(transform): drop dead static_fields shadow and tighten downlevel hot paths
- fix(transform): preserve downlevel edge semantics
- feat(transformer): emotion sourceMap inline 주석 —
compiler.emotion.sourceMap - feat(transformer): emotion ClassNames render-prop autoLabel — scope frame infra
- feat(transformer): emotion JSX member expression —
<Foo.Bar css={...}>autoLabel - feat(transformer): emotion Global / injectGlobal autoLabel
- refactor(test): runV10Bundle stderr surface + entry default 정정
- test(integration): emotion v10 격리 fixture + e2e 커버리지
- feat(transformer): emotion JSX inline css autoLabel
- feat(transformer): emotion source list 확장 — primitives / styled-base
- feat(transformer): emotion compiler.emotion.autoLabel: false opt-out
- feat(transformer): emotion styled chain walker — withComponent / attrs 인식
- docs(examples): emotion-cases.tsx 갱신 + README 현황 반영
- feat(transformer): emotion keyframes autoLabel
- feat(transformer): emotion @emotion/styled default 인식 — autoLabel 확장
- feat(transformer): emotion autoLabel 1st-party transform
- feat(transformer): styled-components CSS minify — interpolation 지원
- feat(transformer): styled-components compiler.styledComponents.minify 옵션
- feat(transformer): styled-components try/catch/finally + switch return walker
- feat(transformer): styled-components 중첩 control flow return walker
- feat(transformer): styled-components 사용자 .withConfig MERGE (default)
- feat(transformer): styled-components IIFE block body 인식
- feat(transformer): styled-components compiler.styledComponents.ssr 옵션
- feat(transformer): styled-components IIFE 패턴 인식
- feat(transformer): styled-components 클래스 정적/인스턴스 필드 인식
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.