docs(product): stale app flow 문서 정리

This commit is contained in:
2026-03-16 11:18:39 +09:00
parent 56385ec2eb
commit 3471c96972
13 changed files with 71 additions and 206 deletions

View File

@@ -2,15 +2,15 @@
## 프로젝트 목적 ## 프로젝트 목적
VibeRoom Web은 몰입 공간 경험을 빠르게 실험하기 위한 프론트엔드 목업 프로젝트다. VibeRoom Web은 ADHD와 프리랜서를 위한 premium focus service의 웹 제품을 설계하고 구현하는 프로젝트다.
핵심 목표는 실제 기능 완성보다 UX 흐름, 화면 구조, 상호작용 톤 안정적으로 검증하는 것이다. 핵심 목표는 UX 흐름, 화면 구조, 상호작용 톤, core loop 계약을 실제 제품 품질로 안정적으로 끌어올리는 것이다.
## 기술 스택 ## 기술 스택
- Next.js (App Router) - Next.js (App Router)
- TypeScript - TypeScript
- TailwindCSS - TailwindCSS
- 상태: React state + 일부 Zustand - 상태: React state + local storage + 일부 shared store
## 유지보수 역할 정의 ## 유지보수 역할 정의
@@ -19,22 +19,22 @@ VibeRoom Web은 몰입 공간 경험을 빠르게 실험하기 위한 프론트
- FSD 구조를 지키며 화면/기능을 지속적으로 리팩터링한다. - FSD 구조를 지키며 화면/기능을 지속적으로 리팩터링한다.
- View 계층을 조합 중심으로 유지하고 로직이 새지 않게 막는다. - View 계층을 조합 중심으로 유지하고 로직이 새지 않게 막는다.
- 감성/저자극 톤을 유지하며 과한 강조 UI를 억제한다. - 감성/저자극 톤을 유지하며 과한 강조 UI를 억제한다.
- 실제 서비스 로직은 구현하지 않고, 더미 데이터와 토스트로 흐름만 검증한다. - mock UI만 만드는 데 그치지 않고, core focus/session/review 흐름은 실제 계약과 연결한다.
## 범위와 비범위 ## 범위와 비범위
범위: 범위:
- 라우트/위젯/피처 단위 UI 개선 - 라우트/위젯/피처 단위 UI 개선
- 더미 데이터 기반 상태 표현 - 더미 데이터 + 실제 계약 혼합 상태 표현
- 모달, 토글, 탭, 선택, 토스트 - 모달, 토글, 탭, 선택, 토스트
비범위: 비범위:
- 실시간 인원수/presence 정확도 보장 - 실시간 인원수/presence 정확도 보장
- 타이머 카운트다운 실제 동작 - 오디오 DSP 수준의 고급 엔진
- 오디오 재생 엔진 - 운영 observability 완성
- 서버/DB/API 연동 완성 - 모든 주변 기능의 production hardening
## Definition of Done ## Definition of Done

View File

@@ -14,21 +14,24 @@
### `/app` (허브) ### `/app` (허브)
- Page: `src/app/(app)/app/page.tsx` - Page: `src/app/(app)/app/page.tsx`
- Core Widget: `src/widgets/app-hub/ui/AppHubWidget.tsx` - Core Widget: `src/widgets/focus-dashboard/ui/FocusDashboardWidget.tsx`
- 주요 구성: - 주요 구성:
- `StartRitualWidget` - `FocusDashboardWidget`
- `RoomsGalleryWidget` - paused `Resume Gate`
- `CustomEntryWidget` - no-session `Atmosphere Entry Shell` (기획 기준, 구현 예정)
- 데이터 소스: - 데이터 소스:
- room 목록: `entities/room` - current session: `features/focus-session`
- 목표/타이머/사운드 프리셋: `entities/session` - weekly review: `features/stats`
- atmosphere 선택 데이터: entry slice 구현 예정
### `/space` (집중 화면) ### `/space` (집중 화면)
- Page: `src/app/(app)/space/page.tsx` - Page: `src/app/(app)/space/page.tsx`
- Core Widget: `src/widgets/space-shell/ui/SpaceSkeletonWidget.tsx` - Core Widget: `src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx`
- 주요 구성: - 주요 구성:
- `SpaceTimerHudWidget` - `SpaceTimerHudWidget`
- `SpaceFocusHudWidget`
- `SpaceSetupDrawerWidget`
- `SpaceToolsDockWidget` - `SpaceToolsDockWidget`
- `features/restart-30s` (HUD 내 조합) - `features/restart-30s` (HUD 내 조합)
@@ -38,9 +41,11 @@
- `sound`: 사운드 preset id - `sound`: 사운드 preset id
- `timer`: 타이머 라벨 - `timer`: 타이머 라벨
- `goal`: 목표 한 줄 (선택) - `goal`: 목표 한 줄 (선택)
- `resume`: `continue | refocus`
## 변경 시 체크포인트 ## 변경 시 체크포인트
- 라우팅 변경 시 `/app -> /space` 진입 흐름이 깨지지 않는지 확인 - 라우팅 변경 시 `/app -> /space` 진입 흐름이 깨지지 않는지 확인
- `running -> /space`, `paused -> /app` 재진입 정책 유지
- query param 기본값 처리 유지 - query param 기본값 처리 유지
- page 파일에 로직 누수 여부 확인 - page 파일에 로직 누수 여부 확인

