Changelog — JPKCom Simple Lang

Version history of the JPKCom Simple Lang WordPress plugin.

Version history of jpkcom-simple-lang. Entries are taken verbatim from the project's README. A hands-on guide with tips is available in the project guide.

1.2.3 - 2026-06-16

  • Raised the minimum WordPress version to 6.9 and "Tested up to" to WordPress 7.0
  • Switched license metadata to the SPDX identifier GPL-2.0-or-later with the HTTPS license URI

1.2.2 - 2026-06-16

  • Security: updater prefers an exact match against the manifest download_url over the slug heuristic, so a tampered manifest can no longer bypass the checksum gate
  • Security: timing-safe checksum comparison (hash_equals()) with an is_string() guard against hash_file() failures
  • Security: manifest fetch via wp_safe_remote_get() (SSRF defense-in-depth)
  • Fixed PHP warning and missing contributor names in the plugin detail popup (display_name now provided)
  • Fixed PHP warning/deprecation on wp plugin list by completing the no_update transient entry (new_version, package, tested, requires_php)

1.2.1 - 2026-03-13

Bug Fixes

  • Fixed manual ZIP upload failing with "No valid URL" error caused by checksum verification running on local file paths instead of remote URLs
  • Fixed release ZIP missing top-level plugin directory, preventing WordPress from recognizing it as an update to the existing installation

1.2.0 - 2026-03-13

Bug Fixes

  • Fixed language selection not saving for locales without country code (e.g. ar for Arabic)
  • Updated locale validation regex to accept both short (xx) and full (xx_XX) locale formats

1.1.1 - 2025-12-17

Bug Fixes

  • Fixed duplicate "Settings saved" message on admin settings page
  • Fixed Oxygen Builder conditions not displaying dropdown options
  • Fixed Oxygen Builder condition callback signatures to match API requirements

Improvements

  • Updated Oxygen Builder conditions to use correct API structure with 'options' array
  • Added proper operator support (==, !=) for "Post Language Is" condition
  • Added Yes/No dropdown options for boolean Oxygen conditions
  • Added German translations for Oxygen condition options (Ja/Nein)
  • All Oxygen conditions now appear under "Simple Lang" category

Technical Changes

  • Renamed callback functions to match Oxygen API conventions:
    • jpkcom_simplelang_oxygen_post_language_is() with ($value, $operator) parameters
    • jpkcom_simplelang_oxygen_has_custom_language() with ($value, $operator) parameters
    • jpkcom_simplelang_oxygen_uses_default_language() with ($value, $operator) parameters
  • Removed redundant settings_errors() call in admin settings page

1.1.0 - 2025-12-17

New Features

  • Translation Links: New meta box for linking posts in different languages
  • Hreflang Tags: Automatic generation of SEO-friendly <link rel="alternate" hreflang=""> tags
  • Bidirectional Linking: Posts automatically link to each other when translation links are created
  • Complete Translation Sets: All posts in a translation group are automatically linked together
  • Smart Validation: Prevents duplicate languages in translation sets

Bug Fixes

  • Fixed locale detection for default site language in translation grouping
  • Fixed type casting issue in translation link display
  • Improved meta data consistency across all translation sync operations

Improvements

  • New helper function: jpkcom_simplelang_get_site_default_locale()
  • Enhanced hreflang output with deterministic sorting
  • Performance optimization: Single query for all translation posts (prevents N+1 queries)
  • Updated German translations (de_DE and de_DE_formal)

Developer Notes

  • New module: includes/hreflang-translations.php
  • New meta key: _jpkcom_simplelang_translations (multiple entries per post)
  • All translation sync operations use loop prevention for data integrity

1.0.0 - 2025-12-16

Initial Release

  • Language selection dropdown in post editor sidebar
  • Support for all WordPress core languages
  • Post type activation settings page
  • Frontend locale override (HTML lang attribute and SEO plugin compatibility)
  • Oxygen Builder conditional logic integration
  • Helper functions for developers
  • Template override system
  • Automatic GitHub-based updates
  • German translations included
  • Full documentation and API docs