Skip to content

v1.7.1184

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Apr 04:39
Immutable release. Only release title and notes can be modified.

Hoof and Harbor

Decentralize your WordPress plugin distribution.

Troy is a suite of plugins that enables independent distribution of plugins and themes outside WordPress.org. Host your own update server, protect user privacy, and maintain full control over your software distribution.

What's Changed

Server:

  • Added Composer 2 repository support for Bedrock and other Composer-managed WordPress sites.
  • Added a configurable Composer vendor slug to the Setup tab, pre-filled from the site name at install time.
  • Added a Composer setup guide modal to the package list view and editor.
  • Added "Latest version" column to the plugin list view.
  • Added a plugin status guard that requires at least one released version before a plugin can be set to public, unlisted, or protected.
  • Added settings save to the Setup tab via REST with change detection.
  • Added live slug preview to the package editor showing the download URL and Composer package URL.
  • Added "Require" network activation option for packages. The legacy network column is migrated and dropped on upgrade.
  • Added X-Robots-Tag header to all public API endpoint responses.
  • Improved package editor layout by adding title hints and showing two links beneath the slug editor.
  • Improved download stat detection to categorize requests by User-Agent (Composer, web browser, CLI, update check, API).
  • Improved the Setup tab's mobile layout by replacing inaccessible CSS-generated content labels with real DOM elements.
  • Changed checksum storage to a multi-algorithm JSON field, adding sha1 alongside sha256. Existing hashes are migrated on upgrade. Reprocess your ZIPs to register sha1.
  • Changed the tags endpoint: replaced checksum, checksum_version, and checksum_origin fields with a single checksums object. This is a breaking change.
  • Resolved the plugin info endpoint returning unresolved tested versions instead of the latest patch release.
  • Resolved abandoned plugin versions retaining stale active install counts instead of dropping to 0.
  • Removed the network boolean column from troy_package_metas. Existing rows with network = 1 are migrated to network_activation = 'require' on upgrade.

Client:

  • Added deactivation explanation link to plugin action links when Troy Client is protected from deactivation.
  • Fixed http_headers_useragent callbacks crashing when third-party plugins apply the filter without the URL parameter.

Client Daemon:

  • Added an install lock to prevent concurrent or rapid-fire install attempts when Troy Client installation fails.
  • Fixed http_headers_useragent callbacks crashing when third-party plugins apply the filter without the URL parameter.

Installer:

  • Fixed http_headers_useragent callbacks crashing when third-party plugins apply the filter without the URL parameter.

Note: Changes to Installer also affect Troy Server's generated installer packages, so make sure to update your packages to benefit from these changes.

What's Included

Troy Server — Host your own plugin repository with full WordPress admin integration. Manage plugins via the Block Editor, connect GitHub or WordPress.org repos for automatic updates, and generate installer packages for your clients. Includes anonymous usage statistics.

Troy Client — Enable sideloading for plugin updates, translations, and dependencies from any Troy Server. Simply add a Troy: <repo-url> header to your plugin. Optionally hide plugins from WordPress.org's update API entirely.

Troy Client Daemon — A must-use plugin that enforces Troy Client and blocks WordPress.org APIs until Troy Client is active. Drop it in mu-plugins/ — no configuration needed.

Troy Installer — A tiny installer plugin generated by Troy Server to distribute to your clients. Installs Troy Client and your selected plugins in one click.

Snippets — Helper snippets for hiding Troy Client from the admin, enabling beta channels, and embedding Troy Client in your plugins.

Requirements

Component PHP WordPress MySQL
Troy Server 8.4+ 6.8+ 8.0.19+
Troy Client 7.4+ 6.7+ 8.0.0+

License

MIT — use it freely.


Made with love. By Sybre Waaijer, for the community.

Full Changelog: v1.6.1184...v1.7.1184