Titanium SDK 9.1.0.GA
About this release
Titanium SDK 9.1.0 is a minor release of the SDK, addressing high-priority issues from previous releases, as well as the addition of new features/functionality/APIs.
As of this release, Titanium SDK 9.0.x will not receive updates more than six months after the release of 9.1.0 (2021-02-03). Any needed fixes will be in 9.1.x or later supported releases within the 9.x branch. See Axway Appcelerator Deprecation Policy and Nominal Lifetimes documents for details.
⚠️ With the release of Titanium SDK 9.0.0, we no longer support Node.js 8.X. Node 10.13.0 is the new minimum supported version.
Overview
Titanium SDK 9.1.0's Notable new features include: Webpack project support, Intl JS APIs on both major platforms, Cross-platform Dark/Light mode theming, Named/Semantic Colors, new focused/closed query methods on some UI components, cross-platform parity for Ti.UI.Shortcut, and Ti.UI.View.borderRadius extended to support 2 or 4 values (in addition to single value existing support) to allow for custom border radii (rounded corners).
Community Credits
Michael Gangolf
- TIMOB-27879 - add getScaledTouchSlop() to ListView (901f991)
- TIMOB-27977 - add "isTrusted" property to Slider "change" event (8e96445)
- TIMOB-25633 - adding androidback property to showCamera (b890f7c)
- TIMOB-27855 - animate color (4fa4e19) and elevation (38a82ed)
- fix OptionDialog example (c0b13a1 and 6b99cf9)
- TIMOB-27834 - navigationWindow open/close event (ec1976a)
Andrea Vitale
- TIMOB-27958 - add fallback for countryCode in reverseGeocoder method (9823b0d)
Hans Knöchel
- TIMOB-27895 - support using named colors for color properties directly (5135b59)
- TIMOB-27757 - fix watchOS targets that include frameworks (bd59e19)
- TIMOB-27745 - add "google-services.json" support (d04d9e9)
- TIMOB-27773 - add search bar token API (0680dcd)
Sergey Volkov
- TIMOB-27519 - semantic colors with alpha value (3c9aa10)
- fix keyboardToolbar property type (7fbf2c7)
- fix Ti.UI.iOS.MenuPopup.items type (e886d64)
Skoften
- TIMOB-27697 - Add "progress" event to Ti.UI.WebView for Android (parity) (2caa8e7)
Bug Fixes
Android platform
- TIMOB-27513 - TabGroup bottom navigation style fires redundant event
- TIMOB-27519 - Semantic Colors with alpha value
- TIMOB-27616 - TextField with decimal keyboard type does not allow comma for decimal separator
- TIMOB-27731 - Camera fails to open when using saveToPhotoGallery: true (56986c3)
- TIMOB-27779 - Setting "labels" via TabbedBar "click" event hangs app (749ff1d)
- TIMOB-27797 - Unable to see "error" event in remote images (68d11f7)
- TIMOB-27825 - High CPU usage in Android Studio (11dff9d)
- TIMOB-27834 - NavigationWindow doesnt trigger open and close events
- TIMOB-27872 - Blob imageAsX() methods ignore EXIF orientation if not wrapping a file (7ce3ae1)
- TIMOB-27882 - Unable to do a production build after switching SDK on Windows
- TIMOB-27916 - App logs Titanium version as
__VERSION__on startup as of 9.1.0 (08227a9) - TIMOB-27927 - Changing currently selected row's color in picker does not update shown color
- TIMOB-27950 - "tiapp.xml" setting
<navbar-hidden>is ignored if<fullscreen>or<statusbar-hidden>is also not set as of 9.0.0 (54e42b1) - TIMOB-27963 - Always specify default Tab.tintColor (9a6d417)
- TIMOB-27972 - ACS push notifications received multiple times on same device after re-installing app
- TIMOB-27990 - Ti.UI.ShortcutItem has lot of issues
- TIMOB-28020 - Parity with iOS Shortcut click event payload (dc102e3)
- changing picker row color should update selected text (7aa5290)
- clean/rebuild should release gradle file locks (be923f1)
iOS platform
- TIMOB-18256 - setting TextField.value to wrong type triggers change event (e06f9b5)
- TIMOB-27649 - deprecate statusbar constant (3c83fd8)
- TIMOB-27757 - watchOS: Frameworks are referenced incorrectly
- TIMOB-27767 - Parity: httpClient should trigger error callback when url is invalid (7630868)
- TIMOB-27821 - ti.urlsession - Event sessioncompleted does not get all specified values (ebae7bd)
- TIMOB-27832 - Liveview disconnect triggers infinate error loop
- TIMOB-27846 - Calling Ti.Platform.openURL without all parameters causes the app to crash (regression) (b5bb437)
- TIMOB-27874 - parseDecimal() whitespace thousands sep handling (ed7bbe6)
- TIMOB-27897 - master branch is not building on Xcode < 11
- TIMOB-27930 - iPad crashing intermittently during unit test suite (c2e5fb5)
- TIMOB-27935 - TableViewRow does not return getRect methods
- TIMOB-27958 - Ti.Geolocation.reverseGeocoder() crashes the app on iOS
- TIMOB-27969 - View in a tab window goes under tabs in a tabgroup on Ipad (e9330a9)
- TIMOB-27994 - itemclick event its firing instead of a move event when ordering items in a list (iOS 13+) (40cc28d)
- TIMOB-27997 - Ti.Blob images from device (via Ti.UI.View#toImage()) would report dimensions in points, not pixels (51b6237)
- TIMOB-28001 - setting TableView row layout to "horizontal" or "vertical" crashes (fd53a51)
- TIMOB-28031 - CLI: Unable to find an iOS Simulator running iOS 14.0.
- allow custom property getters to work in bindings (a53f8c6)
- call callback with success no byte event on writeFromBuffer with no length (8a639d8)
- define dark/light theme constants/properties for ios < 13 (a16e698)
- don't ignore close call immediately after open on Window (07502db)
- handle Ti.Stream.write with length 0 or empty buffer as success no-op (b58349d)
- have Ti.Color hex be AARRGGBB format (not RRGGBBAA) (9c3321b)
- make Ti.UI.Window close/open run more async ala Android (6a6fda4)
- properly report partial results on thrown error for Ti.DB.executeAll (f1372ba)
- remainingComplicationUserInfoTransfers is number on ipad (0fcd6d2)
- TableViewRow does not return getRect methods (b15d184)
Multiple platforms
- TIMOB-27785 - buffer: Proxy object's 'set' trap returned falsy value for property '0' (a45a8d0)
- TIMOB-27808 - add missing console.trace (83a64a1)
- TIMOB-27525 - Liveview: Commented out line with Ti.include in it causes LiveView failure
- TIMOB-27416 - LiveView: Changes made to a theme's style are not reflected in app when using LiveView
- TIMOB-26267 - LiveView: Calling "liveview server stop" causes exception, but stops connections
- TIMOB-26649 - LiveView: Unable to use LiveView with KitchenSink-v2
- TIMOB-26798 - Angular: Project template is outdated
- do not remove log file when cleaning (a699bf5)
- add .buffer and #set to Buffer (264b175)
- add no-op stubs for fs.chown methods (1dd99ef)
- assume hex is ARGB (daf8056)
- copy sliced buffer doesn't extend beyond view now (035c579)
- expose Buffer.hexSlice to fix console.log of ArrayBuffer (d7f863b)
- expose constructor off global console instance (2568c6f)
- correct type sniffing of some ES6 types (bac4bb3)
Features
Android platform
- TIMOB-25633 - Add "androidback" callback property to camera overlay (b890f7c)
- TIMOB-26315 - Support touch feedback on backgroundImage, backgroundGradient, and transparent backgrounds (2a0b1be)
- TIMOB-27240 - Add Intl.NumberFormat support (269de3f)
- TIMOB-27242 - Improve getter and setter warnings (3507dd0)
- TIMOB-27473 - Replace clang Java formatter with gradle "checkstyle" tool (3cbc754)
- TIMOB-27501 - Be able to determine dark / light theme, as well as changes on it
- add Ti.UI.Android.getColorResource(), Ti.UI.Color (d852331)
- TIMOB-27697 - Add "progress" event to Ti.UI.WebView for Android (parity) (82a3579)
- TIMOB-27719 - Remove python dependency from SDK build
- TIMOB-27855 - Animate elevation value
- TIMOB-27862 - Add callback support to Ti.Platform.openURL() (43d287e)
- TIMOB-27869 - KEYBOARD_TYPE_ASCII should not allow emoji like iOS
- TIMOB-27870 - KEYBOARD_TYPE_NUMBERS_PUNCTUATION should allow all chars except emoji like iOS
- TIMOB-27871 - Setting TextField/TextArea "editable" to false should allow user to copy text to clipboard
- TIMOB-27879 - ListView should only fire "scrolling" event when moving a min distance
- TIMOB-27889 - Implement Ti.UI.Shortcut (5432efc)
- TIMOB-27890 - Add Intl.DateTimeFormat support (269de3f)
- TIMOB-27891 - Add Intl.Collator support (269de3f)
- TIMOB-27892 - Update toLocale*String() methods to support locale/options (683adaf)
- TIMOB-27906 - Add Kotlin based template for native modules (23c3aea)
- TIMOB-27938 - Update gradle build tools to 4.0.x
- TIMOB-27946 - Implement Ti.View.borderRadius multiple values for custom edge radii (545f8d5)
- add NDK side-by-side support (71f25e8)
- MOD-2588 - add passcode fallback to ti.identity (1f84b35)
- added "codeStyleConfig.xml" to SDK (a9f6895)
- MOD-2634 TIMOB-27972 - migrate CloudPush to Firebase (d61e66e)
- module builds should fail with aar in lib folder (0c72020)
iOS platform
- TIMOB-27773 - Support search bar tokens
- TIMOB-26959 - Add TLS 1.3 support
- TIMOB-27853 - Add ability to detect that screenshot was taken on iOS (b9df339)
- TIMOB-26818 - Move application shortcut under Ti.UI.Shortcut to have parity (8446d39)
- TIMOB-27305 - Implement Ti.View.borderRadius multiple values for custom edge radii (34b3a93)
- TIMOB-27649 - Deprecate Status Bar style constants
- TIMOB-27767 - Parity: httpClient should trigger error callback when url is invalid
- TIMOB-27792 - Remove python dependency from SDK build
- TIMOB-27974 - Make iOS development-project compatible with Xcode 12
- add list of new iPhone/iPad models for
osmodule (8839c2c)
Multiple platforms
- TIMOB-13764 - TiAPI: After animating properties on a view, update in the view properties (3fef676)
- TIMOB-25968 - Liveview: Write more information to pidfile, such as port and ip data
- TIMOB-26572 - TiAPI: Extend global console API to be more Node-compatible (e398a10)
- TIMOB-27429 - Webpack: Integration into the CLI build command
- TIMOB-27501 - cross-platform light/dark mode API (28eba34)
- TIMOB-27511 - Webpack: Alloy loader
- TIMOB-27716 - Webpack: Classic and Alloy project templates
- TIMOB-27711 - TiAPI: Add state querying methods to UI components
- TIMOB-27800 - Webpack: Angular plugin
- TIMOB-27856 - Webpack: Angular project template
- TIMOB-27857 - Webpack: Add support for plugins from NPM
- TIMOB-27860 - Webpack: Tap into hooks before/after other plugins
- TIMOB-27874 - TiAPI: Add Ti.Locale.parseDecimal() method (6253813)
- TIMOB-27895 - TiAPI: Handle semantic colors (dark mode) without helper function
- TIMOB-27907 - Liveview: Compatibility with Webpack builds
- TIMOB-27977 - TiAPI: Add "isTrusted" property to Ti.UI.Slider "change" event
- add basic stream shim (1720456)
- MOD-2621 - use ASWebAuthenticationSession when possible (5e1dfa1)
SDK Module Versions
| Module | Android version | iOS Version |
|---|---|---|
| 9.0.0 | 8.0.0 | |
| ti.cloudpush | 7.1.0 | n/a |
| ti.map | 5.0.1 | 3.3.0 |
| ti.webdialog | 2.0.0 | 1.2.0 |
| ti.playservices | 17.1.1 | n/a |
| ti.identity | 3.0.2 | 1.1.0 |
| urlSession | n/a | 2.2.0 |
| ti.coremotion | n/a | 2.1.0 |
| ti.applesignin | n/a | 1.1.1 |
| ti.cloud | 3.2.11 | 3.2.11 |
| hyperloop | 5.0.3 | 5.0.3 |