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

@@ -4,6 +4,7 @@
@import url('./themes/classic.css');
@import url('./themes/noir.css');
@import url('./themes/monograph.css');
@import url('./themes/studio-modern.css');
@import url('./tokens.css');
@@ -28,6 +29,22 @@
outline: 2px solid var(--text-primary);
}
/* ── Screen-reader-only text ──────────────────────── */
/* Used by the lightbox counter, which announces "Photo 3 of 53" while showing
the compact "3 / 53". Without this rule both strings render on top of each
other. */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* ── Header / Navigation ──────────────────────────── */
.header {
position: fixed;
@@ -61,6 +78,11 @@
display: none;
}
/* Brand wordmark — only presets that ask for it render it visibly. */
.header__wordmark {
display: none;
}
.header__nav-link {
padding: 18px 16px;
font-family: var(--font-sans);
@@ -210,6 +232,11 @@
opacity: 1;
}
/* Camera chip over the hero image — opt-in per preset. */
.hero__exif-chip {
display: none;
}
/* ── Hero: Fullbleed Layout ─────────────────────── */
.hero--fullbleed {
position: relative;
@@ -466,7 +493,10 @@
color: var(--text-primary);
}
/* Index + album count ship with every hero nav link; presets opt in to
showing them. Only the indexed nav shows the index by default. */
.hero__nav-index {
display: none;
font-family: var(--font-caption, monospace);
font-size: 0.65rem;
font-weight: 400;
@@ -475,6 +505,15 @@
min-width: 20px;
}
.hero__nav--indexed .hero__nav-index {
display: inline-block;
}
.hero__nav-count,
.hero__thumbnail-index {
display: none;
}
/* ── Hero: Mosaic Layout ────────────────────────── */
.hero--mosaic {
position: relative;
@@ -605,6 +644,13 @@
margin-bottom: 40px;
}
/* Kicker + meta block are rendered for every preset but stay hidden
unless a preset opts in (studio-modern uses both). */
.subpage-header__kicker,
.subpage-header__meta {
display: none;
}
.subpage-title {
font-family: var(--font-serif);
font-size: 2.5rem;
@@ -718,6 +764,20 @@
display: block;
}
/* Media wrapper keeps the cover square-on while presets that want a
caption bar below the image can grow the card. */
.subpage-grid__item-media {
position: relative;
display: block;
width: 100%;
height: 100%;
overflow: hidden;
}
.subpage-grid__item-caption {
display: none;
}
.subpage-grid__item img {
width: 100%;
height: 100%;
@@ -905,6 +965,13 @@
font-weight: 300;
}
/* Date + gear ship with every album header but stay hidden unless a preset
opts in, so the meta line reads "86 photos" as it always has. */
.album-header__meta-date,
.album-header__meta-gear {
display: none;
}
.photo-grid {
column-count: var(--grid-columns, 3);
column-gap: var(--grid-gap, 12px);