Product Updates
add paid Ads composition library — and persist completed stage scores across leftover runs
add paid Ads composition library · persist completed stage scores across leftover runs · ship honest shopper offer UI
Here’s what’s new for shoppers (August 26, 2026). Short notes — no version numbers.
Highlights
New add paid Ads composition library
We added a campaign Ads workspace for seven Meta/Google ad types, with copy sets, draft editing, immutable revisions, and paused publish.
New ship honest shopper offer UI
Shoppers can type or drag an offer price. Guest cart add runs first, then other lines are removed, so a failed add does not empty the cart.
New white motion offer-wave hero
Flip the home marketing slab to white and replace the static/phone hero with `buyr-offer-wave` ( product tiles, wave motion, decorative scroll-driven price dial, reduced-motion freeze).
New offer-wave hero v2 — bubbles, price wheel, green sweep
Rework the home offer-wave hero into a 14-tile circular bubble field on a 3-row traveling parallax wave (hybrid ambient + scroll-scaled amplitude).
New offer-wave hero v3 chips, SVG ribbons, SVG dial
Price chips on all 14 offer-wave bubbles (scaled typography per bubble size).
New offer-wave hero v4 loop, readability, real dial
Soften product bubble loop (slower travel, edge fade on wrap) and fade tiles that intersect headline/CTAs or the dial.
Fixes
- Catalog Progress, Ready, and launch-readiness detail now read the last **completed** checkpoint per pipeline stage from existing run JSONB, not the leftover empty run.
- Same-type products still fill related first.
- Related products keep same `product.type` only (Shopify recs, then catalog top-up).
- When Shopify related / same-type Liquid is empty, product pages run a type waterfall instead of leaving a blank gap.
- Plain close X (no circle), 44×44 tap target.
- Replaces duplicate `&v=<semver>` on `| asset_url` links with `&buyr_v=<semver>` so Shopify’s content-hash `v` param is not overridden.