Skip to main content

CHANGELOG.md

# Changelog

All notable changes to this project are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/), and the project aims to follow
semantic versioning.

## 0.1.0 - 2026-06-08

Initial release.

### Objects
- `put_object`, `get_object`, `head_object`, `delete_object`, `copy_object`.
- User metadata (`x-amz-meta-*`) and system headers (content-type,
  cache-control, content-disposition, content-encoding, storage-class, acl).
- Byte ranges (`{Start,End}` / `{Start,eof}` / `{suffix,N}`) and streaming
  up/downloads.
- Conditional requests (`if_match`, `if_none_match`, `if_modified_since`,
  `if_unmodified_since`) mapping `304`/`412` to `not_modified` /
  `precondition_failed`; `Content-MD5`; GET/presign response-header overrides.

### Buckets
- `list_buckets`, `create_bucket`, `delete_bucket`, `head_bucket`,
  `get_bucket_location`, `list_objects` (V2) with `list_objects_all` pagination.

### Versioning
- `get_bucket_versioning`, `put_bucket_versioning`, `list_object_versions`, and
  versioned get/delete. Degrades to a clean `NotImplemented` error on backends
  without versioning (e.g. Garage).

### Multipart, copy, batch
- `create_multipart_upload`, `upload_part`, `complete_multipart_upload`,
  `abort_multipart_upload`, `upload_part_copy`, `list_parts`,
  `list_multipart_uploads`; `delete_objects` (batch).

### Presigned URLs
- `presign` (query-string SigV4), with `version_id` and response-header
  overrides.

### Resilience
- Retries on by default (transient 5xx + connection errors, idempotent ops,
  re-signed per attempt), honoring a `Retry-After` header; opt-in circuit
  breaker, concurrency cap, and multi-endpoint balancing, all via `livery_client`
  layers.
- Region-redirect following (`301 PermanentRedirect` / `400
  AuthorizationHeaderMalformed`): re-sign for the corrected region/host and retry
  once (on by default, `follow_region_redirects => false` to disable).

### Credentials
- Providers via `credentials => Provider`: `static`, `env`, `{file, Profile}`,
  `imds` (EC2/ECS instance metadata), `{web_identity, _}` (STS
  AssumeRoleWithWebIdentity), a `default` chain, and `fun`/`{M,F,A}`. Refreshing
  providers cache and rotate temporary credentials
  (`livery_s3_credentials_store`, started by the `livery_s3` application).

### Transport and signing
- AWS Signature V4 (validated against AWS's published S3 examples), path-style
  (default) and virtual-hosted addressing, session tokens.