Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedToo many files! This PR contains 158 files, which is 58 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (158)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f22d11da00
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| reconnectPendingRef.current = false; | ||
| if (config) { | ||
| clearStoredRoomAccessToken(config.slug); | ||
| onRoomAccessTokenChanged(null); |
There was a problem hiding this comment.
사용자가 나가기를 확인해 leave publish가 성공하면 여기서 부모의 토큰 상태를 즉시 null로 바꾸므로 RoomPlaybackScreen이 토큰 없음 화면으로 전환하면서 RoomLeaveConfirmDialog를 언마운트합니다. 이 다이얼로그의 cleanup은 홈으로 이동시키는 500ms 타이머를 취소하기 때문에, 실제 방 세션에서는 나가기가 서버에서 처리된 뒤에도 /room/{slug}의 오류 화면에 계속 머무르게 됩니다. 즉시 라우팅하거나, 라우팅이 완료될 때까지 이 상태 변경을 지연해야 합니다.
AGENTS.md reference: AGENTS.md:L9-L9
Useful? React with 👍 / 👎.
| initialThumbnailUrl={getRoomThumbnailSrc({ | ||
| thumbnailUrl: roomMeta.thumbnailUrl, | ||
| thumbnailUrls: roomMeta.thumbnailUrls, | ||
| })} |
There was a problem hiding this comment.
현재 곡 이미지를 편집 가능한 방 썸네일로 취급하지 마세요
현재 계약에서 RoomMeta.thumbnailUrl(s)는 업로드한 방 썸네일의 존재 여부가 아니라 현재 재생 곡 이미지를 나타냅니다. 따라서 곡이 재생 중인 방에서 이 값을 initialThumbnailUrl로 넘기면 편집 폼은 initialHasThumbnail을 참으로 간주하고, 방장이 기본 이미지를 선택해 저장할 때 실제 사용자 업로드가 없더라도 DELETE /api/v2/rooms/{slug}/thumbnail을 호출합니다. 별도의 커스텀 썸네일 URL 또는 존재 플래그를 사용하지 않으면 초기 선택과 삭제 의도를 신뢰할 수 없습니다.
AGENTS.md reference: AGENTS.md:L21-L21
Useful? React with 👍 / 👎.
| } catch (joinError) { | ||
| notify({ | ||
| dedupeKey: `room-join:${normalizeRoomSlug(result.slug)}`, | ||
| message: | ||
| joinError instanceof Error && joinError.message |
There was a problem hiding this comment.
생성 성공 후 입장 실패를 재생성 흐름으로 남기지 마세요
방 생성 POST는 성공했지만 이어지는 WebSocket join이 타임아웃되거나 일시적으로 실패하는 경우, 이 catch는 알림만 표시하고 생성된 result.slug를 보존하거나 해당 방으로 이동하지 않은 채 폼을 다시 활성화합니다. 사용자가 완료 버튼을 재시도하면 join이 아니라 createRoomMutation부터 다시 실행되어 이미 방장이 된 상태의 충돌만 받고, 방금 생성한 방으로 진입할 복구 경로가 사라집니다. 생성 결과를 보존해 join만 재시도하거나, 방 화면의 joining 상태가 복구를 담당하도록 생성된 경로로 이동해야 합니다.
AGENTS.md reference: AGENTS.md:L22-L23
Useful? React with 👍 / 👎.
변경 내용
현재 글자 수/19카운터를 추가하고 19자 저장 경계를 회귀 테스트로 고정했습니다.DELETE /api/v2/rooms/{slug}/thumbnail를 호출하고 관련 방 캐시를 갱신합니다.roomAccessToken으로 구분하고 토큰을 방별sessionStorage에 보관합니다.X-Room-Access-Token을 적용하고 평문 비밀번호 저장·헤더 계약을 제거했습니다.ROOM_INFO_UPDATED수신 시 전체 방 메타를 다시 조회하고방 정보가 변경되었어요토스트를 중복 없이 표시합니다.badge-awardedSSE의 nullabledescription을 파싱하고 새 칭호를 순차 표시하는 496×370 획득 모달을 적용했습니다.적용하기로 새 칭호를 즉시 대표 칭호로 설정하며, 성공·실패·pending·포커스 복원과 관련 캐시 갱신을 처리합니다.변경 이유
영향 범위
검증
npm run lintnpm run testnpm run build검증 결과 및 재현 방법:
npm run lint,npm run build,git diff --check통과pass, blocker 없음리뷰 포인트
password와 재접속 payload의accessToken이 상호 배타적인지ROOM_JOINED검증 뒤 토큰을 먼저 저장하고, 해당 토큰으로만 방 내부 REST와 토픽 구독을 시작하는지기능별 커밋
4839cfc— 설정 닉네임 19자 카운터 추가255dfdc— React Query 테스트 설정 공용화8f674a5— 방 재생 입장과 joined UI 책임 분리4da8343— 테스트 query context binding 정리6b57d01— 음악력 상태와 프로필 패널 책임 분리e483af6— 구조 최적화 경계 회귀 테스트 보강27a7b31,dbd3352— 설정·구조 최적화 QA와 전달 기록4d24a28— 방 썸네일 삭제와 생성·수정 선택 UI 통합b2f5ca2— 썸네일 QA와 전달 기록010d0c9— 방 세션 인증을 roomAccessToken 계약으로 전환0d70f97— roomAccessToken QA와 전달 상태 기록52725cf— roomAccessToken CI와 전달 완료 기록58f460a— 칭호 획득 모달과 대표 칭호 적용 개선f22d11d— 칭호 획득 모달 QA와 전달 기록위험 및 후속 작업
RoomMeta.thumbnailUrl(s)를 현재 곡 이미지로 설명한 8/5 문서와, 이를 기존 편집 썸네일로 사용하는 최신 수정 흐름 사이에 계약 문서 불일치가 있습니다. 별도 custom-thumbnail 판별 필드가 없으므로 이번 변경은 최신 확정 계약과 기존 8/11 이후 수정 흐름을 따릅니다.추적 정보
docs/exec-plans/active/2026-08-17-settings-counter-test-structure/docs/exec-plans/active/2026-08-17-room-thumbnail-delete/docs/exec-plans/active/2026-08-17-room-access-token/docs/exec-plans/active/2026-08-18-badge-award-modal/pass화면 변경