July 22nd OS update

We are launching an update to Kepler OS on July 22nd.

Like the July 15 release, this release has no updates to the installed SDK itself, but there are many OS level improvements and bug fixes. Key enhancements include improved app switching performance, system stability enhancements with thread-safe logging in KPLog. Developer tools see improvements in VPT validation for URI schemes with special characters and module privileges. The release also addresses Content Launcher integration for TV shows, aligning its behavior with movie content. Text rendering issues affecting fade-in animations in the simulator have been resolved as well.

While this SDK update is optional, if you wish to update the Kepler Virtual Device (KVD) simulator, download this SDK update to upgrade KVD to the latest OS with these improvements.

This release provides OS 1.1 (201010439550) on your Kepler Fire TV Stick, which is compatible with Kepler SDK v0.20. You can check your device software version by navigating to My Fire TV > About.

To validate, run kepler -v and you should expect that version 0.20.3106 is returned.

Announcement

Improved Kepler SDK installation for CI/CD environments

When installing Kepler SDK in continuous integration (CI) or continuous deployment (CD) environments (non-interactive mode), you may now install the SDK as a root user and make the KVD installation optional.

Example 1: Installing the SDK in non-interactive mode

You can install the SDK in non-interactive environments (for use in CI/CD) by setting the NONINTERACTIVE environment variable.

Options for setting this environment variable:

  • Option 1: Set the environment variable globally
  export NONINTERACTIVE=true
  curl -fsSL <script-url> | /bin/bash --version <version> --sdk-url <url> 
  • Option 2: Inline environment variable in script
  curl -fsSL <script-url> | NONINTERACTIVE=true /bin/bash --version <version> --sdk-url <url>

Example 2: Install Kepler SDK in CI without KVD

If you want to skip the simulator (KVD), omit the --sim-url <url> from the SDK install curl command from the DevPortal.

curl -fssL <script url> | /bin/bash --version <version> --sdk-url <url>

Sample curl command:

curl -fsSL https://kepler-static-artifacts.kepler.labcollab.net/07/07fa85e312e7f1ccdd30055db55ed5c1a3e4256def70751cc59940ce3a587ceb| /bin/bash -s -- --sdk-url=https://kepler-static-artifacts.kepler.labcollab.net/e2/e2311b073f4326db66ac1c94103d7526fa345907a8f29d02a3b69d3cbf04b3a3—version=0.20.2975 --directed-id=<YOUR_ID_HERE>

Update to log format

The logging system has been improved with a new standardized format for better system diagnostics. This only impacts logs that include KeplerScript.

Log Format Change Before:

<severity one letter> Volta:[KeplerScript-Native|JavaScript] <log entry>

After:

INFO <severity> com.amazon.keplerscript: [KeplerScript-Native|JavaScript] <log entry>

Action needed Update any automation that relies on the old formatting of the log output to use the new format. Note that there should be little impact for app developers because of the new log format prefixes since the logging logic itself is not changing.

Fallback option

For legacy format, use the runtime flag: ENABLE_THREAD_SAFE_LOGGER=false.

Example:

vlcm launch-app pkg://com.amazon.kepler.react.appdemos.krl.2.kitchen.sink ENABLE_THREAD_SAFE_LOGGER=false)

Or you may add the following to the application’s runtime feature flags in react-native.config.js.

project: {
    kepler: {
        "runtimeFeatures": {
            "ENABLE_THREAD_SAFE_LOGGER": false
        }
    }
}

OS improvements and bug fixes

  1. Improved Login with Amazon to use authorization_code grant with PKCE, replacing the access_token flow. This provides increased security and protects against token interception attacks.
  2. Improved accuracy of JS CPU profiling in Activity Monitor by disabling CPU profiling for Headless Hermes Runtime. This ensures profiling targets the expected main JS thread instead of the headless JS thread.
  3. Improved background app management to reduce device sluggishness and increase overall system stability during switching apps.
  4. Improved subtitle display and readability on small screen TV devices to prevent text overlap.
  5. Improved VPT validate with module privilege verification. It now validates required privileges against manifest declarations and provides build-time warnings instead of runtime failures.
  6. Improved app switching performance by triggering the background state when a splash screen appears in the Foreground app instead of waiting for a full app transition.
  7. Improved the VPT validate command to support app schemes and hosts containing special characters, such as underscores. This resolves validation failures for affected URIs.
  8. Added new documentation to Detect Where the App Crash Originates to help developers distinguish between crashes in app code versus Amazon’s code, improving debugging efficiency.
  9. Added synchronous way to deinitialize the media player instance through headless JS Media player APIs.
  10. Fixed the TextInput component so that it correctly applies the fontFamily style property, along with other text-related styles, such as fontWeight, and fontSize.
  11. Fixed content preview playback so that it now displays content in the correct aspect ratio without screen cropping issues during background playback.
  12. Fixed a crash between app switching due to an issue with moving apps from the background to the foreground.
  13. Fixed the vda shell vmsgr send command failure due to missing privileges for the dev shell.
  14. Fixed subtitle positioning to ensure complete visibility of text at the bottom of the screen during video playback.
  15. Fixed text rendering inconsistencies in the simulator caused by fade-in effects interacting with GPU shader execution. This did not affect device performance.
  16. Fixed app crashes during sign in when display output was temporarily unavailable by improving window creation handling.
  17. Fixed performance degradation caused by SplashService consuming excessive CPU cycles while processing display events.
  18. Fixed content launch handling for TV shows through the Content Launcher integration. It now directs to the show details page similar to the way movie content does.
  19. Fixed system freezes in media controls by reducing the duration of thread synchronization locks during data reporting.
  20. Fixed inconsistency in VPT validation help text by updating [[offers.message_target]] to [[offers.message-target]] for consistent documentation formatting.