a Galleries section, above Media

Galleries become an entity rather than a list hanging off a page: a set of media
somebody has chosen and put in an order is a decision worth keeping once, not
remaking on every page that wants it.

Pinned with Media and above it, because the two are the same kind of thing — the
raw material the site is built from, held on this machine. Media is the files; a
gallery is a chosen, ordered subset of them.

`requires: 'root'`, not `'connection'`. A gallery is made of originals on this
disk, so it is reachable as soon as there is a root location. Gating it behind a
site connection it does not use is the bug that made that distinction necessary
in the first place, and Media already learned it.

Not built yet, so it renders the Planned card — the entity is the next piece and
this is where it will live.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-29 20:36:10 +01:00
co-authored by Claude Opus 5
parent fc7bc5b8cf
commit b634de5604
+24
View File
@@ -29,6 +29,7 @@ import { Home, Info, Layers, Images, Handshake, Sparkles, Wrench, Settings, Mail
export type SectionKey = export type SectionKey =
| 'administration' | 'administration'
| 'galleries'
| 'media' | 'media'
| 'messages' | 'messages'
| 'site' | 'site'
@@ -154,6 +155,29 @@ export const SECTIONS: Section[] = [
built: true, built: true,
requires: 'connection', requires: 'connection',
}, },
{
/*
Galleries — an entity of their own, not a list hanging off a page.
Above Media and pinned with it, because the two are the same kind of thing: the raw material the
site is built from, held on this machine. Media is the files; a gallery is a set of them somebody
has chosen and put in an order, which is a decision worth keeping once rather than remaking on
every page that wants it.
`requires: 'root'` and not `'connection'`. A gallery is made of originals on this disk, so it is
reachable as soon as there is a root location — the same reasoning that unlocked Media, and for
the same reason: gating it behind a site connection it does not use was the bug that made the
distinction necessary.
*/
key: 'galleries',
label: 'Galleries',
icon: Images,
hint: 'Named sets of media, reusable across the site',
path: null,
built: false,
requires: 'root',
pinned: true,
},
{ {
/* /*
The site's own media, browsed in place. The site's own media, browsed in place.