This file is here for tracking changes in development versions

2014-07-28
* Added connection timing to database connection verification
* Plugin now connects to database only when parsing shortcodes/responding to ajax hooks to reduce page load times
* Settings verification button is disabled during ajax request to avoid subsequent requests when given MySQL host takes long time to respond

2014-07-29
* Added few missing CSS class names to shortcodes HTML

2014-09-29
* Added option to override radiodj.css by copying it to current theme's or child themes root
	Now the plugin checks if radiodj.css exists in theme or child theme and loads that instead

2014-10-05
* Bugfix: Add stripcslashes for input variables in database verification

2015-04-23
* Enhancement: Better caching for data in shortcode
* Bugfix: Connect to database only if cached data not available

2015-04-26
* Fix: Removed invalid <h3> tags from table headings
* Enhancement: Separator hiphen between artist and title wrapped in <span class="separator"> so it can be hidden/styled using CSS
* Enhancement: Added option to display song titles of upcoming tracks

2015-11-23
* Bugfix: Replace deprecated like_escape function with radiodj_db::esc_like method

2016-09-01
* Enhancement: Make sure tracks in playlist queue can't be requested
* Enhancement: Added option to disable name input field for requests

2016-09-02
* Enhancement: Added option for request per-IP-address limit duration
* Fix: Check request limit using selected time interval rather than comparing date
* Enhancement: Added options to disable request submission and display a message

2016-09-03
* Enhancement: Option to control track types available for requests
* Enhancement: Option to control track types displayed by [now-playing] shortcode

2016-09-04
* Enhancement: Display a dismissible notification when request submission is disabled

Version 1.0.0 - 2026-02-11
* Fix: songs requested won't appear doubled, tripled and so on in the song list when they are requested
* Enhancement: added support for the latest Wordpress (6.9) and PHP (v8.5)
* Enhancement: made almost all of the plugin functions with AJAX in order to bypass advanced cached websites which had a problem with displaying shortcodes of the plugin
* Enhancement: added "Cooldown Between Requests" which helps websites with a lot of requests at a time - each user will have to wait a customizable amount of time until he can request a song again, so others can also add their request in the meantime
* Enhancement: added an audit mode which stores a small rolling log of request attempts using timestamp, IP and fingerprint in order to stop users from tricking the limit of requests set by the admin (usually by changing the IP)
* Enhancement: added Exclude Subcategories (using song ID subcat) to exclude from request songs or other files in a category that were not meant to be seen in the request list
* Enhancement: added a scheduler (by day and time) which enables or disables the request feature in the website. The plugin will display automatically when the request becomes available again, right after the custom message you can set in the settings panel
* Enhancement: when an artist is added with a song in the request queue, that artist will be marked as unavailable for request (duration is customizable)
* Enhancement: added translation for Romanian language in all the website functions. It works in the language that your Wordpress is set to use
* Enhancement: sanitized the whole code to be lean and smooth
* Enhancement: audited and patched the code for security and avoid code injection, CSS attacks and so on
* Escaped dynamic attributes/URLs in request table
* Escaped track duration output
* Replaced manual checkbox attribute output with checked() helper

Version 1.0.1 – 2026-03-05
* Enhancement: Optional pending requests counter displayed after a user submits a request
* Enhancement: Added admin option to enable/disable the pending requests counter
* Enhancement: Message is translatable via WordPress translation system
* Enhancement: Helper function added to count pending requests (requests table, played=0)
* Improvement: Code structured to avoid interfering with existing request workflow and maintain plugin security practices

Version 1.0.2 – 2026-03-05
* Fix: Pending requests message is now displayed directly under the success message (even when the count is 0)
* Fix: Cleaned up and simplified pending count rendering logic to avoid non-functional branches
* Improvement: Added minimal styling for the pending count line for consistent spacing

Version 1.0.3 – 2026-03-05
* Fix: Recompiled Romanian translation (.mo) so new strings are translated correctly on site
* Improvement: Translation files now include the pending requests counter strings

Version 1.0.4 – 2026-03-05
* Fix: Request list pagination/navigation no longer falls back to page 1 due to JavaScript handler issues
* Improvement: Narrowed AJAX navigation click handler to only pagination/request/return links to avoid hijacking unrelated anchors

Version 1.0.5 – 2026-03-05
* Fix: AJAX pagination no longer resets to page 1 when LiteSpeed Cache (or similar caches) is enabled
* Improvement: Added explicit no-cache headers for RadioDJ AJAX actions
* Improvement: Added rdj_ajax flag to AJAX requests to simplify cache-bypass rules
* Maintenance: Version constants synchronized (plugin header + RDJ_VERSION)

Version 1.0.6 – 2026-03-05
* Fix: Improved compatibility with aggressive LiteSpeed Cache setups when AJAX updates are enabled
* Improvement: Strengthened no-cache behavior for RadioDJ AJAX actions (DONOTCACHEPAGE/DONOTCACHEOBJECT/DONOTCACHEDB + stricter headers)
* Improvement: Switched dynamic shortcode rendering and now-playing updates to POST to reduce the chance of intermediary caching

Version 1.0.7 – 2026-03-05
* Security: Added action-specific nonces for AJAX calls (render + now-playing)
* Security: Optional nonce verification for now-playing endpoint (backwards compatible)
* Security: Enforced POST-only for place-request AJAX endpoint
* Security: Added hard length limits for search terms to reduce abuse potential
* Security: Added header length guard when parsing forwarded IP headers (defense-in-depth)

