Repository navigation
Releases: shazzad/github-plugin-updater
Release list
0.0.5
What's New
Two fixes to the update flow. Both were silent — nothing logged, nothing visibly broken, just updates that never appeared or nags that never cleared.
Releases without full metadata were discarded
Release::available() required more than 5 of 8 data fields to be non-empty, which made the optional tested, requires and requires_php fields mandatory. A release carrying only version, date, download_url, download_count and body scored exactly 5, so no update was ever offered.
available()now checks onlyversion+download_url.Release::missing_meta()reports which optional fields went unresolved.sanitize_meta_name()strips-and+list markers, not just*, so a READMERequirementssection using-bullets resolves correctly.- The
Requirementsheading match tolerates CRLF and trailing whitespace. - Diagnostics are written to the debug log (under
WP_DEBUG) when a release is fetched but unusable, or when metadata cannot be resolved.
The update nag survived the update
WordPress kept showing "You have version X installed. Update to X." until the next full update check.
transient_update_plugins()only added entries, never removed them, so aresponseentry written before the update outlived it. Each branch now clears the entry from the opposite collection.- A new
upgrader_process_completehandler drops the memoised plugin header and the cached release payload when this plugin is the one that was updated — an admin-initiated update replaces the files and rebuilds the transient in a single request, so both caches were otherwise stale.
Upgrading: no API changes. Consumers on dev-main already have this; consumers pinned to ^0.0.4 should move to ^0.0.5.
0.0.4
What's New
- Guard
Updater::transient_update_plugins()against non-object filter input — fixes a PHP 8 fatal (TypeErrorinproperty_exists()) when thepre_set_site_transient_update_pluginsfilter receivesfalse/null, e.g. from the commonset_site_transient( 'update_plugins', null )force-refresh idiom or another plugin re-setting a cold transient. Mirrors WordPress core's normalization inwp_update_plugins(); behavior for object input is unchanged.
Consumer plugins (e.g. shazzad-wp-logs) should re-run composer update shazzad/github-plugin-updater to bundle this fix.