[cherry-pick] 빌더 피드/QnA/레슨 QA 버그 수정 및 댓글 기능 추가#664
Conversation
- GNB 마이 클래스 링크 /my-page → /my-class 수정 - 완료 레슨 도장 핑크 활성화, blink 제거 - 완료-완료 커넥터 라인 핑크 실선, 레슨 order 정렬 - 스크린샷 5MB 초과 토스트 안내 추가 - S3 이미지 업로드 FormData → raw file body 수정 (무한로딩 해결) - 레슨/질문 상세 탭바 sticky 위치 수정 - 유용해요/나도궁금해요 배타적 토글 버그 수정 - 운영진 아닌 사용자 답변하기 floating 버튼 차단 - 마크다운 에디터 ctrl+v 단일 줄 패턴 삽입 시 줄바꿈 생성 버그 수정 - QnA 탭 필터 chip UI Figma 디자인 통일 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…999) gray-400(#a4a7ae)이 Figma 지정값 #999와 불일치. gray-450 토큰 추가 후 feed-tab, qna-tab 양쪽 적용. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… radius 수정 운영자 PICK 칩은 Figma 설계에 없어 제거. rounded-875(토큰 없음) → rounded-full로 수정. feed/qna 두 탭 모두 적용. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
OPERATOR_PICK probe 쿼리로 totalCount 확인 후 feeds가 있을 때만 칩 렌더링. 없으면 전체/내 피드만 표시. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
roleIds가 UseAuthReturn이 아닌 DecodedToken(data) 안에 있음. data?.roleIds로 접근하도록 수정. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…않던 버그 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
HTML 태그 없는 평문 content를 dangerouslySetInnerHTML로 렌더링 시 \n이 공백으로 처리되어 줄바꿈이 사라지던 문제 수정. isHtml 판별 후 평문은 whitespace-pre-wrap + React 텍스트 노드로 렌더링. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… 금지 룰 및 답변완료 아이콘 에셋 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… — pill border, 답변완료 그린 배지 + 아이콘 적용 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…일드카드 적용 및 QnA 배지 색상 토큰 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… 오류, 필터 상태 불일치 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…HTML biome-ignore 주석 제거 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…크롤 시에도 항상 고정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…w-y-auto로 뷰포트 초과 시 내부 스크롤 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…고정 동작 수정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
단일 레슨 mock drawer에서 isLastLesson=true가 되어 버튼이 '완주하고 축하 페이지로 가기'로 렌더링됨. 두 번째 레슨을 추가해 lesson 101이 마지막이 아니도록 수정. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…입 오류 수정 'NOT_STARTED'는 유효하지 않은 값 — 'LOCKED'로 교체 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…bleMarkdownSyntax/renderMarkdownToHtml 참조 해결 cherry-pick 충돌 해결 과정에서 이 파일을 생성하는 커밋이 누락되어 markdown-editor.tsx와 markdown-content-core.tsx의 import가 빌드 실패. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…mport 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (22)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
개요
빌더 피드 코드블록 렌더링 오류, QnA XSS 취약점, 레슨 사이드바 sticky 동작 불량 등 QA에서 발견된 버그 다수를 수정하고, 빌더 피드 댓글 대댓글 UI와 ⋮ 메뉴를 추가한다. 필터 칩 디자인을 Figma와 일치시키고, 운영자 PICK 칩 조건부 노출, R2 이미지 도메인 허용 등 프로덕션 안정성 개선도 포함한다.
원본 PR
fix/qaCherry-pick 대상 커밋
PR #662 (16커밋)
395a524— QA 버그 12종 일괄 수정 (GNB 링크, 레슨 스탬프, S3 FormData, 마크다운 붙여넣기 등)d3c935f— 필터 칩 inactive 색상 Figma 정확히 맞춤 (#999)4794030— 피드 필터 칩 Figma 정합 — 운영자 PICK 제거 및 radius 수정19b3fcf— 운영자 PICK 피드 존재 시에만 칩 조건부 노출4dda69a— useAuth roleIds 타입 오류 수정795e4ff— 돌아보기 제출 이미지/링크가 빌더 피드 상세에서 표시되지 않던 버그 수정cb892bf— 빌더 피드 댓글 대댓글 UI 및 ⋮ 메뉴 추가59b11ea— QnA 답변 평문 콘텐츠 줄바꿈 미적용 버그 수정40e6455— 빌더 피드 코드블록 렌더링 버그 수정 — TipTap HTML을 marked 없이 직접 sanitizea8cfd7d— 빌더 피드 상세 페이지 닉네임-뱃지 간격 적용9d7d891— 마지막 레슨 제출 CTA를 완주 축하 페이지 이동 버튼으로 변경027acda— lucide-react 아이콘 대체 금지 룰 및 답변완료 아이콘 에셋 추가d42935b— QnA 리스트 배지 Figma 정합 — pill border, 답변완료 그린 배지 + 아이콘 적용88ab194— R2 remotePatterns 와일드카드 적용 및 QnA 배지 색상 토큰 추가c33c248— QnA XSS sanitize 누락, 운영진 role 판별 오류, 필터 상태 불일치 수정5e00794— dangerouslySetInnerHTML biome-ignore 주석 제거PR #663 (7커밋)
64122c0— 레슨 상세 QnA 카드 독립 sticky — 피드 카드 스크롤 시에도 항상 고정9ec32b7— 로드맵 row key를 인덱스 대신 lessonId로 교체fbe02c4— 레슨 사이드바 두 카드 모두 sticky — overflow-y-auto로 뷰포트 초과 시 내부 스크롤b11e697— sticky 사이드바 overflow-y-auto 분리로 고정 동작 수정377e0ec— 레슨 페이지 우측 사이드바 및 탭 위치 고정60ba183— fix(e2e): 레슨 돌아보기 제출 버튼 텍스트 불일치 수정844816b— fix(e2e): LessonProgressStatus 타입 오류 수정fixup 커밋 (cherry-pick 의존성 해결)
8f1a2ae— markdown-rendering-utils 유틸 파일 추가 (cherry-pick 누락 파일 보완)5b3b2a7— markdown-editor에 hasRenderableMarkdownSyntax import 추가변경 파일
src/app/(landing)/class/[slug]/(learning)/feed/[id]/page.tsx— 댓글 대댓글 UI, ⋮ 메뉴, 신고 기능, artifact 표시src/app/(landing)/class/[slug]/(learning)/_components/feed-tab.tsx— 필터 칩 디자인 정합, 운영자 PICK 조건부 노출src/app/(landing)/class/[slug]/(learning)/_components/qna-tab.tsx— 필터 칩 디자인 정합, 배지 색상 토큰화src/app/(landing)/class/[slug]/(learning)/qa/[id]/page.tsx— QnA XSS sanitize, 평문 줄바꿈 수정src/app/(class-lesson)/class/[slug]/lesson/[id]/page.tsx— 사이드바 sticky, 탭 위치 고정src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-review-form.tsx— 마지막 레슨 CTA 추가src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-builder-feed-detail-modal.tsx— artifact 표시src/app/(class-lesson)/class/[slug]/lesson/[id]/_components/lesson-qna-detail-modal.tsx— 평문 줄바꿈 수정src/components/common/ui/editor/markdown-editor.tsx— 마크다운 붙여넣기 버그 수정src/components/common/ui/rich-text/markdown-content-core.tsx— TipTap HTML sanitize 직접 처리src/components/pages/class/roadmap-tab.tsx— row key 인덱스 → lessonIdsrc/components/pages/class/lesson-stamp.tsx— 완료 스탬프 활성화 수정src/app/global.css— gray-450, qna 배지 색상 토큰 추가next.config.ts— R2 remotePatterns 와일드카드src/utils/markdown-rendering-utils.ts— 신규 유틸 (cherry-pick 의존성)src/types/api/course.types.ts— artifactUrl, roleIds 타입 수정public/class/qna-answered-icon.svg— 답변완료 아이콘.claude/rules/no-lucide-icon-substitution.md— lucide-react 대체 금지 룰e2e/class/builder-feed.spec.ts,e2e/class/lesson-review.spec.ts— e2e 수정혼입 검증 결과
git diff main...fix/qa --stat결과 182개 파일 변경 — fix/qa 브랜치 전체 변경 포함 확인. 해당 PR #662, #663 커밋 23개만 선택적 cherry-pick. develop 전용 코드 혼입 없음.Test plan
<img onerror=alert(1)>) 무력화 확인🤖 Generated with Claude Code