diff --git a/docs/DEVELOPER/certification-overview/cert-tests/index.md b/docs/DEVELOPER/certification-overview/cert-tests/index.md index 9734c37a..c850e031 100644 --- a/docs/DEVELOPER/certification-overview/cert-tests/index.md +++ b/docs/DEVELOPER/certification-overview/cert-tests/index.md @@ -76,7 +76,7 @@ The number of ads in the ad break are displayed during the ad break using the st **Tests**: App is meeting the criteria specified in 1.3. -**Expected Result**: App is meeting the contactually-specified terms for ad requests and performance. You can review your contract with [publisheradservices@roku.com](mailto:publisheradservices@roku.com?Subject=New%20application%20Request%20for%20Admittance%20to%20Roku%20Ad%20Revenue%20Share) to ensure the app is meeting the specified terms. +**Expected Result**: App is meeting the contractually-specified terms for ad requests and performance. You can review your contract with [publisheradservices@roku.com](mailto:publisheradservices@roku.com?Subject=New%20application%20Request%20for%20Admittance%20to%20Roku%20Ad%20Revenue%20Share) to ensure the app is meeting the specified terms. **ADS 1.3** Apps selling ads must comply with Roku's ad load, ad frequency, and acceptable ad requirements. See [Roku Advertising Guidelines](http://www.roku.com/adguidelines) for more information. @@ -161,7 +161,7 @@ Apps outside the U.S. Roku Streaming Store that have streamed more than an avera **Tests**: Verify ads in the app cannot be skipped by any mechanism, such as pressing the FF/REW buttons or sending a FF/REW voice command. -**Expected Result**: Ads may not be skipped by pressing the FF/REW buttons, sending a FF/REW voice command, or any other mechansim. +**Expected Result**: Ads may not be skipped by pressing the FF/REW buttons, sending a FF/REW voice command, or any other mechanism. ## **2. Accounts and purchases** diff --git a/docs/DEVELOPER/core-concepts/downloading-server-content.md b/docs/DEVELOPER/core-concepts/downloading-server-content.md index fce67260..7ce68805 100644 --- a/docs/DEVELOPER/core-concepts/downloading-server-content.md +++ b/docs/DEVELOPER/core-concepts/downloading-server-content.md @@ -22,7 +22,7 @@ configuration of the node. For many nodes that require more complex data, a `content` field is provided. This special field is designed to be assigned the value of a -Content node node that you configure to contain the data required for +Content node that you configure to contain the data required for the node. ## Configuring a content node for static content diff --git a/docs/DEVELOPER/core-concepts/event-loops.md b/docs/DEVELOPER/core-concepts/event-loops.md index af5e8069..d4d0a44a 100644 --- a/docs/DEVELOPER/core-concepts/event-loops.md +++ b/docs/DEVELOPER/core-concepts/event-loops.md @@ -124,7 +124,7 @@ Notice that the first parameter of wait has been changed so that it returns afte ## Types of messages -Different Brightscript components generate different types of messages. For example, the component "roSpringboardScreen" sends event messages of type "roSpringboardScreenEvent". In general, a Brightscript function dealing with a specific component should only react to events generated by that component. For example, as in the example above, code that deals with events generated by an roSpringboardScreen should be inside an if statement like this: +Different BrightScript components generate different types of messages. For example, the component "roSpringboardScreen" sends event messages of type "roSpringboardScreenEvent". In general, a BrightScript function dealing with a specific component should only react to events generated by that component. For example, as in the example above, code that deals with events generated by an roSpringboardScreen should be inside an if statement like this: ```brightscript if type(message) = "roSpringboardScreenEvent" diff --git a/docs/DEVELOPER/core-concepts/handling-application-events.md b/docs/DEVELOPER/core-concepts/handling-application-events.md index bd6c97c7..131be912 100644 --- a/docs/DEVELOPER/core-concepts/handling-application-events.md +++ b/docs/DEVELOPER/core-concepts/handling-application-events.md @@ -101,7 +101,7 @@ c1(): v2 init(): v2 ``` -The `rsg_version` entry in your the manifest file defaults to 1.2. To check and test different SceneGraph versions without refactoring your app, see the guide on [Debugging](doc:debugging) +The `rsg_version` entry in the manifest file defaults to 1.2. To check and test different SceneGraph versions without refactoring your app, see the guide on [Debugging](doc:debugging) > Support for the [“rsg_version=1.0"](doc:channel-manifest) manifest flag is deprecated as of [Roku OS 8](doc:release-notes#roku-os-8). This deprecation means that the 1.0 features continue to work in [Roku OS 8](doc:release-notes#roku-os-8), but will no longer be supported (and thus should not be expected to work) starting with the next major firmware release. All apps must adopt the [current observer callback](doc:handling-application-events) model in successive firmware updates. diff --git a/docs/DEVELOPER/core-concepts/localization.md b/docs/DEVELOPER/core-concepts/localization.md index a7d4de11..d1c2b5eb 100644 --- a/docs/DEVELOPER/core-concepts/localization.md +++ b/docs/DEVELOPER/core-concepts/localization.md @@ -135,7 +135,7 @@ follows: `pkg:/locale/default/images/image_name_default` -In Brightscript in a \ element, you can also use the getLocalizedAsset() method in [ifLocalization](doc:iflocalization) to get a localized +In BrightScript in a \ element, you can also use the getLocalizedAsset() method in [ifLocalization](doc:iflocalization) to get a localized graphical image. For example: diff --git a/docs/DEVELOPER/core-concepts/threads.md b/docs/DEVELOPER/core-concepts/threads.md index 16781e9b..77a3e8f0 100644 --- a/docs/DEVELOPER/core-concepts/threads.md +++ b/docs/DEVELOPER/core-concepts/threads.md @@ -26,7 +26,7 @@ SceneGraph applications support these basic thread types: ## Thread limits -RokuOS imposes a limit of 100 concurrent threads per running instance of an app. When the instance exceeds 100 threads, a “too many threads” error exception (&h29) is raised; if the app does not catch this exception, app operation is terminated, along with a corresponding stack trace +Roku OS imposes a limit of 100 concurrent threads per running instance of an app. When the instance exceeds 100 threads, a “too many threads” error exception (&h29) is raised; if the app does not catch this exception, app operation is terminated, along with a corresponding stack trace In practice, developers should minimize the number of concurrent threads for better app performance. diff --git a/docs/DEVELOPER/core-concepts/xml-components/index.md b/docs/DEVELOPER/core-concepts/xml-components/index.md index b9ea7675..f304901d 100644 --- a/docs/DEVELOPER/core-concepts/xml-components/index.md +++ b/docs/DEVELOPER/core-concepts/xml-components/index.md @@ -15,7 +15,7 @@ next: An XML-based markup language has been added to the SceneGraph API that allows new SceneGraph components to be defined consisting of a set of SceneGraph nodes loaded from a declarative description, with interactive -or animated behaviors added using Brightscript, similar to how HTML and +or animated behaviors added using BrightScript, similar to how HTML and Javascript are used in web development. Once a XML component has been defined, it can be used just like any of diff --git a/docs/DEVELOPER/debugging/capturing-and-decrypting-ssl-packets.md b/docs/DEVELOPER/debugging/capturing-and-decrypting-ssl-packets.md index a9703866..5f251b95 100644 --- a/docs/DEVELOPER/debugging/capturing-and-decrypting-ssl-packets.md +++ b/docs/DEVELOPER/debugging/capturing-and-decrypting-ssl-packets.md @@ -69,12 +69,12 @@ Another easy way to capture SSL packets using Mac OS is through the wireless dia All you need is: -- The wireless channel of your Wifi connection, and +- The wireless channel of your Wi-Fi connection, and - The app width (20MHz, 40MHz, 80MHz). -These settings can be set in the Web GUI of your router. If this is not possible through the Web GUI of your router, find the default channel setting of your Wifi or install a different firmware on your router that can change this. +These settings can be set in the Web GUI of your router. If this is not possible through the Web GUI of your router, find the default channel setting of your Wi-Fi or install a different firmware on your router that can change this. -1. Setup your Wifi connection and open the Wireless Diagnostics tool (Pre-installed on later versions of Mac OS). +1. Setup your Wi-Fi connection and open the Wireless Diagnostics tool (Pre-installed on later versions of Mac OS). 2. In the top bar, find the field labeled **window** and choose the **Sniffer tool**. 3. In the window for the sniffer tool: - Set the **Channel** to the corresponding Roku’s wireless channel (Same channel as one displayed on router Web GUI) and, diff --git a/docs/DEVELOPER/debugging/socket-based-debugger.md b/docs/DEVELOPER/debugging/socket-based-debugger.md index 2a0defb7..9d5cb2ad 100644 --- a/docs/DEVELOPER/debugging/socket-based-debugger.md +++ b/docs/DEVELOPER/debugging/socket-based-debugger.md @@ -80,13 +80,13 @@ struct HandshakeFromDVP { magic_number uint64 - The Roku Brightscript debug protocol identifier, which is the following 64-bit value :0x0067756265647362LU.

This is equal to 29120988069524322LU or the following little-endian value: b'bsdebug\0. + The Roku BrightScript debug protocol identifier, which is the following 64-bit value :0x0067756265647362LU.

This is equal to 29120988069524322LU or the following little-endian value: b'bsdebug\0. protocol_major_version
protocol_minor_version
protocol_patch_version uint32 - Each Roku OS release supports only a single version of the Roku Brightscript debug protocol: + Each Roku OS release supports only a single version of the Roku BrightScript debug protocol:
diff --git a/docs/DEVELOPER/dev-tools/external-control-api.md b/docs/DEVELOPER/dev-tools/external-control-api.md index 113036d2..9b05ace8 100644 --- a/docs/DEVELOPER/dev-tools/external-control-api.md +++ b/docs/DEVELOPER/dev-tools/external-control-api.md @@ -145,7 +145,7 @@ The external control services provided by ECP are included in a simple RESTful A
Developer mode enabled

Control by mobile apps setting "Enabled" - query/app-object-counts/<channelId>

Available since Roku OS 13.0Returns the counts for the different BrightScript node objects in the app. This helps developers determine the counts of each type of object held by their Brightscript app.

The app may either be a sideloaded app or an app from the Streaming Store. To output the results for an app in the app store, the device must be keyed with the same developer ID/key that was used to generate the package file.Developer mode enabled

Control by mobile apps setting "Enabled" + query/app-object-counts/<channelId>

Available since Roku OS 13.0Returns the counts for the different BrightScript node objects in the app. This helps developers determine the counts of each type of object held by their BrightScript app.

The app may either be a sideloaded app or an app from the Streaming Store. To output the results for an app in the app store, the device must be keyed with the same developer ID/key that was used to generate the package file.Developer mode enabled

Control by mobile apps setting "Enabled" query/app-state/<appId>

Available since Roku OS 13.0Returns the current app state: "active", "background" (suspended; running in the background), or "inactive".

The app may either be a sideloaded app or an app from the Streaming Store. To output the results for an app in the app store, the device must be keyed with the same developer ID/key that was used to generate the package file.

If the app is not installed, this command returns an error.Developer mode enabled

Control by mobile apps setting "Enabled" exit-app/<channelId>[true]

(POST request)

Available since Roku OS 13.0Suspends or terminates an app that is running:
Developer mode enabled

Control by mobile apps setting "Enabled" inputSends custom events to the current application. It takes a user defined list of name-value pairs sent as query string URI parameters. The external control server places these name-value pairs into an associative array, and passes them directly through to the currently executing app script using a Message Port attached to a created roInput object.

Input Command Conventions includes detailed recommendations on how to pass your data.

Messages of type roInputEvent have a GetInfo() method that will obtain the associative array. The arguments must be URL-encoded.

