Commit Graph

146 Commits

Author SHA1 Message Date
8f64637b6f refactor(quick-controls): 사운드 역할 분리와 패널 레이아웃·오버레이 개선 2026-03-04 14:55:14 +09:00
5c17bcf250 style(control-center): Quick Controls 재질과 모션 규칙 통일 2026-03-04 14:44:45 +09:00
3cddd3c1f4 refactor(control-center): Quick Controls 재디자인 및 플랜/잠금 결제 동선 정리 2026-03-04 14:36:38 +09:00
60cd093308 chore(cleanup): 미사용 코드 정리 및 레거시 파일 삭제 2026-03-03 19:41:31 +09:00
be16153bef fix(space-ui): /space 포커스 앵커 잘림과 스크롤 문제 수정 2026-03-03 17:50:49 +09:00
ef9cc63cc5 style(space): 리추얼 진입 UX와 포커스 전환 흐름을 고급화
맥락:
- /space 진입 경험이 설정 패널처럼 보여 몰입형 라운지 톤이 약했습니다.
- 목표 입력 후 시작 전환 동선을 더 빠르고 일관되게 만들 필요가 있었습니다.

변경사항:
- 도크 아이콘을 이모지에서 단일 라인 SVG 세트로 통일해 시각 언어 일관성을 맞췄습니다.
- Setup Drawer 밀도를 낮추고(타이포/테두리/칩 크기) 3-step 리추얼 흐름을 더 간결하게 정리했습니다.
- 목표 입력 필드 자동 포커스를 추가해 진입 즉시 타이핑이 가능하도록 했습니다.
- 시작 버튼을 form submit으로 연결해 Enter 입력과 버튼 클릭이 동일하게 동작하도록 변경했습니다.
- SpaceSideSheet에 300ms 닫힘 전환(오버레이/시트 opacity+translate) 애니메이션을 적용했습니다.
- Focus 진입 토스트 카피를 목표 중심 문구로 바꾸고 Setup 선택지를 최소 개수로 제한했습니다.
- 배경에 미세 stage-pan/light-drift 키프레임을 추가해 정적인 평면감을 줄였습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: /space에서 목표 입력 후 10초 내 Focus 전환 가능한 리추얼 흐름이 정리되었습니다.
세션-다음: 실제 브라우저에서 애니메이션 강도와 드로어 밀도 체감 QA를 진행합니다.
세션-리스크: 저사양 환경에서 배경 미세 모션이 과하게 느껴질 수 있어 추후 reduce-motion 강화를 검토할 수 있습니다.
2026-03-03 14:27:14 +09:00
c6082a09d7 style(space-setup): 리추얼 톤의 드로어 카피와 입력 흐름으로 정리
맥락:
- /space Setup Drawer가 설정 패널처럼 보여 프리미엄 라운지 톤이 약했습니다.
- 첫 진입에서 사용자가 설명보다 리추얼 흐름으로 행동하도록 시각 계층을 조정할 필요가 있었습니다.

변경사항:
- Setup Drawer 헤더 카피를 감성 톤으로 교체하고 섹션 레이블을 자연어 중심으로 정리했습니다.
- Space 썸네일 카드에 텍스트 전용 하단 그라데이션을 적용하고 선택 테두리/글로우를 은은하게 낮췄습니다.
- Goal 입력 라벨을 한 조각 중심 카피로 변경하고 보조 힌트를 추가했습니다.
- Goal 추천 칩을 기본 4개 + 더보기 토글로 바꿔 부담을 줄였습니다.
- Sound 프리셋을 무거운 버튼형에서 가벼운 pill 칩형으로 정리했습니다.
- Goal 미입력 시 시작 버튼 상단에 상태 안내 문구를 추가했습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: Setup Drawer가 설정 패널보다 입장 의식 흐름에 맞는 톤으로 정리되었습니다.
세션-다음: 실제 화면 확인 후 타이포/간격 미세 조정 여부를 판단합니다.
세션-리스크: 더보기 토글 상태는 현재 세션 동안만 유지됩니다.
2026-03-02 18:09:20 +09:00
dade71dd4c fix(sound-preset): 믹서 토글 중첩 버튼 구조를 제거
맥락:
- 사운드 패널에서 button 내부에 Chip(button)이 중첩되어 hydration 에러가 발생했습니다.

변경사항:
- 믹서 토글 버튼 내부의 Chip 컴포넌트를 정적 span 배지로 교체했습니다.
- button > button 중첩 DOM을 제거해 HTML 제약을 준수하도록 수정했습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: /space 사운드 시트의 hydration 오류가 해결되었습니다.
세션-다음: Setup Drawer 프리미엄 톤 UI 조정 반영분을 별도 커밋합니다.
세션-리스크: 없음.
2026-03-02 18:08:14 +09:00
78a65fa15b style(space): 스테이지 중심 첫 인상과 Setup/Focus 톤을 정리
맥락:
- /space 첫 화면이 그라데이션 안내 화면처럼 보이며 공간 서비스의 무대감이 약했습니다.
- Setup 안내 카드/상단 크롬/도크 존재감이 커서 몰입형 인상(Portal/LifeAt 톤)을 해치고 있었습니다.

