POM Translate

Changelog

Changelog

All notable changes to POM Translate are documented in this file.

Changes pending release tag

  • fix: Preserve percent-encoded query parameters in navigation, shortcode, and floating language selectors so language changes retain search and filter values.
  • docs: Clarify query parameter preservation across language selector types and formats.
  • fix: Load the output-buffer runtime defensively and keep WordPress requests available during partial or stale deployments.
  • fix: Restore localized WooCommerce checkout endpoint query variables so pretty order-confirmation URLs resolve without changing order-key or customer authorization.
  • fix: Match the one-order Store API checkout hook contract, validate WooCommerce orders defensively, and persist normalized order locales idempotently for Checkout Blocks.
  • fix: Shield protected formatting and application markers from machine-translation providers, restore harmless transport variations, and retry invalid marker replies once with corrective instructions.
  • fix: Prevent formatting-marker boundaries from being misread as printf placeholders and keep Visual Composer indentation outside stored translations.
  • fix: Recalculate and restart generation progress for the translation stage, include pending Other translations in its real task total, and reserve 100% for completed jobs.
  • fix: Normalize harmless spacing inside protected application markers and retry unresolved contextual batch members individually before leaving them pending.
  • build: Synchronize the recursive POM Knowledge Markdown tree to wp-content/docs/pom-knowledge during local release builds while excluding hidden and non-Markdown files.
  • build: Update POM Framework so managed file reads are cached per request and OPcache remains an optional acceleration layer.
  • fix: Read machine-translation source snapshots from the database writer under HyperDB and report genuine concurrent source changes as HTTP 409 instead of 500.
  • fix: Preserve subject identity in contextual immediate-translation batches so unchanged source rows are not rejected as concurrent edits.
  • perf: Prepare translation-manager row and subject context once per request, prime visible WordPress objects in batches, and route known columns directly without changing links or table output.
  • perf: Enable request-scoped read memoization in wp-admin, invalidate it immediately after settings or translation writes, and reuse pure registered-string translations per locale.
  • fix: Detect per-site and network-wide plugin set changes before deferring WooCommerce email source synchronization.
  • perf: Defer WooCommerce email source synchronization to changed definitions and editor access instead of persisting every email field during normal requests.
  • fix: Preserve numeric-only slugs as strings throughout persistent-cache misses and accept post-like objects from permalink filters.
  • feat: Add a pending-only bulk translation mode that skips source discovery and processes unresolved strings already stored in POM Translate.
  • docs: Document the full-processing and pending-only choices in the bulk translation guide.
  • Changes included in version 0.179.

New features

  • Run pending-translation generation as a resumable server-side job with persisted cursors, cron continuation, pausing, and bounded retries.
  • Redesign the WooCommerce email translation workspace with a sober WordPress-native interface, completion progress, source comparison, insertable placeholders, recent-order selection, responsive preview, and per-field POM AI actions.

