Content - 100 new plates under content/posts/02/ — one recurring red-haired model across 10 editorial registers (Haute Couture, Film Noir, Boudoir, Avant-Garde, Minimalism, Baroque, Street Style, Surrealism, Monochrome, Nocturne), generated with flux-1.1-pro, face-swapped to a consistent identity (FaceFusion), and upscaled (Upscayl + Remacri, 3328x4992). - content/issues/02/_index.md; issue 01 -> status archived; hugo.toml params (issueIds newest-first, issueNumber/Name/Season/Blurb). Structure - Plate bundles grouped by issue: content/posts/<issue>/<slug>/, with build.render:never stubs so /posts/<issue>/ isn't emitted. nginx 301s the legacy flat /posts/<slug>/ URLs to /posts/01/<slug>/. The /posts/ archive uses .RegularPagesRecursive. Image pipeline (scripts/, data/ gitignored) - generate-images.py — Replicate flux-1.1-pro, 960x1440, idempotent. - faceswap-images.py — FaceFusion batch-run, one consistent face. - upscale-images.py — Upscayl + remacri-4x, long edge clamped to 4992. - build-issue.py — prompts JSON -> content/posts/<issue>/*/index.md. Build - CSS now compiled by Hugo's css.TailwindCSS (partials/css.html + templates.Defer); dropped the standalone Tailwind CLI step, concurrently, and the gitignored static/css/main.css. Requires Hugo >= 0.161; Dockerfile collapsed to a single hugomods/hugo:debian-node build stage. pnpm-workspace.yaml: preferSymlinkedExecutables + allowBuilds. Front end - Pagination 8 per page. - Lightbox: brand mark and category link out; robust SPA back/forward (fetch before startViewTransition, single-flight guard, swallow the transition abort rejection, popstate re-renders / reopens the viewer). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZPmxGywFnAhmYJB1eh9fm
69 lines
1.6 KiB
TOML
69 lines
1.6 KiB
TOML
baseURL = "https://roux.pivoine.art/"
|
|
locale = "en"
|
|
title = "Roux"
|
|
enableRobotsTXT = true
|
|
enableGitInfo = false
|
|
[pagination]
|
|
pagerSize = 8
|
|
|
|
[taxonomies]
|
|
category = "categories"
|
|
tag = "tags"
|
|
issue = "issues"
|
|
|
|
[outputs]
|
|
home = ["HTML", "RSS", "JSON"]
|
|
page = ["HTML"]
|
|
section = ["HTML"]
|
|
taxonomy = ["HTML"]
|
|
term = ["HTML"]
|
|
|
|
[params]
|
|
description = "Roux is a slow-publishing fashion journal — one hundred photographs at a time. Editorial, couture, beauty and backstage plates."
|
|
author = "Roux Editorial"
|
|
issueIds = ["02", "01"]
|
|
issueNumber = "02"
|
|
issueName = "Obsession"
|
|
issueSeason = "Autumn MMXXVI"
|
|
issueBlurb = "One hundred plates in thrall to a single body — a bared shoulder, a parted mouth, silk slipping loose."
|
|
siteURL = "https://roux.pivoine.art"
|
|
umamiSrc = "https://umami.pivoine.art/script.js"
|
|
umamiId = "df675ca7-f82a-463b-89aa-f67c1f56ed68"
|
|
|
|
[markup.goldmark.renderer]
|
|
unsafe = true
|
|
|
|
[build]
|
|
[build.buildStats]
|
|
enable = true
|
|
[[build.cachebusters]]
|
|
source = 'assets/notwatching/hugo_stats\.json'
|
|
target = 'css'
|
|
[[build.cachebusters]]
|
|
source = 'assets/css/main\.css'
|
|
target = 'css'
|
|
|
|
[module]
|
|
[[module.mounts]]
|
|
source = 'assets'
|
|
target = 'assets'
|
|
[[module.mounts]]
|
|
source = 'hugo_stats.json'
|
|
target = 'assets/notwatching/hugo_stats.json'
|
|
disableWatch = true
|
|
|
|
[security.exec]
|
|
allow = ['^(dart-)?sass$', '^go$', '^git$', '^node$', '^npx$', '^postcss$', '^tailwindcss$']
|
|
|
|
[imaging]
|
|
quality = 85
|
|
resampleFilter = "lanczos"
|
|
|
|
[imaging.exif]
|
|
disableDate = false
|
|
disableLatLong = true
|
|
|
|
[sitemap]
|
|
changefreq = "monthly"
|
|
priority = 0.5
|