=== Verse of the Day Widget for WP ===

== Archived Changelog Entries ==

This file contains older changelog entries so the plugin's readme.txt stays a
reasonable size. For recent releases, see the Changelog section of readme.txt.

= 8.9.5 - (2026-09-03) =
* **Fixed (Daily Rotation):** The day used to pick the verse and background is now read directly from your site's timezone setting. Previously it was calculated in a way that also picked up the web server's own timezone, so on hosts configured differently from your WordPress Settings > General timezone, the verse and background could roll over a few hours early or late rather than at your local midnight. Sites whose server already ran on UTC saw the correct day either way and will notice no change.
* **Improved (Translations):** The setup notice shown after activation now includes context notes for translators describing what each placeholder in those messages holds, so the links to the Widgets and Settings screens and the shortcode are placed correctly in every language.

= 8.9.4 - (2026-09-02) =
* **Fixed (Double Quotations)**  Removed automatic double quotation marks from the full verse display in the Verse of the Day modal.

= 8.9.3 - (2026-08-30) =
* **Fixed (Display):** The pop-up that opens when a visitor clicks "Read full verse" is now styled entirely by the plugin, independently of your theme. Previously the pop-up inherited whatever your theme applies to quotations, headings, and buttons, so the same verse could appear with a stray border down one side, a mismatched background, an unexpected typeface, or a decorative quotation mark on one site and not another. The pop-up now clears all theme styling from itself before applying the plugin's own, so it looks the same on every site regardless of which theme you run. Your theme's appearance elsewhere on the page is untouched.
* **Fixed (Display):** The opening and closing quotation marks around the full verse were not appearing at all in the pop-up. They now display correctly, and can no longer be altered or removed by a theme.
* **Fixed (Fonts):** The font chosen under Settings is now applied to the full verse in the pop-up as well. Previously the setting only reached the verse shown in the widget itself, so opening the full verse could switch it to the theme's font mid-read.
* **Improved (Accessibility):** The pop-up's fade and zoom animations are now skipped for visitors who have enabled the "reduce motion" setting in their operating system.

= 8.9.0 - (2026-08-15) =
* **Fixed (Display):** Some themes style the '<blockquote>' element with a large decorative quotation mark, which was being inherited by the widget's verse text and appearing as an oversized quote glyph over the background image. The widget now resets these theme-inherited quotation marks on its own verse blockquotes, so the verse displays cleanly regardless of which theme your site runs. No change to the verse text itself.
* **New (Animated Backgrounds):** Added 5 new orca-themed and 4 new stallion-themed animations to the animated background library, joining the Caribbean set introduced in 8.8.0. Sites set to "Animated Images" or "Both Static and Animated" will begin showing them automatically.

= 8.8.0 - (2026-08-05) =
* **Changed (Animated Backgrounds):** The animated background library has been replaced in full with 9 new Caribbean-themed animations. All previously bundled animations have been removed. No action is needed on your part, sites set to "Animated Images" or "Both Static and Animated" will simply begin showing the new set. The static image library is unchanged.
* **Changed (Backgrounds):** The background image or animation is now selected deterministically once per day, in the same spirit as the daily verse itself, instead of being randomly re-picked on every single page load. A visitor browsing several pages of your site now sees the same background throughout, and it changes at your site's local midnight along with the verse.
* **Improved (Performance):** Because the background no longer changes between page views, visitor browsers download it once per day and serve it from cache for every page afterward. Previously each page load requested a different file, so the browser cache was never reused, this was especially costly for the animated WebP backgrounds, which are considerably larger than the static images. Sites using animated backgrounds should see a substantial reduction in bandwidth per visitor.
* **Improved (Selection Coverage):** The daily selection advances through the background library in a way that displays every image in your chosen set before any one of them repeats, so the full library is seen over time rather than some images appearing frequently and others rarely by chance.
* **Unchanged (Multiple Widgets):** Widgets appearing together on the same page continue to receive different backgrounds from one another, as introduced in 8.5.4. Each widget's background is simply now stable for the day rather than randomized per page load.
* **Improved (Caching Compatibility):** The daily rotation is calculated from your site's configured timezone offset rather than a server-generated date stamped into the page, so the background still rotates correctly on sites running full-page caching plugins, where a cached page could otherwise serve a stale date for hours or days.

= 8.7.3 - (2026-08-02) =
* Adjusted the plugin short description to comply with the WordPress Plugin Directory's 150-character limit. No functional changes.

= 8.7.2 - (2026-08-02) =
* **Improved (Code Structure):** The static background image list in 'js/votdGlobals.js' is now returned from a dedicated 'getImagesList()' method, mirroring how the animated background list has always been provided by `getAnimationList()`. Both media lists are now defined the same way in the same place, so adding or retiring a background is an identical one-line edit regardless of media type. No change to which backgrounds appear or how they are selected, this is an internal maintainability change only.

