Timeline

See how your Angular platform is evolving.

Angular
Flex SDK
Kinvey CLI
Guides
Tutorials
Console
Business Logic
  • Added support for Angular 12 #650
  • Node.js 12 or newer is required now #650
  • The package becomes an ES6 module #650
  • Updated tslib #650
  • Clear session on InvalidCredentials error or MIC token refresh failure #638
  • Fixed behaviour when refreshing KCS tokens. a49b215
  • Do not save refresh_token returned from _me endpoint. 3201bfa
  • Fix refresh token not being regenerated when using multiple devices
  • Update package kinvey-html5-sdk to fix an issue with sporadic logouts
  • Update package kinvey-html5-sdk to fix bug when registering for Live service
  • Update dependencies to fix known vulnerabilities
  • Unset WebSQL as a default storage. #627
  • Introduce MFA functionality. #593
  • Improve the login process. #592
  • Change the default API version to 6. #602
  • Implement async SessionStore API. #598
  • Do not use the authToken in me() method. #596
  • Remove the option to set active user on signup. #616
  • Add support for login hooks
  • Add support for login hooks
  • Fixed: The pull function returns an error with Auto store when called with autoPagination: true and there are no items. #590
  • Fixed: Auto DataStore disregards skip and limit and fetches up to 10000 items per call. #581
  • Improve error message for iOS push settings in config management
  • Modify collection hooks sequentially
  • Add collection hooks: onPreInsert, onPreUpdate, onPostInsert, onPostUpdate
  • Do not update the appEnv when no settings are supplied on kinvey appenv apply
  • Fix appEnv ID check
  • Support login with external identity providers
  • Multi Insert validations. #569
  • Introducing the Multi Insert functionality.
  • Update the default KCS api version to 5. #566
  • Add lastLoginTime to Kinvey metadata. #562
  • Modify commands to accept only --org <org> (--app <app> is no longer valid):
    • flex init
    • flex create
    • flex list
    • service create
    • website create
    • app create
  • Remove flex job command
  • Update API version to 4
  • Update min node version to 12.16.1
  • Add config management feature
  • Improve profile description
  • Improve response error handling
  • Validate files size when deploying websites
  • Show an output error if an identifier (e.g. --app) matches more than one entity
  • Fixed: Added validation for User signup(). #430
  • Fixed: Added signup() as an instance function on the User class. #431
  • Fixed: Change auto protocol from https to https:. #423
  • Fixed: Verify arguments for query.ascending() and query.descending(). #424
  • Fixed: Verify arguments for query.exists(). #425
  • Fixed: Verify arguments for query.notContainedId(). #426
  • Fixed: Verify arguments for query.notEqualTo(). #427
  • Fixed: Verify arguments for query.or(), query.and(), and query.nor(). #428
  • Fixed: Added a default version to all MIC API requests. #415
  • Fixed: A TimeoutError is will be thrown when a request times out.
  • Enhancement: Added support for mulit-insert to the Network datastore type. #414
import { NgModule } from '@angular/core';
import { KinveyModule } from 'kinvey-angular-sdk';

// You will need to set the API version to 5 when you initialize the SDK
@NgModule({
  imports: [
    KinveyModule.init({
      appKey: '<appKey>',
      appSecret: '<appSecret>',
      apiVersion: 5
    })
  ]
})

export class AppModule { }
import { Component } from '@angular/core';
import { DataStoreService, DataStoreType } from 'kinvey-angular-sdk';

@Component()
export class DataStoreComponent {
  collection: any;

  constructor(datastoreService: DataStoreService) {
    this.collection = datastoreService.collection('Books', DataStoreType.Network);
  }

  // Insert an array of books using the new multi insert API
  save(docs: any) {
    return this.collection.save(docs);
  }
}
  • Fixed: init() returns some missing properties that were returned in v3.x. #411
  • Enhancement: Add Auto datastore type. This new datastore type prioritzes using the network first. If a network connection is not available then it will fall back to using the local cache until a network connection is re-established. #409
  • Deprecated: We have deprecated the Cache datastore type. You should now use the Auto datastore type to instead.
  • Deprecated: We have deprecated the use of initialize() to initialize the SDK. You should use init() instead.
  • Improvements to the website deploy command:
    • Verify presence of index and/or error page
    • Ability to force the deploy using the --force flag
  • Add node12 (Node.js v.12) to flex commands that support Node.js runtime selection

