Skip to content

fix: 블로그 포스트 카드 네비게이션 UX 개선 - #95

Merged
scs0209 merged 4 commits into
mainfrom
fix/blog-post-navigation-ux
Aug 9, 2026
Merged

fix: 블로그 포스트 카드 네비게이션 UX 개선#95
scs0209 merged 4 commits into
mainfrom
fix/blog-post-navigation-ux

Conversation

@scs0209

@scs0209 scs0209 commented Aug 9, 2026

Copy link
Copy Markdown
Owner

📝 작업 내용

이번 PR에서는 다음과 같은 변경사항이 있습니다.

🔄 주요 변경사항

변경된 파일들을 검토하여 세부사항을 확인해주세요.

🧪 테스트 방법

변경사항에 대한 적절한 테스트를 수행해주세요.


🤖 AI 자동 생성 정보

생성 시간: 2026. 8. 9. 오후 1:44:22
분석된 파일: 0개 (코드: 0, 설정: 0, 문서: 0)
AI 모델: gemini-2.5-pro
변경사항 요약: 코드 변경사항 업데이트

⚠️ 이 PR 내용은 AI가 자동으로 생성했습니다.
내용을 검토하고 필요에 따라 수정해주세요.

scs0209 and others added 4 commits August 9, 2026 13:40
- blog/loading.tsx 전체 화면 fallback 삭제
- Sidebar/Header를 정적 import로 전환해 네비게이션 깜빡임 완화

Co-authored-by: Cursor <cursoragent@cursor.com>
- 사이드바는 유지한 채 본문만 즉시 전환되도록 loading.tsx 배치
- 동적 라우트 프리페치 시 즉시 전환 UI 제공

Co-authored-by: Cursor <cursoragent@cursor.com>
- router.push/<a> 대신 Link prefetch 사용
- 클릭 즉시 스피너·opacity로 이동 중 피드백 표시

Co-authored-by: Cursor <cursoragent@cursor.com>
- React cache로 metadata와 page의 동일 slug fetch를 공유

Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercel Bot commented Aug 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
3d-blog Error Error Aug 9, 2026 4:43am

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

🤖 Hi @scs0209, I've received your request, and I'm working on it now! You can track my progress in the logs for more details.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@scs0209, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 45 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3308f6f4-fa5b-4d7e-8818-fadabf7fdd4f

📥 Commits

Reviewing files that changed from the base of the PR and between 3dccfa2 and f7b2d7e.

📒 Files selected for processing (6)
  • app/(public)/blog/(posts)/category/[slug]/post/[postSlug]/loading.tsx
  • app/(public)/blog/(posts)/layout.tsx
  • app/(public)/blog/loading.tsx
  • src/features/blog/ui/PostListCard/PostListCard.tsx
  • src/features/post/api/post-api.ts
  • src/widgets/post/ui/RecentPosts.tsx

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

🤖 AI PR 자동 작성 완료

업데이트 내용:

  • ⏭️ 제목 유지 (기존 제목 보존)
  • ✅ 본문 무조건 자동 생성 및 업데이트

분석 결과:

  • 📁 총 변경 파일: 0개
  • 💻 코드 파일: 0개
  • ⚙️ 설정 파일: 0개
  • 📚 문서 파일: 0개

핵심 변경사항:
코드 변경사항 업데이트

💡 참고: PR 제목은 조건부, 본문은 항상 자동으로 생성 및 업데이트됩니다. 필요에 따라 수정해주세요.


Generated by AI PR Auto Writer • 2026. 8. 9. 오후 1:44:23

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

🤖 AI 코드 리뷰 보고서 📝

📊 리뷰 개요 상세 정보
최고 위험도 낮음
처리된 파일 6/6개 (100%)
리뷰 모드 혼합 모드 (대용량 파일 간략화)
코드 예시 품질 📝 D (기본) (0/60점)
처리 시간 1초
리뷰 시간 2026. 8. 9. 오후 1:44:24
AI 모델 gemini-2.5-pro

💡 향상된 기능: 이 리뷰에는 실제 코드 개선 예시가 포함되어 있습니다!
📝 Before/After 비교와 구체적인 개선 방법을 확인해보세요.


📋 상세 리뷰 결과

=== src/features/blog/ui/PostListCard/PostListCard.tsx 리뷰 ===

