ADDED
IMPROVEMENTS
- Added Queue drawer panel for improved track management.
- Added Saved Artists and Saved Albums library pages.
- Added animated "Now Playing" equalizer indicator to metadata track rows.
FIXES
- Redesigned Saved library cards and Custom Playlists with portrait, glassmorphism blurred-background styles.
- Restyled track action popup to a pure, transparent glass surface.
- Improved Artist and Album pages scrolling UX, scroll chaining, and sticky hero layering.
- Extended bottom player visibility rules and fixed desktop overlap spacing.
- Cleaned up Artist page hero section and refined external link behavior.
- Update PlayerPage, TrackRows, and other dashboard views to instantly reflect liked state.
- Resolved duplicate toast notifications on track actions.
- Fixed multi-artist navigation to correctly parse and resolve individual artists.
- Fixed React hook order violation in PlayerPage.
- Fixed AnimatePresence React warning in Admin Dashboard.
useLikedSongshook to use React Query for global state management.
ADDED
IMPROVEMENTS
- Added single JSON RPC gateway using
POST /api/v1- Added Cloudflare Pages support for same-origin API proxy
- Added Vercel support for same-origin API proxy
- Added same-origin auth proxy support
- Added same-origin image proxy support
- Added optional Google Analytics environment variable
- Added optional Socket.IO deployment mode
FIXES
- Improved browser API privacy by hiding direct backend REST API URLs
- Improved REST API traffic so dashboard calls use one clean same-origin endpoint
- Improved Cloudflare deployment flow for hidden backend API and socket traffic
- Improved Vercel deployment flow for API/auth/image proxy support
- Improved bot profile customize uploads to avoid Vercel payload limit errors
- Improved Top Tracks Today loading by reusing cached data
- Improved Radio page scrolling so header and search stay visible
- Improved frontend README and environment documentation
- Improved Tailwind config compatibility with TypeScript
- Fixed local Vite same-origin proxy behavior
- Fixed Vercel auth callback routing issues
- Fixed Vercel SPA route fallback issues
- Fixed Socket.IO proxy path and encoding issues
- Fixed mobile bottom player filter button visibility
- Fixed React lyrics layout warning
- Fixed recommended track list key warning
- Fixed frontend TypeScript/editor warnings
- Added spotify playlist dashboard and connection interface
- Modal is dismissible via Cancel, clicking outside, or pressing Escape.
- Updated stop tooltip and toast to reflect non-destructive behavior.
- Added "Added [Title]" toast notification across all discovery and recommendation sections.
- Added confirmation modal with glassmorphism overlay before stopping playback.
- Fixed dashboard stop disconnecting the bot instead of preserving the connection.
- Improved player state synchronization after stopping playback.
- Fixed CORS error on album art by proxying images for canvas color extraction
- Resolved radio station scroll and adjusted back button layout
ADDED
IMPROVEMENTS
- Added global SEO
- Added reusable
Seo.tsxmetadata component- Added
<HelmetProvider>integration inApp.tsx- Added SEO metadata across major frontend pages
- Added
noIndexsupport for private/auth pages- Added Last.fm success page (
/lastfm)- Added Last.fm error page (
/lastfm-error)- Added centralized external redirect handling
- Added legacy route redirects using
<Navigate>- Added Popular Artists section
- Added Popular Albums section
- Added New Releases section
- Added genre-based release filtering
- Added artist top-track browsing (25 tracks)
- Added album track browsing support
- Added circular artist cards and responsive carousels
- Added loading, empty, and queue states
FIXES
- Improved mobile navbar and sidebar behavior
- Improved iPad/tablet responsive layouts
- Improved dashboard spacing consistency
- Improved "Top Tracks Today ♪" spacing
- Improved discovery section hierarchy
- Improved hover animations and interactions
- Improved horizontal scrolling behavior
- Improved responsive genre filter layouts
- Improved SEO metadata consistency
- Improved route consistency with legacy redirects
- Improved music discovery browsing experience
- Fixed horizontal overflow on tablet layouts
- Fixed excessive whitespace and spacing issues
- Fixed mobile sidebar toggle integration
- Fixed outdated route accessibility
- Fixed missing SEO metadata on multiple pages
- Fixed indexing behavior for private/auth routes
added
* added history view (HistoryView.tsx).
* dual tabs:
* user history
* guild history
* includes skeleton loading states.
* allows replay viacontrols.addToQueue.
* integrated withuseLikedSongsfor like/unlike.
* added navigation and routing inPlayerSidebar.tsxandPlayerPage.tsx.
improvements
* rewroteAccessGateinGuildSettingsView.tsx.
* now displays the correct blocking requirement from backend.
* overlay priority:
* premium lock
* vote required
* manage server required
* unified overlay design:
* backdrop blur
* border
* icon container
* feature title + requirement label
* updated action buttons:
* upgrade (premium)
* vote now (top.gg)
* no button for manage server
fixes
* fixed dropdown clipping in guild settings:
* removedoverflow-hiddenfrom 7 card wrappers.
* increasedSettingsDropdownz-index fromz-40toz-[60].
* addedrelative z-10to player settings section.
* fixed scroll issue in history view on desktop:
* addeddata-lenis-preventto prevent scroll hijacking by lenis.
added
changed
- musicshowcase component with animated player preview
- musiccardoverlay full-screen player with controls (volume, loop, filters, lyrics)
- botprofilecustomization system with moderation status
- customizationview with loading and structured data handling
- activityfeedpopup with realtime updates (socket.io)
- admin panel for reviewing bot profile submissions
- image upload for avatar/banner (max 2mb, png/jpeg/gif/webp)
- role-based access (owner/admin/manage guild)
- cooldown system (24h after approval)
- realtime notification for profile status updates
improved
- improved player controls (shuffle, loop, autoplay with premium validation)
- better mobile interaction (swipe to dismiss)
- player overlay now shows guild context and activity indicators
- admin panel now shows more detailed submission info
- better ux feedback for customization status
- improved accessibility (aria, disabled states)
- optimized loading with skeleton states
- better error handling with toast notifications
- improved validation for voice channel interaction
Admin Dashboard & Listening Party
New Pages & Routes
### Admin Dashboard
- AdminDashboard (
/admin) - Web panel for comprehensive guild/user management- SystemStatus (
/systemstatus) - Real-time cluster & shard monitoring dashboard- New Premium tab in Profile page for Patreon/Ko-fi management
Player & Listening Party
- Premium legacy user/guild management and lifecycle
- Maintenance mode and blacklist controls
- Ticket system configuration, history, and close/delete operations
- Helpdesk/Helper message deployment directly from web interface
Profile & Premium Management
- ListeningParty component displaying voice channel member list
- Socket.IO reconnection improved with automatic player state resync after disconnect
- Periodic fallback sync to prevent missed track events during unstable connections
- Progress bar automatically resets on track change
- Desktop and mobile (bottom sheet) layout support
Queue & Requester UI
- Premium tab showing Patreon/Ko-fi status and quota usage
- Guild claiming/unclaiming interface for premium users
- Bot Owner and Bot Admin badges on profile header
Guild Settings & Language
- Queue now displays track requester information with avatar
- Requester avatar shows in real-time, with initial fallback if unavailable
Requestertype extended withavatarURLfield in player state
UI/UX Polish
- Language selector updated to custom dropdown for cleaner UI
- Locale name mapping for more readable language display
Improvements
- Team, Privacy Policy, Refund Policy, and Terms of Service pages updated with gradient text headings
- Minor visual improvements on premium page
- Overall color and styling polish
Player Synchronization
Dashboard Stability
- Robust reconnection handling prevents player state desync
- Automatic state refresh on Socket.IO reconnection
- Fallback periodic sync ensures no missed track updates
- Track progress bar stays in sync with server state
Mobile Experience
- Admin operations now supported through web interface
- Real-time system monitoring without page refresh
- Premium management accessible to end users
- Listening party responsive on mobile with bottom sheet layout
- Admin dashboard optimized for tablet/mobile
- Touch-friendly UI interactions
AI Music Chat New Feature
Added
- AI Chat Service Conversational music assistant powered by Google Gemini
- Music-only system prompt with mood detection and song recommendations
- Multi API key rotation supports multiple Gemini API keys with automatic fallback
- Multi model fallback chaingemini-2.5-flash→gemini-2.0-flash→ you can set
- Structured song parsing from AI responses with[SONGS]...[/SONGS]format
- Conversation history context, sends last 20 messages for contextual replies
- Max 10 song recommendations per response
- Chat History Database Persistent chat storage
- Save/load/clear chat history per user
- Auto-prune at 50 messages per user
- API Endpoints:
-POST /api/dashboard/:guildId/ai-chatSend message to AI, returns response with songs
-GET /api/dashboard/:guildId/ai-chat/historyLoad chat history (no AI tokens consumed)
-POST /api/dashboard/:guildId/ai-chat/clearClear chat history
Top Charts By Country
Added
- Spotify Top Chart Service Fetches top 25 tracks per country
- 6-hour server-side cache with fallback to global charts
- Returns: rank, title, artist, Spotify URL, cover image
- API Endpoints:
-GET /api/top-chart?country=Top chart tracks by country (19 countries supported)
-GET /api/recommendedAuto-detected country recommendations via Accept-Language header
-GET /api/top-tagsTop 25 music genres from Last.fm (chart.getTopTags), 1-hour cache
-GET /api/tag-tracks?tag=Top 25 tracks per genre from Last.fm (tag.getTopTracks), 30-min cache, artwork from iTunes/Deezer
-GET /api/recommendations?track=&artist=Smart similar tracks & artists from Last.fm, 10-min cache
Fixed
- Auto-hide on track end Overlay now automatically disappears when music finishes playing
-PLAYER_ENDsetscurrent=null→hasPlayer=false→ overlay hides
- Added re-discover timeout (2s) when current track becomes null
- Added auto-close effect whenshouldShowbecomes false while panel is open
