1.8.0 (2026-08-15)
✨ Features
- external outfit authoring for suggestions and pairings (#156) (1d3506a)
- items: add ai_failed_at column and retry cooldown config (ebe8409)
- items: add upload_key idempotency for bulk upload retries (1d9d832)
- wardrobe: add durable upload queue and drain manager (0d0ba29)
- wardrobe: show queued vs analyzing status with elapsed time (9da07d0)
- wardrobe: surface retry-cooldown status to the user (a2848f4)
- wardrobe: wire durable upload queue into bulk-upload UI (64ca39e)
- worker: make AI tagging concurrency configurable (adafab9)
🐛 Bug Fixes
- ai: stop image preprocessing from blocking the event loop (b6ad642)
- items: gate manual and bulk retry behind a cooldown after failure (9338289)
- items: idempotent re-analysis and real queue visibility (9c8cbfd)
- regenerate frontend lockfile for musl/alpine platform (961b09f)
- worker: stop the stale-item sweep from condemning queued items (cc52597)
🧪 Tests
- backend: cover retry-cooldown claim, gating, and concurrency (ec8778f)
- backend: cover stale-sweep, concurrency, and idempotency changes (45ea759)
👷 CI/CD
- remove unused cognitive-cache context workflows (1604071)
💄 Styling
- ruff-format upload_key migration (ced1ed8)