v1.0.0 - golden goal: 49-filter chain shipped
The complete v1.0.0 release of bgbgone. Every issue in epic #1 closed.
Highlights
49 filters spanning tone+colour, spatial, stylise, composite, mask-aware fg, geometric, and mask-shape categories. Backed by Core Image primitives (CIColorControls, CIGaussianBlur, CISepiaTone, CIMorphologyMaximum, CIBlendWithMask, ...). FFmpeg-style chain syntax:
bgbgone in.jpg --filter "bg:grayscale"
bgbgone in.jpg --filter "bg:blur=20"
bgbgone in.jpg --filter "fg:outline=color=#fff:width=4,shadow=blur=10:offset=4,4:opacity=0.5"
bgbgone in.jpg --filter "sepia=0.7,vignette=0.4:1.2"
bgbgone in.jpg --bg image:./bg.jpg --filter "bg:adjust=brightness=-0.15:saturation=0.8; fg:adjust=saturation=1.1"Run bgbgone --filters-list to see the full catalogue with valid layers, signatures, and one-line docs for each filter.
What changed since v0.2.0
-
49-filter
--filterchain (T5..T53) + DSL parser (T1) + registry (T2) + LayeredImage pipeline (T3) + perf baseline (T4) -
--filters-listdiscovery command (T58) -
HTTP
/v1.0/bgbgoneaccepts afilterform field (T59) -
JPEG alpha-loss refusal:
BGBG_USER_JPEG_ALPHA_LOSS(T57) -
Breaking:
--scale,--position,--feather,--threshold,--mask-onlyhard-removed (T54/T55/T56). Use the filter equivalents:Removed flag Replacement --mask-only--filter "fg:matte"--feather N--filter "mask:feather=N"--threshold N--filter "mask:threshold=N"--scale F--filter "fg:scale=F"--position X% Y%--filter "fg:translate=dx,dy"The server form fields (
scale=,position=,feather=,threshold=,channels=alpha) remain for kaleido.ai removebg backward-compat.
Tests
- 181/181 swift unit tests
- 209/209 integration tests
- 0 RED tests remain
Architecture
See docs/design.md for the deferred-flatten pipeline and error model. See docs/filters-out-of-scope.md for explicitly-rejected ideas.