Latest
v1.3.0
v1.3.0 2026-04-22
-
Change
[i18n]
Linguistic audit — rewrote the 4 Italian msgids left in
admin/Admin.php(Token richiesto per leggere il changelog.,Limite GitHub raggiunto. Riprova più tardi.,Impossibile leggere il changelog.,Salvato, ma Tag Prefix da controllare: non combacia con i tag GitHub.) into canonical English (WP convention). Sites running WordPress in English no longer see raw Italian error messages for GitHub changelog/token/rate-limit failures -
Change
[i18n]
Italian users preserved — a shipped
wpak-deploy2wp-it_IT.po/.momaps the 4 rewritten English msgids back to their original Italian wording -
New
[i18n]
First
wpak-deploy2wp.potgenerated from the canonical English source (531 unique strings) — enables community translations for other locales - Note Scope: No behaviour, no markup classes, no meta keys, no option names changed. Rolling back from 1.3.0 to 1.2.4 leaves the DB schema identical — only 4 visible error labels change
v1.2.4 2026-04-21
- Fix [Updater SDK] Update-check cache lowered from 12 hours → 1 hour so new releases pushed on the update server propagate to client sites within the hour (previously up to half a day of staleness)
-
New
[Updater SDK]
Honors
?force-check=1onwp-admin/update-core.php— clicking WordPress's "Check again" now bypasses the local transient and re-queries the update server immediately (before, the SDK returned the cached response and the core button was effectively a no-op for WpAgencyKit plugins) -
New
[Updater SDK]
New filter
wpak_updater_cache_ttllets site owners override the cache TTL (min 60s); new filterwpak_updater_force_refreshlets integrations programmatically skip the cache
v1.2.3 2026-04-21
- Change Declared compatibility with WordPress 6.9.4 — removes the "not tested with your current version of WordPress" warning in the plugin details modal
Show 71 older versions
v1.2.2 2026-04-21
-
New
Bundled wiki documentation — the
docs/wiki/*.mdfiles (GitHub PAT setup, Webhook setup, Best practices, Use cases) now ship inside the release ZIP and are rendered publicly on wpagencykit.org/docs/ via the[wpak_wiki]shortcode
v1.2.1 2026-04-21
- Change Release notes adopt the new public/internal tag format — cleaner, user-oriented entries on the public changelog
v1.2.0 2026-04-20
- New [Admin] Unified WpAgencyKit header design across every Deploy2WP admin page (logo + plugin name + page title with icon + subtitle + brand links)
- New [Wizard] Inline "How to" help popover next to the "Get a GitHub token" link with step-by-step instructions for creating a fine-grained or classic GitHub PAT (no modal overlay — expands in place)
-
New
[Wizard]
Pre-filled GitHub deep link on "Get a GitHub token" — opens GitHub with
reposcope and the description already populated - Fix [Wizard] No longer auto-opens on top of the credential settings when no license is active — the license key field is reachable on first install
v1.1.10 2026-04-20
-
Enhance
Smaller release ZIP — dev-only files (
node_modules/,package.json,docs/wiki/,tmp/,CONTRIBUTING.md,assets/nerd/) are no longer shipped. The bundledassets/js/admin.jsis always included — no runtime impact
v1.1.8 2026-04-18
-
Fix
Moved
declare(strict_types=1)before ABSPATH guard insdk/class-wpak-updater.phpto prevent PHP fatal error
v1.1.7 2026-04-18
- Fix Added ABSPATH guards to all PHP files lacking direct-access protection
-
Fix
Replaced
unlink()withwp_delete_file(),is_writable()withwp_is_writable() -
Fix
Added
/* translators: */comments to allsprintf/_ni18n calls -
Fix
Fixed mismatched placeholders in RepoDetector.php
_n()calls -
Fix
Used WordPress
checked()function for radio button state output -
Fix
Applied
wp_kses_post()to$actionsHTML in Plugin.php -
Fix
Sanitized
$_SERVER['REMOTE_ADDR']withwp_unslash()+sanitize_text_field() -
Fix
Added
phpcs:ignorewith explanatory comments for custom Security::sanitize*() methods -
Fix
Added
esc_sql()on table names in DROP TABLE queries -
Fix
Excluded
assets/nerd/*.shfrom distribution ZIP
v1.1.6 2026-04-17
- Note Official stable release of the 1.1.6 line, consolidating the beta cycle.
v1.1.3 2026-02-19
-
Fix
Identity reconciliation is now deterministic across
folder,slug, andtext_domain: - Fix runtime update checks auto-reconcile only when installed-plugin match is unique and high-confidence,
- Fix ambiguous matches are no longer auto-written.
- Fix Auto-repair now auto-resolves safe slug mismatches and adds explicit reason codes:
-
Fix
slug_mismatch_resolved -
Fix
slug_mismatch_ambiguous -
Fix
Detect/Magic setup now return and persist
text_domainwhen available. -
Fix
Slug inference now prioritizes real repository path/folder signals before
text_domain, then file-based fallback. -
Fix
Webhook queue processing now survives slug renames by resolving config with
plugin_filefallback. -
Fix
Monorepo package folder resolution now uses multi-signal header matching (
slug/text_domain/main_file) before failing withfolder_not_found.
v1.1.2 2026-02-19
-
Fix
Tag prefix: when both
name-andname-vmatch tags, the prefix now always chooses-v. -
Fix
Add/Edit now save even if Tag Prefix does not match GitHub tags; configuration is marked
needs_actionwith a warning. -
Fix
Auto-repair upgrades stored prefixes to
-vwhen detected tags clearly use the-vformat.
v1.1.1 2026-02-19
-
Fix
Tag prefix inference now prefers the
-vsuffix when repository tags consistently use it (avoids saving prefixes withoutv). - Fix Wizard update policy now persists the selected profile/behaviour when finishing the guide.
v1.1.0 2026-02-18
-
New
Changelog viewer: new “Changelog” button in the monitored plugins list opens a popup with the latest
CHANGELOG.mdsection from the GitHub repo. -
Fix
Plugin/theme header parsing now accepts standard comment prefixes (e.g.,
* Plugin Name:), restoring auto-detect for slug/Text Domain in monorepo.
v1.0.2 2026-02-18
- Fix Wizard monorepo now auto-detects the slug per folder (Text Domain / main file) and highlights missing slugs per item.
- Fix Monorepo import now blocks only the items missing slug and shows per-item errors (no more empty imports with zero saved).
- Fix Magic setup no longer blocks on tag prefix mismatch; it saves with a warning for manual review.
-
Change
Magic setup now marks tag-prefix issues as
needs_actionin config health metadata.
v1.0.1 2026-02-18
-
Fix
Tag prefix inference now follows Slug-first + fallback:
slug-is canonical, with compatibility fallback to folder-based prefixes only when real tags confirm it. -
Fix
Add/Edit/Magic setup now validate the final
tag_prefixagainst repository tags (when tags exist) and block unsafe saves with explicittag_prefix_invalid. -
Fix
Monorepo Magic setup no longer forces
slug = folder; slug is resolved from plugin metadata (Text Domain / main file) or requires manual input. -
Fix
UI forms no longer auto-overwrite
tag_prefixfrom folder changes in monorepo mode. - Fix Wizard monorepo bulk import no longer pre-fills ambiguous folder-based tag prefixes.
-
Change
AJAX
gup_detect_pluginnow returns: -
Change
tag_prefix_candidates -
Change
tag_prefix_selected -
Change
tag_prefix_validation(tags_available,matched_count,confidence) -
Change
AJAX
gup_magic_setupnow returnstag_prefix_invaliderrors withtag_prefix_validationdetails for guided correction. -
Change
Copy/examples now use canonical tag format
<slug>-<version>(for examplewpak-seo-1.2.3) instead of-vdefaults. -
Change
Repair flow now auto-corrects stored
tag_prefixonly when the current prefix has zero matches and a unique safe prefix is detected.
v1.0.0 2026-02-17
-
Change
Breaking rename: plugin identity moved to
wpak-deploy2wp. - Change Canonical runtime identifiers updated:
-
Change
Plugin name:
WpAgencyKit Deploy2WP -
Change
Folder/main file:
wpak-deploy2wp/wpak-deploy2wp.php -
Change
Text domain:
wpak-deploy2wp -
Change
Tag prefix:
wpak-deploy2wp- -
Change
REST namespace:
wpak-deploy2wp/v1 -
Change
Internal hooks/options/transients/cron keys standardized to
wpak_deploy2wp_*. - New Runtime and admin naming fully aligned with Deploy2WP across code and docs.
-
Note
PHP namespace remains
WPAKUpdaterin this cycle to minimize regression risk; namespace rename is deferred.
v0.2.46 2026-02-15
- New First safe support for WordPress Themes in monitor flow (phase 1, notify/manual install only).
- New New Theme table in dashboard: Monitored themes separated from Monitored plugins.
-
New
New backend list table file:
admin/Theme_List_Table.php. - New New config fields with backward compatibility:
-
New
asset_type(plugin|theme, default =plugin) -
New
theme_stylesheetfor runtime theme identity. - Change Add/Edit form now supports asset type selection (Plugin / Theme) with dynamic fields.
- Change Wizard Magic Setup now supports Theme flow end-to-end (detect + setup payload + summary context).
- Change AJAX endpoints kept backward compatible and extended:
-
Change
gup_detect_pluginnow acceptsasset_typeand can returntheme_stylesheet. -
Change
gup_magic_setupnow acceptsasset_typeand saves correct runtime identity. - Change Detect strategy now supports Theme repositories:
-
Change
single-theme detection (
style.cssin root with valid header), -
Change
multi-theme detection (subfolders with valid
style.cssheader). - Change Update notices and pending update counters now consider monitored themes too.
- Change Monorepo upgrader source selection now supports Theme package folder extraction.
-
Fix
Webhook safety in phase 1: theme-matched tags are intentionally not queued for auto install (
theme_webhook_notify_only), preventing unwanted automatic theme updates. -
Fix
Runtime collision protection extended to
theme_stylesheetidentities to avoid cross-asset update ambiguity.
v0.2.45 2026-02-15
- Change Onboarding wizard (final step): added a dedicated info card that explicitly explains you can monitor plugins from multiple GitHub repositories.
- Change Included a concrete real-world example in the card to make the multi-repo capability immediately clear to non-technical users.
v0.2.44 2026-02-15
-
Fix
Add Plugin modal now pre-fills
owner/repo(and suggested repo type) from saved monitored configurations, so adding another plugin on an already used repository is faster and consistent. -
Fix
Repository type detection (
single/multi) is now more stable: - Fix request de-duplication and cancellation on the form (prevents race conditions and “ballerino” results),
- Fix detect cache per repo/token on server side (faster repeated checks),
- Fix plugin-header memoization and better directory filtering for monorepo scans.
-
Fix
Detect cache no longer stores
unknownoutcomes, so temporary uncertain results can be retried immediately.
v0.2.43 2026-02-15
-
Fix
Status tab now reads pending monitored updates from WordPress
update_pluginstransient and marks rows asUpdate availablewhen a real update exists. -
Fix
Latest version shown in list/system status now prioritizes the pending transient version, preventing false
Up to daterows caused by release-cache desync.
v0.2.42 2026-02-15
- Fix Removed notice duplication after update checks:
- Fix when a real update notice is already shown, the generic "Update check completed" notice is suppressed;
- Fix when a Notify-only update notice is shown, the generic "Open WpAgencyKit Deploy2WP" warning is not shown in parallel.
v0.2.41 2026-02-15
- Fix Global "Update available" notice now appears across WordPress admin pages but is not repeated inside WpAgencyKit Deploy2WP pages.
-
Fix
Update-available counting now ignores stale
update_pluginsentries when the monitored plugin is already updated. - Fix Notify-only update notices are automatically dismissed when the target version is already installed.
- Fix Plugin-file collision runtime notice is now one-shot (transient cleared after display) to avoid persistent repeats.
v0.2.40 2026-02-15
- Change Release bump to publish this update on a new unique tag.
v0.2.39 2026-02-15
- Change Release bump to publish this update on a new unique tag.
v0.2.38 2026-02-15
- Change Release bump to publish the intelligent auto-fix hardening on a new unique tag.
v0.2.37 2026-02-15
-
New
New per-plugin tag version policy:
strict(SemVer only) andcompat(also accepts short tags like1.2, normalized to1.2.0). -
New
New config health metadata per plugin:
health_stateandlast_autofix_report. - New Add/Edit forms now expose Tag version policy explicitly.
- New AJAX responses extended:
-
New
gup_detect_plugin:autofix_preview,confidence_level,user_message_mode. -
New
gup_magic_setup:fixed_items,unresolved_items,next_steps,confidence_level,user_message_mode. - Change Smart repair flow now uses safe-first behavior:
- Change auto-fixes only reliable changes;
- Change keeps risky mappings for manual confirmation;
- Change stores a user-friendly summary with guided next steps.
- Change First admin load after updater version change now runs automatic safe repair (with snapshot backup) and shows positive/clear notice messaging.
-
Change
Monorepo logic now keeps
slug(WordPress identity) andfolder(GitHub path) independent in Add/Edit flows. -
Change
New notices for guided outcomes:
autofix_resolved,autofix_partial,autofix_blocked. - Change System action label updated to Diagnose & Auto-resolve.
-
Fix
Reduced hidden
folder -> slugauto-overwrites in JS forms/wizard/repo detection. -
Fix
Runtime release parsing now consistently applies plugin tag policy (
strict|compat) in updater checks and webhook tag routing. - Fix Avoided unsafe plugin-file rewrites during repair when installed mapping cannot be verified.
v0.2.36 2026-02-15
-
Fix
Runtime plugin identity matching no longer uses monorepo
folderas a fallback for installed plugin resolution. -
Fix
This prevents
folder(GitHub repo path) from forcing a wrong local plugin match whenslug/plugin_fileare misconfigured.
v0.2.35 2026-02-14
- Change Safety hardening for slug/folder/tag mapping to prevent cross-plugin updates in monorepo setups.
- Change Tag prefix detection now returns confidence and warning codes; risky patterns require manual confirmation.
- Change Automatic post-update repair now runs in diagnostic mode only (no config writes).
- Change Manual "Repair configuration" now creates a configuration snapshot before applying safe changes.
- Fix Release/tag parsing now accepts only strict numeric versions after prefix stripping.
- Fix Add/Magic Setup now blocks silent overwrite when a slug already exists.
-
Fix
Runtime update check now blocks and reports
plugin_filecollisions across monitored entries. - Fix Webhook monorepo routing now requires a unique tag-to-plugin match, with explicit safety warnings for ambiguous/no-match cases.
v0.2.33 2026-02-14
- Change System Info: moved Data Retention card into the top triple-card grid, next to Configuration Repair.
- Change Adjusted retention card spacing in the triple grid for clean alignment.
v0.2.32 2026-02-14
- Fix Nerd terminal no longer overflows horizontally on the right side of the page.
- Change Nerd heading and white divider are now positioned below the terminal bar with colored dots.
v0.2.31 2026-02-14
- Change Logs > Tools: merged the two separate cards into a single unified card, consistent with the other admin pages.
- Change Reorganized Tool actions inside the card for cleaner spacing and alignment on desktop and mobile.
v0.2.30 2026-02-14
- Change Logs page filters redesigned for better visual order and readability.
- Change Added clearer filter fields (Plugin/Event) with aligned labels and action button.
- Change Improved top logs toolbar alignment with pagination.
- Fix Prevented pagination page input from stretching and breaking the filters layout.
v0.2.29 2026-02-14
- Change Edit Plugin form redesigned as a horizontal card layout with clearer spacing and alignment.
- Change Field labels are now displayed above each input instead of side-by-side.
- Change Added responsive grid behavior to keep the form clean on both desktop and mobile.
v0.2.28 2026-02-14
- Change Onboarding wizard (Update policy step): aligned markup and spacing with the main Settings layout.
- Change Policy options are now grouped in structured rows with a dedicated action row, improving visual order and readability.
v0.2.27 2026-02-14
- Change Nerd section redesigned as a standalone terminal block (removed outer white card wrapper).
- Change Nerd title moved inside terminal with white text and white underline.
- Change Terminal width aligned to the full section width for cleaner visual continuity with the card below.
v0.2.26 2026-02-14
- Change Settings layout: Token and License cards are now displayed on the same row on desktop, with automatic stack on smaller screens.
v0.2.25 2026-02-14
- Change Data Retention: the "Save retention preference" button is no longer full width and now keeps a compact, content-sized width.
v0.2.24 2026-02-14
- Change Settings > Update Policy card redesigned with a horizontal, balanced layout in backend.
- Change Improved option cell proportions and spacing for cleaner alignment between sections.
- Change Save button now sits in a dedicated action row for consistent visual rhythm.
- Fix Policy option descriptions no longer collapse into narrow wrapping under the radio column.
- Fix Option cards keep a consistent structure even when texts have different lengths.
v0.2.23 2026-02-14
- New System Info: new "Configuration Repair" action to re-run slug/folder/tag-prefix consistency fixes on demand.
- New Automatic one-shot repair after plugin update, with admin notice summary.
-
Change
Add/Edit forms: clarified
slugvsfoldermeaning;slugis now always visible and editable in multi-plugin flows. -
Change
Add/Edit save flow: supports safe slug rename (
original_slug-> new slug) without losing plugin metadata. -
Change
Tag prefix inference unified server-side with explicit sources (
tags,default_folder,default_slug,manual). -
Change
Multi-plugin defaults now prefer
folder-vwhen tags are missing; single-plugin defaults remainslug-v. -
Change
Auto-fill and Magic Setup now return/save
main_fileand computedplugin_fileto reduce sync mismatches. -
Fix
Reduced hidden-field mismatch issues where tag prefix followed
slugunexpectedly in monorepo setups. -
Fix
Improved runtime alignment for stored plugin identity (
slug,main_file,plugin_file) during repair.
v0.2.22 2026-02-06
- Change Wizard assistant prompt now includes Update Policy rules (Production/Staging plus Notify/Auto) and prerelease safety guidance.
- Change Added a glossary for Stable, Beta, RC, and Prerelease to reduce ambiguity in assistant runs.
-
Change
Aligned downloaded
assistant-prompt.zipcontent with the in-app "Copy prompt" template.
v0.2.21 2026-02-05
- New Update Policy (Production vs Staging/Test) with notify/auto behaviour.
- New Prerelease gate for Production with admin notices + anti-spam.
- New Semantic version release selection (version_compare) for GitHub releases and tags.
- New Notify-only flow with “Install now” CTA in admin.
- New Webhook gating with policy re-check during queue processing.
v0.2.20 2026-02-02
- New Live license validation on key input with green/red status indicator.
v0.2.19 2026-02-02
- New License key field in Settings for updater licensing.
- New License status check on save with status summary.
v0.2.18 2026-02-02
- New Default license data provider for Deploy2WP (options/constants) plus dev/staging fallback behavior.
v0.2.17 2026-02-01
-
New
Licensing server callback: fetch package URL via
wpak_deploy2wp_license_data(with failure behavior + cache TTL filters).
v0.2.16 2026-02-01
-
New
Update response filter (
wpak_deploy2wp_update_response) to override package URLs or block updates.
v0.2.15 2026-01-31
- Change Maintenance version bump.
v0.2.14 2026-01-31
- Change Notices: force-move all admin notices (including late-inserted ones) below the header, with a CSS fallback to prevent header flashes.
v0.2.13 2026-01-31
- Change Notices: move global admin notices below the plugin header on updater pages.
v0.2.12 2026-01-31
- Change Actions: moved button icons after text in markup and increased icon spacing.
v0.2.11 2026-01-31
- Change Wizard prompt step: expanded description, added official guide link, and increased top spacing for the helper text.
v0.2.10 2026-01-31
- Change Wizard summary: count moved outside the list card, alternating row backgrounds, and removed the back-to-selection button.
v0.2.9 2026-01-31
- Change Wizard: tighter spacing between monorepo name and fields, extra top spacing above actions, and hide Select all when everything is already selected.
v0.2.8 2026-01-31
- Change Buttons: icons forced to the right with extra spacing from the label.
v0.2.7 2026-01-31
- Change Wizard: suggested repo badge updated to Aurora Pulse style (premium gradient + sheen).
v0.2.6 2026-01-31
- Change System Info: compact test cards with summary pills and detail modals to avoid layout stretching.
v0.2.5 2026-01-31
- Change System Info: GitHub API/Update dry run descriptions, refined test labels, and export button icon.
v0.2.4 2026-01-31
- Change Notices: removed admin_notices hook so plugin notices only render under the header.
v0.2.3 2026-01-31
- Change Notices: all notifications now render directly below the page header.
v0.2.2 2026-01-31
- Change Buttons with icons: icons moved to the right with increased spacing.
v0.2.1 2026-01-31
- Change System Info: moved GitHub API, Update dry run, and Export to the top.
- Change Danger Zone: red title divider and two-column button layout.
v0.2.0 2026-01-31
- Change Admin UI refresh: Actions panel, System Info layout, Nerd styling, and header links updated.
v0.1.7 2026-01-31
- Change Header links updated to About, FAQ, Support, and Creator.
v0.1.6 2026-01-31
- Change Actions panel: white background and right-aligned icons with balanced spacing.
- Change Buttons with icons: subtle hover motion for icon glyphs.
v0.1.5 2026-01-31
- Change Nerd section: terminal switched to pure black, download cards dark gray with white outline buttons and green hover.
- Change Nerd section: download buttons centered with icons and anchored to the bottom of each card.
v0.1.4 2026-01-31
- Change System Info: cards added/reshuffled, with 3-column row for GitHub API, Update dry run, and Export.
- Change System Info: Danger Zone highlighted with red border and red gradient buttons.
- Change Buttons: outline borders kept thinner on system cards.
v0.1.3 2026-01-31
- Change Buttons: removed borders from gradient primary buttons.
- Change Buttons: outline borders reduced to 1px.
v0.1.2 2026-01-31
- Fix Nerd downloads: added missing ZIP assets so download buttons no longer 404.
v0.1.1 2026-01-30
- Change Wizard: step icons aligned with titles, last-step skip removed.
- Change Wizard: monorepo list cleaned (alternating rows, inline labels, centered helper).
- Change Wizard: repo-type suggestion highlight stronger and clearer.
- Change Magic setup: detection waits for token + repo, Next step event fixed.
- Change Notices: positioned under Actions instead of header.
- Change Buttons: wizard styling applied globally.
v0.1.0 2026-01-30
- New Premium wizard layout with stepper sidebar and activity log styling.
- New Monorepo selection + review step with bulk import controls.
- New Waiting status for plugins without releases/tags.
- New Modular admin JS source structure for bundling.
- Change Notifications render below the header on plugin pages.
- Change GitHub “no releases/tags” logs now show as info instead of error.
v0.0.8 2026-01-28
- Change Wizard auto-detect flow, Magic Setup button, default tag prefix, and version pickers.
- Change Wizard now resumes the correct step after token/data retention save.
- Change Wizard v2: token + repo on the same step, terminal-style Magic log, and manual fallback.
- Fix Added missing PHP open tag in main plugin file to prevent “headers already sent”.
v0.0.7 2026-01-28
- Fix Version bump for testing release pipeline.
v0.0.6 2026-01-28
- Fix Version bump for testing release pipeline.
Latest
v1.6.7
v1.6.7 2026-04-21
- Fix [Updater SDK] Update-check cache lowered from 12h → 1h so new releases pushed on the update server reach this plugin within the hour
-
Fix
[Updater SDK]
Moved
declare(strict_types=1)before theABSPATHguard insdk/class-wpak-updater.php— previously aphp -lfatal (strict_types declaration must be the very first statement). Brings the file in line with the fix already shipped in menu-conditions 1.2.8 / deploy2wp 1.1.8 -
New
[Updater SDK]
Honors
?force-check=1onwp-admin/update-core.phpfor immediate refresh; newwpak_updater_cache_ttlandwpak_updater_force_refreshfilters
v1.6.6 2026-04-21
- Change Declared compatibility with WordPress 6.9.4 — removes the "not tested with your current version of WordPress" warning in the plugin details modal
v1.6.5 2026-04-21
- Change Release notes adopt the new public/internal tag format — cleaner, user-oriented entries on the public changelog
Show 29 older versions
v1.6.4 2026-04-21
- Fix [Banner] White background on the sticky action bar in dark-mode themes
-
New
[Banner]
--wpak-cookies-actions-bgCSS custom property lets you theme the sticky bar from site CSS
v1.6.3 2026-04-20
- Fix [Consent Logs] Page layout broken (KPI cards stacked, category stats wrapping, badge unstyled) after the 1.6.2 hook-prefix change
- Fix [Admin] Logs-page "Settings" link now points to the new top-level menu (avoids an unnecessary redirect)
v1.6.2 2026-04-20
- Fix [Admin] Broken CSS on every submenu after 1.6.0 (huge logo, missing unified header on Banner / Trackers / Settings / License / Consent Logs)
v1.6.1 2026-04-20
- Fix [Admin] Fatal error on Dashboard and License pages after upgrading to 1.6.0
v1.6.0 2026-04-20
-
New
Top-level WordPress admin menu
WpAgencyKit Cookies(icondashicons-shield-alt, position 79) with six dedicated submenus, matching the UX already used bywpak-translateandwpak-seo: - New Dashboard — landing page with status cards (consent mode, active trackers, last site scan, consent records last 30 days, license) and shortcut actions.
- New Banner — merged Position, Colors, Typography, Banner Texts and Cookie Categories into a single page with four postbox sections.
- New Trackers & Cookies — Site Scanner, Preset Library toggle + category override, Custom Trackers CRUD, Cookie Declaration shortcode reference.
- New Consent Logs — existing table, re-parented under the new top-level entry.
- New Settings — cookie lifetime, log retention, consent mode (opt-in/opt-out), legacy Analytics Integration, Shortcodes & API reference.
- New License — license key + live status check (self-contained so it stays functional when the plugin is write-locked).
-
New
New
WPAK_Cookies_Admin_Menuorchestrator (includes/Admin/class-admin-menu.php) with the parent slug, icon/position constants and a::url($slug)helper. -
New
New abstract
WPAK_Cookies_Admin_Pagebase (includes/Admin/class-admin-page.php) providing the unified header, capability guard, license-awaresave_options()and a consistent Save button — every subpage just implementsget_*()+render_body()+ optionalhandle_post(). -
Change
Each subpage now has its own scoped nonce (
wpak_cookies_banner_nonce,wpak_cookies_trackers_nonce,wpak_cookies_settings_general_nonce,wpak_cookies_license_nonce) instead of the monolithicwpak_cookies_settings_nonce. Storage inwp_options.wpak_cookies_optionsremains identical — no migration needed. -
Change
Plugin action link "Settings" in the Plugins list now points to
admin.php?page=wpak-cookies. -
Change
Admin stylesheets (
enqueue_admin_styles()) detect the newtoplevel_page_wpak-cookies+wpak-cookies_page_wpak-cookies-*hook family via a centralisedWPAK_Cookies_Admin_Menu::is_cookies_admin_hook()helper. -
Change
WPAK_Cookies_Logs_Admin::add_logs_page()now attaches under the top-levelwpak-cookiesparent instead ofoptions-general.php; the enqueue guard accepts both the new and legacy hook names during the transition. -
Change
Exposed
WPAK_Cookies::get_database()public accessor so admin pages can read consent statistics without touching the private$dbproperty. -
Remove
Monolithic
admin/settings.php(~1.300 lines) has been split into five focused view files underincludes/Admin/views/(dashboard.php,banner.php,trackers.php,settings-general.php,license.php). -
Remove
Obsolete
WPAK_Cookies::admin_menu()andWPAK_Cookies::settings_page()methods replaced by the per-page classes. -
Note
Automatic redirect of the legacy URLs
/wp-admin/options-general.php?page=wpak-cookies-settingsand/wp-admin/options-general.php?page=wpak-cookies-logsto the new top-level slugs viawp_safe_redirect()onadmin_init(capability-gated tomanage_options). -
Note
Option schema in
wp_options.wpak_cookies_optionsunchanged — every pre-1.6.0 site keeps working without any migration step. -
Note
All new strings are English-only and wrapped in
__()/_n()ready for the future translation pass.
v1.5.0 2026-04-20
-
New
Custom Trackers table in Settings → Trackers & Cookies: admins can register any number of proprietary trackers (name, provider, category, one or more script URL substrings) without writing PHP. Custom trackers are merged into the same
wpak_cookies_script_category_mappipeline as the built-in presets. -
New
Cookie Declaration shortcode
[wpak_cookies_declaration]: renders a styled, category-grouped table of the cookies set by every tracker currently enabled. Ready to drop on any Privacy/Cookie Policy page. -
New
category="analytics,marketing"attribute to restrict the rendered categories. -
New
show_empty="1"attribute to keep empty categories visible. - New Category headings honour the overrides saved in Banner Texts.
-
New
Declarative cookie metadata on every built-in preset:
cookiesarray withname,durationandpurposeentries (wildcard names supported, e.g._ga_*,_hjSession_*). Covers GA4, Clarity, Hotjar, Matomo, Mixpanel, Amplitude, Plausible, Meta Pixel, Google Ads, DoubleClick, LinkedIn Insight, TikTok, Pinterest, X/Twitter, Snapchat, Reddit, YouTube, reCAPTCHA and Vimeo. -
New
New filter
wpak_cookies_declarationto reshape the cookie declaration array before rendering, andwpak_cookies_declaration_htmlto post-process the final HTML. -
New
Minimal, theme-friendly frontend CSS for
.wpak-cookies-declaration(bundled inside the existingwpak-cookies.css— no extra enqueue). -
Change
WPAK_Cookies_Tracker_Presets::inject_into_script_map()now also folds custom trackers into the category→patterns map (previously only built-in presets were injected). -
Change
Built-in preset catalog entries now carry an optional
cookiesmetadata array (backwards compatible: missing = no declaration rows contributed). -
Note
All new UI strings are English-only and wrapped in
__()ready for the upcoming translation pass.
v1.4.0 2026-04-20
-
New
Site Scanner in the Trackers & Cookies section: a "Scan my site" button fetches the homepage, up to two recent posts, one recent page and (if present) the WooCommerce shop page, parses their HTML server-side and matches
<script src>/<iframe src>URLs plus inline script bodies against the preset catalog. - New Results panel lists every detected preset (with category + a note if already enabled) and every unrecognised external script source, so the admin can spot trackers the library does not cover yet.
- New One-click "Enable all detected presets" button ticks the matching checkboxes in the Trackers table without a page reload; the admin still reviews categories and clicks Save All Settings to persist.
- New HTTP errors during the scan (404, timeouts, TLS failures) are surfaced inline to help diagnose why a URL could not be read.
-
New
Scanner results are cached for one hour in a WordPress transient (
wpak_cookies_scan_results); the Rescan button force-refreshes withforce=1. - Note The scanner intentionally only sees what renders in the initial HTML; GTM-driven tags, SPA router injections and client-set cookies are out of scope (Layer 2 goal). A manual toggle on every preset remains the primary control.
-
Note
All new UI strings are English-only, wrapped in
__()/_n()ready for a future translation pass.
v1.3.0 2026-04-20
- New Trackers & Cookies section in Settings: curated library of 20 common third-party trackers (Google Analytics 4, GTM, Meta Pixel, Microsoft Clarity, Hotjar, Matomo, Mixpanel, Amplitude, Plausible, Google Ads, DoubleClick, LinkedIn Insight, TikTok Pixel, Pinterest Tag, X/Twitter Pixel, Snapchat Pixel, Reddit Pixel, YouTube Embed, Google reCAPTCHA, Vimeo Player).
- New Per-preset enable toggle + consent-category override dropdown (Default / Necessary / Preferences / Analytics / Marketing) so admins can move any tracker into a stricter bucket without writing PHP.
- New Privacy-policy link surfaced next to each preset to help operators complete their privacy notice.
-
New
New
WPAK_Cookies_Tracker_Presetsclass (includes/class-tracker-presets.php) exposingget_catalog(),sanitize_posted_selection()and aninject_into_script_map()callback hooked at priority 20 onwpak_cookies_script_category_map. -
New
New filter
wpak_cookies_tracker_presets_catalogfor themes/plugins to extend or override the built-in preset catalog. - Change Banner Texts section now links forward to the new Trackers & Cookies section before reaching Appearance, keeping the guided walkthrough coherent.
-
Note
All new UI strings are English-only for now, wrapped in
__()ready for a future translation pass (Italian, French, German, Portuguese, Spanish). -
Note
Enabled presets are stored under
wpak_cookies_options.trackers.enabled[<slug>]with shape{ enabled: bool, category: '' | 'necessary' | 'preferences' | 'analytics' | 'marketing' }. Emptycategorymeans "use the preset default". -
Note
The server-side script blocker is reused as-is: enabled presets merely feed additional
srcsubstrings into the existingget_script_category_map()pipeline.
v1.2.1 2026-04-20
-
Fix
Frontend banner: removed the hardcoded white
background(and pairedbox-shadow) from the sticky.wpak-cookies-banner-actionsbar inwpak-cookies-debug.css. The actions bar now inherits its backdrop from the banner container so dark/custom-themed banners no longer show an unexpected white band under the buttons. Sticky positioning and safe-area padding are preserved.
v1.2.0 2026-04-20
- New New "Banner Texts" section on the Settings page: every copy rendered in the frontend banner (title, subtitle, message, accept/reject/save buttons, required badge, close label, save success) is now editable directly from the admin UI.
- New Per-category editor (title + description) for each cookie category, including unknown custom categories stored in options.
- New Automatic fallback: leaving any text field empty keeps the existing translated default shipped with the plugin.
-
Change
Banner template now resolves every label via
$options['texts'][...]with a translated__()fallback, replacing the previous hardcoded strings. - Change General Settings introductory notice refreshed to point users to the new Banner Texts section.
-
Security
Banner copy fields saved with
sanitize_text_field(); long banner message sanitized withwp_kses_post(); category descriptions sanitized withsanitize_textarea_field().
v1.1.0 2026-04-20
-
New
Unified WpAgencyKit header design on Settings and Consent Logs pages (logo + plugin name + page title with icon + subtitle + brand/links). Logo locked at 72×72 with
object-fit: containfor cross-plugin visual consistency.
v1.0.5 2026-04-20
-
Fix
Admin header logo rendered too large on some environments; enforced
120pxwidth via inline style on the<img>tag (belt-and-suspenders with the existing.ct-header-logoCSS rule).
v1.0.4 2026-04-20
- New Official plugin logo shown in admin page headers (Settings, Logs) next to the page title, matching the Deploy2WP style.
v1.0.3 2026-04-18
-
Fix
PHPCS compliance: moved
translators:comment directly above__()in logs template - Fix PHPCS compliance: added inline phpcs:ignore on SQL string lines in database class
-
Fix
PHPCS compliance: added phpcs:ignore for
$wpdb->insert()direct query -
Fix
readme.txt: updated
Stable tagto match plugin version
v1.0.2 2026-04-18
-
Fix
PHPCS compliance: replaced
_e()withesc_html_e()in admin templates -
Fix
PHPCS compliance: wrapped
number_format_i18n(),paginate_links(),admin_url(),home_url()with escaping functions -
Fix
PHPCS compliance:
date()→gmdate()in database class -
Fix
PHPCS compliance: added
sanitize_text_field()to$_COOKIEreads in main plugin and banner template -
Fix
PHPCS compliance: added
wp_unslash()to$_SERVER['HTTP_ACCEPT_LANGUAGE']in languages class -
Fix
PHPCS compliance: added
wp_unslash()+sanitize_text_field()to nonce in AJAX handler -
Fix
PHPCS compliance: added ABSPATH guard to
sdk/class-wpak-updater.php -
Fix
PHPCS compliance: updated
Tested up to: 6.9in readme.txt
v1.0.1 2026-04-17
- Note First official stable release of the 1.0 line, consolidating the beta cycle.
v0.0.14 2026-02-25
- Change Aligned admin CSS to Deploy2WP Material Design 5 design system: expanded design tokens, no shadows, pill buttons with
- Change Added Deploy2WP-style page header with logo, brand, and navigation links to settings and logs pages.
v0.0.13 2026-02-21
-
New
New explicit runtime API
wpak_cookies_register_trigger()for themes/plugins/builders that render cookie triggers - Change Frontend UI loading now recognizes explicitly registered runtime triggers in addition to shortcode scanning and
v0.0.12 2026-02-21
- Change Frontend slimming: load banner UI assets/markup only when required (first consent, partial consent, or explicit
- Change Added frontend control filters:
-
Change
wpak_cookies_force_frontend_assets -
Change
wpak_cookies_has_external_trigger -
Change
Centralized cookie preferences/category helpers in
wpak-cookies.phpand reused them from analytics and banner -
Change
Unified script category mapping with one PHP source of truth (
wpak_cookies_script_category_map) and localized that - Change Split admin CSS monolith into page-scoped files:
-
Change
assets/css/admin/wpak-cookies-admin-base.css -
Change
assets/css/admin/wpak-cookies-admin-settings.css -
Change
assets/css/admin/wpak-cookies-admin-logs.css - Change Added transient cache (5 minutes) for aggregated consent statistics and automatic invalidation on successful consent
v0.0.11 2026-02-18
-
Change
Refactored
assets/js/wpak-cookies.jsto vanilla JS (no jQuery runtime dependency) while preserving cookie handling, -
Change
Cleaned
assets/css/wpak-cookies.cssby removing duplicated/contradictory blocks and keeping selectors currently used -
Change
Updated frontend script enqueue to remove
jquerydependency fromwpak-cookies-script. - Remove Deleted unused legacy assets:
-
Remove
assets/css/consolidated/ -
Remove
assets/css/admin/wpak-cookies-admin.css -
Remove
assets/images/flags/
v0.0.10 2026-02-17
-
Change
Loaded
wpak-cookies-blocker.jsconditionally using a conservative policy (only when consent is missing or partial). -
Change
Reduced frontend localized data to essential fields while keeping backward-compatible
options.cookie_expiration. - Change Switched admin runtime styles to a single physical CSS asset and kept fallback handle compatibility.
- Change Optimized consent dashboard statistics with a single aggregated SQL query.
-
Remove
Deleted unused
assets/js/wpak-cookies-footer-fix.js. -
Remove
Deleted unused empty admin templates
admin/settings-fixed.phpandadmin/settings-modern.php. -
Remove
Removed unused
darken_color()helper.
v0.0.9 2026-02-11
- Fix Hardened pre-consent blocking for analytics/marketing scripts, including inert inline scripts.
- Fix Prevented false-positive consent save feedback when log persistence fails.
- Fix Made cookie settings panel re-openable after initial acceptance.
- Fix Improved consent categories sanitization in AJAX endpoint.
- Fix Improved IP anonymization reliability via WordPress privacy anonymizer fallback.
- Fix Fixed logs export flow by aligning admin UI download behavior with streamed backend responses.
-
Change
Removed per-request
time()asset cache busting and restored version-based browser caching. -
Change
Stopped loading Google Fonts until
preferencesconsent is granted. -
Change
Loaded debug CSS only when enabled via
WP_DEBUGorwpak_cookies_load_debug_cssfilter. - Change Avoided resetting existing plugin options on activation by merging missing defaults only.
- Change Cleaned up dead admin export helper code and removed unused admin JS asset.
v0.0.8 2026-02-02
- New Live license validation on key input with green/red status indicator.
v0.0.7 2026-02-02
- New License key field in settings to store the bundle key.
- New License status check on save with status summary.
v0.0.6 2026-02-02
- New License data provider for Deploy2WP (global licensing server support).
v0.0.5 2026-02-01
- Change Aligned Cookies admin UI palette and buttons to the Deploy2WP unified style.
v0.0.4 2026-01-31
- Change Maintenance version bump.
v0.0.3 2026-01-31
- Change Admin notices now relocate below the page header on Cookies settings/logs pages.
v0.0.2 2026-01-28
- Fix Version bump for testing release pipeline.
Latest
v1.4.0
v1.4.0 2026-04-22
-
Change
[i18n]
Full linguistic audit — all admin-facing source strings rewritten in English. Previous releases shipped with Italian as the native language of the source (msgid), so a site running WordPress in English had no translation file to fall back to and displayed the raw Italian labels. This caused the common "mixed Italian/English backend" report where the tab
Modal Templates(already English) contained Italian labels likeLarghezza,Altezza,Ombra,Chiudi. The source is now canonical English and follows the standard WordPress convention for distributable plugins -
Change
[i18n]
Italian users preserved — shipped
languages/wpak-menu-conditions-it_IT.po/.momaps the new English msgids back to the original Italian labels, so sites running WordPress init_ITrender exactly as before. Sites on any other locale now see English instead of Italian -
Change
[i18n]
Regenerated
languages/wpak-menu-conditions.potfrom the canonical English source (279 unique strings across 9 PHP files) so future community translations start from the correct base -
Fix
[JS]
Replaced the last three hardcoded Italian strings in
assets/js/modal.js(Contenuto non disponibile.,Modal live non disponibile.,✕ Chiudi) with English equivalents (Content unavailable.,Live modal unavailable.,✕ Close). These were not wrapped inwp.i18n.__()and therefore unreachable via.pofiles — a translation file alone could not have fixed them
v1.3.9 2026-04-21
-
Change
[Admin]
Modal Template edit page restyles every metabox header (Configurazione Template, Anteprima Live, Publish, Slug) using the same
.postbox/.postbox-headercard treatment shipped inwpak-cookies-admin-base.css— clean rounded card with surface-variant header bar, no double rules, no raw WP outline. Brings the CPT screen in line with the rest of the WpAgencyKit suite - Change [Admin] Publish + Slug now sit side-by-side at the bottom of the page in a 2-column CSS grid layout. Configurazione Template and Anteprima Live span full width above. Collapses to single-column on screens narrower than 960px
v1.3.8 2026-04-21
-
Change
[Menus]
The "Finestra modale" option in the Comportamento Apertura Link dropdown is now hidden for Custom Link menu items (the ones where the URL is typed in by hand). Custom links almost always point to external domains, and external sites block iframe embedding via
Content-Security-Policy: frame-ancestorsorX-Frame-Options— the modal cannot physically open them, no matter what the plugin does. Hiding the option upfront prevents the silent same-tab fallback that confused admins - Note [Menus] A short description appears under the dropdown for Custom Link items explaining the limitation and suggesting Page/Post items instead (which are always same-origin and modal-able)
-
Fix
[Menus]
Backend save guard — if a stale POST or third-party tool tries to save
behavior=modalagainst a Custom Link item, the value is silently downgraded tosame(matches what the UI now allows) -
Fix
[Frontend]
Runtime safety — legacy DB rows from pre-1.3.8 installs (custom item + behavior=modal) are downgraded to
sameat thenav_menu_link_attributesfilter, so the modal JS no longer enters its cross-origin fallback for these items. Existing data is preserved untouched in the DB; only the rendering changes
Show 28 older versions
v1.3.7 2026-04-21
-
Change
[Admin]
Modal Template CPT pages (list, new, edit) are now visually aligned with the shared WpAgencyKit design system used by wpak-cookies / wpak-seo / wpak-deploy2wp Settings pages. The 1.3.5 "usability pass" had introduced several visual experiments that made the edit screen harder to read; this release reverts those and replaces them with the canonical
gup-cardpattern -
Fix
[Admin]
Removed gradient background banner on the CPT header — the
.wpak-uheadernow renders identically to the Settings page header (no tint, no rounded panel, no hover effects) -
Fix
[Admin]
Removed the accent bar before every
h4section title and the extra bar under the active tab — they duplicated existing state cues and added visual noise - Fix [Admin] Removed the diagonal stripe background on the live preview metabox — now a solid surface variant, same treatment as every other preview area across the suite
- Fix [Admin] Removed sticky tab nav (was aggressive on short viewports), dashed dividers between fields, uppercase field labels, hover lift / shadow on section cards
-
Change
[Admin]
Replaced the custom intro banner (
.wpak-tpl-intro) with a native.notice.notice-info inline— inherits admin styling automatically and stays visually consistent with the rest of wp-admin
v1.3.6 2026-04-21
-
Fix
[Modal]
Cross-origin menu links (e.g. pointing at a subdomain like
support.wpagencykit.org) opened in a new tab instead of the same tab. The handler fell through withreturn true— withoutpreventDefault()— so the browser ran its default navigation AND any theme-level click handlers (Themify, block themes) that rewrite external links totarget="_blank". Now the handler explicitly callspreventDefault()+stopPropagation()and navigates the current tab viawindow.location.href, which is the expected fallback when a URL cannot be embedded (most remote sites shipCSP: frame-ancestors 'self'orX-Frame-Options: SAMEORIGINblocking the iframe — the plugin cannot override those server-side headers). Aconsole.warn()line explains the decision for admins looking in DevTools -
Fix
[Modal]
Brief full-screen modal flash visible during page refresh on the pages that host a modal trigger. The prerendered
#wpak-modal-overlayused only CSS to stay hidden (visibility:hidden + opacity:0), so before the stylesheet finished loading the fixed-position div painted. Now ships with inlinestyle="display:none"thatopenModal()clears the first time a modal is opened — no more FOUC
v1.3.5 2026-04-21
-
Fix
[Modal]
Menu items configured as "Open in modal window" silently opened in a new tab on themes whose footer/header
<ul>uses classes outside the defaultnav, .menu, .wp-block-navigationscope (notably Themify's.footer-nav). The click handler'sisManagedMenuLink()check rejected these links and fell through to the browser's default navigation, which combined with cross-domain URLs ended up in a new tab -
Fix
[Modal]
MENU_SCOPE_SELECTORbroadened to cover.nav, .menus, .primary-menu, .secondary-menu, .header-nav, .footer-nav, .site-navigation, .wpak-menu-scope— plus any link explicitly marked server-side withdata-wpak-modal="true"orwpak-modal-triggeris now always treated as managed, regardless of parent class -
New
[Admin]
Unified
.wpak-uheaderbrand header on every Modal Templates CPT screen (list, new, edit) — same logo + eyebrow + context-aware title + subtitle pattern already used by Settings and by sibling plugins (Translate, SEO, Cookies) - New [Admin] Modal Template edit page usability pass: sticky tab nav (stays visible while scrolling long forms), clearer active-tab indicator with accent bar, section cards with colored icon accents + hover lift, refined field-group hierarchy (uppercase labels, dashed divider between fields, italic descriptions), accent-striped preview metabox so it reads as the "result" area, and a new intro banner above the tabs explaining how templates are reused across menu items
v1.3.4 2026-04-21
- Fix [Updater SDK] Update-check cache lowered from 12h → 1h so new releases pushed on the update server reach this plugin within the hour
-
New
[Updater SDK]
Honors
?force-check=1onwp-admin/update-core.phpfor immediate refresh; newwpak_updater_cache_ttlandwpak_updater_force_refreshfilters
v1.3.3 2026-04-21
- Change Declared compatibility with WordPress 6.9.4 — removes the "not tested with your current version of WordPress" warning in the plugin details modal
v1.3.2 2026-04-21
- Change Release notes adopt the new public/internal tag format — cleaner, user-oriented entries on the public changelog
v1.3.1 2026-04-20
- Change [Admin] Unified WpAgencyKit header design adopted (logo + plugin name + page title with icon + subtitle + brand links)
v1.3.0 2026-04-20
- Fix [Admin] Plugin header logo rendered too large on some environments
v1.2.9 2026-04-20
- New [Admin] Official plugin logo in the settings page header next to the page title
v1.2.8 2026-04-18
-
Fix
[Critical]
PHP fatal error introduced in 1.2.7 (
strict_types declaration must be the very first statement)
v1.2.6 2026-04-18
-
Fix
PHPCS: suppress false-positive
MissingUnslash/InputNotSanitizedonarray_map('wp_unslash', ...)pattern for visibility roles$_POSTfield.
v1.2.5 2026-04-18
-
Fix
PHPCS/Plugin Check compliance: added
wp_unslash()to all$_POSTreads before sanitization; replacedwp_die(__())withwp_die(esc_html__()); added missing i18n text domain to__('Publish'); added ABSPATH guard to SDK updater; added phpcs:ignore suppressions to SDK license gate/clienttranslate()methods and direct DB queries with proper justification comments. -
Fix
readme.txt: updated
Tested up toto 6.9, alignedRequires at leastto 5.0, translated all content to English.
v1.2.4 2026-04-17
- Note Official stable release of the 1.2.4 line, consolidating the beta cycle.
v1.2.3 2026-02-25
- Change Bumping version to trigger release process.
v1.2.2 2026-02-25### Changed
- Note Aligned admin CSS to Deploy2WP Material Design 5 design system: expanded design tokens (spacing, typography, radius,
- Note Added Deploy2WP-style page header with logo, brand, and navigation links to license settings page.
v1.2.1 2026-02-21
-
Note
Raffinato asset gating frontend:
assets/js/modal.jseassets/css/frontend.cssvengono enqueued solo con trigger -
Note
Introdotta sorgente unica defaults modal (
includes/class-modal-defaults.php) e collegata a template defaults PHP, -
Note
Migliorata robustezza nested modal: i link modal nei menu header/footer della modal effettuano fallback
live -
Note
Aggiunto watchdog runtime
live: se iframe non carica entro timeout o risulta bloccato (about:blank), fallback - Note Ridotta invalidazione cache aggressiva: mantenuta invalidazione globale solo per eventi strutturali (menu/template),
- Note Estesa invalidazione selettiva a termini tassonomici collegati a URL modal, con refresh discovery solo quando
- Note Ridotte letture duplicate meta menu item tramite cache per-request condivisa tra frontend filters e custom walker.
v1.2.0 2026-02-18
-
Note
Rimossa la dipendenza operativa legacy da
wpakModal.newTabItemslato runtime JS. -
Note
Consolidata invalidazione cache discovery + content cache in un unico percorso (
WPAK_Modal_Templates::clear_cache). -
Note
Estesi gli hook di invalidazione cache agli eventi di lifecycle contenuti (
save_post,deleted_post, - Note Puliti rami legacy residui nel salvataggio template modal per usare solo invalidazione centralizzata.
v1.1.0 2026-02-18
- Note La deduplica prerender ora usa esclusivamente la URL normalizzata come chiave.
- Note URL modal duplicate su piu voci menu vengono prerenderizzate una sola volta.
-
Note
Aggiornata la cache discovery pagine modal alla chiave
wpak_modal_pages_v2. - Note Introdotta cache contenuto prerender per URL (transient dedicati per contenuto estratto/renderizzato).
-
Note
Nuovo filtro
wpak_modal_content_cache_ttlcon default900secondi. -
Note
Nuovo filtro
wpak_modal_enable_internal_http_fallbackcon defaultfalse. -
Note
Risoluzione contenuti modal ora preferisce sempre
page_id/url_to_postid. - Note Fallback HTTP interno eseguito solo se esplicitamente abilitato via filtro.
- Note In assenza di fallback HTTP abilitato, il contenuto non risolto viene saltato senza fetch interno.
v1.0.0 2026-02-18
-
Note
Introdotto
includes/class-modal-config-resolver.phpcome resolver unico configurazione modal. -
Note
Eliminata la duplicazione della logica
get_modal_configtra frontend e prerender. -
Note
Aggiunto registry runtime modal localizzato in JS (
wpakModal.registry+wpakModal.modalIndex) connewTabItems -
Note
Ridotti gli attributi modal sui link al set minimo:
data-wpak-modal,data-wpak-link-behavior,data-modal-key, -
Note
Rimosso il trasferimento massivo di
data-modal-*direttamente sui link pagina. -
Note
Conservato fallback robusto no-JS:
hrefreale invariato per navigazione normale. -
Note
Refactor di
assets/js/modal.jsper lavorare solo sui container menu (nav,.menu,.wp-block-navigation, - Note Rimossa la dipendenza primaria dal vecchio scan globale di tutti i link pagina.
- Note Binding click modal limitato a trigger espliciti in scope menu, con guard e fallback navigazione se mancano
v0.0.10 2026-02-17
-
Note
Frontend assets modal (
assets/js/modal.jseassets/css/frontend.css) ora vengono caricati solo quando nella pagina -
Note
Introdotto filtro
wpak_menu_should_enqueue_frontend_assetsper override del comportamento di auto-detection. - Note Footer modal markup e prerender vengono saltati nelle pagine senza trigger modal effettivi.
-
Note
Introdotta sorgente unica per attributi
data-modal-*tramite helper dedicato riusato da link e prerender. - Note Eliminata duplicazione della configurazione modal tra attributi link e attributi del prerender.
- Note Aggiunta cache persistente (object cache + transient) per discovery delle pagine modal con invalidazione su update
-
Note
modal.jsusa log debug solo con?wpak_modal_debug=1(nessunconsole.logrumoroso in produzione). - Note Aggiunto early return quando non esistono trigger modal effettivi nella pagina.
-
Note
MutationObserverora parte solo quando necessario, riducendo overhead. -
Note
Ridotte riapplicazioni ridondanti di
applyMenuBehaviorscon scheduling dedicato. -
Note
Aggiunto marcatore comportamento link (
data-wpak-link-behavior) per evitare conversioni accidentali dei link
v0.0.9 2026-02-11
- Note I link modal mantengono ora l'href reale per garantire fallback sicuro alla navigazione normale.
-
Note
Consolidata la gestione link
same/new/modalper ridurre riscritture duplicate lato frontend. -
Note
Ridotto l'impatto del
MutationObserverglobale, con riapplicazione comportamenti solo quando serve. -
Note
Introdotti nuovi attributi link modal:
data-modal-runtime-modeedata-modal-fallback-url. -
Note
Aggiunta modalità contenuto
runtime_modecon supportoprerender(default) elive(iframe). -
Note
Aggiunti i nuovi meta
_wpak_tpl_runtime_mode(template) e_wpak_modal_runtime_mode(override menu item). -
Note
In modalità
liveviene emesso l'evento frontendwpak:modal:content:loadedcon payload{ url, mode }. -
Note
Il prerender ora salta correttamente i contenuti impostati su
live. -
Note
Rimosso fallback HTTP debole con
sslverify => falsee riuso della validazione URL interna. - Note Allineata l'anteprima admin alla struttura reale della modal (footer dedicato e layout header aggiornato).
- Note Aggiunte validazioni di salvataggio per i campi responsive e runtime per evitare configurazioni incoerenti.
- Note Pulizia CSS frontend: rimosse regole mobile/drawer duplicate in conflitto con breakpoint dinamico.
-
Note
Corretto selettore typo su
menu-onlye aggiunto stile dedicato per contenutoliveiframe.
v0.0.8 2026-02-02
- New Live license validation on key input with green/red status indicator.
v0.0.7 2026-02-02
- New License settings page with license key input.
- New License status check on save with status summary.
v0.0.6 2026-02-02
- New License data provider for Deploy2WP (global licensing server support).
v0.0.5 2026-02-01
- Change Aligned admin UI colors with the unified Updater style tokens.
v0.0.4 2026-01-31
- Change Maintenance version bump.
v0.0.3 2026-01-31
- Change Admin notices now relocate below the page header on Menu Conditions screens.
v0.0.2 2026-01-28
- Fix Version bump for testing release pipeline.
Latest
v1.2.0
v1.2.0 2026-04-22
- Change [i18n] Full linguistic audit — rewrote all admin-facing Italian source strings in English. Previous releases shipped with mixed Italian/English source (msgid) across metabox, SEO Opportunities, Content Audit Pro, Onboarding Wizard, Internal Link Graph and 404 Monitor. Sites running WordPress in English had no translation file to fall back to and displayed the raw Italian labels — the source is now canonical English and follows the standard WordPress convention for distributable plugins
-
Change
[i18n]
Italian users preserved — a shipped
wpak-seo-it_IT.po/.momaps the 79 rewritten English msgids back to their original Italian labels, so sites running WordPress init_ITrender exactly as before -
New
[i18n]
First
wpak-seo.potgenerated from the canonical English source (636 unique strings) — enables community translations for other locales -
Fix
[JS]
Replaced the 5 hardcoded Italian strings in
assets/js/admin-seo.js(Ottimo,Ottimale,Quasi al limite…,Critico,Suggerimenti dal grafo link interno…) with English equivalents so JS-rendered UI is consistent with the PHP labels - Note Scope: No behaviour, no markup classes, no meta keys, no option names, no REST routes, no stored data. Rolling back to 1.1.4 leaves the DB schema identical — only visible labels change
v1.1.4 2026-04-21
- Fix [Updater SDK] Update-check cache lowered from 12h → 1h so new releases pushed on the update server reach this plugin within the hour
-
New
[Updater SDK]
Honors
?force-check=1onwp-admin/update-core.phpfor immediate refresh; newwpak_updater_cache_ttlandwpak_updater_force_refreshfilters
v1.1.3 2026-04-21
- Change Declared compatibility with WordPress 6.9.4 — removes the "not tested with your current version of WordPress" warning in the plugin details modal
Show 33 older versions
v1.1.2 2026-04-21
-
Fix
[Social sharing]
Link previews (Telegram, Facebook, X, LinkedIn, Slack) no longer show raw shortcode text in the description —
[wpak_wiki],[wpak_changelog]and other shortcodes are now stripped before the auto-excerpt is built -
Fix
[Social sharing]
Gutenberg block markers (
<!-- wp:paragraph -->) also stripped from auto-generated OG/Twitter/Schema descriptions
v1.1.1 2026-04-21
- Change Release notes adopt the new public/internal tag format — cleaner, user-oriented entries on the public changelog
v1.1.0 2026-04-20
- Change [Admin] Unified WpAgencyKit header design adopted across every SEO admin page (logo + plugin name + page title with icon + subtitle + brand links)
v1.0.7 2026-04-20
- Fix [Admin] Header logo rendered at natural size (~250px) on some pages — corrected CSS rule
v1.0.6 2026-04-20
- New [Admin] Official plugin logo in every SEO admin page header
v1.0.5 2026-04-18
-
Fix
[Readme]
Stable tagsynced with plugin header version
v1.0.4 2026-04-18
-
Fix
[Critical]
Fatal error —
declare(strict_types=1)must precede theABSPATHguard
v1.0.3 2026-04-18
-
Fix
Plugin Check compliance: synced
readme.txtheaders (Requires at least: 6.0,Tested up to: 6.9). -
Fix
Added missing
languages/directory; removed deprecatedload_plugin_textdomain()call. -
Fix
Added
/* translators: */comments to all i18n strings with printf placeholders. -
Fix
Upgraded unordered
%s/%splaceholders to%1$s/%2$sin admin notice strings and metabox. -
Fix
Added
ABSPATHguard tosdk/class-wpak-updater.php. - Fix Replaced class-constant nonce check with literal strings for PHPCS-traceable nonce verification.
-
Fix
Applied
wp_unslash()andsanitize_*()to all$_POST,$_GET,$_SERVER, and$_FILESaccesses. -
Fix
Replaced
wp_redirect()withwp_safe_redirect()plusallowed_redirect_hostsfilter in redirect manager. -
Fix
Added object cache (
wp_cache_get/set) to sitemapget_post_count()andget_last_modified()queries. -
Fix
Converted all heredoc prompt strings in
class-openai.phptoimplode()arrays. -
Fix
Prefixed global variables in
uninstall.phpwithwpak_seo_prefix. -
Fix
Added
phpcs:ignoreannotations for justified direct DB queries, pre-escaped output, and private-helper nonce patterns.
v1.0.2 2026-04-17
- Note Official stable release of the 1.0 line.
v1.0.1 2026-04-17
- Note First official stable release of the 1.0 line, consolidating the beta cycle (licensing lifecycle hardening, masked license key input, deduplicated admin notices, refreshed license state caching, local in-process licensing fallback, and assorted SEO settings polish).
v0.8.3 2026-02-25
- Change Aligned admin CSS to Deploy2WP Material Design 5 design system: expanded design tokens (spacing, typography, radius),
v0.8.2 2026-02-19
-
Security
Hardened OpenAI AJAX endpoints (
generate,analyze,suggest links,estimate) with per-post capability checks -
Security
Hardened GSC AJAX endpoint (
wpak_seo_get_gsc_data) with per-post capability check (edit_post) on the requested -
Security
Sitemap ping now enforces secure TLS verification with filterable override (
wpak_seo_sitemap_ping_sslverify, default - Security Hardened settings/wizard secret handling: OpenAI key and GSC JSON are not rendered in clear, empty input keeps
- Note Internal link graph suggestions no longer trigger synchronous snapshot rebuild from editor/runtime calls when snapshot
-
Note
Added snapshot TTL guard (
wpak_seo_internal_link_graph_snapshot_ttl, default21600) and lock-based async refresh -
Note
Added shared redirect normalization utility (
WPAK_SEO_Redirect_Utils) and reused it in both Technical Redirects and -
Note
Kept redirect option compatibility (
wpak_seo_redirects) with canonical + legacy key handling unchanged.
v0.8.1 2026-02-18
-
Change
Export/import settings now exclude sensitive credentials (
openai_key,gsc_json) and include explicit metadata flag - Change Import flow remains backward-compatible with legacy export files, while ignoring legacy credential fields instead of
- Change Settings UI copy for Export/Import now clearly states that credentials are not exported and must be re-entered
-
Change
Default
robots.txttemplate is less aggressive: removed default blocks for/wp-content/plugins/and global - Security Hardened GSC error rendering in admin JS by switching to safe text-based output for error messages.
-
Fix
Uninstall cleanup now also removes:
wpak_seo_license_key,wpak_seo_license_state,wpak_seo_gsc_mock_mode,
v0.8.0 2026-02-17
- New Premium onboarding wizard Setup Guidato SEO with 6 deterministic steps:
- New License
- New OpenAI
- New GSC + Mock
- New Default SEO
- New Technical checklist
- New Complete
-
New
New option
wpak_seo_onboarding_donefor one-time auto-open with manual reopen from action bar. - New New secure AJAX endpoints:
-
New
wp_ajax_wpak_seo_wizard_save_step -
New
wp_ajax_wpak_seo_wizard_complete -
Change
Added shared admin UI helper (
WPAK_SEO_Admin_UI) and applied premium shell/header/actions/notices across SEO admin -
Change
Centralized admin interactions in
assets/js/admin-seo.js(wizard, redirects, robots reset, 404 actions, audit quick -
Change
Centralized admin design system in
assets/css/admin.csswith reusablegup-*components and page-specific SEO - Change Migrated settings, sitemap, and internal link graph pages to shared UI and removed inline CSS/JS.
-
Change
Fixed admin assets loading across all SEO submenu hooks (
wpagencykit-seo_page_*and legacy hook prefix). - Change Wizard auto-open is now limited to the Settings page, with manual open available from action bars in all SEO pages.
-
Security
Wizard AJAX flow enforces nonce + capability checks (
manage_options) and server-side sanitization per step.
v0.7.0 2026-02-17
- Change Premium design system rollout for SEO backend pages with:
- Change shared header/action bar/cards/table wrappers
- Change notice relocation below page header
- Change loading states for form submits/actions
- Change Removal of inline CSS/JS from migrated SEO admin pages in favor of centralized assets.
v0.6.0 2026-02-17
- New Premium feature Internal Link Graph + Orphan Finder:
-
New
graph snapshot option
wpak_seo_internal_link_graph - New admin page Internal Link Graph under WpAgencyKit SEO
- New orphan pages (0 inbound), low-inbound pages, and source -> target suggestions with priority
- New WP-CLI commands:
-
New
wp wpak-seo links rebuild -
New
wp wpak-seo links report --format=json - New Metabox integration with top deterministic internal-link suggestions from graph for current content.
- Change Internal link suggestions endpoint now prioritizes graph-based deterministic suggestions, with AI fallback only when
v0.5.0 2026-02-17
- New Premium preview block in metabox with SERP Desktop + Mobile cards driven by live field values.
- New Pixel width calculation (real text measurement) for:
- New SEO title
- New Meta description
- New Visual status badges for each field: Ottimale / Warning / Critico.
- New Dedicated social preview cards:
- New OpenGraph card
- New Twitter card
- Change Social preview now applies deterministic fallback chain in real time (title, description, image) matching frontend
- Change Preview updates instantly while typing and while selecting images from media library.
- Change Frontend SEO meta/social output hooks are now reliably loaded together with metabox logic.
v0.4.0 2026-02-17
- New New premium metabox tab Schema Pro with visual builder (no code required) for:
-
New
FAQPage -
New
HowTo -
New
Product -
New
Event -
New
LocalBusiness -
New
Schema Pro configuration is stored in one JSON meta field:
_wpak_seo_schema_pro. - New Server-side validation for required fields with clear editor feedback messages.
- Change Frontend schema output now prioritizes valid Schema Pro JSON-LD when present.
- Change Base schema generation is kept as fallback when Schema Pro is missing or invalid.
- Change Duplicate/conflicting primary schema output is prevented when Schema Pro is active.
v0.3.0 2026-02-17
- New New premium admin page SEO Opportunities under WpAgencyKit SEO with URL-level opportunities list, metrics,
- New Rule-based priority engine (A/B/C/D) using clicks, impressions, CTR, and average position.
- New Meta quick actions: Generate variants title/description and Apply variant.
- New Deterministic local fallback templates for variants when OpenAI API key is missing (or AI call fails).
- New Dedicated opportunities cache via transient and Refresh Opportunities action.
-
Change
Google Search Console provider now supports deterministic MOCK MODE with option
wpak_seo_gsc_mock_modeand - Change GSC URL/site data endpoints now work in mock mode without real credentials.
-
Security
All SEO Opportunities AJAX endpoints enforce nonce + capability checks (
manage_optionsandedit_postwhere content
v0.2.0 2026-02-17
- New New admin page Content Audit Pro under WpAgencyKit SEO with centralized audit table for post/page.
- New Deterministic SEO scoring (0-100) with statuses: Good, OK, Needs work.
- New Action Plan column with 2-3 concrete prioritized actions (Alta/Media/Bassa).
- New Filters for post type, score status, and "solo contenuti con problemi".
- New AJAX Quick Fix action to fill missing SEO title/meta description without overwriting existing values.
-
Security
Quick Fix AJAX endpoint includes strict nonce validation and capability checks (
manage_options+edit_post).
v0.1.3 2026-02-17
-
Fix
404 Monitor now stores redirects with canonical keys (
id,from,to,type,active,created) so they are -
Fix
Redirect reader now normalizes previous-format records in-memory (
source/destination/enabled) to canonical format - Fix Technical redirect module is now initialized on frontend too, so redirects are executed during frontend requests.
v0.1.2 2026-02-11
- New GDPR communication templates with placeholders for:
- New public privacy policy notice
- New internal editorial team notice
- New client contract clause
- New breach communication checklist
- New Official support links (GDPR, EDPB, Garante Privacy, OpenAI DPA/sub-processors/data controls) in plugin readme.
v0.1.1 2026-02-10
- Change Documentation expanded with AI Premium setup guide, precision mode explanation, FAQ, and glossary.
v0.1.0 2026-02-10
- New AI Premium global profile settings (precision mode, output count, cache TTL, locale adaptation,
- New Post-level “AI Premium Controls” override panel inside SEO metabox.
- New Draft-aware AI generation: requests now include live editor title/content (Gutenberg + Classic fallback).
- New New AI usage estimate endpoint with tokens/cost preview in metabox.
-
New
Regenerate buttons for title/description generation with
force_refresh. -
Change
AI generation now uses precision modes (
fast,balanced,deep) with context sampling in deep mode. - Change Cache strategy upgraded to dynamic TTL from settings (default 20 minutes) and context-aware cache keys.
- Change AI prompts now include editorial profile, locale adaptation hints, and anti-repetition seed.
- Change Suggestion output is now premium-focused and capped to max 3 variants with dedupe + one retry top-up.
-
Change
AI AJAX responses now include metadata (
cache_hit,precision_mode,content_words_used,token_estimate,
v0.0.10 2026-02-02
- New Live license validation on key input with green/red status indicator.
v0.0.9 2026-02-02
- New License key field in settings to store the bundle key.
- New License status check on save with status summary.
v0.0.8 2026-02-02
- New License data provider for Deploy2WP (global licensing server support).
v0.0.7 2026-02-01
- Change Privacy & Data copy now explicitly mentions AI/OpenAI usage for SEO suggestions.
v0.0.6 2026-02-01
- New Privacy & Data section with data retention toggle.
- New Uninstall cleanup when data retention is disabled.
v0.0.5 2026-02-01
- Change Aligned admin UI colors with the unified Updater style tokens.
- Change Updated inline admin styles for settings, technical, sitemap, GSC, and 404 pages to use shared tokens.
v0.0.4 2026-01-31
- Change Maintenance version bump.
v0.0.3 2026-01-31
- Change Admin notices now relocate below the page header on SEO admin pages.
v0.0.2 2026-01-28
- Fix Version bump for testing release pipeline.
Latest
v1.2.1
v1.2.1 2026-04-22
-
Fix
[Compat]
Prevented a site-wide fatal error in
WPAKTranslate\Router::filterHomeUrl()when third-party callers forward a string as the fourthhome_urlhook argument
v1.2.0 2026-04-22
-
New
[i18n]
English-first msgid convention — 3 Italian hardcoded JS toasts (
Nessuna modifica da salvare,Salvato con avvisi…,Salvato con successo) moved towpakTranslateAdmin.stringsand wired through__()inincludes/Plugin.php -
New
[i18n]
Plugin now ships
.po/.mofor 6 locales: it_IT, de_DE, es_ES, fr_FR, pt_BR, pt_PT (previously none were shipped) -
New
[i18n]
Regenerated
languages/wpak-translate.pot(986 unique msgids) - Change [Compat] Tested up to WordPress 6.9.4
-
Note
Bundled: [Updater SDK] Update-check cache lowered from 12h → 1h; honors
?force-check=1onwp-admin/update-core.php; newwpak_updater_cache_ttlandwpak_updater_force_refreshfilters (from pending 1.1.3 SDK work)
v1.1.3 2026-04-21
- Fix [Updater SDK] Update-check cache lowered from 12h → 1h so new releases pushed on the update server reach this plugin within the hour
-
New
[Updater SDK]
Honors
?force-check=1onwp-admin/update-core.phpfor immediate refresh; newwpak_updater_cache_ttlandwpak_updater_force_refreshfilters
Show 42 older versions
v1.1.2 2026-04-21
- Change Declared compatibility with WordPress 6.9.4 — removes the "not tested with your current version of WordPress" warning in the plugin details modal
v1.1.1 2026-04-21
- Change Release notes adopt the new public/internal tag format — cleaner, user-oriented entries on the public changelog
v1.1.0 2026-04-20
- Change [Admin] Unified WpAgencyKit header design adopted across every Translate admin page (Settings, Dashboard, Content, Memory, Glossary, Taxonomy, Site Options, Menu, Widget, Import/Export, Strings, Themify)
v1.0.10 2026-04-20
-
Enhance
Smaller release ZIP — dev-only files (
vendor/~21 MB,tests/,composer.json/composer.lock,phpunit.xml,patchwork.json) are no longer shipped. No runtime impact — plugin declares no runtime Composer dependencies
v1.0.9 2026-04-20
- Fix [Admin] Header logo rendered too large on some environments
v1.0.8 2026-04-20
- New [Admin] Official plugin logo in every Translate admin page header (12 pages: Settings, Dashboard, Content, Memory, Glossary, Taxonomy, Site Options, Menu, Widget, Import/Export, Strings, Themify)
v1.0.7 2026-04-18
-
Fix
[Switcher]
Language switcher emitting
http://links on HTTPS sites (mixed-content warnings after SSL migration / reverse proxy / Cloudflare flexible SSL)
v1.0.6 2026-04-18
-
Fix
Plugin Check compliance (round 4): Wrapped multi-line SQL assignments with
phpcs:disable/phpcs:enableblocks instead of a singlephpcs:ignore. PHPCS reportsInterpolatedNotPreparedon each line of a multi-line string that contains an interpolated variable (e.g., a second line withFROM {$table}), and single-line ignores only cover one line. Applied to 20 statements acrossContentFilter,TranslationMemory,Activator,ImportExportService, andTranslationRepository.
v1.0.5 2026-04-18
-
Fix
Plugin Check compliance (round 3): Resolved remaining
InterpolatedNotPreparedand nonce/input sanitization warnings. -
Fix
Moved
phpcs:ignore InterpolatedNotPreparedannotations onto the line immediately preceding each multiline SQL string literal (79 locations across repositories and integrations). PHPCS reports the warning on the string literal line, not on the outer$wpdb->get_row/query()wrapper — previous annotations were on the wrapper and didn't suppress the warning. -
Fix
Converted
phpcs:ignoretophpcs:disable/phpcs:enableblocks for multi-line nonce-verificationifstatements (PostMetabox, TermMetabox, ImportExportPage × 2, GlossaryTranslationPage, UMP_Email_Integration) — singlephpcs:ignorewas covering only the first line of the multi-line condition. -
Fix
Added missing
wp_unslash()on$_POST['wpak_translate_email_translations']array read before per-entry sanitization.
v1.0.4 2026-04-18
- Fix Plugin Check compliance (round 2): Resolved remaining errors and warnings from the second Plugin Check report.
-
Fix
Moved
translators:comment inline with__()call inMenuTranslationPage.php(PHPCS requires the comment on the line immediately above__(), not above the outersprintf()). -
Fix
Added
phpcs:ignore EscapeOutput.OutputNotEscapedtoSwitcherStyles.phpinline CSS echo (CSS built from controlled plugin options andwp_strip_all_tags'd). -
Fix
Added
phpcs:ignore PluginCheck.CodeAnalysis.Updatertosdk/class-wpak-updater.php(licensed plugin, not WP.org hosted). -
Fix
Fixed
uninstall.php%iidentifier placeholder warning and addedDirectQuery/NoCachingphpcs:ignore to DeepL transients cleanup. -
Fix
Updated
readme.txtStable tag to match main file version. -
Fix
Bulk
phpcs:ignoreadditions to all remaining$wpdbcalls (DirectQuery, NoCaching, InterpolatedNotPrepared, UnescapedDBParameter) in repositories:TranslationMemory,TranslationRepository,StringRepository,Activator,BatchJobRepository,TranslationLogRepository,ImportExportService, and integrations. -
Fix
Added
wp_unslash()+ sanitization wrappers to all remaining$_POST/$_SERVER/$_COOKIEaccesses; addedphpcs:ignore NonceVerification.Recommendedto read-only page filter params.
v1.0.3 2026-04-18
- Fix Plugin Check compliance: Resolved all Plugin Check errors and warnings to meet WordPress.org standards.
-
Fix
Wrapped all unescaped output with
esc_html(),esc_attr(),wp_kses_post(), or(int)casts across admin pages, integrations, and frontend. -
Fix
Added
translators:comments to allsprintf()/printf()calls with placeholders; switched to ordered%1$d/%2$dformat where required. -
Fix
Replaced
date()withgmdate()(7 occurrences),parse_url()withwp_parse_url()(5 occurrences), andwp_get_sidebars_widgets()withget_option('sidebars_widgets'). -
Fix
Added
phpcs:ignore NonceVerification.Recommendedto all read-only$_GETpage-filter accesses; addedwp_unslash()before sanitization on superglobals. -
Fix
Gated all
error_log()andprint_r()calls behindWP_DEBUG; addedphpcs:ignoreto remaining guarded calls. -
Fix
Added
phpcs:ignoreannotations to all prepared SQL queries using$wpdb->prefix-derived table names; addedphpcs:ignorefor IN-clause and pre-prepared$querypatterns. -
Fix
Removed
load_plugin_textdomain()call (auto-loaded since WP 4.6). -
Fix
Prefixed global variables in
uninstall.php($wpak_translate_tables,$wpak_translate_table_name). -
Fix
Added
phpcs:ignoreforactive_pluginscore filter and@set_time_limit()in batch import handlers.
v1.0.2 2026-04-18
-
Fix
Prevented a site-wide fatal error (
ArgumentCountErrorinWPAK_Cookies_Integration::handle_translate_string) triggered duringinitwhen plugins such aswoo-checkout-field-editor-procall thewpml_translate_single_stringfilter with the original 3-argument WPML signature. The$localeparameter is now optional and falls back todetermine_locale()when the caller does not supply it, which restored the frontend and admin on sites combining WooCommerce Blocks Checkout with the Checkout Field Editor Pro plugin.
v1.0.1 2026-04-17
- Note Official stable release consolidating the 1.0.1-beta cycle.
v1.0.0 2026-04-02
-
Fix
WooCommerce checkout -> order-received flow broken when Translate is active: The router was still applying browser-detection, translated-slug recovery, and canonical redirects on WooCommerce transactional URLs. Thank-you and payment-return requests such as
/checkout/order-received/.../?key=...must preserve the exact path and query string generated by WooCommerce and payment gateways. Added a dedicated transactional-request guard inRouterand skipped all three redirect layers for checkout, cart, my-account, order-pay, order-received, and WC API/AJAX flows.
v0.2.8 2026-02-25
- Fix Fixed release script not committing changes before tagging. This ensures all the Deploy2WP Material Design 5 UI
v0.2.7 2026-02-25
-
Fix
Fixed critical CSS variable typo (
--wpak-translate-primary-bginstead of--wpak-translate-bg-primary) that -
Fix
Added comprehensive Material Design 5 UI overrides for
.widefattables (Settings language list), removing old border -
Fix
Removed legacy boxing and padding on
.wpak-translate-settings-wrapstructure which caused form inputs to bunch up
v0.2.6 2026-02-25
-
Fix
Fixed native WordPress UI elements (
.form-table,.postbox,.nav-tab) leaking their old gray borders and shadows.
v0.2.5 2026-02-25### Changed
- Note Minor fixes and updates for new Deploy2WP backend design UI.
v0.2.4 2026-02-25### Fixed
-
Note
Fixed browser caching issue for newly applied Deploy2WP Material Design 5 UI. Added
filemtimecache busting to
v0.2.3 2026-02-25### Changed
- Note Aligned admin pages HTML structure to the Deploy2WP Material Design 5 design system. Replaced custom headers with the
v0.2.2 2026-02-25### Changed
-
Note
Removed
vendor/directory (21MB, dev-only dependencies) from git tracking. Regenerate withcomposer installwhen - Note Aligned admin CSS to Deploy2WP Material Design 5 design system: removed all shadows, expanded design tokens, page
-
Note
Aligned
admin-premium.cssprimary color to Deploy2WP blue (#1a73e8), set elevation tokens tonone.
v0.2.1 2026-02-25
- Change Aligned admin CSS to Deploy2WP Material Design 5 design system: removed all shadows from postboxes, cards, inputs, and
-
Change
Aligned
admin-premium.cssprimary color from WP Blue (#2271b1) to Deploy2WP blue (#1a73e8), set all elevation tokens
v0.2.0 2026-02-23
- New Automated Testing Suite (PestPHP) — Added modern unit testing framework with Brain\Monkey for mocking WordPress
-
New
Strict Type Safety (PHP 8.0+) — Implemented
declare(strict_types=1);across the entire plugin core (53 files). -
New
Complete scalar type hinting for all methods, functions, and properties (
string,int,bool,array,void, - Change Type Refactoring — Hardened input/output boundaries across all Architectural Layers (Domain, App, UI,
-
Change
Improved memory safety and null-handling inside
TranslationRepositoryandStringRepository. - Change Hardened external provider API response typing (OpenAI, DeepL, Claude, Gemini, OpenRouter) to prevent silent failures
-
Change
Restructured
Router::detectLanguageFromRequest()and fallback URL resolution to provide resilient URL handling on - Fix Fixed uncaught exception hazards with native WordPress translation/routing arrays by enforcing accurate struct
-
Fix
Patched isolated edge cases where
TranslationServicecould incorrectly cast IDs due to implicit type coercion.
v0.1.0 2026-02-23
-
New
OpenAI Batch API — Massive asynchronous translation via OpenAI
/v1/batchesendpoint (50% cost reduction, 24h -
New
New
includes/Batch/namespace:BatchJobManager,BatchSegmenter,BatchFileBuilder,OpenAIBatchClient, -
New
New DB table
wpak_translate_batch_jobsfor campaign tracking. -
New
WP-Cron polling every 5 minutes (
wpak_translate_batch_poll) with custom schedule (wpak_batch_5min). -
New
REST routes:
POST /batch/launch,GET /batch/status,POST /batch/cancel,POST /batch/estimate. - New Dashboard UI card "Massive Translation" with real-time progress polling, per-segment breakdown, and cancel action.
- New Automatic content segmentation by type (Site Options, Menus, Taxonomies, Posts, Strings) when exceeding 5000 strings.
- New Provider Settings Alignment — Full parity across all 5 AI providers (Claude, Gemini, OpenRouter now match
- New Temperature control (0–2) for Claude, Gemini, OpenRouter.
- New Max Tokens per response (100–16384) for all AI providers including OpenAI (was hardcoded).
-
New
Custom Translation Prompt per provider with
{SOURCE_LANG}/{TARGET_LANG}placeholders and fallback to OpenAI - New Enable/Disable toggle for Claude, Gemini, OpenRouter (consistent with DeepL/OpenAI pattern).
- New Cost per 1K tokens in Costs section for Claude, Gemini, OpenRouter.
-
New
Added WP-Cron daily job (
wpak_translate_daily_cleanup) to automatically purge translation logs older than 30 days. -
Change
Replaced computationally heavy
O(N)array_searchtracking in LRU caches (StringService,ContentFilter) with -
Change
Wrapped DB-heavy URL fallback resolution (
Router::resolvePathFallback) in transient cache to mitigate CPU/DB spikes -
Change
Wrapped explicit outputs in
esc_attr()acrossSiteOptionsPage,WidgetTranslationPage,UIKit, -
Change
Provider-specific prompt resolution in
OpenAIProvider::getTranslationPromptTemplate(): checks -
Change
Provider-specific max_tokens cap in
OpenAIProvider::calculateBatchMaxTokens(). -
Change
ProviderFactorynow requires explicittranslation_enabledtoggle for Claude, Gemini, OpenRouter. - Change Plugin requirements bumped to PHP 8.0 and WordPress 6.0.
v0.0.19 2026-02-19
- Change Reduced String Translations admin batch query load:
-
Change
visible-only ID lookup now uses bulk fetch (
find_strings_by_ids) instead of per-rowget_stringcalls -
Change
batch save now uses bulk upsert (
set_translations_bulk/upsert_translations_bulk) with chunking -
Change
cost estimate now uses a single aggregate query (
SUM(CHAR_LENGTH(original))) for selected IDs - Change Reduced write-path query duplication:
-
Change
TranslationRepository::save()now uses single-query UPSERT onunique_translation -
Change
TranslationMemory::add()now uses single-query UPSERT onunique_tm_entrywith atomic `usage_count = usage_count + -
Change
Added request-level table-exists cache helpers in
TranslationRepositoryandTranslationMemoryfor legacy `SHOW -
Change
Removed duplicate pre-save lookup in import flow (
ImportExportService), preserving import behavior and payloads.
v0.0.18 2026-02-18
- New Reintroduced translated slug stack for content workflow:
- New post/page slug save helpers in service layer
- New translated slug lookup helpers in repository
- New translated slug URL generation and request resolution in router
- New translated slug save support in Content Translation editor flow
- New Added OpenAI cache controls in Settings:
- New cache signature tracking on AI-relevant config
- New automatic cache revision bump on relevant setting changes
- New manual “Clear OpenAI cache” admin action with nonce protection
-
New
Added language configuration self-heal in plugin bootstrap (
admin_init) using normalized language schema. - Change Upgraded OpenAI provider backend to advanced batch/refine implementation (chunking, fallback handling, and batch stats
- Change Upgraded translation service backend to advanced text-batch and slang-batch handlers, including REST batch refine
-
Change
Kept compatibility bridges in repository for existing callers (
getForObjectsMap,
v0.0.17 2026-02-18
-
New
Added new Content Translation UI shell with modern editor layout (
wpak-ct-*), activity panel, advanced tool cards, - New Added AJAX batch handlers for Content Translation rows:
-
New
wpak_translate_content_translate_batch -
New
wpak_translate_content_refine_batch - New Added REST batch route for slang refinement:
-
New
POST /wpak-translate/v1/refine/openai-slang-batch - New Added admin JS runtime config for batch processing:
-
New
batchChunkSize -
New
batchRequestTimeout -
New
Added admin helper
runStringBatchTranslationfor chunked Strings page execution with live progress. -
Change
Updated Themify content extraction to generate stable structural keys and deduplicate rows by
stable_keybefore - Change Updated Strings page batch AJAX response shape to include stable fields:
-
Change
count -
Change
failed -
Change
skipped -
Change
results -
Change
stats - Change Updated Strings page frontend flow to use chunked helper when available, with legacy fallback preserved.
- Change Kept slug/routing translated URL system out of scope for this release (no frontend rewrite/slug behavior changes).
- Note Existing single-row save/translate flows remain available.
- Note Existing admin pages outside Content Translation keep legacy behavior.
v0.0.16 2026-02-18
-
Fix
Fixed taxonomy translation stability on translated archive URLs by hardening
get_termhandling with recursion depth -
Fix
Simplified
shouldTranslate()to a lightweight current/default language check with request-level memoization, - Fix Reduced frontend translation overhead with request-level caching for language/state checks and post-level
-
Fix
Added performance gating for aggressive fallback hooks (
the_post,loop_start, early/late singular fallbacks) so - Fix Optimized Themify DOM fallback by skipping auto mode when candidate strings exceed threshold and by adding
-
Change
Added runtime kill switch for taxonomy object translation filter:
wpak_translate_enable_get_term_filter(default -
Change
Added runtime toggle for aggressive loop hooks:
wpak_translate_enable_aggressive_loop_hooks(defaultfalse). - Change Reduced debug/logging overhead in frontend router/content filtering paths by deferring expensive debug payload
-
Change
Added frontend performance options in
wpak_translate_settings: -
Change
perf_mode(compat,balanced,max; defaultcompat) -
Change
themify_dom_fallback_mode(auto,force_on,force_off; defaultauto) -
Change
gettext_mode(default_only,theme_only,full,off; defaultdefault_only) -
Change
max_dom_translation_strings(default1200) - Change Added new WordPress filters:
-
Change
wpak_translate_perf_mode -
Change
wpak_translate_gettext_mode -
Change
wpak_translate_enable_themify_dom_fallback - Change Refined gettext behavior by mode:
-
Change
default_only: onlydefaultcore domain -
Change
theme_only: active theme and parent theme domains -
Change
full: existing behavior withwpak_translate_translatable_text_domains -
Change
off: disables frontend gettext translation -
Change
Disabled frontend string discovery in
balanced/maxmodes; preserved previous behavior incompat. - Change Optimized Themify integration loading strategy:
- Change first load page-specific strings via batch lookup
-
Change
keep global string fallback only in
compat - Change precompute sorted/normalized translation maps once per request
- Change Improved DOM observer runtime controls in JS:
- Change precompiled replace patterns
-
Change
mode-driven observation root (
document.bodyincompat, Themify root fallback inbalanced/max) -
Change
per-frame work limits (
maxNodesPerBatch,maxMsPerFrame) from localized config -
Change
Added idempotent DB performance index on
wpak_translate_translations: -
Change
idx_object_field_lang_object (object_type, field, language, object_id)
v0.0.15 2026-02-11
- Fix Content Translation delete action now removes only string translations scoped to the current post (no global
-
Fix
Added scoped repository deletion (
deleteStringTranslationsByObjectIds) and language normalization consistency for -
Fix
PHP 8.4 compatibility fix for
StringAdminPageconstructor nullable parameter. -
Change
Batch translation AJAX flows for Menu, Taxonomy, Widgets and Site Options now support chunked processing (
offset, - Change Admin batch frontend now processes chunked responses iteratively with live progress updates and partial-error
- Change OpenAI provider retry policy centralized and hardened for interactive admin requests: shorter timeout (45s), max
- Change Import/Export now respects selected bundles/object types, includes widget components in bundle mapping, and uses
-
Change
Added export guardrail (
wpak_translate_export_max_records, default 15000) to prevent oversized exports. -
Change
Reduced admin query load with bulk translation fetches (
getForObjectsMap) for Menu/Taxonomy/Widget pages and async -
Change
Added request-level cache for table existence checks in
TranslationRepository.
v0.0.14 2026-02-11
- Change Updated WordPress Privacy Policy guide text to a generic placeholder template for site owners (no vendor/user personal
- Change Added ready-to-use placeholder sections for both Privacy Policy and Cookie Policy inside
v0.0.13 2026-02-11
-
New
WordPress Privacy integration:
WpAgencyKit Translatenow adds ready-to-use GDPR text to the WordPress Privacy Policy -
New
Suggested policy text now covers: language cookie (
wpak_translate_lang, 30 days), external translation providers
v0.0.12 2026-02-11
-
Fix
Deferred translatable text-domain memoization until after
wp_loadedso late-registered
v0.0.11 2026-02-11
-
Fix
Prevented duplicate frontend hook registration by reusing a single
ContentFilterinstance for the language switcher -
Fix
Reduced
gettext/gettext_with_contextoverhead with request-level domain caching, O(1) domain lookups, and runtime - Fix Restricted String Discovery writes to admin-capable users by default, with a new override filter
-
Fix
Moved Themify preload timing from
initto earlywpto ensure the main query is ready before singular checks. - Fix Added debug-only Themify string cache hit/miss counters to improve performance diagnostics.
v0.0.10 2026-02-02
- New Live license validation on key input with green/red status indicator.
v0.0.9 2026-02-02
- New License key field in settings to store the bundle key.
- New License status check on save with status summary.
v0.0.8 2026-02-02
- New License data provider for Deploy2WP (global licensing server support).
v0.0.7 2026-02-01
- Change Unified remaining Translate admin pages/components with Deploy2WP palette (UI kit, strings, themify, WooCommerce,
- Change Updated default front-end switcher accent to #1a73e8 for consistency.
v0.0.6 2026-01-31
- Change Admin pages restyled to match the Deploy2WP (tokens, cards, buttons, inputs).
v0.0.5 2026-01-31
- Change Onboarding wizard restyled to match the Deploy2WP premium look.
v0.0.4 2026-01-31
- Change Maintenance version bump.
v0.0.3 2026-01-31
- Change Admin notices now relocate below the page header on Translate admin pages.
v0.0.2 2026-01-28
- Fix Version bump for testing release pipeline.