Fixed

  • Isolate locale-sensitive runtime caches across language and multisite switches, invalidate them immediately after translation or slug changes, and never persist false misses after database errors.
  • Preserve UTF-8 registered-string matching, WordPress and theme lazy-loading attributes, and byte-identical HTML when the output buffer makes no replacement.
  • Build canonical alternate links from an unprefixed base path so hreflang URLs never acquire duplicate locale prefixes and return 404.
  • Coordinate generation start, stop, browser acceleration, and cron with one owner lock, verified checkpoints, and recovery of missing worker events.
  • Scan content with stable primary-key cursors and pause without advancing when a source query, parser step, or repeated provider result is unusable.
  • Retry incomplete OpenAI responses with bounded jitter, classify refusals and truncation explicitly, and protect idempotent account requests from concurrent execution.
  • Keep schema migration 9 pending until the queue table and every eligible legacy row have been verified.
  • Recover stranded machine-translation queues with an independent hourly watchdog and preserve visible queue counts while background processing is disabled.
  • Serialize all machine-translation provider work through one lock and stop manual queue loops when no entry was actually resolved.
  • Verify translation database writes before resolving queue entries and preserve provider retry metadata through the client.
  • Make the pending-translation generator process every unresolved stored string, including registered defaults and rows with retained pending text.
  • Match POM AI word accounting for protected formatting markers and retry provider size rejections as smaller translation chunks.
  • Display translated email subjects, prepare order, account, note, and refund previews without calling delivery triggers, invalidate stale previews when context changes, warn about unsaved edits, and prevent duplicate requests.
  • Preserve case-sensitive WooCommerce extension email IDs during selection, preview, and test sends, and distinguish duplicate template titles by their Admin or Customer audience.
  • Keep WooCommerce email template gettext, subjects, headings, additional content, footer copy, item data, and bodies in the stored order locale with leak-safe locale overrides and restoration.
  • Accept partial WooCommerce variation-option filter context and avoid persisting dynamic notices containing customer or order data.
  • Honor explicit language parameters and headers in WooCommerce AJAX and Store API requests.
  • Keep WooCommerce My Account endpoint and value segments from adding a second locale prefix to already localized account permalinks.
  • Restore native and extension My Account endpoint query vars on localized routes, including endpoints with trailing values.
  • Reject stale machine-translation replies and manual REST translations that alter protected placeholders.
  • Refresh source strings after authorized programmatic product and taxonomy saves that run without a logged-in user.

Performance

  • Batch and persist hot string, translation, exclusion, and route lookups, memoize repeated settings decisions, and bound small slug dictionaries to one indexed request-local read.
  • Prefer persistent object-cache batches over locale-wide slug priming, batch fallback path localization, and reset request dictionaries after slug deletion.
  • Avoid translating terms twice while WordPress assembles object collections, and defer post exclusion reads until a requested meta key is known to be translatable.
  • Retain site-and-locale-scoped database request caches across temporary language switches so SEO and progressive rendering do not repeat identical reads.
  • Skip output-buffer URL checks and DOM parsing when the response cannot contain a registered-string or custom-URL replacement, and scan translatable attributes in one XPath pass.
  • Enqueue and checkpoint bounded machine-translation rows directly with conditional writes instead of loading and rewriting the complete queue.
  • Store queued strings as independent database rows, bulk-load string and translation records, and build adaptive context-preserving translation batches.
  • Bound each scheduled machine-translation run to 20 queued strings and one 400-word provider batch, exclude individually oversized strings without provider calls, and serialize concurrent queue mutations.
  • Prime term and menu translation rows in bulk and update the registered-string request cache without full-map reloads.

Security

  • Bound translation REST pagination, require enabled locales and existing string IDs, and validate protected placeholders before writes.