The sdk has been updated to allow you to use dependency injection to inject Kinvey services into your modules. You can find out more information by taking a look at the updated Getting Started Guide.

  • Enhancement: We have added services that can be used with the Angular dependency injection system. Take a look at the guides to explore each of the new services and how they are to be used.
  • Enhancement: We have added support for AOT. If you follow our Getting Started Guide you will be able to use AOT.
  • Changed: All errors are available under the Errors namespace. Take a look at our Troubleshooting Guide on how to use errors.
  • Support for Kinvey Web Hosting under the website command namespace
  • The flex status command outputs statuses using upper case letters
  • Suggest command when token is expired
  • Use backend error when HTTP status code is 401
  • Fixed: Prevent duplicate Live Service messages after a reconnection is made to PubNub. #389
  • Validated support for node v6.x, node v8.x, and node v10.x
  • Updated dependencies
  • Adjusted Linitng and fixed linting issues
  • Bug fix: Preserve existing environment variables on flex deploy --set-vars <env variables>
  • Support for service environments when working with Flex services
  • Support for selecting a Node.js runtime version using --runtime
  • The app create command now supports the --org option
  • Support for environment variables for internal Flex services
  • Help information for kinvey <namespace>
  • The development dependencies have been updated
  • Enhancement: Allow loginWithMIC() to work properly when viewing a NativeScript application with the NativeScript Preview App. #377
  • Fixed: Use default AuthorizationGrant if null is provded to loginWithMIC(). #372
  • Fixed: Merge _socialIdentity properly with response from /me endpoint. #374 #375
  • Fixed: Return the correct error message if Files.findById() is called without a file id. #373
  • Fixed: Mobile Identity Connect now works on Microsoft Edge and IE browsers. #364
  • Fixed: Send custom properties to the backend using the x-kinvey-custom-request-properties header when creating an entity. #360
  • Fixed: Update rxjs to 6.x. #353
  • Enhancement: Add new defice info header. #343
  • Rename the env namespace to appenv
  • Ability to specify an organization when creating an app
  • Fixed: Added instanceId?: string to ClientConfig TypeScript definition. #341
  • Fixed: Return response from backend when calling datastore.find(). #342
  • Enhancement: Updated rxjs to 6.x. #340
  • Fixed: X-Kinvey-Device-Info header nows sends the correct information. #330
  • Fixed: The error returned from the server when Kinvey.Files.downloadByUrl() fails is now thrown properly. #333
  • Fixed: An error is not thrown when trying to upload a file and no metadata is provided. #334
  • Changed: A query is not longer accepted to push a subset of items to the backend. #331
  • Prompt for 2FA token on profile login if required
  • Log output columns have been rearranged to show timestamp, log ID, and then logged message
  • Output logs properly when the log message is an object
  • Prompt for 2FA token on profile login if required
  • Log output columns have been rearranged to show timestamp, log ID, and then logged message
  • Output logs properly when the log message is an object
  • Fixed: Use correct Authorization header value when sending a request to refresh a MIC access token. #315
  • Fixed: Queue network requests while in the middle of refreshing a MIC access token. This prevents other requests from invalidating the newly refreshed access token. #321
  • FLEX-286 Fixed setQuery to propagate on FSR prehook
  • Stringify query.query and query.sort if they are objects before returning
  • FLEX-293 Removed SIGKILL handler to prevent crash
  • Enhancement: Calculate and validate file size before uploading the file. Any size provided to Files.upload() will be overridden with the size calculated by the SDK. #313
  • Fixed: Remove _kmd.local property on an entity before it is send to the backend. _kmd.local is a property created by the SDK used to track if an entity was created using the SDK. #310
  • Fixed: The active user will no longer be removed if local storage is being used to cache data loaded with the DataStore and the cache is cleared. #311
  • FLEX-270 Added graceful shutdown
    • Now on ctrl-c, SIGTERM, SIGINT, or SIGKILL, the sdk will attempt to wait for in-process tasks to finish.
    • Will time out and force-quit if all tasks aren't complete in 50 seconds
    • Pressing ctrl-c, or sending SIGINT/SIGTERM/SIGKILL a second time will terminate the process immediately.
  • FLEX-291 Remove lodash as a dependency
  • FLEX-290 Changed destination property in body for sendPush to recipients
  • Removed CoffeeScript as a dependency
  • Updated code-task-receiver to 2.3.1
  • Updated kinvey-datalink-errors to 0.3.2
  • Enhancement: Add support to handle Mobile Identity Connect OAuth errors in redirectUri response. #307
  • See README for migration guide
  • BREAKING CHANGE: email and push modules now require a callback or promise handlers. They can no longer be executed as "fire and forget".
  • FLEX-206 Added Promise support to Asynchronous flex-sdk modules
    • dataStore
    • userStore
    • groupStore
    • push
    • email
  • FLEX-176 Add RoleStore
  • FLEX-240 Add endpointRunner to support executing of custom endpoints
  • FLEX-246 Use new KCS endpoints for push/email
  • FLEX-248 Removed deprecated skipBl and useMasterSecret options for all stores
  • FLEX-247 Change baasUrl property to retrieve it from top-level task object
  • Updated dependencies with nsp warnings
  • Removed lodash isNil package

Upgrading from 2.x to 3.x

Flex-sdk 3.x contains several breaking changes as well as new features. To upgrade your service from Flex-sdk 2.x to 3.x:

  • All email and push methods now return a promise. It is now required that you either handle the promise, or pass a callback.
  • For all stores (e.g. dataStore, userStore, etc), the deprecated options skipBl and useMasterSecret have been removed and no longer function. Use useBl and useUserContext instead.
  • All asynchonous modules (dataStore, groupStore, roleStore, endpointRunner, userStore, email, and push) now return a promise or accept a callback.
  • For more information on what's new, see the Changelog.

