Releases: player-ui/player
0.10.2-next.1
Release Notes
Fix Duplicate Date in Title for next
Changelog Entries (#569)
fix duplicate date in title for next changelogs
π Bug Fix
- Only mutate ManagedPlayerViewModel.loadingState on main thread #566 (@ap-for-work @hborawski)
π Documentation
- Fix Duplicate Date in Title for
next
Changelog Entries #569 (@KetanReddy)
Authors: 3
- @ap-for-work
- Harris Borawski (@hborawski)
- Ketan Reddy (@KetanReddy)
0.10.1
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
- Release main #568 (@intuit-svc)
- Hermes reference tracking #563 (@sugarmanz @brocollie08)
- Use m2 Medium executor #560 (@KetanReddy)
- More Release Fixes #558 (@KetanReddy)
π Documentation
- Updated Authoring content section in docs.mdx #567 (@AkshayArora-repo)
Authors: 5
- @AkshayArora-repo
- @brocollie08
- @intuit-svc
- Jeremiah Zucker (@sugarmanz)
- Ketan Reddy (@KetanReddy)
0.10.0
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 tolatest
- 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
andnext
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
π Bug Fix
- Release main #557 (@intuit-svc)
- Fix Releases #556 (@KetanReddy)
- Miscellaneous Maintainance Fixes #555 (@KetanReddy)
- Implemented cancelBeacon and buildBeacon hooks for Android #542 (@mrigankmg @brocollie08)
- Add Changelogs from
next
releases to CHANGELOG.md file #554 (@KetanReddy) - iOS E...
0.9.1
π Bug Fix
- Release main #518 (@intuit-svc)
- hermes_jni linkopt select #517 (@brocollie08)
- Remove FBJNI local binaries #516 (@brocollie08)
- revert async node flatten #512 (@cehan-Chloe)
- Hermes support Android 15 #509 (@brocollie08)
- Fix js Package Releases #507 (@KetanReddy)
- Update Custom Asset doc page with use cases on asset registering #348 ([email protected] @nancywu1)
- iOS: move HeadlessPlayerImpl from PlayerUIInternalTestUtilities to PlayerUITestUtilitiesCore #500 (@nancywu1)
Authors: 6
- @brocollie08
- @intuit-svc
- @nancywu1
- Chloeeeeeee (@cehan-Chloe)
- Ketan Reddy (@KetanReddy)
- nancywu1 ([email protected])
0.9.0
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
- Storybook Addon Fixes #449 (@adierkens)
- [Hermes] Android integration #410 (@sugarmanz @brocollie08)
π Bug Fix
- Release main #501 (@intuit-svc)
- jvm and ios-async-node-ability-to-remove-resolved-async-node #488 (@sakuntala-motukuri @cehan-Chloe)
- Update Rules Versions #496 (@KetanReddy)
- fix:no matching toolchains:ninja_toolchain #490 (@cehan-Chloe @KetanReddy @brocollie08)
- Android/JVM - expose constantController #489 (@cehan-Chloe)
- ios expose constantsController #446 #487 (@cehan-Chloe)
- On update race condition #471 (@brocollie08)
- iOS: fix memory leak issues #486 (@sakuntala-motukuri @nancywu1)
- Remove async node dsl component #484 (@sakuntala-motukuri)
- [CI] Swap release script to use
config=ci
#482 (@sugarmanz) - Async node android #469 (@sakuntala-motukuri)
π Internal
- Add recipes for just #468 (@adierkens)
Authors: 8
- @brocollie08
- @intuit-svc
- @nancywu1
- Adam Dierkens (@adierkens)
- Chloeeeeeee (@cehan-Chloe)
- Jeremiah Zucker (@sugarmanz)
- Ketan Reddy (@KetanReddy)
- Niharika Motukuri (@sakuntala-motukuri)
0.8.0
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
- Bazel 6 Migration #252 (@adierkens @hborawski @brocollie08 @KetanReddy @sugarmanz [email protected] @nancywu1 @mercillo @mrigankmg @sakuntala-motukuri)
π Bug Fix
- Release main #476 (@intuit-svc)
- Docsite Fixes #475 (@KetanReddy @mercillo)
- Docs and Release Fixes #474 (@KetanReddy @mercillo)
- Update rules1.1.2 #473 (@mercillo)
- Update to rules player 1.1.1 #472 (@mercillo)
- bazel - added rules player back for docs site #470 (@KetanReddy @mercillo)
- Fix J2V8 Debugger #443 (@brocollie08)
- fix: replace fuse.js with leven to fix no similar matching name error #452 (@cehan-Chloe)
- Fixed switch parsing syntax issue for dynamic switches #458 (@mrigankmg)
- View Parser Plugin Decomposition #413 (@mrigankmg)
- Ability to remove a resolved async node #404 (@sakuntala-motukuri @brocollie08)
- ReactAsset improve error messages #444 (@cehan-Chloe)
- JS Package Cleanup #442 (@KetanReddy)
- Specific Temurin Version #445 (@brocollie08)
- iOS: Canary release support + SPM automated releases #434 (@hborawski)
- apply strategy from pr builds to main & release builds #440 (@sugarmanz)
- Add dsl component to async node #439 (@sakuntala-motukuri)
- Bazel clean up #435 (@brocollie08)
- [JVM] Publish next releases to release repository (fixed versions) #428 (@sugarmanz)
- This PR enables to add footer component to info reference asset in android #411 (@sakuntala-motukuri)
- Fix NPM Registry URL #427 (@KetanReddy)
π Internal
- Use smaller docker image for circle setup #456 (@adierkens)
- Log debug info for npm next release #454 (@adierkens)
- Remove alternate binding parsers from bundle #432 (@adierkens)
- Revert "[JVM] Publish next releases to release repository" #429 (@sugarmanz)
- [JVM] Publish next releases to release repository #426 (@sugarmanz)
π Documentation
- Update CONTRIBUTING.md #433 (@brocollie08)
π© Dependency Updates
- Update to use TypeScript 5.5 and enable
isolatedDeclarations
#431 (@KetanReddy) - bump js rules, use node 20 #430 (@KetanReddy @hborawski @mercillo)
Authors: 12
- @brocollie08
- @intuit-svc
- @nancywu1
- Adam Dierkens (@adierkens)
- Chloe (@cehan-Chloe)
- Harris Borawski (@hborawski)
- Jeremiah Zucker (@sugarmanz)
- Ketan Reddy (@KetanReddy)
- Marlon "Marky" Ercillo (@mercillo)
- Mrigank Mehta (@mrigankmg)
- nancywu1 ([email protected])
- Niharika Motukuri (@sakuntala-motukuri)
0.7.4
π Bug Fix
- Release main #409 (@intuit-svc)
- ios buildabling on arm mac with rosetta + Aish's Android fixes #402 (@A1shK [email protected] @nancywu1)
- Update getting-started.mdx #393 (@brocollie08)
- Fix binding tracking for validations within nested multi-nodes #382 (@tmarmer)
- Adding troubleshooting info for
Module not found: six.moves
error #381 (@A1shK) - Update CONTRIBUTING.md to include python dependency. #380 (@A1shK)
- Player 8901 - Fix typings for onAsyncNode hook #371 (@sakuntala-motukuri)
- Add Info on Commit Signing to Docs. #375 (@KetanReddy)
- [Android] Allowing timeout to be configured through PlayerRuntimeConfig #359 (@A1shK)
- Fix false positive binding with opening { #342 (@DukeManh)
Authors: 9
- @A1shK
- @brocollie08
- @intuit-svc
- @nancywu1
- @sakuntala-motukuri
- Duc Manh (@DukeManh)
- Ketan Reddy (@KetanReddy)
- nancywu1 ([email protected])
- Thomas Marmer (@tmarmer)
0.7.3
π Bug Fix
- Release main #353 (@intuit-svc)
- Trigger prerelease #352 (@sugarmanz)
- Parse multi node switch fixv1 #347 ([email protected] @mercillo)
- [Android] Reorganize
PlayerFragment
state updates #343 (@sugarmanz) - iOS: expose data controller onUpdate hook #336 ([email protected] @nancywu1)
π Documentation
- Android Build Optimization Docs #308 ([email protected] @brocollie08)
- Add bazelisk to list of requirements; be more specific in Android build instructions #344 ([email protected])
- [Docs] DSL docs additions #339 (@lexfm)
Authors: 10
- @brocollie08
- @intuit-svc
- @nancywu1
- Alex Fimbres (@lexfm)
- brocollie08 ([email protected])
- Jeremiah Zucker (@sugarmanz)
- marky ercillo ([email protected])
- Marlon "Marky" Ercillo (@mercillo)
- nancywu1 ([email protected])
- Paul Millerd (@paulmillerd)
0.7.2
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
- Release main #335 (@intuit-svc)
- Update Player Tools Version #334 (@KetanReddy)
- Version Selector Fixes #330 (@KetanReddy)
- Move managed player mock flows to shared reference asset mocks #217 ([email protected] @nancywu1)
- Android: Preserve old rendering path for non-suspendable assets #314 (@sugarmanz @brocollie08)
- Expose More Information About Expression Parsing Errors #328 (@KetanReddy)
- update iOS contributing guide #323 (@hborawski)
- update rules_player to latest 0.12.0 #322 (@hborawski @brocollie08)
- Fix
commaNumber
Formatting when Using a Precision of 0 #319 (@KetanReddy) - Expression Parser Strictness #315 (@KetanReddy)
- Common Types Plugin restoring old dataRefs #302 ([email protected] @lexfm @KetanReddy)
π Documentation
- [Docs] Update the DSL Benefits in Schema Section #326 (@KetanReddy)
- refactor nav docs slightly to better call out onEnd expressions #321 (@hborawski)
- PR Checklist update #309 ([email protected] @mercillo)
- add syntax examples for default expressions #317 (@hborawski)
Authors: 11
- @brocollie08
- @intuit-svc
- @nancywu1
- afimbres ([email protected])
- Alex Fimbres (@lexfm)
- Harris Borawski (@hborawski)
- Jeremiah Zucker (@sugarmanz)
- Ketan Reddy (@KetanReddy)
- Marlon "Marky" Ercillo (@mercillo)
- mercillo ([email protected])
- zwu01 ([email protected])
0.7.1
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
- Release main #313 (@intuit-svc)
- bump @player-tools packages to 0.5.1 #312 (@hborawski)
- iOS: prefix resource bundles to prevent naming collisions #310 (@hborawski)
- [Android]
AsyncHydrationTrackerPlugin
#296 (@sugarmanz) - [Docs] Platform consolidation #287 (@sugarmanz [email protected])
- [JVM] Handle invalid JSON as Player error #303 (@sugarmanz)
- [Sync] Performance and Bugfix #306 ([email protected])
π Documentation
- Fix documentation error on custom asset #311 (@ktamilvanan)
- [Docs] Update: DSLSchema #304 ([email protected] @lexfm)
Authors: 8
- @intuit-svc
- afimbres ([email protected])
- Alex Fimbres (@lexfm)
- Harris Borawski (@hborawski)
- Jeremiah Zucker (@sugarmanz)
- Ketan Reddy (@KetanReddy)
- KT (@ktamilvanan)
- nancywu1 ([email protected])