Skip to content

Releases: buysellads/carbon-sdk

v0.2.0

02 Apr 05:41
63be87c

Choose a tag to compare

What's new

interactionId is now required

Tells the SDK when your app transitions between interactions — a new conversation, command, or session. This lets the ad refresh at natural breakpoints instead of staying static for the entire session. Single-run tools pass a static value like "main".

Fallback ads

Provide your own house ad to display when no paid ad is available, so the ad slot is never empty. A skeleton placeholder matching your fallback's shape prevents layout shift during the initial fetch. link is required so the CTA always has a clickable destination.

When showing a house ad, the "ads via Carbon" attribution is omitted since Carbon is not serving the content.

Empty ad detection

The ad server returns a tracking-only stub when no paid campaign is available. The SDK now detects these and falls back to the publisher's house ad instead of rendering an empty card.

30-second minimum display window

Rapid interaction changes no longer hammer the ad server. The SDK holds the current ad for at least 30 seconds before fetching a new one. Failed fetches cool down for 5 seconds before retrying.

Smoother transitions on refresh

Changing interactionId no longer tears down the component. The previous ad stays visible while the next one resolves — no loading flash between interactions.

Clean resize handling

Terminal resize no longer leaves ghost frames from previous widths.

CarbonBox branded border

Ads render inside a bordered box with "ads via Carbon" attribution, giving the ad unit a consistent look across CLI apps.

Breaking changes

  • interactionId prop is now required on <CarbonAd>. Pass a static value like "main" for single-run tools.
  • fallback.link is now required on CarbonAdFallback.