변경사항:
- 배경을 실제 공간 프리뷰 이미지 우선 렌더로 전환하고, 실패 시 그라데이션 fallback만 남기도록 조정했습니다.
- 배경 오버레이를 과한 비네팅 대신 단일 규칙(얕은 읽기용 필터 + 고정 그레인)으로 정리했습니다.
- Setup 상태의 중앙 안내 카드를 제거하고, 진입 시 Setup Drawer 자동 오픈 흐름만 남겼습니다.
- Setup Drawer 헤더 안내 문구를 1줄로 축약하고 섹션을 3단(Space/Goal/Sound) 번호 체계로 고정했습니다.
- Setup 상태에서는 Drawer 닫기를 막아 설명 박스 없이도 자연스러운 입력 흐름을 유지했습니다.
- 상단 크롬을 최소화하고 Focus 상태의 Setup 열기 버튼을 약한 보조 액션으로 낮췄습니다.
- 오른쪽 도크 레일의 폭/간격/아이콘 박스를 정돈하고 Focus 기본 opacity를 낮춰 몰입 방해를 줄였습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: /space 첫 진입이 장면+드로어 중심으로 정리되어 설명 없이도 시작 흐름이 읽힙니다.
세션-다음: 필요 시 Setup Drawer 내부 타이포 스케일과 칩 밀도를 추가 미세 조정합니다.
세션-리스크: 외부 이미지 소스 품질 편차에 따라 장면 밝기 체감이 달라질 수 있습니다.
2026-03-02 15:12:03 +09:00
564e53fa8c chore(routes): 진입 경로를 /space로 통일하고 /app를 리다이렉트
맥락:
- 단일 워크스페이스 전환 이후에도 레거시 진입 경로가 남아 있으면 사용자 흐름이 분산됩니다.

변경사항:
- /app 페이지를 허브 렌더링 대신 /space 리다이렉트로 전환했습니다.
- landing(/)의 주요 시작 CTA를 /space로 연결되도록 조정했습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: 사용자의 실제 진입 흐름이 /space 중심으로 정리되었습니다.
세션-다음: 필요 시 불필요한 허브 관련 위젯/문서를 정리합니다.
세션-리스크: 로그인 전용 링크는 의도적으로 유지되어 제품 정책에 따라 추가 정리가 필요할 수 있습니다.
2026-03-02 12:50:42 +09:00
2718997735 refactor(space): 단일 워크스페이스 Setup→Focus 전환 구조 도입
맥락:
- 허브를 경유하는 흐름 대신 /space 한 화면에서 설정과 몰입을 이어서 처리할 필요가 있었습니다.
- View 로직 분리와 파일 분할 기준을 지키면서 도크/시트 패턴을 통합해야 했습니다.

변경사항:
- /space를 Setup(기본)과 Focus(시작 후) 2상태로 운영하는 space-workspace 위젯을 추가했습니다.
- Setup Drawer를 추가해 Space 선택, Goal(필수), Sound(선택) 섹션과 하단 고정 CTA를 구성했습니다.
- Goal 입력이 비어있으면 시작하기 버튼이 비활성화되도록 UI 검증을 반영했습니다.
- Focus 상태에서 하단 HUD만 유지하고 우측 Tools Dock(🎧/📝/📨/📊/⚙) + 우측 시트 패턴을 적용했습니다.
- Notes(쓰기)와 Inbox(읽기) 패널을 분리하고 더미 토스트 동작을 연결했습니다.
- FSD 분리를 위해 features(space-select/session-goal/inbox)와 widgets(space-workspace/space-setup-drawer/space-focus-hud/space-sheet-shell)를 추가했습니다.
- 기존 space-shell은 신규 워크스페이스로 연결되는 얇은 래퍼로 정리했습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: /space 단일 워크스페이스에서 Setup→Focus 전환이 동작합니다.
세션-다음: 진입 경로를 /space로 통일하고 레거시 /app 라우트를 정리합니다.
세션-리스크: useSearchParams 기반 초기값은 클라이언트 최초 렌더 기준으로만 반영됩니다.
2026-03-02 12:49:47 +09:00
a2bebb3485 feat(app-hub): 허브 도구 레일과 입장 동선을 정리
맥락:\n- 상단 헤더 요소가 많아 허브의 핵심 흐름(공간 선택 → 목표 입력 → 입장)이 분산되었습니다.\n- 메모/통계/설정 진입을 상단이 아닌 보조 동선으로 옮겨 감성 톤을 유지할 필요가 있었습니다.\n\n변경사항:\n- 우측 아이콘 레일과 우측 드로어를 추가해 Inbox/Stats/Settings를 동일 패턴으로 제공했습니다.\n- TopBar에서 메모 버튼을 제거하고, 멤버십/PRO 동선은 ProfileMenu 드롭다운으로 정리했습니다.\n- Selected Space 박스를 슬림화하고 설명을 1줄로 제한해 시선 분산을 줄였습니다.\n- 추천 공간 카드에 텍스트 가독성 오버레이와 선택 표시(은은한 테두리/체크)를 적용했습니다.\n- Quick Entry에서 커스텀 CTA 무게를 낮추고 전체 톤을 가볍게 조정했습니다.\n- docs/work.template.md를 추가하고 docs/work.md의 현재 작업 지시를 갱신했습니다.\n\n검증:\n- npm run build\n- npx tsc --noEmit\n\n세션-상태: /app 허브가 상단 과밀 없이 레일+드로어 보조 동선으로 정리되었습니다.\n세션-다음: 드로어 패널의 실제 데이터 연결 시 도메인 상태와 연동을 진행합니다.\n세션-리스크: 드로어 포커스 트랩/키보드 동선은 추가 접근성 점검이 필요합니다.
2026-03-02 12:17:35 +09:00
6dfa4677d9 feat(app-hub): 스테이지 카드 칩 제거와 추천 공간 캐러셀 적용
맥락:
- 허브 스테이지 내부에 메모/전체공간 칩이 동시에 노출되어 시선이 분산되고 조작 밀도가 높았습니다.
- 추천 공간은 단순 스크롤보다 회전 가능한 캐러셀 인터랙션이 필요했습니다.