Documentation

  • Document resumable generation jobs, adaptive batch limits, queue recovery, and bounded provider retries.
  • Replace the duplicated POM AI machine-translation templates with code-backed guides to service requirements, licensing, domain authorization, context, credits, local quotas, background processing, retries, troubleshooting, and review.
  • Replace the duplicated software-string templates with code-backed guides to registered values, gettext domains and context, source changes, plugin and theme catalogs, browser-only editing, POM AI drafts, PO/MO export, installation, retirement limits, and troubleshooting.
  • Replace the duplicated WooCommerce templates with code-backed guides to catalog content, attributes, variations, localized requests, account routes, order locales, notices, managed emails, placeholders, previews, extension boundaries, background work, and troubleshooting.
  • Replace the duplicated multilingual SEO templates with code-backed guides to translated metadata, localized canonical URLs, hreflang clusters, fallback indexing decisions, crawler access, Rank Math and Yoast sitemap behavior, and production review.
  • Replace the duplicated import, export, and maintenance templates with code-backed guides to JSON scope, exact-match imports, backups, validation, orphan cleanup, local quota resets, storage resets, migration, and removal planning.
  • Replace the duplicated developer templates with code-backed concepts, helper signatures, registration patterns, public hook contracts, and supported machine-translation integration boundaries.
  • Audit all public POM Translate articles against the current implementation, remove private service contracts, correct interface paths and machine-translation limits, and clarify supported extension points.
  • Replace the duplicated recipe templates with end-to-end workflows for brochure sites, blogs, navigation, WooCommerce, structured models, custom emails, third-party compatibility, and staged machine translation.
  • Replace the duplicated help templates with layered diagnostics for rendering, fallback, caches, skeletons, registered strings, menus, selectors, localized routes, background jobs, POM AI authorization, WooCommerce emails, and safe support evidence.
  • Replace the duplicated bulk-translation templates with code-backed guides to Translation Manager scopes, pending discovery, browser generation, scheduled queues, stopping, retries, review, exclusions, URLs, and gettext catalogs.
  • Replace the duplicated selector merge-tag templates with code-backed references for all eleven values, fallbacks, flag outputs, safe composition, label recipes, sanitization, and routing boundaries.
  • Replace the duplicated language-selector templates with code-backed guides to navigation, shortcode, floating and adaptive dropdown output, labels, markup, exclusions, current-language behavior, accessibility, responsive design, and troubleshooting.
  • Replace the duplicated URL-routing templates with code-backed guides to locale prefixes, post and term slugs, custom destinations, canonical and alternate links, redirects, rewrite refreshes, conflicts, exclusions, and 404 diagnosis.
  • Replace the duplicated menu-and-link templates with code-backed guides to menu labels, descriptions, language visibility, native routes, custom and external destinations, content links, home links, fallbacks, cache refresh, and troubleshooting.
  • Replace the duplicated taxonomy templates with code-backed guides to categories, tags, custom terms, names, descriptions, localized slugs, hierarchical archive URLs, source changes, and troubleshooting.
  • Replace the duplicated content-selection templates with code-backed guides to post-type parts, registered metadata, taxonomy eligibility, software-string boundaries, and safe surface retirement.
  • Replace the duplicated content-translation templates with code-backed guides to the editor, supported fields, structured content, workflow status, review, publication, fallback, and source-change handling.
  • Replace the duplicated language-configuration templates with code-backed guides to locale selection, labels, ordering, prefixes, browser redirects, fallback behavior, and safe language retirement.
  • Replace the duplicated architecture templates with code-backed guides to extraction, skeleton generation, storage, language context, rendering, URLs, registered strings, performance, and cache coordination.
  • Replace the duplicated start-here templates with code-backed installation, licensing, first-translation, visitor-verification, launch, and maintenance guides.
  • Add the documentation manifest that defines article order for POM Docs Sync.
  • Give every POM Translate documentation directory, article, and asset a globally unique product-scoped name and update all internal links.
  • Enforce numbered documentation topics with no root Markdown files and complete index pages for every topic directory.
  • Reorganize and expand all public translation documentation under numbered POM Docs Sync terms.
  • Clarify that public documentation must be reader-focused and exclude internal operational material.
  • Standardize numbered screenshot placeholders for public Markdown documentation.
  • Document the production WooCommerce, email, background machine-translation, batching, and integration contracts.

Build

  • Align plugin and Composer requirements with PHP 8.2, WordPress 6.9, and verified WordPress 7.0 compatibility.
  • Changes included in version 0.178.

Internal

  • Published a maintenance release to verify private update detection on WordPress multisite.
  • Changes included in version 0.177.

New features

  • Machine translation on a multisite subsite now requires that site's own POM AI license, which authorizes the domain to consume credits from the license owner's account; it never inherits the network POM AI key.
  • Added the network-aware missing/invalid license admin notice and free-subscription cost info on the License tab.
  • Added the License tab to the existing settings page (Settings > POM Translate > License) through the shared POM Framework license client; the free plan still requires a valid license for private downloads and updates.
  • Added a parser hook so integrations can register nested strings inside shortcode attributes without extracting technical values.
  • Added Content URLs and Custom links summaries that show stored localized slugs and translated custom URL mappings.

