Versions
바능 디자인 시스템 패키지의 릴리스 히스토리. 첫 출시부터 현재까지 각 버전에서 어떤 것들이 추가/변경됐는지 정리.
버전 표기: 빨강 = MAJOR (호환성 깨짐) · 회색 = MINOR (기능 추가) · 외곽선 = PATCH (버그 수정/문서).
@baneung-pack/ui
현재: v1.0.10
npmv1.0.10
PATCHREADME 라이선스 배지 Apache-2.0으로 통일 (코드 변경 없음)
- README의 MIT 배지·푸터를 Apache-2.0으로 교체
- npmjs.com 페이지에 노출되는 라이선스 표기 일관성
v1.0.9
PATCH라이선스를 Apache-2.0으로 명시
- package.json#license: "Apache-2.0" 추가
- 패키지 루트에 LICENSE 파일 (Apache-2.0 전문) 동봉
- npmjs.com 페이지에 라이선스 표시됨
v1.0.8
PATCHSelect 키보드 네비게이션 — Dialog/Drawer/Sheet 등 popup 안에서도 ↑↓ 동작
- Popover.Content가 portal로 body에 렌더 → 부모 FocusScope가 trigger로 포커스 되돌리던 문제
- 다단계 강제 포커스 — 즉시 + rAF + setTimeout 3번 호출로 race 커버
- 키 이벤트 캡처 fallback — Input이 비활성 상태일 때 포커스 옮기고 키 이벤트 재dispatch
v1.0.7
PATCHSelect 키보드 네비게이션 수정 — searchable=false에서도 ↑↓·Enter 동작
- cmdk + Radix Popover 조합에서 Popover.Content가 자기 자신에게 포커스를 잡아 키 이벤트가 cmdk에 전달되지 않던 문제
- CommandInput을 항상 DOM에 유지(searchable=false일 땐 sr-only) → 키 이벤트 캐처 역할
- Popover.Content.onOpenAutoFocus에서 input으로 포커스 위임
- shouldFilter={searchable}로 비검색 모드는 필터링 비활성화
- 신규 키보드 네비게이션 테스트 2개 (검색/비검색 양쪽)
v1.0.6
PATCH'use client' 주입을 React/Radix 사용 파일에만 선택적으로 적용 (1.0.5 회귀 수정)
- 1.0.5에서 cn 같은 순수 유틸리티까지 client-only가 되어 'Attempted to call cn() from the server' 에러 발생
- react / react-dom / @radix-ui / @tanstack/react-* / sonner / lucide-react / cmdk / vaul import가 있는 파일에만 주입
- 서버 컴포넌트에서 cn, 타입 등 직접 호출 가능
v1.0.5
PATCHNext.js App Router (RSC) 호환 — 빌드 출력물에 'use client' 디렉티브 주입 (1.0.6에서 회귀 수정)
- 대부분 컴포넌트가 Radix UI 기반(내부 hook) 또는 자체 hook 사용 → 서버 컴포넌트에서 직접 import 시 런타임 오류 발생하던 문제 해결
- tsup onSuccess에서 dist 출력물 모든 .js / .cjs 파일 최상단에 자동 주입
- 단, 무차별 주입으로 cn 유틸리티가 깨지는 문제가 있어 1.0.6에서 선택적 주입으로 보강
v1.0.4
PATCHREADME "CSS 격리 (Cascade Layers)" 섹션을 실전 검증 기반으로 재작성
- 패턴 A: 소비자가 본인 글로벌 CSS를 @layer app으로 감싸 라이브러리 override
- 패턴 B (권장): 소비자가 Tailwind를 함께 쓸 때 preflight 제외 import해 preflight↔utility 충돌 회피
- 데모 사이트(apps/docs)도 패턴 B로 적용 검증 완료
v1.0.3
PATCHREADME "CSS 격리" 섹션 보강 — layer 등록 시점 + import 순서 명시
- CSS Cascade Layer는 처음 등록된 시점의 위치가 우선순위를 결정
- 두 시나리오(소비자 override / 라이브러리 강제 우선) 각각의 import + layer 선언 패턴 예시
v1.0.2
PATCHCSS Cascade Layers로 스타일 격리 (@layer baneung)
- 라이브러리 모든 스타일을 @layer baneung 안에 wrap
- 소비자 글로벌 CSS의 의도치 않은 override 문제 해결
- README에 데모 사이트 링크 추가
v1.0.1
PATCHnpm 페이지용 README 추가 (코드 변경 없음)
- 각 패키지에 설치/사용법/컴포넌트 목록 README 추가
- npmjs.com에 표시될 페이지 콘텐츠
v1.0.0
MAJOR초기 출시 — 58개 React 컴포넌트 (Radix UI 기반)
- Foundation: Typography · Separator · AspectRatio · Skeleton · Spinner · Empty · Avatar · Badge · Kbd · Label
- Buttons & Toggles: Button(asChild·loading·variants) · ButtonGroup · Toggle · ToggleGroup
- Inputs: Input(좌/우 adornment) · InputGroup · InputOTP · Textarea · Field · Checkbox(indeterminate) · RadioGroup · Switch · Slider
- Selection: Select(single/multi/searchable) · NativeSelect · Combobox · Command · Calendar · DatePicker
- Layout: Card · Item · Sidebar · Resizable · ScrollArea · Direction
- Navigation: Tabs · Breadcrumb · Pagination · NavigationMenu · Menubar
- Overlay: Dialog · AlertDialog · Drawer · Sheet · Popover · HoverCard · Tooltip · DropdownMenu · ContextMenu
- Feedback: Alert · Toast · Sonner · Progress
- Data Display: Accordion · Collapsible · Table · DataTable · Carousel
- WCAG 2.1 AA · axe-core 0 violations · 한글 IME 안전 · React 18/19 호환 · 트리쉐이커블 ESM/CJS
@baneung-pack/grid
현재: v0.8.4
npmv0.8.4
PATCHautoSize prop 신규 — 부모 컨테이너에 꽉 맞춰 자동 리사이즈
- 활성 시 outer가 h-full w-full + scroll이 flex-1 min-h-0 → 부모 div 100% 채움
- 페이지네이션 푸터는 자동으로 바닥에 고정
- 부모 크기 변경 시 자동 반영 (virtualizer 내장 ResizeObserver)
- height prop은 무시. 기본 false → 기존 동작 그대로 (backwards-compatible)
- README의 MIT 배지·푸터를 Apache-2.0으로 함께 교체
v0.8.3
PATCH라이선스를 Apache-2.0으로 명시
- package.json#license: "Apache-2.0" 추가
- 패키지 루트에 LICENSE 파일 (Apache-2.0 전문) 동봉
- npmjs.com 페이지에 라이선스 표시됨
v0.8.2
PATCH'use client' 주입을 React/Radix 사용 파일에만 선택적으로 적용 (0.8.1 회귀 수정)
- 0.8.1의 무차별 주입으로 순수 유틸리티(csv 빌더 등)까지 client-only가 되던 문제 수정
- react / @radix-ui / @tanstack/react-* import가 있는 파일에만 주입
v0.8.1
PATCHNext.js App Router (RSC) 호환 — 빌드 출력물에 'use client' 디렉티브 주입 (0.8.2에서 회귀 수정)
- 가상화/state/ref 전반 사용 → RSC 환경에서 client 필수
- tsup onSuccess에서 dist 출력물 모든 .js / .cjs 파일 최상단에 자동 주입
- 무차별 주입으로 순수 유틸리티가 깨지는 문제는 0.8.2에서 선택적 주입으로 수정
v0.8.0
MINORCSV 다운로드 — GridHandle.exportCsv
- exportCsv(filename?, options?) — UTF-8 BOM + Excel 호환
- options.rows로 명시 행만 export (변경분만 / 외부 필터 결과 등)
- 미지정 시 getSavedData() 사용 (편집 반영, 삭제 제외)
- 새 helper: buildCsv, downloadCsv (csv.ts)
v0.7.0
MINORFilter popover Portal · cell-selection · row add/remove · Delete 키
- Filter popover: react-dom Portal로 document.body 렌더 → 스크롤 컨테이너에 안 잘림
- cellSelection: "none" | "single" | "multi" (드래그 사각형 영역 다중 선택)
- addRow(row, position): "first" | "last" | "above-active" | "below-active"
- removeSelectedRows() / clearSelectedCells()
- clearOnDelete: Delete/Backspace로 선택 셀 값 클리어
v0.6.0
MINOR필터 UX를 Excel/AUIGrid 스타일 popover로 교체
- 헤더에 funnel 아이콘 → 클릭 시 popover
- "필터 초기화" + 검색 + "(전체선택)" + 각 값 + "(필드 값 없음)" 체크박스
- 확인(적용) / 취소(폐기) 버튼
- 외부 클릭 / Escape로 닫힘 (draft 폐기)
v0.5.0
MINOR헤더 정렬(sort) + 필터(filter)
- column.sortable — 헤더 클릭으로 3-state (↕ → ▲ asc → ▼ desc → 해제)
- column.filterable — 헤더 아래 input (부분 일치, case-insensitive)
- 값 비교: null 후순위, Date timestamp, number 산술, 그 외 localeCompare(numeric)
- 트리 모드는 sort skip (hierarchy 보존)
v0.4.1
PATCH진행률 바 fill 색이 표시되지 않던 문제 수정
- grid의 @theme inline에 status 컬러(--color-success/danger/warning/info) 매핑 누락
- bg-success utility가 색을 못 받아 fill 바가 투명했음
v0.4.0
MINOR빌트인 셀 에디터 (dropdown · date · number) + 렌더러 (progress · date)
- column.editor: 'text' | 'number' | 'date' | 'dropdown' (네이티브 input)
- column.renderer: 'progress' (진행률 바) / 'date' (포맷팅)
- column.options / min / max / dateFormat 필드 추가
- aria-progressbar / aria-valuenow / combobox role 표준
v0.3.0
MINORTree (계층) 모드
- tree prop + getChildren으로 중첩 데이터 계층 표시
- 첫 컬럼에 caret(▶/▼) + 들여쓰기 자동 삽입
- defaultExpandedIds: 'all' | 'none' | id 배열
- 가상화·페이지네이션 호환
v0.2.0
MINOR초기 publish — 가상화 · 페이지네이션 · 인라인 편집 · 행 선택 · ref API
- 가상화 토글 (virtualized) — @tanstack/react-virtual 기반
- 내장 페이지네이션 + 외부 페이징 controlled 모드
- 인라인 편집 (editable: true) + 한글 IME 안전
- 행 선택 체크박스 (selectable)
- Imperative API: getSavedData / getChangedData / getDeletedData / deleteSelected / clearSelection / reset
- @layer baneung에 격리
@baneung-pack/tokens
현재: v1.0.3
npmv1.0.3
PATCH라이선스를 Apache-2.0으로 명시
- package.json#license: "Apache-2.0" 신규 추가 (이전엔 license 필드 누락)
- 패키지 루트에 LICENSE 파일 (Apache-2.0 전문) 동봉
- README의 MIT 배지·푸터를 Apache-2.0으로 교체
- npmjs.com 페이지에 라이선스 표시됨
v1.0.2
PATCHCSS Cascade Layers로 스타일 격리 (@layer baneung)
- ui와 같이 @layer baneung에 래핑
- 데모 사이트 링크 추가
v1.0.1
PATCHnpm 페이지용 README 추가
- 토큰 카테고리 안내. 코드 변경 없음
v1.0.0
MAJOR초기 출시 — CSS / JSON / TS 토큰 SSOT
- 컬러: bg/text/border/focus/status 시맨틱 + neutral/baneungNavy/baneungTeal primitive
- 라이트/다크 두 세트 — [data-theme="dark"] cascade
- 타이포(Pretendard Variable) · 스페이싱(4px) · 라디우스(0/2/4) · 모션 · z-index · breakpoint
- 산출물: tokens.css / tokens.json / tokens.js