# 변경 로그

이 프로젝트의 모든 주요 변경 사항은 이 파일에 기록됩니다.

이 형식은 [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)를 기반으로 하며,  
이 프로젝트는 [유의적 버전](https://semver.org/spec/v2.0.0.html)을 따릅니다.

## [미출시]

### Changed

- 기존 함수 이름 및 타입 개선 예정
- 번들 최적화

---

## [0.1.0-beta.19] - 2025-12-18

### Added

- `streaming.initialMode` 설정 옵션 추가
  - ShortForm 모드를 선택적으로 활성화 가능
  - 기존 자동 활성화에서 설정 기반으로 변경

---

## [0.1.0-beta.18] - 2025-12-11

### Added

- 숏폼 생성 API 추가
  - `sendShortformPreview()`: 미리보기 요청
  - `sendShortformDownload()`: 다운로드 요청
  - `onShortformPreviewEnd`, `onShortformDownloadReady` 콜백 지원
- 외형 설정 API 추가
  - `sendAvatarAppearanceCategorySelected()`: 카테고리 선택
  - `resetAvatarAppearanceCategorySelected()`: 카테고리 초기화
  - `sendAppearanceOptionSelected()`: 외형 옵션 적용
- 배경 음악 제어 API 추가
  - `sendBackgroundMusicUrl()`: 배경 음악 설정
  - `sendBackgroundMusicReset()`: 배경 음악 제거
- 회전 제어 API 추가
  - `sendTurnLeft()`, `sendTurnRight()`: 30도 단위 회전
- API 문서 추가: 숏폼, 외형 설정, 배경 음악, 회전 제어

---

## [0.1.0-beta.17] - 2025-11-27

### Added

- `speak()` 메서드에서 `onLipMotionStart` 콜백 지원
  - 직접 TTS 호출 시에도 발화 데이터(`text`, `index`, `totalCount`) 전달
  - `speak()`와 대화 응답 흐름이 독립적으로 동작
- `speak()` 완료 시 `onConversationEnd` 콜백 호출 추가

### Fixed

- 대화 응답 시 마지막 문장이 잘리는 버그 수정
  - UI 렌더링 완료 전 `messageQueue` 클리어되는 문제 해결
  - `endConversation()`이 UI 렌더링 완료 후 호출되도록 변경

---

## [0.1.0-beta.16] - 2025-11-24

### Added

- `onLipMotionStart` 콜백에 발화 데이터 추가
  - 현재 발화 중인 문장 텍스트 (`text`)
  - 문장 인덱스 (`index`)
  - 전체 문장 개수 (`totalCount`)
- 말하기 중지 API (`stopSpeaking()`) 추가
- 행동 실행 API (`executeAction()`) 추가
- 발화 종료 이벤트 (`onConversationEnd`) 추가
- 클라이언트 타임아웃 제거

### Changed

- `onLipMotionStart` 콜백 시그니처 변경: `() => void` → `(data: LipMotionData) => void`
- 문서 업데이트 (API 문서, React 가이드)

---

## [0.1.0-beta.15] - 2025-11-12

### Added

- 볼륨 제어 API (`setVolume()`) 추가
- 줌 제어 API (`sendZoomIn()`, `sendZoomOut()`) 추가
- 대화 초기화 API (`resetConversation()`) 추가
- API 문서 추가 (볼륨 제어, 줌 제어, 대화 초기화)

### Changed

- React 컴포넌트 UI 개선
- HTML 예제 UI 개선

### Fixed

- ConversationManager 대화 초기화 상태 버그 수정
  - `resetState()`에서 `isStreaming` 플래그 초기화
  - 스트리밍 타임아웃 정리 추가
- 대화 중 초기화 시 안전한 상태 전환 처리
  - 진행 중인 녹음/TTS 자동 중지
  - 순차적 상태 정리 (녹음 → 스트리밍 → 상태 초기화)

---

## [0.1.0-beta.14] - 2025-10-28

### Fixed

- RoomManager 에러 처리 개선
  - HTTP 상태 코드 등 내부 구현 세부사항 외부 노출 방지
  - 중복 에러 처리 제거
- React 컴포넌트 UI/UX 개선
  - TailwindCSS v4 의존성 제거
  - CSS injection 시스템 유지 및 `.klever-one-sdk` 스코핑 개선

---

## [0.1.0-beta.13] - 2025-10-27

### Changed

- TypeScript import 타입 분리 최적화
  - 모든 타입 import에 `type` 키워드 명시 (inline-type-imports 패턴)
  - ESLint `@typescript-eslint/consistent-type-imports` 규칙 추가
  - 번들 크기 최적화 및 타입 시스템 개선
  - 명시적 `(props: Props): JSX.Element` 제거

### Fixed

- ConnectionManager 메모리 누수 방지 개선
  - 연결 종료 후 debounced 함수 호출 방지 로직 추가
  - `userEventHandler.cancel()` 호출로 대기 중인 호출 취소
  - 이벤트 미등록 상태에서 타이머 시작 방지
- SSR Safe

### Improved

- 데이터 채널 전송 로직 개선
  - `emitToDataChannel()` 메서드로 데이터 채널 전송 중앙화
  - 일관된 에러 핸들링 및 로깅 적용
  - 코드 유지보수성 향상

---

## [0.1.0-beta.12] - 2025-10-16

### Fixed

- React 18 호환성 개선
  - React JSX 런타임 외부 의존성 처리 (`react/jsx-runtime`, `react/jsx-dev-runtime`)
  - React 중복 로드로 인한 `ReactCurrentOwner` 런타임 오류 수정
  - Vite 빌드 설정에서 React 외부화(externalization) 최적화

### Changed

- React 컴포넌트 타입 정의 개선
  - `React.FC<Props>` 패턴에서 명시적 `(props: Props): JSX.Element` 패턴으로 변경
  - React 18 StrictMode 및 Concurrent Mode 호환성 향상
  - SSR(Server-Side Rendering) 안전성 개선

---

## [0.1.0-beta.11] - 2025-10-15

### Added

- 세션 타임아웃 이벤트 시스템 (`ROOM_SESSION_TIMEOUT`)
- `onRoomSessionTimeout` 콜백 추가 (세션 타임아웃 시 자동 알림)
- 세션 타임아웃 발생 시 자동 연결 해제 기능

---

## [0.1.0-beta.10] - 2025-09-24

### Added

- 마이크 권한 오류 이벤트 시스템 (`RECORDER_ERROR`)
- 마이크 권한 거부 시 사용자 알림 기능
- RecorderService 오류 유형 분류 (permission/technical/system)

### Fixed

- 마이크 권한 거부 시 연결 상태가 disconnected로 변경되는 문제 수정
- RecorderService 이벤트 미방출 문제 수정 (ConnectionEventBus 연동)
- 권한 오류와 시스템 오류 분리 처리

---

## [0.1.0-beta.9] - 2025-09-22

### Changed

- 문서 및 README.md 수정
- 자리비움 5분뒤 스트리밍 연결 종료 변경

---

## [0.1.0-beta.8] - 2025-09-19

### Added

- WebRTC 오디오 트랙 고정

### Changed

- 문서 및 README.md 수정
- 예시 HTML viewport 수정

---

## [0.1.0-beta.7] - 2025-09-18

### Changed

- 문서 및 README.md 수정

---

## [0.1.0-beta.6] - 2025-09-17

### Added

- 타입 export 추가

### Changed

- 일부 라이브러리 devDependencies로 변경
- 대화 스트리밍 개선 (+백그라운드 동작)

---

## [0.1.0-beta.5] - 2025-09-16

### Changed

- 기존 함수 이름 개선
- 타입 개선, 데드 코드 제거
- 환영인사 기본 비활성화

---

## [0.1.0-beta.4] - 2025-09-15

### Added

- 아이콘 컴포넌트 추가 (`docs-site/src/hooks/`, `src/react-lib/components/icons/`)
- HTML 사용법 및 WebView 통합 문서 추가
- Vanilla JS 사용법 문서 추가
- Room Service 오류 처리 추가

### Changed

- 문서 사이트 메인 페이지 UI 개선 (278줄 → 간소화)
- 전체 문서 내용 개선 및 예시 코드 업데이트
- 패키지 의존성 최적화 (406줄 감소)
- 컴포넌트 import 경로 정리
- cn 유틸리티 함수 제거
- Vite 설정 개선

### Fixed

- React 컴포넌트 import 경로 수정
- 예시 파일 업데이트 (mobile, webview HTML)

---

## [0.1.0-beta.3] - 2025-09-12

### Changed

- `README.md` 파일 설명 개선

## [0.1.0-beta.2] - 2025-09-12

### Added

- Klever One Web SDK 최초 배포
