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
840cc28043
feat(tarot): 반응형 풀-width 레이아웃 + clamp 기반 fluid sizing
...
랜딩:
- topbar로 brand + nav 같은 줄에 묶음 (시안 부합)
- hero content max-width 1200→1600px, padding clamp(24px,4vw,80px)
- h1 size clamp(40px,6vw,84px), margin clamp(40px,6vw,80px)
- sub max-width 520px→44ch + line-height
- tier-row repeat(auto-fit, minmax(240px,1fr)) — 큰 화면 자동 펼침
Reading:
- max-width 1280→1800px, padding clamp(20px,3vw,60px)
- grid columns clamp 기반 fluid (좌 22vw, 우 26vw)
- mid breakpoint 1280px에서 비율 보정, 1024px 이하 single column
History: max-width 960→1400px
Card grid: repeat(auto-fit) — 화면 폭 활용
640px 이하 step indicator wrap + cta wrap
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 01:40:13 +09:00
423304dce3
feat(tarot): 시안 기반 UI 재구성 — 랜딩 좌→우 그라데이션 + Reading 테이블 배경
...
랜딩(tarot_main_landing_page.png 참고):
- hero overlay를 full-screen dark에서 좌→우 그라데이션으로 변경
- 좌측만 어둡게 (텍스트 가독), 우측은 영상 선명히 노출
Reading(tarot_card_select_page.png 참고):
- tarot_table.png 배경 fixed (보라 신비 톤 + vignette)
- 상단 step indicator (질문 & 설정 → 카드 선택 → 해석)
- 패널 backdrop-filter blur + 금색 보더로 시안 느낌 강화
- 하단 남은 카드 row 미리보기 (12장)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 01:12:04 +09:00