Skip to content

refactor(architecture): RSC 경계 축소, 테마 로직 통합, 공유·검색·진행바 안정성 개선 - #85

Merged
CoBool merged 1 commit into
mainfrom
claude/nextjs-architecture-review-5fd45c
Aug 16, 2026
Merged

refactor(architecture): RSC 경계 축소, 테마 로직 통합, 공유·검색·진행바 안정성 개선#85
CoBool merged 1 commit into
mainfrom
claude/nextjs-architecture-review-5fd45c

Conversation

@CoBool

@CoBool CoBool commented Aug 16, 2026

Copy link
Copy Markdown
Owner

개요

전체 아키텍처 리뷰에서 도출된 우선순위 6건을 적용합니다. 구조적 개선 위주이며 화면 마크업·동작은 유지됩니다.

변경 사항

  1. ProfileSidebar RSC/RCC 분리 — 전역 셸의 통짜 클라이언트 컴포넌트를 서버 컴포넌트로 전환, 모바일 접기 토글(sidebar-mobile-disclosure)과 검색 폼(sidebar-search-form)만 클라이언트 섬으로 분리. 모든 페이지의 하이드레이션 범위 축소.
  2. 테마 로직 통합 — 드롭다운·giscus·mermaid 렌더러·부트스트랩 스크립트에 4중 구현돼 있던 테마 판별/적용을 features/theme/theme-controller로 단일화. 부트스트랩 스크립트의 유효 모드 목록도 THEME_MODES에서 직렬화해 드리프트 차단.
  3. PostShare 경계 축소 + 안전성 — X·Threads 링크 서버 렌더화, 복사 버튼의 클립보드 실패(non-secure context·권한 거부) 처리 추가, Kakao SDK <script>에 SRI(integrity + crossorigin) 적용(해시는 CDN 파일에서 직접 계산해 검증), size-9 아이콘 버튼 6중 복제를 icon-action cva로 통합.
  4. ReadingProgressBarwidth 애니메이션을 rAF 스로틀 + transform: scaleX()로 전환해 컴포지터 전용 경로로 변경.
  5. 검색 발췌 엔티티 디코딩 — numeric entity(10진·16진)와 &apos;/&nbsp; 지원, 범위 밖 코드포인트는 원문 유지.
  6. RSS/정리pubDate를 발행 게이트와 동일한 KST 자정 기준으로 정합, 미사용 export(getLatestPostsFromDirectory, getThemeClassName) 제거.

검증

  • pnpm typecheck / pnpm lint 통과
  • pnpm test 30파일 215개 통과 (theme-controller 4건, 검색 엔티티 1건 신규)
  • pnpm build 정적 export + pagefind 색인 성공
  • 로컬 dev/빌드 서빙으로 UI 정상 동작 확인 완료

🤖 Generated with Claude Code

- ProfileSidebar를 서버 컴포넌트로 전환하고 모바일 토글·검색 폼만 클라이언트 섬으로 분리
- 테마 판별/적용 4중 구현을 features/theme/theme-controller로 통합
- PostShare 서버화, 클립보드 실패 처리 추가, Kakao SDK에 SRI 적용, 아이콘 버튼 cva 통합
- ReadingProgressBar를 rAF 스로틀 + scaleX 트랜스폼으로 전환
- 검색 발췌 numeric entity 디코딩 보강
- RSS pubDate를 KST 기준으로 정합, 미사용 export 정리

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@CoBool
CoBool merged commit b03a783 into main Aug 16, 2026
1 check passed
@CoBool
CoBool deleted the claude/nextjs-architecture-review-5fd45c branch August 16, 2026 10:20
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