변경사항:
- 오늘의 공간 카드 헤더에서 메모 칩과 전체공간 칩을 제거했습니다.
- 추천 공간 섹션에 이전/다음 컨트롤을 추가해 캐러셀 회전이 가능하도록 변경했습니다.
- 전체 공간 진입은 칩 대신 텍스트 링크로 정리했습니다.
- 메모 진입 컴포넌트는 스테이지 카드 밖(하단)으로 이동해 카드 내부 밀도를 낮췄습니다.
- 스테이지 오버레이 구성을 유지하기 위해 관련 위젯 조합을 함께 정리했습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: 스테이지 카드 내부 칩 제거 및 추천 공간 캐러셀 반영 완료
세션-다음: 캐러셀 전환 모션(페이드/슬라이드) 미세 조정
세션-리스크: 추천 공간 수가 1개 이하일 때 회전 UI 효용이 낮아질 수 있음
2026-03-02 11:12:08 +09:00
47e80e59d2 feat(app-hub): 씬 중심 허브 화면으로 전면 리빌드
맥락:
- /app 첫 화면의 정보량이 많아 LifeAt/Portal 같은 몰입형 경험과 거리가 있었습니다.
- Start, 공간 선택, 메모 진입을 점진 노출 구조로 재정렬할 필요가 있었습니다.

변경사항:
- AppHub를 데스크톱 2열(컨트롤/씬) 구조와 모바일 스택 구조로 재편했습니다.
- Start CTA를 컴팩트 위계로 정리하고 커스텀 액션을 2순위 텍스트형으로 유지했습니다.
- Room 영역을 선택 Hero 1개 + 추천 썸네일 스트립 + 더보기 시트 구조로 전면 변경했습니다.
- 최근 생각은 단일 진입점 + 인박스 시트로 통합하고 localStorage 기반 thought inbox를 추가했습니다.
- /space 종료 동선에 세션 요약 시트(최근 메모 3개)를 연결해 허브 복귀 흐름을 정리했습니다.
- AppHub 기본 비주얼 모드를 cinematic으로 고정하고 배경 오버레이를 가독성 중심으로 재조정했습니다.

검증:
- npx tsc --noEmit
- npm run build

세션-상태: 씬 중심 허브 리빌드와 메모/시트 기반 점진 노출 구조 반영 완료
세션-다음: 실제 사용자 테스트 후 카드/텍스트 밀도 미세 조정
세션-리스크: 실디바이스 대비(특히 저사양 모바일)에서 배경/블러 렌더링 비용 확인 필요
2026-03-01 20:06:57 +09:00
85488f542e style(profile): 멤버십 배지를 Quiet Premium 톤으로 2차 고급화
맥락:
- 프로필 왼쪽 등급 칩에 고급스러운 대우감이 더 필요해 재질감/여백/위계를 추가 보정했다.

변경사항:
- MembershipTierBadge의 높이(h-9), 최소폭, 자간을 조정해 배지가 독립된 프리미엄 토큰처럼 보이도록 정렬했다.
- PRO는 모바일에서 PRO, 데스크톱에서 PRO MEMBER를 표시하도록 분리해 작은 화면 밀집을 줄였다.
- 등급별 표면을 샴페인/뉴트럴/틸 계열 저채도 그라데이션과 미세 하이라이트로 조정해 차분한 프리미엄 톤을 강화했다.
- AppTopBar 우측 그룹 간격을 gap-3으로 넓혀 배지와 프로필 트리거 간 시각 충돌을 완화했다.
- docs/session_brief.md, docs/90_current_state.md에 변경사항과 리스크를 갱신했다.

검증:
- npx tsc --noEmit

세션-상태: /app 헤더의 멤버십 배지를 조용한 프리미엄 위계로 고도화했다.
세션-다음: RoomSheet 인원수 기반 UI의 큐레이션형 치환 범위를 확정해야 한다.
세션-리스크: 등급 칩 최소폭 증가로 초소형 화면에서 헤더 가로 여유가 줄어들 수 있다.
2026-03-01 12:39:27 +09:00
6069457b4e style(profile): 멤버십 등급 칩을 저자극 프리미엄 톤으로 개선
맥락:
- 프로필 왼쪽 등급 칩의 글자가 작아 위계가 약했고, 유료 멤버 대우가 직관적으로 전달되지 않았다.

