Repository navigation
OptiView Ads SDK 1.3.0 - #946
Conversation
This comment has been minimized.
This comment has been minimized.
MaartenRimaux
left a comment
There was a problem hiding this comment.
Automated review (Devin pr-review: Claude Fable, Gemini Argon, GPT Astra) of e17bd99
documentation#946 — OptiView Ads SDK 1.3.0 Verdict: REQUEST CHANGES
Bot sync of the generated SDK API references (TypeDoc web/RN, Dokka Android, DocC iOS, and a first Roku page) from 1.0.0 to 1.3.0 — 4741 files, all under ads/static/ads/v2/api-reference/. The generated sites are structurally sound (version stamps 1.3.0 everywhere, every DocC page has its data JSON, no broken web/RN links, every existing deep link from the .mdx guides and sidebar still resolves, Roku page byte-identical to a regeneration from SDK release/1.3.0, no leaked paths/hosts/secrets). One in-repo gap should be fixed on this branch (the Roku reference is unreachable); the remaining confirmed items are SDK-side documentation defects that this sync publishes and that need a KDoc/DocC/JSON fix plus regeneration.
Findings (each posted as its own inline comment; paths relative to ads/static/ads/v2/api-reference/ unless noted)
- [SHOULD-FIX] New Roku API reference is unreachable from the site navigation —
roku/index.html:27 - [SHOULD-FIX] Android reference: 9 new dead links to @suppress-ed internal types —
android/ads-sdk-core/com.dolby.optiview.ads.core/resolve-external-vendor-parameters.html:97 - [SHOULD-FIX] Web/RN reference: new 1.3.0 types referenced in signatures have no page —
web/interfaces/BreakManifest.html:66 - [SHOULD-FIX] Android/iOS: SessionConfig.assetParameterMacros still says null/nil leaves the macro unresolved —
android/ads-sdk-core/com.dolby.optiview.ads.core/-asset-parameter-macro-value/-companion/of.html:97 - [SHOULD-FIX] Roku: updateAssetParameterMacros keys must be the full
$NAME$token —roku/index.html:79 - [NIT] Android AdChannelChangeReason.EVENT_BOUNDARY has no description —
android/ads-sdk-core/com.dolby.optiview.ads.core/-ad-channel-change-reason/index.html:188 - [NIT] Roku adchannelchange description omits
reasonandmanifestUrl—roku/index.html:158 - [NIT] PR body template says "Web API reference" for a five-platform sync —
.github/workflows/ads-sdk-release.yml:41
Reviewer agreement: 1 and 2 raised by 3/3; 7 and 8 by 2/3; 3, 4 (Gemini), 5 (Astra), 6 (Fable) by 1/3 — all verified against the PR head and the SDK release/1.3.0 sources.
Requirements: no Jira ticket (release automation PR). PR body ("publish the 1.3.0 API reference"): met for all five platforms. Implicit — new platform reachable from the site: missing (finding 1).
Uncertain: none.
Rejected reviewer claims: 3
- Dokka
--root--.htmldead links (Fable, NIT) → pre-existing: 45 such links onmainand 45 at the PR head, none introduced here. - Asset-parameter precedence described inconsistently across platforms — Android
Asset.assetParameters"lowest-precedence", Android/iOSSessionConfig.assetParameters"merged on top of" the asset layer, web/AndroidupdateAssetParameters"highest of the three layers", vs. the actual order session < update < manifest-session < asset (Gemini, SHOULD-FIX) → real, but pre-existing: identical text in the 1.0.0 reference onmainand the implementation already had four layers atv1.0.0; not introduced by this PR. Worth an SDK-side docs ticket. - RN
updateAssetParameterMacros"null removes a name" vsAssetParameterMacroUpdates(Gemini) → pre-existing since 1.0.0; noted inside finding 4.
Reviewers: Fable APPROVE WITH NITS · Gemini REQUEST CHANGES · Astra REQUEST CHANGES
Findings outside the changed lines
-
[SHOULD-FIX] New Roku API reference is unreachable from the site navigation
This PR publishes
/ads/v2/api-reference/roku/for the first time, but nothing on the site links to it:sidebarsAds.ts(lines 125–148) still ends with the React Native entry andads/api/index.mdx(lines 37–40) lists only Web, Android, iOS/tvOS and React Native. A Roku developer browsing API references cannot discover this page; it is reachable only by typing the URL. The 1.0.0 sync (#878) editedsidebarsAds.tsin the same PR, so this branch is the established place to wire it.Two related statements in the prose docs now contradict the published reference:
ads/player-integration/optiview-ads-sdk/index.mdxline 14 says the SDK is available for Web, Android, iOS and React Native, andads/workflows/index.mdxline 22 lists Roku as a platform where a client-side SDK is not an option.Fix (on this branch):
// sidebarsAds.ts, after the React Native entry { type: 'link', label: 'Ads SDK Roku API', customProps: { icon: '🧩' }, href: 'pathname:///ads/v2/api-reference/roku/', },
<!-- ads/api/index.mdx, after the React Native bullet --> - [Roku API reference](pathname:///ads/v2/api-reference/roku/) for the `OptiViewAds` SceneGraph component.
and update the two sentences above. If Roku is intentionally not announced yet, drop
rokufromAPI_DOCS_PLATFORMSin the SDK'sscripts/ci-publish-api-docs.shinstead, so an unlinked page is not published.ads/static/ads/v2/api-reference/roku/index.html:27 -
[SHOULD-FIX] Android reference: 9 new dead links to @suppress-ed internal types
The signature on this page links
ExternalVendorConfiguration,AssetParameterMacroTableandResolvedExternalVendorParametersto../-external-vendor-configuration/index.htmletc. — none of those pages exist in the tree, so every type in the signature 404s.Root cause (SDK repo,
release/1.3.0): the types carry@suppressin their KDoc (ExternalVendorConfiguration.ktlines 3–11,ChannelSwitch.ktlines 55–66), so Dokka omits their pages, but the@OptiViewInternalApifunctions that use them (resolveExternalVendorParameters,resolveExternalVendorConfigurations,changedExternalVendorProviders,decideDeliveryMode,resolveDeliveryMode,AdRenderer.resolveExternalVendorConfiguration,OverlayAdRenderer.setResumeCueEndResolver) have no@suppress, so they are documented with dangling links.Evidence: a link check over the Android site finds 9 missing targets that were not missing at 1.0.0 (
-asset-parameter-macro-table,-delivery-mode-choice,-delivery-mode-decision,-delivery-mode-source,-external-vendor-configuration,-external-vendor-configurations-result,-resolved-external-vendor-parameters,-resume-cue-end-source-renderer/{index,set-resume-cue-end-resolver}.html), referenced from 12 pages including theads-sdk-coreandads-sdk-runtimepackage indexes. 5 such targets pre-exist onmain.Fix: SDK-side — add
@suppressto those functions (or configure Dokka to suppress everything annotated@OptiViewInternalApi), regenerate and re-publish. A relative-link check inci-publish-api-docs.shwould catch this class of defect before the push.ads/static/ads/v2/api-reference/android/ads-sdk-core/com.dolby.optiview.ads.core/resolve-external-vendor-parameters.html:97 -
[SHOULD-FIX] Web/RN reference: new 1.3.0 types referenced in signatures have no page
events?: ChannelEvent[](new in 1.3.0, channel events) rendersChannelEventas plain text — there is noweb/interfaces/ChannelEvent.htmland no link, so a reader cannot find what a channel event contains.Root cause (SDK repo): TypeDoc runs on the curated
packages/sdk/src/public-api.tswithexcludeExternals: true(typedoc.json). Core types that@dolby-optiview/ads-sdkexports (viaexport * from '@dolby-optiview/ads-sdk-core') but thatpublic-api.tsdoes not re-export are treated as external: nonotExportedwarning, no page, no link.Evidence — unlinked type names in the generated HTML that did not occur at 1.0.0: web:
ChannelEvent(BreakManifest.events),ExternalVendorConfiguration(OptiViewAds.getExternalVendorConfiguration()),ExternalVendorConfigurationChangeEvent(OptiViewAdsEventMap),Os,OsVersionRange,Platform(Targeting.os/osVersion/platform); react-native:ExternalVendorConfiguration(24 occurrences),LiveStartPushbackConfig(OptiViewAdsReactNativeConfig.liveStartPushback),ChannelEvent,ExternalVendorConfigurationChangeEvent.OptiViewAdsExternalVendorsis exported by the web package and documented on RN/Android/iOS but absent from the web reference. Conversely the new RN pageinterfaces/ExternalPlaybackConfig.htmldocuments a type thatreact-native/src/index.tsdoes not export.Fix: SDK-side — re-export the referenced 1.3.0 types from
packages/sdk/src/public-api.tsandreact-native/src/public-api.ts(and alignreact-native/src/index.tswithpublic-api.ts), regenerate and re-publish.ads/static/ads/v2/api-reference/web/interfaces/BreakManifest.html:66 -
[SHOULD-FIX] Roku: updateAssetParameterMacros keys must be the full
$NAME$tokenThe page documents
{ set: { NAME: value }, remove: ["NAME"] }. The Roku implementation keys macros by the complete token including both$delimiters:RokuUpdateAssetParameterMacroscopiesupdate.setkeys unchanged (roku/sdk/source/OptiViewAds/AssetParameters.bslines 21–40) and substitution looks upvalues[token]whereRokuScanMacroTokenreturns$NAME$(AssetParameterMacros.bslines 134, 161–170); the regression test uses{ set: { "$CUSTOM$": "yes" }, remove: ["$OPTIVIEW_USER_AGENT$"] }(AssetParameterTests.bsline 104).Scenario: an app follows the page literally with
m.ads.callFunc("updateAssetParameterMacros", { set: { SEGMENT: "sports" } })— the call reportsupdated, yet$SEGMENT$in the asset parameters stays unresolved and is sent literally;remove: ["SEGMENT"]never removes a registered$SEGMENT$macro. The start-config row (assetParameterMacros, line 114) only says "values for$NAME$macros" and does not resolve the ambiguity.Fix: SDK-side — change the description in
roku/api/OptiViewAds.json(line 69) to e.g.Sets or removes macro values keyed by the full token: { set: { "$NAME$": value }, remove: ["$NAME$"] }.and regenerate (scripts/build-docs-roku.mjs; the page in this PR is byte-identical to the generator output, so only the JSON needs the edit).ads/static/ads/v2/api-reference/roku/index.html:79 -
[NIT] Roku adchannelchange description omits
reasonandmanifestUrlThe event is described as carrying
previousChannelId,channelId,previousDeliveryModeanddeliveryMode.AdChannelChangeEventalso hasreasonandmanifestUrl(roku/sdk/source/OptiViewAds/Events.bslines 151–158;SessionPolling.bsline 111 setsmanifestUrl), andreasonis the field apps need to tell a channel switch from an event boundary.Fix: SDK-side — extend the
adchannelchangeentry inroku/api/OptiViewAds.jsonand regenerate.ads/static/ads/v2/api-reference/roku/index.html:158 -
[NIT] PR body template says "Web API reference" for a five-platform sync
The auto-opened PR body reads "This PR contains the Web API reference for OptiView Ads SDK version 1.3.0", while the branch replaces the web, Android, iOS, React Native and Roku references. Not part of this diff — the text is hard-coded in the workflow (
.github/workflows/ads-sdk-release.ymlline 41); a follow-up onmain:--body "This PR contains the generated API references (web, Android, iOS, React Native, Roku) for OptiView Ads SDK version ${ads_sdk_version}.".github/workflows/ads-sdk-release.yml:41
Co-Authored-By: stef.daems <stef.daems@dolby.com>
The OptiView Ads SDK now ships a Roku component (SGAI and SSAI), so the SSAI row of the ad workflows table no longer names Roku as a platform where a client-side SDK is not an option. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
Replies to the automated review above, by finding: Replies for #946 (one per review thread)1. [SHOULD-FIX] New Roku API reference is unreachable (roku/index.html:27)Fixed. ddc096a adds the sidebar link (API references → Ads SDK Roku API), the bullet in 2. [SHOULD-FIX] Android reference: 9 new dead links to @suppress-ed internal types (resolve-external-vendor-parameters.html:97)Fixed in 93fb7cd, regenerated from SDK branch
No relative link in the Android tree points to a missing page any more. 3. [SHOULD-FIX] Web/RN reference: new 1.3.0 types referenced in signatures have no page (web/interfaces/BreakManifest.html:66)Fixed in 93fb7cd.
4. [SHOULD-FIX] Android/iOS: SessionConfig.assetParameterMacros still says null/nil leaves the macro unresolved (…/-asset-parameter-macro-value/-companion/of.html:97)Fixed in 93fb7cd. These docs now say a null/nil result omits the parameter that contains the macro (the same as
The RN 5. [SHOULD-FIX] Roku: updateAssetParameterMacros keys must be the full
|
Summary comment for #946Review findings addressed:
|
|
Opened #950 for the workflow-template follow-up. It targets |
Summary
This PR updates the OptiView Ads SDK API references to version 1.3.0 for Web, Android, iOS, React Native, and Roku.
Roku is now accessible under Player integration → OptiView Ads SDK → Roku and API references → Ads SDK Roku API. The new integration guide covers the signed component-library setup, application-owned Video node, session events, supported workflows, and shutdown order. The ad workflows page no longer lists Roku as a platform without a client-side SDK.
The references include the fixes from the automated review: no dead links in the Android reference, pages for every 1.3.0 type named in a web/RN signature, corrected asset-parameter macro semantics on Android/iOS/RN, and the full-token macro keys and
adchannelchangefields on Roku.Validation: production build, lint, typecheck, formatting, and the new guide's spellcheck passed. SDK-side gates: Dokka link check, TypeDoc type-link test, and the
@suppressconvention test.