Releases: songify-rocks/Songify
v1.8.6
Songify v1.8.6
✨ Features
- Improved Spotify connection feedback
- UI now updates consistently across all open windows after connecting Spotify
- Ensures correct icon state and live output text everywhere
⚡ Improvements
- Settings window stability overhaul
- Refactored Settings loading logic into smaller, more reliable components
- Added safeguards to prevent re-entrant UI updates during initialization
- Improved loading states and error handling
- Spotify API responsiveness
- Added 5-second cancellation tokens to all Spotify API calls
- Prevents hanging requests and improves overall responsiveness
- Twitch account handling improvements
- Default to main account if none is selected
- More robust and predictable account selection behavior
- UI update consistency
- Unified update logic across all windows
- Ensures reliable refresh behavior after authentication changes
🐛 Fixes
- Fixed crashes when opening or loading the Settings window
- Fixed UI getting stuck during refresh/update scenarios
- Fixed inconsistent Spotify UI state updates across windows
- Improved stability of Settings initialization and event handling
🛠️ Internal / Dev Changes
- Version bumped to 1.8.6.0
- Major refactor of
SettingsWindowcontrol logic - Improved resource handling and cancellation patterns
- General code cleanup in Spotify and Twitch modules
Full Changelog: v1.8.5...v1.8.6
❤️ Support Songify
If you enjoy using Songify and would like to support the project,
consider becoming a member on Ko-Fi.
Your support helps keep development active and sustainable.
👉 https://ko-fi.com/overcodetv
Songify.zip:
MD5: A00E71A23B8ECFC8D510730AEE336CDA
SHA1: BCD510163E7B9C622A792411910E5D328B2A5A73
SHA256: DF6DD5C806B31E38F117BEAF284BE5F71B126E3078C5C1FB5C63B5E30D64A75B
Songify.exe:
MD5: B8CE6CAB26381D45D3823587D2D2497C
SHA1: EA75886C81885AE868D581C6D613C4F5D9308332
SHA256: BC30E69E56C12656E62D30E30AC17B110D9784585DE39DAA579B978CED6036CD
v1.8.5
Songify v1.8.5
✨ Features
- Expanded localization (i18n) system
- Introduced a fully standardized, context-aware resource key structure across the entire app
- Added extensive translation coverage for UI elements and features
- Improved Twitch authentication UX
- Better handling of expired tokens and missing scopes
- Clearer UI feedback during login and re-authentication flows
⚡ Improvements
- Twitch EventSub system overhaul
- Centralized subscription definitions using strongly-typed structures
- Improved sync logic, cleanup, and session handling
- Added safeguards against duplicate sessions and concurrent syncs
- Refactored Twitch OAuth & API initialization
- Modularized logic for better maintainability
- Unified handling for broadcaster and bot accounts
- Spotify diagnostics & reliability improvements
- Enhanced logging for API usage and debugging
- Improved handling of device and playlist edge cases
- More robust retry logic for intermittent API failures (e.g. 503s)
- General UI & codebase cleanup
- Removed hardcoded strings in favor of resource-based localization
- Improved consistency across XAML and C# bindings
- Minor UI polish and text fixes
🐛 Fixes
- Fixed issues with Twitch OAuth flow and redirect handling
- Improved EventSub synchronization reliability (partial syncs, rate limits)
- Fixed edge cases in Spotify song retrieval and playlist handling
- Resolved multiple UI inconsistencies caused by legacy resource keys
🛠️ Internal / Dev Changes
- Version bumped to 1.8.5.0
- Major refactor of resource files (
.resx) across all supported languages - Cleaned up legacy code paths in Twitch and OAuth handling
Full Changelog: v1.8.4...v1.8.5
❤️ Support Songify
If you enjoy using Songify and would like to support the project,
consider becoming a member on Ko-Fi.
Your support helps keep development active and sustainable.
👉 https://ko-fi.com/overcodetv
Songify.zip:
MD5: 74814A1D00AD5EA423421C31498EB555
SHA1: 7E8563C59D02B7C880820B50D808E65457B4027F
SHA256: FAD48AA3F3BB4A21DAB46D199E6CB6C201902DC586F747BE11179E535F8D1975
Songify.exe:
MD5: 59779748250FC387E48AED903C393791
SHA1: FC04EF87D741DF252FA4247F7847C7CA918DA771
SHA256: C60B8D2694AE4776098E7B8FECCF297C756106F4B510A79286C20D143CD1E37E
v1.8.4
Songify v1.8.4
✨ Features
- Bits keyword filter for song requests - Streamers can now require a specific keyword in cheer messages before a bits-based song request is triggered.
- New configuration option:
SrForBitsKeyWord - Helps prevent accidental song requests from normal cheer messages.
- New configuration option:
{playlist}placeholder for Twitch commands - Twitch bot responses can now dynamically include the current playlist name.
⚡ Improvements
- Improved Spotify API rate-limit handling with a global rate-limit lock and automatic retry logic.
- Added Spotify track ID / URI normalization to ensure consistent handling of track identifiers across API calls.
- Reduced unnecessary Spotify user profile API calls in settings to lower API usage.
- Improved Twitch chat message sending with better error handling and reliability.
🐛 Fixes
- Improved handling of edge cases around Spotify track availability checks.
- General stability improvements for Spotify API integration and Twitch chat interaction.
🔧 Internal
- Added
ResetSpotifyAuthStatehelper to improve Spotify authentication state handling. - Removed
IsTrackUnavailableto simplify track availability checks. - Version bump to 1.8.4.0.
- General code cleanup and internal refactoring.
❤️ Support Songify
If you enjoy using Songify and would like to support the project,
consider becoming a member on Ko-Fi.
Your support helps keep development active and sustainable.
👉 https://ko-fi.com/overcodetv
Checksums
Songify.zip:
MD5: A90137F9E65BDA2918A4DEFC0586885B
SHA1: DF6F3753EFF1F5540F845DB1A8D912DA000F709F
SHA256: 0893A7863435EE5F831EED2B0BBE78A6804EEDD66AE1C08CDFD55D6AC3DFB870
Songify.exe:
MD5: 4D84AE87DE20A481CC55D0507FF9ADF4
SHA1: 517C00D47A72BA73D29A8E287D7FDDB12DAFC497
SHA256: FBAB6A9B7737EF90EBE123258F174DC4226E084AA7248F020E1961E67B632D4F
Full Changelog: v1.8.3...v1.8.4
v1.8.3
Songify v1.8.3
✨ Features
- Spotify PKCE authentication - Songify now uses the PKCE OAuth flow. Only a Client ID is required; Client Secret is no longer needed.
-
You have to re-link your Spotify Account!
-
- Twitch Shared Chat support - Option to accept commands from shared chat sessions.
- Real-time Spotify API metrics - Monitor API usage with requests-per-minute tracking, endpoint overview, and live charts.
- Queue window improvements - Redesigned queue window with tab layout and a new request list with delete functionality.
⚡ Improvements
- Improved Spotify API rate-limit handling with proper
Retry-Aftersupport. - Added fallback playlist metadata retrieval via Spotify oEmbed and embed parsing.
- Migrated API charts from OxyPlot to LiveCharts for better visuals and WPF integration.
- Improved logging for Spotify authentication, API usage, and debugging.
🐛 Fixes
- Fixed UI not updating correctly after Twitch reward command changes.
- Improved playlist change detection to avoid unnecessary API calls.
- Resolved several edge cases in Spotify API handling.
- Fixed
!removenot working with Pear
🔧 Internal
- Migrated fully to SpotifyAPI.Web and removed legacy Spotify API wrapper.
- Refactored API metrics system and playlist caching logic.
- Updated dependencies (TwitchLib, SpotifyAPI.Web, Markdig).
- Removed Deezer from supported players documentation.
- General code cleanup and refactoring.
❤️ Support Songify
If you enjoy using Songify and would like to support the project,
consider becoming a member on Ko-Fi.
Your support helps keep development active and sustainable.
👉 https://ko-fi.com/overcodetv
Checksums
Songify.zip:
MD5: 5990E0262C5D11970667A44FEA77F029
SHA1: 308385D3CAB12C7E14624196615BE1F7B8F2F612
SHA256: 72923A349C97E24C1D32E08D47CA6CCD7E7BFB8B787C55E430807B7FA7EB073F
Songify.exe:
MD5: 72D83BDB8EA541151D0FCD39E53D6005
SHA1: 101B37E1E78EEEA7A59E0B79B60A8F5BAE5CCCC7
SHA256: 37FF89F479EDBBD38107581F212746F23A5FD85E48774FB5126C6B9AE797B7D6
Full Changelog: v1.8.2...v1.8.3
v1.8.2
🍐 Pear Fix
- Fixed an issue where Pear would not fetch.
❤️ Support Songify
If you enjoy using Songify and would like to support the project,
consider becoming a member on Ko-Fi.
Your support helps keep development active and sustainable.
👉 https://ko-fi.com/overcodetv
Checksums
Songify.zip:
MD5: F736019CE02EB302438E8D96E2F888A0
SHA1: F826A16653C07DCE18C62480911E921EF84E3977
SHA256: 7AE3DF9AAC45181C2D7BFEEECE15E42B8AE47E6074EE8A3A786255D750767A29
Songify.exe:
MD5: B5E68CC9A1776CC13ED32D88A31A276C
SHA1: 574227BFBA1B8F83E9D91E9B1C223526C54F7517
SHA256: BFE7496CE76E23A08DF091909CB69A959FE222040E0470DE44AB65DE379CEDB0
Full Changelog: v1.8.1...v1.8.2
v1.8.1
🎵 Spotify Fix
- Fixed an issue where songs were not being added to the selected Spotify playlist.
❤️ Support Songify
If you enjoy using Songify and would like to support the project,
consider becoming a member on Ko-Fi.
Your support helps keep development active and sustainable.
👉 https://ko-fi.com/overcodetv
Songify.zip:
MD5: 29608032432F4EE2D2955916A5112D28
SHA1: 17F74F50B5D4200E18CF7BD8DC871B8DAB6F8C82
SHA256: 62E1D7910874DDDD8C08B96A7A39BA08DDB4DB9EC8FCAFA5B168B4E8683837E8
Songify.exe:
MD5: 2CC868DC2452D630E7121B6277743F30
SHA1: A53C4FF493DF9A5FBA69901F8AF0EB155B1D55AD
SHA256: FF6641404ABA84A7F9073A63ED606C89E8A34F2CBB39231ED0B7A5F05BA6362C
Full Changelog: v1.8.0...v1.8.1
v1.8.0.0
🎉 Songify 1.8
Songify 1.8 is our biggest update yet.
Faster, cleaner, more stable and fully modernized under the hood.
⚠️ Important – Action Required After Updating
🔄 Re-link Your Accounts
After updating to 1.8, you must:
- Re-link your Spotify account
- Re-link your Twitch account (Only if updating from 1.7.x)
Due to internal changes and new Spotify API requirements, existing connections may not work correctly until reconnected.
⚠️ Important – Spotify API Changes (Feb 11)
Spotify introduced major API restrictions on February 11.
This affects Songify users in the following ways:
-
Spotify Premium is now required for new users
Without Premium, creating a Spotify Developer App is no longer possible. -
Only one Spotify Developer App per user is allowed
Existing apps still work.
⚠️ Do NOT delete your existing Spotify Developer App. -
Spotify’s API restrictions are still evolving
Some edge cases may not work 100% yet.
We are continuously improving compatibility based on feedback.
If you experience Spotify-related issues, please report them on GitHub or in Discord.
➕ Added
🍐 Pear (YouTube Music) Support
- Full support for Pear (formerly YTM Desktop / th-ch)
- Integrated Pear API
- Queue synchronization
- Playback controls:
play,pause,skip,voteskip - Volume control:
vol,vol [0-100] - YouTube Data API v3 metadata support
- Improved YouTube song request parsing and responses
- Fixed YouTube song request re-ordering issues
- A guide on how to link Songify with Pear can be found here
🎵 Spotify Improvements
- More reliable and accurate track detection
- Faster communication between Songify and Spotify
- Improved playback state and metadata handling
- AddOnlyToPlaylist option
- Song requests now reliably auto-add to Liked Songs
songlikecan now be used by the requester (if enabled)- Better handling of unavailable tracks per market
💬 Smarter Twitch Song Requests
- Bits support for song requests
- Alias support for commands
- New option: Skip only non-requested songs
- Configurable skip vote count
- Full skip poll support
- Channel reward integration for skip polls
- Improved permission detection:
- Mods
- VIPs
- Followers
- Tier 1–3 subscribers
- Improved channel point handling
!togglesrcommand added
🔌 Twitch System Rewrite (Major Stability Upgrade)
- Stronger and more stable chat connection
- EventSub support
- Better error recovery
- Cleaner internal logic
- More predictable command handling
- Improved role and permission detection
☁️ Cloud Settings Enhancements
- Improved sync between local and cloud settings
- Cloud vs. local comparison tools
- Better UI feedback
- Improved multi-machine experience
(Cloud Sync requires Premium, read more here)
🖥 Windows Playback API Support
- Detect “what’s playing” across supported Windows music players
- Improved now-playing detection beyond Spotify and Pear
🌍 Localization Overhaul
- Complete localization system rewrite
- Unified XAML localization via
LocMarkupExtension - Cleaner resource structure
- Improved fallback handling
New or updated translations:
- Dutch
- French
- Spanish
- Italian
- Portuguese (PT & BR)
- Belarusian
- German
- Polish
- Russian
🧩 UI & Quality of Life
- Cleaner and more responsive Settings window
- Improved Refund tab layout
- Improved command list and permission UI
- Updated tooltips and UI hints
- Added deep-link handling
- About window now shows third-party libraries
- More consistent theming
- Cleaner error and warning messages
🔄 Changed
- Replaced legacy YTMDesktop integration with Pear API
- Refactored TwitchHandler for clarity and long-term stability
- Refactored logging system for better diagnostics
- Improved configuration and settings management
- Improved fuzzy matching and caching logic
- Improved reward handling
- Improved stream online status checks
🛠 Fixed
- Fixed incorrect ordering of YouTube song request results (thanks @NaGeL182)
- Fixed
!ssrnot working with Pear - Fixed “Allow only songs from specific playlist” not working (#170)
- Fixed
!bansongpermission issue (#164, #153) by @folle in #153 - Fixed stream online status check (#166)
- Fixed voteskip count resetting to 5
- Fixed null reference in ImportToken
- Fixed rare crashes and null-reference issues
- Fixed typos and inconsistent UI states
- Improved Twitch login and token import handling
- Improved Spotify and Twitch recovery (fewer “stuck state” issues)
❌ Removed
- Removed legacy YTMDesktop integration
- Removed outdated services and APIs
- Removed unused components and dependencies
- Cleaned up old abstraction layers
🌐 New: Redesigned Songify Website
We are launching the new Songify website.
It includes:
- Queue Display
- Status Page
- FAQ Section
- Widgets (Free & Premium)
- Twitch Login
- And more
🚀 Stability
Songify 1.8 has gone through extensive beta testing and is now considered stable enough for daily use. Though we had to rush this update due to the changes Spotify introduced to their API.
Due to Spotify’s recent API changes, we will continue refining compatibility in upcoming updates.
If you encounter issues, please report them on GitHub or in Discord.
❤️ Support Songify
If you enjoy using Songify and would like to support the project,
consider becoming a member on Ko-Fi.
Your support helps keep development active and sustainable.
Checksums:
Songify.zip:
MD5: B827EF5152B3253D3006A875AE65D70A
SHA1: 1AFC4052A993BB325D1F93AA9574D80F9F6B629C
SHA256: 0830BF46ECDA74D4F7F29BE61F69F5393C8DA52DC373C5CCF76F61D79388A421
Songify.exe:
MD5: 2ABDC59740EA153EE8D271F0558CF795
SHA1: A2293F417B4BF2579520E0B57E926FEEA086FAB8
SHA256: 465582E135069260387047BF8782E252B4E7DEA5F62CFB2FB12F2C1683FB612E
Full Changelog: v1.7.2.0...v1.8.0
v1.7.1.0
Songify v1.7.1.0
New Features
- Now Playing Support added for th-ch/youtube-music.
- Setup Instructions:
- In Youtube Music Desktop Player
- Click on Plugins.
- Click on API Server (BETA).
- Ensure the PORT is set to
26538(default). - Set Authorization Strategy to No Authorization.
- In Youtube Music Desktop Player
- Setup Instructions:
- Added
!bansongcommand:- Blocks the currently playing song and skips it.
- Enhanced
!poscommand with{ttp}:- Example:
@{user} {songs}{pos} {song} {ttp}{/songs}.
- Example:
Improvements
- Removed outdated prompts.
Bug Fixes
- Fixed "unlimited song requests" being enabled all the time.
- Resolved a crash when setting default values for commands.
Full Changelog: v1.7.0.0...v1.7.1.0
If you enjoy using Songify and want to support its continued development, consider donating.
Songify.zip:
MD5: 9E003C7E10545E52963C9BCCB35EF63C
SHA1: 49F0878A14EEB0F034437EC8B4BCCDC3CA6FF20C
SHA256: 682511A7400F278085DE6F4479B555BB3C8A1E23274EC8AF35C3F1D27AC611AB
Songify.exe:
MD5: F75D51D66606007C762FDB2525CD6385
SHA1: 20C9F2C0AF6BA6B17A398BBBDCD389F166DBA2DB
SHA256: 1CBED881A42875774DEE761171EF502ACBA251BBDD668B4282DE559E8FC22725
v1.7.0.0
🎉 Songify 1.7.0 – Official Release Notes
🚨Please read the patch notes thoroughly and make sure you understand them before making support requests.🚨
🚨 Important: Please log out and back into Twitch to refresh your permissions.
🚨 Important: You have to reconfigure your commands manually.
🚨 Important: If you encounter issues with Spotify's new API changes, please change the drop down in Settings -> Spotify to "127.0.0.1"
🔍 What’s New
-
🌐 WebSocket Command Support
Control Songify externally with a powerful WebSocket API.
📄 View WebSocket Documentation -
⚠️ "Ignore and Continue" Offline Mode
Start Songify without an internet connection using a new option in the startup dialog. -
⏱ Time-to-Play Estimation (
{ttp})
The{ttp}placeholder shows an estimated time until a requested song will play (inmm:ssformat). -
🛠 Redesigned Command System (Breaking Change)
The Commands, Responses, and Rewards sections have been completely redesigned for easier management.- All command settings are now stored in
TwitchCommands.yaml - You will need to reconfigure your commands manually after updating
- All command settings are now stored in
-
🎵 YouTube Music Desktop & Browser Extension Support
- Full integration with YouTube Music Desktop App
- A guide can be found here
- Initial support for the upcoming Songify Browser Extension (awaiting approval from Chrome Web Store)
- Full integration with YouTube Music Desktop App
-
🖼️ Requester Profile Picture Storage
Saves the current requester’s profile image asrequester.png -
👤 Viewer List Window
Displays all active Twitch chat users along with their SR status, user level, and sub tier. Refreshes every 30 seconds. -
🏆 Expanded User Level Handling
Supports Twitch subscriber tiers (1, 2, 3).
🔁 Requires re-linking your Twitch account due to updated scopes. -
🔄 Single Instance Handling
Launching a second instance will now bring the existing window to the foreground if minimized or hidden.
🔧 Full Changelog
⭐ New Features
✅ WebSocket Command Support
Supports external commands:
queue_add, vol_set, skip, next, play, pause, play_pause, send_to_chat, block_song, block_artist, block_all_artists, block_user, stop_sr_reward, vol_up, vol_down
- Default requester is set to
""if not provided.
🚫 “Ignore and Continue” Button
Use Songify offline by skipping the internet check on startup.
⏳ Time-to-Play ({ttp})
- Estimate displayed in song request replies.
- Reflects the current queue length and playback status.
🛠 Redesigned Command System
- New UI for Commands, Responses, and Rewards
- Commands now stored in
TwitchCommands.yaml ⚠️ You must recreate your command setup manually
🖼 Requester Profile Picture
- Automatically saves a
requester.pngfile for the current song requester.
👥 Viewer List
- View all Twitch chat users, including their roles and request statuses.
🧠 Smart Instance Behavior
- Prevents multiple Songify instances from running simultaneously.
- Automatically brings the original window into focus.
🔁 Improvements
🎵 Song Request Logic
- Improved handling of blocked songs, explicit content, and duplicates.
- More reliable fallback logic when the queue window is closed.
📁 Output File Behavior
- Output files are now cleared when using the “Clear Pause” option.
🔧 Async & Error Handling
- Improved async methods for better performance and stability.
- Refactored error handling to reduce app crashes and provide better debug output.
🔗 Spotify Auth Redirects
- Updated internal redirect URI to
http://127.0.0.1per Spotify’s latest requirements.
Read more
🐞 Bug Fixes
- Prevented crash when
currSongwas null - Fixed a rare crash during song requests
- Fixed issue where Songify starts minimized or off-screen
- Resolved Twitch reward sync UI display issues
- Fixed translation formatting and accuracy across languages
- Fixed Twitch command crashes caused by outdated scopes
- Resolved crashes related to Windows notifications
- Fixed display issues with token expiration time
- Logout and re-login now work without needing to restart the app
- Added refresh button to Twitch settings
- Token expiration is now shown for both main and bot accounts
🛠 Additional Enhancements
-
🎧 Spotify Credentials Now Required
You must use your own Spotify API credentials.
🎓 Setup Guide -
🌐 Improved Internet & Stream Checks
- Internet check is now non-blocking — Songify stays open and retries automatically
- Stream status check now refreshes every 5 seconds
-
🖥 UI Upgrades
- “Get Beta Updates” option moved to Settings → System
- Removed outdated “Hide user info” setting
🌍 Language Support
- Polished translations across all supported languages
- Language switching now works without requiring a restart
Full Changelog: v1.6.7.2...v1.7.0.0
This was a major update that took a significant amount of time and effort to develop.
If you enjoy using Songify and want to support its continued development, consider donating.
Songify.zip:
MD5: FFE8597034A2D46B3B91BD01A2843A4C
SHA1: 91A963DB292C8EFFF32519AC9E817EE05D2F88BD
SHA256: 4E4F58DD82A19FE5F562D475FEF6EC5DC1A11AAC442B4D86EE63415F1A87B6F5
Songify.exe:
MD5: 53CB1AE21E5FDD755F935EF202B9D9F2
SHA1: B0471C92D69EB36037FFFF148291EAE71AC681FB
SHA256: 06A9AD50ABCC60E2941C06B6C5CF7B769B508D02FB1CB3DF3A5F5165B27E2508
v1.6.7.2
Fixes:
- Fix crash on Browser and Desktop Players: Using browser based players or dekstop players caused a crash on fetching that is now resolved.
- i18n: Minor fixes in translations
Full Changelog: v1.6.7.1...v1.6.7.2
Songify.zip:
MD5: D2F6E3C96240E2242F556920E1FA7EA2
SHA1: AE00F4E6ADAC0D56ED477E81CF4C77FD7A709D1F
SHA256: 83CDB9A5B13BA9394FD1E2E2FBF0837E1EB3CDAE8CAB207090327AA8E8E9BC41
Songify.exe:
MD5: 52328A0835AF57577C7A266ECAEF48C5
SHA1: 0C4588CB6DF2262B8216A8B352D0196194D1434D
SHA256: 00CB490E20EF8298FB9409CDAA3F468D3A2AA47B7455790FB3423B1903BB7CF4