View File

@@ -1,132 +0,0 @@
# 09. `/app` Entry Detailed Spec
Last Updated: 2026-03-14
이 문서는 `/app`을 **single-goal commitment gate**로 구현할 때의 상세 기준 문서다.
관련 상위 기준:
- `../../product_principles.md`
- `../../current_context.md`
- `08_app_reframe_strategy.md`
---
## 1. 한 줄 정의
`/app`은 planner나 setup wizard가 아니라,
**사용자가 지금 할 일 한 가지를 정하고 가장 낮은 마찰로 `/space`에 들어가게 만드는 입구**다.
---
## 2. 화면 역할
### `/app`이 해야 하는 일
- 현재 세션이 있으면 `이어가기`를 제안한다
- 현재 세션이 없으면 `goal 1개 + optional microStep 1개`만 받는다
- 주 행동은 항상 `지금 시작` 하나다
- 시작 전에 많은 설정을 요구하지 않는다
### `/app`이 하면 안 되는 일
- 여러 목표를 관리하게 하기
- planner / to-do / list app처럼 보이게 하기
- scene / sound / timer 선택을 메인 결정으로 끌어올리기
- 진입 전에 `정리`, `관리`, `저장`을 강요하기
---
## 3. 정보 구조
### 상태 A. Current Session Exists
- eyebrow: `Resume`
- 현재 goal
- optional microStep
- primary CTA: `이어서 들어가기`
- 보조 정보: 현재 ritual 요약
- 설명:
- 새 목표는 현재 세션을 마무리한 뒤 시작할 수 있다고만 안내
### 상태 B. No Current Session
- 제목
- 설명
- goal input 1개
- optional microStep input 1개
- suggestion chips 3~4개
- primary CTA: `지금 시작`
- 하단 보조 정보:
- `기본 ritual · scene · timer · sound`
- `공간과 사운드는 들어간 뒤에도 바꿀 수 있어요.`
---
## 4. 상호작용 원칙
### Goal
- 필수
- 한 줄 입력
- enter로 바로 시작 가능
### MicroStep
- 선택
- checklist가 아니라 `지금 할 한 조각`
- 1개만 허용
### Suggestions
- 계획 리스트가 아니라 start friction reducer 역할
- 클릭 시 goal input을 빠르게 채움
### Start
- 현재 세션이 없을 때만 가능
- `goal + microStep + default ritual`로 세션 시작
- 성공 시 `/space` 이동
### Resume
- 현재 세션이 있으면 start UI 대신 resume UI를 우선 노출
- 클릭 시 `/space`로 이동
---
## 5. UX 원칙
- `/app`은 start surface여야지 setup surface가 아니어야 한다
- 한 화면 안에서 결정할 것은 최대 2개(goal, optional microStep)
- visual hierarchy는 `goal > CTA > microStep > suggestions > ritual helper` 순서
- paywall은 메인 CTA가 아니라 Plan Pill에서만 여는 수준으로 제한
---
## 6. 구현 범위
### 이번 slice에 포함
- 2-step ritual flow 제거
- manage/list UI를 메인 경로에서 제거
- current session resume path 추가
- single-goal + optional microStep direct start
- default ritual만 사용
### 이번 slice에 포함하지 않음
- multi-goal manage 복구
- entry 단계 scene/sound/timer 직접 선택
- planner/dashboard 요소 복구
- goal 저장과 session start의 backend atomic endpoint 신규 도입
---
## 7. 검증 기준
- 사용자가 10초 안에 goal을 입력하고 `/space`로 들어갈 수 있다
- `/app` 첫 인상이 planner나 setup wizard처럼 보이지 않는다
- current session이 있으면 `resume`이 주 행동으로 읽힌다
- 현재 세션이 없을 때는 `지금 시작`이 유일한 dominant CTA다
- scene / sound / timer는 entry의 주 의사결정으로 느껴지지 않는다