= 8.7.0 - (2026-07-26) =
* **Changed (Verse Source):** The daily verse is now served from a curated library of 75 King James Version (KJV) verses bundled inside the plugin itself (data/verses.json), instead of being fetched from the remote verse API. English verses now require no network requests at all, the widget works fully offline and is unaffected by any remote service outage.
* **Improved (Performance):** Verse load time is faster for every language. English verses are read directly from the verse library on your own WordPress server with zero network latency, and translated verses are served from your site's local daily cache, the remote translation service is contacted at most once per language per day, so virtually every visitor receives the verse at local speed.
* **Changed (Daily Verse Selection):** The verse is now selected deterministically by the day of the year, so every site running this plugin displays the same verse on the same date, a true "Verse of the Day", with no repeats on consecutive days. Previously each site received an independent random verse.
* **Removed:** The remote verse API endpoint, the local fallback verse list, and the API-outage backoff logic have been removed; with the verse library bundled locally, there is no longer anything to fall back from. (The translation endpoint is still used for non-English languages only.)
* **Fixed (Translations):** Failed translation lookups are no longer cached for the rest of the day. A translation hiccup now retries on the next page load instead of pinning the widget to English until midnight.
* **Fixed (Data):** Removed one duplicate verse (Romans 10:9 appeared twice) from the verse library.

= 8.6.0 - (2026-07-19) =
* **Fixed (Reliability):** The daily verse (and its translation) is now fetched and cached server-side once per day, instead of every visitor’s browser calling the remote API directly on every page load. This means the widget genuinely shows the same "verse of the day" to every visitor, the remote API is contacted far less often, and if the API is briefly unreachable a short cooldown prevents every page view from retrying it during an outage.
* **Fixed (Loading State):** Verse text is now rendered directly into the page HTML on the server, eliminating the "Loading..." flash and removing the dependency on client-side JavaScript to display the verse text itself.
* **Fixed (Translations):** Verse truncation for compact widget display now applies to translated verses as well as English ones; previously, translated verses always displayed in full regardless of widget size.
* **New Feature (Fonts):** Added a "Download & Self-Host All Fonts" tool on the settings page. With one click, all font files are downloaded directly to your own server (Apache-2.0 / SIL OFL-1.1 licensed, both permit self-hosting), so visitor browsers no longer need to contact Google Fonts. Falls back to Google’s CDN automatically for any font not yet downloaded.
* **Fixed (Accessibility):** Widget output added via Appearance > Widgets was being passed through wp_kses_post(), which strips ARIA attributes, role, and tabindex by default. This silently removed the aria-live verse announcements, modal roles, and focus-management attributes needed for screen readers and keyboard navigation when the widget was added this specific way (shortcodes and blocks were unaffected). Widget output is now sanitized with a scoped allow-list that keeps this plugin’s own accessibility attributes intact, without changing what wp_kses_post() allows anywhere else on the site.

= 8.5.4 - (2026-07-17) =
* Fixed (Backgrounds): When multiple widgets (e.g. a header widget and a sidebar widget) appeared on the same page, they previously always displayed the identical background image or animation. Each widget instance now gets its own independently randomized background.
* Fixed (Translations): The verse translation request had no timeout, so a slow or unresponsive translation endpoint could leave the widget waiting indefinitely before falling back to English. The translation request now times out after 10 seconds and falls back gracefully, matching the existing behavior of the main verse request.

= 8.5.2 - (2026-06-24) =
* **Resolved (Service Restored):** A critical server outage temporarily disrupted the widget's backend services. During this time, the Verse of the Day widget remained fully functional but served only the curated fallback verses, and translations were unavailable, verses defaulted to English rather than each WordPress user's preferred language. The underlying server issues have now been fully resolved, and both the live verse service and multilingual translations are operating normally again. Thank you for your patience while we worked to restore everything.

= 8.5.1 - (2026-06-21) =
* **Resolved (Translations Restored):** The verse translation service is back online and working normally. Multilingual support has been fully re-enabled, so verses will once again display in your selected language. Thank you for your patience while we resolved the issue.

= 8.5.0 - (2026-06-20) =
* **New (Block Editor Support):** The plugin now provides native Gutenberg blocks for the modern block editor (Site Editor and post/page editor). Search for "Verse of the Day Header" or "Verse of the Day Sidebar" in the block inserter to drop the widget anywhere. Both blocks are server-side rendered, so they produce the exact same markup as the legacy widgets and shortcodes.
* **Backwards Compatible:** The classic "Appearance > Widgets" widgets and all existing shortcodes ([votd_header_widget], [votd_sidebar_widget], and the legacy [votd_verse_of_the_day_widget_for_wp]) continue to work unchanged. Sites running WordPress versions without the block editor are unaffected — block registration is gracefully skipped.
* **Improvement:** Front-end assets continue to load on demand, so the new blocks only enqueue the stylesheet, scripts, and Google Font on pages where a verse is actually rendered.