Fixed

  • Added an always-visible multisite subsite license message explaining the main-site activation and network-license requirements for automatic updates.
  • Prevented translated page-builder skeletons from being wrapped in paragraph tags before shortcode rendering.
  • Ignored stale persistent slug lookup misses and refreshed slug caches when localized slug values are saved unchanged.
  • Kept the active locale aligned with prefixed translated slug requests after query-var fallback resolution.
  • Resolved localized slug routes through a request-level fallback so translated URLs do not remain 404s when rewrite parsing misses the language rule.

Security

  • Replaced the legacy POM AI Authorization pair used by machine translation with the shared POM AI license key, domain header, and replay-protected exact-body signature; fallback updates now use licensed v2 tokens only.

Documentation

  • Required complete production-facing documentation maintenance and the canonical access-denying .htaccess in repository agent guidance.
  • Standardized pending and historical release notes under the current categorized changelog format.
  • Updated the release procedure to require dated changelog headings.

Build

  • Centralized plugin documentation under wp-content/docs/pom-translate during local release builds and excluded the docs tree from ZIP artifacts.
  • Sourced manifest release notes from versioned changelog sections and rejected invalid changelog structures during builds.
  • Accepted mandatory ISO release dates in versioned changelog headings when generating manifests.
  • Pruned repository metadata from Composer dependencies before packaging production ZIPs.

Internal

  • Standardized incremental changelog maintenance and required CHANGELOG.md in release packages.
  • Changes included in version 0.176.

Internal

  • Established the existing release baseline before adoption of the incremental changelog workflow.
  • Changes included in version 0.117.

New features

  • Added AJAX-driven pending translation generator.
  • Allowed editors to manage translations.
  • Added controls for queued machine translations.

Fixed

  • Prevented home_url localization during permalink rewrites.
  • Fixed locale validation for translation batches.
  • Fixed translation loading timing and tidy global imports.

Changed

  • Batch MT requests in generation tool.
  • Process queued translations in batches and clear queue.
  • Normalize locales for translation batches.
  • Preload translations for queried posts.
  • Translation files updated.
  • Changes included in version 0.116.

Changed

  • Updated helpers.php file.
  • Handle CPT archive URLs.
  • Updated home url.
  • Skip placeholder validation when translation is empty.
  • Moved PHP stubs under tests.
  • Removed stubs folder.

Build

  • Updated build script.
  • Fixed composer cs errors.
  • Added cs-fix composer script.

Internal

  • Increase PHPStan memory limit.
  • Added stubs and docblocks for PHPStan coverage.
  • Exclude vendor and node_modules from cs-fix.
  • Changes included in version 0.115.

New features

  • Added language management helpers.
  • Added WooCommerce email translation support.
  • Added helper for getting the translated url of a given url.
  • Allowed forced locales to localize admin requests.
  • Allowed dismissing machine translation failure notice.
  • Added button class option and icon for language switcher.

Fixed

  • Corrected POM Multilingual string -> POM Translate.

Changed

  • Improved updater.php.
  • Updated lang switcher shortcode markup.

Performance

  • Ensured term queries respect selected locale.

Documentation

  • Emphasize composer cs compliance.

Build

  • Updated release artifacts directory.
  • Improved build process.
  • Composer.lock.
  • Changes included in version 0.114.

Fixed

  • Added parameter docs and fix indentation in helpers polyfills.

Changed

  • Updated updater.php file.
  • Lower minimum PHP version to 7.4.
  • Changes included in version 0.113.

Build

  • Updated RELEASES.md.
  • Ensured release manifest includes required metadata defaults.
  • Changes included in version 0.112.

New features

  • Implemented secure updater integration.

Changed

  • Improved updater.
  • Validate manifest keys and tag S3 uploads.

Documentation

  • Seed changelog history.
  • Updated AGENTS.md.
  • Updated README.md.

Build

  • Added latest manifest pointer for releases.

Internal

  • Removed phpunit cache file.
  • Changes included in version 0.111.

Documentation

  • Fixed changelog extraction in release script.
  • Changes included in version 0.110.

Build

  • Fixed release workflow YAML indentation.
  • Changes included in version 0.109.

Build

  • Made S3 upload optional in release workflow.
  • Changes included in version 0.108.

