Songify v1.8.12
Features
- Spotify idle fetch backoff - When playback stays paused/idle, Songify slows Spotify polling to save API quota: after 10 idle pulls the interval becomes 10× the settings rate (capped at 60s); after another 10 idle pulls it raises to the 60s cap if still below. Restores automatically when playback resumes, the track changes, or Spotify-related Twitch commands/rewards run (song request, skip, play, song info, etc.).
- Idle polling status chip - When backoff is active, the main window shows e.g. Polling 20s (idle) / Polling 1 min (idle) in the bottom center of the window; click to restore the normal settings rate.
- Settings UI overhaul - Settings are grouped into clearer sections (General, Limits, Filters, Bits, Backup, Cloud, Advanced, Auth Ports) with scrollable layouts. User-level pickers now show a summary of selected levels when closed.
- Spotify toast toggle - New Show Spotify toasts setting (System → Behavior) to enable or disable Windows toast notifications for Spotify errors.
- Pear auto-connect from status icon - Click the Pear status indicator to toggle auto-connect; tooltips show backoff/retry state more clearly.
- OAuth callback branding - Spotify login success/error page now uses embedded Songify and Spotify logos instead of remote images.
Improvements
- Smarter Spotify error notifications - Operational Spotify API failures only notify after several consecutive non-429 errors (default: 5). Rate-limit (429) toasts still appear immediately. Global/category throttling and persistent banner occurrence counts further reduce spam.
- Spotify error banner copy - Clearer rate-limit wording (“until around” a specific time) and a more visible persistent banner layout.
- Spotify playlists - Playlist loading now pages through the full library; playlist dropdowns use a max height so long lists stay usable.
- Twitch command responses - Command handling now consistently sends or announces the response after processing.
- Pear diagnostics - JSON parse failures log a payload preview centered around the error (path, line, position) for easier troubleshooting.
- Twitch request ingress - Request input is normalized earlier in the hosted service / Twitch handler flow.
Removals
- Restrict song requests to a Spotify playlist - The playlist-only SR restriction option and related UI have been removed. General playlist selection and “only add to playlist” behavior are unchanged.
Fixes
- Spotify track URLs - Track ID extraction from Twitch messages is stricter (valid 22-character IDs only), reducing bad matches from partial/odd URLs (#214).
- Duplicate song requests - Requests for the song that is already playing are blocked.
- Twitch startup / Spotify devices - Hardened Twitch auto-connect init order; improved Spotify device fallback/recovery and avoided unnecessary device-list API calls when a device id is already stored (#210, #211).
- Pear auto-connect - Auto-connect stays active with one-shot failure alerts, exponential backoff retries, and forced re-check on explicit status-icon clicks.
- Paused track refresh - Reduced repeated track updates caused by inconsistent paused/
isPlayingstate.
Contributors
Thanks to everyone who contributed to this release:
- @janbloemacher - Spotify idle fetch backoff & status chip, Settings UI overhaul, Spotify toast toggle & notification throttling, OAuth callback logos, Twitch command response handling, playlist SR restriction removal
- @gwyden - Twitch init / Spotify device recovery, Pear auto-connect & diagnostics, duplicate-request block, Spotify track URL parsing (#210, #211, #214)
Full Changelog: v1.8.11...v1.8.12
❤️ 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: 5753216418A930F29D86CE4E4206903C
SHA1: 6A3C91F87D90C644529B02797139B31BE483293D
SHA256: 46C745A88C7C16F8EB3C10839C2D207DDE1A52F435D90A05958D6EF702230EA1
Songify.exe:
MD5: 823A9DB632F60C163EAC73543A5720F2
SHA1: 9665212CC4A0F3EA32D363691F00C632F51614FE
SHA256: D38E9DEC008D12CFDD47E662891A4D97E94C54671C321145A522597CBDDE6611