Open the Flex SDK GitHub repo for more information and source code.

  • Fixed: When calling User.me() to update the active users data, any data that was deleted since the last call will also be removed from the active user stored on the device. #299
  • Fixed: Any error thrown in the onNext function while using an observable will cause the onError function to be called with the thrown error. The subscriber will also be unsubscribed from the observable. #302
  • Ability to create internal Flex services using flex create.
  • Ability to delete internal Flex services using flex delete. Note that this command name was used to clear Node.js project setting in previous versions.
  • The flex delete command available in previous versions has a new name: flex clear. It keeps its behavior.
  • All delete commands now require confirmation that you can avoid using the new --no-prompt flag (available only for delete commands).
  • Unknown hyphenated options or flags now cause the command to exit with an error instead of being ignored.
  • Dependency updates: moment.js, request.js.
  • Enhancement: Add support for Server Side Delta Set. #270
var datastore = Kinvey.DataStore.collection('books');

// Turn on for datastore instance
datastore.useDeltaSet = true; // Default is false

// Pass options.useDeltaSet to override datastore default for a pull() request.
// It will use value of datastore.useDeltaSet as default.
var promise = datastore.pull(query, { useDeltaSet: true });

// Pass options.useDeltaSet to override datastore default for a pull() request.
// It will use value of datastore.useDeltaSet as default.
var promise = datastore.find(query, { useDeltaSet: true });
  • Added role helper to the kinveyEntity module
  • Disable the proxy when using dataStore
  • Disable the proxy for push and email modules
  • Fixed errors for null or empty entityIds for dataStore, groupStore, and userStore
  • Updated the request module to 2.85.0
  • Updated code-task-receiver to 2.2.3 to add response object parsing for FlexFunctions

Open the Flex SDK GitHub repo for more information and source code.

  • Enhancement: Add validation that checks if a redirectUri provided to mic.login() is a string. If the redirectUri is not a string then an Error will be thrown. #283
  • Fixed: Add support for kinveyFileTTL and kinveyFileTLS query parameters for KinveyFile references on a DataStore collection. #289
var dataStore = Kinvey.DataStore.collection('pets');
dataStore.findById('3f583e9f-d064-4a25-a953-6cf0a3dc2ff1', { kinveyFileTTL: 3600, kinveyFileTLS: true })
  .subscribe(function(pet) {
    /*
      {
        "_id": "3f583e9f-d064-4a25-a953-6cf0a3dc2ff1",
        "_acl": {...},
        "dogName": "Bob",
        "furColor": "brown with black spots",
        "pawPrintPicture": {
          "_type": "KinveyFile",
          "_id": "325620e4-93dd-4a26-9f84-8a5e62c0db11",
          "_filename": "bobsPawPrint.png",
          "_acl": { ... },
          "_downloadURL": <Google Cloud Storage download URL>,
          "_expiresAt": "2018-06-18T23:07:23.394Z"
        }
      }
    */
  }, function(error) {
    // ...
  });
  • Support for managing apps within your Kinvey account: creating, listing, viewing details, deleting, and setting as active.
  • Support for managing environments within your Kinvey account: creating, listing, viewing details, deleting, and setting as active.
  • Support for managing collection within a Kinvey app: creating, listing, and deleting.
  • Ability to view organizations and set an organization as active.
  • The profile login command updates the token only.
  • Support for 2-factor authentication. See the --2fa global option.
  • New command for reauthenticating the specified profile: kinvey profile login.
  • Ask for profile override if profile already exists on kinvey init.
  • Use active profile if no other specified on kinvey profile delete.

Open the Kinvey CLI GitHub repo for full documentation and source code.

  • Enhancement: Previously, a datastore instance would implicitly push pending entity changes before performing a request that would overwrite the local entity changes. This change removes the implicit push and will instead return an error stating that there are entities that need to be synced before you complete the action. #276
  • Enhancement: You can now provide a instanceId as a config option to init(). This will setup the backend and Mobile Identity Connect API urls to use your instanceId properly. #278
Kinvey.init({
  appKey: '<appKey>',
  appSecret: '<appSecret>'
  instanceId: '<my-subdomain>'
});
  • Fixed: Check that a value is an object before calling Object.keys() in Query.isSupportedOffline(). #245
  • Fixed: Use es6-promise for promises in live service related files instead of native promises. #272
  • Enhancement: The default API version used by Mobile Identity Connect is now v3. #259 #268
  • Enhancement: Auto Pagination Support. #260

The Kinvey backend imposes a limit of 10,000 entities on data requests. If your app needs to pull a larger number of entities to the cache, you can request the SDK to "auto-paginate". The SDK will then retrieve the entire set of entities page by page. This feature only applies to Cache and Sync stores.

var dataStore = Kinvey.DataStore.collection('books', Kinvey.DataStoreType.Sync);

//Pull the entire collection page by page.
var promise = dataStore.pull(null, { autoPagination: true })
  .then(function onSuccess(count) {
    // "count" represents the number of entities retrieved
  }).catch(function onError(error) {
    // ...
  });

Breaking change: Previously, DataStore.pull() returned an array of the retrieved entities. With this release, the response of pull has changed to the count of retrieved entities.

