Skip to content

Releases: player-ui/player

0.10.2-next.1

06 Jan 18:44
cb3ea0c
Compare
Choose a tag to compare
0.10.2-next.1 Pre-release
Pre-release

Release Notes

Fix Duplicate Date in Title for next Changelog Entries (#569)

fix duplicate date in title for next changelogs


πŸ› Bug Fix

πŸ“ Documentation

  • Fix Duplicate Date in Title for next Changelog Entries #569 (@KetanReddy)

Authors: 3

0.10.1

03 Jan 00:28
Compare
Choose a tag to compare

Release Notes

More Release Fixes (#558)

  • Fix git push of changelog for next builds
  • Fix stamping of search config for latest doc site releases

πŸ› Bug Fix

πŸ“ Documentation

Authors: 5

0.10.0

04 Dec 17:09
Compare
Choose a tag to compare

Release Notes

Fix Releases (#556)

Push up new changelog before continuing release process so new version is tagged to a commit that exists

Change Type (required)

Indicate the type of change your pull request is:

  • patch
  • minor
  • major
  • N/A

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Miscellaneous Maintainance Fixes (#555)

  • Internal: Fix changelog creation for next releases
  • Internal: Align on test file location for js packages
  • Internal: Omit config files from coverage

Add Changelogs from next releases to CHANGELOG.md file (#554)

Preserve next releases in CHANGELOG.md file

Add Missing DSL Docs (#548)

Docs - Add DSL docs

Applicability docs (#544)

  • Update applicability docs to reflect desired patterns and behaviors
  • Fix flaky react reference asset test
  • Fix misc vitest issues when running outside of bazel (cjs environment, excluded directories)

Change Type (required)

Indicate the type of change your pull request is:

  • patch
  • minor
  • major

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Remove unneeded dependency on pubsub-js (#547)

Remove dead dependencies

Change Type (required)

Indicate the type of change your pull request is:

  • patch
  • minor
  • major

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Minor Docs Fixes (#538)

  • Fix search on next subdomain searching against and redirecting to latest
  • Update page description on the landing page

Change Type (required)

Indicate the type of change your pull request is:

  • patch
  • minor
  • major

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

More Doc Fixes (#532)

  • Fix links for latest and next pages
  • Add package manager tabs for js install instructions
  • Fix version selector breaking on main page

Change Type (required)

Indicate the type of change your pull request is:

  • patch
  • minor
  • major

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Fix docs build visibility (#531)

Fix visibility of docs build

ios: enhance tapable logger to handle variadic args from the JS log (#524)

Prefixing message with the format [Player] [\(logLevel)]: moved out of the Tapable logger and moved to PrintLoggerPlugin. Any consumers using their own LoggerPlugin will need to append the logLevel if they want to print it

Before

public class CustomLoggingPlugin: NativePlugin {
    
    public let pluginName = "CustomLoggingPlugin"

    public func apply<P>(player: P) where P: HeadlessPlayer {
        guard let player = player as? SwiftUIPlayer else { return }
        player.logger.logLevel = .trace
        player.logger.hooks.trace.tap(name: pluginName, { print("Custom message")\(($0))" ) })
        ...
    }

After

public class CustomLoggingPlugin: NativePlugin {
    
    public let pluginName = "CustomLoggingPlugin"

    public func apply<P>(player: P) where P: HeadlessPlayer {
        guard let player = player as? SwiftUIPlayer else { return }
        player.logger.logLevel = .trace
        let prefixedMessage = "[Player] [trace]: "
        player.logger.hooks.trace.tap(name: pluginName, { print("\(prefixedMessage) Custom message \(($0))" ) })
        ...
    }

Breaking Changes

Any usage of the player.logger.hooks taps will have breaking changes in the callback because the calls have been changed to provide a [Any] type instead of String so it can be returned in the form of messages instead of a single message. Unless nothing is done in the callback to access the value but just to print it, there should be breaking changes

Example:

// this should be no breaking change
player.logger.hooks.trace.tap(name: "log", { print("\(($0))" ) })

// if `values` should be accessed in anyway, i.e want the first value, or want to seperate the values
 player.logger.hooks.debug.tap(name: "log") { values in
            // values is of type [Any], if you want to print only the first value
            print("\((message as? [String])?.first))" )
        }

πŸš€ Enhancement

  • ios: enhance tapable logger to handle variadic args from the JS log #524 (@nancywu1)

πŸ› Bug Fix

Read more

0.9.1

27 Sep 00:29
Compare
Choose a tag to compare

πŸ› Bug Fix

Authors: 6

0.9.0

04 Sep 16:46
Compare
Choose a tag to compare

Release Notes

Update Rules Versions (#496)

Update JS Rules to latest Aspect major

Android/JVM - expose constantController (#489)

Expose the core Player constantsController to Android/JVM consumers

AndroidPlayer provides top-level api and plugins access including constantsController with AssetContext

Sample usage:
assetContext.player.constantsController.getConstants(key, namespace)

Storybook Addon Fixes (#449)

  • Re-adds the ability to render Asset properties as a tab in storybook
  • Re-adds the flow-refresh addon
  • Fixes the dependencies & package layout for the storybook addon
  • Fix dark-mode support

[Hermes] Android integration (#410)

Initial integration with the Hermes JavaScript runtime. This shows a tremendous size improvement over the existing J2V8 integration of ~70% (7.6 MB -> 2.3 MB, architecture dependent).

Opt-in

For now, the default runtime integration provided by the Android Player will still be com.intuit.playerui:j2v8-android, but Hermes can be opted in manually by excluding the J2V8 transitive dependency and including the Hermes artifact:

dependencies {
    // Android Player dependency
    implementation("com.intuit.playerui", "android", PLAYER_VERSION) {
        // J2V8 included for release versions
        exclude(group = "com.intuit.playerui", module = "j2v8-android")
        // Debuggable J2V8 included for canary versions
        exclude(group = "com.intuit.playerui", module = "j2v8-android-debug")
    }
    // Override with Hermes runtime
    implementation("com.intuit.playerui", "hermes-android", PLAYER_VERSION)
}

// Exclude J2V8 transitive dependency for all configurations in this module
configurations { 
    all {
        exclude(group = "com.intuit.playerui", module = "j2v8-android")
        // Debuggable J2V8 included for canary versions
        exclude(group = "com.intuit.playerui", module = "j2v8-android-debug")
    }
}

Tip

If your application includes dependencies that may transitively depend on com.intuit.playerui:android, you would likely need to ensure the default runtime is transitively excluded from those as well, either manually or as a global strategy.

The AndroidPlayer will pick the first runtime it finds on the classpath - you can at least verify which runtime was used for the Player with a new log: Player created using $runtime. But that won't tell you for certain if the other runtimes were successfully excluded. You'll need to examine your APK, or your apps dependency tree, to tell for sure that redundant runtimes aren't unintentionally included.

Most of the setup for this integration is done simply by including the right dependency (and excluding the wrong one), however, the hermes-android integration also relies on the SoLoader for loading the native libraries. All that's needed is to initialize the SoLoader (should be on your classpath with the hermes-android dependency) with an Android Context somewhere before you use the AndroidPlayer, potentially in your activities onCreate:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    SoLoader.init(this, false)
    // ...
}

πŸš€ Enhancement

πŸ› Bug Fix

🏠 Internal

Authors: 8

0.8.0

04 Aug 20:27
Compare
Choose a tag to compare

Release Notes

Docs and Release Fixes (#474)

  • Fix next releases being tagged as latest on npm
  • Fix doc site issues with github pages
  • Fix missing dsl plugins page

Update to use TypeScript 5.5 and enable isolatedDeclarations (#431)

Update to use TypeScript 5.5 and enable isolatedDeclarations

bump js rules, use node 20 (#430)

Use Node 20 for builds

JS Package Cleanup (#442)

Fix migration issues in JS packages

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Bazel 6 Migration (#252)

Swaps the repo internals to use bazel@6, rules_js, bazel modules, vitest and tsup for the core + plugin builds


πŸš€ Enhancement

πŸ› Bug Fix

🏠 Internal

πŸ“ Documentation

πŸ”© Dependency Updates

Authors: 12

0.7.4

02 Jul 17:58
Compare
Choose a tag to compare

πŸ› Bug Fix

Authors: 9

0.7.3

02 May 20:24
Compare
Choose a tag to compare

πŸ› Bug Fix

πŸ“ Documentation

Authors: 10

0.7.2

11 Apr 00:24
Compare
Choose a tag to compare

Release Notes

Update Player Tools Version (#334)

  • Update Player Tools to latest

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Version Selector Fixes (#330)

Docs - Fix version selector not working and preserve route when changing versions

[Docs] Update the DSL Benefits in Schema Section (#326)

Docs - Update DSL Schema benefits section

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Expose More Information About Expression Parsing Errors (#328)

Types - Expose types/utilities around expression parsing errors

Does your PR have any documentation updates?

  • Updated docs
  • No Update needed
  • Unable to update docs

Fix commaNumber Formatting when Using a Precision of 0 (#319)

Common Types Plugin - Fix commaNumber Formatting when Using a Precision of 0

Expression Parser Strictness (#315)

Expose Expression Parser's strictness option via the resolveOptions hook


πŸ› Bug Fix

πŸ“ Documentation

Authors: 11

0.7.1

06 Mar 00:12
Compare
Choose a tag to compare

Release Notes

[Android] AsyncHydrationTrackerPlugin (#296)

Introduction of AsyncHydrationTrackerPlugin to provide a mechanism for reacting when SuspendableAsset hydration is completely finished.

androidPlayer.asyncHydrationTrackerPlugin!!.hooks.onHydrationComplete.tap(this::class.java.name) {
    // process effects after hydration is complete
}

[Sync] Performance and Bugfix (#306)

  • Skip view updates for silent data changes
  • Replace reduce calls for performance reasons
  • Fix data change events not cascading properly when setting data

πŸ› Bug Fix

πŸ“ Documentation

Authors: 8