View File

@@ -8,7 +8,7 @@ Last Updated: 2026-03-15
- `../../product_principles.md` - `../../product_principles.md`
- `../../current_context.md` - `../../current_context.md`
- `09_app_entry_detailed_spec.md` - `19_app_atmosphere_entry_spec.md`
--- ---

View File

@@ -13,7 +13,6 @@ Last Updated: 2026-03-15
- `../../product_principles.md` - `../../product_principles.md`
- `../../current_context.md` - `../../current_context.md`
- `09_app_entry_detailed_spec.md`
- `19_app_atmosphere_entry_spec.md` - `19_app_atmosphere_entry_spec.md`
- `10_refocus_system_spec.md` - `10_refocus_system_spec.md`
- `11_away_return_recovery_spec.md` - `11_away_return_recovery_spec.md`
@@ -48,11 +47,11 @@ VibeRoom은 아래 방식으로 진행한다.
- 루트 문서 `../../product_principles.md` - 루트 문서 `../../product_principles.md`
- single-goal, premium focus, anti-to-do 방향 고정 - single-goal, premium focus, anti-to-do 방향 고정
### 완료 2. `/app` Entry Reframe ### 완료 2. `/app` Entry Reframe (Legacy)
- 문서: `09_app_entry_detailed_spec.md` - 문서: historical, superseded by `19_app_atmosphere_entry_spec.md`
- 구현 상태: - 구현 상태:
- `/app`은 single-goal commitment gate - `/app` 한때 single-goal commitment gate로 정리됐음
- planner/list-first 구조 제거 - planner/list-first 구조 제거
- current session이 있으면 resume 우선 - current session이 있으면 resume 우선
@@ -369,7 +368,7 @@ Away / Return이 끼어들기 전, 다음으로 예정된 축은 아래 두 가
### 방금 완료 ### 방금 완료
- `Weekly Review Entry Flow` Slice 1 - `Weekly Review Entry Flow` Slice 1
- `/app` hero 아래 low-emphasis weekly review teaser 추가 - `/app` low-emphasis weekly review entry를 추가
- 충분한 최근 7일 데이터가 있을 때만 `/stats` primary entry를 노출 - 충분한 최근 7일 데이터가 있을 때만 `/stats` primary entry를 노출
- `Weekly Review Entry Flow` Slice 2 - `Weekly Review Entry Flow` Slice 2
- `/stats` 마지막 CTA가 `/app?review=weekly&carryHint=...` handoff로 연결 - `/stats` 마지막 CTA가 `/app?review=weekly&carryHint=...` handoff로 연결
@@ -378,7 +377,7 @@ Away / Return이 끼어들기 전, 다음으로 예정된 축은 아래 두 가
- Pro에서는 `/stats` carry-forward에 추천 ritual을 함께 보여준다 - Pro에서는 `/stats` carry-forward에 추천 ritual을 함께 보여준다
- `/stats` 마지막 CTA와 `/app` return hint가 더 구체적인 next-session handoff로 바뀐다 - `/stats` 마지막 CTA와 `/app` return hint가 더 구체적인 next-session handoff로 바뀐다
- `Weekly Review Entry Flow` Slice 4 - `Weekly Review Entry Flow` Slice 4
- `/space`에서 goal complete로 setup 상태로 돌아온 직후에만 secondary review teaser가 보인다 - `/space`에서 goal complete로 setup 상태로 돌아온 직후에만 secondary review entry가 보인다
- full review 강제 이동 없이 작은 후행 경로로 `/stats`를 연다 - full review 강제 이동 없이 작은 후행 경로로 `/stats`를 연다
- 다음 구현은 weekly review의 ritual fit highlight 또는 deeper recovery schema다 - 다음 구현은 weekly review의 ritual fit highlight 또는 deeper recovery schema다
- `Paused Session Re-entry` spec - `Paused Session Re-entry` spec

