chore(release): v0.10.0 (#400)

Photo Essay mode, client proofing, studio-modern preset, admin panel overhaul, watermark, cookieless analytics, subpage toggle, SEO title templates. Analytics API now admin-only, Trivy scan on publish. Album order mirrors the Immich timeline; map theme, admin status panel, lightbox counter and Docker health check fixed.

See CHANGELOG.md for the full list and the health-check upgrade note.
This commit is contained in:
Ralksta
2026-08-10 09:56:20 +02:00
committed by GitHub
parent c9036fdc94
commit 2318409e75
78 changed files with 3848 additions and 553 deletions

View File

@@ -13,6 +13,8 @@ import Image from 'next/image';
interface HeroImage {
src: string;
blurDataURL?: string;
/** Pre-formatted camera line, shown as a chip by presets that use it. */
exif?: string;
}
interface HeroCarouselProps {
@@ -42,15 +44,20 @@ export function HeroCarousel({ images }: HeroCarouselProps) {
if (images.length === 1) {
const img = images[0];
return (
<Image
src={img.src}
alt=""
className="hero__image"
fill
sizes="50vw"
priority
{...(img.blurDataURL ? { placeholder: 'blur' as const, blurDataURL: img.blurDataURL } : {})}
/>
<>
<Image
src={img.src}
alt=""
className="hero__image"
fill
sizes="50vw"
priority
{...(img.blurDataURL
? { placeholder: 'blur' as const, blurDataURL: img.blurDataURL }
: {})}
/>
<HeroExifChip text={img.exif} />
</>
);
}
@@ -70,6 +77,17 @@ export function HeroCarousel({ images }: HeroCarouselProps) {
: {})}
/>
))}
<HeroExifChip text={images[currentIndex]?.exif} />
</>
);
}
/** Camera line over the hero image. Hidden unless the preset shows it. */
function HeroExifChip({ text }: { text?: string }) {
if (!text) return null;
return (
<span className="hero__exif-chip" aria-hidden="true">
{text}
</span>
);
}