From 0f4e2e0b8f5e2817646a1e34c3a5082591e08068 Mon Sep 17 00:00:00 2001 From: dtoro Date: Wed, 20 May 2026 10:24:31 +0200 Subject: [PATCH] =?UTF-8?q?preview:=20LQIP=20+=20=C2=B12=20prefetch=20+=20?= =?UTF-8?q?bound=20action=20bar=20to=20its=20column?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Preview pane paints instantly: a blurred copy of the same thumbnail the grid loaded (cache hit) rides beneath the sharp fit_1280, which now carries fetchpriority=high and decoding=async. A $effect prefetches fit_1280 for the ±2 neighbours so arrow-skim hits the HTTP cache. Carousel thumbs drop to fetchpriority=low so they yield to the main image. Skeleton grid gains an mt-2 to breathe against the toolbar. BulkActionBar moves inside the main column in both PreviewModal and the /tags drill-in so it no longer stretches under the right sidebar. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../components/preview/PreviewCarousel.svelte | 1 + .../components/preview/PreviewModal.svelte | 11 ++- .../lib/components/preview/PreviewPane.svelte | 96 +++++++++++++++---- .../components/timeline/SkeletonGrid.svelte | 2 +- .../tags/[category]/[[value]]/+page.svelte | 3 +- 5 files changed, 88 insertions(+), 25 deletions(-) diff --git a/web/src/lib/components/preview/PreviewCarousel.svelte b/web/src/lib/components/preview/PreviewCarousel.svelte index 6893173..457fe47 100644 --- a/web/src/lib/components/preview/PreviewCarousel.svelte +++ b/web/src/lib/components/preview/PreviewCarousel.svelte @@ -155,6 +155,7 @@ alt="" loading="lazy" decoding="async" + fetchpriority="low" class="h-full w-full object-cover" /> {/if} diff --git a/web/src/lib/components/preview/PreviewModal.svelte b/web/src/lib/components/preview/PreviewModal.svelte index 78869a9..ca0ee52 100644 --- a/web/src/lib/components/preview/PreviewModal.svelte +++ b/web/src/lib/components/preview/PreviewModal.svelte @@ -133,7 +133,11 @@ Full-screen preview of the focused photo with metadata and a thumbnail carousel. - +
+ +
{#if focusedPhotoQuery.data}