View File

@@ -7,7 +7,7 @@ Last Updated: 2026-03-14
관련 문서: 관련 문서:
- `09_app_entry_detailed_spec.md` - `19_app_atmosphere_entry_spec.md`
- `10_refocus_system_spec.md` - `10_refocus_system_spec.md`
- `11_away_return_recovery_spec.md` - `11_away_return_recovery_spec.md`
- `12_core_loop_execution_roadmap.md` - `12_core_loop_execution_roadmap.md`

View File

@@ -10,7 +10,7 @@ Last Updated: 2026-03-15
관련 문서: 관련 문서:
- `09_app_entry_detailed_spec.md` - `19_app_atmosphere_entry_spec.md`
- `12_core_loop_execution_roadmap.md` - `12_core_loop_execution_roadmap.md`
- `14_weekly_review_reframe_spec.md` - `14_weekly_review_reframe_spec.md`
- `../../product_principles.md` - `../../product_principles.md`
@@ -107,7 +107,7 @@ review가 가장 유의미한 순간도 바로 여기다.
`/app -> /stats -> /app` `/app -> /stats -> /app`
1. 사용자가 `/app`에 들어온다 1. 사용자가 `/app`에 들어온다
2. hero 아래 또는 하단`weekly review teaser`가 보인다 2. entry stage 바깥의 quiet review dock`weekly review entry`가 보인다
3. 사용자가 teaser를 누른다 3. 사용자가 teaser를 누른다
4. `/stats`로 이동한다 4. `/stats`로 이동한다
5. review를 본다 5. review를 본다
@@ -174,24 +174,24 @@ review가 가장 유의미한 순간도 바로 여기다.
이 경우: 이 경우:
- `/app` 메인 hero는 single-goal commitment에 집중 - `/app` no-session 상태에서는 goal/duration/atmosphere entry stage에 집중
- resume 상태에서는 hero 아래 큰 teaser 대신, resume card 안의 조용한 secondary entry로 review를 연다 - resume 상태에서는 entry shell 대신 resume card 안의 조용한 secondary entry로 review를 연다
--- ---
## 7. `/app` teaser 설계 ## 7. `/app` review dock 설계
### 위치 ### 위치
추천 위치: 추천 위치:
- hero 바로 아래 - desktop에서는 entry stage 우측 또는 우상단 quiet dock
- 또는 hero 하단과 footer 사이 - mobile에서는 entry stage 아래의 얇은 secondary panel
금지: 금지:
- hero CTA보다 위 - entry stage보다 위
- hero CTA와 같은 무게 - entry CTA와 같은 무게
- card 3개 중 하나처럼 보이게 배치 - card 3개 중 하나처럼 보이게 배치
### 형태 ### 형태
@@ -215,7 +215,7 @@ review가 가장 유의미한 순간도 바로 여기다.
### UX 원칙 ### UX 원칙
- teaser는 insight를 다 말하지 않는다 - teaser는 insight를 다 말하지 않는다
- review를 보고 싶게 만들되, hero를 가리지 않는다 - review를 보고 싶게 만들되, entry stage를 가리지 않는다
- start CTA보다 절대 커 보이면 안 된다 - start CTA보다 절대 커 보이면 안 된다
--- ---
@@ -263,7 +263,7 @@ review-aware state가 된다.
- “방금 본 review 기준 추천” 한 줄 - “방금 본 review 기준 추천” 한 줄
- review carry-forward hint - review carry-forward hint
- optional ritual prefill - optional atmosphere / ritual hint
예시: 예시:
@@ -273,7 +273,7 @@ review-aware state가 된다.
### 유지할 것 ### 유지할 것
- goal은 여전히 사용자가 직접 입력 - goal은 여전히 사용자가 직접 입력
- microStep도 직접 입력 가능 - goal과 duration은 여전히 사용자가 직접 입력
자동으로 하지 말 것: 자동으로 하지 말 것:
@@ -314,9 +314,9 @@ review-aware state가 된다.
## 11. UI/UX 원칙 ## 11. UI/UX 원칙
### `/app` teaser ### `/app` review dock
- hero보다 작음 - entry stage보다 작음
- 한 줄 summary - 한 줄 summary
- secondary CTA - secondary CTA
- glass/card를 크게 쓰지 않음 - glass/card를 크게 쓰지 않음
@@ -335,7 +335,7 @@ review-aware state가 된다.
## 12. 구현 순서 ## 12. 구현 순서
### Slice 1. `/app` weekly review teaser 추가 ### Slice 1. `/app` weekly review dock 추가
범위: 범위:

