Enhance visuals and interactivity: Groovy camera/mountains, vivid tre…#3
Enhance visuals and interactivity: Groovy camera/mountains, vivid tre…#3Lightningwave wants to merge 60 commits intonew-vanfrom
Conversation
…es, animated station, and rhythm improvements
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
… plus tree color pulsing and hot air balloon sound fix
There was a problem hiding this comment.
This PR is being reviewed by Cursor Bugbot
Details
You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| // Use bounce (0..1) to modify Y scale | ||
| // Slight delay per mountain for "wave" effect across horizon | ||
| const wave = Math.sin(i + t); | ||
| const bounceEffect = isPlaying ? (bounce * 0.1) + (wave * 0.02) : 0; |
There was a problem hiding this comment.
Bug: Mountains component missing bounce fallback calculation logic
The Mountains component expects a bounce prop for beat-synced animation, but App.jsx no longer passes it (changed from bounce={bounce} to isPlaying={isPlaying}). Unlike the Trees component which has fallback logic to calculate bounce internally when the prop is 0 and isPlaying is true, Mountains lacks this fallback. The calculation (bounce * 0.1) + (wave * 0.02) always evaluates to just wave * 0.02 since bounce defaults to 0, resulting in a barely noticeable animation instead of the intended beat-synced "groovy" effect mentioned in the PR description.
| return { | ||
| word, | ||
| synonyms: parsed.synonyms || [], | ||
| antonyms: parsed.antonyms || [], |
There was a problem hiding this comment.
Bug: Missing null check after JSON.parse could throw TypeError
The JSON.parse(jsonText) result is used directly without validating it's an object. If the Gemini API returns the string "null" (valid JSON), JSON.parse returns null, and accessing parsed.synonyms throws a TypeError: Cannot read property 'synonyms' of null. Adding a check like if (!parsed || typeof parsed !== 'object') before accessing properties would prevent this crash.
| const pulseColor = state.scene.background.clone(); | ||
| pulseColor.offsetHSL(0, 0, bounce * 0.1); // Brighten on beat | ||
| state.scene.background.copy(pulseColor); | ||
| } |
There was a problem hiding this comment.
Color brightness accumulates over time during playback
In EnvironmentController, the background and ground color pulse logic applies offsetHSL to the current color every frame when isPlaying is true. The pattern clones the already-modified color, adds brightness/saturation offsets based on bounce, then copies it back. Since this runs every frame and the lerp toward targetBg/targetGround is slow (speed = delta * 2), the cumulative HSL offsets can outpace the correction, causing colors to progressively drift brighter/more saturated during extended playback sessions. The offset is applied to the result of previous offsets rather than to a baseline color.
…es, animated station, and rhythm improvements
Note
Introduces a multimodal stack with backend AI, demo assets, and richer interaction/visuals.
elevenlabs.ttsWithTimestampsaction (server-side TTS) andwords.generateChildFriendlyWords(Gemini-powered synonyms/antonyms); generated API/server typings and Convex tsconfigREADME.mddescribing WordWave, interaction model, and tech stack; ignores.env.localDropZone; addsVoiceAgentcomponent and UI refinements (title/topic input, camera toggle move)index.htmltitle and adds aglobalshim for bundlersWritten by Cursor Bugbot for commit 8c29316. This will update automatically on new commits. Configure here.