Skip to content

Releases: midvash/bible-wordpress-plugin

v0.8.0 — Instant verse tooltips: batched prefetch, localized version names, copyright attribution

Choose a tag to compare

@onetogregorio onetogregorio released this 22 Jul 01:40
452853b

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/passages batch endpoint (up to 60 unique references per page, 20 per upstream call, scheduled off the critical path with requestIdleCallback). 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/versions catalogue with its 86 versions across 32 languages.

Changed

  • The version catalogue is now read from /v1/versions (cached for 7 days), carrying the new localizedNames and copyright metadata.
  • The External Services disclosure in readme.txt documents the batched prefetch precisely.

Removed

  • Defensive HTTP handling for 429 responses and X-RateLimit-Reset headers: 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

Choose a tag to compare

@onetogregorio onetogregorio released this 21 Jul 23:34
291a09d

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 to bbmv_ / 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:

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:16 and Genesis 1:1 in post content are converted into verse tooltip links with Schema.org Quotation microdata, 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

Choose a tag to compare

@onetogregorio onetogregorio released this 13 Jun 22:52
60d745d

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

Choose a tag to compare

@onetogregorio onetogregorio released this 28 May 13:44
386bb41

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. Cleans bbm_options and every bbm_* transient on plugin deletion (multisite-aware via switch_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-org produces a ZIP with vendor/plugin-update-checker excluded 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 via wordpress.midvash.com.
  • CI version-coherence gate. The release workflow now fails fast if the header Version:, the BBM_VERSION constant, the readme.txt Stable tag and 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_options capability check on the admin-only bbm_get_versions AJAX endpoint.

Fixed

  • Security. Every $_POST / $_GET access now flows through wp_unslash() + sanitize_*(). The admin tab is validated against a whitelist. wp_remote_get() calls now set reject_unsafe_urls=true (SSRF defence) and limit_response_size=256KB. The widget's verse rendering output is documented as pre-escaped (phpcs:ignore with a comment explaining wp_kses_post() would strip the Schema.org microdata).
  • Performance. BBM_Books::get_matching_pattern() and get_lookup_table() now memoize per-locale in a static cache (was rebuilding a ~1.2k-element regex on every the_content filter 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 .mo files by slug match, and Plugin Check flags the explicit call as discouraged.

Changed

  • Reference parsing centralised in BBM_Books::parse_reference(). BBM_Parser, BBM_API and BBM_Block now share one regex / one accent-tolerance pass / one chapter-range validation.
  • Tooltip i18n now flows through __() against the bundled .mo files instead of a hardcoded 9-locale dict in PHP. New locales come for free as .po files are added.
  • Inline admin JS extracted to assets/js/bbm-admin.js, properly enqueued with wp_localize_script() (was a 90-line inline <script> in the settings page).
  • mb_strtolower fallback via BBM_Books::lower() for shared hosts without the mbstring extension.
  • Deactivation no longer wipes the cache — was punishing users who deactivate to debug a theme conflict. Cleanup happens in uninstall.php instead.

Removed

  • Dead BBM_API::get_books() and BBM_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:

Plugin Check validation log and PHPCS reports both clean on the wp.org build.

v0.5.0 — Gutenberg block for inline Bible verse insertion

Choose a tag to compare

@onetogregorio onetogregorio released this 13 May 19:38
5d42fcd

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 Quotation microdata 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

Choose a tag to compare

@onetogregorio onetogregorio released this 13 May 19:34
3a46cc5

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 Quotation structured data.
  • Dark mode styles included out of the box.

Powered by Midvash · Plugin site

v0.3.0 — Schema.org Quotation microdata

Choose a tag to compare

@onetogregorio onetogregorio released this 13 May 19:31
9d85808

Added

  • Schema.org structured data on every auto-detected Bible reference link. Each <a> tag now carries itemscope 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

Choose a tag to compare

@onetogregorio onetogregorio released this 13 May 17:34
8118513

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

Choose a tag to compare

@onetogregorio onetogregorio released this 13 May 16:53
ffca30b

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:16 for Russian, 요한복음 3:16 for Korean, 约翰福音 3:16 for 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.ts regenerates 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

Choose a tag to compare

@onetogregorio onetogregorio released this 13 May 14:20
91593cd

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.pot template from current source (64 msgids, extracted via xgettext).
  • New CLAUDE.md with 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.