Gatilab Products

Changelogs

Improvements, fixes, and the details behind each release.

All Products

Release history across our plugins and themes.

Stable

GT Extensions for FluentCart 2.4.1

Read release notes

Patch release for 2.4.0.

Converts product prices a theme renders itself. 2.4.0 made the storefront currency symbol follow the visitor's selection, so the cart drawer would stop labelling converted amounts with the store currency's sign. Prices inside FluentCart's own blocks were converted to match — but a theme can render a product price too, reading the cached price span straight from the database and formatting it with FluentCart's helper. No filter can reach a number obtained that way, so such a price showed the right symbol against an unconverted amount.

Single product pages are now transcoded in one pass over the whole response, which covers theme and third-party output as well. The page pass and the per-block passes are mutually exclusive, so nothing is converted twice, and the buffer returns the original markup on any error rather than swallowing the page.

Also maps the stored price-span columns, so a product whose cached span has drifted from its variations still converts.

Everything in 2.4.0 is included.

Stable

GT Extensions for FluentCart 2.4.0

Read release notes

Multi-currency correctness

  • Cart totals were converted twice. FluentCart fires cart/can_purchase before cart/item_price against the same in-memory variation, so the price filter re-applied the exchange rate to an already-converted amount and a ₹480.00 line rendered as ₹46,219.00.
  • Every product-page price now converts, not only the one FluentCart exposes a filter for. The compare price, header price range, and variant cards previously kept store-currency amounts, so a converted price sat beside an unconverted one. Manual price-book entries still win over the exchange rate.
  • The currency symbol follows the selection across the whole storefront, not just checkout, so the cart drawer no longer labels converted amounts with the store currency's sign.
  • Receipts and order confirmations report the currency the order was charged in. FluentCart's receipt renderer formats every amount with no currency argument.

Features that were silently disabled

Seven hooks were registered under names FluentCart does not use:

  • cart/validate_add and cart/validate_update do not exist — can_purchase is the gate Cart::addItem() actually runs, so minimum/maximum quantity limits and guest purchase blocking were enforced only in the browser and a direct cart request bypassed them.
  • fluent-cart/product_stock_availability was hyphenated; product/buy_now_text, product/show_add_to_cart, variation/data and admin_js_vars do not exist at all.
  • is_singular('fct_product') tested a database table prefix rather than a registered post type, so module CSS printed on every page of the site while the matching scripts ran on none.

External Product admin screen

Rebuilt: saves over AJAX with inline status (the no-JS form post still works), card layout, dependent fields that disable while redirection is off, client-side URL validation, a live button preview, and a readout of the exact rel attribute that will ship. FluentCart's product navigation is now styled, since FluentCart does not load its admin stylesheet on a custom submenu page.

Performance

A variation's whole price book is read in one query and reused. The currency selector's stylesheet, script and cart lookup load only where a price can appear, and its uncacheable status request no longer fires on pages with no selector.

Requires FluentCart 1.5.5 or newer. Verified against FluentCart 1.6.1.

Stable

Core Forms 4.7.5

Read release notes

Core Forms 4.7.5 fixes duplicate field IDs and reworks MailerPress consent handling.

  • Schema-rendered field IDs are now unique per form instance, so labels and descriptions stay correctly associated when multiple forms appear on one page.
  • The MailerPress action defaults to double opt-in, preserves existing subscribers and suppressed contacts, and records form-level consent metadata. Confirmation is resent only when a pending or previously unsubscribed contact submits again.
  • The legacy FluentCart-to-MailerPress bridge no longer creates subscribed contacts when its settings are empty.