View File

@@ -69,7 +69,7 @@ Audit 중 충돌이 생기면 아래 순서로 판단한다.
1. `product_principles.md` 1. `product_principles.md`
2. `/Users/ijeongmin/Desktop/corpi/viberoom/current_context.md` 2. `/Users/ijeongmin/Desktop/corpi/viberoom/current_context.md`
3. route/flow 관련 상세 spec 3. route/flow 관련 상세 spec
- `09_app_entry_detailed_spec.md` - `19_app_atmosphere_entry_spec.md`
- `10_refocus_system_spec.md` - `10_refocus_system_spec.md`
- `11_away_return_recovery_spec.md` - `11_away_return_recovery_spec.md`
- `13_space_intent_card_collapsed_expanded_spec.md` - `13_space_intent_card_collapsed_expanded_spec.md`
@@ -345,7 +345,7 @@ Free / Pro를 아래 기준으로 본다.
8. `/space` goal complete choice 8. `/space` goal complete choice
9. `/space` goal complete next 9. `/space` goal complete next
10. `/space` complete -> setup -> review teaser 10. `/space` complete -> setup -> review teaser
11. `/app` weekly review teaser -> `/stats` -> `/app` 11. `/app` weekly review entry -> `/stats` -> `/app`
12. Pro 상태 handoff 12. Pro 상태 handoff
각 시나리오마다 본다. 각 시나리오마다 본다.

View File

@@ -12,7 +12,7 @@ Last Updated: 2026-03-15
관련 문서: 관련 문서:
- `09_app_entry_detailed_spec.md` - `19_app_atmosphere_entry_spec.md`
- `10_refocus_system_spec.md` - `10_refocus_system_spec.md`
- `11_away_return_recovery_spec.md` - `11_away_return_recovery_spec.md`
- `15_app_stats_entry_flow_spec.md` - `15_app_stats_entry_flow_spec.md`
@@ -205,7 +205,7 @@ paused session이 있는데 새 목표를 바로 시작하게 하면
처리: 처리:
- `/app` 진입 - `/app` 진입
- single-goal start hero 노출 - no-session entry shell 노출
--- ---

View File

@@ -2,13 +2,12 @@
Last Updated: 2026-03-16 Last Updated: 2026-03-16
이 문서는 `/app`**goal + duration + atmosphere` 중심의 premium focus entry surface**로 재설계하기 위한 기준 문서다. 이 문서는 `/app`**`goal + duration + atmosphere` 중심의 premium focus entry surface**로 재설계하기 위한 기준 문서다.
관련 문서: 관련 문서:
- `../../product_principles.md` - `../../product_principles.md`
- `../../current_context.md` - `../../current_context.md`
- `09_app_entry_detailed_spec.md`
- `14_weekly_review_reframe_spec.md` - `14_weekly_review_reframe_spec.md`
- `15_app_stats_entry_flow_spec.md` - `15_app_stats_entry_flow_spec.md`
- `18_paused_session_reentry_spec.md` - `18_paused_session_reentry_spec.md`
@@ -27,7 +26,7 @@ Last Updated: 2026-03-16
- 첫 진입에서 VibeRoom만의 premium 감각이 충분히 전달되지 않는다 - 첫 진입에서 VibeRoom만의 premium 감각이 충분히 전달되지 않는다
따라서 `/app`은 다시 planning home으로 돌아가면 안 되지만, 따라서 `/app`은 다시 planning home으로 돌아가면 안 되지만,
**goal + duration + atmosphere`를 한 화면에서 직관적으로 결정하는 premium entry stage**로 진화할 필요가 있다. **`goal + duration + atmosphere`를 한 화면에서 직관적으로 결정하는 premium entry stage**로 진화할 필요가 있다.
핵심은 이것이다. 핵심은 이것이다.
@@ -444,4 +443,3 @@ Last Updated: 2026-03-16
- `/app`이 planner/dashboard처럼 보이지 않는다 - `/app`이 planner/dashboard처럼 보이지 않는다
- paused session에서는 resume gate가 새 entry shell보다 우선한다 - paused session에서는 resume gate가 새 entry shell보다 우선한다
- `70분` 같은 custom duration이 실제 세션 길이로 반영된다 - `70분` 같은 custom duration이 실제 세션 길이로 반영된다

