Commit Graph

394 Commits

Author SHA1 Message Date
ecc1ab0954 fix(agent-office/LogTab): 최신 로그가 보이도록 스크롤을 맨 위로 이동 2026-05-29 07:42:37 +09:00
d8dcf682c4 Migrate saju service UI 2026-05-28 03:16:42 +09:00
86f020182a feat(agent-office/LogTab): source 뱃지 + access 메타데이터 표시 + 5초 폴링 2026-05-28 02:48:56 +09:00
d29fdac4a0 chore(saju-ui-v2): v1 components/ + Saju.css 일괄 삭제 (Phase 6 cleanup) 2026-05-27 07:48:32 +09:00
be762e1ee8 feat(saju-ui-v2): CompatibilityResult.jsx v2 — 점수 + 요약 + strengths/challenges 2026-05-27 07:47:39 +09:00
1664fbda09 feat(saju-ui-v2): Compatibility.jsx — placeholder → 두 사람 입력 폼 + compat API 2026-05-27 07:47:22 +09:00
3c64a4604f feat(saju-ui-v2): match.desktop.jsx — max-width 900 wrapper 2026-05-27 07:47:12 +09:00
29f37a1642 feat(saju-ui-v2): match.mobile.jsx — 두 사람 입력 폼 (PersonForm + IconHeart) 2026-05-27 07:47:07 +09:00
e1804ad181 feat(saju-ui-v2): Today.jsx v2 진입 + 4 state branches 2026-05-27 07:45:13 +09:00
6fdc2593be feat(saju-ui-v2): today.desktop.jsx — max-width 720 wrapper 2026-05-27 07:44:52 +09:00
9bc31d23f5 feat(saju-ui-v2): today.mobile.jsx — FortuneRing + 4 ScoreCard + LuckyBox + signs 2026-05-27 07:44:47 +09:00
0d1e8b3c2d feat(saju-ui-v2): SajuResult.jsx v2 진입 + Empty/Loading/Error state 2026-05-27 07:43:12 +09:00
f8874b2aea feat(saju-ui-v2): saju.desktop.jsx — 4탭 유지 + max-width 900 컨테이너 2026-05-27 07:42:50 +09:00
da694266d4 feat(saju-ui-v2): saju.mobile.jsx — 4탭 (Basic/Chart/Flow/Traits) + 실 schema 매핑 2026-05-27 07:42:03 +09:00
1bf1f1405b feat(saju-ui-v2): Saju.jsx — useViewportMode 분기 + Home v2 진입 2026-05-27 02:12:25 +09:00
e0834b1275 feat(saju-ui-v2): home.desktop.jsx — mt-wash 산수화 + 2-column hero 2026-05-27 02:11:52 +09:00
5acf7db27c feat(saju-ui-v2): home.mobile.jsx — night hero + ActionCard×3 + 입력 폼 2026-05-27 02:10:47 +09:00
76c7bcc62b feat(saju-ui-v2): /saju/me 라우트 + Me 컴포넌트 lazy import 2026-05-27 02:07:24 +09:00
9453474c69 feat(saju-ui-v2): Me.jsx — placeholder + 비활성 4 카드 2026-05-27 02:06:52 +09:00
f924c25f16 feat(saju-ui-v2): DesktopHeader.jsx — 로고 + 5 항목 horizontal nav 2026-05-27 02:06:23 +09:00
7d89a664aa feat(saju-ui-v2): BottomNav.jsx — 5 항목 + safe-area + active accent 2026-05-27 02:05:52 +09:00
50ec52ab6e feat(saju-ui-v2): PrimaryButton + GhostButton + InputRow 2026-05-27 02:05:08 +09:00
78e7e68bb0 feat(saju-ui-v2): OrnamentBloom + TopRibbon + OrnateFrame + TitleBlock 2026-05-27 02:03:59 +09:00
fd84e17f0b feat(saju-ui-v2): MascotBubble.jsx — 4 tone (ivory/navy/green/purple) + paw-bob 2026-05-27 02:03:03 +09:00
a6d52c9725 feat(saju-ui-v2): Mascot.jsx + 7 variant 매핑 test 2026-05-27 02:02:05 +09:00
cc9028ac3d feat(saju-ui-v2): Icons.jsx — 5 nav + IconPaw/Chevron/Sparkle 2026-05-27 02:00:45 +09:00
47b5eab3ff feat(saju-ui-v2): _shell/helpers — hexA/daeunLabel/deriveTraits/colorMap + tests 2026-05-27 01:58:26 +09:00
7f42c40efc feat(saju-ui-v2): useViewportMode hook (1024px breakpoint) + 3 tests 2026-05-27 01:55:58 +09:00
d34bedcb4c feat(saju-ui-v2): shell.css — paper/night/mt-wash 배경 + screenIn/paw-bob 애니메이션 2026-05-27 01:53:45 +09:00
5f7e66c220 feat(saju-ui-v2): tokens.css — 디자인 변수 + 한글 폰트 토큰 (.saju-v2 scope) 2026-05-27 01:51:01 +09:00
6040d5fd7f fix(saju-ui-v2): index.html — Noto Serif KR link 복구 (v1 saju/tarot 페이지 폰트 회귀 방지)
spec: head 내 <title> 다음 줄에 기존 Noto Serif KR 링크를 복구.
이전 커밋(dd719f5)에서 링크를 삭제한 것을 수정.