변경사항:
- MembershipTierBadge의 타이포를 text-xs 이상으로 상향하고 칩 높이/패딩을 키워 가독성을 개선했다.
- PRO는 PRO MEMBER 라벨과 조용한 그라데이션/내부 하이라이트/부드러운 그림자를 적용해 프리미엄 톤을 강화했다.
- NORMAL/TEAM도 등급별 표면 톤과 점 마커를 분리해 차분한 위계를 유지했다.
- docs/session_brief.md, docs/90_current_state.md에 이번 변경 내역과 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: 멤버십 배지의 크기와 재질감을 상향해 대우받는 인상을 강화했다.
세션-다음: RoomSheet 인원수 기반 UI의 큐레이션형 치환 범위를 확정해야 한다.
세션-리스크: PRO MEMBER 라벨이 작은 폭에서 프로필과 밀집해 보일 수 있어 실제 기기 간격 점검이 필요하다.
2026-03-01 11:32:03 +09:00
a3ecb7b6c2 style(app-hub): 헤더 톤과 프로필 등급 배지 배치를 정리
맥락:
- /app 헤더가 시작 카드 톤과 달라 시각 흐름이 끊기고, 멤버십 등급이 프로필 트리거 내부에 있어 위계가 어색했다.

변경사항:
- AppTopBar를 Start Ritual 카드와 같은 라이트 톤(bg-white/78, text-brand-dark)으로 맞췄다.
- 멤버십 등급을 독립 뷰로 분리하기 위해 entities/user에 MembershipTierBadge 컴포넌트를 추가했다.
- ProfileMenu 트리거에서 등급 배지를 제거하고, 아바타+이름만 남겨 정보 위계를 단순화했다.
- docs/session_brief.md, docs/90_current_state.md에 최신 상태를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /app 헤더와 프로필 영역의 톤/위계 정렬을 완료했다.
세션-다음: RoomSheet 인원수 기반 UI를 큐레이션형 정보로 치환할지 확정이 필요하다.
세션-리스크: 밝은 사진 배경과 라이트 헤더 조합에서 상단 경계 인지가 약해질 수 있다.
2026-03-01 00:19:43 +09:00
e9556afa53 style(app-hub): 헤더와 공간 카드 전환 디테일을 정리
맥락:
- /app 상단 헤더 배경과 로고 보조 배지가 시각적으로 무거워 현재 라이트 카드 톤과 어긋났다.
- 카드 사진 크기와 배경 전환 시 resize처럼 보이는 체감이 있어 선택 전환 품질 보정이 필요했다.

변경사항:
- AppTopBar에서 헤더 배경을 제거하고 로고 왼쪽 원형 V 배지를 삭제했다.
- ViewerProfile에 membershipTier를 추가하고, 프로필 이름 왼쪽에 등급 배지(PRO/NORMAL/TEAM)를 노출했다.
- RoomPreviewCard 높이를 고정해 카드 사진 크기를 통일했다.
- AppHub 배경 레이어의 transition-all을 제거해 카드 선택 시 배경이 리사이징 애니메이션처럼 보이는 현상을 완화했다.
- 세션 문서(90_current_state, session_brief)에 이번 작업 내역과 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /app 헤더/프로필 배지/카드 전환 디테일 보정 완료
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 헤더 배경 제거로 밝은 배경 구간에서 상단 텍스트 대비가 낮아질 수 있어 점검 필요
2026-03-01 00:14:35 +09:00
92a915633b style(app-hub): 허브 배경을 선택 카드 사진 블러와 동기화
맥락:
- /app 배경이 카드와 동일한 맥락의 블러 이미지로 보여야 공간 톤 연결이 자연스럽다.
- 앱 첫 진입 시 선택 상태가 명시되지 않으면 배경/선택 테두리 기준이 모호해질 수 있다.

변경사항:
- AppHub 배경 레이어를 hubColor 단색에서 선택 카드 사진 기반 블러 배경으로 전환했다.
- 배경 워시/그레인 오버레이 강도를 블러 사진 배경에 맞춰 재조정했다.
- useRoomSelection 초기값을 ROOM_THEMES[0].id로 명시해 첫 진입 시 첫 카드 선택 상태를 고정했다.
- 세션 문서(90_current_state, session_brief)에 이번 작업 내역과 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /app 배경이 선택 카드 사진 블러와 동기화되고 첫 카드 초기 선택이 명시됨
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 배경 블러 강도 증가로 저사양 환경에서 GPU 부담이 늘 수 있어 실기기 점검 필요
2026-03-01 00:04:05 +09:00
a1981b0577 feat(room): 공간 카드에 실제 사진 소스와 교체 경로를 연결
맥락:
- 오늘의 공간 카드를 단색에서 실제 사진 기반으로 전환하고, 사진 출처를 추적할 수 있는 링크가 필요했다.
- 추후 자가 호스팅 이미지로 교체할 수 있도록 데이터 구조에서 전환 경로를 미리 확보해야 했다.

변경사항:
- entities/room 모델에 cardPhotoUrl, googleImageSearchUrl, managedCardPhotoUrl 필드를 추가했다.
- 10개 공간 카드에 실제 사진 URL과 Google 이미지 검색 링크를 매핑했다.
- getRoomCardPhotoUrl, getRoomCardBackgroundStyle helper를 추가해 추후 managed 이미지로 교체 가능한 fallback 구조를 만들었다.
- RoomPreviewCard 배경을 실제 사진 렌더링으로 변경하고, 텍스트 가독성을 위한 오버레이를 적용했다.
- 세션 문서(90_current_state, session_brief)에 이번 작업 내역과 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: 오늘의 공간 카드에 실제 사진 소스/구글 링크/교체 경로 반영 완료
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 외부 이미지 URL 의존으로 소스 만료/속도 이슈 가능성이 있어 자가 호스팅 전환 필요
2026-03-01 00:01:39 +09:00
22ff9e6e41 style(app-hub): 오늘의 공간 카드를 룸별 단색 팔레트로 전환
맥락:
- 오늘의 공간 카드가 이미지 기반 배경이라 색/질감이 복잡하게 보였고, 카드와 페이지 배경의 톤 연결이 약했다.
- 룸 이름별로 분리된 단색 팔레트를 사용해 카드 가독성과 허브의 색 일관성을 높일 필요가 있었다.