This command is sent using an HTTP POST with no body. Example: POST /input?acceleration.x=0.0&acceleration.y=0.0&acceleration.z=9.8 diff --git a/docs/DEVELOPER/dev-tools/ide-support.md b/docs/DEVELOPER/dev-tools/ide-support.md index 72d45dc7..103f9a80 100644 --- a/docs/DEVELOPER/dev-tools/ide-support.md +++ b/docs/DEVELOPER/dev-tools/ide-support.md @@ -21,7 +21,7 @@ next: ## Key features -Building apps require several items to work together in unison: +Building apps requires several items to work together in unison: * A Roku device * Your app code diff --git a/docs/DEVELOPER/dev-tools/rale-tutorial.md b/docs/DEVELOPER/dev-tools/rale-tutorial.md index 91217c72..ad8d26a8 100644 --- a/docs/DEVELOPER/dev-tools/rale-tutorial.md +++ b/docs/DEVELOPER/dev-tools/rale-tutorial.md @@ -59,7 +59,7 @@ Dragging and resizing the node in the GUI will correspond with your Roku app on ## Release notes -**2.1.7**: RALE version 2.1.7 includes the following new features that that help developers work with designers to implement app layouts: +**2.1.7**: RALE version 2.1.7 includes the following new features that help developers work with designers to implement app layouts: - **Overlays**: Upload a wireframe and then place components on top of a transparent overlay to quickly and accurately match the layout design. - **Guides**: Drag vertical and horizontal guides onto your app to organize components into columns and rows and ensure text, images, and other nodes are aligned on the page per the wireframe. diff --git a/docs/DEVELOPER/dev-tools/resource-monitor/index.md b/docs/DEVELOPER/dev-tools/resource-monitor/index.md index 52764d27..7c5bfd55 100644 --- a/docs/DEVELOPER/dev-tools/resource-monitor/index.md +++ b/docs/DEVELOPER/dev-tools/resource-monitor/index.md @@ -181,7 +181,7 @@ Each of the values listed in the graph is described as follows: Swap - The total amount of app process memory swapped out to 'disk' (RokuOS uses ZRAM 'disk'). This value varies for different Roku device models. + The total amount of app process memory swapped out to 'disk' (Roku OS uses ZRAM 'disk'). This value varies for different Roku device models. Anonymous diff --git a/docs/DEVELOPER/dev-tools/sgdex.md b/docs/DEVELOPER/dev-tools/sgdex.md index d3f809fa..c1bcd2f6 100644 --- a/docs/DEVELOPER/dev-tools/sgdex.md +++ b/docs/DEVELOPER/dev-tools/sgdex.md @@ -10,6 +10,6 @@ metadata: next: description: '' --- -Scene Graph Developer Extensions (SGDEX) is a collection of developer sample code that demonstrates how a developer can use pre-built, reusable Roku Scene Graph (RSG) components to enable rapid development of apps that follow a consistent UX paradigm. +SceneGraph Developer Extensions (SGDEX) is a collection of developer sample code that demonstrates how a developer can use pre-built, reusable Roku SceneGraph (RSG) components to enable rapid development of apps that follow a consistent UX paradigm. For more information on using SGDEX, click [here](https://github.com/rokudev/SceneGraphDeveloperExtensions#overview) diff --git a/docs/DEVELOPER/dev-tools/static-analysis-tool/command-line-utility.md b/docs/DEVELOPER/dev-tools/static-analysis-tool/command-line-utility.md index 1c75b81e..02f7c48d 100644 --- a/docs/DEVELOPER/dev-tools/static-analysis-tool/command-line-utility.md +++ b/docs/DEVELOPER/dev-tools/static-analysis-tool/command-line-utility.md @@ -24,7 +24,7 @@ This utility supports Windows, Mac and Linux and requires Java to be installed i ## Structure of the utility -The static analysis utility is distributed as a ZIP file. The contents of the ZIP as as follows: +The static analysis utility is distributed as a ZIP file. The contents of the ZIP are as follows: ```brightscript . diff --git a/docs/DEVELOPER/discovery/continue-watching-cloud.md b/docs/DEVELOPER/discovery/continue-watching-cloud.md index f4b64b8f..b01ed539 100644 --- a/docs/DEVELOPER/discovery/continue-watching-cloud.md +++ b/docs/DEVELOPER/discovery/continue-watching-cloud.md @@ -321,7 +321,7 @@ As of Apr 1, 2026, the Continue Watching integration supports 24/7 live linear s * **Events**: A live linear stream requires a single playback event that is sent via a POST request after 60 seconds of playback. Do not make any other API calls to send events. * **ContentId**: The contentId is the ID of the live linear stream itself, not the currently playing program. -* **Deep links**: When your app receives a deep link from Continue Watching, the contentId is is the ID of the live linear stream (not the currently running program), and the mediaType is “liveFeed”. The required playback behavior is to resume with the currently running program in the stream. +* **Deep links**: When your app receives a deep link from Continue Watching, the contentId is the ID of the live linear stream (not the currently running program), and the mediaType is “liveFeed”. The required playback behavior is to resume with the currently running program in the stream. ## Managing user consent diff --git a/docs/DEVELOPER/discovery/implementing-deep-linking.md b/docs/DEVELOPER/discovery/implementing-deep-linking.md index 3ec36c5e..e96449c9 100644 --- a/docs/DEVELOPER/discovery/implementing-deep-linking.md +++ b/docs/DEVELOPER/discovery/implementing-deep-linking.md @@ -336,7 +336,7 @@ sub Main(args) '... if (args.mediaType <> invalid) and (args.contentId <> invalid) '... - 'print deep linking paramaters in args + 'print deep linking parameters in args print "args= "; formatjson(args) 'pretty print AA' 'output ' args= {action: "display", contentid: "myAwesomeShow|Season=1|Episode=1", instant_on_run_mode: "foreground", isexternal: true, lastExitOrTerminationReason: "EXIT_UNKNOWN", mediatype: "series", source: "hs-search", splashTime: "0"} @@ -401,7 +401,7 @@ The one-time TV program identified by the contentId is launched directly into pl You can learn how to implement deep linking in your app by watching the [Deep linking](doc:deep-linking) video lesson in Roku's [SceneGraph: Build a App online video course](doc:rsg). -This lesson details how to program your app to accept and process deep links upon being launched and while it is already running. It lists the different playback experiences requried for the various types of content in the app's feed. +This lesson details how to program your app to accept and process deep links upon being launched and while it is already running. It lists the different playback experiences required for the various types of content in the app's feed. ## Sample app diff --git a/docs/DEVELOPER/discovery/search/implementing-search.md b/docs/DEVELOPER/discovery/search/implementing-search.md index 4e760bba..39e228d8 100644 --- a/docs/DEVELOPER/discovery/search/implementing-search.md +++ b/docs/DEVELOPER/discovery/search/implementing-search.md @@ -243,7 +243,7 @@ Before submitting your search feed for review, you need to test your app's [deep > * The auto-created Search beta apps do count towards the limit of 10 beta apps per developer account. > * A developer account may have a maximum of four auto-created beta apps. > * The auto-created beta apps cannot be deleted (they are automatically removed 120 days after being created). - > * If a user on your team cannot access to the auto-created beta app, manually grant them access via the [User Management page in the Developer Dashboard](https://developer.roku.com/user/access). + > * If a user on your team cannot access the auto-created beta app, manually grant them access via the [User Management page in the Developer Dashboard](https://developer.roku.com/user/access). > > **Keeping the Search beta app synced with the production app** > diff --git a/docs/DEVELOPER/getting-started/architecture/content-metadata.md b/docs/DEVELOPER/getting-started/architecture/content-metadata.md index a9830acb..8da0b486 100644 --- a/docs/DEVELOPER/getting-started/architecture/content-metadata.md +++ b/docs/DEVELOPER/getting-started/architecture/content-metadata.md @@ -596,7 +596,7 @@ Playback configuration meta-data attributes are used to configure the playback o Url String - Stream URL for Scene Graph Video node + Stream URL for SceneGraph Video node mysite.com/img/vacation.jpg @@ -621,7 +621,7 @@ Playback configuration meta-data attributes are used to configure the playback o Stream roAssociativeArray - Supported by roVideoPlayer and roVideoScreen, but not the Roku Scene Graph Video node.
For the Video node, use the top level url, streamformat, etc. attributes.

The exception is cases where you don't have adaptive streams (typically MP4) and need to specify different bitrate variants separately. For this use case use the Streams attribute. roAssociativeArray that has parameters representing the stream settings that were set as individual roArrays in previous firmware revisions.

The old method is still supported and descriptions of the parameters can be found under those content-meta data entries.

For url please see StreamUrls, for quality it is now a Boolean that is true for HD quality.
+ Supported by roVideoPlayer and roVideoScreen, but not the Roku SceneGraph Video node.
For the Video node, use the top level url, streamformat, etc. attributes.

The exception is cases where you don't have adaptive streams (typically MP4) and need to specify different bitrate variants separately. For this use case use the Streams attribute. roAssociativeArray that has parameters representing the stream settings that were set as individual roArrays in previous firmware revisions.

The old method is still supported and descriptions of the parameters can be found under those content-meta data entries.

For url please see StreamUrls, for quality it is now a Boolean that is true for HD quality.
@@ -821,7 +821,7 @@ Playback configuration meta-data attributes are used to configure the playback o - + @@ -1056,7 +1056,7 @@ video.setHttpAgent(httpAgent) - - + - + - +
VideoDisableUI BooleanIf set to true, hides the Scene Graph Video node trick play UI; If set to false (the default) shows the Scene Graph Video node trick play UIIf set to true, hides the SceneGraph Video node trick play UI; If set to false (the default) shows the SceneGraph Video node trick play UI video = createObject("roSGNode", "Video"); video.content.VideoDisableUI = true
HttpCertificatesFile uriIf set, the Scene Graph Audio or Video node loads this public certificate bundle, to authenticate the server. The protocol must be https for this to have any effect. When used with a Scene Graph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When playing this content, the agent is updated in the following manner:
    +
If set, the SceneGraph Audio or Video node loads this public certificate bundle, to authenticate the server. The protocol must be https for this to have any effect. When used with a SceneGraph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When playing this content, the agent is updated in the following manner:
  • If this attribute is defined, the file URI is set into the HttpAgent instance. However, if this attribute is specified and the value is the empty string (""), then no changes will be made to the HttpAgent.
  • If this attribute is not defined, the behavior depends upon whether the Content Meta-Data (CMD) contains secure (https) URLs:

    @@ -1070,17 +1070,17 @@ video.setHttpAgent(httpAgent)
