eed9b1fa80
The PDF-carousel cleanup effect had `[pdfCarousel]` deps, so its cleanup ran on every carousel change and revoked the *previous* array's object URLs — which are still referenced by unchanged items in the new array. Building a multi-template deck therefore left every preview except the last with a revoked (broken) blob URL. Drop paths are already handled explicitly in savePdfToCarousel (replace) and resetPdfCarousel (clear), so blanket per-change revocation was both harmful and redundant. Fix: track the latest carousel in a ref and revoke outstanding URLs only on unmount (empty-deps effect). No leak either way — unmount still frees them. Found during the memory-leak/resource audit; this is a resource-release correctness bug (over-eager revocation), not a leak. profile-page.test: 5/5 green (with an adequate timeout; the suite's 5s-timeout flakiness is pre-existing and unrelated). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>