# 2026-06-30 클로드 디자인 리디자인 — 비주얼 레이어 9단위 반영 **세션**: sid 20260630-160000 **브랜치**: feat/v2 **커밋**: `0390da6` ~ `360078a` (단위별 8개) + graph 메타 `8c86e8c` ## 요약 클로드 디자인 리디자인 산출물을 "비주얼 레이어" 방식으로 전 페이지에 반영했다. 파일 통째 교체 없이 마크업·클래스만 이식하고 모델명·CSRF·AJAX·include·자체 head는 기존값을 전부 보존했다. --- ## 변경 범위 | 단위 | 내용 | |---|---| | 1 — CSS 신설 | `src/main/webapp/css/bibimbap.css` 신설 (다크 오버라이드 포함). `WEB-INF/views/theme-init.jsp` 단일 link 태그로 23개 전 페이지 공통 적용. | | 2 — 빈 상태 fragment | `fragments/posts-empty.jspf`, `fragments/recruit-empty.jspf` 신설. `posts-list.jsp`, `recruit-list.jsp` 에서 include. | | 3 — 홈 | `index.jsp` — 히어로 섹션·정렬 칩·그리드 레이아웃 클래스 이식. | | 4 — 인증 | `login.jsp` — pw-toggle·에러 슬롯. `signup.jsp` — 강도 막대·일치 표시. | | 5 — 약관 | `terms.jsp` — sticky TOC 구조 이식. | | 6 — 프로필 | `profile.jsp` — `.profile-head`·`.game-row` 클래스 이식. | | 7 — 게임 상세 | `game-detail.jsp` — 이미 동일 토큰 구현 확인 → **no-op**. | | 8 — 에러 | `errer.jsp` — empty-state 외형(SVG/아이콘) 이식. 기존 scriptlet `statusCode` 읽기 유지. | | 9 — 모집 작성 | `recruit-form.jsp` — 필수 표시·글자수 카운터·sticky 미리보기 이식. | --- ## 하드 제약 준수 | 제약 | 처리 | |---|---| | 모델명 보존 | 디자인 EL(`${errorData}` 등) 미채택. 기존 `${game.title}`, `${ctx}` 등 유지. | | CSRF 이중방어 | `_csrf` hidden + `BibimbapCsrf.headers` AJAX 헤더 — 기존 코드 무수정 보존. | | include 경로 | `/WEB-INF/views/header.jsp` 등 기존 include 경로 전부 유지. | | CDN 0 | 외부 CDN 참조 추가 없음. | | 미존재 라우트 비노출 | `/games/{id}/visibility`, `/profile/edit`, `/password/reset` UI 요소 미채택. | | game-detail 보존 | 이미 동일 토큰 구현 상태 확인 후 no-op 처리. | --- ## 검증 결과 | 레벨 | 결과 | |---|---| | L1 — WAR 빌드 | `./mvnw -q -DskipTests package` exit 0 PASS | | L1 — CSS WAR 포함 | `target/.../css/bibimbap.css` 존재 확인 PASS | | L2 — 스모크 | 로컬 dev 재기동 후 `/`, `/login`, `/signup`, `/terms`, `/posts`, `/recruit`, `/error` 전부 HTTP 200 | | L2 — 결함 수정 | `errer.jsp` stray `javax` JSTL taglib → `/error` 500 → taglib 제거 → 200 (fix 커밋 `360078a`) | | L2 — 마커 검증 | home css link+hero, login pw-toggle, signup pw-meter, terms toc, error empty-state 서빙 확인 | --- ## needs_user_verification (브라우저 세션 필요) - 로그인 인터랙티브 제출: AJAX(`_csrf` + `BibimbapCsrf.headers`) 성공·리다이렉트. 테스트 계정 `admin@bibimbap.local`. - 회원가입 제출 → modal → `/login` 리다이렉트. - 프로필: 닉네임·아바타 변경 AJAX (로그인 세션 필요). - 게임 상세: WebGL 플레이·6축 리뷰·댓글 CRUD (no-op이나 회귀 확인 권장). - 모집 작성: `/recruit/new` 제출 성공 + 라이브 미리보기. - 다크모드 토글 시 body ↔ header/footer 색 정합 육안 확인. --- ## 관련 문서 - [docs/changes/2026-06-29-b2-b4-fe-hardening.md](./2026-06-29-b2-b4-fe-hardening.md) — FE 다크모드 대비·세션 하드닝 (선행 작업)