v1.1.0 - README doc polish + per-filter docs + image lints
Doc-quality pass on top of v1.0.0 with hard lint guards so removed flags and broken filter syntax can never re-appear in the docs.
README
- New
## Filter showcase --filter chain in actionsection (positioned well below Recipes — primary surface stays focused on background removal). Five end-to-end before/after pairs against strict-CC0 fixtures:- Colour-pop — red panda,
bg:grayscalewith auto-promoted self-as-bg → forest goes monochrome, fur stays vibrant orange - Portrait mode — red panda,
bg:blur=60→ silky background, pin-sharp subject - Sticker — corgi on dark navy plate, thick white halo + drop shadow
- Vintage backdrop — kingfisher,
bg:sepia=1.0,adjust=brightness=-0.3:saturation=0.3; vignette=2:1→ modern subject in front of vintage backdrop - Dramatic composite — corgi on Flying Dragon Nebula, three-stage colour grade with golden outline
- Colour-pop — red panda,
- Edge refinement section migrated to
--filter "mask:feather=N"syntax with restored 4-up progression panel + pixel-level close-up zoom.
Per-filter docs
- 49 per-filter MD pages in
docs/filters/+ index + cross-cutting stubs (composition, recipes, colour-spaces, perf).
Hard lints (wired into make release)
scripts/lint-readme.sh— fails the build if any removed flag (--feather/--threshold/--mask-only/--scale/--position) re-appears in README (allowing only lines that explicitly document the removal).scripts/lint-docs.sh— extracts every--filter "..."from every markdown file (README, docs/, docs/filters/) and validates each chain against the real parser+registry. 70 chains validated, 0 invalid.
Pipeline
- Auto-promote source as bg plate when a filter uses the
bglayer but no--bg image:...flag is passed. Letsbgbgone in.jpg --filter "bg:grayscale"produce the colour-pop without forcing the user to type--bg image:in.jpg. - Outline / glow / shadow / inner-shadow rebuilt so their effects are actually visible: foreground =
blendWithMask(subject, tinted_plane, original_mask)instead of compose-over (which the full-frame opaque foreground was hiding).
CLAUDE.md
- New Hypothesis-then-AI-review for every image asset section mandating: (1) state expected visible change before generation, (2) regen against freshly-built binary, (3) AI-review with vision tool, (4) cmp-diff against baseline.
Tests
- 181/181 unit
- 209/209 integration
- lint-readme + lint-docs both green