{"id":282179,"date":"2026-02-25T17:35:17","date_gmt":"2026-02-25T17:35:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/changelog-notifier\/"},"modified":"2026-03-26T11:01:42","modified_gmt":"2026-03-26T11:01:42","slug":"sky-changelog-notifier","status":"publish","type":"plugin","link":"https:\/\/hy.wordpress.org\/plugins\/sky-changelog-notifier\/","author":9532416,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"3.1.0","stable_tag":"trunk","tested":"6.9.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Sky Changelog Notifier","header_author":"Matt Biscay","header_description":"Enhances your update notifications by including changelog information about your plugins and themes.","assets_banners_color":"6862f0","last_updated":"2026-03-26 11:01:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.utopique.net\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":194,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"3.1.0":"<p>Full Easy Updates Manager compatibility and locale-agnostic email insertion. Changelogs now appear correctly in both standard WordPress and EUM notification emails on any localized site.<\/p>","3.0.0":"<p>Critical fix: Changelogs now actually appear in update emails. Fixed incorrect filter parameter handling and object structure traversal.<\/p>","2.0.0":"<p>Major rewrite with 62% code reduction. Simpler, faster, more maintainable. All features preserved.<\/p>","1.2.0":"<p>Critical fix: Now fetches changelogs from correct tagged versions instead of trunk.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3469646,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3469646,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3469646,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2549,13434,267,4906,2550],"plugin_category":[41],"plugin_contributors":[81304],"plugin_business_model":[],"class_list":["post-282179","plugin","type-plugin","status-publish","hentry","plugin_tags-auto-update","plugin_tags-changelog","plugin_tags-email","plugin_tags-notifications","plugin_tags-updates","plugin_category-communication","plugin_contributors-skyminds","plugin_committers-skyminds"],"banners":{"banner":"https:\/\/ps.w.org\/sky-changelog-notifier\/assets\/banner-772x250.png?rev=3469646","banner_2x":"https:\/\/ps.w.org\/sky-changelog-notifier\/assets\/banner-1544x500.png?rev=3469646","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/sky-changelog-notifier\/assets\/icon.svg?rev=3469646","icon":"https:\/\/ps.w.org\/sky-changelog-notifier\/assets\/icon.svg?rev=3469646","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Sky Changelog Notifier enhances WordPress automatic update notification emails by including the actual changelog for each updated plugin or theme. This keeps you informed about what changed in each update without having to visit the WordPress.org repository.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li>Automatically fetches and includes changelogs in update notification emails<\/li>\n<li>Works with both plugin and theme updates<\/li>\n<li>Adds emoji indicators (\u2705\ud83d\ude80\u274c) to plugin details modal showing version status<\/li>\n<li>Fetches from tagged versions for accuracy, with automatic fallback to trunk<\/li>\n<li>Comprehensive caching for optimal performance<\/li>\n<li>WP-CLI support for testing<\/li>\n<li>Full compatibility with Easy Updates Manager (EUM) and other notification plugins<\/li>\n<li>Locale-agnostic email insertion \u2014 works on any localized WordPress site<\/li>\n<\/ul>\n\n<p><strong>How It Works:<\/strong><\/p>\n\n<p>When WordPress automatically updates plugins or themes, this plugin:<\/p>\n\n<ol>\n<li>Fetches the changelog from the plugin\/theme's readme.txt file<\/li>\n<li>Extracts the specific version's changelog<\/li>\n<li>Appends it to the update notification email<\/li>\n<li>Caches results for 1 hour to improve performance<\/li>\n<\/ol>\n\n<p><strong>Plugin Modal Enhancement:<\/strong><\/p>\n\n<p>When viewing plugin details in the WordPress admin, you'll see:\n* \u2705 Green checkmark - Your version matches the latest\n* \ud83d\ude80 Rocket - You're ahead (development version)\n* \u274c Red X - Update available<\/p>\n\n<p><strong>Compatibility:<\/strong><\/p>\n\n<p>Works seamlessly with:\n* Easy Updates Manager\n* Easy Theme and Plugin Upgrades\n* Other update management plugins\n* Uses high priority (999) on standard WordPress filters\n* Hooks into <code>automatic_updates_complete<\/code> for EUM and similar plugins that bypass WordPress email filters\n* Locale-agnostic insertion using structural markers instead of translatable strings<\/p>\n\n<h3>Development<\/h3>\n\n<p>Development happens on GitHub: https:\/\/github.com\/skyminds\/sky-changelog-notifier<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sky-changelog-notifier<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>That's it! The plugin works automatically<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20manual%20updates%3F\"><h3>Does this work with manual updates?<\/h3><\/dt>\n<dd><p>No, this plugin only enhances automatic update notification emails. Manual updates don't trigger these emails.<\/p><\/dd>\n<dt id=\"can%20i%20test%20if%20it%27s%20working%3F\"><h3>Can I test if it's working?<\/h3><\/dt>\n<dd><p>Yes! Use the built-in testing feature:\n* Web: <code>\/wp-admin\/?test_changelog_retrieval&amp;_wpnonce=&lt;nonce&gt;<\/code> (generate nonce with action <code>sky_changelog_notifier_test<\/code>)\n* WP-CLI: <code>wp changelog akismet 5.3 plugin<\/code><\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20other%20plugins%3F\"><h3>Is it compatible with other plugins?<\/h3><\/dt>\n<dd><p>Yes! It's fully compatible with:\n* Easy Updates Manager - for managing automatic updates\n* Easy Theme and Plugin Upgrades - for manual ZIP uploads\n* Other update management plugins<\/p>\n\n<p>The plugin uses high priority (999) on filters to ensure compatibility.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20my%20site%3F\"><h3>Does it slow down my site?<\/h3><\/dt>\n<dd><p>No. All changelog fetches are cached for 1 hour, and the plugin only runs during automatic updates.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1.0<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Full Easy Updates Manager compatibility \u2014 changelogs now appear in EUM emails via <code>automatic_updates_complete<\/code> hook and <code>wp_mail<\/code> filter<\/li>\n<li><strong>NEW<\/strong>: Locale-agnostic email insertion \u2014 uses structural markers (<code>wordpress.org\/support\/forums\/<\/code> URL, <code>==========<\/code> separator) instead of translatable strings<\/li>\n<li><strong>NEW<\/strong>: Modernized changelog header with Unicode branding<\/li>\n<li><strong>IMPROVED<\/strong>: Extracted <code>insert_changelog_block()<\/code> method for shared insertion logic across standard WP and EUM email paths<\/li>\n<li><strong>IMPROVED<\/strong>: Changelogs now inserted before the sign-off instead of appended at the end<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li><strong>CRITICAL FIX<\/strong>: Fixed filter callback to use correct <code>auto_plugin_theme_update_email<\/code> parameter names (<code>$successful_updates<\/code> instead of <code>$result<\/code>)<\/li>\n<li><strong>CRITICAL FIX<\/strong>: Fixed update item object traversal \u2014 now correctly reads <code>$item-&gt;item-&gt;new_version<\/code>, <code>$item-&gt;item-&gt;plugin<\/code>, <code>$item-&gt;name<\/code><\/li>\n<li><strong>CRITICAL FIX<\/strong>: Extracts slug from plugin file path (e.g. <code>akismet\/akismet.php<\/code> \u2192 <code>akismet<\/code>)<\/li>\n<li>Removed <code>auto_core_update_email<\/code> filter (incompatible signature \u2014 core updates don't have plugin\/theme changelogs)<\/li>\n<li>Handles both <code>success<\/code> and <code>mixed<\/code> email types<\/li>\n<li>Added nonce verification to admin test endpoint (WPCS\/VIP compliance)<\/li>\n<li>Full WPCS and WordPress VIP coding standards compliance<\/li>\n<li>PHP 8.0+ typed properties, return types, and union types<\/li>\n<li>Caches failed readme fetches to prevent retry storms<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>MAJOR REWRITE<\/strong>: Simplified from 846 lines to 319 lines (62% reduction)<\/li>\n<li>Removed unnecessary WordPress API fallback<\/li>\n<li>Removed complex parallel fetching<\/li>\n<li>Removed \"closest version\" fallback complexity<\/li>\n<li>Streamlined to simple, reliable approach: tagged version \u2192 trunk fallback<\/li>\n<li>Kept essential features: changelog in emails, plugin modal emoji, testing, WP-CLI<\/li>\n<li>Improved code maintainability and readability<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li><strong>CRITICAL FIX<\/strong>: Now fetches changelogs from tagged versions instead of trunk<\/li>\n<li>This ensures you get the changelog for the exact version that was installed<\/li>\n<li>Added automatic fallback to trunk if tagged version is not available<\/li>\n<li>Improved HTTP status code checking for better error handling<\/li>\n<li>Fixed regex patterns to support all version number formats (1, 2.0, 1.2.3, etc.)<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added compatibility with Easy Updates Manager plugin<\/li>\n<li>Improved filter priority handling for better plugin interoperability<\/li>\n<li>Enhanced email body handling to preserve modifications by other plugins<\/li>\n<li>Comprehensive security and performance optimizations<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Improved version matching and fallback logic<\/li>\n<li>Better handling of different changelog formats<\/li>\n<\/ul>","raw_excerpt":"Adds changelogs to WordPress automatic update notification emails for plugins and themes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=282179"}],"author":[{"embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/skyminds"}],"wp:attachment":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282179"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282179"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282179"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282179"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282179"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}