View File

@@ -9,14 +9,9 @@ Last Updated: 2026-03-15
- takeover confirm sheet에서만 current paused session을 정리하고 single-goal start 상태로 넘어간다 - takeover confirm sheet에서만 current paused session을 정리하고 single-goal start 상태로 넘어간다
- silent abandon을 막기 위해 server `startSession()`도 current session 존재 시 direct start를 거절하도록 정리했다 - silent abandon을 막기 위해 server `startSession()`도 current session 존재 시 direct start를 거절하도록 정리했다
- explicit confirm 이후에만 `abandon -> 새 목표 입력` 흐름이 가능하다 - explicit confirm 이후에만 `abandon -> 새 목표 입력` 흐름이 가능하다
- `/app` single-goal commitment gate 재구성: - `/app` 기존 single-goal commitment gate는 legacy로 내려갔다:
- 2-step `goal -> ritual` flow 제거 - 2-step `goal -> ritual` flow 제거하고, current session이 있으면 `Resume` UI를 우선 노출하도록 정리했다
- current session이 있으면 `Resume` UI를 우선 노출하고, `/space`로 바로 이어가기만 제안하되 review entry는 조용한 secondary link로 유지 - 현재 source-of-truth는 `goal + duration + atmosphere` 중심의 새 entry shell spec이다
- current session이 없으면 `goal 1개 + optional microStep 1개 + primary CTA`만 남긴 direct start 구조로 단순화
- `환경 세팅`, `블록 정리`, scene/sound/timer 선택을 메인 진입 경로에서 제거
- suggestion chip은 planner가 아니라 입력 마찰을 줄이는 용도로만 유지
- 시작 시에는 기본 ritual(`forest · 50/10 · forest-birds`)로 세션을 열고, 세부 조정은 `/space`에서 하도록 역할을 분리
- `/app`이 planner home이 아니라 commitment gate라는 역할을 문서와 구현 모두에서 다시 고정
- `/space` Refocus System slice 1 구현: - `/space` Refocus System slice 1 구현:
- HUD recovery layer를 `paused / refocus / next-beat / complete` 단일 overlay 상태로 정리 - HUD recovery layer를 `paused / refocus / next-beat / complete` 단일 overlay 상태로 정리
- pause 직후 바로 편집 시트를 열지 않고, 작은 recovery prompt를 먼저 노출 - pause 직후 바로 편집 시트를 열지 않고, 작은 recovery prompt를 먼저 노출
@@ -100,11 +95,10 @@ Last Updated: 2026-03-15
- Calm Session OS 유료화 축 구현: - Calm Session OS 유료화 축 구현:
- Free는 기본 시작, Pro는 더 잘 이어가기를 파는 구조로 재정의 - Free는 기본 시작, Pro는 더 잘 이어가기를 파는 구조로 재정의
- old `Scene Packs / Sound Packs / Profiles` 중심 copy를 `Daily Focus Plan / Rituals / Weekly Review` 중심으로 교체 - old `Scene Packs / Sound Packs / Profiles` 중심 copy를 `Daily Focus Plan / Rituals / Weekly Review` 중심으로 교체
- `/app` route를 Session OS focus entry surface로 복구: - `/app` route를 focus entry surface로 복구:
- `/app` route가 `/space` redirect 대신 `FocusDashboardWidget`을 렌더링 - `/app` route가 `/space` redirect 대신 `FocusDashboardWidget`을 렌더링
- current/next summary card와 list-first 구조를 제거하고, entry hero가 above-the-fold를 차지한 - current/next summary card와 list-first 구조를 제거
- 현재는 current session이 있으면 resume, 없으면 `goal + microStep + start`만 제안하는 single-goal entry로 정리됐 - 현재는 `Resume` gate가 구현되어 있고, no-session entry shell은 다음 slice에서 `goal + duration + atmosphere` 구조로 교체될 예정이
- scene/sound/timer는 기본 ritual로 시작하고, 세부 조정은 `/space`에서 담당한다
- 플랜 tier 공유 store 추가: - 플랜 tier 공유 store 추가:
- `entities/plan/model/usePlanTier.ts` 추가 - `entities/plan/model/usePlanTier.ts` 추가
- localStorage 기반 Free/Pro 상태를 `/app`, `/space`, `/stats`, dock paywall에서 공통 사용 - localStorage 기반 Free/Pro 상태를 `/app`, `/space`, `/stats`, dock paywall에서 공통 사용
@@ -124,12 +118,12 @@ Last Updated: 2026-03-15
- 기존 `focus-summary` 응답을 주간 review view model로 변환해서 사용 - 기존 `focus-summary` 응답을 주간 review view model로 변환해서 사용
- recovery는 서버의 `pause 뒤 복귀` 집계를 사용하고, `자리 비움 뒤 복귀`만 limited note로 남긴다 - recovery는 서버의 `pause 뒤 복귀` 집계를 사용하고, `자리 비움 뒤 복귀`만 limited note로 남긴다
- `/app -> /stats` primary entry의 1차 연결: - `/app -> /stats` primary entry의 1차 연결:
- current session이 없고 최근 7일 데이터가 충분할 때 `/app` hero 아래에 low-emphasis `Weekly Review` teaser를 노출한다 - current session이 없고 최근 7일 데이터가 충분할 때 `/app`의 quiet secondary review dock에서 `Weekly Review` entry를 노출한다
- teaser는 `/stats`로 연결되며, hero CTA보다 한 단계 아래 시각 우선순위를 유지한 - resume 상태에서는 paused gate 안의 조용한 secondary entry로 review를 연
- `/stats -> /app` handoff의 2차 연결: - `/stats -> /app` handoff의 2차 연결:
- `/stats` 마지막 CTA는 `/app?review=weekly&carryHint=...&entryPreset=forest-50-10`으로 연결된다 - `/stats` 마지막 CTA는 `/app?review=weekly&carryHint=...&entryPreset=forest-50-10`으로 연결된다
- `/app`은 이 query를 받아 hero review-aware return hint를 노출한다 - `/app`은 이 query를 받아 entry stage review-aware return hint를 노출한다
- goal과 microStep은 자동 입력하지 않고, 방향만 가볍게 제안한다 - goal과 duration은 자동 입력하지 않고, 방향만 가볍게 제안한다
- Pro personalized handoff 3차 연결: - Pro personalized handoff 3차 연결:
- Pro에서는 `/stats` carry-forward 섹션에 추천 ritual을 함께 보여준다 - Pro에서는 `/stats` carry-forward 섹션에 추천 ritual을 함께 보여준다
- `/stats` 마지막 CTA 카피가 generic start가 아니라 `가장 잘 맞은 ritual로 /app 돌아가기`로 바뀐다 - `/stats` 마지막 CTA 카피가 generic start가 아니라 `가장 잘 맞은 ritual로 /app 돌아가기`로 바뀐다
@@ -314,9 +308,9 @@ Last Updated: 2026-03-15
## NEXT ## NEXT
1. `/app` single-goal commitment gate 브라우저 스모크 1. `/app` atmosphere entry shell 구현
2. `/space` intent HUD / refocus / goal-complete hierarchy QA 2. custom duration contract 정리
3. `/stats` factual summary / trend / refresh 브라우저 QA 3. weekly review dock 위치 재설계
## RISKS ## RISKS

