30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

v0.5.1 — release plumbing fix

Release-plumbing hotfix for v0.5.0. No functional plugin code changes.

What happened with v0.5.0

The GitHub Actions Deploy to Freemius run for v0.5.0 reported success while the Freemius API silently rejected the upload with:

“`
HTTP 400 — uninstall_script
"Your plugin's main folder include the uninstall.php script. Since
Freemius tracks the uninstall event, … the uninstall data will
not be sent … Please read more about the after_uninstall hook."
“`

The `buttonizer/freemius-deploy@v0.1.3` action doesn't propagate API errors to its exit code — so the workflow was green while Freemius's Deployment list continued to show v0.4.0 as the latest.

This is exactly the failure mode DECISIONS.md D3 documented as a release-packaging constraint: Freemius owns the uninstall event via its `after_uninstall` hook and rejects any zip with a root-level `uninstall.php`. Feature 003 (in 0.5.0) added `uninstall.php` for the dual-gate delete-all-data checkbox without re-checking D3 → the deploy silently failed.

Fix

  • .github/workflows/deploy-freemius.yml — rsync now excludes /uninstall.php from the build tree. Added a symmetrical build-time sanity guard that fails the deploy step with an actionable error if uninstall.php is present in the stage (mirroring the existing check for the vendored Freemius SDK). Closes the silent-success failure mode for this class of bug.
  • .distignore — added /uninstall.php for defense in depth (wp dist-archive + manual builds).
  • Version bump 0.5.0 → 0.5.1 across plugin header, Main.php constant, and fallback string.

Trade-off

The "Delete all data on uninstall" opt-in checkbox (introduced in 0.5.0 / Feature 003) does NOT fire on Freemius-distributed installs until the uninstall handler is migrated to the Freemius `after_uninstall` hook. The checkbox continues to work on GitHub / manual-zip installs.

Follow-ups (tracked as future work, not blocking):

  • Migrate uninstall.php logic to `acrossai_ai_connectors()->add_action( 'after_uninstall', … )`.
  • Replace `buttonizer/freemius-deploy@v0.1.3` with an inline curl deploy that parses the API response and fails on any `error` key — closes the class of "silent success" bug beyond just uninstall_script.

Full compare: v0.5.0…v0.5.1


Keep reading