v3.4.0
What's Changed
Added
- Root path support — third
BunnyCDNAdapterconstructor argument is now arootpath prefix, scoping all operations to a storage-zone subdirectory (#96) - Laravel-compatible temporary URLs —
getTemporaryUrl()makesStorage::disk('bunnycdn')->temporaryUrl()work out of the box (#97)
Changed
- PHP floor raised to
^8.3(8.2 EOL 31 Dec 2026) fzaninotto/faker(abandoned) →fakerphp/faker;laravel/pint^0.2→^1.30;phpunit^10→^11.5- PHPStan level 0 → 5 (
phpstan.neon.dist); tests migrated to#[Test]attributes - CI: modernized actions, PHP 8.3/8.4/8.5 matrix, local PHPStan, guarded steps for legacy branches
Fixed
deleteDirectory('')could delete the storage zone root — now guarded- Numeric/boolean file content no longer
TypeErrors ondownload() - Malformed timestamps no longer fatal in
lastModified() writeBatch()failures report the target path, not a batch index
Tests
- 158 → 235 tests, incl. full conformance suite for root-scoped adapters (
RootTest)
Full Changelog: v3.3.10...v3.4.0