Final reviewer flagged that the plan still showed the pre-polish RecipeHint
shape and tierGroups pipeline. Update the plan code blocks to match HEAD
so future implementers see the shipped pattern (partiallyKnown field,
.filter(...) drop, undiscoveredDimStyle opacity wrapper, module-scope
MAX_UNDISCOVERED_PER_TIER).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The idleSpriteWrapperStyle was using `keyframes.toString()` inside a JS
template literal, so Emotion's serializer hit the string-handling branch
and never injected the @keyframes block — the animation silently did
nothing. Switch to direct Keyframes-object interpolation inside css\`...\`
so Emotion registers the rule and returns the animation name.
Also add 'wheel' to ACTIVITY_EVENTS so desktop mouse-wheel scrolling on
the inner scrollable content area resets the idle timer (the existing
'scroll' listener on window only catches mobile/touch scroll).
Update the source plan doc to reflect the corrected idiom so future
implementers don't repeat the bug.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3-item ~3h plan covering codex slot hints with recipe ingredients (A-5),
idle-mood character yawn animation after 30s of inactivity (F-4), and
device-time-of-day root background palette (F-5). Wrapper-based approach
keeps CharacterSprite untouched.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Phase 0의 8개 항목 모두 다른 패턴/위치로 이미 구현되어 commits 90ba98f
및 3676d8b에 반영됨. plan은 스펙 추적을 위해 보존하되, 실제 코드와의
차이를 명시.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Granite + Apps-in-Toss + TDS 종속성을 제거하고 Vite + 순수 React로
전환하는 16개 task 구현 계획. 각 task는 2~5분 단위 step으로 분해되어
TDD 회귀 테스트, git 커밋 리듬, 명시적 코드 블록을 모두 포함.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>