Update README.md with new demo links and video resources. Changed live demo URL to Hugging Face and added YouTube and dev.to links for the demo video and social post, respectively.
Refactor overlay behavior to improve user interaction during descent transition. The start button now has its pointer events disabled when the overlay is hidden, preventing click interference with underlying elements while maintaining a smooth fade-out effect.
Update startDescent function to hide the start button during descent transition. This change prevents the button from capturing pointer events and allows user interactions with underlying elements, ensuring a smoother experience.
Update README.md to enhance project description and add badge goals for the Build Small Hackathon. Changed short description to reflect focus on lofi beats, and included detailed sections on project features, generation pipeline, and personal background. Added tags for better categorization.
Remove 'ready' class from start button to prevent click interference during descent transition. This change ensures the overlay fades correctly while allowing user interactions with underlying elements.
Enhance music generation functionality by introducing a tape-length slider and progress tracking. Updated app.py to manage chunk lengths and progress callbacks, while frontend files now include a slider for selecting tape length and a progress bar to visualize the brewing process. Improved user experience during audio generation with real-time feedback on progress.
Refactor subtitle presentation in index.html and enhance animations in style.css. Wrapped the subtitle in a new div for improved styling and added slide and fade animations to enhance visual appeal during the title display.
Enhance audio playback controls with loop functionality. Added a loop button in index.html and corresponding styles in style.css. Updated ui.js to manage loop state and toggle behavior, allowing users to switch between looping the current tape and playing through the shelf. Refactored loadCassette function to accommodate new looping logic.
Refactor audio handling to return base64 WAV data URIs instead of writing to disk. Updated generate_song function to streamline audio response and removed list_songs functionality, enhancing session management by keeping tapes in memory. Adjusted frontend to handle new audio data format and removed unused functions for a cleaner codebase.
Throttle render loop to 30fps for improved performance in garden animation. Updated frame handling in createGarden function to reduce CPU/GPU load while maintaining smooth visuals.
Replace loading animation with a new plant-themed grow-loader in index.html and style.css. The updated loader features sprouting plants that bloom while the beat brews, enhancing the visual experience during loading times.
Add "play while waiting" feature to enhance user experience. Introduced a new button in index.html that allows users to engage with a garden mini-game while waiting. Updated main.js to handle the button's functionality, and modified ui.js to manage its visibility based on the current stage. Enhanced style.css with new styles for the button, ensuring it is visually appealing and interactive.
Refactor HTML structure and enhance CSS for Game Boy modal. Improved the organization of meta tags in index.html for better readability and SEO. Updated style.css to optimize the Game Boy modal's appearance and interaction, including new styles for the d-pad and button interactions. Enhanced ui.js to integrate a garden mini-game within the Game Boy modal, ensuring a smoother user experience.
Implement audio crossfade and playlist functionality in UI. Enhanced the audio management system by introducing two audio elements for crossfading, updating the track loading mechanism, and adding playlist support. Refactored related functions for improved clarity and performance, ensuring a seamless user experience during audio transitions.
Update README and index.html for enhanced metadata and visuals. Added a thumbnail link to README and improved SEO with Open Graph and Twitter meta tags in index.html, including updated title and description for better social sharing.
Add Game Boy feature and modal interaction. Introduced a Game Boy model in the scene, updated main.js to handle zoom interactions and modal display, and enhanced UI components in ui.js for opening and closing the Game Boy modal. Added corresponding styles in style.css for the modal's appearance and animations. Updated index.html to include a new label for the Game Boy interaction.
Optimize scene rendering by merging static geometries. Added a function to collapse static meshes in the scene into single meshes per material, significantly reducing draw calls. Excluded interactable and animated objects to maintain functionality. Updated main.js to integrate this optimization.
Implement day/night cycle and lamp interaction features. Updated main.js to manage the transition between day and night modes, including dynamic lighting adjustments and palette changes. Added a new lamp label in index.html for user interaction, and modified style.css for proper positioning of the label. Enhanced world.js to include outlines for the lamp and its components, improving visual feedback during interactions.
Enhance carousel functionality and styling. Updated ui.js to implement a coverflow layout for cassette cards, allowing for improved visual presentation and interaction. Added keyboard navigation for carousel controls and refined button states in style.css for better user experience. Adjusted card animations and positioning for a more dynamic interface.
Add ambience generation features and assets. Introduced ambience.py for procedural and sampled ambience beds, updated app.py to integrate ambience selection into music generation, and modified requirements.txt to include new dependencies. Added scripts for fetching and rendering ambience samples, along with new audio assets and credits for attribution.
Add song metadata handling and collection feature. Updated app.py to generate and store song metadata alongside audio files, introduced a new API endpoint for listing songs, and enhanced frontend components in ui.js and main.js to manage song collection display and interactions. Modified index.html and style.css for improved UI presentation of the cassette collection.
Enhance interactable features and visual labels in the scene. Updated index.html to add a new collection label, modified main.js to manage hover interactions for both vending machine and cassette collection, and adjusted style.css for consistent label styling. Improved world.js to include outlines for the cassette pile and walkman, enabling better user interaction.
Add bird animation and cassette pile to the scene. Updated main.js to include bird movement and tail flicking behavior, and enhanced world.js with new cassette pile, walkman, and headphones models. Integrated cable geometry for visual detail and adjusted bird positioning on the bench.
Refine music prompt generation in app.py. Updated the ENRICH_SYSTEM to clarify JSON response structure and enhance music_prompt template with specific instrument and background noise guidelines. Adjusted temperature setting for improved output consistency and ensured background noise is always included in the music prompt.
Optimize rendering performance and scene management in main.js. Updated WebGLRenderer settings for lower power consumption, adjusted pixel ratio, and improved shadow map handling. Enhanced animation frame control for smoother transitions and reduced unnecessary computations in static scene objects.
Enhance audio generation capabilities and enrich prompt processing. Updated app.py to implement a new prompt enrichment function using Ollama, added environment variable configurations, and improved the music generation engine. Modified requirements.txt to include necessary dependencies for transformers and torch. Updated index.html to inform users about audio generation duration.
Implement vending machine modal and audio generation features. Updated app.py to include audio URL for browser clients, enhanced index.html with a modal for user interaction, and added corresponding styles in style.css. Improved main.js to manage camera transitions and modal behavior during audio generation.
Add vending machine interaction features. Introduced a floating label for the vending machine in index.html, implemented hover effects and click handling in main.js, and styled the label in style.css. Enhanced world.js to include a visual outline for the vending machine during hover.
Enhance visual presentation and camera dynamics. Updated subtitle styling in index.html, refined camera movement and lighting in main.js, and improved cloud generation in world.js. Adjusted CSS for smoother transitions and animations, enhancing overall user experience.
Refactor main.js to enhance scene setup and integrate world building. Updated camera positioning, lighting settings, and removed placeholder objects in favor of a new world.js module. Improved intro choreography and added debug functionality for skipping the intro.