# 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
