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

@@ -908,11 +908,11 @@ export default function PageBuilder() {
</div>
<div className="save-bar-right">
<a
href="/"
href="/?fresh=1"
target="_blank"
rel="noopener noreferrer"
className="admin-btn admin-btn-ghost admin-btn-preview"
title="Open site in new tab"
title="Open site in new tab (bypassing cache)"
>
↗ Preview Site
</a>
@@ -1120,11 +1120,11 @@ export default function PageBuilder() {
</div>
<a
href={`/${slugify(sp.name)}`}
href={`/${slugify(sp.name)}?fresh=1`}
target="_blank"
rel="noopener noreferrer"
className="admin-btn admin-btn-xs admin-btn-ghost"
title="Open live page in new tab"
title="Open live page in new tab (bypassing cache)"
>
/{slugify(sp.name)} ↗
</a>
@@ -1315,8 +1315,15 @@ export default function PageBuilder() {
markdown={sp.essayText || ''}
onChange={(newMarkdown) => updateSubpage(spIndex, { essayText: newMarkdown })}
onSelectPhoto={(callback) => {
setPickerTarget({ type: 'subpage', subpageIndex: spIndex });
// We can pass a photo picker handler if needed
const firstAlbumId = sp.albums[0]?.id;
setHeroPickerTarget({
albumId: firstAlbumId,
title: 'Select Photo for Photo Essay',
onSelect: (assetId) => {
callback(assetId);
setHeroPickerTarget(null);
},
});
}}
/>
</div>