맥락:
- 몰입 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) 진행 로직이 분리되어 향후 규칙 변경 시 동시 점검 필요
맥락:
- /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 의도를 즉시 이해하지 못할 가능성 있음
맥락:
- 몰입 모드 ON에서 상단 우측 액션이 허브 이동으로 보이는 혼선을 줄이고 즉시 이탈 동선을 제공하기 위해
변경사항:
- 몰입 모드 훅에 exitImmersionMode 액션 추가
- 몰입 모드 ON 시 상단 우측 액션을 나가기 버튼으로 전환
- 나가기 클릭 시 토스트(나가기(더미)) 노출 후 몰입 모드 OFF 처리
- docs/90_current_state.md, docs/session_brief.md 최신 상태 반영
검증:
- npx tsc --noEmit
세션-상태: 몰입 모드 ON에서 상단 우측 액션은 나가기로 동작함
세션-다음: RoomSheet/도크의 인원수 중심 정보를 분위기형 정보로 교체
세션-리스크: 터치 환경에서 미니 레일 발견성이 낮을 수 있어 UX 보완이 필요
맥락:
- /space 배경 몰입을 방해하는 상단 프레임 느낌과 하단 HUD의 떠있는 간격을 줄이기 위해
변경사항:
- 상단 헤더의 border/프레임 느낌을 제거하고 오버레이 톤으로 축소
- 헤더 아이콘/패딩을 축소해 배경 노출 영역을 확대
- 타이머 HUD 하단 위치를 safe-area 기반 최소 여백으로 조정
검증:
- npx tsc --noEmit
세션-상태: /space 헤더가 박스형 프레임 없이 가벼운 오버레이로 표시됨
세션-다음: 몰입 모드에서 상단 액션을 나가기 버튼으로 전환
세션-리스크: 기기별 safe-area 계산 차이로 HUD 체감 위치가 다를 수 있음
맥락:
- /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 인원수 기반 정보를 큐레이션 표현으로 전환
세션-리스크: 터치 환경에서 미니 레일 발견성이 낮을 수 있어 보조 힌트가 필요할 수 있음
맥락:
- 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 갱신이 누락되면 복구 정확도가 떨어질 수 있음
맥락:
- 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 입력이 장문이면 절감 효과가 상대적으로 줄어들 수 있음
맥락:
- 작업 지시를 문서 기반으로 표준화하고, 실행 시 규칙 준수와 주제별 커밋을 강제하기 위해
변경사항:
- docs/work.md에 작업 입력 템플릿 추가
- docs/workFlow.md에 실행 순서, 규칙 준수, 커밋 절차 명시
- docs/README.md에 work/workFlow 문서 링크 추가
검증:
- 문서 내용 수동 검토
세션-상태: 문서 기반 작업 지시/실행 체계가 준비됨
세션-다음: 이후 작업부터 work.md 작성 후 workFlow.md 실행
세션-리스크: work.md가 비어 있으면 실행 전에 추가 확인이 필요
맥락:
- 기존 라우트/컴포넌트 구조를 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 실패 가능
맥락:
- 커밋 메시지는 한국어로 작성해야 한다는 팀 규칙을 문서와 템플릿에 반영하기 위해
변경사항:
- docs/06_commit_convention.md에 한국어 작성 필수 규칙 추가
- docs/07_session_recovery.md의 커밋 예시를 한국어로 교체
- .gitmessage-session.txt 템플릿 본문 항목을 한국어로 변경
검증:
- 변경 파일 수동 검토
세션-상태: 한국어 커밋 규칙과 템플릿이 반영됨
세션-다음: 기능 커밋에도 동일한 한국어 템플릿을 적용
세션-리스크: 기존 과거 커밋 메시지는 영어가 포함될 수 있음
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