All Versions
117
Latest Version
Avg Release Cycle
17 days
Latest Release
2029 days ago

Changelog History
Page 9

  • v0.9.9 Changes

    ๐Ÿ› Bug Fixes

    • โž• Added countermeasures to ensure that multiple synchronization requests from rapidly delivered push notifications do not get lost.
    • ๐Ÿ›  Backported a fix from 0.10.0 [110bdaa] that fixes the issue where an exception might be raised because of an internal race condition.
  • v0.9.8 Changes

    ๐Ÿ› Bug Fixes

    • The value of receivedAt is now set immediately upon send for LYRMessage objects. This improves sorting behaviors using the attribute.
    • Locally deleted conversation weren't brought back, if client received new incoming messages.
  • v0.9.7 Changes

    โœจ Enhancements

    • ๐Ÿ”ง Introduced new LYRPolicy object for configuring communication policies. The first policy available is blocking, which enables users to block message delivery from other abusive users.
  • v0.9.6 Changes

    ๐Ÿ› Bug Fixes

    • The authenticated user is no longer implicitly included in the queried value for queries with the LYRPredicateOperatorIsIn or LYRPredicateOperatorIsNotIn operator on the participants property of the LYRConversation class. This prevents the query from erroneously matching or excluding all Conversations because the authenticated user is always a participant.
    • ๐Ÿ›  Fixed LYRQueryController notifying its delegate that the query controller's content will/did change even when the changes do not affect the query controller's content.
    • ๐Ÿ›  Fixed an issue where metadata change notifications would be published before the conversation had been created.
    • ๐Ÿ›  Fixed an issue where transport state could get out of sync and result in messaging services being unavailable.
    • Objects inserted outside the bounds of the pagination window of an LYRQueryController will no longer cause the pagination window to expand.
    • ๐Ÿ›  Fixed an issue where removing a participant and adding them to a conversation back would fail.
    • ๐Ÿ›  Fixed an issue where object changes would not be cleared after publication through certain codepaths. This could lead to duplicated changes or failure to notify of changes for properties that reverted to a previous value. This was most noticable on changes to hasUnreadMessages for Conversations, but could affect any changable property.
    • ๐Ÿ›  Fixed an issue where querying for conversations with specific set of participants produced unpredictable results if some participants were removed from conversations.
  • v0.9.5 Changes

    โœจ Enhancements

    • ๐ŸŽ Introduced a new option for LYRConversation to allow developers to configure whether or not delivery receipts are generated on a per-conversation basis. This provides improved synchronization performance for conversations that do not utilize delivery receipts.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed an issue where locally deleted messages were not properly excluded from unread calculations.
    • ๐Ÿ›  Fixed an issue where metadata changes would not trigger local change notifications or dispatch synchronization immediately upon change.
    • ๐Ÿ›  Fixed an issue where metadata would attempt to synchronize for conversations that you are no longer a member of.
  • v0.9.4 Changes

    Public API changes

    • ๐Ÿ”€ The completion block of LYRClient synchronizeWithRemoteNotification:completion: has been changed. Instead of invoking the completion handler with a UIBackgroundFetchResult and an NSError, an NSArray of object changes and an NSError are now given. The NSArray contains NSDictionary instances that detail the exact changes made to the object model.

    โœจ Enhancements

    • ๐Ÿ”€ The LYRClient class now includes a watchdog timer that ensures that connection and synchronization in response to push notifications does not exceed 15 seconds of wall clock time. This ensures that ample time is available for processing synchronized changes and prevents the application from being penalized by iOS for exceeding the 30 seconds allotted for processing the push.
    • ๐Ÿ”€ LayerKit now keeps its transport active on transition to the background for as long as permitted by iOS. This enables for the faster synchronization of incoming messages from push notifications.
    • ๐Ÿ”€ Object changes are now delivered directly to the push notification synchronization callback to facilitate easier processing.
    • โœจ Enhanced the query controller by introducing the paginationWindow property, which enables simple pagination of the complete result set. This feature can be used to implement pull to refresh, "Load More" buttons, or automatic loading of additional objects during scrolling. See the comments on the LYRQueryController class for more details.
    • โœจ Enhanced the query controller by introducing the updatableProperties property, which provides control over which properties should generate update notifications. This can be used to enhance UI performance through the elision of uninteresting updates. See the comments on the LYRQueryController class for more details.
    • โž• Added new diagnosticDescription method to LYRClient that dumps a report of the client's internal state for debugging. This method is not in the public header, but can be invoked via valueForKeyPath:.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed an issue where LayerKit would not shut down transport after succesfully connecting and sychronizing in response to a push notification.
    • ๐Ÿ›  Fixed an issue where authentication challenges encountered by transport were not handled properly.
    • ๐Ÿ›  Fixed an issue where LayerKit would not emit a callback from synchronizeWithRemoteNotification:completion: if a connection could not be established.
    • ๐Ÿ›  Fixes an issue where the query controller would emit unnecessary update notifications for objects that were created or deleted.
  • v0.9.3 Changes

    โœจ Enhancements

    • The sentByUserID property of LYRMessage objects is now populated immediately upon send.
    • The LYRQuery class now includes a detailed description implementation that describes the query.
    • โž• Added support for importing LayerKit into Swift based projects using CocoaPods v0.36.0+ by including umbrella module header.

    ๐Ÿ› Bug Fixes

    • The receivedAt time is now set immediately upon message delivery.
    • ๐Ÿšš The query controller now dispatches move events for queries against lastMessage.receivedAt.
    • ๐Ÿ›  Fixed a crash when an attempt is made to mark all messages read on a conversation that has been concurrently deleted.
    • ๐Ÿ›  Fixed an issue that could result in changes failing to be merged onto in memory objects.
    • All methods on LYRClient that cannot be used when unauthenticated now return appropriate errors.
    • ๐Ÿ›  Fixed an issue where previously deleted metadata keys would fail to synchronize when subsequently restored by setting a new value.
    • โšก๏ธ Updated several LYRClient authentication delegate callbacks to guarantee invocation on the main thread.
  • v0.9.2 Changes

    โœจ Enhancements

    • ๐Ÿ‘Œ Improved concurrency and error handling in the persistence layer.
    • โž• Added canonicalObjectIdentifierForIdentifier: to LYRClient to help with migrating externally stored object identifier references to the new schema.
    • ๐Ÿ”€ Synchronization in response to remote notification via synchronizeWithRemoteNotification:completion: now guarantees delivery of the completion callback on the main thread.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixed a SQLite build issue that increased exposure to database busy / locked errors.
    • SQLite busy / locked errors are now immediately propagated back from any query that encounters them, ensuring queries and result sets completely succeed or fail.
    • ๐Ÿ“‡ Attempts to set metadata on key-paths where the nested parents did not yet exist would fail silently. These intermediate nesting dictionaries are now created.
  • v0.9.1 Changes

    โœจ Enhancements

    • ๐Ÿ”€ The synchronization engine integration with transport has been simplified and enhanced for more reliable behavior under poor network conditions.
    • โž• Added querying support on lastMessage.receivedAt from LYRConversation
    • ๐ŸŽ Performance was improved by offloading processing from the network thread.
    • The receivedAt property for LYRMessage objects sent by the current user is no longer nil. It is now set to the same timestamp as sentAt.
    • Querying against LYRConversation participants now implicitly includes the authenticated user.

    ๐Ÿ› Bug Fixes

    • LYRClient objects will now attempt to reconnect immediately upon losing a connection even if reachability state has not changed.
    • ๐Ÿ”€ An issue where synchronization could become stalled when the app returned from the background has been fixed.
    • ๐Ÿ›  Fixed an issue where metadata values were not validated properly, blocking the use of nested structures.
    • ๐Ÿ›  Fixed an issue where isUnread and hasUnreadMessages did not always update appropriately during synchronization.
    • ๐Ÿ›  Fixed an issue where LYRConversation objects returned via querying had a lastMessage value of nil.
    • ๐Ÿ›  Fixed an issue that could result in database busy errors and crashes during concurrent database transactions.
    • ๐Ÿ›  Fixed an issue where typing indicator received before a conversation was synchronized would result in a crash.
    • ๐Ÿ›  Fixed a regression in querying for participants with certain structures of user identifiers.

    Public API changes

  • v0.9.0 Changes

    ๐Ÿš€ LayerKit v0.9.0 includes numerous feature enhancements and API changes in preparation for the upcoming 1.0 release. The API changes were made to ๐Ÿ“„ make LayerKit more intuitive and prepare for future platform enhancements. These changes are detailed in the LayerKit Transition Guide.

    Public API changes

    • Layer object initializers were changed such that Conversations and Messages must now be initialized through the client instead of directly via the class. This change enables object identifiers to be populated earlier and is part of a larger migration of functionality from the client onto the model objects themselves.
    • ๐Ÿ—„ [LYRConversation conversationWithParticipants:] has been deprecated in favor of [LYRClient conversationWithParticipants:options:error:].
    • ๐Ÿ—„ [LYRMessage messageWithConversation:parts:] has been deprecated in favor of [LYRClient newConversationWithParticipants:options:error:].
    • ๐Ÿ—„ [LYRMessage messageWithConversation:parts:] has been deprecated in favor of [LYRClient newMessageWithConversation:parts:options:error:].
    • Push Notification alert text and sounds can now be assigned at Message initialization time via the options: argument.
    • ๐Ÿ“‡ [LYRClient setMetadata:onObject:] has been deprecated in favor of the LYRMessage options and LYRConversation mutable metadata API's.
    • ๐Ÿ—„ [LYRClient addParticipants:toConversation:error:] has been deprecated in favor of [LYRConversation addParticipants:error:].
    • ๐Ÿšš [LYRClient removeParticipants:fromConversation:error:] has been deprecated in favor of [LYRConversation removeParticipants:error:].
    • ๐Ÿ—„ [LYRClient sendMessage:error:] has been deprecated in favor of [LYRConversation sendMessage:error:].
    • ๐Ÿ—„ [LYRClient markMessageAsRead:error:] has been deprecated in favor of [LYRMessage markAsRead:].
    • ๐Ÿ—„ [LYRClient deleteMessage:mode:error:] has been deprecated in favor of [LYRMessage delete:error:].
    • ๐Ÿ—„ [LYRClient deleteConversation:mode:error:] has been deprecated in favor of [LYRConversation delete:error:].
    • ๐Ÿ—„ [LYRClient sendTypingIndicator:toConversation:] has been deprecated in favor of [LYRConversation sendTypingIndicator:];
    • ๐Ÿ—„ [LYRClient conversationForIdentifier:] has been deprecated, use querying support to fetch conversations based on identifier.
    • ๐Ÿ—„ [LYRClient conversationsForIdentifiers:] has been deprecated, use querying support to fetch conversations based on a set of identifiers.
    • ๐Ÿ—„ [LYRClient conversationsForParticipants:] has been deprecated, use querying support to fetch conversations based on a set of participants.
    • ๐Ÿ—„ [LYRClient messagesForIdentifiers:] has been deprecated, use querying support to fetch messages based on a given set of identifiers.
    • ๐Ÿ—„ [LYRClient messagesForConversation:] has been deprecated, use querying support to fetch messages for specific conversation.
    • ๐Ÿ—„ [LYRClient countOfConversationsWithUnreadMessages:] has been deprecated, use querying support to count all unread messages.
    • ๐Ÿ—„ [LYRClient countOfUnreadMessagesInConversation:] has been deprecated, use querying support to count unread messages for given conversation.
    • LYRMessage and LYRConversation objects now use a consistent identifier scheme that won't change.
    • ๐Ÿ—„ LYRMessagePushNotificationAlertMessageKey key constant has been deprecated in favor of LYRMessageOptionsPushNotificationAlertKey.
    • ๐Ÿ—„ LYRMessagePushNotificationSoundNameKey key constant has been deprecated in favor of LYRMessageOptionsPushNotificationSoundNameKey.

    โœจ Enhancements

    • ๐Ÿ“š LYRConversation now supports synchronized, mutable developer assigned metadata. Metadata is synchronized across participants on a per-key basis using last writer wins semantics. See the header documentation on LYRConversation for details of the API.
    • โž• Added querying for conversations and messages, see LYRQuery and LYRPredicate.
    • โž• Added query controller that can be used to drive the UI, see LYRQueryController.

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Fixes an issue where the LYRClient might crash when detecting a remotely deleted conversation leaving the client with unsent changes that fail to get reconciled.
    • ๐Ÿ›  Fixed an issue where push device tokens would not be updated after a connection was established in some circumstances.