# Phase 35: Bug Fixes - Discussion Log > **Audit trail only.** Do not use as input to planning, research, or execution agents. > Decisions are captured in CONTEXT.md — this log preserves the alternatives considered. **Date:** 2026-04-19 **Phase:** 35-bug-fixes **Areas discussed:** FIX-03 scope, FIX-01 fallback --- ## FIX-03 scope: slow image loading | Option | Description | Selected | |--------|-------------|----------| | Lazy loading + skeleton states only | Add HTML loading='lazy' and gray animated placeholders while images load. Addresses visible UX symptom without touching presigned URL generation. | ✓ | | Lazy loading + presigned URL caching | Also cache generated presigned URLs server-side for their TTL duration. More impactful but touches the storage layer. | | | Full investigation and fix all causes | Audit all three causes (lazy loading, presigned URL generation overhead, image sizing), fix everything found. | | **User's choice:** Lazy loading + skeleton states only **Notes:** Presigned URL caching explicitly deferred to a future phase. Skeletons should appear on all card types that display images (ItemCard, CandidateCard, catalog/discovery cards) — not just ItemCard. --- ## FIX-01 fallback: catalog vs manual flow | Option | Description | Selected | |--------|-------------|----------| | Inline fallback inside CatalogSearchOverlay | CatalogSearchOverlay already has "Can't find it? Add manually" link. Just wire the button to the overlay, no extra UI needed. | | | Secondary button on thread page | Keep an explicit "Add manually" secondary button on the thread page toolbar. | | | Remove the manual-add modal from thread page entirely | Delete the inline AddCandidateModal component and its state. Manual add is already reachable via FAB → overlay → "add manually". | ✓ | **User's choice:** Remove the manual-add modal from thread page entirely **Notes:** The `AddCandidateModal` inline component and `addCandidateOpen` state should be fully deleted from the thread detail route. Clean code removal. --- ## Claude's Discretion - Which specific card component file implements catalog/discovery card loading skeletons - Whether `priceCurrency` is already in the items list API response ## Deferred Ideas - Presigned URL server-side caching (TTL-based) — out of scope for Phase 35 - Image resizing/thumbnails on upload — deferred - Cache-Control headers on S3 objects — deferred