chore: release 1.3.7 — ad-delayer skill (BLD-168) - #67
Closed
omrijanach-bria wants to merge 25 commits into
Closed
omrijanach-bria wants to merge 25 commits into
omrijanach-bria wants to merge 25 commits into
Conversation
* chore: release 1.3.3 (#46) * fix: rename lifestyle_shot_by_text param prompt → scene_description (#45) Align SKILL.md examples with the API reference, which documents the /v1/product/lifestyle_shot_by_text parameter as scene_description. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: bump version to 1.3.3 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: add Claude Code plugin install instructions to README Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: add video-remove-background skill New skill for Bria's video background removal API (POST /v2/video/edit/remove_background), based on https://docs.bria.ai/video-editing/editing-endpoints/remove-background - SKILL.md with auth flow, usage, alpha-support rules, and examples - references/api-endpoints.md covering remove_background, the local video upload service, and status polling - bria_video_client.sh helper: local file upload, async polling with video_url extraction, 422/413 error guidance Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: correct video-remove-background skill with live-tested API behavior End-to-end tested against the production API. Corrections vs the docs: - Transparent background only accepted with webm_vp9, mkv_vp9, mov_proresks (server 422 rejects gif and mov_h265 despite docs) - gif output preset fails server-side (500) — replaced the GIF example with a webm + ffmpeg palettegen conversion - mov_proresks returns ProRes 4444 without an alpha plane — noted, and the editing example now uses mkv_vp9 (verified RGBA) - Documented the observed default preset (webm_vp9, ALPHA_MODE=1) and how to verify VP9 alpha (ffprobe shows yuv420p; alpha is a side channel) Client: configurable polling (BRIA_POLL_INTERVAL/BRIA_POLL_ATTEMPTS), prints status_url on timeout so jobs can be re-polled, corrected 422 hint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: bump version to 1.4.0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: align all version references to 1.4.0 - package-lock.json (was stale at 1.3.0) - marketplace.json metadata version, plus register the new video-remove-background plugin - skill metadata versions (bria-ai, image-utils, remove-background, vgl) - BriaSkills User-Agent strings across skills and kiro mirrors - kiro POWER.md source-version notes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: use version 1.3.4 instead of 1.4.0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
….3.5 bump (#50) * Dev (#48) * fix: rename lifestyle_shot_by_text param prompt → scene_description (#45) Align SKILL.md examples with the API reference, which documents the /v1/product/lifestyle_shot_by_text parameter as scene_description. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: add video-remove-background skill (#47) * chore: release 1.3.3 (#46) * fix: rename lifestyle_shot_by_text param prompt → scene_description (#45) Align SKILL.md examples with the API reference, which documents the /v1/product/lifestyle_shot_by_text parameter as scene_description. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: bump version to 1.3.3 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: add Claude Code plugin install instructions to README Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: add video-remove-background skill New skill for Bria's video background removal API (POST /v2/video/edit/remove_background), based on https://docs.bria.ai/video-editing/editing-endpoints/remove-background - SKILL.md with auth flow, usage, alpha-support rules, and examples - references/api-endpoints.md covering remove_background, the local video upload service, and status polling - bria_video_client.sh helper: local file upload, async polling with video_url extraction, 422/413 error guidance Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: correct video-remove-background skill with live-tested API behavior End-to-end tested against the production API. Corrections vs the docs: - Transparent background only accepted with webm_vp9, mkv_vp9, mov_proresks (server 422 rejects gif and mov_h265 despite docs) - gif output preset fails server-side (500) — replaced the GIF example with a webm + ffmpeg palettegen conversion - mov_proresks returns ProRes 4444 without an alpha plane — noted, and the editing example now uses mkv_vp9 (verified RGBA) - Documented the observed default preset (webm_vp9, ALPHA_MODE=1) and how to verify VP9 alpha (ffprobe shows yuv420p; alpha is a side channel) Client: configurable polling (BRIA_POLL_INTERVAL/BRIA_POLL_ATTEMPTS), prints status_url on timeout so jobs can be re-polled, corrected 422 hint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: bump version to 1.4.0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: align all version references to 1.4.0 - package-lock.json (was stale at 1.3.0) - marketplace.json metadata version, plus register the new video-remove-background plugin - skill metadata versions (bria-ai, image-utils, remove-background, vgl) - BriaSkills User-Agent strings across skills and kiro mirrors - kiro POWER.md source-version notes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: use version 1.3.4 instead of 1.4.0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: add Bria AI OpenClaw plugin (bria-ai + video-remove-background) Skill-bundle plugin for OpenClaw / ClawHub under @bria/bria-ai-openclaw. Ships openclaw.plugin.json + package.json (openclaw.compat/build) and two skills: bria-ai (image gen/edit/RMBG) and video-remove-background (transparent/alpha video matting). Auth via Bria device flow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: expand OpenClaw bundle plugin to all six Bria skills Bundle plugin @bria/bria-ai-openclaw now contains bria-ai (OpenClaw device-flow variant), video-remove-background, remove-background, vgl, image-utils, and automotive. Validated with clawhub package validate (status: pass). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: scope OpenClaw bundle plugin to @galbria Rename package to @galbria/bria-ai-openclaw so the scope matches the publishing owner; update README install/publish commands accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(bria-ai): document product_dimensions endpoint Add the Product Dimensions endpoint (POST /v2/image/edit/product_dimensions) to the bria-ai skill: a Core Capabilities row and bria_call example in SKILL.md, plus a full parameter reference in references/api-endpoints.md. Verified live and rendering correctly on both prod and int. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: release 1.3.5 Bump bria-skills to 1.3.5 for the new bria-ai Product Dimensions endpoint (POST /v2/image/edit/product_dimensions), verified live on prod and int. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat: bundle ecommerce skill and enrich product_dimensions example - Add ecommerce skill (packshot/cutout/dimensions/lifestyle → marketplace variants catalog pipeline) and bundle it under the bria-ai plugin in marketplace.json so installing the main plugin pulls it too. - build_catalog.py: re-encode packshot/lifestyle downloads to real JPEG when the destination is .jpg (flatten alpha onto white); keep raw bytes for .png so cutout/dimensions transparency is preserved. Fixes files that were PNG bytes with a .jpg extension. - bria-ai SKILL.md: upgrade the product_dimensions example to show dual cm/in callouts (units_display: dual_slash) plus capacity and Net Weight. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(bria-ai): merge e-commerce catalog pipeline into main skill Fold the standalone ecommerce skill into bria-ai to concentrate usage and discoverability in the main skill: - Relocate build_catalog.py, export_variants.py, and marketplace-presets.md into bria-ai/references; add cutout/packshot/shadow/lifestyle_shot_by_image to bria-ai's api-endpoints reference. - Add a "Product Catalog Pipeline (batch)" section to bria-ai/SKILL.md (build_catalog driver, NEEDS_DIMENSIONS gate, marketplace variants, listing copy scaffold). - Rebalance the bria-ai description's first 160 chars so product-catalog, packshot, lifestyle-shot, and cutout search queries pass the token gate while keeping background-removal coverage (kept under the 1024-char limit). - Reduce ecommerce to a thin redirect stub pointing at bria-ai (kept as a discovery entry point). Version stays 1.3.5 per request. Verified end-to-end: auth, product endpoints, batch pipeline (true-JPEG output), and marketplace variants all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(bria-ai): document extract_object endpoint Add /v2/image/edit/extract_object to the bria-ai skill: isolate a named object from an image (by text) into a transparent PNG cutout. Documents request/response in the API reference, adds a Core Capabilities row and a bria_call usage example, and adds "object extraction" to the description triggers. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(bria-ai): optimize description for search discoverability Rework the description's first 160 chars (the search token gate) so previously-invisible queries now pass: transparent png, photo editor, ecommerce images, create images, extract object, photo restoration. 14 core queries now fully token-match (was 7). Verified with SSSO against the pre-change baseline: 6 gate fixes, no regressions, vector scores flat-to-improved on all 24 target queries. Post-160 section rewritten with assertive trigger language ("ALWAYS use this skill when..."). Description at 960 chars (limit 1024). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: complete 1.3.5 version bump and drop extract_object docs The 1.3.5 release commit only bumped package.json, marketplace.json and bria-ai/SKILL.md, leaving 12 files at 1.3.4 — including User-Agent header docs that instructed agents to send `BriaSkills/1.3.4`. Bump every remaining version string so the release is internally consistent. Also removes the extract_object documentation added in 054b551. The endpoint is not in Bria's public API docs and was never exercised against production, so its request contract is unverified; shipping it would have agents emit calls that may fail. Drops the API reference section, the Core Capabilities row, the bria_call example, and the "object extraction" description trigger. Can be restored once the contract is confirmed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(bria-ai): honour --no-dims when a measurements file is present --no-dims is documented as "skip dimension images without asking", but it only gated the NEEDS_DIMENSIONS error — measurement auto-detection still ran. With a dims.json in the cwd or input folder, --no-dims was silently ignored and a dimensions.png was rendered for every product, spending an API call per product the caller had explicitly opted out of. Skip auto-detection entirely when --no-dims is passed. Verified against production: --no-dims with dims.json present now produces no dimensions image, while the auto-detect path and the NEEDS_DIMENSIONS gate (exit 2) are unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Ubuntu <ubuntu@ip-172-31-29-64.ec2.internal>
Clears the conflicts blocking PR #51 (dev -> main). All 60 conflict hunks across 24 files were version-string collisions only: main was still at 1.3.4 while dev carries the completed 1.3.5 bump, and both sides had touched the same lines since the merge base. Verified programmatically that every hunk's two sides were identical after normalizing the version, then resolved in favour of 1.3.5 (dev's side). main contributed no file content that dev did not already have — the resolved tree is byte-identical to origin/dev before this merge. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…skill Both are hand-maintained duplicates of skills/bria-ai/references/api-endpoints.md and had fallen 138 lines behind it: missing the /v1/product/* endpoints and product_dimensions, and still naming the old increase_resolution `scale` and lifestyle_shot_by_text `prompt` parameters. They were byte-identical to each other, so both take the canonical file as-is.
Checked every path, parameter, default and enum in the endpoint reference against the service's own route registrations and input models rather than against the previous copy of these docs, and corrected what no longer holds: - /v2/image/generate takes `images`, not `image_url`, and has no num_results. Its documented input rules are what the model enforces, and sync cannot ask for 4MP. - gen_fill drops num_results and negative_prompt: the endpoint's model defines neither, and a supplied negative_prompt is overwritten. - expand's aspect_ratio is optional and takes nine ratios or a float, not five. - increase_resolution takes 2 or 4 — an enum, not a range — and preserve_alpha defaults to true. - blend takes no overlay; sketch_to_colored_image takes no prompt; relight's light_type has a default and only light_direction is required. - product/integrate is served under /v2, and product dimensions has a current path with the documented one kept as a deprecated alias. - A failed job reports status ERROR, never FAILED, so the polling example was waiting for a value that never arrives. The openclaw capability table listed four endpoints that do not exist, and the kiro and openclaw upscale examples still passed the pre-rename `scale`. No behaviour changes and no new capability — every edit here brings a claim back in line with what the service already does.
SKILL.md's example comment said `desired_increase` had a "range 2-4" while the endpoint reference now says 2 or 4 — an enum. A sandboxed agent asked for 3x read both, went with the user's 3, and flagged the contradiction in its own report. The comment now states the enum, and drops the advice to pass preserve_alpha for transparent inputs, which is the default anyway.
…rrections fix: Correct endpoint reference claims against the current API (BLD-179)
/v2/image/edit takes 1-4 reference images, and the order they are sent in is how
the instruction addresses them ("dress the man in image 1 in the santa outfit
from image 2"). The endpoint reference documents the ordered images array, seed,
aspect_ratio's single-image caveat, model_version as deprecated-and-ignored, the
three 422s and the response warning field, across the canonical skill and both
the kiro and openclaw variants. Each SKILL.md gains a capability row, a
two-image bria_call example and a short passage on wording an instruction.
bria_call takes a repeatable --image flag for the extra references; single-image
calls build byte-identical payloads to before. The kiro python, typescript and
bash clients' edit methods accept several images the same way.
The section also states that this endpoint is polled rather than run with
"sync": true, which fails at the gateway, and that more than four images is
refused rather than truncated.
Multi-image requests stay gated on the fibo-edit-1-5-enabled rollout, so this
documents the capability that flag turns on. No version bump: that belongs to
the release from dev to main.
feat: Multi-reference image editing across the skill variants (BLD-179)
Turn a finished, flat ad back into editable layers via /v2/ads/image_to_layers. Adds the skill, its shell client and endpoint reference, registers it in the marketplace, CLI and README, and bumps to 1.3.7.
…al skills bria-ai documents remove_background itself but never named the dedicated skill, so nothing steered a cutout-only ask toward it. Same for video.
…nd-removal skills" This reverts commit eda3010.
Follows the remove_background precedent — the capability is reachable from the general skill too. bria_call cannot finish this flow (result.url, 2-3 min, plus two more fetches), so the section says so and points at ad-delayer. Frontmatter triggers untouched, so routing is unaffected.
Co-authored-by: Gal Davidi <158810732+galbria@users.noreply.github.com>
Co-authored-by: Gal Davidi <158810732+galbria@users.noreply.github.com>
Co-authored-by: Gal Davidi <158810732+galbria@users.noreply.github.com>
feat: add ad-delayer skill (BLD-168)
Bump every version string (package versions, skill frontmatter, BriaSkills User-Agent examples) from 1.3.5 to 1.3.6 in one sweep, so the release ships internally consistent — the 1.3.5 bump missed 12 files and needed a follow-up commit.
# Conflicts: # .claude-plugin/marketplace.json # bria-ai-openclaw/openclaw.plugin.json # bria-ai-openclaw/package.json # bria-ai-openclaw/skills/automotive/SKILL.md # bria-ai-openclaw/skills/automotive/references/code-examples/bria_client.sh # bria-ai-openclaw/skills/bria-ai/SKILL.md # bria-ai-openclaw/skills/bria-ai/references/api-endpoints.md # bria-ai-openclaw/skills/bria-ai/references/capabilities.md # bria-ai-openclaw/skills/bria-ai/references/code-examples/bria_client.sh # bria-ai-openclaw/skills/image-utils/SKILL.md # bria-ai-openclaw/skills/image-utils/references/code-examples/image_utils.py # bria-ai-openclaw/skills/remove-background/SKILL.md # bria-ai-openclaw/skills/remove-background/references/api-endpoints.md # bria-ai-openclaw/skills/remove-background/references/code-examples/bria_client.sh # bria-ai-openclaw/skills/vgl/SKILL.md # bria-ai-openclaw/skills/video-remove-background/SKILL.md # bria-ai-openclaw/skills/video-remove-background/references/api-endpoints.md # bria-ai-openclaw/skills/video-remove-background/references/code-examples/bria_video_client.sh # kiro/bria-ai/POWER.md # kiro/bria-ai/steering/api-endpoints.md # kiro/bria-ai/steering/bria-client-bash.sh # kiro/bria-ai/steering/bria-client-python.py # kiro/bria-ai/steering/bria-client-typescript.ts # kiro/bria-ai/steering/workflows.md # kiro/image-utils/POWER.md # kiro/image-utils/steering/image-utils-python.py # kiro/vgl/POWER.md # package-lock.json # package.json # skills/bria-ai/SKILL.md # skills/bria-ai/references/api-endpoints.md # skills/bria-ai/references/code-examples/bria_client.sh # skills/bria-ai/references/code-examples/build_catalog.py # skills/ecommerce/SKILL.md # skills/image-utils/SKILL.md # skills/image-utils/references/code-examples/image_utils.py # skills/remove-background/SKILL.md # skills/remove-background/references/api-endpoints.md # skills/remove-background/references/code-examples/bria_client.sh # skills/vgl/SKILL.md # skills/video-remove-background/SKILL.md # skills/video-remove-background/references/api-endpoints.md # skills/video-remove-background/references/code-examples/bria_video_client.sh
main's 1.3.6 release commit (23bfe35) was squash-merged, so it never shared dev's 1.3.6 bump. Both sides moved off 1.3.5 independently and every version line read as a conflict. Resolved wholly in dev's favour: the merged tree is byte-identical to dev, so this records main in dev's history without changing a single line.
Contributor
Author
|
Superseded by the cleaner route: #68 merges Leaving this open as a fallback until #68 lands — it is still CLEAN and mergeable if the release needs to go out immediately. Once #68 is merged with a merge commit, I will close this and open the canonical |
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Releases 1.3.7: the ad-delayer skill, now that Bria's Ad Delayer API is live on prod. Content is identical to
dev(#65 + #66); the extra commit on this branch is amainmerge-back that changes no lines. BLD-168.Where this code actually runs
Release Skillsfires on this push tomain, zips all seven skills inskills/*/into.skillassets, and tags v1.3.7 frompackage.json.Publish to npmchains off it and publishesbria-skills@1.3.7. This is the release that puts ad-delayer into the artifacts installers actually download./plugin install ad-delayer@bria-skillsstarts resolving,npx bria-skillslists it, and it appears in the marketplace and the README table. It has been unavailable everywhere since revert: remove ad-delayer skill until the API ships (BLD-168) #63 pulled it in August.POST /v2/ads/image_to_layers, polls, follows the manifest pointer, and writes a folder of layer assets plusresult.jsonnext to the ad.User-Agentexample an agent copies now readsBriaSkills/1.3.7, across all three variant trees — the interim per-surface signal BLD-168 relies on, since server-sidesurfacetelemetry does not exist.Verified live against prod, 2026-09-09. A real 675×1200 flat ad through
POST /v2/ads/image_to_layersonengine.prod.bria-api.com:202in 0.9s,COMPLETEDafter 70s, andresult.urlserved a validcreation.jsonwith correct canvas dimensions and 12 layers — imagery withasset_pathURLs, copy carried as editable text with full typography. The skill's ownbria_delayer_client.shthen ran end to end on the same ad: exit 0, 9 layer assets plus the manifest downloaded. A deliberately malformed submit came back asstatus: ERRORwith{"code": 400, "message": "An attachment (reference image URL) is required."}on the status poll — the path the skill documents and the client handles.What's in this release
hiddenfield and thetext_<n>_svg/text_<n>_fontlayer pairing are now documented (an agent painting every layer would otherwise draw each headline on top of itself), andasset_pathis documented as.pngor.svg, since the text twins are outlined SVG rather than raster.BriaSkills/<version>User-Agent examples. Every match in the repo is Bria's own version string. The bump is what makes the release possible:v1.3.6is already tagged and1.3.6is already on npm.mainmerge-back, resolved wholly in dev's favour. The merged tree is byte-identical todev, verified with an emptygit diff.Decisions in this change
release/1.3.7rather thandev, because of a squash. chore: release 1.3.6 — multi-reference image editing (BLD-179) #64 was squash-merged intomain, so main's release commit (23bfe35) has a single parent at4bf2b81, where the version was 1.3.5. main then went 1.3.5 → 1.3.6 and dev went 1.3.5 → 1.3.7 with no shared commit between them, so a directdev→mainPR reads every version line as a conflict — 42 files of them, none a genuine disagreement. This branch isdevplus a merge-back that resolves it, which makes the merge clean. Content is unchanged fromdev.kiro/andbria-ai-openclaw/ship the version bump but not the skill. Their trees stay at three and six skills, matching the BLD-168 scope decision to ship the Claude tree first, following the precedent ofautomotive, which lives only in the openclaw tree.How this one gets merged, and why it ends the recurring conflict
Squash-merge this PR, then open
main→devand merge that one with a merge commit.The version-line conflict above has now recurred twice, because every release squash-merges into
mainand leavesdevwith no commit in common. The back-merge is what settles it. I simulated both steps locally before recommending them:maingives main exactlydev's content —git diffbetween them is empty.main→devPR then merges with zero conflicts and changes no content. Both branches reach 1.3.7 and add identical ad-delayer files, so git resolves the identical changes on its own rather than flagging them.4bf2b81up to this release commit. Simulating the next release on top of it — bump to 1.3.8 ondev, thendev→main— gives zero conflicts, where today it would give 42 files of them.The back-merge has to be a merge commit; squashing it records no shared parent, and 1.3.8 would need the same manual merge-back again.