# Tushiyah Sermon Audio Manager — Changelog

Full change history. The current release is always listed in the plugin's
`readme.txt` under `== Changelog ==`.

## 1.9.2
* Security: escaped page `meta_line` and `paginate_links()` output at the echo point with `wp_kses_post()`; removed misleading `phpcs:ignore` comment on the script-bearing `players()` output and documented its safe-HTML return contract.
* Rename: all `sam`/`SAM` element prefixes replaced with `tushse`/`TUSHSE` (post type, taxonomies, options, meta keys, shortcodes, blocks, handles, CSS classes, `@package` docblocks) to satisfy the WordPress.org unique-prefix requirement.
* Rename: plugin renamed to "Tushiyah Sermon Audio Manager" (folder `tushiyah-sermon-audio-manager`, text domain `tushiyah-sermon-audio-manager`).
* Fixed: block editor script dependency `server-side-render` corrected to the registered core handle `wp-server-side-render`.
* Fixed: removed an example placeholder URL that was falsely flagged as a remote call.

## 1.9.1
* Added: [tushse_term_title], [tushse_term_image] and [tushse_term_description] shortcodes that pull the current topic/speaker/series into your Divi Theme Builder archive layouts.

## 1.9.0
* Fixed: [tushse_sermons] now auto-filters to the current term on topic/speaker/series archive pages (new auto attribute, default yes) — place it in a Divi Theme Builder archive template and it lists only that speaker/topic/series.

## 1.8.8
* Changed: Default ordering for [tushse_sermons] is now preached date (sermon date) instead of post published date. Added orderby/order controls to the widget (default: sermon date, newest first).

## 1.8.7
* Fixed: On Divi themes, audio players now render as native HTML5 <audio> elements, completely bypassing wp_playlist_shortcode() and wp_audio_shortcode() which internally enqueue MediaElement scripts that conflict with Divi's et_pb_init_audio_modules. Added is_divi() detection, players_native() renderer, inline playlist track-switching script, and native playlist CSS.

## 1.8.6
* Fixed: Prevented wp_playlist_shortcode() from enqueuing wp-mediaelement on Divi sites, which double-initialized alongside Divi's own copy and broke et_pb_init_audio_modules (hiding hero sections and other layout elements). Added is_divi() detection covering Divi Builder plugin, Divi theme, and child themes.

## 1.8.5
* Fixed: MediaElement assets are now skipped on Divi themes (Divi loads them via its own audio module system), preventing a double-initialization that broke et_pb_init_audio_modules and hid hero sections / layout elements on pages with audio players.

## 1.8.4
* Fixed: MediaElement assets were enqueued on every page via wp_enqueue_scripts, conflicting with Divi's et_pb_init_audio_modules and breaking hero sections and layout rendering on pages with no audio players. Assets are now only enqueued when a player is actually present.

## 1.8.3
* Improved: full WordPress Plugin Check (PCP) compliance — translators comment added, all output escaped, wp_parse_url used, nonce input sanitized, manual textdomain loading removed (translations load automatically on WordPress.org) and a prohibited query flag dropped.

## 1.8.2
* Fixed: the search form disappeared after submitting a search, leaving no way to start a new one — the form now always stays visible with the current keyword, dropdown selections and pinned topic preserved.

## 1.8.1
* Fixed: [tushse_sermon_search topic="…"] hid its form on first page load — the pinned topic was mistakenly counted as an active search.

## 1.8.0
* Added: `topic` attribute for [tushse_sermon_search] — pin a form to a single topic (slug or name). The topic dropdown is hidden and every search stays scoped to that topic.

## 1.7.6
* Fixed: [tushse_sermon_search] consumed an open output buffer when returning early on search requests, which could steal a host buffer (e.g. Divi Builder module renders) and corrupt page layout — including mispositioned fixed headers — while leaving normal page loads unaffected.

## 1.7.5
* Fixed: MediaElement assets are now enqueued in the page head via wp_enqueue_scripts instead of mid-body, preventing a race with theme layout scripts that could mis-measure fixed headers (e.g. Divi) on pages rendering single-file players.

## 1.7.4
* Fixed: single-file audio players rendered via shortcodes on non-sermon pages (e.g. search results) were missing the MediaElement stylesheet/script, leaving raw controls — broken time display, overlapping download button and keyboard hints.

## 1.7.3
* Fixed: PHP notice "_load_textdomain_just_in_time was called incorrectly" on WordPress 6.7+ — the Recent Sermons widget registered its translated name too early, which could also emit output before the page doctype and break front-end layout when error display was enabled.

## 1.7.2
* Fixed: audio players and playlists now inherit the active theme's fonts instead of MediaElement's built-in styling.
* Added: "Built-in styles" toggle in Settings — disables the plugin stylesheet and accent color for full developer control (byline hiding stays active).

## 1.7.1
* Improved: `[tushse_sermon_search]` is now form-only by default so it filters a paired `[tushse_sermons]` list instead of showing its own results; use `results="yes"` for the standalone layout.
* Improved: contextual empty state ("No sermons found matching your search") on filtered lists.