If you need the array of entities retrieved by a pull in your app, you should call find after the pull has completed.

  • Fixed: The authorization header for Mobile Identity Connect token requests now uses the long-form OAuth Client ID. This fix is only relevant to apps that use multiple auth providers. A detailed discussion on OAuth Client IDs can be found in the Mobile Identity Connect guide. #263
  • Support for entering Instance ID instead of instance URL for dedicated client instances
  • More detailed and useful error messages
  • The flex deploy command now accepts --serviceId
  • The flex init command now requires a profile and ignores the --email, --password, and --host options
  • Support for outputting in JSON format
  • New --no-color flag for disabling colors in output
  • Bug fixes

Open the Kinvey CLI GitHub repo for full documentation and source code.

  • Enhancement: We've restructured our class hierarchy for working with data, to facilitate future performance improvements.
  • Enhancement: CacheStore methods create() and update() can now handle more concurrent requests.
  • Enhancement: CacheStore.delete() method now applies the same query both locally and against the backend, instead of making separate "by-id" requests for entities found in the cache.
  • Enhancement: The clear() method for a CacheStore or SyncStore now clears the sync queue.
  • Enhancement: Sync items found for entities which are no longer present in cache will be cleared when a sync push is performed to prevent errors.
  • Enhancement: Improved the throttling of requests when doing a sync push.
  • Fixed: Database connections to WebSQL are now cached. #241
  • Fixed: Some browsers don't support Number.isNaN() so we added a polyfill. #243
  • Fixed: Update typescript definitions to allow anonymouse user signup. #242
  • Fixed: Export LiveServiceFacade instead of LiveService. #254
  • Use correct config property for setting storage providers #228
  • _id field not returned when specifying fields for a query #233
  • Enhancement: You can now specify which storage provider to use to cache data. See the code snippet below for an example. #213
Kinvey.init({
  appKey: '<appKey>',
  appSecret: '<appSecret>'
  storage: Kinvey.StorageProvider.WebSQL // or [Kinvey.StorageProvider.WebSQL, Kinvey.StorageProvider.IndexedDB]
});

// Possible Values
enum StorageProvider {
  WebSQL,
  IndexedDB,
  LocalStorage,
  SessionStorage,
  Memory
}
  • Enhancement: You can now use a datastore to perform actions on a subset of data in a collection without providing a query each time to match that subset of data. See the code snippet below for an example. #220
var datastore = Kinvey.DataStore.collection('books', Kinvey.DataStore.Sync, { tag: 'Kinvey' }); // Tag the datastore
var query = new Kinvey.Query().equalTo('author', 'Kinvey');
datastore.pull(query)
  .then(function() {
    return datastore.find().toPromise();
  })
  .then(function(books) {
    // all of these books have Kinvey as their author
  });
  • Fixed: Correctly sort entities that have a null or undefined value for the sort field. #205
  • Fixed: Add polyfill for Object.prototype.assign(). #225
  • Fixed: Subscribe for messages sent to user's personal collections channel #172
  • Fixed: Allow null and undefined values to be used in a equal and notEqual query #201
  • Fixed: Remove fileds when processing query after sorting data #202

Install the latest beta using npm install -g kinvey-cli@next.

  • Support for using multiple Kinvey accounts through profiles
  • All Flex-related commands move under the flex namespace (e.g. status becomes flex status)
  • New commands:
    • init—Initializes Kinvey CLI by prompting for credentials and configurations options
    • flex init—Configures Kinvey CLI to work with a specific Flex Service
  • All commands (except for init) can now take credentials as command-line options or ENV variables
  • Removed commands:
    • config
    • logout
  • New command-line options specific to commands under the flex namespace
  • The request timeout has been increased to 10 s
  • Improvement: Use PubNub 4.19.0 rather then our custom fork. #193
  • Improvement: We have updated the TypeScript definitions to support custom properties on a User instance. #183
  • Improvement: Adopt a mono repo style repository. This change has no impact on the SDK output. It restructures our codebase to make releases and open source contributions easier. #171
  • Roles - Created roles guide.
  • status command now reports the email address (plus first/last name, if set) of deployer and the date/time at which service was deployed
  • status command now reports the version of the most recently-deployed service
  • logs command enhancements
    • [from] and [to] optional arguments replaced with --from and --to flags
    • Added -n (--number) and --page flags
    • Only 100 entries are returned by default unless the -n flag is supplied
  • Imporvement: Live Service is now EA (Early Adopter) for our Angular2 SDK. Please check our Live Service Guide.
  • Improvement: Support push notifications. Please see Push Guide.
  • Bugfix: Support mutiple MIC providers in a single app.
  • Bugfix: Data was not correctly synced with the backend when using the LocalStorageAdapter and SessionStorageAdapter.
  • Bugfix: Support webpack bundles.
  • Added: Requests are logged using loglevel.
  • Added: Allow a micId to be added to the client_id value sent for a Mobile Identity Connect request.
  • Added: Replace native node modules with npm packages.
  • Fixed: The active user is now stored in local storage.
  • Fixed: Default to removing a user with hard equal to false.
  • Fixed: Queries will be properly encoding.
  • Fixed: Throw any errors encountered when trying to load a storage adapter.
  • Deprecated Kinvey.initialize(). Please use Kinvey.init() instead. If you use Kinvey.init() you might not have an active user even though you had already logged in. To fix this, use Kinvey.initialize() to move the active user to the correct storage. From then on you will be able to use Kinvey.init() and retrieve your active user. Kinvey.init() does not return a promise and is synchronous.
