2a89d52634
merge: 인스타 슬레이트 패키지 다운로드 버튼
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-06 13:39:49 +09:00
6958714021
fix: 다운로드 버튼 hover 색상 일관성 (a.ic-btn color inherit)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-06 13:06:52 +09:00
52677c606a
feat: 인스타 슬레이트 패키지 다운로드 버튼
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-06 13:03:43 +09:00
5b29854251
feat: 보유종목 탭 현재가 표시 + 빈상태 문구 수정
...
- HoldingCard 헤더에 h.close 현재가 표시 (null guard, toLocaleString 천단위)
- Stock.css에 .hi-card__close 추가 (#94a3b8, 11px, margin-right 4px)
- !loading && !error && !data 분기 메시지 '데이터를 불러오는 중입니다.' → '데이터가 없습니다.'
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 22:38:11 +09:00
597e6504e1
feat: 주식 보유종목 인텔리전스 탭 (액션·이슈·포트건강)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 22:32:35 +09:00
dacd01e6b9
feat: 로또 백테스트 탭 UI 폴리시 (1·2등 컬럼·빈 상태·차트 박스 CSS)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 18:13:32 +09:00
a57ac23064
feat: 로또 자율학습 탭 — 성적표·캘리브레이션·당첨조합 분석
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-31 18:07:03 +09:00
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
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
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