변경사항:
- entities/room 모델에 hubColor 필드를 추가하고 10개 룸에 겹치지 않는 단색 팔레트를 정의했다.
- RoomPreviewCard를 이미지 배경 대신 룸 고유 단색 배경으로 렌더링하도록 변경했다.
- RoomPreviewCard 내부 텍스트/칩 스타일을 단색 카드 대비에 맞춰 어두운 텍스트 중심으로 재정렬했다.
- AppHub 배경을 선택 룸의 hubColor로 동기화해 카드 선택과 페이지 배경이 같은 색 계열로 연결되게 조정했다.
- 세션 문서(90_current_state, session_brief)에 이번 작업 내역과 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /app 오늘의 공간 카드/허브 배경 단색 팔레트 전환 완료
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 일부 디스플레이에서 단색 팔레트 간 체감 차이가 작아 보일 수 있어 기기별 색 분리도 점검 필요
2026-02-28 23:53:34 +09:00
e041f6b25a style(app-hub): 시작/공간 카드를 라이트 카드 톤으로 전환
맥락:
- /app에서 핵심 카드(지금 몰입/오늘의 공간)가 배경 이미지와 함께 어둡게 겹쳐 보이며 시인성이 떨어졌다.
- 배경은 가상 공간을 유지하되 카드 표면은 stats와 유사한 흰 톤으로 분리해 정보 가독성을 높일 필요가 있었다.

변경사항:
- StartRitualWidget과 RoomsGalleryWidget 컨테이너를 흰 표면 + 어두운 텍스트 라이트 카드 톤으로 조정했다.
- StartRitual 입력/칩/보조 버튼 색상을 라이트 카드 팔레트에 맞춰 재정렬했다.
- AppHub 배경 이미지의 blur/밝기 보정을 강화하고 다크 오버레이를 완화해 카드 외곽에서 가상 공간 배경이 부드럽게 보이도록 조정했다.
- 세션 문서(90_current_state, session_brief)에 이번 작업 내역과 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /app 핵심 카드 라이트 톤 전환 및 배경 블러 강화 반영 완료
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 룸 프리뷰 카드는 이미지 기반 다크 톤이라 라이트 컨테이너와 미세한 톤 차이가 남을 수 있음
2026-02-28 23:48:01 +09:00
3280df7aa1 style(custom-entry-modal): 커스텀 입장 모달 톤과 크기를 안정화
맥락:
- 커스텀 입장 모달이 허브 대비 과도하게 어두워 화면 톤 일관성이 떨어졌다.
- 탭(공간/사운드/타이머) 전환 시 본문 높이가 달라져 모달 외곽 크기가 흔들리는 UX 이슈가 있었다.

변경사항:
- Modal 오버레이/패널/헤더/푸터 스타일을 밝은 글래스 톤으로 조정해 허브 톤과 맞췄다.
- CustomEntryModal의 탭 콘텐츠 영역을 고정 높이 컨테이너로 변경해 탭 전환 시 모달 전체 크기가 변하지 않도록 했다.
- 공간/사운드/타이머 옵션 버튼과 커스텀 타이머 입력 필드를 밝은 팔레트로 재정의했다.
- Tabs 컴포넌트를 밝은 표면 톤에 맞게 보정했다.
- 세션 문서(90_current_state, session_brief)에 이번 작업 내용/리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: 커스텀 입장 모달의 밝은 톤 정렬 및 탭 전환 크기 고정 반영 완료
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 모달 고정 높이 적용으로 작은 화면에서 탭 본문 내부 스크롤 의존도가 증가할 수 있음
2026-02-28 23:29:17 +09:00
105c5785b8 style(app-hub): 허브 배경 밝기와 카드 가시성을 함께 보정
맥락:
- /app 허브에서 배경 이미지가 전면에 강하게 드러나 전체 인상이 어둡고, 룸별 배경 복잡도에 따라 카드 가독성이 흔들릴 수 있었다.
- 밝은 톤 전환과 동시에 카드 정보 표면을 안정화해 저자극 톤을 유지할 필요가 있었다.

변경사항:
- AppHub 배경에 blur + 밝기/채도 필터를 적용하고, 밝은 워시 오버레이로 명도를 상향했다.
- 전역 그레인 강도를 낮춰 시각적 노이즈를 줄였다.
- RoomPreviewCard 배경 마스크를 재조정하고, 내부 콘텐츠 영역에 반투명 패널을 추가해 텍스트 대비를 고정했다.
- RoomPreviewCard 내 메타 텍스트/칩의 대비를 상향해 복잡한 배경에서도 읽기 쉬운 상태로 보정했다.
- GlassCard의 표면 불투명도와 그림자를 조정해 /app 전반의 무게감을 완화했다.
- 세션 문서(90_current_state, session_brief)에 이번 패치 내역과 잔여 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /app 배경 밝기와 카드 가시성 안정화 패치 반영 완료
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 배경 blur/filter 적용으로 저사양 환경에서 렌더링 비용이 소폭 증가할 수 있음
2026-02-28 23:24:30 +09:00
3679f4bb40 fix: button hydration 에러 수정 2026-02-28 23:20:34 +09:00
9c6c01a3b2 fix(room-select): 룸 카드 중첩 버튼 hydration 에러 수정
맥락:
- /app 룸 카드에서 카드 전체를 버튼으로 사용하면서 내부 Chip도 버튼으로 렌더링되어 HTML 중첩 버튼 규칙을 위반했다.
- Next.js hydration 단계에서 콘솔 에러가 발생해 UI 신뢰도와 디버깅 효율을 저하시켰다.

