The shown.bs.tab event never fired, leaving the preview spinner forever. Switched to a direct click handler with setTimeout for reliability. Also added explicit credentials and HTTP error handling to the fetch. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>