diff --git a/AGENTS.md b/AGENTS.md index e4d4c9f..6225b22 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,8 +2,23 @@ ## 프로젝트 정체 -- Music Assistant 프론트엔드 프로젝트. -- 본 파일 작성 시점(초기화) 기준 저장소는 비어 있음. 구조/매니페스트/빌드 산출물이 생기면 이 파일을 해당 사실에 맞춰 갱신할 것. +- Music Assistant 클라이언트 프로젝트. 서버(Music Assistant)와 연동하는 크로스플랫폼 앱. +- 타겟 플랫폼: iOS, Android, macOS, Web (4개 환경). +- 핵심 기능: 백그라운드 재생, 잠금화면/제어센터 컨트롤, Music Assistant 서버 연동. + +## 기술 스택 + +- Kotlin Multiplatform (KMP) + Compose Multiplatform. + - 공유 로직(Music Assistant API/WebSocket 클라이언트, 상태 관리, 데이터 레이어)은 `commonMain`에 배치. + - UI는 Compose Multiplatform으로 iOS/Android/macOS/Web을 단일 코드베이스로 커버. +- Web 타겟: Kotlin/Wasm + Compose Multiplatform Web. + - 실험→안정화 단계이므로 빌드 파이프라인과 브라우저 호환성을 별도 검증 필요. + - Web 오디오는 HTML5 Audio + Media Session API 사용. iOS Safari의 백그라운드/잠금화면 제약은 Web 타겟에 그대로 적용됨(별도 문서로 보관). +- 오디오 재생: KMP `expect/actual`로 플랫폼별 구현 분리(공통 오디오 라이브러리 없음). + - Android: Media3/ExoPlayer + MediaSession. + - iOS: AVAudioSession + AVPlayer + MPNowPlayingInfoCenter. + - macOS: AVAudioPlayer + MPNowPlayingInfoCenter. + - Web: HTML5 Audio + Media Session API. ## 진실의 원천 계약 @@ -26,6 +41,7 @@ ## 도구 환경 - Node 24, pnpm 11, bun 1.3, git 2.53 사용 가능. +- Kotlin/Gradle 기반 KMP 프로젝트. JDK 버전과 Gradle 버전은 매니페스트 생성 시점에 확정하여 여기에 기록할 것. - 패키지 매니페스트가 없는 초기 상태이므로 아직 빌드/테스트/린트 명령은 확정되지 않음. 매니페스트가 생성되면 여기에 정확한 명령을 기록할 것. - 명령 순서가 중요해지면(예: `lint -> typecheck -> test`) 그 순서를 명시할 것.