Bixby Developer Center

Guides
References

20I Capsule SDK Release Notes

Updated: August 12, 2020

Prep Your Capsule for Android Display Themes

In preparation for coming support of Android display themes, you should ensure that your capsule has specific icons and images that account for these themes. Currently, you should account for the light theme and dark theme.

Some images in your capsule, particularly icons, might not be visible or legible when set against a different background in an alternate theme. You can specify alternate images for the light theme by using the light-theme key, which is available in most View's components that let you specify an image by URL. There is also a corresponding dark-theme key that can be used if the image does not have enough contrast for the dark theme.

To maintain backwards compatibility, we're also supporting the current theme for older devices and other non-mobile device types.

Examples

url (icon-default.jpg) {
light-theme (icon-light.jpg)
}
url (icon-default.jpg) {
dark-theme (icon-dark.jpg)
}

New Black Background Image Color

A new Black background image color is now available to create additional contrast to your images in image-background-color for images in cards or background-color for standalone images.

Support for Product Code within 'vivContext'

You now can access product code within $vivContext.

New Requirement for Hints

Before submitting your capsule, if you have hints with constraints, you must also provide at least 3 working uncategorized, visible (unconstrained) hints for each store country and device to the Marketplace. If the hints do not work, your capsule will be rejected.

In summary, you need one of the following:

  • three completely unconstrained hint
  • three hints that are visible to each store/device your capsule supports
  • a combination of the above

For details, see Preparing for Release.

New Option to Opt Out of Capsule Lock

You can now opt out of capsule lock during specific result moments with the capsule-lock key in that particular result view, which overrides the result-view-capsule-lock flag in your runtime version.

Keep in mind that, if you do opt out of capsule lock, conversation drivers will appear on the result view page, but they might not behave as expected. This is true even if the device does not support capsule lock.

New EL Functions for Node Type and Casting

We've introduced two new EL node evaluation functions:

  • typeOf(node): Returns the type of the node. The return value is the fully qualified node name: in a capsule with a capsule ID of example.shoe, the Accessory model has a fully qualified name of example.shoe.Accessory.

  • cast(node, type), node.cast(type): Returns a copy of the node cast to the specified type.

For more information, learn about Node Evaluation Functions.

New Default Value for Primitive Properties

You can now define a default-value for a primitive-type property in structures. However, you cannot define a default value for a structure-type property. If defined and if a value cannot be found for that property, then the default value will be used. Structures inherit any default values defined for properties from a parent structure.

structure (Struct) {
property (int) {
type (viv.core.Integer)
min (Required)
default-value (5)
}
}

New Ability to Declare Required Permissions for Autocomplete

You now should declare which library permissions are needed with the autocomplete component, to ensure that component works correctly. Otherwise, your users get prompted multiple times. Adding library permissions in this situation ensures users are prompted for all permissions only once.

Keep in mind that, if you are declaring library permissions in an autocomplete component, you must declare it both in the capsule.bxb file and in the permissions block in auto-complete.

Examples

...
auto-complete {

source {
collect-with () { }
label ()
where-each () { }
permissions {
library-permission (self:profile)
library-permission (contact:contacts)
}
}
}