To be released
- [Android] Upgrade build tooling: Gradle 4.1 and Android gradle plugin 3.0.1
- [Android] Inhibit
AstroWebViewClientto work with Chrome 63
- Fix secure store issues on Android. Crash on retrieval for Android 8.
- [iOS] Update to XCode 9, iOS11 SDK, Swift 4
v1.0.0-rc2 (Jun 16, 2017)
astro-detect.jsas an ES2015 (ES6) module
v1.0.0-rc1 (April 25, 2017)
- Update docs
v1.0.0-beta4 (April 17, 2017)
- Update navigation in both iOS and Android to palliate effects of reloading the webview in PWAs
- Add in url to EngagementController initialization
v1.0.0-beta3 (March 31, 2017)
- EngagementController now requires a base url
- EngagementController uses SettingsStore for setting and retrieving sandy-client-id
- [Android] Add cookiesStore which uses singleton
android.webkit.CookieManagerto set cookies used by an application's
- Update iOS and Android Push npm versions
- Add support for Push opt-out feature
- Astro app detection methods are now defined in
getTopPluginan RPC method, store plugin address stack natively
- Support pop-to-root in PWA for Android
- Upgrade to Xcode 8.3
v1.0.0-beta2 (March 17, 2017)
- Fix issue where Alert plugin on Android would not show details
- Fix issue where back navigation of PWA would not maintain offset
- Palliate effects of refresh on back navigation
- astro-client files now include a header (version, build date, commit SHA1, etc)
- Added Section 2.5 and 2.6 of Astro guides (Controllers and Modal Views)
- Instead of errors, return null when the keystore is unavailable
- Add note about Content-Security-Policy in "Making your website 'app aware'"
- Transitioned to Node.js v6. Node.js v4 and earlier are no longer supported!
- Upgrade to Webpack 2.2 ("Webpack 2")
- Fix bug where AnchoredLayoutPlugin doesn't update content insets on a second call to setContentView()
- Remove support for iOS 8
- Remove deprecated methods in NavigationPlugin:
- Java API surface reduced [Breaking]
- AstroWorker moved from
- [Android] SecureStorePlugin throws exception if underlying Android Keystore is unusable
- SettingsStore adds single instance plugin for storing and retrieving un-secure data
- Renamed npm package from
- [iOS] Moved to build/test on BuddyBuild
- [Android] Upgrade to gradle 2.14 and upgrade to Android Studio 2.2
- Delete mobify-path cookie if blank on navigation start and timeout
- [Android] Always insert
mainViewPluginat index 0 of the
- Re-organized documentation into Guides, API Reference, and Advanced sections
- Update Swift snippets in documentation to be Swift 3
- [iOS] Make WebClientTests deterministic
- Add Conventions article to docs
- Add Website App Aware and Performant article to docs
- Add Astro/Web Communication article to docs
- Move 'Deep Links' article from Extra to Building an Astro App article
- Add documentation linting
npm run docs:lint
- Rename all docs npm scripts to
- [Android] Internal refactoring to remove singletons and therefore make it possible to safely restart the AstroActivity.
- [Android] AstroPlugins now have two more dependencies, an EventRegistrar and a MessageSender. All AstroPlugins (including custom plugins) must now add these to their constructor and pass them in their calls to the super class.
- Enabled less sensitive Android shake detection
- Add support for preview enabled build configurations
- AstroNative.Configuration.ASTRO_PREVIEW flag available in app.js
- Prevent Astro client from creating multiple instances
- [iOS] Fix bug: Tab Bar Text could not be set using appearance proxy in AppDelegate
- [Android] Enable loaders by default on webviews
- Fluid launch image supported (no white flash)
LoaderViewPluginreceives the URL its
- [iOS] Remove code signing from the astro project
[iOS] Removed need to spin RunLoop in AppDelegate. Apps should remove this code from AppDelegate's
- // This is as sketchy as it appears. We want to let the main thread run loop - // run so that the AstroViewController can spin up and get app.js executing. - // This allows any splash screen presented to be displayed before the Launch Image - // is dismissed (at the end of didFinishLaunchingWithOptions). - NSRunLoop.mainRunLoop().runUntilDate(NSDate().dateByAddingTimeInterval(1.0))
- Review Experience Dialog supports a text field
- [Android] Review Experience Dialog positive button is on right side of dialog
- [Android] Tab Bar text style is overridable
- [Android] Tab Bar text allowed to stretch full width of tab
Application.backButtonPressedevent called on each press of the back button, independent of size of navigation stack. This event must be handled manually to close modals.
- [iOS] Resolve
NavigationPluginback method after animation completion
WebViewPluginwhen popping it if its
disposeWhenPoppedflag is set to true
- Add Preview Controller to allow preview to be enabled without the need to rebuild.
enable/disableLoadermethods to the
- [Android] Protect against NullPointerExceptions in fragment code
- [Android] When the app is in the background, Astro events will be queued, and once back in the foreground, the queue will be executed and emptied. This fixes a number of issues where certain actions (Modal show/hide for example) were not possible in the background and resulted in crashing.
- [Android] Tinting for tab bar images. Matches iOS behaviour.
- [Android] Trigger
itemSelecteven on tab reselect, to match iOS behaviour
- [Android] Add polyfill for URL() constructor, which isn't supported in Android 4.4.2 and below.
- [Android] Fix
headerBarPlugincrashing the app when user clicks on it before it is fully initialized
- Add Segmented Plugin
- [Android] Make sure the header right item has a 16 margin from the edge of the screen, when the item is text
- Call out NVM in the documented requirements
- [Android] Fix
TabBarPluginlive RTL swapping
- Add Search Bar Plugin
- [iOS] SecureStoragePlugin now honours async methods even when an error occurs
- Remove unused
callbackparameter in all js plugin
- Upgrade to support Xcode 8 & Swift 2.3
- [Android] Check for and auto-register custom plugins
- [Docs] Add
/latest, a path to the latest released version of the docs, as well as a version switcher
toStringfunction to monkey-patched
URLobject (which is not supported in Android 4.4.2 and below)
- Switch documentation to use harp v0.21.0 from npm
- AstroWebViewController and HeaderBarPlugin now correctly forward KVO messages
- Remove Splash Screen Plugin
- [Android] Fix
- [iOS] Fix bug with WebViewPlugin.appendUrlComponent crashing on append of url fragment when url already contains a '#'
- [Android] Fix
pageTimeoutevents being raised after the WebViewPlugin has been deallocated.
- [iOS] Fixed HeaderBarPlugin getting out of sync with NavigationPlugin when using the interactive pop gesture
- [iOS] Fix retain cycle in WebViewPlugin when
- [iOS] WebViewPlugin no longer raises an error when a navigation is cancelled
- [Android] Fix for ListSelectPlugin setCancelable support - setting to true will display the cancel button
- Fix the benchmark plugin in Sandbox
- [iOS] Add alertStyle option to
- [Android] Performance improvements for plugin creation and messaging
- [iOS] Fix top inset calculation in AnchoredLayoutPlugin when there are no top bars
- [Android] Bug fix for hiding/showing header bar icons. Icon visibility state is persisted in header bar
- [iOS] Fix inset calculation in AnchoredLayoutPlugin when keyboard is shown
- Updated to latest
grunt-eslint(v19.0.0) which gets us better lint output formatting
- Fixed a bug in the astro-client.js where some third-party libraries could break the bridge (Modernizr!)
- [Android] Fixed push notification deep link urls getting replace when second push sent
- [Android] PushPlugin sends
messageClickedevent when app is started from a push notification
- [Android] Updated Application.getStartUri() when push notification is clicked
- [Android] Modal and dialog management has removed the DialogActivity. There can be only one (Activity)!
- Add alert view static alert method
- Send push events to Engagement Engine. Added an EngagementController.
- Add events to PushPlugin for Android
- Add iOS pushclient project (as a npm dependency)
- [iOS] Fixed hiding stacked modals when lower modal is dismissed
- [iOS] Implemented
allowExplicitNavigationon iOS (webViewPlugin)
- [Android] Custom uri scheme deep link handling parity with iOS (remove
- Added deep link handling system to support test push registration
- Universal deep linking demonstration in Sandbox
- [iOS] Implemented
getSubscriptionStatuson iOS (PushPlugin)
- ReviewPlugin updates:
- Allow empty positive/negaitve feedback list for ReviewPlugin
- Remove setToken method, token should now be supplied on init only
- loadPoints, saveResponse, getResponse, deleteResponse, sendFeedback prefixed with '_' as they are intented as private helpers
customerIdnow defaults to '' instead of '12'
- [Android] Implement the TabBar Plugin
- Astro localization support
- TabBar Plugin inactive tab text color
- [Android] Fix secure store plugin crashing app when in another locale that is not English
- [Android] Fix
navigationCompletedevent not firing for
- [iOS] Fix file url discarding query parameters
- [Docs] Simplify the process to write docs for a new version
- Improve exception handling for CryptoManager
- DialogActivity backstack is popped synchronously
- Add PushPlugin and pushclient Android module (as a npm dependency)
- [Android] Added null check in WebViewPlugin.destroy()
- Add method on Application to open location settings in the Settings app
- [Android] Updated vendored Cordova to v5.1.1
- Add HeaderBarPlugin APIs to turn bottom border on and off
- Add review and request plugins
- Hotfix release pulling in fixes from v0.10.4
- [iOS] Adjust tap target for headerbar buttons to be at least 44x44
- [iOS] Updated vendored Cordova to v4.1.1
- Increase timeout on preview plugin so that we wait for slow customer sites for 120 seconds
- [iOS] Changed app lifecycle events to use NSNotificationCenter
- Added alert view plugin
- [Android] Disable JS message bus debug logs in release mode
- Create function to monkey patch
navigator.geolocation.getCurrentPositionAPI into app.js from a webview
- [Android] Add dialog management
- Add list select plugin
- Added prompt view plugin
- [Android] webViews should handle HTTP and SSL errors (networkFailed event is triggered)
- [Android] Fix a bug where app could crash in onDestroy of AstroActivity
- [iOS] Fix a bug where navigating to the same URL twice causes the loader to be displayed permanently
- [iOS] Fixed hash link (fragment) handling so that Astro doesn't raise the
navigateevent when only the fragment changes
- [Android] Update SecureStorePlugin to use AES/CBC with HMAC symmetric encryption when AES/GCM symmetric encryption is not available
- [Android] Refactored CryptoManger to use a class based architecture
- [Android] Update projects to Android Studio 2.0
- [Android] HeaderBarPlugin's
setCenterIconplaces an image in the center of the headerbar
- [iOS] Added useWKWebView optional parameter to WebViewPlugin to force using UIWebView when necessary to bypass WKWebView limitations
- Register RPC method to update cart counter
- [iOS] Expose AutoLayout extensions API. Breaking change in existing projects due to naming conflicts
- [iOS] added tests to ensure WKWebView and general WebView leaks are fixed
- [iOS] added support for
navigateToPlugin(previously would always animate, now you can specify)
- [Android] Update SecureStorePlugin according to the security review document
setMainViewPlugincan now be called more than once (swapping main view)
- Upgraded project to Xcode 7.3 and Swift 2.2
- [iOS] remove hack the WKWebView local file loading hack that was only needed on iOS 8
- Added an FAQ page to the docs
- [iOS] Default to use WKWebView on iOS 9+. Disallow WKWebView on iOS 8 (AstroConfig.useWKWebView)
- Added generatePlugin method to CounterBadgeController
- [Android] Exceptions raised in plugins now crash the app (they are not caught). Use AstroException to communicate errors back to app.js from your plugin.
- [Android] Add method to allow developer to close app
- [Android] Deprecate onKeyDown event and only allow app.js to handle backButtonPressed event
- [Android] Support plugin options on init
- Upgrade JS unit testing infrastructre: phantomjs v2.1.3, chai v3.5.0, mocha v2.4.5, mocha-phantomjs-core v1.3.0
- Hide software keyboard when navigating to a plugin or opening/closing drawer
- Page load timer now doesn't wait for a showPage call when we do manuallyShowPageForHosts but instead invalidates on pageFinished events
- When the navigation plugin trampolines events from plugins previously pushed onto it, it now includes a reference to the pushed plugin that triggered the event in the event params
- Updated Navigation Plugin's navigateToUrl method to allow for specifying a navigation handler within the
- Fix for WKWebView instance leak
- Switch Astro documentation to use harp directly instead of grunt-harp
- Publish Astro repo on npm. Astro apps now refer to the astro project
as an npm module
- Guide to updating Astro apps from using git submodules to now use npm modules: https://docs.google.com/document/d/1VdZEBORPxr0jHTMgunQ0Ue32idZVveDpWm3Zw3q-UNQ
- Use the AppCompat NoActionBar theme for Android app instead of creating custom themes for each api level
console.logfor iOS - forwarded JS messages to Xcode console
- Merged documentation from
- Implement Application.setBackgroundColor for Android
- Implement CounterBadgePlugin for Android
- Fix problem with freezing alerts in the app.js in the Catalogue
- Make getCookie return empty string for empty cookies
- WebViewPlugin returns null instead of an Error for non-existant cookies
- Mobify Preview Plugin now passes the previewed URL when
- Update docs so that links in the docs/public/dev directory work correctly
- Fix bug using SecureStorePlugin with WKWebView
- Add ApplePayPlugin (iOS)
- Add sharing plugin to ios and android. Allows sharing of a message and url to other apps on device
- Fixed a bug where WKWebViews would stop responding while not visible
- Fix crash when WKWebView is in allow untrusted SSL certificates mode, when the server has misconfigured SSL
Promise.longStackTraces()to Astro in DEBUG builds
- Fix bug where page timeout doesn't trigger for manually shown pages.
- Fix Android cookie parsing, also fixing the preview plugin
- Add new feature to HeaderBarPlugin: setLeftTitle and setRightTitle
- Fix toggling between setCenterIcon and setCenterTitle will stuck on setCenterTitle
- Fix setTextColor to also apply to the left and right header area
- De-couple NavigationPlugin and WebViewPlugin
- Add appActivated and appDeactivated events triggering to app.js
- Fix a situation where if we reject promise on the app.js side, the message bridge will throw
MalformedRpcMessageExceptionwhen it shouldn't
- Secure Store Plugin
- Support for API 23
- Separate Secure Store Plugin from cryptography
- Use symmetric key for data encryption/decryption to allow for large data storage
- Fix a situation where if we reject promise on the app.js side, the message bridge will throw
- Update AnchoredLayoutPlugin to have animation options for all methods except setContentView and clearContentView
- Add getAppInformation method to Application class
- Add MobifyPreviewPlugin
disableScrollingnow disables auto-scrolling as well
- Add enableScrolling and disableScrolling to the NavigationPlugin and WebViewPlugins
- Enable mixed content for Android Debug builds
- Stub additional Android methods
- Support Secure Store Plugin
- Add canGoBack RPC method to Android WebViewPlugin
- Add popToRoot and canGoBack RPC methods to Android NavigationPlugin
- Add show/hide view methods to Android AnchoredLayoutPlugin
- Add support for setting plugins into Android HeaderBarPlugin
- Add coordination between NavigationPlugin and HeaderBarPlugin
- Add counter badge plugin and controller
- Use new method in ios 9 (if available) WKWebView.loadFileURL to load local files
- Add support for JS RPC on iOS.
- Upgrade to Swift 2.0/Xcode 7
- Fix issues triggering to webviews using WKWebView
- WebClient and WebBridge tests running against both UIWebview and WKWebView
- Add documentation for WKWebView
- Fix scrolling momentum for WKWebView
- Log output now prepended with log level
- Added tests for rehydration logic (and more) for WKWebView
- Added fix for WKWebView ignoring contentInset on its
.scrollViewon initial load
- Fix build for "Release" build configuration
- Make MethodShimUtils.getOptionalArg public
disableBackGesturemethods to NavigationPlugin.
- Rename keychain plugin to secure store plugin and add Android stub.
- Add flag to set keyboardDisplayRequiresUserAction for UIWebView
- Add keychain plugin. (iOS)
- Fix issue where headerbar wouldn't pop to root if navigation plugin is popping to root without animation
- The user agent for WebViewPlugin and NavigationPlugins now includes the app version (eg. "Astro App/1.0")
- Fix bug where navigationPlugin can't navigate after going offline (ios)
- Add methods to headerBarPlugin: hide/show left/right icons (ios)
- Fix headerBarBug when calling popToRoot while at the root
- Disable stacking for a POST request (ios)
setTranslucentmethods to HeaderBarPlugin and TabBarPlugin
- Add support for passing options to plugins during initialization.
- Add an
anchorToLayoutGuidesoption to AnchoredLayoutPlugin's initializer.
- Add support for setting animation duration to AnchoredLayoutPlugin's
hideTopViewsmethods to AnchoredLayoutPlugin.
disableScrollBouncemethods to WebViewPlugin and NavigationPlugin.
- Add syntax highlighting to docs (prism.js)
- ModalViewPlugin uses a queue on the class instead of a queue per instance
- Add canGoBack method to WebViewPlugin and NavigationPlugin
- Add deselectedIconColor static property to TabBarPlugin to style deselected tab bar item icons
- Fix bug where HeaderBarPlugin linked to a NavigationPlugin can get out of sync (setCenterTitle)
hideBottomViewsmethods to AnchoredLayoutPlugin.
hideAllmethods to AnchoredLayoutPlugin.
- WKWebView support in iOS
selectItemmethod to TabBarPlugin.
- Add JS linting to build tasks
- Fixed bug with viewing text in the status bar.
- Fix bug where ModalViewController status bar text color does not match Application (ios)
- Queue ModalViewPlugin show() and hide() invocations.
- Add ability to hide/show back button 'Back' text on HeaderBarPlugin (ios only)
- Add 'stack' option to NavigationPlugin
- Send the url in the params for the pageTimeout event on WebViewPlugin
- Implement a HandlesUserInteraction protocol so that view plugins can handle their own user interaction in header bar
- Trigger events to app.js for Forms submitted via get (ios)
- Events no longer triggered to app.js for http redirects (ios)
- Add support for triggering non-dictionaries in Astro.trigger().
- Add NavigationPlugin to Android
- Add Astro.logErrors to aid with debugging by printing errors to date.
- Tighten security around cross plugin messaging
- Removed plugin input system in favour of an input event trigger on the Application
- Add the ability to toggle allow any certificate for host in debug mode only
- Add AnchoredLayoutPlugin, ImageViewPlugin, ModalViewPlugin, SplashScreenPlugin
- Webview stacking
- Webview returns current page url as one of parameters
- Application.setStatusBarLightText and Application.setStatusBarDarkText
- handle no internet connection
- implement deep linking APIs
- implemented loading remote images (http/https) for ImageViewPlugin
- Add ability to configure icons on HeaderBarPlugin with view plugins
- Using navigationItem.title instead of UILabel for header title
- Enabled native Back button in headerbar to trigger back event on main view
- prevent appearance proxy styles from being clobbered in HeaderBarPlugin
- Add the ability to toggle allow any certificate for host
- Fixed bug where NavigationPlugin doesn't unregister a popped webview during back navigation
- Fixed bug where loader plugin would not show up on webView reload
- Adds Astro.enableVerboseMode to get verbose logging
- Add NavigationPlugin.getLoader and WebViewPlugin.getLoader to get the loader instance
- Add DefaultLoaderPlugin.setBackgroundColor
- Allow astro-client.js to be brought in as a dependancy within a project using require.js
- Ensure that Astro bridge exists and hasn't been removed from the document every time it's used
- Fixes for headerBar plugin to preserve plugin items on content update
- Fixes bug with titles disappearing on initial header icons set before doing a navigate
- AnchoredLayoutPlugin can now show/hide individual top and bottom bars (with and without animation)
- Updated to use the new Velo tutorial
- Adds changes for building astro-client.js
- Rename "app.js" to "worker.js" (the plugin, not the place where users build their app)
- Fixes for circle
- Renames worker.js to app.js.
- Uses the material theme if the app is running on Android 5.
- Adds support for custom loader spinners.
- Adds an alternative loader spinner, FourDotsLoaderSpinner.
- Adds support for loading from android.resource:// URIs.
- Adds AnimationPlugin for sliding views in and out.
- Adds a plugin for displaying images, ImageViewPlugin.
- Adds the ability to hide and show header bar icons.
- Adds the ability to lock drawers.
- Adds an event that is triggered when a web view navigates back.
- Initial release of Astro!