Internal

  • Recorded the tagged release milestone.
  • Changes included in version 0.107.

New features

  • Added dummy updater.

Security

  • Fixed cookie language preference sanitization.

Build

  • Fixed shortcode replacement order when mixing page builder tags.
  • Added manifest generation to release build script.
  • Added S3 upload step to release workflow.
  • Document release replication steps for other plugins.

Internal

  • Annotate taxonomy objects for PHPStan.
  • Fixed taxonomy detection docs and phpstan errors.
  • Changes included in version 0.106.

Fixed

  • Fixed locale detection tests by stubbing esc_url_raw.
  • Changes included in version 0.105.

Fixed

  • Fixed WordPress coding standards violations.

Build

  • Updated RELEASES.md.
  • Automate GitHub release publishing.
  • Changes included in version 0.104.

Internal

  • Recorded the tagged release milestone.

The entries below reconstruct unversioned or previously undocumented development before this repository adopted incremental release notes. Each active month consolidates its non-merge Git commits; merge-only, version-number-only, and internal tracking-only commits are omitted.

2026-06

Fixed

  • Render: guarded skeleton placeholder output.
  • URLs: guarded singular permalink home URL filtering.
  • URLs: localize prefixed custom menu links.
  • Framework: import framework classes consistently.
  • Render: normalize numeric internal link slugs.
  • Redirects: preserved complete GET query strings during language prefix redirection.
  • Releases: hardened private release publishing.

Security

  • Security: POM Framework - Harden settings AJAX and dependency toolchain.

Changed

  • Framework: POM Framework - Rename Pomatio Framework.
  • Translation Runtime: removed optional translation features.

2026-05

New features

  • Faceted Search: POM Theme/POM Translate - Add query-scoped localization fields. Adds query-scoped pom-translate localization fields for faceted/archive result queries so high-volume listings can skip post_content reconstruction when templates do not render content. Also lets indexed faceted metadata bypass duplicate pom-translate meta processing while preserving default behavior for queries without an explicit policy.
  • Translation Manager: link string contexts to source objects.

Fixed

  • Render: honored explicit post content context.
  • Parser: extract nested contact form shortcode fields.
  • Styles: removed min-width from language switcher toggle.
  • Pom Translate: extract VC nested contact form strings.
  • Pom Translate: extract nested VC contact form fields.
  • URLs: preserved localized draft previews.
  • Pom Translate: added support for long nested shortcode block keys. Fixes extraction persistence for deeply nested page builder/contact-form shortcode attributes. The parser already detected the labels/placeholders, but their generated block paths exceeded the indexed VARCHAR(191) database column. The full block path is now stored as LONGTEXT and identified by a SHA1 hash in the unique key.

Documentation

  • Updated AGENTS.md file.

2026-04

New features

  • Pom Translate: show post translation progress in editor panel.
  • Pom Translate: added per-post-type translatable field controls.
  • Pom Translate: batch machine translations by post subject.
  • Pom Translate: added translator notes to machine translation prompts.
  • Merge Tags: pomatio Framework - Add robust nested merge tag parsing.
  • Pom Form: added bulk open and close controls to repeaters.

Fixed

  • Pom Translate: hardened MT batch logging and queue scheduling.
  • Pom Translate: allowed software MT for base locale and keep empty msgstr rows empty.
  • Pom Translate: kept root file endpoints out of locale prefixes.
  • Pom Translate: preserved leading text in translated fragment links.
  • Pom Translate: allowed posts to be disabled without changing default translation parts.
  • Admin: restrict software translations access.
  • Translation: format translated content and skip unpublished posts.
  • Machine translation: show inline AJAX failure notices.
  • Parser: split loose classic editor content.
  • Machine translation: added quota reset and avoid quota 500s.
  • Machine translation: hardened provider response parsing and queue retries.
  • Machine translation: surface missing AI credits.
  • Machine translation: allowed percentage values with protected placeholders.
  • Machine translation: aligned editor placeholder validation for percentages.
  • Machine translation: optimized batch processing and error handling for machine translation requests.
  • Translation Manager: persist filters and harden per-row MT.
  • Pom Form: contain CodeMirror horizontal overflow.

