feat(blog): 블로그 앱 셸과 탐색 경험 개선 - #92
Conversation
글 공개/비공개 정책과 품질 리뷰 메타데이터를 추가했어요.\n피드, 사이트맵, 저장소 계층에서 비공개 글을 기본 제외하도록 정리했어요.\n읽기 시간 계산과 새 글 스캐폴드도 현재 정책에 맞게 보강했어요.
시리즈 글과 저점수 엔지니어링 글의 공개 범위를 재조정했어요.\n품질 리뷰 점수와 featured 기준을 메타데이터에 반영했어요.\n라이프 글은 기존 공개 전략을 유지하면서 탐색 구조만 정리했어요.
CTR 파일럿 포스팅을 포트폴리오 관점으로 다시 구성했어요.\n트레이드오프, 운영 비용, 학습 과정의 기준 변화가 드러나도록 본문을 정리했어요.\n같은 기준을 재사용할 수 있도록 블로그 품질 가이드도 추가했어요.
조회수 집계가 새로고침과 반복 요청으로 증가하는 문제를 줄이기 위해\n서버 지문 기반 dedupe 로직을 추가했어요.\n\nincrement_view RPC에 viewer fingerprint와 dedupe window 인자를 추가하고\nview_unique_visitors 테이블 기반으로 24시간 내 중복 증가를 차단했어요.\n헤더 식별 실패 시 fallback visitor cookie를 사용하도록 보완했고\n구버전 함수 시그니처 환경에서도 동작하도록 호환 경로를 유지했어요.\n\nDB 스키마 문서와 env 예시를 최신화하고 테스트를 보강했어요.
플랫폼 시스템 회고 글 제목의 IoT 표기를 바로잡았어요. 본문과 저장소 내 다른 기술 용어 표기와 일관되게 맞췄어요.
README와 docs 인덱스를 현재 저장소 구조에 맞게 정리했어요. 플랫폼 시스템 회고 글의 구조와 메타 설명을 기술 회고 기준에 맞춰 보강했어요. 빌드와 markdownlint로 문서 변경을 검증했어요.
origin/master 병합 과정에서 발생한 충돌을 정리했어요. 홈 레이아웃 변경과 콘텐츠 메타데이터를 함께 반영해 PR #90을 다시 병합 가능 상태로 맞췄어요.
앱 셸을 재구성해서 좌측 레일, 모바일 하단 네비게이션, 검색 인터랙션, 테마 전환 모션을 한 흐름으로 정리했어요. 포스트 리스트, 목차, 댓글, MDX 표현을 함께 다듬고 Home, Tech, Life, Resume 화면의 탐색 경험과 테스트를 보강했어요.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: da728a4cfb
ℹ️ 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".
| animate={{ opacity: 1 }} | ||
| exit={{ opacity: 0 }} | ||
| transition={{ duration: 0.16 }} | ||
| onAnimationComplete={() => setWashState(null)} |
There was a problem hiding this comment.
Keep theme wash mounted through phase animations
The wash overlay is cleared from state in the parent motion.div's onAnimationComplete, but that callback is tied to the parent opacity animation (initial/animate on the container), not the child phase layers. Because each phase layer runs longer (phaseDuration with staggered phaseDelay), the overlay is unmounted before those animations finish (or nearly immediately when parent values don't change), so theme toggles can show a truncated or invisible wash effect whenever motion mode is not off.
Useful? React with 👍 / 👎.
Summary
Testing