What's new
S3 — Bucket Configuration Panel (#68)
Add a comprehensive Settings tab to the S3 Browser for managing bucket-level settings: versioning, lifecycle rules, event notifications, tags, and CORS.
Backend — 10 new endpoints in routes/s3.py:
GET/PUT /api/s3/buckets/{name}/versioning— Toggle versioning on/offGET/PUT/DELETE /api/s3/buckets/{name}/lifecycle— Manage lifecycle expiration rulesGET/PUT /api/s3/buckets/{name}/notifications— Configure event notifications (Lambda, SQS, SNS)GET/PUT /api/s3/buckets/{name}/tags— Manage bucket tagsGET/PUT /api/s3/buckets/{name}/cors— Configure CORS rules- Graceful 501 responses for features unsupported by emulators
- Pydantic schemas with camelCase ↔ snake_case support
- 11 new tests (306 total)
Frontend — S3 bucket settings UI:
- New "Settings" tab alongside Objects and Tags when a bucket is selected
- Versioning: Toggle switch with real-time status badge (Enabled/Suspended/Disabled)
- Lifecycle rules: Inline editor with prefix filters, expiration days, enable/disable toggle
- Event notifications: Full CRUD with:
- ARN autocomplete dropdown that lazy-loads available Lambda/SQS/SNS resources on demand
- Multi-select grouped dropdown for S3 event types (ObjectCreated, ObjectRemoved, etc.)
- Collapsible notification cards for compact overview
- Filter prefix/suffix configuration
- CORS: Full CRUD with HTTP methods multi-select checkbox dropdown, origins, headers, max-age
- Form validation before save
- Graceful "Not supported" messages for unsupported emulator features
New UI component:
Alertcomponent (Radix-based, shadcn pattern)