HttpCookies array of stringsIf set, the Scene Graph Audio or Video node send the cookies to the server. Each cookie must have the following syntax: dom=domain;path=path;name=name;val=value; When used with a Scene Graph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When this Content Meta-Data is played and this attribute is set, all HTTP cookies in the agent are cleared and replaced with the cookies defined by this attributeIf set, the SceneGraph Audio or Video node send the cookies to the server. Each cookie must have the following syntax: dom=domain;path=path;name=name;val=value; When used with a SceneGraph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When this Content Meta-Data is played and this attribute is set, all HTTP cookies in the agent are cleared and replaced with the cookies defined by this attribute
HttpHeaders array of stringsIf set, the Scene Graph Audio or Video node sends these headers to the server. Each string must be of the format "name:value". When used with a Scene Graph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When this Content Meta-Data is played and this attribute is set, all HTTP headers in the agent are cleared and replaced with the headers defined by this attributeIf set, the SceneGraph Audio or Video node sends these headers to the server. Each string must be of the format "name:value". When used with a SceneGraph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When this Content Meta-Data is played and this attribute is set, all HTTP headers in the agent are cleared and replaced with the headers defined by this attribute
HttpSendClientCertificate BooleanIf true, the Scene Graph Audio or Video node sends the client device certificate to the server, for client authentication. The protocol must be https for this to have any effect. When used with a Scene Graph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When this Content Meta-Data is played and this attribute exists, the value of this attribute (true or false) is set into the HttpAgentIf true, the SceneGraph Audio or Video node sends the client device certificate to the server, for client authentication. The protocol must be https for this to have any effect. When used with a SceneGraph Audio or Video node, the node or global HttpAgent is found, as explained elsewhere in this documentation. When this Content Meta-Data is played and this attribute exists, the value of this attribute (true or false) is set into the HttpAgent
diff --git a/docs/DEVELOPER/libraries/index.md b/docs/DEVELOPER/libraries/index.md index f893fa0c..6d139d6c 100644 --- a/docs/DEVELOPER/libraries/index.md +++ b/docs/DEVELOPER/libraries/index.md @@ -260,7 +260,7 @@ m.global.RSG_analytics.setContentMetadata = { This method is similar to `initVideoPlayer` and takes a single roAssociativeArray with exactly one attribute named `video` containing a -Scenegraph [Video Node](doc:video). +SceneGraph [Video Node](doc:video). This should be set once video playback has finished which will allow the component to finish analytics tasks and stop observing Video node events. diff --git a/docs/DEVELOPER/media-playback/screensavers.md b/docs/DEVELOPER/media-playback/screensavers.md index bdf712d4..7ebf6009 100644 --- a/docs/DEVELOPER/media-playback/screensavers.md +++ b/docs/DEVELOPER/media-playback/screensavers.md @@ -29,8 +29,8 @@ Screensavers **cannot** include: ## Screensaver context -When a screensaver is run, a new Brightscript context is created for screensaver execution. The -screensaver does not share Brightscript data objects with the streaming app. +When a screensaver is run, a new BrightScript context is created for screensaver execution. The +screensaver does not share BrightScript data objects with the streaming app. The screensaver's [BrightScript Debugger](doc:debugging) uses port 8087. diff --git a/docs/DEVELOPER/media-playback/trick-mode/hls-and-dash.md b/docs/DEVELOPER/media-playback/trick-mode/hls-and-dash.md index 1de784bf..7c78761b 100644 --- a/docs/DEVELOPER/media-playback/trick-mode/hls-and-dash.md +++ b/docs/DEVELOPER/media-playback/trick-mode/hls-and-dash.md @@ -135,7 +135,7 @@ Attributes: The Time Remaining for an Image Resource is the EXTINF duration minus the Total Elapsed Time of the Image Archive. Tiles are selected from the Grid in a specific Sequence starting top-left, moving left-to-right and top-to-bottom, following the Grid Layout. Each Tile from the Sequence is displayed for DURATION seconds or Time Remaining seconds, whichever is less. If Time Remaining is greater than zero when the Sequence completes, the last Image is displayed until Time Remaining is zero. -> Experimental results suggest that durations of around 10 seconds offer good performance vs. viewer convenience. As a general rule, the duration of each thumbnail should be be as long as the I-Frame, which it represents. +> Experimental results suggest that durations of around 10 seconds offer good performance vs. viewer convenience. As a general rule, the duration of each thumbnail should be as long as the I-Frame, which it represents. ## Standard-thumbnail file creation diff --git a/docs/DEVELOPER/performance-guide/data-management.md b/docs/DEVELOPER/performance-guide/data-management.md index fe8eca0a..aac2abfd 100644 --- a/docs/DEVELOPER/performance-guide/data-management.md +++ b/docs/DEVELOPER/performance-guide/data-management.md @@ -115,7 +115,7 @@ The Task makes a local copy of the config global data which it then references v ## Garbage Collector - **SceneGraph Nodes** Nodes are reference counted. When the reference count goes to zero, the Roku OS automatically handles the clean up of SceneGraph nodes. -- **Brightscript Objects** Brightscript objects can be cleaned up using the built-in Garbage Collector if no other elements are referencing the Brightscript object. Generally, this is done once right before video playback. +- **BrightScript Objects** BrightScript objects can be cleaned up using the built-in Garbage Collector if no other elements are referencing the BrightScript object. Generally, this is done once right before video playback. > There is no advantage to calling the Garbage Collector frequently. For more information refer to [RunGarbageCollector](doc:global-utility-functions). diff --git a/docs/DEVELOPER/publishing/channel-publishing-guide.md b/docs/DEVELOPER/publishing/channel-publishing-guide.md index 2f590803..d2549a01 100644 --- a/docs/DEVELOPER/publishing/channel-publishing-guide.md +++ b/docs/DEVELOPER/publishing/channel-publishing-guide.md @@ -622,7 +622,7 @@ Once your public app has passed [Static Analysis](doc:static-analysis-tool) an a. Select the **I confirm that** check box to confirm that you have tested your app per Roku App Publishing Checklist and your app complies with the listed agreements. - b. Select the **I certify that** check box to confirm that you have the authority the submit the app, the provided listing information is accurate, and that you have the rights to distribute your app in the selected countries. + b. Select the **I certify that** check box to confirm that you have the authority to submit the app, the provided listing information is accurate, and that you have the rights to distribute your app in the selected countries. c. Click **Submit**. @@ -642,7 +642,7 @@ The following section summarizes when updates to the Streaming Store, Roku Searc After an app is published, it may be tagged with one or more categories. This includes the category selected and any other Roku-applied tags such as "New & Updated" or "Recommended" -An app is typically visible in the selected category after 5 minutes—if the category has less 1,000 apps. Otherwise, the app is not added to the category until it has been streamed by enough customers to move it up the popularity rankings in that category. +An app is typically visible in the selected category after 5 minutes—if the category has fewer than 1,000 apps. Otherwise, the app is not added to the category until it has been streamed by enough customers to move it up the popularity rankings in that category. If the category is changed and the app is re-published, it takes approximately 5 minutes for the app to be switched to the new category. However, the app is only visible in that category if the aforementioned criteria is met. diff --git a/docs/DEVELOPER/publishing/packaging-channels.md b/docs/DEVELOPER/publishing/packaging-channels.md index fae233fb..53bea732 100644 --- a/docs/DEVELOPER/publishing/packaging-channels.md +++ b/docs/DEVELOPER/publishing/packaging-channels.md @@ -23,7 +23,7 @@ When you "sideload" your app to a Roku device during development, you have the o **Generating a signing key.** You create a new signing key with the built-in `genkey` firmware utility that runs on the Roku device (accessible only through a Telnet session to a hardware port). In fact, you'll need to do that at least once before the Development Application (the developer Web page generated by the hardware) makes its Packager link clickable. `genkey` also generates a password that you'll need to keep safely recorded. -**When to keep the same signing key.** Let's say you end up submitting the package you created, and successfully publish it. Roku users start installing your app. If you need to make changes to your app, you simply follow the same packaging process again, this time being careful NOT to generate a new signing key, and submit the updated package. When your users intall the updated package but with the same signing key, it allows their Roku device to keep any existing registry data related to your app. +**When to keep the same signing key.** Let's say you end up submitting the package you created, and successfully publish it. Roku users start installing your app. If you need to make changes to your app, you simply follow the same packaging process again, this time being careful NOT to generate a new signing key, and submit the updated package. When your users install the updated package but with the same signing key, it allows their Roku device to keep any existing registry data related to your app. **When to use a new signing key.** If you are developing multiple apps, you would typically generate a new key for every app. If the key for each app is different, each will have its own registry on the user device. You could, instead, choose to use the same key for multiple apps you develop -- in this case, the registry information for all same-keyed apps is shared on the Roku user's device when they install more than one of your apps. diff --git a/docs/DEVELOPER/release-notes/index.md b/docs/DEVELOPER/release-notes/index.md index 09b4041e..54ac8558 100644 --- a/docs/DEVELOPER/release-notes/index.md +++ b/docs/DEVELOPER/release-notes/index.md @@ -51,7 +51,7 @@ The [**roTimeSpan** node](doc:rotimespan) now includes [**totalMillisecondsLong( ##### New roAnimatedImage component includes functions for rotating and scaling around an arbitrary point -The interface for the new [**roAnimatedImage** component](doc:roanimatedimage) includes a [**SetPretranslation()** function](doc:ifanimatedimage#setpretranslationx-as-int-y-as-int-as-void) that enables you to rotate and scale images around their center. You can also call [**GetPretranslationX()**](doc:ifanimatedimage#getpretranslationx-as-int) and [**GetPretranslationY()**](doc:ifanimatedimage#getpretranslationy-as-int)** **functions to get the the x and y components of the pretranslation value. +The interface for the new [**roAnimatedImage** component](doc:roanimatedimage) includes a [**SetPretranslation()** function](doc:ifanimatedimage#setpretranslationx-as-int-y-as-int-as-void) that enables you to rotate and scale images around their center. You can also call [**GetPretranslationX()**](doc:ifanimatedimage#getpretranslationx-as-int) and [**GetPretranslationY()**](doc:ifanimatedimage#getpretranslationy-as-int)** **functions to get the x and y components of the pretranslation value. ## Roku OS 15.2 @@ -323,7 +323,7 @@ Here is the list of key developer-facing Roku OS 13.0 updates: #### BrightScript APIs -- [**Maximum available memory query**](/docs/references/brightscript/interfaces/ifappmemorymonitor.md#getchannelmemorylimit-as-object) — The **roAppMemoryMonitor** component includes a new [**GetChannelMemoryLimit** () function](/docs/references/brightscript/interfaces/ifappmemorymonitor.md#getchannelmemorylimit-as-object) that returns how much foreground and background memory the app may use and the maximum amount of memory that the RokuOS may allocate on behalf of the app (the memory that shows up in the app's heap memory statistics ). This helps developers debug memory issues and find out the maximum available memory for scenarios such as when their app has been suspended and is in the background, is playing a video, and so on. +- [**Maximum available memory query**](/docs/references/brightscript/interfaces/ifappmemorymonitor.md#getchannelmemorylimit-as-object) — The **roAppMemoryMonitor** component includes a new [**GetChannelMemoryLimit** () function](/docs/references/brightscript/interfaces/ifappmemorymonitor.md#getchannelmemorylimit-as-object) that returns how much foreground and background memory the app may use and the maximum amount of memory that the Roku OS may allocate on behalf of the app (the memory that shows up in the app's heap memory statistics ). This helps developers debug memory issues and find out the maximum available memory for scenarios such as when their app has been suspended and is in the background, is playing a video, and so on. - [**App exit query**](/docs/references/brightscript/interfaces/ifappmanager.md#getlastexitinfo-as-object) — The **roAppManager** component includes a new [**GetLastExitInfo**() function](/docs/references/brightscript/interfaces/ifappmanager.md#getlastexitinfo-as-object) that returns an exit code indicating why an app was terminated. This helps developers monitor and debug memory issues with their apps. The last exit information is provided for only the 10 most recent exits across all apps, and exit information does not persist across device reboots. @@ -561,7 +561,7 @@ Below is a list of key developer-facing Roku OS 10.5 updates: #### Roku Pay APIs -- [**ChannelStore subscription recovery**](/docs/references/scenegraph/control-nodes/channelstore.md#getpurchases) (also available in Roku OS 10.0) — Developers can now directly use the ChannelStore API to check whether a subscription is in recovery. When a subscritpion is in recovery, Roku Pay notifies the customer once a day for multiple consecutive days (typically three) to update their method of payment in order to renew the subscription, and it attempts to charge the customer's method of payment to ensure collection of payment and continuation of service. The [**ChannelStore.getAllPurchases**](/docs/references/scenegraph/control-nodes/channelstore.md#getallpurchases) and [**getPurchases**](/docs/references/scenegraph/control-nodes/channelstore.md#getpurchases) commands now return a **status** field and an **inDunning** flag to determine whether a subscription is in the dunning state and therefore should be placed on hold. Previously, developers had to pass the **transactionId** returned by the **getAllPurchases** and **getPurchases** commands into a Roku Pay **validate-transaction** API call to determine whether a subscription was in recovery. +- [**ChannelStore subscription recovery**](/docs/references/scenegraph/control-nodes/channelstore.md#getpurchases) (also available in Roku OS 10.0) — Developers can now directly use the ChannelStore API to check whether a subscription is in recovery. When a subscription is in recovery, Roku Pay notifies the customer once a day for multiple consecutive days (typically three) to update their method of payment in order to renew the subscription, and it attempts to charge the customer's method of payment to ensure collection of payment and continuation of service. The [**ChannelStore.getAllPurchases**](/docs/references/scenegraph/control-nodes/channelstore.md#getallpurchases) and [**getPurchases**](/docs/references/scenegraph/control-nodes/channelstore.md#getpurchases) commands now return a **status** field and an **inDunning** flag to determine whether a subscription is in the dunning state and therefore should be placed on hold. Previously, developers had to pass the **transactionId** returned by the **getAllPurchases** and **getPurchases** commands into a Roku Pay **validate-transaction** API call to determine whether a subscription was in recovery. - [**Instant Signup purchase flag for Roku Pay APIs**](/docs/references/scenegraph/control-nodes/channelstore.md#getpurchases) (also available in Roku OS 10.0) — Developers can now identify whether Roku Pay subscription purchases originated from Instant Signup. The ChannelStore node [**getPurchases**](/docs/references/scenegraph/control-nodes/channelstore.md#getpurchases) and [**getAllPurchases**](/docs/references/scenegraph/control-nodes/channelstore.md#getallpurchases)) commands, [**roChannelStore.getPurchases**](/docs/references/brightscript/interfaces/ifchannelstore.md#getpurchases-as-void) function, [Roku Pay **validate-transaction** web service](/docs/developer/roku-pay/implementation/roku-web-service.md#validate-transaction), and [Roku Pay **Sale** push notification](/docs/developer/roku-pay/implementation/push-notifications.md#sale) all include a new **purchaseChannel** field that is set to "web" and a **purchaseContext** field that is set to "isu" to indicate that a purchase was made via Instant Signup (for on-device purchases, these fields would be set to "device" and "iap", respectively). @@ -1428,7 +1428,7 @@ Version 5.0 of the Roku OS was released to all second and later generation devic #### New in this release - Updated home screen user interface -- Increase Brightscript function limit beyond 1024 +- Increase BrightScript function limit beyond 1024 - Miscellaneous fixes for gaming remotes - Memory improvements to the OS - Improved ECP security @@ -1476,7 +1476,7 @@ We appreciate all the hard work the Roku Developer Community has put into develo #### New in this release -• Roku 2 platform support. • Brightscript Plugin for Eclipse • Updated videoPlayer sample application • All v3.0 beta features are now fully supported on classic models running v3.0 and Roku 2 models running v4.1: +• Roku 2 platform support. • BrightScript Plugin for Eclipse • Updated videoPlayer sample application • All v3.0 beta features are now fully supported on classic models running v3.0 and Roku 2 models running v4.1: - BrightScript v3.0 that includes: - performance improvements diff --git a/docs/DEVELOPER/roku-pay/implementation/push-notifications.md b/docs/DEVELOPER/roku-pay/implementation/push-notifications.md index e6643202..61b3b3a8 100644 --- a/docs/DEVELOPER/roku-pay/implementation/push-notifications.md +++ b/docs/DEVELOPER/roku-pay/implementation/push-notifications.md @@ -568,7 +568,7 @@ The publisher action required (if any) depends on the **expirationDate** field: - **Today's date**: Remove the entitlement (the customer actively canceled the subscription and today is the last day of the billing cycle). - **Past date**: Remove entitlement (passive cancellation; the subscription could not be recovered). -#### Active cancelation/deactivation example +#### Active cancellation/deactivation example ```json { @@ -588,7 +588,7 @@ The publisher action required (if any) depends on the **expirationDate** field: } ``` -#### Passive cancelation example +#### Passive cancellation example ```json { diff --git a/docs/DEVELOPER/roku-pay/quickstart/add-ons-integration.md b/docs/DEVELOPER/roku-pay/quickstart/add-ons-integration.md index a82a79f5..2a12a075 100644 --- a/docs/DEVELOPER/roku-pay/quickstart/add-ons-integration.md +++ b/docs/DEVELOPER/roku-pay/quickstart/add-ons-integration.md @@ -1351,7 +1351,7 @@ When an add-on is canceled, its entitlement is removed from the Roku customer ac #### On-device subscription management workflow -The following images demonstrate how the on-device add-on management and cancelation workflow can be used to cancel base subscription products and add-ons: +The following images demonstrate how the on-device add-on management and cancellation workflow can be used to cancel base subscription products and add-ons: ![img - roku600px](https://image.roku.com/ZHZscHItMTc2/managesub.jpg) diff --git a/docs/DEVELOPER/roku-pay/quickstart/product-catalog.md b/docs/DEVELOPER/roku-pay/quickstart/product-catalog.md index 62d4adb3..ede64de0 100644 --- a/docs/DEVELOPER/roku-pay/quickstart/product-catalog.md +++ b/docs/DEVELOPER/roku-pay/quickstart/product-catalog.md @@ -176,7 +176,7 @@ To create a purchase option for a product, follow these steps: - Select the billing period to be used for the subscription product: monthly, quarterly, or annual. Using quartely billing requires [additional API work](doc:add-ons-integration#appendix-a-add-on-api-reference). + Select the billing period to be used for the subscription product: monthly, quarterly, or annual. Using quarterly billing requires [additional API work](doc:add-ons-integration#appendix-a-add-on-api-reference). diff --git a/docs/FEATURES/analytics/channel-engagement.md b/docs/FEATURES/analytics/channel-engagement.md index ebea9527..4f0768fd 100644 --- a/docs/FEATURES/analytics/channel-engagement.md +++ b/docs/FEATURES/analytics/channel-engagement.md @@ -31,8 +31,8 @@ The band of metrics below FILTERS shows the summary statistics based on the time - **New Installs** - total count of new unique accounts during the selected Time Period. - **Uninstalls** - total count of accounts uninstalled during the selected Time Period. - - **Cumulative Installs To-Date** - count of unique accounts that that have installed your app to-date; roughly equivalent to the size of your install base. When users uninstall and re-install an app, this is credited as one net new installation and will increase the Cumulative Installs To-Date. - - **Average Daily Viewers** - average number of daily views similar to DAU "daily active users." Changing Time Grain will not effect this measurement. + - **Cumulative Installs To-Date** - count of unique accounts that have installed your app to-date; roughly equivalent to the size of your install base. When users uninstall and re-install an app, this is credited as one net new installation and will increase the Cumulative Installs To-Date. + - **Average Daily Viewers** - average number of daily views similar to DAU "daily active users." Changing Time Grain will not affect this measurement. - **Average Minutes Per Viewer** - total streaming minutes on the app per number of unique accounts that visited the app. - **Total Hours Streamed** - total hours streamed during the selected Time Period. diff --git a/docs/FEATURES/analytics/channel-health.md b/docs/FEATURES/analytics/channel-health.md index e9555081..bcc704ab 100644 --- a/docs/FEATURES/analytics/channel-health.md +++ b/docs/FEATURES/analytics/channel-health.md @@ -14,7 +14,7 @@ next: You can use the App Health Report to examine the number and type of crashes for your app to understand how the app is performing. This report can be especially helpful around the time of a new release for your app when a spike in errors may indicate the need to either rollback or quickly update your app version to prevent the user experience from degrading substantially. Included in this report is a crash log showing BrightScript errors. -This reports helps you identify products experiencing the most BrightScript crashes. Crashes are measured in total counts as well as normalized for the total number of devices and streaming hours. The higher the count and normalized measurement, the more opportunity for improvement. Counts and normalized measurements should always be interpreted together. A relatively high count alone may be more indicative of the size of the install base, while a high normalized measurement could be indicative of a particularly problematic minority of the install base. +This report helps you identify products experiencing the most BrightScript crashes. Crashes are measured in total counts as well as normalized for the total number of devices and streaming hours. The higher the count and normalized measurement, the more opportunity for improvement. Counts and normalized measurements should always be interpreted together. A relatively high count alone may be more indicative of the size of the install base, while a high normalized measurement could be indicative of a particularly problematic minority of the install base. Analyzing patterns in crashes will help you find ways to improve the user experience. For example, video start times and rebuffering have been shown to be highly predictive of time spent streaming and are strong indicators of the overall user experience in the app. If the dashboard reveals that videos are slower to start on certain devices or that rebuffers or crashes occur more frequently, you might focus your troubleshooting on those devices to improve your overall app stability and user experience. @@ -35,7 +35,7 @@ The band of metrics below FILTERS shows the summary statistics based on what you - **Devices with Channel Crashes** - percentage of unique devices that have streamed in your app which have experienced a BrightScript crash in the selected Time Period; the lower, the better - **Channel Crashes per Streaming Hour** - count of BrightScript crashes normalized for total streaming hours; the lower the better - - **Average Video Start Time (seconds)** - average time required video content to start streaming; the lower, the better + - **Average Video Start Time (seconds)** - average time required for video content to start streaming; the lower, the better - **Average Bitrate (Megabits)** - the average number of bits per second streamed in your app; the higher, the better - **Average Rebuffers per Device** - average number of rebuffers per unique device that has streamed in your app; the fewer, the better - **Buffering Time as % of Total Streaming Time** - effectively the ratio of time spent waiting on content to stream vs. total streaming time; the lower the better diff --git a/docs/FEATURES/analytics/index.md b/docs/FEATURES/analytics/index.md index 7531b788..7d3d8129 100644 --- a/docs/FEATURES/analytics/index.md +++ b/docs/FEATURES/analytics/index.md @@ -167,7 +167,7 @@ You can create a schedule to automatically email a report in a recurring daily, 7. Click **Save** to save the schedule. -8. To create another schedule, click **New** to and repeat steps 3-7 . +8. To create another schedule, click **New** and repeat steps 3-7 . ## Using Streaming Store codes diff --git a/docs/FEATURES/analytics/payout-audit-report.md b/docs/FEATURES/analytics/payout-audit-report.md index 5d631a95..feedbe7d 100644 --- a/docs/FEATURES/analytics/payout-audit-report.md +++ b/docs/FEATURES/analytics/payout-audit-report.md @@ -44,7 +44,7 @@ The Payout Audit Report displays only a tabular grid, in which each row represen | DowngradeSale | A successful downgrade transaction's sale of a new (downgraded) subscription, to replace the outgoing (base) plan. | | Purchase | A successful purchase transaction (historically used to indicate purchases under Roku Standard Billing: RSB). Such transactions include 1) one-time purchases. and 2) initial and recurring subscription charges. | | Refund | A successful refund transaction (historically used to indicate refunds under Roku as Payment Method: RPM). | - | Renewal | An end user, who actively cancelled a subscription, successfully signed up again before the previously scheduled expiration of the subscription. | + | Renewal | An end user, who actively canceled a subscription, successfully signed up again before the previously scheduled expiration of the subscription. | | Reversal | A successful refund transaction (historically used to indicate refunds under Roku Standard Billing: RSB). | | UpgradeCancel | A successful upgrade transaction's cancellation of the outgoing (base) subscription. | | UpgradeSale | A successful upgrade transaction's sale of a new (upgraded) subscription, replacing the outgoing (base) subscription. | diff --git a/docs/FEATURES/analytics/sales-activity-report.md b/docs/FEATURES/analytics/sales-activity-report.md index a5354bfa..bfdf72e2 100644 --- a/docs/FEATURES/analytics/sales-activity-report.md +++ b/docs/FEATURES/analytics/sales-activity-report.md @@ -46,7 +46,7 @@ The Sales Activity Report displays only a tabular grid, in which each row repres | DowngradeSale | A successful downgrade transaction's sale of a new (downgraded) subscription, to replace the outgoing (base) plan. | | Purchase | A successful purchase transaction (historically used to indicate purchases under Roku Standard Billing: RSB). Such transactions include 1) one-time purchases. and 2) initial and recurring subscription charges. | | Refund | A successful refund transaction (historically used to indicate refunds under Roku as Payment Method: RPM). | - | Renewal | An end user, who actively cancelled a subscription, successfully signed up again before the previously scheduled expiration of the subscription. | + | Renewal | An end user, who actively canceled a subscription, successfully signed up again before the previously scheduled expiration of the subscription. | | Reversal | A successful refund transaction (historically used to indicate refunds under Roku Standard Billing: RSB). | | GraceInitiated | Payment for a subscription auto-renewal fails. Customer may still access content while Roku attempts to charge the MOP. | | GraceRecovered | Payment is received for a subscription that was in a grace period. Customer maintains access to content and the billing period remains the same. | diff --git a/docs/FEATURES/analytics/transaction-report.md b/docs/FEATURES/analytics/transaction-report.md index 0299075c..a76a8412 100644 --- a/docs/FEATURES/analytics/transaction-report.md +++ b/docs/FEATURES/analytics/transaction-report.md @@ -22,7 +22,7 @@ To open the Transaction Report, go to the [Developer Dashboard](https://develope To run a Transaction Report, follow these steps: -1. Specify the time period for the Transaction Report. By default, the report includes data from the previous week (8 days ago for 7 days). To select a different time period, expand **Filters** and then configure the period. You can select a specific date, the last _x_ days, a year, a specific time range, all the dates or or after a specific date, and so on. You can also use filter expressions by selecting **matches (advanced)**. +1. Specify the time period for the Transaction Report. By default, the report includes data from the previous week (8 days ago for 7 days). To select a different time period, expand **Filters** and then configure the period. You can select a specific date, the last _x_ days, a year, a specific time range, all the dates on or after a specific date, and so on. You can also use filter expressions by selecting **matches (advanced)**. Optionally, you can include additional criteria in the query by clicking the add icon and configuring another time period. For example, you can create a query that includes transactions for the first quarters of the last two years. Click the delete icon to remove a time period from the query. diff --git a/docs/FEATURES/analytics/viewership-summary.md b/docs/FEATURES/analytics/viewership-summary.md index cbc86505..e99bfb92 100644 --- a/docs/FEATURES/analytics/viewership-summary.md +++ b/docs/FEATURES/analytics/viewership-summary.md @@ -12,7 +12,7 @@ next: --- -You can the Viewership Summary Report to examine the number of visits, streaming hours and rebuffers per hour for your app. +You can use the Viewership Summary Report to examine the number of visits, streaming hours and rebuffers per hour for your app. ![roku815px - analytics-report-viewership](https://image.roku.com/ZHZscHItMTc2/viewership-summary-report.png "analytics-report-viewership") diff --git a/docs/REFERENCES/brightscript/components/roaudioguide.md b/docs/REFERENCES/brightscript/components/roaudioguide.md index cc2d3cd8..b6cf01e1 100644 --- a/docs/REFERENCES/brightscript/components/roaudioguide.md +++ b/docs/REFERENCES/brightscript/components/roaudioguide.md @@ -14,7 +14,7 @@ next: > This component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running [Roku OS version 7.5](doc:release-notes#roku-os-75) and later. -The roAudioGuide component provides screen reader support for applications that require custom speech beyond what is provided by the automatic screen reader in SDK and Scene Graph components. +The roAudioGuide component provides screen reader support for applications that require custom speech beyond what is provided by the automatic screen reader in SDK and SceneGraph components. Though some of the roAudioGuide API is similar to [roTextToSpeech](doc:rotexttospeech), roAudioGuide provides support specific to screen reader, including: diff --git a/docs/REFERENCES/brightscript/components/rodatagramsocket.md b/docs/REFERENCES/brightscript/components/rodatagramsocket.md index 699dc194..651925cd 100644 --- a/docs/REFERENCES/brightscript/components/rodatagramsocket.md +++ b/docs/REFERENCES/brightscript/components/rodatagramsocket.md @@ -12,7 +12,7 @@ next: --- -The roDataGramSocket component enables Brightscript apps to send and receive UDP packets. The interface is modeled on and works much like standard Berkeley sockets. +The roDataGramSocket component enables BrightScript apps to send and receive UDP packets. The interface is modeled on and works much like standard Berkeley sockets. This object is created without any arguments: diff --git a/docs/REFERENCES/brightscript/components/roregex.md b/docs/REFERENCES/brightscript/components/roregex.md index 4855534a..15ad00d7 100644 --- a/docs/REFERENCES/brightscript/components/roregex.md +++ b/docs/REFERENCES/brightscript/components/roregex.md @@ -13,7 +13,7 @@ next: -The roRegex component provides the powerful regular expression processing of the PCRE library to Brightscript strings. +The roRegex component provides the powerful regular expression processing of the PCRE library to BrightScript strings. > Please see the PCRE documentation (http://www.pcre.org/) for documentation on the PCRE library used for regular expression matching. See the [perlre documentation](http://perldoc.perl.org/perlre.html) for complete documentation of the possible regular expressions this library can parse and match. In general, most Perl compatible regular expressions are supported. diff --git a/docs/REFERENCES/brightscript/events/roaudioplayerevent.md b/docs/REFERENCES/brightscript/events/roaudioplayerevent.md index b86c14d0..bbafb8be 100644 --- a/docs/REFERENCES/brightscript/events/roaudioplayerevent.md +++ b/docs/REFERENCES/brightscript/events/roaudioplayerevent.md @@ -45,9 +45,9 @@ Audio playback failed due to an error ### isTimedMetaData() as Boolean -This event is fired when an ID3 timecode has passed with an event that includes key/value pairs for timed metadata that the Brightscript app is interested in. +This event is fired when an ID3 timecode has passed with an event that includes key/value pairs for timed metadata that the BrightScript app is interested in. -All timed metadata is released after it is delivered to the Brightscript app. It is also released without delivery if the Brightscript app did not indicate it’s interest in the data with a SetTimedMetaDataForKeys() call. +All timed metadata is released after it is delivered to the BrightScript app. It is also released without delivery if the BrightScript app did not indicate it’s interest in the data with a SetTimedMetaDataForKeys() call. ### isRequestSucceeded() as Boolean diff --git a/docs/REFERENCES/brightscript/events/rodeviceinfoevent.md b/docs/REFERENCES/brightscript/events/rodeviceinfoevent.md index 20c6bbc2..da463d2e 100644 --- a/docs/REFERENCES/brightscript/events/rodeviceinfoevent.md +++ b/docs/REFERENCES/brightscript/events/rodeviceinfoevent.md @@ -99,7 +99,7 @@ Indicates the current global setting for the Mode property, which may be one of ### EnableValidClockEvent(enable as Boolean) -Indicates whether the RokuOS has successfully connected to the network and contacted the timeserver in order to set the device's clock. Call the [GetInfo()](#getinfo-as-object) method to confirm that the system clock is valid. +Indicates whether the Roku OS has successfully connected to the network and contacted the timeserver in order to set the device's clock. Call the [GetInfo()](#getinfo-as-object) method to confirm that the system clock is valid. #### GetInfo() as Object diff --git a/docs/REFERENCES/brightscript/interfaces/ifappmemorymonitor.md b/docs/REFERENCES/brightscript/interfaces/ifappmemorymonitor.md index 37804320..cd9022fe 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifappmemorymonitor.md +++ b/docs/REFERENCES/brightscript/interfaces/ifappmemorymonitor.md @@ -99,7 +99,7 @@ _Available since [Roku OS 13.0](doc:release-notes#roku-os-130)_ **Description** -Returns the amount of foreground and background memory the app may use and the maximum amount of memory that the RokuOS may allocate on behalf of the app (the memory that shows up in the app's heap memory statistics). This helps developers debug memory issues and find out the maximum available memory for scenarios such as when their app has been suspended and is in the background, is playing a video, and so on. +Returns the amount of foreground and background memory the app may use and the maximum amount of memory that the Roku OS may allocate on behalf of the app (the memory that shows up in the app's heap memory statistics). This helps developers debug memory issues and find out the maximum available memory for scenarios such as when their app has been suspended and is in the background, is playing a video, and so on. **Return Value** @@ -109,4 +109,4 @@ An roAssociativeArray that contains the following fields: | :----------------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------- | | maxForegroundMemory | Integer | The maximum amount of memory that app could have when it is running in the foreground. | | maxBackgroundMemory | Integer | The maximum amount of memory that app could have when it is running in the background. | -| maxRokuManagedHeapMemory | Integer | The maximum amount of memory that the RokuOS may allocate on behalf of the app that shows up in the app's heap memory stats. | +| maxRokuManagedHeapMemory | Integer | The maximum amount of memory that the Roku OS may allocate on behalf of the app that shows up in the app's heap memory stats. | diff --git a/docs/REFERENCES/brightscript/interfaces/ifdeviceinfo.md b/docs/REFERENCES/brightscript/interfaces/ifdeviceinfo.md index cf147270..808d6518 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifdeviceinfo.md +++ b/docs/REFERENCES/brightscript/interfaces/ifdeviceinfo.md @@ -809,7 +809,7 @@ A flag indicating whether network connection status event notifications are enab #### Description -Checks whether the device has a WiFi or wired connection, or if it is not connected through any type of network. +Checks whether the device has a Wi-Fi or wired connection, or if it is not connected through any type of network. #### Return Values @@ -911,11 +911,11 @@ An associative array with the following key-value pairs: | dns.2 | IP Address of the third DNS server, if any (Similarly for any subsequent DNS servers). | | dns.3 | IP Address of the fourth DNS server, if any (Similarly for any subsequent DNS servers). | | active | A flag indicating the network status. | -| default | A flag indicating whether the default WiFi connection is being used. | +| default | A flag indicating whether the default Wi-Fi connection is being used. | | expectedThroughput | The actual speed of the connection. This rate may be significantly lower than theoretical maximum because of interference, distance, network overhead, and other factors. In ideal conditions, a single client might achieve approximately 65-70% of the physical rate. | -| protocol | The Wifi protocol name (IEEE 802.11g). | +| protocol | The Wi-Fi protocol name (IEEE 802.11g). | | signal | The received signal strength indicator (RSSI) on a logarithmic scale. Values closer to 0 indicate a stronger signal; values closer to -100 indicate a weaker signal. | -| ssid | The service set identifier (SSID). The name of the WiFi network to which the device is connected. | +| ssid | The service set identifier (SSID). The name of the Wi-Fi network to which the device is connected. | | txFailed | The number of dropped frames. | | txRetries | The number of retries to send frames. | @@ -1194,7 +1194,7 @@ hasDDPlus = audioDecoders.doesexist("DD+") Checks if the device can decode and play the specified audio format. -> Use this method to query the codecs every time before starting playback on content (do not cache and use the results from a previous call). In addition, use the [**roDeviceInfo.audioCodecCapabilityChanged()**](doc:rodeviceinfoevent) event to identify any codec changes that may occur when the audio output destination is switched. This will help your app to perform well with the Roku mobile app and and private listening. +> Use this method to query the codecs every time before starting playback on content (do not cache and use the results from a previous call). In addition, use the [**roDeviceInfo.audioCodecCapabilityChanged()**](doc:rodeviceinfoevent) event to identify any codec changes that may occur when the audio output destination is switched. This will help your app to perform well with the Roku mobile app and private listening. #### Parameters diff --git a/docs/REFERENCES/brightscript/interfaces/ifhttpagent.md b/docs/REFERENCES/brightscript/interfaces/ifhttpagent.md index e575714b..aaca1f1a 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifhttpagent.md +++ b/docs/REFERENCES/brightscript/interfaces/ifhttpagent.md @@ -105,7 +105,7 @@ Initializes the Roku device's built-in client certificate for use in mutual TLS #### Return Value -A flag indicating whether the object sent to to the Roku client certificate was successfully initialized. +A flag indicating whether the object sent to the Roku client certificate was successfully initialized. ### SetCertificatesFile(path as String) as Boolean diff --git a/docs/REFERENCES/brightscript/interfaces/ifpath.md b/docs/REFERENCES/brightscript/interfaces/ifpath.md index 33e79a6c..27600858 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifpath.md +++ b/docs/REFERENCES/brightscript/interfaces/ifpath.md @@ -78,7 +78,7 @@ Returns an [roAssociativeArray](/docs/references/brightscript/components/roassoc An [roAssociativeArray](doc:roassociativearray) that contains the following keys:
NameTypeDescription
basenameStringThe filename, without parent directories or extension.
extensionStringThe filename, with extension, without parent directories.
filenameStringThe filename.
parentStringThe parent directory, or empty if in a root directory.
phyStringThe PHY volume.
-#### Example (Brightscript Debugger Interactive Shell) +#### Example (BrightScript Debugger Interactive Shell) ```bash > mypath = CreateObject("roPath", "pkg:/source/appMain.brs") diff --git a/docs/REFERENCES/brightscript/interfaces/ifregex.md b/docs/REFERENCES/brightscript/interfaces/ifregex.md index 13ca1ca9..ae26ab82 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifregex.md +++ b/docs/REFERENCES/brightscript/interfaces/ifregex.md @@ -20,7 +20,7 @@ next: | Name | Description | | ------- | --------------------------------------------------------------------------------------------------------------------- | -| [roRegex](doc:roregex) | The roRegex component provides the powerful regular expression processing of the PCRE library to Brightscript strings | +| [roRegex](doc:roregex) | The roRegex component provides the powerful regular expression processing of the PCRE library to BrightScript strings | ## Supported methods @@ -57,7 +57,7 @@ If the matching pattern contains N parenthetical substrings, the relevant substr An roArray of matched substrings from str. If no match was made, an empty array is returned. If a match was made, the entire match is returned in array[0]. If there are no parenthetical substrings this is the only entry in the array -#### Example (from Brightscript Debugger Interactive Shell) +#### Example (from BrightScript Debugger Interactive Shell) ```brightscript r = CreateObject("roRegex", "(a|(z))(bc)","") @@ -107,7 +107,7 @@ Replaces the first occurrence of a matching pattern in str with replacement and | str | String | The string to be searched. | | replacement | String | The string to be used to replace matches in source string. | -#### Example (from Brightscript Debugger Interactive Shell) +#### Example (from BrightScript Debugger Interactive Shell) ```brightscript r = CreateObject("roRegex", "(\d+)\s+(\w+)", "") @@ -136,7 +136,7 @@ Replaces all occurrences of a matching pattern in str with replacement and retur A string with the result of the replace all operation. -#### Example (from Brightscript Debugger Interactive Shell) +#### Example (from BrightScript Debugger Interactive Shell) ```brightscript r = CreateObject("roRegex", "a", "i") @@ -164,7 +164,7 @@ Uses the matching pattern as a separator and splits the string on the separator An roList of substrings of str that were separated by strings which match the pattern in the CreateObject call. The separator strings are not returned. If no matches were found, the returned list contains a single item with the string unchanged. -**Examples from Brightscript Debugger Interactive Shell** +**Examples from BrightScript Debugger Interactive Shell** ```brightscript r = CreateObject("roRegex", ",", "") ' split on comma diff --git a/docs/REFERENCES/brightscript/interfaces/ifsgnodefield.md b/docs/REFERENCES/brightscript/interfaces/ifsgnodefield.md index 9d8995e9..b6507118 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifsgnodefield.md +++ b/docs/REFERENCES/brightscript/interfaces/ifsgnodefield.md @@ -10,7 +10,7 @@ metadata: next: description: '' --- -The ifSGNodeField interface allows querying, getting, setting, and performing other similar manipulation operations on Scene Graph node fields. This interface also allows you to set and unset event observers on a subject node field. +The ifSGNodeField interface allows querying, getting, setting, and performing other similar manipulation operations on SceneGraph node fields. This interface also allows you to set and unset event observers on a subject node field. ## Implemented by diff --git a/docs/REFERENCES/brightscript/interfaces/ifsgscreen.md b/docs/REFERENCES/brightscript/interfaces/ifsgscreen.md index 9c8dad82..4051a62f 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifsgscreen.md +++ b/docs/REFERENCES/brightscript/interfaces/ifsgscreen.md @@ -53,7 +53,7 @@ Returns a global reference object for the SceneGraph application. A global reference object. -#### Example: Starting Scene Graph Applications +#### Example: Starting SceneGraph Applications ```brightscript sub showChannelSGScreen() diff --git a/docs/REFERENCES/brightscript/interfaces/ifsocket.md b/docs/REFERENCES/brightscript/interfaces/ifsocket.md index 181add0a..777b4ecf 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifsocket.md +++ b/docs/REFERENCES/brightscript/interfaces/ifsocket.md @@ -14,7 +14,7 @@ next: | Name | Description | | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables Brightscript apps to send and receive UDP packets | +| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables BrightScript apps to send and receive UDP packets | | [roStreamSocket](doc:rostreamsocket) | The roStreamSocket component enables BrightScript apps to accept and connect to TCP streams as well as send and receive data with them | ## Supported methods diff --git a/docs/REFERENCES/brightscript/interfaces/ifsocketasync.md b/docs/REFERENCES/brightscript/interfaces/ifsocketasync.md index 3cc7af43..089b61da 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifsocketasync.md +++ b/docs/REFERENCES/brightscript/interfaces/ifsocketasync.md @@ -18,7 +18,7 @@ The ifSocketAsync interface provides asynchronous socket features that utilize a | Name | Description | | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables Brightscript apps to send and receive UDP packets | +| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables BrightScript apps to send and receive UDP packets | | [roStreamSocket](doc:rostreamsocket) | The roStreamSocket component enables BrightScript apps to accept and connect to TCP streams as well as send and receive data with them | ## Supported methods @@ -95,6 +95,6 @@ Enables roSocketEvent events to be sent via the message port when the underlying Returns a unique identifier that can be compared to the value returned by the [roSocketEvent.getSocketID()](doc:rosocketevent) method to match the underlying socket to receive the event. -#### Return Paramters +#### Return Parameters A unique ID. \ No newline at end of file diff --git a/docs/REFERENCES/brightscript/interfaces/ifsocketcastoption.md b/docs/REFERENCES/brightscript/interfaces/ifsocketcastoption.md index ca24c747..f3784335 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifsocketcastoption.md +++ b/docs/REFERENCES/brightscript/interfaces/ifsocketcastoption.md @@ -16,7 +16,7 @@ next: | Name | Description | | ---------------- | ---------------------------------------------------------------------------------------- | -| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables Brightscript apps to send and receive UDP packets | +| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables BrightScript apps to send and receive UDP packets | ## Supported methods diff --git a/docs/REFERENCES/brightscript/interfaces/ifsocketoption.md b/docs/REFERENCES/brightscript/interfaces/ifsocketoption.md index 03ef87a3..1d3600a1 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifsocketoption.md +++ b/docs/REFERENCES/brightscript/interfaces/ifsocketoption.md @@ -16,7 +16,7 @@ next: | Name | Description | | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables Brightscript apps to send and receive UDP packets | +| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables BrightScript apps to send and receive UDP packets | | [roStreamSocket](doc:rostreamsocket) | The roStreamSocket component enables BrightScript apps to accept and connect to TCP streams as well as send and receive data with them | diff --git a/docs/REFERENCES/brightscript/interfaces/ifsocketstatus.md b/docs/REFERENCES/brightscript/interfaces/ifsocketstatus.md index 4c8e3056..d2600dca 100644 --- a/docs/REFERENCES/brightscript/interfaces/ifsocketstatus.md +++ b/docs/REFERENCES/brightscript/interfaces/ifsocketstatus.md @@ -14,7 +14,7 @@ next: | Name | Description | | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables Brightscript apps to send and receive UDP packets | +| [roDataGramSocket](doc:rodatagramsocket) | The roDataGramSocket component enables BrightScript apps to send and receive UDP packets | | [roStreamSocket](doc:rostreamsocket) | The roStreamSocket component enables BrightScript apps to accept and connect to TCP streams as well as send and receive data with them | ## Supported methods diff --git a/docs/REFERENCES/brightscript/language/error-handling.md b/docs/REFERENCES/brightscript/language/error-handling.md index cba620f6..0e96d434 100644 --- a/docs/REFERENCES/brightscript/language/error-handling.md +++ b/docs/REFERENCES/brightscript/language/error-handling.md @@ -141,10 +141,10 @@ Local Variables: global &h0020 Interface:ifGlobal m &h0010 roAssociativeArray refcnt=3 count:0 -Brightscript Debugger> +BrightScript Debugger> ``` -A `roAssociativeArray` that describes the exception is also an acceptable argument to `THROW`. Any missing fields will will be set with default values as shown in the table below: +A `roAssociativeArray` that describes the exception is also an acceptable argument to `THROW`. Any missing fields will be set with default values as shown in the table below: | Name | Default | | :-------- | :------------------------------------------------ | diff --git a/docs/REFERENCES/brightscript/language/global-string-functions.md b/docs/REFERENCES/brightscript/language/global-string-functions.md index 684b7979..c6f971d9 100644 --- a/docs/REFERENCES/brightscript/language/global-string-functions.md +++ b/docs/REFERENCES/brightscript/language/global-string-functions.md @@ -187,7 +187,7 @@ Returns the integer value from parsing the string with the specified radix. Radix should be 2 .. 36 or the special value 0 (which automatically -identified hexadecimal or octal numbers based on 0x or 0 prefixes +identifies hexadecimal or octal numbers based on 0x or 0 prefixes respectively). Leading whitespace is ignored then as much of the rest of the string diff --git a/docs/REFERENCES/brightscript/language/global-utility-functions.md b/docs/REFERENCES/brightscript/language/global-utility-functions.md index 32721be9..ac8f374f 100644 --- a/docs/REFERENCES/brightscript/language/global-utility-functions.md +++ b/docs/REFERENCES/brightscript/language/global-utility-functions.md @@ -186,7 +186,7 @@ Return the integer value of the string, or 0 if nothing is parsed. ## RunGarbageCollector() as Object -This function runs the garbage collector on the current thread. It returns and Associative array with some statistics regarding the garbage collection. +This function runs the garbage collector on the current thread. It returns an Associative array with some statistics regarding the garbage collection. See the [Garbage collection](doc:component-architecture) section of this manual for more detail. You don't normally need to call this function. @@ -294,7 +294,7 @@ print FormatJSON(euroStr, &h0001) | **Flag** | **Description** | | :------- | :------------------------------------------------------------------------------------------------ | -| &h0000 | Default: If an unsupported value type is encounted, FormatJSON fails and returns an empty string. | +| &h0000 | Default: If an unsupported value type is encountered, FormatJSON fails and returns an empty string. | | &h0100 | Ignore: Unsupported value types are output as JSON null values. | | &h0200 | Annotate: Unsupported value types are output as a descriptive string. | diff --git a/docs/REFERENCES/brightscript/language/program-statements.md b/docs/REFERENCES/brightscript/language/program-statements.md index 41d05670..90e5b552 100644 --- a/docs/REFERENCES/brightscript/language/program-statements.md +++ b/docs/REFERENCES/brightscript/language/program-statements.md @@ -251,7 +251,7 @@ end try The TRY block of statements is executed. If and only if an error occurs, the CATCH block of statements is executed, and the named variable is assigned the information about the triggering exception. If no error occurs during execution of the TRY block, the CATCH block is skipped. -> It is illegal to put a GOTO label within a TRY block (i.e., between TRY and CATCH). A GOTO label may exist exist between CATCH and END TRY, however. +> It is illegal to put a GOTO label within a TRY block (i.e., between TRY and CATCH). A GOTO label may exist between CATCH and END TRY, however. The variable name specified as the *exception object* in the CATCH clause must refer to a *simple variable*. It cannot be an array element, for example. The following are **not** legal as exception object references in the CATCH clause: diff --git a/docs/REFERENCES/scenegraph/abstract-nodes/arraygrid.md b/docs/REFERENCES/scenegraph/abstract-nodes/arraygrid.md index 09f1900d..7b217197 100644 --- a/docs/REFERENCES/scenegraph/abstract-nodes/arraygrid.md +++ b/docs/REFERENCES/scenegraph/abstract-nodes/arraygrid.md @@ -98,14 +98,14 @@ Each node class extended from the ArrayGrid abstract node class will have custom option string floatingFocus READ_WRITE -Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are:
OptionEffect
floatingFocusCauses the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible.
fixedFocusWrapCauses the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.
+Specifies how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are:
OptionEffect
floatingFocusCauses the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible.
fixedFocusWrapCauses the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.
vertFocusAnimationStyle option string floatingFocus READ_WRITE -Specifies the how the focus indicator moves in a list or a column of grid items in response to the remote direction pad Up and Down key presses. The possible values are:
OptionEffect
floatingFocusCauses the focus indicator to float up or down until it reaches the end of the list or grid column, at which point the focus indicator will stay fixed on the first or last item in the list or grid column, and the items will scroll up or down if there are items that were not visible. Note that when this style is set, section dividers are not rendered.
fixedFocusWrapCauses the column to wrap around when the focus indicator reaches the first or last item in the list or grid column, as long as the list or grid column contains enough items to fill the list or grid column. If the list or grid column does not contain enough items to fill the list or grid column, the focus indicator will float up and down.
fixedFocusCauses the focus to stay fixed on the upper leftmost item. As the user scrolls down, the row containing the previously selected item scrolls up off screen. Scrolling continues until the last row is reached.
+Specifies how the focus indicator moves in a list or a column of grid items in response to the remote direction pad Up and Down key presses. The possible values are:
OptionEffect
floatingFocusCauses the focus indicator to float up or down until it reaches the end of the list or grid column, at which point the focus indicator will stay fixed on the first or last item in the list or grid column, and the items will scroll up or down if there are items that were not visible. Note that when this style is set, section dividers are not rendered.
fixedFocusWrapCauses the column to wrap around when the focus indicator reaches the first or last item in the list or grid column, as long as the list or grid column contains enough items to fill the list or grid column. If the list or grid column does not contain enough items to fill the list or grid column, the focus indicator will float up and down.
fixedFocusCauses the focus to stay fixed on the upper leftmost item. As the user scrolls down, the row containing the previously selected item scrolls up off screen. Scrolling continues until the last row is reached.
drawFocusFeedbackOnTop diff --git a/docs/REFERENCES/scenegraph/control-nodes/channelstore.md b/docs/REFERENCES/scenegraph/control-nodes/channelstore.md index 37794831..064aa335 100644 --- a/docs/REFERENCES/scenegraph/control-nodes/channelstore.md +++ b/docs/REFERENCES/scenegraph/control-nodes/channelstore.md @@ -178,7 +178,7 @@ store.command = "getUserData" To create an order, this field needs to be set to a ContentNode that has one child ContentNode for each item to be purchased. There are two approaches to setting the `order` field: setting it directly, or setting the `deltaOrder` field. -To set the `order` field directly, first create a ContentNode, then create one child ContentNode with the `"code"` and `"qty"` fields set for each item to be purchased. Assuming `m.channelStore` is a ChannelStore node object, the following Brightscript code shows how to do this: +To set the `order` field directly, first create a ContentNode, then create one child ContentNode with the `"code"` and `"qty"` fields set for each item to be purchased. Assuming `m.channelStore` is a ChannelStore node object, the following BrightScript code shows how to do this: ```brightscript myOrder = CreateObject("roSGNode", "ContentNode") diff --git a/docs/REFERENCES/scenegraph/dynamic-voice-keyboard-nodes/key-definition-file.md b/docs/REFERENCES/scenegraph/dynamic-voice-keyboard-nodes/key-definition-file.md index ecae3da0..e25344d8 100644 --- a/docs/REFERENCES/scenegraph/dynamic-voice-keyboard-nodes/key-definition-file.md +++ b/docs/REFERENCES/scenegraph/dynamic-voice-keyboard-nodes/key-definition-file.md @@ -33,7 +33,7 @@ The **KeyLayout** object specifies the key configuration for a keyboard instance | keyboardWidthFHD | unsigned | Overall width of the keyboard for FHD. | | keyboardHeightHD | unsigned | Overall height of the keyboard for HD. | | keyboardWidthHD | unsigned | Overall width of the keyboard for HD. | -| sections | array of **Section** objects | An array of **Section** objects in the **KeyLayout**. A **KeyLayout** object contains one or more **Section** objects (it must have at least one). Most have a single **Section** object (for example, a PIN pad). In some cases, however, a **KeyLayout** will have multiple **Section** objects (for example, Roku's WiFi keyboard has four sections). | +| sections | array of **Section** objects | An array of **Section** objects in the **KeyLayout**. A **KeyLayout** object contains one or more **Section** objects (it must have at least one). Most have a single **Section** object (for example, a PIN pad). In some cases, however, a **KeyLayout** will have multiple **Section** objects (for example, Roku's Wi-Fi keyboard has four sections). | ## Section @@ -47,7 +47,7 @@ A **Section** contains one or more **Grid** objects. ## Grid -A **Section** may contain one or more **Grid** objects. A **Section** typically contains multiple **Grid** objects when defining different key layouts for a particular mode of the overall **KeyLayout**. For example, the "alpha key" section of Roku's current WiFi keyboard has six modes ("alphanumLowerCase", "alphanumUpperCase", "symbolsLowerCase", "symbolsUpperCase", "accentsLowerCase", "accentsUpperCase"). Each of the modes for these **Section** objects is specified using a different **Grid**. +A **Section** may contain one or more **Grid** objects. A **Section** typically contains multiple **Grid** objects when defining different key layouts for a particular mode of the overall **KeyLayout**. For example, the "alpha key" section of Roku's current Wi-Fi keyboard has six modes ("alphanumLowerCase", "alphanumUpperCase", "symbolsLowerCase", "symbolsUpperCase", "accentsLowerCase", "accentsUpperCase"). Each of the modes for these **Section** objects is specified using a different **Grid**. @@ -71,7 +71,7 @@ A **Section** may contain one or more **Grid** objects. A **Section** typically - + @@ -161,7 +161,7 @@ Key sizes are computed based on the various width and height properties specifie * For keys with equal width in a Row object, if there are _K_ keys in the Row, the height of each key is computed as follows: `keyWidth = (sectionWidth) / K`. -* To configure keys with varying widths within in a Row, specify the **keyWidth** attribute for those keys. Those keys will use the explicitly specified widths, and the widths of the remaining keys will be computed by equally dividing the remaining **sectionWidth** evenly after subtracting the width of the keys with explicitly specified widths. For example, if there are _K_ keys in a row and Key 1 has its **keyWidth** explicitly specified as 100, Key 1 will have width 100 and the other keys in the Row will be calculated as follows: `keyWidth = (sectionWidth - 100) / (K - 1)`. +* To configure keys with varying widths within a Row, specify the **keyWidth** attribute for those keys. Those keys will use the explicitly specified widths, and the widths of the remaining keys will be computed by equally dividing the remaining **sectionWidth** evenly after subtracting the width of the keys with explicitly specified widths. For example, if there are _K_ keys in a row and Key 1 has its **keyWidth** explicitly specified as 100, Key 1 will have width 100 and the other keys in the Row will be calculated as follows: `keyWidth = (sectionWidth - 100) / (K - 1)`. ## Examples @@ -229,7 +229,7 @@ This example uses a Key Definition File to specify a simple numeric PIN pad. The ### MiniKeyboard -This example uses the Key Definition File for the Search "MiniKeyboard" used by the RokuOS. The KeyLayout has a single Section with a single Grid that has six rows, with six keys each for the characters a-z and 0-9. The seventh row of the grid has three double-width keys for **Clear**, **Space**, and **Backspace**. +This example uses the Key Definition File for the Search "MiniKeyboard" used by the Roku OS. The KeyLayout has a single Section with a single Grid that has six rows, with six keys each for the characters a-z and 0-9. The seventh row of the grid has three double-width keys for **Clear**, **Space**, and **Backspace**. @@ -744,9 +744,9 @@ The examples below show the Keyboard in the "NameLower", "Zip" and "FullLower" m } ``` -### WiFi Keyboard +### Wi-Fi Keyboard -This example shows the Key Definition File for the WiFi keyboard used by the Roku OS. That keyboard has four Sections. Each Section supports one or more modes with the modes being associated with one or more Grid objects. Each Grid ha four Row's with varying numbers of keys. +This example shows the Key Definition File for the Wi-Fi keyboard used by the Roku OS. That keyboard has four Sections. Each Section supports one or more modes with the modes being associated with one or more Grid objects. Each Grid ha four Row's with varying numbers of keys. The examples below show the keyboard in "ABC123Lower" mode as well as "AccentsUpper" mode. Note the following: @@ -1545,7 +1545,7 @@ The examples below show the keyboard in "ABC123Lower" mode as well as "AccentsUp ### Email Keyboard with pop-up suggestions -This example uses the same Key Definition File as the WiFi keyboard above, but with KeySuggestions added for the ampersand key. The suggestions pop-up is set to trigger when the key is focused for a short amount of time as well as when the key is selected. +This example uses the same Key Definition File as the Wi-Fi keyboard above, but with KeySuggestions added for the ampersand key. The suggestions pop-up is set to trigger when the key is focused for a short amount of time as well as when the key is selected. @@ -2343,7 +2343,7 @@ This example uses the same Key Definition File as the WiFi keyboard above, but w ### Full Keyboard with Extended Action Section -This example starts with the same Key Definition File used for the WiFi keyboard above, but adds a 5th Section that includes additional action keys. The _rows_ array for that Section's Grid contains 4 elements. The 1st, 2nd and 4th Row's in that array contain a single Key (Close, Clear and Continue). The 3rd element of that array is a null Row. This causes a gap to be left between the 2nd and 4th rows of that Section. See the Section near of the bottom of the Key Definition File to see how a null Row is specified in the Grid's _rows_ array. +This example starts with the same Key Definition File used for the Wi-Fi keyboard above, but adds a 5th Section that includes additional action keys. The _rows_ array for that Section's Grid contains 4 elements. The 1st, 2nd and 4th Row's in that array contain a single Key (Close, Clear and Continue). The 3rd element of that array is a null Row. This causes a gap to be left between the 2nd and 4th rows of that Section. See the Section near of the bottom of the Key Definition File to see how a null Row is specified in the Grid's _rows_ array. diff --git a/docs/REFERENCES/scenegraph/list-and-grid-nodes/labellist.md b/docs/REFERENCES/scenegraph/list-and-grid-nodes/labellist.md index 83bac8d5..053b20f7 100644 --- a/docs/REFERENCES/scenegraph/list-and-grid-nodes/labellist.md +++ b/docs/REFERENCES/scenegraph/list-and-grid-nodes/labellist.md @@ -14,7 +14,7 @@ Extends [**ArrayGrid**](doc:arraygrid) The LabelList node class is a simple list class that can be used to display a list of items. Each item can include a text string and an optional icon positioned to the left of the text string. -The list items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections. +The list items can be organized into sections that are demarcated by labeled horizontal divider lines between the sections. In most cases, you will want to populate the content of a LabelList (or other similar components like PosterGrids, etc.) from a content feed, web service API, or some other dynamic data source. However, to illustrate the basics of how a LabelList is constructed and used, here is a simple example of creating a LabelList and populating it with static data. Static data in a LabelList may be useful for app screens such as settings or menus with fixed items. diff --git a/docs/REFERENCES/scenegraph/list-and-grid-nodes/markupgrid.md b/docs/REFERENCES/scenegraph/list-and-grid-nodes/markupgrid.md index 572cb280..19aca0fa 100644 --- a/docs/REFERENCES/scenegraph/list-and-grid-nodes/markupgrid.md +++ b/docs/REFERENCES/scenegraph/list-and-grid-nodes/markupgrid.md @@ -22,7 +22,7 @@ The layout of rows and columns in the grid is very flexible. Possible layouts in * a layout with the items in some rows having varying heights and/or the items in some columns having varying widths * a layout with varying width rows and columns and items that occupy one or more rows and columns -The grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections. +The grid items can be organized into sections that are demarcated by labeled horizontal divider lines between the sections. ### Example diff --git a/docs/REFERENCES/scenegraph/list-and-grid-nodes/postergrid.md b/docs/REFERENCES/scenegraph/list-and-grid-nodes/postergrid.md index e5fe9d39..d62c1710 100644 --- a/docs/REFERENCES/scenegraph/list-and-grid-nodes/postergrid.md +++ b/docs/REFERENCES/scenegraph/list-and-grid-nodes/postergrid.md @@ -24,7 +24,7 @@ The layout of rows and columns in the grid is very flexible. Possible layouts in * a layout with the posters in some rows having varying heights and/or the posters in some columns having varying widths * a layout with varying width rows and columns and items that occupy one or more rows and columns -The grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections. +The grid items can be organized into sections that are demarcated by labeled horizontal divider lines between the sections. The PosterGrid node class includes the capability to automatically scale the loaded graphical images to fit within the target screen element area specified by the `basePosterSize` field value. To use this capability, select the scaling option you want as the value of the `posterDisplayMode` field. diff --git a/docs/REFERENCES/scenegraph/list-and-grid-nodes/targetset.md b/docs/REFERENCES/scenegraph/list-and-grid-nodes/targetset.md index 0a00f0de..215c33d7 100644 --- a/docs/REFERENCES/scenegraph/list-and-grid-nodes/targetset.md +++ b/docs/REFERENCES/scenegraph/list-and-grid-nodes/targetset.md @@ -42,7 +42,7 @@ The TargetSet node class is used to specify a set of target regions where items - + diff --git a/docs/REFERENCES/scenegraph/media-playback-nodes/soundeffect.md b/docs/REFERENCES/scenegraph/media-playback-nodes/soundeffect.md index 6ff2cea2..652b3751 100644 --- a/docs/REFERENCES/scenegraph/media-playback-nodes/soundeffect.md +++ b/docs/REFERENCES/scenegraph/media-playback-nodes/soundeffect.md @@ -106,9 +106,9 @@ A sample demonstrating how to use the SoundEffect node can be found here: [Simpl - diff --git a/docs/REFERENCES/scenegraph/media-playback-nodes/video.md b/docs/REFERENCES/scenegraph/media-playback-nodes/video.md index 8048c8c9..5392727c 100644 --- a/docs/REFERENCES/scenegraph/media-playback-nodes/video.md +++ b/docs/REFERENCES/scenegraph/media-playback-nodes/video.md @@ -111,14 +111,14 @@ The `control` field includes a `prebuffer` option, which allows the video to beg - + - + @@ -1084,7 +1084,7 @@ Developers can receive event-based notifications when the CDN is switched during - + diff --git a/docs/REFERENCES/scenegraph/scene.md b/docs/REFERENCES/scenegraph/scene.md index b52c0645..42d67c2a 100644 --- a/docs/REFERENCES/scenegraph/scene.md +++ b/docs/REFERENCES/scenegraph/scene.md @@ -75,7 +75,7 @@ While it is technically possible to have more than one scene per app, we recomme - -
modes string/array of stringsThe keyboard mode when this grid is shown.If the mode field of a DynamicKeyGrid node is set, the Grid object with the matching mode is displayed. In some cases, the same grid is shown for different keyboard modes. For example, Roku's WiFi keyboard shows the same numeric characters grid in both "alphaNumUpperCase" and "alphaNumLowerCase" modes.The keyboard mode when this grid is shown.If the mode field of a DynamicKeyGrid node is set, the Grid object with the matching mode is displayed. In some cases, the same grid is shown for different keyboard modes. For example, Roku's Wi-Fi keyboard shows the same numeric characters grid in both "alphaNumUpperCase" and "alphaNumLowerCase" modes.
rowsinteger -1 READ_WRITEIdentifies the index of an element of the targetRects array that will be treated as the region occupied by the focus item. The default of of -1 indicates that the TargetGroup's current focus index will not be changed when the TargetGroup is set to use the TargetSet to define its target regions.Identifies the index of an element of the targetRects array that will be treated as the region occupied by the focus item. The default of -1 indicates that the TargetGroup's current focus index will not be changed when the TargetGroup is set to use the TargetSet to define its target regions.
color
notreadyThe sound file is not on the device. This is set in response to the control field being set to "play".

For local WAV files included in a package file, it will be occur if the path to the file is not correct, or if the file is not a valid WAV file.

For network-accessed WAV files, this indicates one of these three conditions is true:

    +
The sound file is not on the device. This is set in response to the control field being set to "play".

For local WAV files included in a package file, it will occur if the path to the file is not correct, or if the file is not a valid WAV file.

For network-accessed WAV files, this indicates one of these three conditions is true:

  • The file has been requested, but is not finished downloading. In this case, the loadStatus field will be set to "loading".
  • -
  • The file request has completed, but the URL is incorrect or the downloaded file is not a valid WAV filed. In this case, the loadStatus field will be set to "failed"
  • +
  • The file request has completed, but the URL is incorrect or the downloaded file is not a valid WAV file. In this case, the loadStatus field will be set to "failed"
  • The file has previously been downloaded, but has been flushed from the LRU cache. In this case, the loadStatus field will be set to "flushed".
integer 0 READ\_ONLYThe error code associated with the video play error set in the state field:
-  0    no error                                                     
- -1 network error (server down or unresponsive, server is unreachable, network setup problem on the client).
- -2 connection timed out
- -3 unknown/unspecified or generic Error
- -4 empty list; no streams were specified to play
- -5 media error; the media format is unknown or unsupported
- -6 DRM error

Use the errorStr and and errorInfo fields for more descriptive diagnostic information to help identify and resolve the cause of the error.
The error code associated with the video play error set in the state field:
-  0    no error                                                     
- -1 network error (server down or unresponsive, server is unreachable, network setup problem on the client).
- -2 connection timed out
- -3 unknown/unspecified or generic Error
- -4 empty list; no streams were specified to play
- -5 media error; the media format is unknown or unsupported
- -6 DRM error

Use the errorStr and errorInfo fields for more descriptive diagnostic information to help identify and resolve the cause of the error.
errorMsg string READ\_ONLYAn error message describing the video play error set in the state field.

Use the errorStr and and errorInfo fields for more descriptive diagnostic information to help identify and resolve the cause of the error.
An error message describing the video play error set in the state field.

Use the errorStr and errorInfo fields for more descriptive diagnostic information to help identify and resolve the cause of the error.
errorStrvector2d (width, height) \[0,0] READ\_WRITESets the max resolution required by your video.

Video decode memory is a shared resource with OpenGL texture memory. The Brightscript 2D APIs are implemented using OpenGL texture memory on Roku models that support the Open GL APIs (see [Hardware specifications](doc:hardware) for a list of these models).

On models that do not support Open GL APIs, this field exists for API compatibility but has no effect on actual memory allocations.

Video decode memory allocation is based on a resolution of 1920x1080 or 1280x720 as the maximum supported resolution for a particular Roku model (see [Hardware specifications](doc:hardware) for a list of these models).

This field enables applications that want to use both the 2D APIs and video playback with a lower resolution than 1080p. Without this field, these applications are likely to not have enough memory for either video playback or UI rendering.

If width is 0 (the default), it is unlimited. If height is 0 (the default), it is unlimited.
Sets the max resolution required by your video.

Video decode memory is a shared resource with OpenGL texture memory. The BrightScript 2D APIs are implemented using OpenGL texture memory on Roku models that support the Open GL APIs (see [Hardware specifications](doc:hardware) for a list of these models).

On models that do not support Open GL APIs, this field exists for API compatibility but has no effect on actual memory allocations.

Video decode memory allocation is based on a resolution of 1920x1080 or 1280x720 as the maximum supported resolution for a particular Roku model (see [Hardware specifications](doc:hardware) for a list of these models).

This field enables applications that want to use both the 2D APIs and video playback with a lower resolution than 1080p. Without this field, these applications are likely to not have enough memory for either video playback or UI rendering.

If width is 0 (the default), it is unlimited. If height is 0 (the default), it is unlimited.
cgmsassocarray READ_WRITEThis read-only field is set when the Scene is initialized. It indicates which of an app's design resolutions (per manifest's ui_resolutions value) is being used, based on the player model and connected display type. Previously, a developer could deduct the same information by using both roDeviceInfo.GetUIResolution and roAppInfo.getValue("ui_resolutions"). This new field simplifies the process.

