Releases: buysellads/carbon-sdk
v0.2.0
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
interactionIdprop is now required on<CarbonAd>. Pass a static value like"main"for single-run tools.fallback.linkis now required onCarbonAdFallback.