최종 헤드에 포함:
- 2x preconnect (googleapis, gstatic)
- 1x Noto Serif KR stylesheet (복구)
- 1x Nanum/Gowun stylesheet (유지)

v1 saju/tarot 페이지의 'Noto Serif KR' font-family 참조 유지.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-27 01:48:28 +09:00
dd719f5b2e feat(saju-ui-v2): Google Fonts (Nanum Myeongjo/Gothic/Gowun Batang) preconnect + link 2026-05-27 01:46:27 +09:00
e91b7feada chore: .gitignore에 .worktrees/ 추가 (worktree 격리 작업 보호) 2026-05-27 01:43:26 +09:00
ac098faeea chore(saju-v1): horyung-main + background PNG 자산 추가
호령 캐릭터 메인 PNG와 배경 자산을 main에 commit. v2 리디자인의
Mascot variant=full 매핑 + worktree 격리 작업에 필요.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 01:43:04 +09:00
6e5aabc94c feat(saju): 궁합보기 v2 placeholder + SajuNav 통합 2026-05-26 08:36:40 +09:00
69d17f787a feat(saju): 오늘운세 페이지 (FortuneRing + 4 ScoreCard + LuckyBox + good_signs/warnings) 2026-05-26 08:35:41 +09:00
435e6fb1bc feat(saju): 오늘운세 컴포넌트 3개 (FortuneRing + ScoreCard + LuckyBox) 2026-05-26 08:33:52 +09:00
2d2895c9a4 feat(saju): 사주풀이 결과 페이지 (4기둥 + 오행 + 12개월 + AI 12항목) 2026-05-26 08:32:35 +09:00
36665ec308 feat(saju): 사주풀이 5 컴포넌트 + useSajuReading hook 2026-05-26 08:31:10 +09:00
2dd92d025f feat(saju): 메인 페이지 정식 구현 (호령 hero + 3 ActionCard + 입력 폼) 2026-05-26 08:28:46 +09:00
66be5105a8 feat(saju): useSajuForm + SajuInputForm + ActionCard 2026-05-26 08:27:12 +09:00
c274a8f5e7 feat(saju): HoryungMascot + SajuNav 공통 컴포넌트 2026-05-26 08:25:37 +09:00
8fd7f83586 feat(saju): Saju.css 컬러 토큰 + 폰트 + 격리 + Noto Serif KR Google Fonts 2026-05-26 08:23:00 +09:00
3e30612b38 feat(saju): 호령 캐릭터 PNG 6개 추출 (horyung.png + saju_color_sheet.png)
PIL-based extraction script with measured crop coordinates:
- horyung.png (1055x1491, 3-view layout): bust shot + front view
- saju_color_sheet.png (1536x1024, 6 emotion stickers row):
  greeting, thinking, pointing, happy (left 4 of 6)

Output files (public/images/saju/horyung/):
- horyung-bust.png (590x478)
- horyung-front.png (697x507)
- horyung-greeting.png (150x216)
- horyung-thinking.png (150x216)
- horyung-pointing.png (150x216)
- horyung-happy.png (150x216)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 08:20:36 +09:00
eab52ca424 feat(saju): api helpers (saju + compat) + 라우트 + 아이콘 + placeholder pages 2026-05-25 20:31:35 +09:00
e634cdedba feat(api): tarot endpoint를 /api/tarot/* 로 이전 (agent-office 분리) 2026-05-25 18:56:40 +09:00
192c8a8c8c fix(tarot): 랜딩 영상 element 복원 + scroll-cue 제거
- codex UI 재구성 시 <video> element 자체와 .tarot__hero-video CSS가
  누락되어 영상 재생 불가 (poster img만 정적 표시).
- <video> 복원 (autoplay, loop, muted, playsInline) + poster fallback.
- CSS z-index 0으로 poster 위, overlay(1) 아래에 stack.
- prefers-reduced-motion @media display:none 동작 복원.
- 사용자 요청에 따라 tarot__scroll-cue 제거.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 14:56:35 +09:00
a6721e6536 fix(tarot): 해석 완료 시 자동 AI 탭 전환 + 새 리딩 시 해석 state 잔존 버그
Issue 1 — 우측 패널 탭이 hardcoded is-active로 클릭/state 없음:
- InterpretationPanel에 activeTab state 추가
- useEffect로 interpretation 도착 시 자동 'ai' 탭 전환, 없으면 'card'
- 두 탭 콘텐츠 분리: card=카드 의미·상징·조언, ai=위치 해석·종합·상호작용·근거

Issue 2 — useTarotReading hook의 interpretation이 새 리딩 시작에 잔존:
- hook에 reset() 함수 추가 (status/interpretation/readingId/error 초기화)
- Reading.jsx의 startShuffle/openCardSpread/restart/resetCards/changeSpread
  5개 액션에서 모두 reset() 호출 — 새 리딩 시작 시 이전 해석 완전 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 14:53:31 +09:00
94569a4c45 Enhance tarot reading experience 2026-05-24 12:39:20 +09:00
6d73a075f7 feat(tarot): 랜딩 상단 nav + account 제거, ARCANA TAROT brand만 유지
topbar wrapper 제거, brand가 hero-content 직속 첫 자식이 됨.
nav(오늘의 카드/타로 리딩/스프레드/가이드/마이 페이지) + account(프리미엄/로그인)
모두 제거 — brand 단독으로 좌상단 표시.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 02:04:12 +09:00