- fix(deletes): clear build output of deployments deleted mid-build
- Normalize optional S3 MIME metadata before upload finalization
- Reuse object metadata when finalizing native file uploads
- fix(storage): fail a recursive S3 delete when the service keeps keys
- fix(storage): delete every object under the directory on a recursive S3 delete
- fix(storage): refuse S3 deletes of the whole bucket, the whole root or outside the root
- refactor(storage): collapse repeated slashes without a regex
- fix(storage): delete directories, not name prefixes, and surface kept objects
- test(storage): pin directory deletes, endpoint path rules and bucket settings
- style(storage): call the XML response fixture as an instance method
- fix(storage): address bucket requests on path-style S3 endpoints
- test(storage): cover bucket-level requests on path-style S3 endpoints
- Prepare response-aware transfers before the retry loop
- Preserve wrapped client fallback and reject capability errors before retries
- Stream through the production telemetry decorator
- Verify stream cancellation and truncation never replay backend bytes
- Stream backend S3 reads and queue obsolete version cleanup
- Merge remote-tracking branch 'origin/main' into refactor/validators-namespace
- chore: upgrade PHPStan to 2.3.0
- refactor: use Utopia\Validator\Validator everywhere
- Merge remote-tracking branch 'origin/main' into feat/passkeys
- Merge remote-tracking branch 'origin/main' into feat/passkeys
- Merge branch 'main' into feat/passkeys
Changes: appwrite/appwrite@storage/4.4.1...storage/4.5.0