v0.1.20 — Critical --feather bugfix, dropped unsupported names
Critical bugfix
--feather > 0 silently disabled background removal in v0.1.16–v0.1.19. MaskPostProcess.featherMask ran the alpha matte through CIGaussianBlur and returned an sRGB CGImage. CGContext.clip(to:mask:) only treats the input as an alpha mask when it is DeviceGray with no alpha; with an sRGB input the clip degenerated to "no clipping", so the entire input flowed through unmodified. Visible symptom: bgbgone in.jpg --feather 8 -o out.png produced in.jpg verbatim, no cutout.
Fixed by rasterising the blurred mask back into an explicit 8-bit DeviceGray context before returning. Regression test added: --feather 0/8/16 corner pixel must have alpha 0 across all three radii.
Dropped unsupported names
The CLI used to accept --algo vn-remove, --algo sky, and --to webp and only fail at framework level (claiming they were "reserved spellings"). Removed — they were premature-optimisation fluff that documented features that did not exist. The parser now rejects all three with exit code 2 (unknown flag). --help, --check, the README, and design.md only list what actually works.
Supported on this SDK:
--algo auto | vn-mask | person | saliency--to png | jpg | heic | avif | tiff
Release-process change
make release is the new — and only — release path. It runs tests, installs to /usr/local/bin, regenerates every showcase image via the freshly-built binary (was using stale bgbgone from PATH before), and packages the tarball. CLAUDE.md spells out: never tag a release without it. Image regeneration is now part of release because the README is the user's primary surface; the v0.1.16 colour-space and feather bugs would have surfaced visibly if every release regenerated.
Tests
64 unit + 59 integration (was 56).
Install
brew tap Arthur-Ficial/tap
brew upgrade bgbgoneOr:
curl -L https://github.com/Arthur-Ficial/bgbgone/releases/download/v0.1.20/bgbgone-0.1.20-arm64-macos.tar.gz | tar xz
mv bgbgone /usr/local/bin/SHA-256: e56f5c417237761aabc300ec9e11692aa887d8ff6cc2738a5f4c97e50bd3efc2