Security

  • Pom Translate: normalize escaped MT line breaks and nbsp entities.
  • Pom Form: pomatio Framework - Apply WordPress file permissions to generated settings.

2026-03

New features

  • URLs: enhanced taxonomy handling with new segment processing methods.
  • New hooks and cache invalidation tools.

Fixed

  • Language Switcher: own dropdown styles and auto alignment.
  • Pom Translate: localize admin preview links and resolve CPT singles by ID.

Changed

  • Pomatio Framework updated.
  • Language Switcher: simplified toggle styles and improve menu layout.

Documentation

  • AGENTS.md update.

2026-02

Fixed

  • Fixed PHP warnings.

2026-01

New features

  • Enhanced translation stubs and add WooCommerce support.
  • Added unique foreign key name generation for translations table.
  • Software Translations: removed runtime gettext capture and add PO/MO export workflow.
  • Added translation tool styles and enhance import/export functionality.
  • Helpers: added locale label helper functions for admin UI compatibility.

Fixed

  • Updated version number to 0.173 in plugin header.

2025-11

Performance

  • Improved cache invalidation and slug localization.

2025-10

Fixed

  • Stub get_shortcode_regex for tests.

Changed

  • Guarded meta parsing when WP helpers are unavailable.

Documentation

  • Added release engineering guide.
  • Added release command snippet.

Build

  • Updated RELEASES.md.

2025-09

New features

  • Added parser to store skeleton and strings.
  • Enabled strict types and tidy parser.
  • Implemented rendering of stored translations.
  • Added basic translation manager UI.
  • Added term and menu parsing, locale utilities, and URL scaffolding.
  • Resolve translated post meta.
  • Render: translate terms and cache menus.
  • Slugs: added localized slug storage and URL rewriting.
  • Translation: added status management.
  • REST API: register translation routes.
  • URLs: handle locale prefixes in paths.
  • Detect locale from URL, cookie and browser.
  • Parser: handle page builder shortcodes.
  • Admin: style translation manager statuses.
  • Admin: added localized slug editor.
  • Added pom_translate_get_all_languages to helpers.php.
  • Added languages list to the settings page for testing purposes.
  • Added Rank Math SEO integration.
  • Admin: added subject filters and manage link.
  • Added configurable language switcher.
  • Added custom walker for language switcher menu UI.
  • Added eu, cs, gl and arg flags.
  • Define base setup language fields.
  • Added TODOs.
  • Helpers: derive languages from settings.
  • Admin: added flag links for locale selection.
  • Language Switcher: added configurable switcher settings and templates.
  • Added languages icon.
  • Added MT translation functions.
  • Machine translation: added automated mt pipeline.
  • Ensured MT bridge loads when enabled.
  • Added default meta translation keys.
  • Allowed language switcher markup without text fallback.
  • Added button markup to dropdown and dropups lang switchers.
  • Added inline styles to floating language switcher container.
  • Added main language custom label support.
  • Added optional base language prefixes.
  • Added tools.
  • Added locale-specific date format support.
  • Added MT trigger and UI enhancements to translation manager.
  • Document registered string helpers.
  • Browser Detection: added cookie-aware locale redirects.
  • Added placeholder validation to translation manager.
  • Added server-side placeholder validation for translations.
  • Added orphan translation cleanup tool.
  • Added configurable content types and tests.
  • Added helpers to fetch translated post fields.
  • Added taxonomy translation controls.
  • Added request-level caching for slug lookups.

