10월 한 달 동안 Pure Music Player 팀은 라이브러리 동기화, 새로운 폼팩터 기기 최적화, 서비스 연결 편의성 및 기저 저장소의 안정성 향상에서 다양한 결실을 맺었습니다. 이번 주간 보고서의 주요 내용은 다음과 같습니다.
🔄 Subsonic 증분 동기화: 데이터 절약과 초 단위 새로고침
원격 라이브러리 동기화를 더욱 효율적이고 매끄럽게 만들기 위해 Subsonic 음원의 동기화 메커니즘을 전면 업그레이드했습니다:
- 증분 가져오기 메커니즘: 기존의 전체 재스캔 방식에서 증분 동기화 방식으로 전환하여 원격에서 변경된 곡만 가져오므로, 데이터 트래픽을 크게 절약하고 소요 시간을 대폭 줄였습니다.
- 언제든 취소 가능 및 단일화된 진행률: 동기화를 언제든 수동으로 취소할 수 있으며, 소스 센터와 음원 목록 행에서 동일한 진행률을 실시간으로 확인하실 수 있습니다.
- 앨범 커버 및 가사 자동 보완: 동기화가 완료되면 시스템이 백그라운드에서 누락된 앨범 커버와 가사를 자동으로 보완합니다. 가사는 기기에 로컬로 저장되어 오프라인 상태에서도 자유롭게 확인하실 수 있습니다.
- 동명 엔티티 분리 저장: 서로 다른 음악 소스에 존재하는 동일한 이름의 앨범이나 아티스트를 독립적으로 분류 및 보관하여 서로 덮어쓰지 않습니다.
- 명확한 상태 안내 및 다국어 지원: 곡 정보 페이지에서 메타데이터 출처가 Subsonic임을 명시하며, 동기화가 끝나면 라이브러리가 즉시 새로고침됩니다. 미동기화, 동기화 중, 보완 중, 실패 상태에 대해 9개 언어로 명확한 문구를 제공합니다.
📱 폴더블 iPhone 재생 화면: 5가지 형태 적응형 캔버스
새로운 형태의 기기를 맞이하기 위해 폴더블 iPhone 및 듀얼 스크린 폴더블 기기에 최적화된 새로운 재생 인터페이스를 선보입니다:
- 5가지 형태 스마트 레이아웃: 기기의 화면 형태에 맞춰 텐트, 세로, 가로, 펼침, 북(Book) 형태 등 5가지 레이아웃을 지능적으로 자동 선택합니다.
- 주름 및 가림 영역 회피: 레이아웃 알고리즘이 화면의 물리적 주름과 시스템 영역 가림을 정밀하게 감지합니다. 완전히 펼친 상태에서는 왼쪽에 앨범 커버와 재생 제어를, 오른쪽에 가사나 재생 대기열을 배치하며, 북 형태에서는 가사를 하단 영역에 편안하게 배치합니다.
- 세심한 폴백 보호 기능: 2단계 전환 스위치를 제공하여 탭 한 번으로 클래식 재생 화면으로 되돌릴 수 있으며, 펼침 2열 레이아웃만 비활성화하여 iPad를 가로로 놓았을 때 기존의 클래식 누적 레이아웃으로 복귀시킬 수도 있습니다.
- 시스템 안전 영역 반영: 기존의 화면 크기 및 기기 유형 판단 로직을 정리하고 시스템에서 제공하는 안전 영역에 동적으로 맞춰지도록 개선했습니다. 현재 폴더블 실기기 검증을 지속하고 있으며, 일부 모션과 접근성 세부 요소를 마무리하고 있습니다.
🔗 PureStream 설정 페이지 간소화: 비밀번호 없는 직접 연결과 직관적인 구성
PureStream 서버와의 연결 설정 프로세스를 새롭게 개편했습니다:
- 직관적인 2가지 모드 선택: 설정되지 않은 상태에서는 간결한 한 줄 요약을 먼저 보여준 후 2장의 모드 카드를 제시합니다. PureStream 구독이 필요함을 명시한 '연동 카드’와 자체 구축 PureStream 또는 서드파티 Subsonic 서버를 지원하는 '직접 연결 카드’로 구성됩니다.
- 비밀번호 없는 직접 인증: 연동을 완료하면 플레이어가 기기 인증을 통해 홈 서버로부터 임시 계정을 직접 발급받으므로 사용자 이름과 비밀번호를 입력할 필요가 없습니다.
- 깔끔해진 시각적 위계: 읽기 전용 서버 주소 표시와 진단 화면의 호스트명 및 물리적 파일 경로를 정리했습니다. 설정된 상태에서는 ‘요약 → 연결/동기화 → 진행률 → 기본 작업 버튼 → 음질 → 진단’ 순서로 정렬되며, 음질 설정은 기본적으로 접혀 있습니다.
⏱ 혼잡한 네트워크 환경 대응: 스마트 재시도와 완만한 백오프
네트워크 변동이나 서버 혼잡 상황에서도 클라이언트가 더욱 안정적으로 동작합니다:
- 권장 대기 시간 기반 재시도: 서버에서 '잠시 후 다시 시도해 주세요’를 반환하면 클라이언트는 고정 5초씩 6회 시도 후 실패하는 방식 대신 서버가 권장하는 대기 시간에 맞춰 재시도합니다.
- 속도 제한 즉시 안내: 요청 빈도 초과가 발생하면 무작정 대기하지 않고 사용자에게 잠시 후 다시 시도하도록 즉각 안내합니다.
- 에러 유형별 맞춤 처리: 일반 네트워크 오류에는 상한선이 적용된 부드러운 백오프 재시도를 적용하며, 이용 권한 미활성화, 홈 불일치, 구버전 인증 만료 등 명확한 오류는 즉시 재시도를 중단합니다. 모든 요청에는 고유 식별자가 부여되어 서버 측에서 원활하게 추적할 수 있습니다.
📚 대형 라이브러리 모드(Large Library Mode) 설정 페이지 개편: 명확하고 직관적인 구성
수만 곡 이상의 대규모 컬렉션 관리를 지원하기 위해 대형 라이브러리 모드 설정 화면을 개편했습니다:
- 명칭 체계 통일: '대형 라이브러리 모드 / Large Library Mode’로 명칭을 일원화하여 ‘빠른 목록 인덱스’, ‘고성능 모드’ 등 혼재되던 표현을 정리했습니다.
- 중복 정보 제거: 동일한 기술적 사실을 중복 표기하지 않으며, 라이브러리 크기, 인덱스 생성 진행률, 멤버십 권한이 각각 독립된 영역을 차지하도록 하여 복잡한 다중 카드 구조를 없앴습니다.
- 반응형 적응 레이아웃: 진행 바가 행 전체 너비로 확장되어 소형 화면에서 잘리지 않으며, 대형 화면에서도 불필요한 여백을 줄였습니다.
- 정확한 상태 안내 문구: 일시 중지, 실패, 복구, 준비 완료 등 각 상태별로 독립된 문구를 제공합니다. 인덱스 삭제 시 확인 알림도 스위치 상태에 따라 다르게 표시되어 설명과 실제 동작 간의 불일치를 방지합니다.
🛠 저장소 핵심 안정성 개선
이번 달에는 데이터 저장 및 관리와 관련된 2건의 안정성 문제를 해결했습니다:
- 구버전 라이브러리 안전 인식: 구버전 라이브러리가 신버전에서 인식되지 않을 경우, 앱 실행 시 안전하고 가벼운 마이그레이션을 자동으로 시도합니다. 성공 시 로컬 폴더를 정상적으로 추가할 수 있으며, 실패하더라도 기존 라이브러리를 그대로 보존하여 데이터를 안전하게 보호합니다.
- 대형 라이브러리 증분 인덱스 누락 방지: 기존에는 인덱스 생성 후 새로 추가된 곡이 인덱스에서 누락되는 경우가 있었습니다. 이제 인덱스가 저장될 때 실시간으로 동기화 업데이트되며 앱 실행 시 무결성을 검증합니다. 불일치가 발견되면 자동으로 일반 목록으로 복귀한 뒤 인덱스를 재구축하여 새로 불러온 곡이 앨범 및 아티스트 페이지에 정상적으로 나타나도록 보장합니다.
📌 알려진 문제 및 향후 계획
현재 버전에서는 다음 문제들을 지속적으로 보완해 나가고 있습니다:
- 폴더블 iPhone의 일부 모션 효과, 팝업 회피 처리 및 화면 낭독기 읽기 순서를 지속적으로 개선 중이며, ‘동작 줄이기’ 설정 지원은 다음 업데이트에서 반영될 예정입니다.
- 네트워크 재시도 UI 안내를 지속적으로 다듬을 예정입니다. 현재 '연결 확인’을 연속해서 누를 경우 중복 요청이 발생할 수 있는 현상과 재시도 카운트다운 표시를 준비하고 있습니다.
- 아주 초기 버전의 라이브러리는 수동 복구가 필요할 수 있으나, 대부분의 기존 라이브러리는 앱 실행 시 자동으로 안전하게 마이그레이션됩니다.
앞으로도 폴더블 기기 최적화와 접근성 마무리를 진행하고, 재시도 안내 및 카운트다운 기능을 구현하며, 구버전 라이브러리의 자동 마이그레이션 적용 범위를 확대해 나가겠습니다.