// Will return the shared client instance
Kinvey.init({
  appKey: '<appKey>',
  appSecret: '<appSecret>'
});
  • Fixed bug resulting in 2FA login crash
  • ES6 rewrite
  • Support 2FA token login
  • Add ability to login to the CLI using ENV variables
  • Fixed: Allow special characters ('.', '$', '~', '>', '<', '!', '@') to be in the _id for an entity. #134
  • Fixed: Import es6-promise to prevent Promise Undefiend errors on environments that do not have a native promise implementation. #135
  • Fixed: Errors will now show the message property properly when logging errors to the console. #136
  • Fixed: Added a try/catch around openDatabase(). This allows any errors thrown when opening a new database connection to WebSQL be caught and used to reject the pending promise. #17
  • Changed: https: will automatically be used when a custom hostname is missing a protocol. #129
  • Fixed: Prevent the active user from being null for a short period of time when setting the active user. #128
  • Fixed bug where instance param was not respected when running config [instance] in a fresh environment
  • Fixed crash on config against the default instance (under certain scenarios)
  • Added: usePopupClass() as a static function to the User class for registering a popup class to be used for MIC authentication.
  • Added: operation property to results returned when pushing sync items to the backend. The property either be equal to Kinvey.SyncOperation.Create, Kinvey.SyncOperation.Update, or Kinvey.SyncOperation.Delete.
var store = Kinvey.DataStore.collection('books', Kinvey.DataStoreType.Sync);
var query = new Kinvey.Query().equalTo('title', 'Kinvey');
store.remove(query)
  .then(function(response) {
    // response.count contains the count of books removed matching the query
    return store.push();
  })
  .then(function(results) {
    // Results is an array of responses from the pushing the sync items.
    // Each result object now contains an operation set to Kinvey.SyncOperation.Delete
  })
  • Changed: Updated typescript definitions.
  • Changed: restore() static function on the User class to throw an error whenever it is called. This function required the master secret for an application. We strongly advise not to do this in your application.
  • Changed: All toJSON() functions have now been replaced by toPlainObject(). The returned result is the exact same.
  • Changed: save(), create(), and update() on datastore instances to no longer accept an array of entities. See the example below to see how to save an array of entities.
var books = [{ name: 'book1' }, { name: 'book2' }];
var store = Kinvey.DataStore.collection('books');
var promises = [];

// Loop through each of the books and save them one by one.
// You can now reference a book easily in the event an error
// occurs when saving a book.
books.forEach(function(book) {
  var promise = store.save(book)
    .catch(function(error) {
      console.log('Error saving book ' + book.name);
    });
  promises.push(promise);
});

// Using a third party library wait for all the promises to complete
RSVP.Promise.all(promises)
  .then(function(books) {
    // ...
  });
  • Changed: remove() and removeById() on datastore instances to now return the count of entities removed and not the actual entity removed.
var store = Kinvey.DataStore.collection('books');

// Remove books using a query
var query = new Kinvey.Query().equalTo('title', 'Kinvey');
store.remove(query)
  .then(function(response) {
    // response.count contains the count of books removed matching the query
  });