View File

@@ -82,12 +82,12 @@ Last Updated: 2026-03-15
- recovery tray가 열리면 base card는 자동으로 collapsed 상태를 유지한다. - recovery tray가 열리면 base card는 자동으로 collapsed 상태를 유지한다.
- expanded rail은 outside click으로 접히지만, decision tray는 outside click으로 닫히지 않는다. - expanded rail은 outside click으로 접히지만, decision tray는 outside click으로 닫히지 않는다.
- rail 클릭은 펼침/접힘만 담당하고, 수정은 expanded 상태의 `수정` 액션으로만 진입한다. - rail 클릭은 펼침/접힘만 담당하고, 수정은 expanded 상태의 `수정` 액션으로만 진입한다.
- `/app` single-goal commitment gate로 다시 줄였다. - `/app`은 legacy single-goal gate에서 `goal + duration + atmosphere` 중심의 새 entry shell로 전환 중이다.
- 2-step ritual setup을 제거했다. - current session이 있으면 `Resume` gate가 우선 노출된다.
- current session이 있으면 `Resume` UI만 보여주고, `/space`로 이어가기만 제안한다. - no-session 상태는 `goal 1개 + 예상 시간 + 선택된 atmosphere + 시작 CTA` 구조로 재설계 중이다.
- current session이 없으면 `goal 1개 + optional microStep 1개 + 바로 시작`만 남긴다. - `microStep``/app`에서 제거하고 `/space` recovery/refocus에서만 다시 잡는다.
- scene/sound/timer는 기본 ritual로 시작하고 `/space`에서 바꾸게 둔다. - weekly review는 hero 아래 카드가 아니라 quiet secondary dock/entry로 유지한다.
- manage/list 성격의 affordance는 메인 진입 경로에서 제거했다. - manage/list 성격의 affordance는 메인 진입 경로에서 계속 배제한다.
- `/space`는 execution-only surface로 정리됐다. - `/space`는 execution-only surface로 정리됐다.
- setup drawer에서 Daily Plan / Ritual Library 섹션을 제거했다. - setup drawer에서 Daily Plan / Ritual Library 섹션을 제거했다.
- goal, scene, sound, timer만 확인하고 focus HUD로 진입한다. - goal, scene, sound, timer만 확인하고 focus HUD로 진입한다.
@@ -100,8 +100,9 @@ Last Updated: 2026-03-15
- 기존 `focus-summary` 응답은 review view model로 변환해서 쓴다. - 기존 `focus-summary` 응답은 review view model로 변환해서 쓴다.
- recovery는 서버의 `pause 뒤 복귀` 집계를 사용하고, `away recovery`만 limited state로 남긴다. - recovery는 서버의 `pause 뒤 복귀` 집계를 사용하고, `away recovery`만 limited state로 남긴다.
- `/app`에서 `/stats`로 들어가는 primary path 1차가 생겼다. - `/app`에서 `/stats`로 들어가는 primary path 1차가 생겼다.
- current session이 없고 최근 7일 데이터가 충분하면 hero 아래에 weekly review teaser가 보인다. - current session이 없을 때는 quiet review dock에서 `/stats`로 진입할 수 있다.
- teaser는 `/stats`로 이동시키되, main start CTA보다 낮은 강조로 유지한다. - paused session 상태에서도 resume gate 안에 조용한 secondary review entry가 남는다.
- review entry는 main start/resume CTA보다 항상 낮은 강조를 유지한다.
- `/app` Resume 상태에서도 weekly review entry가 보이게 정리했다. - `/app` Resume 상태에서도 weekly review entry가 보이게 정리했다.
- review primary entry가 active session 상태에서 사라지지 않도록, resume card 안에 조용한 secondary review link를 추가했다. - review primary entry가 active session 상태에서 사라지지 않도록, resume card 안에 조용한 secondary review link를 추가했다.
- `/stats` 마지막 CTA의 `/app` return handoff가 연결됐다. - `/stats` 마지막 CTA의 `/app` return handoff가 연결됐다.

View File

@@ -99,7 +99,7 @@
- `/app` paused resume - `/app` paused resume
- `/app -> /stats -> /app` - `/app -> /stats -> /app`
- `/space` pause / return / next beat / complete - `/space` pause / return / next beat / complete
- `/space` complete -> setup -> weekly review teaser - `/space` complete -> setup -> weekly review entry
- 제외 범위: - 제외 범위:
- new feature 추가 금지 - new feature 추가 금지
- 완료 조건: - 완료 조건: