- feat(storage): typed exception hierarchy under StorageException
- test(storage): mirror src structure in the unit test tree
- docs(storage): document listFiles and the getDevice accessor
- feat(storage)!: typed listFiles replaces the inconsistent getFiles
- refactor(storage): rename Telemetry::getUnderlying to getDevice
- feat(storage): expose the decorated device via Telemetry::getUnderlying
- chore(storage): apply rector fixes missed by stale local cache
- fix(storage): reject non-positive transfer chunk sizes
- refactor(storage)!: shrink the Device contract and delete dead weight
- refactor(storage): retry via utopia client Retry decorator
- feat(storage): send S3 requests through a PSR-18 client
- feat(storage)!: immutable coroutine-safe devices, enums, max static analysis
- docs: point adapter guides at the monorepo fork workflow
- docs: centralize CODE_OF_CONDUCT and CONTRIBUTING at the monorepo root
- docs: enforce documentation style with Vale
Changes: utopia-php/monorepo@storage/2.0.7...storage/3.0.0