## 1.7.0
* New: Gutenberg blocks in a "Sermons" category — Sermon List, Topic/Series/Speaker cards and Search Form, with inspector controls, rendered via the matching shortcodes.
* New: Sermon transcripts — textarea on the editor, collapsible display section, included in search.
* Improved: per-topic/series/speaker podcast feeds documented (every term archive has a /feed/ URL with enclosures).

## 1.6.0
* New: Sermons — How-To page — full usage guide with click-to-copy shortcode examples, right after Settings.
* New: `[tushse_sermon_speakers]` browse cards, completing the topics/series/speakers set.
* New: Speaker images — media picker on speaker terms, shown on browse cards and archive heroes.
* Improved: Settings and How-To quick links on the Plugins screen.
* Improved: sermon count added to the dashboard At a Glance widget.

## 1.5.2
* Improved: `[tushse_sermons]` now responds to `[tushse_sermon_search]` submissions (keyword, topic, speaker) so one list can act as the results list.
* New: `results="no"` attribute for `[tushse_sermon_search]` to hide its own results block when pairing it with a `[tushse_sermons]` list.

## 1.5.1
* Fix: missing file include caused a critical error on activation (class TUSHSE_Term_Images not found).
* Hardened: plugin modules now boot with class_exists guards, so a partial upload can no longer crash the site.

## 1.5.0
* New: Image support for Topics and Series — media-library picker on the term edit screens.
* New: `[tushse_sermon_topics]` and the new `[tushse_sermon_series]` render clickable image cards (with sermon counts) that lead to each term's listing page.
* New: topic/series listing pages show their image as a hero banner.
* New: "Topic & series images" toggle under Appearance.

## 1.4.1
* Improved: professional card redesign — image-first media-object rows in list layout, elevated hover cards in grid layout, topic chips, pill download buttons with icons, refined search form, pagination and empty states.
* Improved: cards use larger featured images (medium_large) with a subtle zoom on hover.

## 1.4.0
* New: Appearance settings — accent color picker, card layout (list or grid with 1-4 columns), featured images on cards.
* New: `[tushse_sermons]` upgrades — `layout`, `columns`, `pagination`, `orderby="preached"` (sort by preached date) and `image=""` that follows the setting.
* New: Podcast feed — sermon RSS feed gains audio enclosures (Settings > Distribution shows the URL to submit to podcast apps).
* New: Recent Sermons widget with optional inline player and topic filter.

## 1.3.5
* New: Status panel on the settings page showing resolved display settings and, for the most recently edited sermon, how many speakers/series/topics are assigned — making empty-field issues diagnosable at a glance.

## 1.3.4
* New: "Link details" setting — render speaker/series/topic names as plain text instead of archive links, for themes or security plugins that strip links from content.

## 1.3.3
* New: Speaker and Series columns in the Sermons list table, so assignments are visible at a glance.
* Added a source comment when "Speaker" is enabled but no speaker is assigned, to make empty fields diagnosable.

## 1.3.2
* Improved: byline hiding now removes whole meta rows that contain an author marker, so stray prefixes like "By" no longer remain.
* New: "Detail labels" option — prefixes details with "Speaker:", "Date:", etc., making it easy to identify what renders where.

## 1.3.1
* Fixed: shortcode and search cards now follow the "Archive & Listing Display" toggles instead of the single-sermon ones (author showing despite being unchecked).
* New: "Theme author byline" option — hides the theme's own "by author" line on sermon pages and listings, since themes print their own byline outside the plugin's control. Extensible via the `tushse_hide_byline_css` filter.

## 1.3.0
* New: full display settings under Sermons > Settings — toggle date, speaker, series, scripture, topics and author independently for single sermons and archive cards.
* New: choose player position (above/below content) and turn download links on or off.
* New: Placement mode (Automatic injection vs Manual via shortcodes / tushse_sermon_players() / tushse_sermon_meta() template functions) — use Manual if your theme hides the injected player.
* Settings moved from the Settings menu to the Sermons menu for easier discovery.

## 1.2.0
* Fixed: blank page when opening a sermon on themes without a `single-tushse_sermon.php` template — the plugin no longer overrides templates; it injects players/meta into your theme's own rendering.
* New: Download links next to every player (playlist sets get a download list).
* New: `[tushse_sermon_search]` shortcode with keyword + topic/speaker filters and pagination.
* New: sermons are included in the default WordPress search; keywords also match scripture references and topic/speaker/series names.
* Improved: `[tushse_sermons topic="..."]` now accepts term names ("Gate Sundays") as well as slugs.

## 1.1.0
* New: external audio URLs — host long sermons on a podcast host, S3-compatible storage or any direct-link location to bypass WordPress upload-size limits.
* Multiple files still use the native playlist when they all come from the Media Library; mixed/library-external sets render individual players.

## 1.0.0
* Initial release: Sermons post type, hierarchical Topics taxonomy, multiple audios per sermon with playlist output, speakers/series taxonomies, shortcodes, front-end templates, admin filters and opt-in uninstall cleanup.
