Repository navigation
Releases: AlexSch95/cxeify-spotify-controller
Release list
v1.3.0
Changelog v1.3.0
🔄 Spotify API Migration (February 2026)
Breaking API Changes Addressed
- Playlist Items Endpoint: Updated from deprecated
/playlists/{id}/tracksto new/playlists/{id}/itemsendpoint - Response Field Normalization: Added backward-compatible mapping for renamed fields (
item→track) to maintain frontend compatibility
Technical Details
The Spotify Web API received major changes in February 2026. This update ensures continued functionality:
| Change | Old | New | Status |
|---|---|---|---|
| Playlist tracks endpoint | /playlists/{id}/tracks |
/playlists/{id}/items |
✅ Updated |
| Track field in response | item.track |
item.item |
✅ Normalized |
No Action Required
The following features remain unaffected as their endpoints are still available:
- Player controls (play, pause, skip, seek, volume, shuffle, repeat)
- Device management
- Album metadata and tracks
- Playlist metadata
- Current playback state
🐛 Bug Fixes
OAuth & Authentication
- Token Reset Fix: Token reset now works via direct IPC instead of server API, fixing "Failed to fetch" errors when server is not running
- Callback URL Consistency: Updated setup instructions to use
http://127.0.0.1:3000/callbackconsistently (was showinglocalhostin docs but server used127.0.0.1)
Previous Version: v1.2.0
Reference
- Spotify Web API Changelog - February 2026
- Spotify Web API Changelog - March 2026 (reverted
external_idsremoval)
v1.2.0
Changelog v1.2.0
✨ New Features
OBS Viewer Widget
- New Viewer Widget: Added a compact overlay widget for streamers (
/viewer.html) - OBS Integration: Designed for OBS browser sources with transparent background
- Real-time Display: Shows album art, track name, artist, and playback progress
- Auto-hide: Viewer automatically hides when no song is playing
- Streamers Tab: Added dedicated "For Streamers" section in Control Panel with setup instructions
iFrame Integration
- Auto-Refresh Delay: Added configurable delay setting (0-30 seconds, default 5s) for iframe loading to ensure the Cxeify server is ready after PC startup
- Improved iFrame Code: Updated iframe code generator to use a container with
setTimeoutscript for delayed widget loading
🎨 UI/UX Improvements
Control Panel Interface
- Vertical Sidebar Navigation: Redesigned interface with vertical sidebar on the left containing navigation tabs
- Wider Window: Control panel window increased to 1000px width for better content visibility
- Reorganized Tabs: Renamed and restructured tabs:
- "Controlpanel" → "Server Controls"
- "Streamers" → "OBS Widget"
- New dedicated "iCue Widget" tab
- "Setup" → "Setup Guide"
- Contextual Setup Instructions: Moved widget setup instructions to their respective tabs (iCue Widget and OBS Widget)
- Version Tag: Added version display in sidebar footer
- Cleaner Layout: Removed redundant headers and footer version tags from individual tabs
Viewer Widget
- Separate Color Settings: Viewer widget now has independent color customization (accent, background, text) separate from iCUE player widget
- Background Opacity Control: Added opacity slider (0-100%) for viewer background, allowing fully transparent overlays
- Smooth Animations: Fade in/out transitions (0.5s) when showing/hiding viewer
- Auto-hide on Pause: Viewer automatically hides when music is paused or stopped
Player Widget
- Dark Background on No Playback: Widget now displays a dark gradient background (
#1a1a2eto#16213e) when no song is playing, instead of showing a white/empty background - Default Dark Background: The background now starts with a dark gradient by default, which gets replaced by album art when a song plays
- Volume Slider Color Fix: Fixed volume slider fill color to correctly use the selected accent color even when "No Playback" is displayed
🐛 Bug Fixes
Application Lifecycle
- Complete App Closure: Fixed issue where the application didn't fully terminate when selecting "Close Completely" in the close dialog
- Server is now properly stopped before quitting
- Tray icon is correctly destroyed
- Window is destroyed before app.quit()
- Fixed window-all-closed event handler to allow proper shutdown
- Tray Quit Menu: Improved "Quit" option in tray menu to cleanly shut down all components (server, tray, window) before exiting
v1.1.0
🎉 What's New in v1.1.0
⚠️ Important
We've switched to PKCE authentication (no Client Secret needed anymore!). If you're upgrading from v1.0.0, we recommend uninstalling the old version completely before installing v1.1.0 to ensure old tokens and settings are removed.
✨ New Features
- PKCE OAuth Flow - No Client Secret required anymore! Setup is now much simpler - just enter your Client ID
- "Load More" Button for Playlists - Replaces infinite scroll for better performance and control (loads 20 songs at a time)
- Configurable Server Port - Change from default 3000 if needed (available in Settings panel)
- Close Dialog - Choose between minimizing to tray or closing the app completely when clicking the close button
- Changelog in Control Panel - View version history directly in the setup guide tab
🐛 Bug Fixes
- Fixed "Load More" button getting stuck in "Loading..." state
- Fixed rate limit handling - now correctly displays wait time in hours/minutes/seconds
- Fixed playlist state management when loading additional tracks
- Fixed iframe copy button throwing "Cannot read properties of undefined" error
- Fixed tray icon not being removed when closing app completely
🔧 Improvements
- Removed Client Secret from entire setup process - only Client ID needed now
- Updated setup guide to reflect PKCE authentication (removed Client Secret steps)
- Cleaner error messages for rate limiting
- Better handling of Spotify API rate limits
- Code cleanup - removed unused functions and dependencies
📥 Installation
Download and run Cxeify Setup 1.1.0.exe
Requirements:
- Windows 10/11
- Spotify Premium account
- Corsair iCUE (for display integration)
🔄 Upgrading from v1.0.0
- Uninstall Cxeify v1.0.0 (removes old tokens and settings)
- Install Cxeify v1.1.0
- Complete the setup with your Client ID (no Client Secret needed!)
Cxeify v1.0.0
A Spotify controller designed specifically for Corsair Xeneon Edge displays. Control your Spotify playback directly from your monitor with a beautiful, touch-optimized interface.
🎵 Features
- Real-time Playback Control - Play, pause, skip tracks, adjust volume, and seek through songs
- Cross-Device Control - Works with any Spotify Connect device (PC, smartphone, tablet, smart speaker)
- Playlist & Album Viewer - Browse your current playlist or album with smooth lazy loading
- Customizable Appearance - Choose your own accent color and enjoy album art backgrounds
- Touch Optimized - Large, responsive controls designed for touch displays
- Shuffle & Repeat - Full control over playback modes with visual indicators
- System Tray Integration - Runs in background with easy access
- Auto-Start Options - Launch on Windows startup and/or start server automatically
- iCUE Integration - Embeds seamlessly into Corsair iCUE as an iFrame widget
- Privacy First - All data stays on your machine, no external services
📋 Requirements
- Windows 10/11
- Spotify Premium account
- Spotify Developer App (free to create - see setup guide in app)
🚀 Installation
- Download
Cxeify Setup 1.0.0.exe - Run the installer
- Follow the setup guide in the app to configure your Spotify credentials
⚠️ Known Limitations
- Volume control is not available when controlling Spotify on mobile devices (iOS/Android) due to Spotify API restrictions
- Spotify-generated playlists (e.g., "Discover Weekly", "Release Radar") cannot be displayed due to Spotify API privacy restrictions
- User-created playlists and albums work without limitations
🔧 Tech Stack
- Electron 28.3.3
- Express.js
- Spotify Web API (OAuth 2.0 PKCE)
- electron-store for secure local storage
📖 Documentation
Full documentation available in the README
🌐 Website
Visit cxeify.machinezr.de for more information and screenshots
💬 Support
If you encounter any issues or have questions:
- Open an issue on GitHub
- Contact me on Discord: machine666
📝 Note
The source code is available on GitHub for transparency, but please note this is a personal project - the code itself is not open source or licensed for redistribution.
Made by Machinezr (Discord: machine666)