NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #4302 most downloaded on Packagist
Flysystem adapter for BunnyCDN
Last release 1 months ago
15 Aug 2026
Release timing varies
gaps range from 1 weeks to 1.2 years
Rarely documented
notes for 9 of 50 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
51 releases · first in 2019
Empty root listings (e.g. Laravel allFiles() ) — storage request URLs for root-level paths contained a double slash ( https://{region}.storage.bunnycd
allFiles()) — storage request URLs for root-level paths contained a double slash (https://{region}.storage.bunnycdn.com/{zone}//), which the Bunny API rejects. Paths are now normalized in a single place, with a regression test asserting the exact request URI (#75)Full Changelog: v3.4.0...v3.4.1
https://{region}.storage.bunnycdn.com/{zone}//), which the Bunny API rejects — root listings (e.g. Laravel's allFiles()) could come back empty (#75). Paths are now normalized in a single place, and a regression test asserts the exact request URI.One column per quarter.
Root path support — third BunnyCDNAdapter constructor argument is now a root path prefix, scoping all operations to a storage-zone subdirectory
BunnyCDNAdapter constructor argument is now a root path prefix, scoping all operations to a storage-zone subdirectory (#96)getTemporaryUrl() makes Storage::disk('bunnycdn')->temporaryUrl() work out of the box (#97)^8.3 (8.2 EOL 31 Dec 2026)fzaninotto/faker (abandoned) → fakerphp/faker; laravel/pint ^0.2 → ^1.30; phpunit ^10 → ^11.5phpstan.neon.dist); tests migrated to #[Test] attributesdeleteDirectory('') could delete the storage zone root — now guardedTypeErrors on download()lastModified()writeBatch() failures report the target path, not a batch indexRootTest)Full Changelog: v3.3.10...v3.4.0
BunnyCDNAdapter constructor argument is now a root path prefix, scoping all operations (write, read, list, delete, move, copy, URLs) to a subdirectory of the storage zone. Listed paths are root-relative; public and temporary URLs are root-scoped and signed against the root-scoped path. Resolves the long-requested "root" config support (#96, discussion #30).BunnyCDNAdapter::getTemporaryUrl() implements the method Laravel's FilesystemAdapter looks for, so Storage::disk('bunnycdn')->temporaryUrl() now works out of the box. Accepts a DateTimeInterface or minutes-from-now integer, plus additional query parameters that are signed into the URL (#97).^8.3 (PHP 8.2 reaches end-of-life 31 December 2026).fzaninotto/faker with fakerphp/faker (drop-in, same namespace).laravel/pint ^0.2.3 → ^1.30 (fixes PHP 8.5 deprecation warnings).phpunit/phpunit ^10.0 → ^11.5 (10.x is end-of-life; PHPUnit 12+ drops the doc-comment metadata support that flysystem-adapter-test-utilities relies on).phpstan.neon.dist; reported issues fixed.@test doc-comments to #[Test] attributes (deprecated in PHPUnit 11).actions/checkout@v7, shivammathur/setup-php@v2, actions/cache@v6, codecov/codecov-action@v7 (replacing the deprecated bash uploader); PHP matrix 8.3/8.4/8.5; PHPStan and Pint steps guarded so the shared workflow keeps working on the legacy v1/v2 branches.deleteDirectory('') could send a DELETE for the storage zone root — now guarded with UnableToDeleteDirectory.123) no longer fail download() with a TypeError — non-array JSON payloads return the raw body.parse_bunny_timestamp() no longer fatals on malformed timestamps (falls back to 0).writeBatch() failures now report the failing target path instead of a numeric batch index.lastModified() / fileSize() on directories now throw UnableToRetrieveMetadata explicitly instead of relying on a return-type TypeError.RootTest — full flysystem conformance suite against a root-scoped adapter, plus targeted root tests (trailing-slash normalization, root scoping, root-relative listings, root-signed temporary URLs, writeBatch with root, root + PathPrefixedAdapter composition).request() JSON decode edge cases, and full-URL temporary URLs with a root configured.Added pullzone URL to temporaryUrl generation by @chrispage1 in #93
Full Changelog: v3.3.8...v3.3.10
Temporary URLs with Pull Zone Prefixes in #93
Added support for temporary URLs by @chrispage1 in #88
Full Changelog: v3.3.6...v3.3.8
Full Changelog: v3.3.6...v3.3.8
Nothing published for this version
Support for true streaming of files by @chrispage1 in #86
Full Changelog: v3.3.5...v3.3.6
add writeBatch by @tinect in #81
Full Changelog: v3.3.4...v3.3.5
feat: prevent deleting file when moving to same destination by @tinect in #71
feat: prevent delete operation from deleting all contents by @tinect in #68
Full Changelog: v3.3.2...v3.3.3
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →