Changelog
This page mirrors the changelog in the plugin's readme.txt. The two files are kept in lock-step - any release that ships from the plugin must update both files in the same change, with identical wording. If you find a discrepancy between this page and the readme.txt entry for the same version, treat the readme.txt entry as authoritative and please report it.
2.4.0
- New: Image source picker. Pick how each page's og:image is sourced - Auto-screenshot (the previous default), Featured image, Featured image with screenshot fallback, Custom image from your Media Library, or Off - per post from the block editor sidebar, and per content type from the Settings page. Featured and Custom modes do not consume your screenshot quota.
- New: top-level OG Images menu. Settings live under OG Images > Settings instead of the previous Settings > Dynamic OG Images path. New Dashboard sub-page shows plan and quota at a glance, plus recent activity, pending captures, and failed captures with reasons.
- New: bulk Image Source actions on the Posts and Pages list screens. Five variants - Auto-screenshot, Featured image, Featured image (with screenshot when missing), Off, and Reset to default - replacing the previous Enable / Disable / Reset trio.
- New: featured-image dimensions warning in the block editor sidebar. When the chosen Featured or Custom image is below 200x200 (the floor where major social platforms start skipping thumbnails), the sidebar flags it inline. No behaviour change, just a heads-up.
- Changed: cached screenshots are automatically cleaned up when no longer used. When a post's resolved Image source is no longer Auto-screenshot or Featured-with-fallback, the cached file is kept for a 14-day grace period and then deleted by a weekly background sweep. Flip back inside the grace window and the cache is preserved with no quota burn.
- Changed: screenshot quota is only used when the resolved Image source actually needs a screenshot. The daily refresh sweep, Regenerate All, post-update auto-regen, and the block editor Regenerate Now button all skip posts in Featured / Custom / Off modes (and Featured-with-fallback posts that already have a Featured image).
- Migrated: existing installs keep their previous Enable Sitewide setting on upgrade. Posts and Pages that were Enabled before 2.4.0 map to Auto-screenshot; Disabled maps to Off. Per-post overrides are preserved.
2.3.0
- Fixed: the Dynamic OG Image sidebar widget now appears on every public custom post type in the Premium build, not only the ones ticked under Settings > Custom post types. The override surfaces (sidebar widget, REST meta, bulk actions) work the same way Posts and Pages do - the sitewide tick controls automatic processing, but the per-post override capability is always available. Customers can now opt in individual items on a CPT (e.g. one specific Product) without having to enable the whole CPT for the sweep.
- Added: a dismissible notice when Page Generator Pro is detected on the same site. PGP-generated pages draw from the monthly screenshot quota along with hand-written content, which on large catalogues can exhaust the allowance silently. The notice links to a new capacity-planning guide covering post-type exclusions, refresh intervals, and per-page overrides for high-page-count sites.
2.2.1
- Refined: small layout polish on the Custom post types row of the Settings page - each available type now sits on its own line for legibility, matching the Posts and Pages checkboxes above.
2.2.0
- Changed: the "Enable sitewide" setting is now split into separate "for Posts" and "for Pages" checkboxes. Sites usually want to treat Posts (which often have featured images already) differently from Pages (bare landing pages where the screenshot is the differentiator); the split lets you opt one in and leave the other off. Existing sites are migrated automatically - whatever your previous "Enable sitewide" setting was, both new checkboxes inherit it on first load. Both still default to off on fresh installs so a new site never starts consuming quota before you have consciously opted in.
- Added: bulk actions on the standard Posts and Pages list screens (Bulk actions dropdown). Three actions: "Enable Dynamic OG image", "Disable Dynamic OG image", and "Reset Dynamic OG to default". Select any number of rows - including the full set produced by a built-in or third-party list filter, such as a category, tag, or Page Generator Pro's filter - and apply the action across all of them in one click. Drives the same per-post override the OG Image panel in the block editor writes to, so the two stay in sync.
- Added (Premium): support for additional public custom post types. A new "Custom post types (Premium)" row in the Enable-sitewide section lists every public custom post type registered on your site (WooCommerce products appear automatically when WooCommerce is active). Tick a type to bring it into scope: the block editor sidebar, the bulk actions, the daily refresh sweep, and the Regenerate All button all extend to it immediately.
2.1.3
- Fixed: on Yoast SEO sites where the page already had its own OG image (a featured image or a Yoast-set Open Graph image), the 2.1.2 fix added a second og:image tag instead of replacing the existing one. Pages ended up with two og:image meta tags pointing at the same screenshot URL but reporting different width/height values, which is invalid Open Graph markup and confuses social-preview scrapers. The plugin now adds the screenshot to Yoast's image collection only when Yoast has no image of its own, and otherwise rewrites the existing one. Exactly one og:image tag is emitted per page in either case.
- Fixed: og:image:width / og:image:height / og:image:type tags now consistently report 1200, 630, and image/webp under Yoast (matching the actual screenshot dimensions and format). Previously, when Yoast had its own image with different dimensions, those dimensions were left in place after the URL was rewritten to ours.
2.1.2
- Fixed (critical): the og:image tag was missing entirely on sites using Yoast SEO when no other og:image was set for the page. Yoast's rewrite-only filter only modifies an existing og:image and does nothing when no image is present, so on pages with no featured image and no Yoast default the og:image tag did not ship at all. Result: Facebook, LinkedIn, Slack, WhatsApp and Discord previews showed no image even though the screenshot existed. The plugin now adds the screenshot to Yoast's internal image collection directly so the tag is guaranteed to ship. Rank Math and All in One SEO were not affected by this specific issue.
- Added: a new "Scheduled refresh" checkbox on the Settings page. When off, cached screenshots are kept indefinitely until you explicitly regenerate them (per post or via Regenerate All Screenshots). Post-update auto-regen still works when its own setting is enabled. Defaults to on, so existing installs keep their current schedule-driven behaviour.
- Changed: the setup banner shown before plugin activation now branches between two states. After you click "Allow & Continue" but before clicking the confirmation link in the email, the banner now reads "Check your email to finish setup" with a Refresh button - so you are not asked to "Activate now" again when you are already waiting on your own inbox.
- Changed: the setup banner icon is now a WordPress dashicon to match the visual style used across other PlugUpp plugins.
2.1.1
- Compliance: addressed four Plugin Check ERROR-severity findings on the 2.1.0 build. Two missing
translators:comments on the live screenshot-usage headline strings, and two output-escape annotations on integer values in the Refresh interval helper text. The values were already integer-cast; this re-casts at theprintfcall site so the static analyser sees the safety explicitly. No customer-visible change.
2.1.0
- First public release on the WordPress.org plugin directory.
- Real screenshot-based og:image. The plugin captures a real browser screenshot of each page at the standard 1200x630 Open Graph size and uses it as the og:image. No templates, no featured-image fallbacks - the actual page is what social platforms see when your link is shared.
- No third-party API key. The plugin connects to the PlugUpp screenshot service automatically using your licence. No separate account to manage and no per-request signup.
- Per-post controls in the Gutenberg sidebar - per-page enable/disable, live status, thumbnail preview of the current capture, and a "Regenerate Now" button. Premium adds per-page overrides for viewport width, capture delay, hide selectors, scroll-into-view, click-before-capture, dark mode, country routing, and Media Library integration.
- Page-builder content-save detection. Edits made in Elementor, Beaver Builder, Divi, BeTheme (Muffin Builder), Oxygen, Themify Builder, or Breakdance trigger the same auto-regeneration as a Block Editor save. Two filters (
doig_supported_buildersanddoig_render_affecting_meta_keys) let site owners add their own. - Works alongside Yoast SEO, Rank Math, and All in One SEO via each plugin's own image filter hooks. Other meta tags (titles, descriptions, structured data, canonicals, sitemaps) stay under your SEO plugin's control. The plugin runs without an SEO plugin too, emitting its own og:image and twitter:image block.
- Configurable fallback image - your SEO plugin's default, a custom image from your Media Library, or none - shown while a screenshot is being generated or for posts that have not yet been captured.
- Configurable refresh schedule (default 30 days) with a background daily sweep, optional auto-regeneration on post update, and a manual "Regenerate All Screenshots" action on the Settings page (with a backup-recommendation warning before bulk operations).
- HTTPS pre-flight check with an actionable message when the WordPress Site Address is misconfigured as http://. Prevents silent capture failures that would otherwise consume quota for no result.
- Asynchronous capture pipeline. Jobs are delivered via a signed callback with a polling fallback for hosts that block inbound callbacks. On PHP-FPM hosts the callback handler uses
fastcgi_finish_request()to return in single-digit milliseconds even under bulk-regeneration load. - Live screenshot-usage section on the Settings page showing your current startup count, monthly count, quota-reset date, and subscription-renewal date. Figures come from the screenshot server live so they always match reality.
- Cache management on the Settings page - cached file count, total disk usage, "Clear Entire Cache", and "Regenerate All Screenshots" with the bulk-operations safety warning.
- Quota awareness. Posts that would exceed the monthly cap are marked with a
quota_exceededstatus and re-queued automatically when the quota resets at the start of your next billing period. Existing screenshots continue to be served in the meantime. - Documentation links throughout the plugin UI. The Plugins admin row, the Settings tab, and the Logs tab all link out to context-relevant pages on the public documentation site at docs.plugupp.com.