Releases: midvash/bible-wordpress-plugin
Release list
v0.8.0 — Instant verse tooltips: batched prefetch, localized version names, copyright attribution
Bible by Midvash 0.8.0 makes verse tooltips feel instant and puts the expanded Midvash Bible API to work — batched prefetching, localized Bible version names, and proper copyright attribution for licensed translations.
Added
- Instant verse tooltips via batched prefetch. Right after a post renders, the plugin now collects every detected Bible reference on the page and prefetches them in a single request through the API's new
/v1/passagesbatch endpoint (up to 60 unique references per page, 20 per upstream call, scheduled off the critical path withrequestIdleCallback). By the time a reader hovers a reference, the verse is already in memory — the tooltip opens instantly. Hovers that land before the prefetch resolves simply fall back to the previous per-verse fetch, so nothing ever blocks or breaks. - Copyright attribution in the tooltip. Licensed Bible translations (NVT, NVI, ESV and friends) now show a discreet attribution line in the tooltip footer, with the full copyright notice on hover. Public-domain texts stay clean. A friendly touch for publishers — and for the plugin's future WordPress.org submission.
- Localized version names in Settings. The Bible version dropdown now shows each translation's name in your site's display language — "Bíblia em Inglês Básico" on a Portuguese site instead of "Bible in Basic English" — powered by the enriched
/v1/versionscatalogue with its 86 versions across 32 languages.
Changed
- The version catalogue is now read from
/v1/versions(cached for 7 days), carrying the newlocalizedNamesandcopyrightmetadata. - The External Services disclosure in
readme.txtdocuments the batched prefetch precisely.
Removed
- Defensive HTTP handling for 429 responses and
X-RateLimit-Resetheaders: the Midvash API now officially documents that it serves without rate limits, so the client keeps only transport-error and 5xx retries. Less code, same resilience.
Verified
- Integration-tested in WordPress Playground against the live API: single verses, ranges (
Genesis 1:1-3), chapter-only and localized references (Salmos 23), plus real copyright metadata. - PHPCS (full WordPress Coding Standards + PHPCompatibilityWP) and PHPStan level 5: zero errors.
- Official WordPress.org Plugin Check on the wp.org build: "Success: Checks complete. No errors found."
📦 Download and docs: midvash.app · Bible reading online: midvash.com
Existing installs receive this version automatically via the built-in update checker.
v0.7.0 — WordPress.org-ready: 4-char prefix, full WPCS/PHPStan compliance, Plugin Check green
Bible by Midvash 0.7.0 is a foundation release: it makes the WordPress plugin structurally ready for a future WordPress.org plugin directory submission and brings the whole codebase to zero static-analysis debt — while remaining a 100% safe, drop-in update for every existing install.
Changed
- WordPress.org-ready symbol prefix. Every global PHP function, class, constant and class file is renamed from the 3-character
bbm_/BBM_prefix tobbmv_/BBMV_— the WordPress.org guidelines require plugin prefixes of at least 4 characters. This is purely internal: stored settings (bbm_options), the[bbm_votd]verse-of-the-day shortcode, AJAX endpoints, nonces,.bbm-CSS classes and asset handles are all unchanged, so existing sites update in place with settings intact — nothing to reconfigure, no data migration.
Added
- Versioned quality tooling. The repo now ships linter configs used on every change:
phpcs.xml.dist— PHP_CodeSniffer with the full WordPress Coding Standards ruleset plus PHPCompatibilityWP (PHP 7.4+, WP 5.0+)phpstan.neon.dist— PHPStan level 5 with the WordPress extensionscripts/pcp-blueprint.json— a WordPress Playground blueprint that runs the official wordpress.org Plugin Check against the build ZIP with no Docker required
Fixed
- All coding-standards debt cleared. The plugin now passes PHPCS (WordPress Coding Standards, complete ruleset) and PHPStan level 5 with zero errors and zero warnings, including full and accurate PHPDoc on every function, class and member variable.
- Official Plugin Check: green. The wp.org build of 0.7.0 completes the Plugin Check run with "Success: Checks complete. No errors found."
Verified
- Functional smoke test on WordPress Playground: the plugin activates, and Bible references like
John 3:16andGenesis 1:1in post content are converted into verse tooltip links with Schema.orgQuotationmicrodata, in all 9 supported locales (pt-BR, en, es, fr, de, it, ru, ko, zh-CN). - Translations: template regenerated and all 9 locales remerged and recompiled — 86 strings, none fuzzy or untranslated.
📦 Download and docs: midvash.app · Bible reading online: midvash.com
Existing installs receive this version automatically via the built-in update checker.
0.6.1
Migra os endpoints de update/download de wordpress.midvash.com pro midvash.app. Sem mudança funcional; instalações existentes devem ser atualizadas uma vez pra apontar pro novo endpoint.
v0.6.0 — WordPress.org-ready release
First release validated against the official wordpress.org submission gate: PHP_CodeSniffer with WordPress-Core and WordPress-Extra (0 errors / 0 warnings) and the wordpress.org Plugin Check Plugin (Success — no errors). The wp.org-bound ZIP attached to this release (bible-by-midvash-0.6.0-wporg.zip) is the one we will submit to https://wordpress.org/plugins/.
Added
uninstall.php. Cleansbbm_optionsand everybbm_*transient on plugin deletion (multisite-aware viaswitch_to_blog()). Uses$wpdb->esc_like()+$wpdb->prepare()for the LIKE pattern so the_characters in the transient prefix stay literal.- Two-target build.
scripts/build-zip.ts --target=wp-orgproduces a ZIP withvendor/plugin-update-checkerexcluded and the auto-update block stripped from the entry-point (the wordpress.org Plugin Review Guidelines forbid plugins from bundling their own update mechanism when hosted on the official directory). The default build keeps the updater for installs distributed viawordpress.midvash.com. - CI version-coherence gate. The release workflow now fails fast if the header
Version:, theBBM_VERSIONconstant, thereadme.txtStable tagand the matching changelog entry don't all agree. - Per-IP AJAX rate limit on
bbm_get_verse(120 requests / 60s, bucketed by salted-hash of the IP — raw IP never persisted). manage_optionscapability check on the admin-onlybbm_get_versionsAJAX endpoint.
Fixed
- Security. Every
$_POST/$_GETaccess now flows throughwp_unslash()+sanitize_*(). The admin tab is validated against a whitelist.wp_remote_get()calls now setreject_unsafe_urls=true(SSRF defence) andlimit_response_size=256KB. The widget's verse rendering output is documented as pre-escaped (phpcs:ignorewith a comment explainingwp_kses_post()would strip the Schema.org microdata). - Performance.
BBM_Books::get_matching_pattern()andget_lookup_table()now memoize per-locale in a static cache (was rebuilding a ~1.2k-element regex on everythe_contentfilter call — material gain on archives and themes that render multiple post bodies). Verse reads now go object cache → transient → API. Retry budget on the synchronous tooltip path cut from 3× / 4s to 2× / 1s. - WP 6.7+ notice. Removed the explicit
load_plugin_textdomain()call — WP 4.6+ auto-loads.mofiles by slug match, and Plugin Check flags the explicit call as discouraged.
Changed
- Reference parsing centralised in
BBM_Books::parse_reference().BBM_Parser,BBM_APIandBBM_Blocknow share one regex / one accent-tolerance pass / one chapter-range validation. - Tooltip i18n now flows through
__()against the bundled.mofiles instead of a hardcoded 9-locale dict in PHP. New locales come for free as.pofiles are added. - Inline admin JS extracted to
assets/js/bbm-admin.js, properly enqueued withwp_localize_script()(was a 90-line inline<script>in the settings page). mb_strtolowerfallback viaBBM_Books::lower()for shared hosts without thembstringextension.- Deactivation no longer wipes the cache — was punishing users who deactivate to debug a theme conflict. Cleanup happens in
uninstall.phpinstead.
Removed
- Dead
BBM_API::get_books()andBBM_API::clear_cache()methods (zero callers in any version).
Catalogue
The Bible-versions list in readme.txt was 11 versions stale. Now mirrors the live API: 53 versions across 9 locales. Newly disclosed:
- Portuguese (Brazil): BPM, ONBV, NVA, BLPT, TFT
- Spanish: RVR1909, RVG
- French: CRAMPON, FRASBL
- German: MEN, LUTH1545
i18n
86 / 86 strings translated in all 9 locales (pt_BR, en_US, es_ES, fr_FR, de_DE, it_IT, ru_RU, ko_KR, zh_CN). 0 fuzzy, 0 untranslated.
Distribution
This release ships two ZIPs:
bible-by-midvash-0.6.0.zip— full build with the auto-updater bundled, for installs distributed via wordpress.midvash.com.bible-by-midvash-0.6.0-wporg.zip— auto-updater stripped, for submission to the wordpress.org plugin directory.
Plugin Check validation log and PHPCS reports both clean on the wp.org build.
v0.5.0 — Gutenberg block for inline Bible verse insertion
Added
- Gutenberg block "Bible Verse — Midvash" — insert any Bible verse directly in the block editor (Blocks → Text → Bible Verse). No build step, no external dependencies — the block uses standard WordPress globals.
Block features:
- Reference field (supports all 9 locales:
John 3:16,João 3:16,이사야 40:31,Иоанн 3:16…) - Version override per-block (or inherits from plugin settings)
- Language override per-block (all 9 locales)
- Toggle: show/hide reference citation
- Toggle: link reference to Midvash
- Rendered server-side via PHP — verse is always fresh, cached 30 days via WP Transients
- Schema.org
Quotationmicrodata included in output
Front-end output example:
<blockquote class="bbm-verse" itemscope itemtype="https://schema.org/Quotation">
<p class="bbm-verse__text" itemprop="text">For God so loved the world…</p>
<cite class="bbm-verse__reference">
<a href="https://midvash.com/en/kjv/john/3/16" class="bbm-verse__link" itemprop="url">John 3:16</a>
<span class="bbm-verse__version">KJV</span>
</cite>
</blockquote>This fills the market gap left by BibleGet I/O (abandoned Feb 2024, flagged as incompatible with WP 6.5+).
Powered by Midvash · Plugin site
v0.4.0 — Verse of the Day widget + shortcode
Added
- Verse of the Day widget — go to Appearance → Widgets and add "Verse of the Day — Midvash" to any sidebar. Displays the daily Bible verse powered by the Midvash API. Per-widget language and version overrides supported.
[bbm_votd]shortcode — embed the daily verse anywhere in posts or pages:[bbm_votd] [bbm_votd locale="en" version="kjv" title="Today's Verse"] [bbm_votd locale="ru" show_reference="false"]- Daily verse is cached for 24 hours via WordPress Transients — no repeated API calls.
- All 9 locales supported (Portuguese, English, Spanish, French, German, Italian, Russian, Korean, Chinese).
- VOTD output includes Schema.org
Quotationstructured data. - Dark mode styles included out of the box.
Powered by Midvash · Plugin site
v0.3.0 — Schema.org Quotation microdata
Added
- Schema.org structured data on every auto-detected Bible reference link. Each
<a>tag now carriesitemscope itemtype="https://schema.org/Quotation"with the reference text wrapped in<span itemprop="name">. No configuration needed — search engines can parse verse references as structured data out of the box.
This is a drop-in improvement: no new settings, no breaking changes. Sites using the plugin automatically get improved rich-result eligibility after updating.
Powered by Midvash · Plugin site
v0.2.1 — localize brand name in admin
What's new
The plugin brand "Bible by Midvash" is now localized in the WordPress admin. With your site language set to one of the 8 non-English locales, the Settings menu entry and the page header now read in the native script:
- 🇧🇷 Bíblia by Midvash (Portuguese)
- 🇪🇸 Biblia by Midvash (Spanish)
- 🇩🇪 Bibel by Midvash (German)
- 🇮🇹 Bibbia by Midvash (Italian)
- 🇷🇺 Библия by Midvash (Russian)
- 🇰🇷 성경 by Midvash (Korean)
- 🇨🇳 圣经 by Midvash (Chinese)
- French and English keep "Bible by Midvash"
The "Midvash" brand stays intact in every locale — only the word "Bible" is translated.
Why
In v0.2.0 the rest of the admin UI was already translated across 9 locales, but these three spots (menu title × 2 + hero h1) were hardcoded in English and slipped through. v0.2.1 fixes that.
Install / update
Auto-update picks this up via the bundled update checker. Or download manually from this release or wordpress.midvash.com.
🤖 Built and published automatically.
v0.2.0 — 9 content locales end-to-end
What's new
The plugin now supports 9 content locales end-to-end: Portuguese (Brazil), English, Spanish, French, German, Italian, Russian, Korean, and Simplified Chinese.
The "Language" setting in admin now offers all 9 options, each backed by:
- Real Bible versions on api.midvash.com
- Localized book detection in your posts (e.g. detects
Иоанн 3:16for Russian,요한복음 3:16for Korean,约翰福音 3:16for Chinese) - Localized URLs to midvash.com (e.g.
midvash.com/fr/lsg/jean/3/16,midvash.com/ko/kor/요한복음/3/16) - Locale-appropriate default version (LSG for French, LUTH1912 for German, NRI for Italian, SYNODAL for Russian, KOR for Korean, CUV for Chinese)
Under the hood
- New
scripts/sync-books.tsregenerates the book + version data straight from the Midvash API. Adding a 10th locale on the API in the future means re-running the script and shipping a release — no manual data entry. - 66 books × 9 locales (594 entries) of names, slugs, and abbreviations now flow from API → PHP. The previous ~500 lines of hardcoded book data are gone.
- Tooltip strings ("Read more", "Verse currently unavailable") translated for the 6 new locales.
Install / update
- Auto-update: existing WordPress sites running ≥0.0.6 pick this up via the bundled update checker.
- Manual: download from this release or from wordpress.midvash.com.
🤖 Built and published automatically by the release workflow.
v0.1.0 — translations for 9 locales
What's new
Adds full WordPress translation catalogs (.po + compiled .mo) for 9 locales, aligning the plugin with the Midvash browser extension:
- 🇧🇷 Portuguese (Brazil) —
pt_BR - 🇺🇸 English —
en_US - 🇪🇸 Spanish —
es_ES - 🇫🇷 French —
fr_FR - 🇩🇪 German —
de_DE - 🇮🇹 Italian —
it_IT - 🇷🇺 Russian —
ru_RU - 🇰🇷 Korean —
ko_KR - 🇨🇳 Simplified Chinese —
zh_CN
WordPress automatically loads the matching .mo based on the site language — no configuration needed.
Also in this release
- Refreshed
bible-by-midvash.pottemplate from current source (64 msgids, extracted viaxgettext). - New
CLAUDE.mdwith operating guidelines for contributors and AI agents.
Install / update
- Auto-update: WordPress installs running ≥0.0.6 pick this up automatically via the bundled update checker.
- Manual: download the ZIP from this release or from wordpress.midvash.com and upload via Plugins → Add New → Upload Plugin.
🤖 Built and published automatically by .github/workflows/release.yml.