변경사항:
- RoomPreviewCard 내부의 Chip 컴포넌트 사용을 제거했다.
- 카드 내부 태그/추천 정보 칩을 비인터랙티브 span 스타일로 교체해 버튼 중첩 구조를 해소했다.
- 세션 문서(90_current_state, session_brief)에 이번 에러 수정 내역을 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /app 룸 카드의 중첩 버튼 hydration 에러 해소
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 밝은 배경 구간에서 white 텍스트 대비가 약해질 수 있어 기기별 시인성 점검 필요
2026-02-28 23:18:26 +09:00
23f103c7b7 style(app-theme): landing 이후 앱 배경 톤을 밝은 무드로 조정
맥락:
- /landing 이후 진입하는 앱 화면들의 배경이 전반적으로 어두워 초기 인상과 톤 연속성이 떨어졌다.
- 기존 감성/저자극 분위기를 유지하면서 배경 명도를 올려 부담을 낮출 필요가 있었다.

변경사항:
- /app 허브 배경 오버레이를 밝은 그라디언트 중심으로 조정하고 grain 강도를 낮췄다.
- 룸 카드 마스크 강도를 완화해 미리보기 이미지의 밝은 톤 노출을 늘렸다.
- /space 배경 오버레이, 그레인, 비네팅 강도를 단계적으로 낮춰 전체 명도를 상향했다.
- /space suspense fallback 배경을 라이트 그라디언트로 변경했다.
- /stats, /settings 페이지를 라이트 팔레트 기반 배경/패널 스타일로 전환했다.
- 세션 복구 문서(90_current_state, session_brief)에 이번 변경과 리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /landing 이후 앱 플로우 배경이 밝은 톤으로 정리됨
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 밝은 배경 구간에서 일부 white 텍스트 대비가 약해질 수 있어 기기별 시인성 점검 필요
2026-02-28 23:12:54 +09:00
313ef88961 style(space-hud): 30초 복귀 액션을 숨 고르기 톤으로 리브랜딩
맥락:
- /space 하단 HUD의 30초 복귀 액션을 저자극 감성 톤으로 정리해 복귀 행동의 심리적 부담을 낮춘다.

변경사항:
- restart-30s feature에 카피 상수(model/copy)를 추가하고 버튼/모드/안내 문구를 중앙 관리로 전환했다.
- useRestart30s에 더미 상태 전환(isBreatheMode, hintMessage)을 추가해 클릭 후 2초 내 안내 노출과 자동 복귀를 구현했다.
- HUD에서 30초 진입 중 상태 라벨을 BREATHE로 표시하고, 안내 문구를 목표 라인에 저대비로 잠깐 노출하도록 조정했다.
- 30초 액션 버튼을 "숨 고르기 30초" + 🌬️ 형태의 보조 액션 톤으로 변경했다.
- 세션 복구 문서(90_current_state, session_brief)에 이번 작업 상태/리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: /space 30초 복귀 액션 카피 리브랜딩 및 HUD 더미 안내 반영 완료
세션-다음: RoomSheet/도크 인원수 기반 카피를 큐레이션형 표현으로 전환
세션-리스크: HUD 목표 문구와 안내 문구가 교체 노출되어 정보 우선순위 점검 필요
2026-02-27 14:58:35 +09:00
20638b69a4 fix(exit-hold): bar 진행 표시 즉시 반영 및 리셋 애니메이션 수정
맥락:

- 몰입 OFF의 나가기 롱프레스 bar에서 진행 표시가 즉시 보이지 않고 완료 시 0으로 역방향 축소되는 문제를 해결하기 위해

변경사항:

- bar 진행 표시를 JS width 갱신에서 CSS keyframes 기반으로 교체

- 키프레임에 가속 규칙 반영(0.05초 20%, 1.0초 100%)

- 완료 후 100% 상태를 짧게 유지한 뒤 언마운트하도록 훅 상태(isCompleted) 보강

- progress fill의 rounded 캡을 제거해 끝단 직선화

- docs/90_current_state.md, docs/session_brief.md 최신 상태 반영

검증:

- npx tsc --noEmit

세션-상태: bar 롱프레스 진행은 눌렀을 때 즉시 보이고 완료 리셋 시 역방향 축소가 사라짐

세션-다음: 롱프레스 인지성 보조 카피 도입 여부 검토

세션-리스크: bar(CSS)와 ring(JS) 진행 로직이 분리되어 향후 규칙 변경 시 동시 점검 필요
2026-02-27 14:36:31 +09:00
73e7d5004c feat(space): 나가기 버튼 롱프레스 가속 진행 인터랙션 추가
맥락:

