feat(web): 게스트/Soft Wall 게이트 단일화 + 포스트 열람 개방 + auth 폼 i18n (#850)#913
Merged
Conversation
3중 게이트(SoftWallSheet 뷰 하드블록 / route redirect / 클라 모달)를 LoginRequiredModal 단일 진입점으로 수렴한다 (#794 결정 1·2·4). - 열람 개방: compose.ts에서 익명 포스트 열람 하드블록(count>limit → x-soft-wall) 제거. posts/[id]는 SoftWallSheet·headers() 없이 공개 렌더. 게이트는 write-action(like/save/decode)의 LoginRequiredModal에서만. killswitch/미터링 infra(lib/softwall/helpers.ts)는 dormant로 보존. SoftWallSheet.tsx 삭제, 관련 테스트를 열람-개방 회귀 테스트로 교체. - 단일 진입점: LoginRequiredModal을 signup 우선 + login 토글로 승격, Auth 네임스페이스로 i18n(dismissible = continue-as-guest 유지). - sign-in flash 픽스: LibraryShell + 게스트 nav 자물쇠 모두 authStore isInitialized 가드 — 하이드레이션 전 로그인 유저가 signedOut/lock을 플래시하지 않게 한다(가드 전엔 optimistic 링크). - 게스트 nav 자물쇠: Library/Profile에 requiresAuth 표기, 게스트는 자물쇠 아이콘 + 클릭 시 소프트 게이트(하드 리다이렉트 대신 LoginRequiredModal). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
/login·/signup은 app/[locale]/ 밖이라 NextIntlClientProvider가 없어
useTranslations가 크래시했다. 라우트를 [locale]로 대이동하는 대신
AuthIntlProvider(NEXT_LOCALE 쿠키로 locale 해석 + messages 명시 로드)로
두 레이아웃을 래핑해 폼을 locale-aware로 만든다. 쿠키 없을 땐
RENDERED_LOCALE(앱이 실제 렌더하는 로케일, <html lang> 고정값)로 폴백해
쿠키리스 딥링크가 주변 앱과 어긋나지 않게 한다.
- LoginForm/SignupForm: 하드코딩 영문(Email/Password/Remember me 등) →
useTranslations("Auth"). 약관 동의·확인메일 안내는 t.rich.
- login/signup page: 에디토리얼 헤드라인/서브카피를 AuthHeroCopy 클라이언트
컴포넌트(t.rich)로 이관 — 서버 getTranslations 리스크 회피.
- AuthSplitLayout: subcopy prop을 ReactNode로 확장(클라 컴포넌트 수용).
- auth 화면에 continue-as-guest("둘러보기 계속") 어피던스 복원 (#794 결정 3).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Jul 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
게스트 브라우징 정책을 "열람 개방 + 액션 게이트"로 단일화한다. (map #789 / 결정 #794)
compose.ts에서 익명 포스트 열람 하드블록(x-soft-wall) 제거. 게이트는 write-action(like/save/decode/follow)에서만. killswitch 인프라(lib/softwall/helpers.ts)는 dormant 유지(dead code, 되살릴 수 있게 보존)./login·/signup동적 렌더 전환.AuthIntlProvider가cookies()(NEXT_LOCALE)를 읽음. 인증 페이지라 수용 가능.Changes
SoftWallSheet삭제 →LoginRequiredModal을 단일 진입점으로 승격(signup 우선 + Log in 토글 + dismissible "둘러보기 계속"), i18n(Auth.modal.*)LibraryShell에authStore.isInitialized가드requiresAuth, 게스트 클릭 시 소프트 게이트AuthIntlProvider로 non-[locale]라우트 provider 래핑, LoginForm/SignupFormuseTranslations("Auth")Deferred (honest)
AuthSplitLayout좌측 패널 HERO_BENEFITS·약관 푸터 영문 하드코딩 유지(공유 서버 레이아웃) — 후속Carve-out
Verify
🤖 Generated with Claude Code