// Remove a book using an id
store.removeById('1')
  .then(function(response) {
    // response.count will equal 1 if the book was removed or 0 if the book was not removed
  });
  • Removed: init() static function on Kinvey namespace. This was deprecated with v3.3.3.
  • Removed: baseUrl, protocol, and host properties on a client instance. These were deprecated with v3.0.0.
  • Removed: syncCount() and purge() on CacheStore and SyncStore instances. These were deprecated with v3.2.0.
  • Removed Kinvey.Users and Kinvey.UserStore. These were deprecated with v3.2.0.
  • Update type definitions for Kinvey.Files.
  • Add missing data property for Kinvey.User type definitions.
  • Share active user information with 1.x SDK. Just use version 3.4.5 to share active user information. No changes are needed to your 3.x application.
  • Use query to push a subset of sync entities to the backend. #120
  • Add more tests for query. #121
  • Allow multiple sync push operations to be in progress at the same time for difference collections.. Only one sync push operation is allowed to be in progress for the same collection. This fixes an issue caused with #117 that only allowed one sync push operation to be in progress regardless of the collection. #123
  • Initial Release
  • Added HTTPS proxy usage information to README
  • Fixed bug which resulted in a 'ProjectNotConfigured' error when running the list command with a successfully configured project
  • Fixed bug which resulted in a CLI crash when parsing/printing non-string log message data
    • Skip log entries which have no corresponding message (and report which entries have been skipped when running CLI in verbose mode)
  • CLI now supports operations against data links backed by Kinvey organizations
  • kinvey config targets the default Kinvey instance for data link selection if a host is not provided (even if the CLI was previously configured with a custom host)
  • Fixed 'Archive Limit Exceeded' bug occasionally encountered during deployment of valid Kinvey services from within Windows environments
  • Update CLI update check frequency (interval shortened to 30 minutes)
  • Fixed bug where 'ProjectNotConfigured' was not correctly displayed after attempting to execute commands without a valid CLI configuration
  • Remove duplicate 'host' output during config command when using custom Kinvey instance
  • Cache last recycle job ID
  • Update session storage filename
  • Add support for refactored KBW/KMR 'status' command. Repurpose existing 'status' command into 'job'
  • Cache last deploy job for ease of retrieval using kinvey job
  • Add support for logging thresholds (requires Flex SDK >= 1.0.0)
  • Allow setting of persistent host via kinvey config [instance]
  • config command now prompts for a new service on every run (fixed prior bug where it did nothing if saved data was already present)
  • Upgrade CLI to check for kinvey-flex-sdk (instead of kinvey-backend-sdk)
  • logs command now takes optional runtime arguments (instead of prompting for log filters)
  • Obfuscate instance URLs at configuration time (e.g. kinvey config acme-us1)
  • Fixed bug where credentials were improperly cleared during logout/refresh
  • Fixed bug where status command (no arg command) crashed if supplied with an argument
  • Support node 6.x
  • Handle authentication errors when deploying.
  • Do not display progress message for completed jobs.
  • Display progress and error messages when retrieving deploy status.
  • Implement logs command
  • RapidData - Added the documentation for zero-code SharePoint, SQL and Salesforce connectors.
  • Import/Export - Added the documentation for zero-code SharePoint, SQL and Salesforce connectors.
  • Refactor routes.
  • Upgraded request module to v2.65.0
  • Upgraded async module to v1.4.2
  • Upgraded moment to v2.10.6
  • Added modules.twilio library for twilio support
  • Renew expired tokens.
  • Updated dependencies.
  • Initial version.
  • When navigating to a collection that no longer exists, the link to the dashboard will now navigate to the environment dashboard.
  • Improved collection navigation for users with multiple browsers or computers
  • Verifying an email address no longer requires clicking a button
  • New underlying execution engine
  • Business Logic now includes access to node.js v0.10.38 core libraries and APIs
  • Added support for Bluebird promises and promise-enabled the Collection Access and Request modules.
  • Added cc and bcc to Email module
  • Methods in logger, push, and email moduels now take callbacks
  • New Kinvey Module, which allows creation/updating of metadata in Kinvey Entities, and allows for ACL management
  • Deprecated use of utils.kinvey in favor of the Kinvey module
  • Deprecated request.username in favor of requestContext.getAuthenticatedUsername
  • Added requestContext module with support for:
    • Retrieving request username and request userId
    • Retrieving and setting custom request properties
    • Retrieving client-side app version information
  • Deprecated use of backendContext.getAuthenticatedUsername() as it has been moved to requestContext
  • Internal Improvements
  • Data Browser - Fixed but where _kmd and _acl properties would not automatically update when editing other fields
  • Business Logic - Fixed a bug that was preventing business logic from being saved.
  • Data - Collection list refreshes it's content on environment change properly
  • Internal Improvements
  • Internal Improvements
  • Users - Fixed empty user splashscreen CSS issue
  • Users - Bypass business logic button is now functional
  • Small Bugfixes
  • Files - Max file size allowed in file uploads has been updated
  • File uploads across the entire application have been improved
  • Fixed issue when navigating in the databrowser with the arrow keys
  • API Console - Autocompletion is now improved
  • Data Browser - The filter panel is collapsed automatically on page transition
  • Environments - Archived environments have a better display, and will automatically unarchive
  • Business Logic - BL scripts can be renamed
  • Small Bugfixes
  • Bugfixes
  • Internal Improvements
  • New beta console released, designed from the ground up with your feedback along the way.
  • Internal improvements
  • Added collectionAccess.collection.collectionExists method to check if a collection exists
  • Internal Improvements
  • Internal improvements
  • Internal Improvements
  • Increased timeout for long running tasks.
  • Collaboration - Fixed bug where users could not be invited to collaborate to an environment when they already work on a different environment
  • API Console - Fixed bug with the DELETE method getting back an error related to missing a body
  • Databrowser - We no longer sort on collections that are too large to be sorted
  • Internal Improvements
  • Changes to moment module
    • Upgrade to moment 2.5.x
    • Adds new methods associated with moment 2.5
      • as
      • get
      • set
      • min
      • max
      • toISOString
      • quarter
      • weekday
      • isoWeekday
      • weekYear
      • zone
      • parseZone
      • isDSTShifted
    • Adds support for duration objects
    • Fixes several methods that accepted moments as arguments
  • New tempObjectStore in utils module, for storing transient data and objects within the same request
  • New backendContext method getAuthenticatedUsername for retrieving the name of the user who initiated the request
  • Internal improvements
  • Users - Fixed bugs when trying to fetch a user that does not pass form validation
  • Scheudled Code - Added new shorter intervals to schedules
  • Internal Stability Improvements
  • Versioning - Added notification to users that they have a stale version of the client
  • Custom Endpoints - Improved error handling
  • Users - You can now add users when the collection is configured as read-only from the console
  • Import - Added better file validation
  • Internal Stability Improvements
  • BL-CLI - Fixed issue when trying to get hooks that are defined against data links for the CLI.
  • Internal Improvements
  • Internal Stability Improvements
  • Internal Stability Improvements
  • Users - When creating users through the console and the email verification flag is set, the email field will be required
  • Push - Fixed a bug that would cause a failure of push if a user's configuration was in an inconsistent state
  • Data Store - Fixed incorrect errors that would render on destroying or renaming a collection
  • Error Handling - Drastically reduced the number of "Uh, oh" and "broken pipes" style errors across the board.
  • API Console - Added support for using Microsoft Dynamics Data Links
  • Collection Hooks - Fixed issue that prevented the page from loading when custom data links are enabled
  • Internal Stability Improvements
  • Internal Stability Improvements
  • Custom Data Link - Unified interface to match how the other data links function
  • Internal Improvements
  • In email module, if reply to is null, reply to is now set to the from address.
  • Internal Improvements
  • Internal Stability Improvements
  • Fixed issue with scheduled tasks not running properly
  • Fixed bug with icons not showing up for apps
  • Internal Stability Improvements
  • Updated copyright to 2014
  • Internal Stability Improvements
  • Internal Stability Improvements
  • Added tooling to better track down future errors
  • Fixed a bug with Business Logic logs that would cause slowdowns
  • Internal Stability Improvements
  • Internal Improvements
  • Fix for some outbound requests using the request module timing out too quickly
  • Internal Improvements
  • Decreased error rates across the board with better error handling
  • Internal Stability Improvements
  • Internal Improvements
  • Outbound requests using the request module are now limited to 20 per second per app environment
  • url argument now accepted as an alias to uri in request module
  • Fix issue where errors logged through the logger module would be written to the log as an empty object
  • Internal Improvements
  • Removed Yahoo Local addon.
  • Fixed bug with links being generated with .... instead of the characters in the name
  • Internal Stability Improvements
  • Business Logic - Added support for common Business Logic from the command line tool.
  • Users - Added configuration for password reset URL in settings page
  • Internal Stability Improvements
  • Internal Stability Improvements
  • Updated support phone number
  • Improved error handling when rolling back business logic
  • Improved error handling when there is a password error on push certificate upload.
  • Improved error handling when rate limit is encountered
  • Added an "add column" button in the Users addon table view
  • Added the ability to lockdown a user (which triggers a wipe of the device cache)
  • Fixed Files addon rendering to support non-string filenames
  • Security improvements
  • Fixed bug related to adding custom data links when the current plan does not have support for them
  • Minor placeholder changes to forms
  • Internal Stability Improvements
  • Users - Fixed bug with exporting of large datasets not preforming well
  • Internal Stability Improvements
  • Added new method getSecurityContext to backendContext module, which returns 'app', 'master', or 'user' depending on the type of security credentials that were passed in the request
  • Changed blacklist violation error to include the name of the script that triggered the blacklisting event
  • Internal improvements
  • Fixed issue where navigation out of the billing page was not possible
  • Made enterprise dashboard dismissable
  • Fixed some databrowser filter issues regarding case sensitivity
  • Internal Stability Improvements
  • Added self-serve unarchiving support
  • Scheduled Code - Added support for running business logic on a schedule basis
  • Internal Stability Improvements
  • Fixed a bug with regards to environment creation limits
  • Internal Stability Improvements
  • Internal Stability Improvements
  • Billing - Fixed navigation issues with page reloads and paths with a trailing slash not redirecting properly
  • Analytics - Fixed a bug with the retrieval of analytics data from the server
  • Support - Updated links around the site to give people ways to connect with all their support options available
  • Pricing - Updated the interface for the new pricing model, including support to upgrade your plan
  • Analytics - Updated analytics styling to fix a bunch of UI bugs
  • Internal Stability Improvements
  • Collection Hooks - Added support to allow for collection hooks to be created for the Files API
  • API Console - Fixed a bug where the request body would not reset it's value from previous requests properly
  • Internal Stability Improvements
  • Business Logic - Rollbacks are now ran on a background task, similar to how cloning is done
  • Updated the interface to archived apps to present a more friendly display
  • Users - When cloning user records the groups are now also cloned.
  • Business Logic - Fixed a bug with verisoning where saving with a message would not actually update your code
  • Added support for archived environments which was causing some users to get a non-responsive web console
  • Internal Stability Improvements
  • Microsoft Dynamics® CRM Data Link - Added a new data link to connect with your Microsoft Dynamics® CRM
  • Internal Stability Improvements
  • Internal Stability Improvements
  • Business Logic - Added revision support to business logic, including adding a command line tool to manage your logic.
  • Collaboration - Fixed an issue where admins could not invite other admins or collaborators.
  • Environment Management - Fixed bug where no addons would show up on the left when selecting clone from a different environment than is currently selected
  • Push - Added support for iOS push certificate password
  • Billing - Fixed a bug where a user could not select a different billing month. Also fixed the default month to be displayed to be the latest statement instead of the first statement.
  • Collection Hooks/Custom Endpoints - Updated the way logs are returned from the system, previously after 100 logs now new logs would be returned. Now the latest logs are always returned.
  • API Console - Refactored the way the API console makes requests. They are now sent direct from the browser instead of passed through the management console backend.
  • Fixed a bug with iOS Push
  • Internal improvements
  • API Console - Removed temporary measure of limit of 100 records on every request that was added in 3.7.8.
  • Updated display case when an app is suspended, it now renders a proper message.
  • Internal Stability Improvements
  • Internal Stability Improvements
  • API Console - Added a limit of 100 records to every request as a temporary bugfix until a permanent fix is ready for deployment.
  • Environment Management - Fixed a bug with jobs not clearing their update when they get removed from the collection.
  • Internal Stability Improvements
  • Internal stability and speed improvements
  • App Settings - Ownership display no longer attempts to use a variable that might not exist
  • Environments:
    • Fixed a bug with ownership being assigned to the wrong user on environment creation. This was causing some bad behavior when trying to update owner of the app or manage billing.
    • Collaborators can no longer create or delete environments
  • HTML Templates - Released a new addon to manage your HTML templates
  • Users - Added the ability to force email verification
  • Environment Cloning - Increased clone duration timeouts
  • Administration - Updated ownership display to only show ownership transfer form when the user is the owner
  • Internal stability improvements
  • Internal improvements release
  • Internal stability improvements
  • Environment Cloning:
    • Clicking clone on an app with only one environment no longer causes a javascript failure on the page.
    • Files now correctly show up on the batch clone dialog.
  • Business Logic Logs:
    • Logs now sort with the proper timestamps.
    • Logs no longer seem to "fill up" over time. Old logs will get automatically removed after a threshold of new logs being created.
  • Internal stability improvements
  • Environments - Updated interface so only addons with differences show up in the clone page
  • Internal stability improvements
  • Internal improvements release
  • Environments - Added environment management, with the ability to copy data and settings from one environment to the other.
  • Added UI elements for viewing task status on clone operations.
  • Added support in email module for sending HTML Emails
  • Added a new module, backendContext, with helper methods for obtaining the current app's appKey, appSecret, and masterSecret
  • Internal Improvements
  • Analytics - Fixed a display issue causing timezone offset to show data in the wrong day
  • Fixed bug in push processing that prevented pushing to both Android and iOS devices for the same user
  • Internal Improvements
  • Internal improvements release
  • Users - Fixed a bug where users with invalid email address were not showing up in the user listing
  • API Version - Fixed a bug where the API Version could get set to a string instead of a number
  • Push Triggers - Fixed a bug that was causing the addon to fail loading
  • Added timeline link to the dashboard
  • Internal stability improvements
  • Files - Fixed bug with old entries that were causing the UI to crash
  • Datastore - Internal improvements
  • Users - Updated validation handlers
  • Added support for running Business Logic on Google App Engine
  • Internal improvements release
  • Fixed handling of unknown mime types for file uploads
  • Internal improvements
  • Bugfixes for Premium Analytics UI
  • Fixed bug for User UI where id cells were not linking properly
  • Changed the regex patters on the query builder to be case insensitive by default
  • Internal improvements release
  • Added support for Google Cloud Storage as the underlying service for Files.
  • Internal improvements release
  • Internal improvements release
  • Fixed bug with missing argument in collectionAccess.findAndModify
  • Added support Google Cloud Messaging
  • Added appKey as modules.request parameter
  • Business Logic - Updated guide with information about Custom Endpoints
  • Release of Premium Analytics (beta)
  • Added support for Custom Endpoints in Business Logic
  • Fixed bug with billing UI where it displayed wrong dollar amount
  • Internal improvements
  • Fixed async.js bug where series, parallel, and parallel limit functions only supported arrays and not objects
  • Internal improvements release
  • Added the ability to clear Users
  • Fixed a bug with sorting users
  • Fixed a bug where collaboration was not able to be edited
  • Fixed a bug where the user page was not showing users with invalid emails
  • Made the export code streaming for collections
  • Internal improvements release
  • Added the ability to have multiple custom data links
  • Removed UI for non-admins to be able to edit collaborators or remove/change owner of the app
  • Fixed bug where the Azure blob container was not being created on app creation
  • Internal improvements
  • Fixed a bug with a failing collection destroy for externally created collections
  • Added error display to settings page.
  • Added UI state memory BL addon - now remembers which collection and stage of BL you last edited, per app per user
  • Updated importer so it will throttle based on if the item has BL or not, it will also now detect filetype and throw errors if the filetype does not match a predefined list.
  • Internal improvements
  • Fixed a bug with setting the content length incorrectly causing documents to get cut off
  • Added the "Building For" question to new apps
  • Updated request to force API v1 when streaming requests.
  • Fixed bug with request form handling.
  • Added support for GCM push
  • Enabled blacklisting support
  • Upgraded the request library and fixed content length while streaming from Azure
  • Updated the exposure of Business Logic logs in the Management Console
  • Upgraded MongoDB driver version
  • Support for POSTing formdata
  • Support for streaming Kinvey Files to formdata
  • Internal improvements
  • Internal improvements release
  • Added support for modules.request to allow creation of outgoing HTTP requests