- SpaceWorkspaceWidget 내 순환 참조를 피하기 위해 하드코딩되었던 `shouldPlay: false` 문제 해결
- 핵심 UI 상태(workspaceMode, previewPlaybackState 등)를 SpaceWorkspaceWidget 최상단으로 끌어올림(Lifting State Up)
- useHudStatusLine의 중복 호출 제거
- normalizeMediaManifest에서 빈 데이터 수신 시 DEFAULT_MEDIA_MANIFEST를 활용하도록 수정
- 매니페스트 로드 실패 시 상세 정보(URL, 상태 코드)를 에러 메시지에 포함
- useMediaCatalog에서 fetch 에러 발생 시 명시적으로 로컬 기반 매니페스트를 적용하도록 보강
- SpaceWorkspaceWidget 로직을 전용 훅 및 유틸리티로 분리 (900줄 -> 300줄)
- useSpaceWorkspaceSelection 훅을 기능별(영속성, 진단 등) 소형 훅으로 분리
- SpaceToolsDockWidget의 상태 및 핸들러 로직 추출
- 거대 i18n 번역 파일(ko.ts)을 도메인별 메시지 파일로 구조화
- AdminConsoleWidget 누락분 추가 및 미디어 엔티티 타입 오류 수정
맥락:
- space stage 배경 pan 애니메이션 중 가장자리 빈틈이 보일 수 있었다.
- 관련 코드와 세션 문서 상태를 함께 맞춰둘 필요가 있었다.
변경사항:
- SpaceWorkspaceWidget 의 stage background layer 를 로 확장했다.
- 90_current_state, session_brief 에 overscan 보정과 관련 리스크를 반영했다.
- work.md 를 다음 브라우저 QA 작업 기준으로 갱신했다.
검증:
- npx tsc --noEmit
세션-상태: stage 배경 overscan 보정과 문서 정리를 마쳤다.
세션-다음: forest/green-forest manifest 변형을 실제 브라우저에서 QA 한다.
세션-리스크: overscan 으로 좁은 화면에서 배경 crop 체감이 조금 더 커질 수 있다.
맥락:
- /space 에서 forest 배경이 remote manifest asset 대신 기본 이미지로 조용히 fallback 될 수 있었다.
- scene key alias 와 manifest 실패 상태가 코드상 드러나지 않아 원인 추적이 어려웠다.
변경사항:
- media scene asset key 를 alias-aware 하게 정규화하고 asset source(fallback|remote) 메타를 추가했다.
- useMediaCatalog 가 remote manifest 실패와 fallback 사용 여부를 노출하도록 보강했다.
- SpaceWorkspaceWidget 에서 manifest 실패와 scene fallback 사용을 진단 로그/상태 메시지로 남기도록 정리했다.
- docs/work.md, docs/90_current_state.md, docs/session_brief.md 를 이번 작업 기준으로 갱신했다.
검증:
- npx tsc --noEmit
세션-상태: /space 배경 asset lookup 과 manifest fallback 진단을 보강했다.
세션-다음: forest/green-forest manifest 변형을 실제 브라우저에서 QA 한다.
세션-리스크: alias 목록 밖의 legacy scene id 는 추가 정규화가 필요할 수 있다.
맥락:
- space 진입 직후 목표를 확정하면 하단 HUD 위에 GoalFlashOverlay가 노출되어 상단 토스트 흐름과 UI 기준점이 분리되어 있었다.
변경사항:
- GoalFlashOverlay 컴포넌트를 제거했다.
- SpaceFocusHudWidget에서 집중 진입 시점과 paused -> running 복귀 시점의 목표 안내를 onStatusMessage로 올리도록 변경했다.
- 목표 안내가 기존 FocusTopToast를 통해 상단에서 일관되게 보이도록 정리했다.
검증:
- npm run lint
세션-상태: 목표 안내가 하단 오버레이 없이 상단 토스트만 사용하는 상태
세션-다음: 실제 사운드/배경 적용 시 상단 상태 메시지 우선순위를 함께 점검
세션-리스크: 연속 상태 메시지가 짧은 간격으로 발생하면 토스트 큐 길이에 따라 일부 메시지가 뒤로 밀릴 수 있음
맥락:
- 실제 세션 엔진과 통계·설정 저장을 백엔드와 연결할 프론트 API 경계를 먼저 정리할 필요가 있었다.
변경사항:
- focus session, stats, preferences API 계층과 타입을 추가하고 메서드 주석에 Backend Codex 지시 사항을 작성했다.
- /space를 현재 세션 조회, 시작, 일시정지, 재개, 다시 시작, 완료, 종료 API 흐름에 연결하고 API 실패 시 로컬 미리보기 fallback을 유지했다.
- /stats와 /settings를 API 기반 fetch/save 구조로 전환하고 auth/apiClient를 보강했다.
- React 19 규칙에 맞게 관련 훅과 HUD/시트 구현을 정리해 lint/build가 통과하도록 보정했다.
검증:
- npm run lint
- npm run build
세션-상태: 프론트에서 세션·통계·설정 API를 호출할 준비가 된 상태
세션-다음: 백엔드가 주석에 맞춘 엔드포인트와 응답 스키마를 구현하도록 협업
세션-리스크: 실제 서버 응답 필드명이 현재 타입과 다르면 프론트 매핑 조정이 추가로 필요
맥락:
- /space 재진입 시 마지막 목표를 다시 쓰게 되어 시작 마찰이 컸다.
- work.md 작업 2 요구사항에 맞춰 목표 기반 Resume CTA를 진입 의식 안에 추가했다.
변경사항:
- workspace localStorage 스키마에 goal 필드를 추가하고 저장/복원에 반영했다.
- Setup Ritual에 지난 한 조각 이어서 블록을 추가했다.
- 이어서 시작은 저장 목표로 즉시 Focus 전환, 새로 시작은 목표 초기화 후 새 세션 입력으로 전환하도록 연결했다.
- session 문서 docs/session_brief.md, docs/90_current_state.md를 최신 상태로 갱신했다.
검증:
- npx tsc --noEmit
세션-상태: Resume CTA와 목표 복원 흐름이 /space 진입에 반영됨
세션-다음: Goal Complete 루프와 Recover(Notes→Inbox) 플로우 마감
세션-리스크: localStorage 기반 복원이라 다중 탭/스토리지 초기화 시 세션 연속성이 약할 수 있음
맥락:
- workflow 실행 후 세션 복구 문서가 최신 구현 상태를 반영해야 다음 턴 복구 품질이 유지됩니다.
변경사항:
- 90_current_state의 DONE/NEXT/RISKS/CHANGED FILES를 최신 커밋 기준으로 갱신했습니다.
- session_brief의 우선순위와 최근 세션 상태를 Packs/Paywall/Feedback 구조로 압축 업데이트했습니다.
검증:
- npx tsc --noEmit
세션-상태: 문서 기준점이 최신 Focus/Plan/Paywall UX와 일치함
세션-다음: 선택 작업(Profiles 더미 슬롯) 여부 결정 후 구현
세션-리스크: docs/work.md는 사용자 작업 입력 파일로 워킹트리에 유지
맥락:
- Focus 경험을 해치지 않으려면 결제 시트는 잠금 항목을 클릭한 의도 순간에만 열려야 합니다.
변경사항:
- Plan Pill(NORMAL) 클릭 시 Paywall을 바로 열지 않고 상태 안내만 노출하도록 조정했습니다.
- 잠금 카드 클릭에서만 Paywall이 열리도록 트리거를 단일화했습니다.
- Paywall Sheet를 3개 가치 포인트 + 2개 CTA 중심의 간결한 구조로 리디자인했습니다.
검증:
- npx tsc --noEmit
세션-상태: Paywall 노출이 잠금 클릭 의도 기반으로만 동작함
세션-다음: (선택) Profiles 저장/불러오기 더미 슬롯을 Packs 영역에 추가 가능
세션-리스크: NORMAL 사용자가 Plan Pill에서 업그레이드 진입을 기대할 수 있어 UX 카피 미세 조정 여지
맥락:
- Control Center에서 Pro 기능이 설정 패널처럼 과밀하게 보이면 Focus 흐름이 끊깁니다.
변경사항:
- Quick Controls의 추천 조합 영역에서 클릭 버튼을 제거하고 정보 1줄만 남겼습니다.
- 하단에 Scene Packs/Sound Packs/Profiles 요약 카드를 추가해 확장 기능을 조용한 카드 형태로 수납했습니다.
- 기본 Scene/Time/Sound는 선택 중심으로 유지하고 Packs 잠금 클릭만 별도 동선으로 연결했습니다.
검증:
- npx tsc --noEmit
세션-상태: Control Center가 Scene/Time 중심 + 조용한 Packs 확장 구조로 정리됨
세션-다음: 잠금 카드 클릭 기반 Paywall 시트를 의도 기반 메시지로 간결화
세션-리스크: Plan Pill normal 클릭 시 paywall 오픈 동선은 다음 커밋에서 제거 예정
맥락:
- Pro 가치는 기본 기능 잠금이 아니라 확장/개인화 영역에서 명확히 보여야 합니다.
변경사항:
- plan 모델에 Pro 기능 카드를 Scene Packs/Sound Packs/Profiles로 재정의했습니다.
- Quick Controls의 기본 Scene/Time/Sound 선택에서 잠금 로직을 제거해 코어 기능을 Free로 유지했습니다.
- Pro 기능 카드를 Control Center 하단 확장 영역으로 이동하고, 잠금 클릭 시 Paywall 트리거 경로를 연결했습니다.
검증:
- npx tsc --noEmit
세션-상태: 기본 조작은 Free, Pro는 확장 카드 기반 잠금 구조로 전환됨
세션-다음: Control Center 하단 영역을 더 조용한 요약 카드 톤으로 다듬고 추천 조합 라인을 비인터랙티브로 정리
세션-리스크: Plan Pill normal 클릭 동선은 paywall 트리거 정책과 추가 정합 조정이 남아 있음
맥락:
- 코어 집중 루프에서 기본 타이머와 기본 사운드 잠금은 사용자 신뢰와 진입 전환을 떨어뜨립니다.
변경사항:
- Pro 잠금 타이머 목록에서 90/20 잠금을 제거했습니다.
- 기본 사운드 잠금 목록을 비워 Quick/기본 선택이 Free에서 동작하도록 정리했습니다.
검증:
- npx tsc --noEmit
세션-상태: 기본 타이머/기본 사운드가 Free 정책으로 개방됨
세션-다음: Pro 잠금 대상을 Packs/Profiles 중심으로 재배치
세션-리스크: 화면 컴포넌트에 남은 잠금 표현 로직 정리는 다음 커밋에서 반영 예정
맥락:
- Focus 화면에서 토스트 위치가 Notes 저장/Goal 완료 상황마다 달라져 가독성과 일관성이 떨어졌습니다.
변경사항:
- HUD 내부 status line 렌더를 제거하고 상단 중앙 고정 토스트 컴포넌트를 추가했습니다.
- /space 루트에서 activeStatus를 상단 중앙 토스트로만 표시하도록 피드백 채널을 단일화했습니다.
- Undo 액션은 상단 중앙 토스트 내부 링크로 동일하게 노출되도록 유지했습니다.
검증:
- npx tsc --noEmit
세션-상태: Focus 피드백 채널이 상단 중앙 1곳으로 통일됨
세션-다음: work.md 작업 1부터 Pro/플랜 잠금 정책 재구성 진행
세션-리스크: 기존 lint 규칙의 set-state-in-effect 오류는 별도 축으로 남아 있음
맥락:
- workflow 종료 규칙에 따라 최근 구현(토글 제거, 표시 정책 옵션)의 상태를 세션 복구 문서에 반영해야 했습니다.
변경사항:
- docs/90_current_state.md DONE/NEXT/CHANGED FILES를 Focus-First 전환과 컨트롤 자동 숨김 정책 기준으로 업데이트했습니다.
- docs/session_brief.md 최근 세션 상태를 최신 구조(토글 제거, 정책 옵션 추가)로 갱신했습니다.
검증:
- 문서 갱신 작업(코드 검증 없음)
세션-상태: 세션 복구 문서가 최신 Focus-First 구조를 반영합니다.
세션-다음: 추천 매핑 품질과 override UX 체감 검증을 진행합니다.
세션-리스크: docs/work.md는 사용자 편집 상태로 워크트리에 남아 있습니다.
맥락:
- Focus-First 구조에서 패널을 열어둔 채 방치되면 몰입 흐름이 깨질 수 있어, 모드 토글이 아닌 표시 정책 기반 정리가 필요했습니다.
변경사항:
- Quick Controls 패널 하단에 컨트롤 자동 숨김 옵션을 추가했습니다.
- 옵션은 Focus 화면 상시 UI가 아닌 패널 내부에서만 노출되도록 제한했습니다.
- 옵션 ON 상태에서 Control Center가 열려 있고 입력이 없으면 8초 후 패널이 자동으로 닫히도록 UI 상태 로직을 추가했습니다.
- 모드 전환 토스트는 추가하지 않고 상태 변화만 반영했습니다.
검증:
- npx tsc --noEmit
세션-상태: 컨트롤 자동 숨김 정책으로 설정 후 자연스럽게 몰입 화면으로 복귀됩니다.
세션-다음: Scene 추천 매핑 품질과 override UX 체감 검증을 진행합니다.
세션-리스크: 자동 닫힘 8초 타이밍은 실사용 피드백에 따라 추가 조정이 필요할 수 있습니다.
맥락:
- 몰입모드 토글은 상태 인지 비용을 높여 집중 흐름을 끊고, Quick Controls 헤더를 대시보드형으로 보이게 만들고 있었습니다.
변경사항:
- Quick Controls에서 기본/몰입 모드 토글 UI를 완전히 제거했습니다.
- Focus 화면의 HUD 톤은 외부 모드 상태 없이 항상 몰입 톤으로 렌더링되도록 고정했습니다.
- workspace/tools-dock/focus-hud 간 모드 토글 상태 전달 경로를 정리해, 컨트롤은 패널을 열었을 때만 보이는 Focus-First 흐름으로 단순화했습니다.
검증:
- npx tsc --noEmit
세션-상태: 모드 토글 없이 패널 열림 상태만으로 컨트롤 노출이 정의됩니다.
세션-다음: (선택) 컨트롤 자동 숨김 표시 정책 옵션을 패널 내부에 추가합니다.
세션-리스크: 자동 숨김 정책이 아직 없어 패널을 열어둔 채 방치되는 경우 수동 닫기가 필요합니다.
맥락:
- workflow 종료 규칙에 따라 최근 작업 상태를 세션 복구 문서에 반영해야 했습니다.
변경사항:
- docs/90_current_state.md DONE/CHANGED FILES에 Quick Controls 모드 재배치 내용을 추가했습니다.
- docs/session_brief.md 최근 세션 상태에 모드 UI 재배치와 HUD 연동 내용을 업데이트했습니다.
검증:
- 문서 갱신 작업(코드 검증 없음)
세션-상태: 세션 복구 문서가 최신 모드 UI 구조를 반영합니다.
세션-다음: work.md의 다음 우선순위(추천 매핑/override UX 검증)를 진행합니다.
세션-리스크: docs/work.md는 사용자 편집 상태로 워크트리에 남아 있습니다.
맥락:
- Quick Controls 헤더의 모드 토글이 대시보드형 느낌을 만들어 감성 톤을 해치고 있었습니다.
변경사항:
- Control Center 헤더에서는 모드 조작 UI를 제거하고 Plan Pill + 닫기만 유지했습니다.
- 패널 바디 첫 섹션에 기본/몰입 segmented pill을 배치하고, 선택 상태에 따라 저자극 스타일을 적용했습니다.
- 모드 설명 1줄(기본: 모든 컨트롤 표시, 몰입: 필수만 남기고 숨김)을 추가했습니다.
- 모드 상태를 workspace -> tools-dock -> focus-hud 경로로 연결해 HUD 톤 반영을 유지했습니다.
검증:
- npx tsc --noEmit
세션-상태: Quick Controls 헤더가 깔끔해지고 모드 선택이 패널 바디에서 동작합니다.
세션-다음: Scene 추천 매핑 품질 점검과 override UX 검증을 진행합니다.
세션-리스크: 모드 설명 문구의 톤/길이는 실제 사용성 테스트에서 추가 미세조정이 필요할 수 있습니다.
맥락:
- QuickControls Scene 가로 캐러셀의 브라우저 스크롤바 노출이 감성 톤을 해치고 있었습니다.
변경사항:
- 전역 스타일에 scrollbar-none 유틸을 추가해 크로스브라우저 스크롤바 숨김 규칙을 정의했습니다.
- Control Center Scene 캐러셀에 scrollbar-none 클래스를 적용했습니다.
- 요청에 따라 docs/01_ui_guidelines.md 현재 변경분을 함께 커밋했습니다.
검증:
- npx tsc --noEmit
세션-상태: QuickControls Scene 영역에서 스크롤은 유지되고 스크롤바는 노출되지 않습니다.
세션-다음: 다음 work.md 항목에 맞춰 구현을 이어갑니다.
세션-리스크: docs/work.md는 사용자 수정 상태로 워크트리에 남아 있습니다.
맥락:
- workflow 종료 규칙에 따라 현재 구현 상태와 다음 리스크를 세션 복구 문서에 반영해야 했습니다.
변경사항:
- docs/90_current_state.md의 DONE/NEXT/RISKS/CHANGED FILES를 Scene 추천 자동화, override, Control Center 단순화, 로컬 저장/복원 기준으로 업데이트했습니다.
- docs/session_brief.md의 현재 우선순위/최근 세션 상태/리스크를 최신 구현 상태로 압축 갱신했습니다.
검증:
- 문서 갱신 작업(코드 검증 없음)
세션-상태: 세션 복구 문서가 현재 코드 상태와 다음 작업 우선순위를 반영합니다.
세션-다음: work.md의 다음 작업 지시를 기준으로 구현을 이어갑니다.
세션-리스크: docs/work.md와 docs/01_ui_guidelines.md의 사용자 수정분은 별도 검토 없이 유지 중입니다.
맥락:
- 새로고침 시 Scene/Timer/Sound와 override가 초기화되면 추천 자동화 체감이 끊겨 사용성이 떨어졌습니다.
변경사항:
- /space workspace에 localStorage 기반 상태 저장/복원 키(viberoom:workspace-selection:v1)를 추가했습니다.
- sceneId, timerPresetId, soundPresetId, override.sound/timer를 저장하고 진입 시 복원하도록 반영했습니다.
- 복원 우선순위는 쿼리 파라미터 > 저장 상태 > Scene 추천값 순으로 정리했습니다.
검증:
- npx tsc --noEmit
세션-상태: 새로고침 후에도 마지막 Scene/Timer/Sound 및 override 상태가 유지됩니다.
세션-다음: 세션 문서(90_current_state/session_brief) 업데이트와 최종 정리를 진행합니다.
세션-리스크: 저장 포맷 변경 시 이전 localStorage 데이터와의 호환성 점검이 필요합니다.
맥락:
- 사운드 override는 우하단 Quick 변경에서 시작되는 규칙이 핵심이라, 코드 경로를 분명히 분리할 필요가 있었습니다.
변경사항:
- SpaceToolsDockWidget의 사운드 선택 콜백을 onQuickSoundSelect로 분리해 Quick 전환 경로를 명시했습니다.
- workspace에서 우하단 Quick 선택 콜백을 override.sound 활성화 핸들러에 직접 연결했습니다.
검증:
- npx tsc --noEmit
세션-상태: 우하단 Sound Quick 선택이 override.sound 규칙과 1:1로 연결됩니다.
세션-다음: (선택) Scene/Timer/Sound 및 override 상태를 로컬에 저장/복원합니다.
세션-리스크: Setup에서의 수동 사운드 선택도 override를 켜므로 UX 기대치 점검이 필요할 수 있습니다.
맥락:
- Control Center가 설정 패널처럼 무거워 보여 Focus 몰입 흐름에서 탐색 부담이 컸습니다.
변경사항:
- Control Center에서 Sound 섹션과 Preset Packs 섹션을 제거하고 Scene/Time 2개 핵심 섹션만 유지했습니다.
- 추천 정보를 비인터랙션 1줄(추천 사운드 · 추천 타이머)로 노출하도록 구성했습니다.
- 하단에 tertiary 액션 '추천으로 되돌리기'를 추가해 override 초기화 + 추천값 복원 진입점을 만들었습니다.
- 더 이상 사용하지 않는 quick pack 모델 파일을 제거했습니다.
검증:
- npx tsc --noEmit
세션-상태: Control Center가 Scene/Time 중심의 경량 구조로 정리되었습니다.
세션-다음: 우하단 Sound Quick 변경 시 override.sound가 명시적으로 적용되는 경로를 분리합니다.
세션-리스크: 추천 정보는 현재 텍스트 기반이라 향후 다국어/라벨 변경 시 매핑 점검이 필요합니다.
맥락:
- 목표 입력 후 바로 시작할 수 있도록 Scene 기반 추천값을 자동으로 채우되, 사용자가 직접 바꾼 값은 유지해야 했습니다.
변경사항:
- RoomTheme에 recommendedSoundPresetId, recommendedTimerPresetId 필드를 추가하고 각 Scene 더미 데이터에 추천 preset id를 매핑했습니다.
- /space 초기 진입 시 선택된 Scene 추천값으로 타이머/사운드 기본값이 설정되도록 초기화 로직을 정리했습니다.
- /space 상태에 override.sound/override.timer 플래그를 추가하고, Scene 변경 시 override가 false인 항목만 자동 동기화하도록 반영했습니다.
- 추천 복원 액션(추천으로 되돌림)을 위한 핸들러/props 경로를 workspace -> tools-dock -> control-center까지 연결했습니다.
검증:
- npx tsc --noEmit
세션-상태: Scene 추천 자동 적용과 override 기반 자동 동기화가 동작합니다.
세션-다음: Control Center를 Scene/Time 중심 구조로 단순화하고 추천 정보/되돌리기 UI를 적용합니다.
세션-리스크: Control Center UI가 아직 기존 구조(Sound/Pack 포함)라 다음 커밋에서 정리가 필요합니다.
맥락:
- /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 강화를 검토할 수 있습니다.
맥락:
- /space Setup Drawer가 설정 패널처럼 보여 프리미엄 라운지 톤이 약했습니다.
- 첫 진입에서 사용자가 설명보다 리추얼 흐름으로 행동하도록 시각 계층을 조정할 필요가 있었습니다.
변경사항:
- Setup Drawer 헤더 카피를 감성 톤으로 교체하고 섹션 레이블을 자연어 중심으로 정리했습니다.
- Space 썸네일 카드에 텍스트 전용 하단 그라데이션을 적용하고 선택 테두리/글로우를 은은하게 낮췄습니다.
- Goal 입력 라벨을 한 조각 중심 카피로 변경하고 보조 힌트를 추가했습니다.
- Goal 추천 칩을 기본 4개 + 더보기 토글로 바꿔 부담을 줄였습니다.
- Sound 프리셋을 무거운 버튼형에서 가벼운 pill 칩형으로 정리했습니다.
- Goal 미입력 시 시작 버튼 상단에 상태 안내 문구를 추가했습니다.
검증:
- npx tsc --noEmit
- npm run build
세션-상태: Setup Drawer가 설정 패널보다 입장 의식 흐름에 맞는 톤으로 정리되었습니다.
세션-다음: 실제 화면 확인 후 타이포/간격 미세 조정 여부를 판단합니다.
세션-리스크: 더보기 토글 상태는 현재 세션 동안만 유지됩니다.