- /space에서 실수 이탈을 줄이면서도 명확한 탈출 동선을 유지하기 위해 나가기 액션을 1초 롱프레스 방식으로 변경

변경사항:

- features/exit-hold 추가(useHoldToConfirm, ExitHoldButton)

- 1초 롱프레스와 가속 진행 규칙(0.05초 -> 20%)을 feature 내부에 구현

- 몰입 OFF에서는 bar(좌->우 fill), 몰입 ON에서는 ring 진행 표시로 분기

- 1초 미만 해제/마우스 leave/touch cancel 시 진행률 즉시 리셋

- 완료 시 나가기(더미) 토스트 + 몰입 모드 OFF 동작 연결

- docs/90_current_state.md, docs/session_brief.md 상태 업데이트

검증:

- npx tsc --noEmit

세션-상태: 상단 나가기 액션은 롱프레스 완료 시에만 트리거됨

세션-다음: 롱프레스 인터랙션 인지성 보완용 힌트 카피 도입 여부 검토

세션-리스크: 터치 환경에서 롱프레스 UI 의도를 즉시 이해하지 못할 가능성 있음
2026-02-27 14:29:46 +09:00
e2fb720a55 feat(immersion): 몰입 모드 상단 액션을 나가기로 전환
맥락:

- 몰입 모드 ON에서 상단 우측 액션이 허브 이동으로 보이는 혼선을 줄이고 즉시 이탈 동선을 제공하기 위해

변경사항:

- 몰입 모드 훅에 exitImmersionMode 액션 추가

- 몰입 모드 ON 시 상단 우측 액션을 나가기 버튼으로 전환

- 나가기 클릭 시 토스트(나가기(더미)) 노출 후 몰입 모드 OFF 처리

- docs/90_current_state.md, docs/session_brief.md 최신 상태 반영

검증:

- npx tsc --noEmit

세션-상태: 몰입 모드 ON에서 상단 우측 액션은 나가기로 동작함

세션-다음: RoomSheet/도크의 인원수 중심 정보를 분위기형 정보로 교체

세션-리스크: 터치 환경에서 미니 레일 발견성이 낮을 수 있어 UX 보완이 필요
2026-02-27 14:22:56 +09:00
e361755a91 style(space): 헤더 크롬 최소화와 HUD 하단 밀착 조정
맥락:

- /space 배경 몰입을 방해하는 상단 프레임 느낌과 하단 HUD의 떠있는 간격을 줄이기 위해

변경사항:

- 상단 헤더의 border/프레임 느낌을 제거하고 오버레이 톤으로 축소

- 헤더 아이콘/패딩을 축소해 배경 노출 영역을 확대

- 타이머 HUD 하단 위치를 safe-area 기반 최소 여백으로 조정

검증:

- npx tsc --noEmit

세션-상태: /space 헤더가 박스형 프레임 없이 가벼운 오버레이로 표시됨

세션-다음: 몰입 모드에서 상단 액션을 나가기 버튼으로 전환

세션-리스크: 기기별 safe-area 계산 차이로 HUD 체감 위치가 다를 수 있음
2026-02-27 14:21:29 +09:00
ce1664f472 feat(space): 사운드 시트와 몰입 모드 크롬 정리 적용
맥락:

- /space 하단 사운드 바를 제거하고 도구를 우측 도크에 수납해 배경 몰입을 강화하며, 몰입 모드 ON 체감을 높이기 위해

변경사항:

- 하단 사운드 프리셋 바를 제거하고 도크에 🎧 Sound 패널을 추가

- features/sound-preset + widgets/sound-sheet를 추가해 프리셋 선택/믹서 UI(더미) 구성

- features/immersion-mode + shared/ui/Toggle을 추가하고 Quick 시트 토글과 연결

- 몰입 모드 ON 시 상단 Current Room 숨김, 허브 버튼 소형화, 레일 미니화, HUD 저대비, 비네팅/그레인 강화

- widgets/space-chrome를 신설해 /space 상단 크롬 렌더링을 분리

- docs/90_current_state.md, docs/session_brief.md 최신 상태로 갱신

검증:

- npx tsc --noEmit

세션-상태: /space는 사운드 시트 기반 도크 구조와 몰입 모드 UI를 제공함

세션-다음: RoomSheetWidget 인원수 기반 정보를 큐레이션 표현으로 전환

세션-리스크: 터치 환경에서 미니 레일 발견성이 낮을 수 있어 보조 힌트가 필요할 수 있음
2026-02-27 14:14:12 +09:00
f0efd74af3 docs(workflow): 기본 컨텍스트 로드를 2파일로 축소
맥락:

- workFlow 실행 시 기본 로드 문서 수를 줄여 토큰 사용량을 추가로 절감하기 위해

변경사항:

- docs/session_brief.md 신설(세션 시작용 초소형 스냅샷)

- docs/workFlow.md 기본 로드를 work + session_brief 2파일로 변경

- docs/README.md 우선 읽기 순서와 운영 원칙 갱신

- docs/90_current_state.md에 정책 변경 기록

검증:

- 문서 내용 수동 검토

- 기본 로드 입력 크기: work(497) + session_brief(718) = 1215 chars

세션-상태: workflow 기본 로드는 2파일 모드로 동작함

세션-다음: session_brief를 작업 종료 시 최신 상태로 유지

세션-리스크: session_brief 갱신이 누락되면 복구 정확도가 떨어질 수 있음
2026-02-27 13:50:10 +09:00
91fce428ec docs(workflow): 컨텍스트 로드를 토큰 절약 모드로 전환
맥락:

- workFlow 실행 시 매번 여러 문서를 전부 읽어 토큰이 과도하게 소모되는 문제를 줄이기 위해

변경사항:

- docs/context_core.md 신설(핵심 규칙 요약본)

- docs/workFlow.md를 기본 3문서 + 조건부 로드 방식으로 변경

- docs/README.md에 context_core 및 토큰 절약 로드 원칙 반영

- docs/90_current_state.md에 이번 정책 변경 기록

검증:

- 문서 문자 수 기준 로드량 비교 계산

- old_always_chars=6226, new_always_chars=3015

세션-상태: workflow가 토큰 절약형 컨텍스트 로드를 사용함

세션-다음: 조건부 로드 문서 기준을 실제 작업 로그로 튜닝

세션-리스크: work.md 입력이 장문이면 절감 효과가 상대적으로 줄어들 수 있음
2026-02-27 13:46:27 +09:00
28ed1841ca docs(workflow): work.md 기반 실행 절차 문서 추가
맥락:

- 작업 지시를 문서 기반으로 표준화하고, 실행 시 규칙 준수와 주제별 커밋을 강제하기 위해

변경사항:

- docs/work.md에 작업 입력 템플릿 추가

- docs/workFlow.md에 실행 순서, 규칙 준수, 커밋 절차 명시

- docs/README.md에 work/workFlow 문서 링크 추가

검증:

- 문서 내용 수동 검토

세션-상태: 문서 기반 작업 지시/실행 체계가 준비됨

세션-다음: 이후 작업부터 work.md 작성 후 workFlow.md 실행

세션-리스크: work.md가 비어 있으면 실행 전에 추가 확인이 필요
2026-02-27 13:39:16 +09:00
cbd9017744 feat(fsd): 허브·스페이스 중심 UI 목업 구조로 재편
맥락:

- 기존 라우트/컴포넌트 구조를 FSD 기준으로 정리하고, /app 허브와 /space 집중 화면 중심의 목업 흐름을 구성하기 위해

변경사항:

- App Router 구조를 /landing, /app, /space, /stats, /settings 중심으로 재배치

- entities/session/room/user 더미 데이터와 타입 정의 추가

- features(커스텀 입장, 룸 선택, 체크인, 리액션, 30초 리스타트 등) 단위로 로직 분리

- widgets(허브, 룸 갤러리, 타이머 HUD, 툴 도크 등) 조합형 UI 추가

- shared 공용 UI(Button/Chip/Modal/Toast 등) 및 유틸(cn/useReducedMotion) 정비

- 로그인 후 이동 경로를 /dashboard 에서 /app 으로 변경

- README를 현재 프로젝트 구조/라우트/구현 범위 기준으로 갱신

검증:

- npx tsc --noEmit

세션-상태: 허브·스페이스 목업이 FSD 레이어로 동작 가능하도록 정리됨

세션-다음: /space 상단 및 도크의 인원 수 카피를 분위기형 카피로 후속 정리

세션-리스크: build는 네트워크 환경에서 Google Fonts fetch 실패 가능
2026-02-27 13:30:55 +09:00
583837fb8d docs(session): 커밋 메시지 한국어 규칙을 명시
맥락:

- 커밋 메시지는 한국어로 작성해야 한다는 팀 규칙을 문서와 템플릿에 반영하기 위해

변경사항:

- docs/06_commit_convention.md에 한국어 작성 필수 규칙 추가

- docs/07_session_recovery.md의 커밋 예시를 한국어로 교체

- .gitmessage-session.txt 템플릿 본문 항목을 한국어로 변경

검증:

- 변경 파일 수동 검토

세션-상태: 한국어 커밋 규칙과 템플릿이 반영됨

세션-다음: 기능 커밋에도 동일한 한국어 템플릿을 적용

세션-리스크: 기존 과거 커밋 메시지는 영어가 포함될 수 있음
2026-02-27 13:28:57 +09:00
ecb17a485a docs(session): add restart-safe recovery workflow
Context:

- codex cli 중단 후에도 작업 품질과 맥락을 안정적으로 복구하기 위해

Changes:

- docs/00~07, 90 문서 세트 추가/정리

- commit convention 문서 및 .gitmessage-session.txt 템플릿 추가

- scripts/session/recover-context.sh 추가

- package.json에 session:recover 스크립트 추가

Validation:

- npm run session:recover

Session-State: session recovery docs, template, and script are in place

Session-Next: apply this commit format to feature and refactor commits

Session-Risks: legacy commits before this change do not include session trailers
2026-02-27 13:27:20 +09:00
d2be0b866a feat: 대시보드 생성 2026-02-27 00:38:31 +09:00
c92e270716 feat: 대시보드에 유저의 정보를 불러오기 2026-02-26 20:49:12 +09:00
d56303cec4 feat: 구글 소셜로그인 백엔드 연결 2026-02-26 14:40:37 +09:00
a796a9cffb feat: 로그인 버튼 생성 2026-02-26 12:41:44 +09:00
dabb442048 feat: 로그인 화면 2026-02-26 12:29:45 +09:00
53f160384d feat: 프로젝트 세팅 2026-02-25 15:34:50 +09:00
e1fb55a609 Initial commit from Create Next App 2026-02-25 13:41:58 +09:00