Download Latest Version v1.1.0 -- Security _ Bug Fix Release source code.tar.gz (53.4 kB)
Email in envelope

Get an email when there's a new version of internet-radio

Home / v1.1.0
Name Modified Size InfoDownloads / Week
Parent folder
build_installer.bat 2026-03-06 1.3 kB
build_portable.bat 2026-03-06 1.2 kB
InternetRadio-1.1.0.exe 2026-03-04 68.5 MB
README.md 2026-03-04 3.9 kB
v1.1.0 -- Security _ Bug Fix Release source code.tar.gz 2026-03-04 53.4 kB
v1.1.0 -- Security _ Bug Fix Release source code.zip 2026-03-04 62.7 kB
Totals: 6 Items   68.6 MB 6

Changelog

[1.1.0] β€” 2026-03-04

πŸ› Bug Fixes

  • Album art & Toast out of sync β€” the Toast notification now always displays the correct cover art. Previously, the iTunes response arrived after the toast was already shown, causing it to fall back to the station favicon instead of the album cover.
  • Stale album art from previous track β€” if the current song changed while an iTunes request was still in flight, the result is now discarded. No more cover art from the previous track bleeding into the next one.
  • Blacklist did not block album art fetching β€” blacklisted tracks still triggered iTunes API requests and updated currentAlbumArt in the background. Fixed: blacklisted tracks now clear the cover art and skip the iTunes query entirely.
  • "Clear history" button had no effect β€” getHistory() returns a copy of the internal list, so calling .clear() on it did nothing. Fixed via a dedicated clearHistory() method that operates on the original list.
  • BlacklistDialog modified internal list without synchronization β€” direct access to the blacklist from the dialog could cause a ConcurrentModificationException during playback. All operations now go through synchronized methods.
  • Race condition on fxPlayer β€” the fxPlayer field was assigned on the JavaFX thread but read from other threads without synchronization. Fixed by introducing a dedicated fxLock object.

✨ New Features

  • Persistent song history β€” the last 50 played songs are now saved to config.json and restored on the next launch.
  • 2 GB recording limit β€” live recording now automatically stops when the buffer reaches 2 GB, preventing an OutOfMemoryError during long sessions.
  • Volume tooltip in MiniPlayer β€” the volume slider in MiniPlayer mode now shows the current percentage in a tooltip, updated in real time.

πŸ”’ Security

  • SSRF / URL validation β€” introduced isUrlSafe() which blocks connections to localhost, 127.x, 10.x, 192.168.x, 169.254.x, IPv6 loopback (::1), and non-HTTP protocols (file://, javascript:, data:). Applied to stream playback, HTTP redirects, and the song metadata checker.
  • CSS injection protection β€” accent color values loaded from config.json are now validated against the #RRGGBB format via sanitizeColor() before being applied to the UI.
  • Path traversal protection β€” language file names are now validated against [a-z]{2,10} and the resolved path is checked to stay within the langs/ directory.
  • Thread-safe blacklist β€” added blacklistLock; isBlacklisted(), addToBlacklist(), and removeFromBlacklist() are now fully synchronized.

🧹 Refactoring

  • Removed TrayManager.java β€” the class was unused (system tray was replaced by MiniPlayer). Removing it eliminates dead code and reduces project size.
  • Removed static INSTANCE singleton β€” RadioModClient.INSTANCE and getInstance() were unused outside the class itself and have been removed.
  • Proper executor shutdown β€” new shutdownExecutors() method in RadioModClient correctly shuts down sleepTimerExecutor and songChecker when the app closes.
  • Translated BlacklistDialog β€” all hardcoded Polish strings replaced with modClient.t() calls for proper multilingual support.
  • New app icon β€” replaced with a new 256Γ—256 PNG/ICO featuring a music note and sound waves, fully filling the icon area and matching the app's purple accent color.

[1.0.0] β€” initial release

  • Station search via Radio-Browser API
  • MP3 / AAC / HLS stream playback
  • MiniPlayer, Sleep Timer, WAV recording
  • Song history, blacklist, Toast notifications
  • Album art via iTunes API
  • Global media key support
  • Multilingual support (PL/EN) via JSON files
Source: README.md, updated 2026-03-04