Add crop/rotate, more presets, and several new film effects
All checks were successful
Docker / build-and-push (push) Successful in 2m58s

Chromatic aberration, dust & scratches, light-leak shape variety
(bloom/streak/corner), double exposure, and grain size/color controls,
plus polaroid/infrared/black & white presets and non-destructive
crop+rotate ahead of the existing effect stack.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Fredrik Johansson
2026-07-17 12:16:52 +02:00
parent 6e53ae1cc9
commit 27aeef11eb
3 changed files with 487 additions and 50 deletions

View File

@@ -214,6 +214,49 @@ p { margin: 0; }
color: var(--accent);
}
/* ── Inline rows / minor controls ───────────────────────────────────── */
.inline-row {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
margin-top: 8px;
}
.mini-label {
display: flex;
align-items: center;
gap: 6px;
font-family: var(--mono);
font-size: 11px;
color: var(--muted);
}
.slider-small {
width: 90px;
}
.select-small {
font-family: var(--mono);
font-size: 12px;
padding: 4px 6px;
border-radius: 6px;
border: 1px solid var(--border);
background: var(--bg);
color: var(--text);
}
/* Author CSS always wins over the UA stylesheet's [hidden]{display:none},
so an unconditional `display: flex` here would keep these controls
visible even while `hidden` is set on the element. */
#exposure-controls:not([hidden]) {
display: flex;
flex-direction: column;
gap: 8px;
margin-top: 8px;
}
/* ── Actions / buttons ──────────────────────────────────────────────── */
.actions-row {