- MarqueeText: scrolling title for long song names (RectMask2D clipped)
- SongDetailPanel: difficulty selected = green (img.color direct set)
- SongSelectManager: ALL/OWNED tab active state via img.color
- Card layout: DestroyImmediate + correct rebuild order to fix zero-size title bug
- NanumGothic SDF fallback configured on LiberationSans for Korean support
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add NanumGothic.ttf and NanumGothic SDF.asset for Korean text support
- SongSelectManager: cardFont SerializeField for card title/artist rendering
- SongDetailPanel: difficulty selected color changed from blue to green
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add DownloadManager, SongLibrary, SongSelectManager, SongDetailPanel scripts
- Rebuild SongSelect panel inside Menu.unity using VRBeatsKit style:
left scroll list (ALL/OWNED tabs) + right detail panel (diff buttons, Download/Delete/Play)
- SceneBuilder replaced: only ③ Menu — Rebuild SongSelect Panel remains
- All UI text in English
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- BeatSageUploader: audio_url 지원(UploadFromUrl), PollAndDownload 공통화, ZIP 500 오류 3회 재시도
- BeatSageConverter: info.dat 파싱(SongMetadata), BPM 자동 감지 → 노트 타이밍 변환에 적용
- SongCreatorManager: title/BPM 필수 입력 제거, 난이도 4개 자동 선택, GenerateFlowFromUrl 버그 수정
- NasPublisher: audioPath null 허용(URL 흐름에서 로컬 파일 없는 경우 스킵)
- .gitignore/.gitattributes 초기 설정
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>