---
title: "PerfLocale 1.0.7.4 - Changelog - PerfLocale"
description: "PerfLocale 1.0.7.4, released 2026-10-26. What changed in this release and what to know before you update."
canonical: "https://perflocale.com/changelog/1.0.7.4/"
source: "https://perflocale.com/changelog/1.0.7.4/"
format: "markdown"
---
[← All releases](https://perflocale.com/changelog/)

# PerfLocale 1.0.7.4

2026-10-26 - Background jobs that continue after a stopped worker, a PHP API for add-ons, and protected blocks that keep their markup

-   New: add-ons can offer a PHP API through perflocale()->addon().
-   Machine translation: "Do not translate" blocks keep their markup (embeds, iframes, scripts) on every save path, including background jobs, Auto-Translate on Publish and users without the unfiltered HTML capability (WordPress 6.7+).
-   Bulk machine translation resumes where a stopped background worker left off, instead of failing; Retry continues from there, and a translation a person saved since is left as it is.
-   Migrations, imports, exports and Scan all that one web request cannot finish on this host are refused with the WP-CLI command to run them.
-   XLIFF import: a file over 32 MB, or over 60 translation units when imported from the admin screen, is refused with a request to split it.
-   New: the WooCommerce add-on settings show which language copies of a product hold different stock (Check stock).
-   New: JavaScript hooks for the language switcher, the block editor and the Jobs, Strings and Translations screens.
-   Machine translation: a page whose layout a page builder keeps in its own data (Beaver Builder, Bricks, Elementor, Oxygen, Breakdance) is saved with a warning that the layout was not machine-translated, and the estimate counts such pages.
-   Machine translation: a translated title or excerpt that looks cut off is not saved, and the reason says why.
-   Machine translation: content without block markup is checked for its HTML structure before it is saved; a cut-off or reordered result is not saved.
-   Machine translation: a style or script element in the translated content is left out instead of showing its CSS or JavaScript as text.
-   Machine translation: a provider that answers slowly no longer runs past the request's time limit; the job continues in its next run.
-   Bulk string translation runs in short slices in the background, so a host's request time limit does not stop it part-way.
-   Bulk string translation keeps a translation saved on the Strings screen while the provider was working (unless Overwrite is on), and stops with an error instead of skipping or overwriting strings when it cannot read them from the database.
-   Strings: Scan all always runs as a background job.
-   Strings: a string whose context holds HTML keeps its context as written, so its translation is served; the next string scan repairs strings stored before.
-   WP-CLI: wp perflocale health-check lists post and term links that a string import replaced, and with --fix gives each string without a translation group of its own one.
-   Export & Import: a Merge import keeps its working data in a database table when the database allows it.
-   Export & Import: a Replace import whose database connection is lost is rolled back as a whole, and nothing is changed.
-   Export & Import: a Replace import keeps its lock until it is complete, also on SQLite and when MySQL gives no named lock.
-   Export & Import: a Replace import that could not save the settings says so instead of counting them as imported.
-   Export & Import: a Merge import leaves out the rows whose parent row could not be imported, and counts them in its report.
-   Export & Import: an import upload continues when the screen sends a piece again after the connection broke, instead of stopping with nothing imported.
-   Uninstall: data an add-on asks to keep is kept, on every site of a network.
-   Add-ons: on MySQL and MariaDB, an add-on whose table name would be over 64 characters is refused before any of its tables is created.
-   Background jobs: a queued job whose worker event was lost is scheduled again, and Site Health lists jobs stopped after repeated stops at one item.
-   Background jobs: on Action Scheduler, a job whose next run is already queued is no longer marked failed because an earlier run failed.
-   Jobs: a job that started running again, for example after Retry, is no longer deleted; cancel it first.
-   Background jobs: after Cancel and Retry, or when a run outlives its lease, the earlier run stops at its next step and writes nothing more to the job.
-   Site Editor: restoring a menu or pattern translation from the Trash points the templates back at it also after their blocks were moved.
-   Site Editor: a machine translation or XLIFF import of a template or template part keeps it pointing at its language's menus and patterns.
-   Meta Box: translated field values are also used when PerfLocale switches the language for a background job or a WP-CLI command.
-   Rank Math: the Facebook title and description of a post are copied to its translations and machine-translated.
-   WooCommerce: a variation description keeps its backslashes when it is copied or machine-translated.
-   Translations screen: bulk machine translation is offered only to users who may manage translations.
-   Cache: after PerfLocale is deleted and installed again, values cached by the earlier install are no longer served.
-   WP-CLI: a cache flush inside a long-running WP-CLI command also drops the slugs and options that command read before (sites without a persistent object cache).
-   SQLite: the cleanup of unused translation groups works on the SQLite Database Integration 2.2.
-   Performance: front-end pages load less PHP code.
-   Performance: PerfLocale admin screens load fewer script files, and edit screens read the machine translation notice only when one is waiting.
-   Performance: with a persistent object cache, background job locks no longer make the next page view re-read every missing option.
-   Performance: PO export, wp perflocale translate --all, cost estimates and WooCommerce coupon restrictions use less memory or fewer queries; saving job or machine translation settings keeps the language caches; machine translation of posts with many "Do not translate" blocks and the Strings screen's placeholder check take linear time.
-   Security hardening.
