릴리즈 노트
opt-ui 계열 패키지 변경만 따로 모아서 확인할 수 있도록 패키지 기준으로 정리했습니다.
reopt designUpdated
1. 포함 범위
- 이 페이지는
@reopt-ai/opt-ui,@reopt-ai/opt-cli, 과거@reopt-ai/opt-ui-surface계열 변경만 보여줍니다. opt-datagrid와opt-editor릴리즈는 각각 해당 패키지 문서로 분리했습니다.- Surface 변경은 CLI registry 배포와 함께 묶여 전달되므로 CLI 버전도 함께 확인해야 합니다.
2. 버전별 변경 이력
v1.23.0
LatestSummaryRow가 카드별 스파크라인을 통과시킴
- ~SummaryRow가 카드별 스파크라인을 통과시킴(opt-ui)
StatCard는 처음부터 스파크라인을 그렸지만 카드를 배치하는 행이 그 필드를 버려, 행을 쓰는 제품은 형태 없는 숫자만 받았습니다. 델타는 숫자가 얼마나 움직였는지 말하고, 스파크라인은 그것이 서서히 흘렀는지 하루에 뛰었는지를 말합니다.
SummaryRow
v1.22.0
ReplayScrubber 추가 / ReplayTransport 추가
- +ReplayScrubber 추가(opt-ui)
절대 시각 기반 탐색 트랙입니다. segments(active/inactive/gap/buffer), buffered 범위, 0..1 activity 버킷(로그 스케일 영역), markers(가까운 것은 병합, 위험 톤 우선)를 그리고 onSeek은 포인터·키보드 조작이 끝날 때 한 번만 호출합니다. onPreview는 호버·드래그 미리보기용이며 groupReplayMarkers를 함께 내보냅니다.
ReplayScrubber - +ReplayTransport 추가(opt-ui)
재생/일시정지(끝에서는 처음부터), 처음으로, 배속에 비례하는 앞뒤 점프, 0.5×~16× 배속 메뉴, 대기 건너뛰기 토글, 전체화면, 경과/실제 시각 타임코드 전환을 제공합니다. 재생 상태는 호스트가 소유하고 모든 문구는 labels로 바꿀 수 있으며 formatReplayElapsed를 내보냅니다.
ReplayTransport - +ReplayPlayerLayout 추가(opt-ui)
stage·meta·controls·inspector 슬롯을 배치하고 인스펙터를 ResizablePanelGroup으로 리사이즈·영속합니다. 전체화면은 플레이어 루트에 요청하며 브라우저가 스스로 나가면 onFullscreenChange로 알립니다. shortcuts는 포커스가 안에 있고 입력 필드가 아닐 때만 동작하고 키 이름은 replayShortcutKey가 정규화합니다.
ReplayPlayerLayout
v1.21.0
CriteriaBuilder 추가 / ConditionBuilder 미리보기 문구를 labels로 바꿀 수 있음
- +CriteriaBuilder 추가(opt-ui)
루트와 그룹마다 AND/OR 세그먼트 컨트롤(legend 포함), 레터마크 그룹 배지, 조건 행의 부정 토글·위/아래 이동·복제(원본 앞 삽입)·제거, group별 섹션과 negatedLabel 항목을 가진 조건 추가 메뉴, 알 수 없는 kind의 경고 행(바꾸기/제거), 조건·그룹 id별 errors와 aria-describedby 연결, A(조건 추가)·G(그룹 추가) 단축키, 빈 상태, aside 미리보기 슬롯을 제공합니다. 모든 문구는 labels(기본 한국어)이고 배열 연산은 criteriaBuilderMove·Duplicate·Remove·Insert·RemoveGroup·DuplicateGroup·criteriaGroupLetter로 내보냅니다.
CriteriaBuilder - ^ConditionBuilder 미리보기 문구를 labels로 바꿀 수 있음(opt-ui)
labels.previewSuffix(기본 "matches")나 labels.formatPreview로 하드코딩된 영어 접미사를 대체합니다. 기존 소비자는 그대로 동작합니다.
ConditionBuilder
v1.20.0
PathAnalysis 블록을 설정 사이드바 + PathFlowChart 구조로 재작성
- ^PathAnalysis 블록을 설정 사이드바 + PathFlowChart 구조로 재작성(opt-ui)
단계 기준·시작/종료점 피커·단계 수·행 수·제외 태그·반복 병합·URL 그룹핑·최소 리본 세션·세그먼트를 담은 PathAnalysisConfig 편집기와 흐름 탭(grid/sankey 전환, flowDetail·entryExitActions 슬롯)을 갖췄습니다. 탭은 controlled로 두어 dev 이중 마운트에서 선택이 튀지 않습니다.
PathAnalysis
v1.19.0
쿼리 워크스페이스 셸 9종 추가 / SqlEditor가 선택·커서를 전달하고 테마를 따릅니다
- +쿼리 워크스페이스 셸 9종 추가(opt-ui)
QueryWorkspace(3-pane, 좁은 화면에서는 사이드바가 시트로 스택), SchemaTree, QueryToolbar, QueryOutputPane, QueryResultChart, QueryFiltersMenu, QueryVariablesMenu, QueryHistoryList, SaveQueryDialog. 문장 분리와 플레이스홀더 헬퍼(splitSqlStatements 등)는 문자열과 주석을 건너뜁니다.
QueryWorkspaceSchemaTreeQueryToolbarQueryOutputPaneQueryResultChartQueryFiltersMenuQueryVariablesMenuQueryHistoryListSaveQueryDialog - ^SqlEditor가 선택·커서를 전달하고 테마를 따릅니다(opt-ui)
ref 핸들(insertText, getSelection, getCursorOffset)을 노출하고, onRun에 선택 영역과 커서 오프셋을 넘기며, theme auto가 OptThemeProvider의 resolved mode를 읽습니다. 줄 번호를 표시하고 선택적 @codemirror/commands 피어로 undo/redo를 제공합니다.
SqlEditor - ^QueryResultsTable을 타입 헤더·정렬·리사이즈·윈도잉으로 재작성(opt-ui)
컬럼 타입을 FieldToken으로 표시하고, 로컬 정렬(aria-sort), 드래그 너비 조절, 행 윈도잉, 행 상세 flyout을 갖췄습니다. NULL·불리언·JSON을 빈칸 대신 글자로 씁니다. 문자열 컬럼 배열도 그대로 받습니다.
QueryResultsTable
v1.18.0
v1.17.0
Checkbox와 Radio의 입력이 컨트롤 전체의 클릭 타깃이 됩니다 / Callout·CopyButton·StatusDot·SegmentedControl과 CatalogFrame·InspectorLayout·QueryFilterBar 추가
- ~Checkbox와 Radio의 입력이 컨트롤 전체의 클릭 타깃이 됩니다(opt-ui)
둘 다 sr-only라 그려진 네모·동그라미가 입력 위에 덮여 있었습니다. 사람이 누르는 것은 그대로였지만 — 브라우저가 라벨 클릭을 컨트롤로 넘겨줍니다 — 컨트롤을 가리키는 클릭(getByRole("checkbox").click() 등)은 스팬에 막혀 시간 초과로 실패했습니다. 1.12.3에서 SegmentedControl에 적용한 것과 같이, 입력이 라벨 위를 투명하게 덮습니다. peer-*·group-* 스타일은 형제 선택자라 위치를 따지지 않고, 접근성 트리·접근 가능한 이름·포커스 링은 그대로입니다. Switch는 진짜 <button role="switch">라 손댈 것이 없었습니다. **라벨 텍스트를 클릭하던 자동화 테스트는 계속 동작하지만**, role 클릭이 시간 초과라 어쩔 수 없이 그렇게 쓰던 테스트는 이제 컨트롤을 직접 가리킬 수 있습니다.
CheckboxRadio - +Callout·CopyButton·StatusDot·SegmentedControl과 CatalogFrame·InspectorLayout·QueryFilterBar 추가(opt-ui)
복사·상태·고지·뷰 전환을 공통 Core로 제공하고, Query 하나를 공유하는 필터와 목록을 유지하는 인스펙터를 카탈로그 Shell로 제공합니다.
CalloutCopyButtonStatusDotSegmentedControlCatalogFrameInspectorLayoutQueryFilterBar - ^FieldToken·DataTable·EventMetaEditor·PropertyExplorer의 카탈로그 편집 계약 확장(opt-ui)
타입 레이블, 제목 없는 grid 이름, 호출자 소유 편집 섹션, 숨김·편집 어포던스를 공식 API로 제공합니다. 제어형 Tabs는 탭 해제 중 소유자 상태를 다시 쓰지 않습니다.
FieldTokenDataTableEventMetaEditorPropertyExplorerTabs - +PropertyCatalog 추가 및 EventCatalog를 단일 Query·인스펙터 구조로 개편(opt-ui-surface)
빈 상태와 읽기 실패를 구분하고, 행 선택·일괄 작업·페이지·필터·상세 패널을 같은 카탈로그 프레임에서 다룹니다.
PropertyCatalogEventCatalog - ~오버레이 Flyout의 스크림이 페이지를 덮던 문제 수정(opt-ui)
스크림이 팝오버 표면색(bg-overlay)을 쓰고 있어 좁은 화면에서 인스펙터 뒤의 목록이 통째로 가려졌습니다. Dialog와 같은 방식으로 페이지를 어둡게 덮는 bg-scrim으로 바꿨습니다.
FlyoutInspectorLayout - ~SegmentedControl의 라디오가 세그먼트 전체의 클릭 타깃이 됩니다(opt-ui)
라디오가 sr-only라 라벨 텍스트에 덮여 있었습니다. 사람이 누르는 것은 그대로였지만, 컨트롤을 가리키는 클릭(getByRole("radio").click() 등)은 텍스트에 막혀 실패했습니다. **라벨 텍스트를 클릭하던 자동화 테스트는 role 클릭으로 바꿔야 합니다** — 이제는 라디오가 텍스트 위에 있습니다.
SegmentedControl - ~스크린리더만 듣는 문구도 호출자가 번역할 수 있습니다(opt-ui)
DataTable이 선택·리사이즈 문구를 labels로 받고, CatalogFrame은 인스펙터 닫기 버튼을, EventMetaEditor는 아이콘 피커의 placeholder를 각각 전달합니다. ColumnDef.headerHidden은 행 액션처럼 제목이 필요 없는 컬럼을 그리지 않고 이름만 붙입니다. EventIcon은 빈 문자열을 아이콘 없음으로 읽어 "Event: "를 만들지 않습니다.
DataTableCatalogFrameEventMetaEditorEventIcon - ~토스트 영역의 접근 가능한 이름을 번역할 수 있습니다(opt-ui)
ToastProvider의 labels.regionLabel로 토스트 live region의 이름을 지정할 수 있습니다. 토스트 본문은 호출자가 작성하고, 라이브러리가 소유하던 기본 이름까지 같은 언어로 맞출 수 있습니다.
NotificationToast - ~좁은 인스펙터에서 EventMetaEditor의 이름 필드가 겹치지 않습니다(opt-ui)
입력이 기본 폭(w-auto)을 유지해 2열 트랙보다 넓어지면서 두 필드가 서로 겹치고 패널 밖으로 나갔습니다. 이제 열을 채우고, 창이 아니라 인스펙터 폭에 반응하는 컨테이너 쿼리로 좁을 때 쌓입니다.
EventMetaEditor - ~쿼리 매처가 배열 필드를 원소 단위로 비교하고, Callout이 status로 읽힙니다(opt-ui)
tag:pay가 ["pay","checkout"]에 맞지 않던 문제를 고쳤습니다(부정은 "어느 원소도 불일치", 빈 배열은 field:*를 만족하지 않음). StatusDot의 hint는 title 대신 포커스로 열리는 툴팁이고, Callout은 role="status"라 조건이 참이 되어 나타난 고지가 화면을 보지 않는 독자에게도 닿습니다.
StatusDotCallout - ~분석·설정 Block의 상태 전이와 접근성 의미를 보강했습니다(opt-ui-surface)
InsightsDashboard의 dismissed 보기, RealtimeDashboard의 실시간 피드 안내, SqlWorkspace의 저장 쿼리 로딩을 고쳤습니다. ProjectSettings의 보존 정책은 native radio로 동작하며, 분석·대시보드의 빈 상태는 native output으로 읽힙니다.
InsightsDashboardRealtimeDashboardSqlWorkspaceCustomDashboardProjectSettingsAcquisitionAnalysisBreakdownAnalysisPathAnalysisRetentionAnalysis
v1.16.0
DescriptionList·Identity·EventTimeline·ScoreBreakdown·Flyout 추가 / EmptyState·StatCard·SummaryRow의 의미·상태·밀도 계약 확장
- +DescriptionList·Identity·EventTimeline·ScoreBreakdown·Flyout 추가(opt-ui)
의미가 보존되는 상세 필드, 식별·익명 사용자 fallback, 세션별 이벤트 근거, 가중 점수 축, 목록 문맥을 유지하는 비모달 상세 패널을 제공합니다.
DescriptionListIdentityEventTimelineScoreBreakdownFlyout - ^EmptyState·StatCard·SummaryRow의 의미·상태·밀도 계약 확장(opt-ui)
실패와 빈 결과의 tone을 구분하고, 지표 polarity와 단일 focus stop 선택을 지원하며, 요약 행을 5·6열까지 확장했습니다.
EmptyStateStatCardSummaryRow
v1.15.0
FieldToken·Facet·Expression·TextTruncate·Highlight·LiveRegion·ColorPalette·InlineEdit·KeyPadMenu 추가
- +FieldToken·Facet·Expression·TextTruncate·Highlight·LiveRegion·ColorPalette·InlineEdit·KeyPadMenu 추가(opt-ui)
필드 타입, 값 분포, 조건식, 긴 식별자, 검색 강조, 실시간 접근성 안내처럼 데이터 제품에서 반복되던 UI를 독립적인 Core primitive로 제공합니다.
FieldTokenFacetExpressionTextTruncateHighlightLiveRegionColorPaletteInlineEditKeyPadMenu
v1.13.0
소비 프로젝트의 초기 설정 누락을 막는 app.css 부트스트랩과 시맨틱 BlockLayout inset 추가 / 프로젝트 link·pull·push·status 동기화와 Surface 설치·업데이트·제거·진단 흐름 강화
- +소비 프로젝트의 초기 설정 누락을 막는 app.css 부트스트랩과 시맨틱 BlockLayout inset 추가(opt-ui)
- +프로젝트 link·pull·push·status 동기화와 Surface 설치·업데이트·제거·진단 흐름 강화(opt-cli)
마이그레이션 가이드
opt-editor 런타임 스키마 import 변경: `@reopt-ai/opt-editor/server` → `@reopt-ai/opt-editor/schemas`. `@reopt-ai/opt-editor/ai-sdk` import와 type-only export는 변경되지 않습니다.
v1.12.0
Breaking ChangesResizable 컴포넌트에서 프로덕션 에디터 컨트롤(콜백·ref·resize·a11y prop) 노출 + server-safe theme/server 엔트리(createThemeBootScript) / Core에 Meter·AlertDialogPanel 노출, number input·pagination·command palette 접근성 강화, primitives의 base-ui 패턴 흡수
- +Resizable 컴포넌트에서 프로덕션 에디터 컨트롤(콜백·ref·resize·a11y prop) 노출 + server-safe theme/server 엔트리(createThemeBootScript)(opt-ui)
- +Core에 Meter·AlertDialogPanel 노출, number input·pagination·command palette 접근성 강화, primitives의 base-ui 패턴 흡수(opt-ui)
- !런타임 Surface export 제거 — opt-cli 블록 registry로 이관(opt-ui)
ChatAssistant·DataExplorer·DeploymentCenter·createSurface 등은 더 이상 @reopt-ai/opt-ui에서 export되지 않습니다. `npx @reopt-ai/opt-cli surface add <slug>`로 소비하세요.
- -SurfaceLayout → BlockLayout / createBlock(opt-ui)
- +블록을 HTTP로 서빙하고 CLI가 원격 fetch, 서명된 원격 배포 워크플로우 + brandapp EAV 저장 백엔드. 컴포넌트 카탈로그에 신규 차트 15종 반영.(opt-cli)
마이그레이션 가이드
런타임 Surface import 제거: `import { ChatAssistant } from "@reopt-ai/opt-ui"` → `npx @reopt-ai/opt-cli surface add <slug>`. 레이아웃: `SurfaceLayout` → `BlockLayout` / `createBlock`.v1.8.2
@reopt-ai/opt-ui-primitives@1.4.2 / opt-ui@1.4.1 — Base UI v1.6.0 참조 기반 프리미티브 정합성 보강 / 차트 sizing, builder id, demo workflow, deterministic id-registry 안정화
- ^@reopt-ai/opt-ui-primitives@1.4.2 / opt-ui@1.4.1 — Base UI v1.6.0 참조 기반 프리미티브 정합성 보강(opt-ui)
Accordion, Combobox, Dialog, Select, Separator, Toggle, OtpField 등 primitives/core 계약을 보강하고 opt-ui는 새 primitives 런타임 의존성을 참조합니다.
- ~차트 sizing, builder id, demo workflow, deterministic id-registry 안정화(opt-ui)
chart sizing과 e2e startup, builder/demo id 생성 흐름을 보강하고 COMPONENT_CATALOG 및 id-registry 산출물을 최신 메타 기준으로 재생성했습니다.
- ^@reopt-ai/opt-cli@1.1.1 — Surface registry 38종과 opt-ui 1.4.1 peer metadata 동기화(opt-cli)
opt-ui surfaces 7종, opt-ui-surface 24종, brandapp-ui 7종을 포함한 registry.json과 id-registry.json을 재생성했습니다.
v1.8.0
@reopt-ai/opt-ui-primitives@1.4.0 — WAI-ARIA·키보드·React 정합성 overhaul / @reopt-ai/opt-ui@1.4.0 — 불필요한 재연산·리렌더 감소, 하이드레이션 날짜 포맷 안정화
- ^@reopt-ai/opt-ui-primitives@1.4.0 — WAI-ARIA·키보드·React 정합성 overhaul(opt-ui)
포커스/키보드 내비게이션 및 ARIA 패턴 전반 교정. opt-ui 1.4.0이 새 primitives를 런타임 의존성으로 참조.
- ^@reopt-ai/opt-ui@1.4.0 — 불필요한 재연산·리렌더 감소, 하이드레이션 날짜 포맷 안정화(opt-ui)
opt 패키지 전반 구조적 공유 및 메모이제이션 개선. opt-harness→opt-shell 리브랜드 참조 정리.
- +@reopt-ai/opt-cli@1.1.0 — `opt surface diff` 명령 + browser-safe `./audit` 서브-export(opt-cli)
하네스 감사 툴킷을 opt-cli로 이동(브라우저 안전). opt-shell을 peer로 전환. registry.json 1.4.0 동기화(37 surfaces).
마이그레이션 가이드
opt-harness 사용처는 @reopt-ai/opt-shell로 교체하고 Harness* 식별자를 Shell*로 변경하세요. 하네스 감사 도구는 @reopt-ai/opt-cli의 ./audit에서 import합니다.
v1.7.0
Breaking Changesdata-opt-id 인프라 Phase 1-6 완성 — 250/250 컴포넌트 100% 적용 + ESLint 룰 + meta-props-sync strict / 테마 시스템 통합 기반 — THEME_REGISTRY + ThemeSpec + mono-dark preset + codegen
- +data-opt-id 인프라 Phase 1-6 완성 — 250/250 컴포넌트 100% 적용 + ESLint 룰 + meta-props-sync strict(opt-ui)
Phase 1 인프라 / Phase 2 ESLint 룰 + core 53개 / Phase 3-5 visuals·shells·surfaces 일괄 / Phase 6 inspector 메타 배지. 새 ./id-registry export로 카탈로그 조회 가능.
data-opt-idid-registryid-registry.json - +테마 시스템 통합 기반 — THEME_REGISTRY + ThemeSpec + mono-dark preset + codegen(opt-ui)
OptThemeProvider가 ThemeSpec + generated 모드 지원. 프리셋 정리(corporate/playful 제거, mono-dark 추가). presets/tokens.ts가 CSS의 단일 진실의 원천. ThemeSwitcher 동적화 + i18n 라벨 + FOUC 제거.
OptThemeProviderTHEME_REGISTRYThemeSpecThemeSwitcher - !프리셋 corporate/playful export 제거 — mono-dark로 교체 (major)(opt-ui)
import "@reopt-ai/opt-ui/theme/presets/corporate.css" / playful.css 사용 중인 소비자는 default / minimal / natural / pro / mono-dark 중 하나로 교체 필요.
- +PageAside shell 컴포넌트 추가(opt-ui)PageAside
- ^Command anatomy 재작성 — cmdk 스타일 + dialog floating 제거 (opt-ui-primitives 1.3.0)(opt-ui)Command
- ~a11y 깊은 점검(high 우선순위 정리) + popover/menu jump 버그(transform → translate 분리) + Dialog 가로 중앙 정렬 깨짐(opt-ui)PopoverMenuDialog
- +@reopt-ai/opt-cli@1.0.0 신규 publish — 통합 opt 바이너리 (구 @reopt-ai/opt-ui-cli@1.2.1 대체)(opt-cli)
harness check / surface 관리 / opt ids 카탈로그 조회 / opt test (Vite+ 전용) / gstack 패턴 기반 5단계 harness CLI. @google/design.md canonical 린터 통합.
- !@reopt-ai/opt-ui-cli → @reopt-ai/opt-cli 로 패키지 이름 변경 (major)(opt-cli)
소비자는 bun add @reopt-ai/opt-cli@1.0.0로 교체 필요. CLI 진입점은 동일하게 `opt`.
- ^ESLint 룰 강화 — no-raw-color를 Tailwind palette 전체로 확장, require-use-client detector 정밀화로 28개 정적 컴포넌트 server-safe 전환(opt-ui)
no-raw-color는 dark: prefix 자동 허용. detector는 hooks/forwardRef/이벤트/HTMLAttributes/외부 *Props/generic factory를 자동 분류. active-item overlay를 raw white에서 accent-fg 토큰으로 전환.
마이그레이션 가이드
1. @reopt-ai/opt-palette를 직접 설치할 필요는 없음 (opt-ui transitively dep). 2. 테마 프리셋 corporate/playful 사용 중이면 mono-dark 또는 다른 프리셋으로 교체. 3. @reopt-ai/opt-ui-cli → @reopt-ai/opt-cli로 패키지 교체 (CLI 진입점은 동일하게 `opt`). 4. data-opt-id 사용 시 ./id-registry sub-export 활용 가능.
v1.1.1
StarRating Core, MarketplaceCatalog/ItemDetail Surface 추가, Publish Readiness Audit 도입
- +StarRating Core 컴포넌트 추가 (키보드 탐색, hover 미리보기, readOnly)(opt-ui)StarRating
- +MarketplaceCatalog Surface 추가 (카드 그리드, 검색/탭/정렬)(opt-ui-surface)MarketplaceCatalog
- +ItemDetail Surface 추가 (breadcrumb, 리뷰 폼, content 슬롯)(opt-ui-surface)ItemDetail
- +Publish Readiness Audit 시스템 도입 (5가지 교차 검증 + 자동 수정)
- ^SettingsForm 강화 (FormFieldDef 확장)(opt-ui)SettingsForm
- ~StarRating meta keyboardShortcuts 필드명 수정(opt-ui)
v1.1.0
Ariakit 의존성 완전 제거 → opt-ui-primitives 전환, 접근성/API 계약 강화
- +opt-ui-primitives: Ariakit 대체 네이티브 접근성 프리미티브 패키지 초기 구현
- +Ariakit → opt-ui-primitives 전면 마이그레이션 + @ariakit/react 의존성 완전 제거(opt-ui)
- +lucide 아이콘 표준화(opt-ui)
- +문서 인프라 개선(opt-ui)
- ~Core 접근성 및 API 계약 수정(opt-ui)
- ~테마 해상도 통합(opt-ui)
- ~opt-ui-primitives: form-store useValidate/useSubmit 구현 추가
- ^테스트 성능 최적화 및 안정화 (787 tests)(opt-ui)
v1.0.7
Dialog animated freeze 수정, 테마 텍스트 시인성 개선, Core 입력 컴포넌트 일괄 강화
- ~Dialog animated prop을 설정 가능하게 변경 — Ariakit #4075 freeze 우회(opt-ui)Dialog
- ~Dialog 타입을 DialogProviderProps로 수정 (ComponentPropsWithoutRef 추출 오류)(opt-ui)Dialog
- ^테마 프리셋 텍스트 색상을 rgba() → hsl() 순수값으로 변환하여 시인성 개선(opt-ui)
- ^AuditLog 리디자인 — 타임라인 UI, 액션별 색상, expand/collapse(opt-ui)AuditLog
- ^Core 입력 컴포넌트 P0-P3 일괄 개선 (Input, Textarea, Select, Checkbox, Switch, RadioGroup, NumberInput)(opt-ui)InputTextareaSelectCheckboxSwitchRadioGroupNumberInput
- ^TagInput 메타데이터 추가 + Surface 스타일 정리(opt-ui)TagInput
v1.0.6
reopt-data 리포트 B8+C5 전항목 구현 — AuditTimeline 신규 Shell, 8개 기존 컴포넌트 강화
- +AuditTimeline 신규 Shell — diff 뷰, 액션별 색상, expand/collapse(opt-ui)AuditTimeline
- +ReportBuilder 4단계 위저드 재작성 (type→config→style→preview)(opt-ui)ReportBuilder
- ^TagInput suggestions 자동완성 드롭다운 + 키보드 탐색(opt-ui)TagInput
- ^DateRangePicker presets + comparison 모드 + granularity 선택(opt-ui)DateRangePicker
- ^Card selectable/selected 상태 지원 (ring highlight)(opt-ui)Card
- ^Badge progress 원형 프로그레스 링 (SVG)(opt-ui)Badge
- ^ConditionBuilder nested AND/OR + conditionTypes + previewCount(opt-ui)ConditionBuilder
- ^DataTable inline bar 시각화 (bar/barColor ColumnDef)(opt-ui)DataTable
- ^FileUploadForm onPreview + columnMapping 슬롯(opt-ui)FileUploadForm
- ^EventIcon POPULAR_ICONS/COLOR_PRESETS + ReactNode 아이콘(opt-ui)EventIcon
v1.0.5
Dialog 9-part anatomy + Ariakit Form 12종 컴포넌트 래핑
- +Dialog 9-part anatomy — Heading, Description, Disclosure, Header/Body/Footer 추가(opt-ui)DialogHeadingDialogDescriptionDialogDisclosureDialogHeaderDialogBodyDialogFooter
- +Ariakit Form API 전면 래핑 — FormProvider, FormGroup, FormField, FormControl 등 12개 신규 컴포넌트(opt-ui)FormProviderFormGroupFormGroupLabelFormDescriptionFormFieldFormControlFormCheckboxFormRadioGroupFormRadioFormPushFormRemoveFormReset
- ^SettingsPanel UX 개선 — 사이드바 border-r 구분선, accent 선택 상태, description 필드 추가(opt-ui)SettingsPanel
- ^TimeRangeSelector 통합 스타일 — 프리셋 버튼과 DateRangePicker를 단일 bordered 컨테이너로 통합(opt-ui)TimeRangeSelectorDateRangePicker
- ~ToolbarButton 패딩 비율 조정 — 넙데데한 버튼 개선(opt-ui)ToolbarButton
- ~Shells/Core 레이어 가이드 위반 수정 — 접근성, displayName, 타입 안전(opt-ui)
v1.0.4
/opt-ui-reference 스킬 + 빌드 시 COMPONENT_CATALOG.md 자동 생성
- +/opt-ui-reference 스킬 추가 — 레이어별 목록, 선택 가이드, 컴포넌트 상세, 키워드 검색(opt-ui)
- +빌드 시 COMPONENT_CATALOG.md 자동 생성 — npm 패키지에 포함되어 소비자 프로젝트에서 접근 가능(opt-ui)
- +/docs/releases 페이지 추가 — 릴리즈 히스토리 확인(opt-ui)
- ^opt-ui-publish 스킬에 릴리즈 노트 자동 생성 Step 추가(opt-ui)
v1.0.3
tailwind.css 통합 entry 추가 — 소비자 단일 import
- +tailwind.css 통합 entry 추가 — 소비자가 단일 import로 스타일 적용 가능(opt-ui)
- ^패키징 개선 — sideEffects CSS 선언, sourcemaps 제거, files 필드 정리(opt-ui)
- ^opt-ui-doctor 체크 13-17 추가 + publish sideEffects 규칙 업데이트
v1.0.2
테마 프리셋 CSS 빌드 수정 + opt-ui-doctor 스킬 추가
- ~빌드 시 테마 프리셋 CSS가 dist/에 복사되지 않던 문제 수정(opt-ui)
- +opt-ui-doctor 스킬 추가 — 12가지 환경 진단 체크
v1.0.1
reopt-data 마이그레이션용 Surface 강화 (B+C 항목)
- ^reopt-data B 항목 — 9개 Surface 강화 (마이그레이션 호환성)(opt-ui-surface)
- ^reopt-data C 항목 — 7개 Surface 개선 + ProjectOverview 신규(opt-ui-surface)
- ~opt-ui-migrate 스킬 Surface 목록, 버전, prerequisites 동기화
v1.0.0
첫 정식 릴리즈 — 163개 컴포넌트 (Core 47 + Visuals 17 + Shells 74 + Surfaces 25)
- +Core 47개, Visuals 17개, Shells 74개, Surfaces 5개 컴포넌트 첫 정식 배포(opt-ui)
- +Surfaces 20개 컴포넌트 첫 정식 배포(opt-ui-surface)
- +Compound Theme 아키텍처 — 6 프리셋 x light/dark, CSS 변수 기반
- +시맨틱 스페이싱 토큰 — gap-section/group/element + SurfaceLayout
- +createSurface 팩토리 — SurfaceLayout 래핑 구조적 강제