⚠️ 리뷰 생성 실패: {"error":{"code":429,"message":"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\nPlease retry in 36.146105356s.","status":"RESOURCE_EXHAUSTED","details":[{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerMinute-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerDayPerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerDay-FreeTier","quotaDimensions":{"model":"gemini-2.5-pro","location":"global"}}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"36s"}]}}


=== src/widgets/post/ui/RecentPosts.tsx 리뷰 ===

⚠️ 리뷰 생성 실패: {"error":{"code":429,"message":"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\nPlease retry in 36.020536931s.","status":"RESOURCE_EXHAUSTED","details":[{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerMinute-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerDayPerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerDay-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"36s"}]}}


=== app/(public)/blog/(posts)/category/[slug]/post/[postSlug]/loading.tsx 리뷰 ===

⚠️ 리뷰 생성 실패: {"error":{"code":429,"message":"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\nPlease retry in 35.907392763s.","status":"RESOURCE_EXHAUSTED","details":[{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerDay-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerDayPerProjectPerModel-FreeTier","quotaDimensions":{"model":"gemini-2.5-pro","location":"global"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerMinute-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"35s"}]}}


=== src/features/post/api/post-api.ts 리뷰 ===

⚠️ 리뷰 생성 실패: {"error":{"code":429,"message":"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\nPlease retry in 35.796734752s.","status":"RESOURCE_EXHAUSTED","details":[{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerDay-FreeTier","quotaDimensions":{"model":"gemini-2.5-pro","location":"global"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerDayPerProjectPerModel-FreeTier","quotaDimensions":{"model":"gemini-2.5-pro","location":"global"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerMinute-FreeTier","quotaDimensions":{"model":"gemini-2.5-pro","location":"global"}}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"35s"}]}}


=== app/(public)/blog/(posts)/layout.tsx 리뷰 ===

⚠️ 리뷰 생성 실패: {"error":{"code":429,"message":"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\nPlease retry in 35.695901211s.","status":"RESOURCE_EXHAUSTED","details":[{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerDayPerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerMinute-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerDay-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"35s"}]}}


=== app/(public)/blog/loading.tsx 리뷰 ===

⚠️ 리뷰 생성 실패: {"error":{"code":429,"message":"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.5-pro\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.5-pro\nPlease retry in 35.597634795s.","status":"RESOURCE_EXHAUSTED","details":[{"@type":"type.googleapis.com/google.rpc.Help","links":[{"description":"Learn more about Gemini API quotas","url":"https://ai.google.dev/gemini-api/docs/rate-limits"}]},{"@type":"type.googleapis.com/google.rpc.QuotaFailure","violations":[{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerMinute-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerMinutePerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_requests","quotaId":"GenerateRequestsPerDayPerProjectPerModel-FreeTier","quotaDimensions":{"location":"global","model":"gemini-2.5-pro"}},{"quotaMetric":"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count","quotaId":"GenerateContentInputTokensPerModelPerDay-FreeTier","quotaDimensions":{"model":"gemini-2.5-pro","location":"global"}}]},{"@type":"type.googleapis.com/google.rpc.RetryInfo","retryDelay":"35s"}]}}



📊 처리 정보

처리 전략:

  • 📁 총 파일 수에 따른 동적 모드 선택
  • 🎯 변경량과 파일 크기 기반 우선순위 설정
  • 🔤 파일별 언어 자동 감지 및 맞춤형 프롬프트
  • ⏱️ 파일별 적응형 타임아웃 (상세: 120초, 간략: 90초)
  • 🔄 실시간 시간 관리 및 진행률 모니터링
  • 📝 코드 개선 예시 자동 생성

모드별 특징:

  • 전체 상세 (≤5파일): 모든 파일 상세 분석 + 코드 예시
  • 혼합 모드 (≤15파일): 대용량 파일 간략화 + 핵심 코드 예시
  • 우선순위 (>15파일): 상위 15개 파일만 처리

코드 예시 품질 평가:

  • Before/After 비교: ❌
  • 개선 설명 포함: ❌
  • 언어별 맞춤형: ❌
  • 총 품질 점수: 0/60점 (D (기본))
📖 리뷰 가이드라인

위험도 기준:

  • 🚨 긴급: 보안 취약점, 심각한 버그, 프로덕션 장애 가능성
  • ⚠️ 높음: 성능 이슈, 데이터 손실 위험, 중요 로직 오류
  • 보통: 코드 품질 이슈, 가독성 문제, 경미한 버그
  • 낮음: 스타일 이슈, 최적화 제안, 베스트 프랙티스

검토 항목:

  • ✅ 코드 품질 및 가독성
  • 🔒 보안 및 안정성 검사
  • ⚡ 성능 영향 분석
  • 🛠️ 베스트 프랙티스 준수
  • 💡 개선 제안사항
  • 📝 실제 코드 개선 예시 제공

⚠️ 주의사항: 이는 AI 자동 리뷰입니다. 최종 코드 검토는 반드시 사람이 수행해주세요.


Generated by GitHub Actions • 2026. 8. 9. 오후 1:44:24 • 6/6 files processed in 1s

@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

🤖 I'm sorry @scs0209, but I was unable to process your request. Please see the logs for more details.

@scs0209
scs0209 merged commit 3026ed2 into main Aug 9, 2026
9 of 11 checks passed
@scs0209
scs0209 deleted the fix/blog-post-navigation-ux branch August 9, 2026 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant