407bfbd5f1ed67d8f0ee19433665686f8bf1806f
Reads thumbnailAspect from the backend and swaps between a 120×168 portrait tile and a 168×120 landscape tile so postcards and photos don't get cropped into a portrait frame. Shows a page-count badge top-right for multi-page PDFs, and a pulsing skeleton while the async thumbnail job hasn't run yet. URL assembly goes through the existing thumbnailUrl helper so cache-busting stays consistent with DocumentThumbnail. Refs #305 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
No description provided
Languages
Python
73.3%
TypeScript
11.4%
Java
10.8%
Svelte
4.2%
Shell
0.1%