Fixed

  • Register rewrite hooks.
  • Locale: ignore persistent cookie.
  • Fixed url rewriting 404.
  • Reset translations when source changes.
  • Clean up unused translation strings.
  • Dedupe post strings and reuse translations.
  • Repair parser tokenization flow.
  • Restored bulk string deletion helper.
  • Parser: dedupe VC strings and reuse translations.
  • Database: reuse translations for duplicate strings.
  • Backfill translations for identical strings.
  • Parser: avoid deprecated mb_convert_encoding.
  • Improved slug saving feedback and canonical URLs.
  • Localize internal links in translated content.
  • Load static front page for localized root.
  • URLs: kept localized home canonical.
  • Render shortcodes in translated content.
  • Database: preserved placeholder order.
  • Allowed optional args in menu class filter.
  • Menu: wire language switcher add button.
  • Skip localizing language switcher links.
  • Load menu edit walker dependency.
  • Admin: aligned language switcher menu UI with meta box pattern.
  • Base Setup: improved language field metadata.
  • Limit fallback language options.
  • Used dedicated flag svgs for specific locales.
  • Normalize localized paths for switcher.
  • Refactored language switcher outputs.
  • Language Switcher: respected hide current language.
  • Language Switcher: improved dropdown placeholder handling.
  • Menu: translate descriptions and fallback to base label.
  • Language Switcher: inline icon for hidden toggle.
  • Sync gettext locale with front-end language.
  • Cache request locales for frontend gettext.
  • Avoid overriding base locale on unprefixed URLs.
  • Resolve taxonomy archives for localized URLs.
  • Improved background machine translation batching.
  • Parser: split vc list items into individual strings.
  • Fixed placeholder ordering when rendering VC skeletons.
  • Prevented admin meta translation overrides.
  • Settings: made additional languages sortable.
  • Dropped stubs folder from release zip.
  • Fixed VC raw HTML decoding and reencoding.
  • Fixed inline placeholder IDs for nested spans.
  • Normalize translation line breaks.
  • Fixed placeholder validation data and fallback.
  • Alert on save when placeholder errors present.
  • API request errors now return an array with error info.
  • Handle machine translation errors.
  • Prevented admin render filters from overriding base values.
  • Include post meta in subject filter and fix pagination redirect.

Security

  • Menu: include nonce when adding language switcher.

Changed

  • Tokenize shortcode params and attributes during parsing.
  • Only mark edited strings as human and keep table after save.
  • Translations per page bumbed from 20 to 100.
  • Externalize language dataset.
  • Updated pom-form.
  • Updated lang switcher.
  • Gettext locale is working now.
  • Updated helpers for MT.
  • Handle inline text when parsing VC fragments.
  • Changed admin menu position.
  • Hid MT button when LLM disabled.
  • Updated es translations.
  • Document string helper usage examples.
  • Flush permalinks after saving main settings.
  • Handle void inline elements in parser.
  • Enhanced translation manager editors.
  • Made translation editors auto-size to content.
  • Improved real-time placeholder validation notices.
  • Improved placeholder placeholder parsing for literal percent values.
  • Improved tools.
  • Renamed admin tabs.
  • Enhanced translation maintenance tools.
  • Lock translation manager during MT jobs.
  • Ensured core post types remain always translatable.
  • Ensured post objects expose translated fields.
  • Updated Spanish translation.
  • Force base locale in admin contexts.
  • Removed translations redirect on admin if no results.
  • Handle fallback parsing for plain text content.
  • Auto-register strings on first translation lookup.

Performance

  • Cache slug lookups during content rendering.
  • Invalidate menu caches when translations change.
  • Added caching for get_strings queries.

Documentation

  • Added AGENTS.md with instructions for codex and with the executive summary of the final plugin that will be developed.
  • Updated AGENTS.md and README.md, we do not want to MT on page load but with cronjobs always.
  • Updated structure documentation.
  • Added custom meta filter snippet.
  • Added README duplication and composer flags to release script.

Styles

  • HTML formatting to origin translations.
  • Codemirror styles.
  • Improved styles.

Build

  • Composer updates.
  • Improved release builder.
  • Added export-ignore rules for release archives.
  • Added release workflow and packaging script.
  • Updated release build output directory.
  • Updated export ignores for build archives.
  • Removed manifest files from release build.
  • Improved styles and releases script.

Internal

  • Initial commit.
  • Added release build tooling.