The field is set to an AA with two numeric-valued keys — width and height — as well as a string value indicating the current design resolution ("HD", "FHD" or "SD").

Brightscript Debugger> ? myNode.getScene().currentDesignResolution
+
This read-only field is set when the Scene is initialized. It indicates which of an app's design resolutions (per manifest's ui_resolutions value) is being used, based on the player model and connected display type. Previously, a developer could deduct the same information by using both roDeviceInfo.GetUIResolution and roAppInfo.getValue("ui_resolutions"). This new field simplifies the process.

The field is set to an AA with two numeric-valued keys — width and height — as well as a string value indicating the current design resolution ("HD", "FHD" or "SD").

BrightScript Debugger> ? myNode.getScene().currentDesignResolution
 <Component: roAssociativeArray> =
 {
     height: 720
@@ -89,7 +89,7 @@ While it is technically possible to have more than one scene per app, we recomme
 
RSGPalette node not set READ_WRITEDefines the default color palette used by those nodes that have a palette field (for example, the Scene node, standard dialogs, dynamic custom voice keyboards, and so on).

Apps typically set the Scene.palette field to consistently color the standard dialogs and keyboards in the app.

Nodes that include a palette field can be set to an RSGPalette node to override the default colors specified in the Scene node.

If a node that supports a palette does not set its palette filed, the node looks up the scene graph until it finds a node with its palette field set.

If no ancestor node is found with its palette field set, the default color palette is used (grey with white text).

The RSGPalette color values used by the Scene node are as follows:
+
Defines the default color palette used by those nodes that have a palette field (for example, the Scene node, standard dialogs, dynamic custom voice keyboards, and so on).

Apps typically set the Scene.palette field to consistently color the standard dialogs and keyboards in the app.

Nodes that include a palette field can be set to an RSGPalette node to override the default colors specified in the Scene node.

If a node that supports a palette does not set its palette filed, the node looks up the scene graph until it finds a node with its palette field set.

If no ancestor node is found with its palette field set, the default color palette is used (gray with white text).

The RSGPalette color values used by the Scene node are as follows:
diff --git a/docs/REFERENCES/scenegraph/widget-nodes/texteditbox.md b/docs/REFERENCES/scenegraph/widget-nodes/texteditbox.md index 97df6bfd..88f8c451 100644 --- a/docs/REFERENCES/scenegraph/widget-nodes/texteditbox.md +++ b/docs/REFERENCES/scenegraph/widget-nodes/texteditbox.md @@ -72,7 +72,7 @@ The default appearance of the **TextEditBox** is very transparent, allowing it t Read-Write diff --git a/docs/SPECIFICATIONS/media/index.md b/docs/SPECIFICATIONS/media/index.md index 1393b14a..22e7d347 100644 --- a/docs/SPECIFICATIONS/media/index.md +++ b/docs/SPECIFICATIONS/media/index.md @@ -45,7 +45,7 @@ Some elementary stream formats can be streamed directly without encapsulating th ## Adaptive streaming protocols Network speeds can vary over time; therefore, it is important to provide multiple -video streams of varying quality to provide the best experience to your viewers is. Roku devices can then automatically select the best streaming quality based on the viewer's network connection. +video streams of varying quality to provide the best experience to your viewers. Roku devices can then automatically select the best streaming quality based on the viewer's network connection. Roku supports the following widely-used standard formats for adaptive bit rate switching: @@ -277,7 +277,7 @@ For typical streaming video applications, we recommend a range of about 400Kbps > If the content contains a surround sound track, AAC 2-channel stereo must be provided as a backup audio track. -All devices do not support 1080p60 playback; therefore, include a high-quality 720p60 or 1080p24/30 encoding; otherwise, users with these devices may not get a good experience, even under excellent network conditions. +Not all devices support 1080p60 playback; therefore, include a high-quality 720p60 or 1080p24/30 encoding; otherwise, users with these devices may not get a good experience, even under excellent network conditions. The ideal bitrate ladder is as follows: diff --git a/docs/SPECIFICATIONS/search-feed.md b/docs/SPECIFICATIONS/search-feed.md index ee45d249..c3e28ecd 100644 --- a/docs/SPECIFICATIONS/search-feed.md +++ b/docs/SPECIFICATIONS/search-feed.md @@ -16,7 +16,7 @@ The Roku search feed includes the following key features: * **One feed for all regions**. A single feed may contain region-specific content metadata and rating sources. -* **Content availabilty windows**. A feed may include availability windows for individual content items. +* **Content availability windows**. A feed may include availability windows for individual content items. * **Variety of content**. The feed may contain the metadata for movies, television shows, and short-form content (for example, cooking videos, sports highlights, and so on). @@ -512,7 +512,7 @@ If the **asset.type** field is set to "episode" for a content item, provide meta ### LiveInfo -If the program is a "live" event this field indicates when the actual event is occuring. +If the program is a "live" event this field indicates when the actual event is occurring. | Field | Type | Description | Required | | :------------ | :----- | :--------------------------------------------------------- | :------- | @@ -658,7 +658,7 @@ Apps in the U.S. Streaming Store with 24/7 live linear streams can participate i Your search feed may only include channels directly distributed by your app. Do not include channels offered through third-party channel subscriptions (subscriptions or add-ons that require a separate publisher account). -> The live liner integration requires Gracenote Station IDs. Individual live events or channels without Gracenote Station IDs are currently not supported. Roku uses Gracenote EPG and GSD data (schedule of event IDs). Publishers are responsiiblwe for contacting Gracenote to get their Station IDs. +> The live linear integration requires Gracenote Station IDs. Individual live events or channels without Gracenote Station IDs are currently not supported. Roku uses Gracenote EPG and GSD data (schedule of event IDs). Publishers are responsible for contacting Gracenote to get their Station IDs. ### Live stream sample feed diff --git a/docs/SPECIFICATIONS/specs-overview.md b/docs/SPECIFICATIONS/specs-overview.md index eaf89c78..c52435f7 100644 --- a/docs/SPECIFICATIONS/specs-overview.md +++ b/docs/SPECIFICATIONS/specs-overview.md @@ -19,7 +19,7 @@ This section contains the following types of information: model-family numbers, and associated hardware characteristics (e.g., CPU and graphics device, system clock speed, onboard RAM and flash memory, maximum video resolution for - UI and video playback, highest level of WiFi support, supported video output + UI and video playback, highest level of Wi-Fi support, supported video output modes, power requirements, and many more); * [Streaming specifications](doc:media) — Video and audio file formats and streaming protocols; diff --git a/docs/THE ROKU CHANNEL/live-linear/ovp-linear-ingest-spec.md b/docs/THE ROKU CHANNEL/live-linear/ovp-linear-ingest-spec.md index a4dd05b9..3ff49b90 100644 --- a/docs/THE ROKU CHANNEL/live-linear/ovp-linear-ingest-spec.md +++ b/docs/THE ROKU CHANNEL/live-linear/ovp-linear-ingest-spec.md @@ -772,7 +772,7 @@ EPG Requirement 15-minute minimum duration for content block -For full details and guidance on constructing your EPG, please refer this this guide. +For full details and guidance on constructing your EPG, please refer to this guide. [https://developer.roku.com/en-ot/trc-docs/live-linear/epg-on-trc.md](https://developer.roku.com/en-ot/trc-docs/live-linear/epg-on-trc.md) diff --git a/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/alternative-prod-guidelines.md b/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/alternative-prod-guidelines.md index d3c82811..883e0c6c 100644 --- a/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/alternative-prod-guidelines.md +++ b/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/alternative-prod-guidelines.md @@ -366,7 +366,7 @@ Roku Production will attend in person or via dial-in. It is asked that a phone d ### 4.3 Internal ad sales needs -As the The Roku Channel is 100% ad supported, we will reach out prior to commencement of principal photograpy to discuss capturing a very simple, straight forward message from talent about the show to be used internally only. +As The Roku Channel is 100% ad supported, we will reach out prior to commencement of principal photography to discuss capturing a very simple, straightforward message from talent about the show to be used internally only. * This is a very simple video, straight to camera, not color corrected, for internal use only. * Roku will manage all aspects of the content (i.e. wording). This should take no more than 10-20 minutes to capture. diff --git a/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/post-alternative-specs.md b/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/post-alternative-specs.md index 9267e608..83dae0f8 100644 --- a/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/post-alternative-specs.md +++ b/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/post-alternative-specs.md @@ -836,7 +836,7 @@ In cases where a paper deliverable is non-applicable to the project, please uplo ### 9.1 High resolution masters and source material -AWS is Roku’s platform for archiving projects. Roku’s S3 bucket can be accessed via Aspera Shares. Note that this is separate destination from the Aspera Ingest upload. A Roku Post Manager will request email addresses and names of those who will be uploading archival assets to the the designated archival show folder. +AWS is Roku’s platform for archiving projects. Roku’s S3 bucket can be accessed via Aspera Shares. Note that this is separate destination from the Aspera Ingest upload. A Roku Post Manager will request email addresses and names of those who will be uploading archival assets to the designated archival show folder. Reach out to Roku Post if you have not received access to Aspera credentials. diff --git a/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/scripted-prod-guidelines.md b/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/scripted-prod-guidelines.md index f2cf5453..6e116704 100644 --- a/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/scripted-prod-guidelines.md +++ b/docs/THE ROKU CHANNEL/video-on-demand/roku-originals/scripted-prod-guidelines.md @@ -358,7 +358,7 @@ Roku Production will attend in person or via dial-in. It is asked that a phone d ### 4.3 Internal ad sales needs -As the The Roku Channel is 100% ad supported, we will reach out prior to commencement of principal photograpy to discuss capturing a very simple, straight forward message from talent about the show to be used internally only. +As The Roku Channel is 100% ad supported, we will reach out prior to commencement of principal photography to discuss capturing a very simple, straightforward message from talent about the show to be used internally only. * This is a very simple video, straight to camera, not color corrected, for internal use only. * Roku will manage all aspects of the content (i.e. wording). This should take no more than 10-20 minutes to capture. diff --git a/docs/VIDEOS/courses/rsg/debugging-1.md b/docs/VIDEOS/courses/rsg/debugging-1.md index 268e555b..7eda8e69 100644 --- a/docs/VIDEOS/courses/rsg/debugging-1.md +++ b/docs/VIDEOS/courses/rsg/debugging-1.md @@ -25,7 +25,7 @@ This lesson explains how to access the [debug console](doc:debugging) via Telnet | Item | Description | | ------------------------------------------------------------ | ------------------------------------------------------------ | | [Debugging code](doc:debugging) | Read how to how to access the debug console via Telnet and the Roku Eclipse Plug-in and use the different debug ports. Review the list of debugging commands that can be entered in the BrightScript (port 8085) and SceneGraph (port 8080) debug ports. | -| [Roku Eclipse plug-in](https://devtools.web.roku.com/ide/eclipse/plugin) | Install and open Roku's plug-in for the Eclipse IDE, which includes SceneGraph and Brightscript support to make building Roku apps easier. This plug-in helps with scripting tasks such as code completion, error compilation, code commenting, and static analysis. | +| [Roku Eclipse plug-in](https://devtools.web.roku.com/ide/eclipse/plugin) | Install and open Roku's plug-in for the Eclipse IDE, which includes SceneGraph and BrightScript support to make building Roku apps easier. This plug-in helps with scripting tasks such as code completion, error compilation, code commenting, and static analysis. | | [Roku Eclipse plug-in overview](doc:ide-support) | Read a high-level overview of the features included in the Roku Eclipse plug-in. | ## Related diff --git a/docs/VIDEOS/courses/rsg/development-setup.md b/docs/VIDEOS/courses/rsg/development-setup.md index 0e834b86..0f3fbd08 100644 --- a/docs/VIDEOS/courses/rsg/development-setup.md +++ b/docs/VIDEOS/courses/rsg/development-setup.md @@ -27,7 +27,7 @@ This lesson explains how to create the required user and developer accounts for | [Developer environment setup](doc:developer-setup) | Enable the Development Application Installer on your Roku device so that you can sideload and test your development apps. | | [Roku Hello World sample app](https://github.com/rokudev/hello-world) | Download your first Roku app. You can then sideload, test, and update this app. | | [Sideloading Roku apps](doc:developer-setup) | Sideload the Hello World sample app using the Development Application Installer on your Roku device. | -| [Roku Eclipse plug-in](https://devtools.web.roku.com/ide/eclipse/plugin) | Install and open Roku's plug-in for the Eclipse IDE, which includes SceneGraph and Brightscript support to make building Roku apps easier. This plug-in helps with scripting tasks such as code completion, error compilation, code commenting, and static analysis. | +| [Roku Eclipse plug-in](https://devtools.web.roku.com/ide/eclipse/plugin) | Install and open Roku's plug-in for the Eclipse IDE, which includes SceneGraph and BrightScript support to make building Roku apps easier. This plug-in helps with scripting tasks such as code completion, error compilation, code commenting, and static analysis. | | [Roku Developer Dashboard](https://developer.roku.com/developer) | Browse the Developer Dashboard, which is your central hub for creating, managing, and publishing Roku apps. The Developer Dashboard includes access to a wizard-like UI for creating, testing, and publishing Roku apps; analytics to track your app's engagement and performance; payout and transaction reports to monitor your app's monetization; and tools for managing user access, in-app products, and test users. | | [Roku Knowledge Center](https://partnersuccess.roku.com/hc/en-us) | Read articles answering some of the most common frequently asked questions about Roku app development, publishing, advertising, and reporting. | | [Roku Developer Forums](https://community.roku.com/t5/Roku-Developer-Program/bd-p/roku-developer-program) | Interact with the Roku developer community. Participate in discussions on wide range of development topics from using the SceneGraph and BrightScript APIs to using certification testing tools. |
Palette Color Name - Specifies a string to be displayed if the length of the text field string is zero. The typical usage of this field is to prompt the user about what to enter (such as, "Enter your WiFi password"). + Specifies a string to be displayed if the length of the text field string is zero. The typical usage of this field is to prompt the user about what to enter (such as, "Enter your Wi-Fi password").