🙌 Improvements
- KeyBackups: Add build flag for symmetric backup (#1567)
✨ Features
- MXKeyBackup: Add support for symmetric key backups. (#1542)
- CryptoSDK: Outgoing SAS User Verification Flow (#6443)
🙌 Improvements
- App Layout: Increased store version to force clear cache (#6616)
🧱 Build
- Xcode project(s) updated via Xcode recommended setting (#1543)
- MXLog: Ensure MXLogLevel.none works if it is set after another log level has already been configured. (#1550)
📄 Documentation
- Update README for correct Swift usage. (#1552)
Others
🐛 Bugfixes
- MXSpaceService: Fix a crash on Synapse 1.65 following changes to the /hierarchy API. (#6547)
🙌 Improvements
- CI: Enable integration tests on GitHub actions (#1537)
- App Layout: Added breadcrumbs data fetcher and updated room summary data type to reflect new needs (#6407)
- App Layout: added MXSpace.minimumPowerLevelForAddingRoom() and MXSpaceService.rootSpaces (#6410)
🐛 Bugfixes
- MXRestClient: Send an empty dictionary when calling /join to be spec compliant. (#6481)
- App Layout: exclude room summaries without notifications from unread list (#6511)
🙌 Improvements
- MXRoom: Support reply to beacon info event. (#6423)
- MXBeaconAggregations: Handle beacon info redaction. (#6470)
🐛 Bugfixes
- Fix formatted_body content for unformatted events (#6446)
🧱 Build
- Disable nightly tests for now as they're always timing out. (#1523)
Others
- Reduce project warnings (#1527)
- Crypto: Convert verification request and transaction to protocols (#1528)
🐛 Bugfixes
- Fix JingleCallStack UI threading crashes (#6415)
✨ Features
- Analytics: Track non-fatal issues if consent provided (#1503)
- Crypto: Integrate Rust-based OlmMachine to encrypt / decrypt messages (#6357)
🙌 Improvements
- Include ID server access token when making a 3pid invite (and creating a room). (#6385)
🐛 Bugfixes
- MXiOSAudioOutputRouter: fixed issue that prevents the system to properly switch from built-in to bluetooth output. (#5368)
- Fix MXCall answer not being sent to server in some cases (#6359)
Others
- Integration tests should wait until the room is ready (#1516)
- Analytics: Log errors with details in analytics (#1517)
- Secret Storage: Detect multiple valid SSSS keys (#4569)
✨ Features
- Add missing "user_busy" MXCallHangupEvent (#1342)
🐛 Bugfixes
- Handle empty pagination end token on timeline end reached (#6347)
- Drop support for iOS 10 and 32-bit architectures (#1501)
🧱 Build
Others
- Crypto: Subclass MXCrypto to enable work-in-progress Rust sdk (#1496)
- MXBackgroundSyncService - Expose separate method for fetching a particular room's read marker event without causing extra syncs. (#1500)
- Crypto: Integrate new Rust-based MatrixSDKCrypto framework for DEBUG builds (#1501)
🐛 Bugfixes
- Fix a crash on start if the user has a very large number of unread events in a room (#1490)
- Prevent invalid room names on member count underflows. (#6227)
- Location sharing: Fix geo URI parsing with altitude component. (#6247)
- MXRestClient: Add
logoutDevices
parameter tochangePassword
method. (#6175) - Mark MXRestClient init as
required
for mocking. (#6179)
🐛 Bugfixes
- Room state: Reload room state if detected empty on disk (#1483)
- Remove unwanted parts from replies new_content body/formatted_body (#3517)
- MXBackgroundStore: Avoid clearing file store if event stream token is missing. (#5924)
- MXRestClient: limit the query length to 2048 for joinRoom (#6224)
- Bump realm to 10.27.0 to fix crypto performance issue. (#6239)
🚧 In development 🚧
- Location sharing: Authorize only one live beacon info per member and per room. (#6100)
Others
- Crypto: Add more logs when encrypting messages (#1476)
🐛 Bugfixes
- MXSession: Recreate room summaries when detected missing. (#5924)
- Fixed crashes on invalid casting of MXUser to MXMyUser causing unrecognized selectors on the mxSession property. (#6187)
- MXCoreDataRoomSummaryStore: Make removing a room summary synchronous. (#6218)
- MXTools: generateTransactionId no longer returns an optional in Swift. (#1477)
🚧 In development 🚧
- Location sharing: Persist beacon info summaries to disk. (#6199)
Others
- MXFileStore: Add extra logs when saving and loading room state (#1478)
- MXBackgroundSyncServiceTests: Add tests for outdated gappy syncs. (#6142)
No significant changes.
✨ Features
- Add
io.element.video
room type. (#6149)
🙌 Improvements
- Rooms: support for attributedPartialTextMessage storage (#3526)
🚧 In development 🚧
- MXBeaconInfoSummary: Add room id and support device id update after start location sharing. (#5722)
Others
- Update check for server-side threads support to match spec. (#1460)
🙌 Improvements
- Crypto: Share Megolm session keys when inviting a new user (#4947)
- Authentication: Add MXUsernameAvailability and isUsernameAvailable method on MXRestClient. (#5648)
🐛 Bugfixes
- MXSpaceService: added method firstRootAncestorForRoom (#5965)
- MXRoom: Update room summary after removing/refreshing unsent messages. (#6040)
🚧 In development 🚧
- Location sharing: Handle live location beacon event. Handle beacon info + beacon data aggregation. (#6021)
- Location sharing: Handle stop live location sharing. (#6070)
- Location sharing: MXBeaconInfoSummary add isActive property. (#6113)
🙌 Improvements
- Location sharing: Handle live location sharing start event. (#5903)
- Add a preferred presence property to MXSession (#5995)
- Pods: Upgrade JitsiMeetSDK to 5.0.2 and re-enable building for ARM64 simulator. (#6018)
🐛 Bugfixes
- MatrixSDK: Fix some crashes after 1.8.10. (#6023)
Others
- Fix some warnings. (#1440)
🙌 Improvements
- Room: Return room identifier and known servers when resolving alias (#4858)
- MXRestClient: Use the stable hierarchy endpoint from MSC2946 (#5144)
- MXPublicRoom: added implementation for JSONDictionary (#5953)
🐛 Bugfixes
- MXEventListener/MXRoomSummary: Fix retain cycles (#5058)
- Sync Spaces order with web (#5134)
- VoIP: Recreate CXProvider if a call cannot be hung up (#5189)
- MXThreadingService: Apply edits on thread root and latest events of a thread list. (#5845)
- MXThread: Fix redacted events & fix undecrypted events. (#5877)
- Room: Do not commit to file store after typing a single character (#5906)
- Move
handleRoomKeyEvent
logic back toMXSession
. (#5938) - MXSuggestedRoomListDataFetcher: Spaces shouldn't be displayed as suggested rooms (#5978)
- Location sharing: Add new event asset type for pin drop location sharing (#5858)
🙌 Improvements
- MXRestClient: Use the stable hierarchy endpoint from MSC2946 (#5144)
🐛 Bugfixes
- Sync Spaces order with web (#5134)
✨ Features
- MXSpace: added canAddRoom() method (#5230)
- MXRoomAliasAvailabilityChecker: added extractLocalAliasPart() (#5233)
🙌 Improvements
- Space creation: Added home server capabilities, room alias validator, restricted join rule, refined space related API, and added tests (#5224)
- Added room upgrade API call and the ability to (un)suggest a room for a space (#5231)
- MXSpaceService: added
spaceSummaries
property (#5401) - Threads: Fix deleted thread root & decrypt thread list. (#5441)
- Threads: Replace property for in-thread replies. (#5704)
- MXRoomEventFilter: Update property names for relation types and senders. (#5705)
- MXThreadingService: Use versions instead of capabilities to check threads server support. (#5744)
- MXEventContentRelatesTo: Update reply fallback property name and reverse the logic. (#5790)
- Threads: Update all properties to stable values. (#5791)
- Room: API to ignore the sender of a room invite before the room is joined (#5807)
- MXRoom: Do not try to guess threadId for replies, get that as a parameter. (#5829)
- MXThreadingService: Fix number of replies & notification/highlight counts for threads. (#5843)
🐛 Bugfixes
- MXThreadEventTimeline: Decrypt events fetched from server. (#5749)
- MXRoom: Fix retain cycles, in particular between MXRoomOperation and its block. (#5805)
- Timeline: Prevent skipping an item between each pagination batch (#5819)
- Crypto: Distinguish between original and edit message when preventing replay attacks (#5835)
- MXThreadEventTimeline: Fix processing order of thread events & fix empty thread screen issue. (#5840)
- Timeline: Paginated events always show the most recent edit (#5848)
- MXFileStore: Log when filters cannot be saved or loaded (#5873)
🙌 Improvements
- Room: API to ignore the sender of a room invite before the room is joined (#5807)
🙌 Improvements
- Room data filters: strict matches support (#1379)
- Analytics: Add event composition tracking and isSpace for joined room events. (#5365)
- MXEvent+Extensions: Do not highlight any event that the current user sent. (#5552)
🐛 Bugfixes
- Room: fix crash on members count not being always properly set (#4949)
- MXSuggestedRoomListDataFetcher: hide suggested rooms that a user is already part of (#5276)
- MXFileStore: Do not reuse room files if the room is marked for deletion (#5717)
🙌 Improvements
- MXThreadingService: Add thread creation delegate method. (#5694)
🐛 Bugfixes
- Thread Safety: Replace all objc_sync_enter/exit methods with recursive locks. (#5675)
🙌 Improvements
- Added support for unstable poll prefixes. (#5114)
- Exclude all files and directories from iCloud and iTunes backup (#5498)
- MXSession & MXThreadingService: Implement server capabilities api & implement thread list api according to server capabilities. (#5540)
- MXThreadEventTimeline: Replace context api with relations api. (#5629)
🐛 Bugfixes
- Settings: fix phone number validation through custom URL (#3562)
- MXRoomListData: Consider all properties when comparing room list data. (#5537)
🧱 Build
- Use the --no-rate-limit flag as mentioned in the README (#1352)
🐛 Bugfixes
- Fix e2ee regression introduced by #1358 (#5564)
✨ Features
- Add .well-known parsing for tile server / map style configurations. (#5298)
🙌 Improvements
- Introduce
MXThreadingService
andMXThread
classes. (#5068) - MXThreadingService: Expose threads of a room. (#5092)
- Threads: Include redacted root events into threads. (#5119)
- MXSession: Avoid event/null requests and reprocess bg sync cache if received when processing. (#5426)
- MXRoomListDataFetcherDelegate: Add
totalCountsChanged
parameter to delegate method. (#5448)
🐛 Bugfixes
- 🐛 Protect the spacesPerId variable by a barrier - Fixes Thread 1: EXC_BAD_ACCESS crash that would occur whenever multiple concurrent threads would attempt to mutate spacesPerId at the same time (#1350)
- Fix for display name and avatar shown incorrectly for users that have left the room. (#2827)
- Protect against encryption state loss (#5184)
- MXSpace: fix space invites blocks space graph build (#5432)
- MXCoreDataRoomSummaryStore: Fix main context merges from persistent store. (#5462)
- MXSession: Do not pause the session if a sync fails due to cancellation. (#5509)
- CoreData: Fix fetch requests fetching only specific properties. (#5519)
- MXRestClient & MXRoom: Introduce
threadId
parameters for event sending methods. (#5068)
🧱 Build
- Update Fastfile to use Xcode 13.2 on CI. (#4883)
Others
- Add WIP to towncrier. (#1349)
✨ Features
- MXRoomSummaryStore & MXRoomListDataManager: Implementation with Core Data. (#4384)
- Allow editing poll start events. (#5114)
- Added static location sharing sending and rendering support. (#5298)
🙌 Improvements
- MXCoreDataRoomSummaryStore: Use nested contexts to better manage main context updates. (#5412)
- Only count joined rooms when profiling sync performance. (#5429)
🐛 Bugfixes
- Fixes DTMF(dial tones) during voice calls. (#5375)
- MXCoreDataRoomListDataFetcher: Update fetchRequest if properties changed before fetching the first page. (#5377)
- MXSession: Fix remove room race case. (#5412)
🙌 Improvements
- MXResponse has been frozen for binary compatibility when building as an XCFramework. (#1002)
- MXTaskProfile: Add an MXTaskProfileName enum instead of individual strings for Name and Category. (#5035)
- MXAnalyticsDelegate: The generic methods have been replaced with type safe ones for each event tracked. (#5035)
🙌 Improvements
- Expose missing Jingle headers in umbrella header (#1308)
- MXTools: Add an error parameter to the failure of +convertVideoAssetToMP4:withTargetFileSize:success:failure: (#4749)
🐛 Bugfixes
- Sending blank m.room.encryption on iOS will disable encryption (Security advisory)
Others
- Replace semantic imports with classic ones to enable use of the SDK in Kotlin Multiplatform Mobile projects (#5046)
🐛 Bugfixes
- Fix release 0.20.11 (#5247)
✨ Features
- Moved from /space to /hierarchy API to support pagination (#4893)
- Adds clientPermalinkBaseUrl for a custom permalink base url. (#4981)
- Added poll specific event sending methods, event aggregator and model builder. (#5114)
🐛 Bugfixes
- Initialize imagesCacheLruCache before caching - caching operations would fail silently because cache was not initialized (#1281)
- MXRoom: Fix reply event content for just thread-aware clients. (#5007)
- Add ability to get roomAccountData from MXBackgroundSyncService to fix badge bug from virtual rooms. (#5155)
- Fixed duplicated children ids in MXSpaces (#5181)
- Do not expose headers that should be use privately inside the framework. (#5194)
- Fix for the in-call screen freezing on a new PSTN call. (#5223)
🧱 Build
- Build: Update to Xcode 12.5 in the Fastfile and macOS 11 in the GitHub actions. (#5195)
🙌 Improvements
- Made room list fetch sort and filter options structs. Removed fetch options references from them and made them equatable. Comparing them in the fetch options before refreshing the fetchers. (#4384)
- MXRealmCryptoStore: Reuse background tasks and use new api for remaining perform operations. (#4431)
🐛 Bugfixes
- MXAggregations: Ensure the store is cleared when the file store is cleared. (#3884)
- MXSpaceService: abort graph building when session is closing (#5049)
- Fixed retain cycles between background tasks and themselves, and between the background task expiration handler and the background mode handler. (#5054)
- MXRoomSummaryUpdater: Fix upgraded rooms being marked as visible if the tombstone event comes in as part of a limited sync. (#5080)
- MXRoomListDataFilterOptions: Filter out any cached room previews. (#5083)
- MXRoomListDataSortOptions: Fix room ordering regression. (#5105)
- Fixed fallback key signature validation. (#5120)
- MXSession: Make session resumable from paused state & avoid to-device events catchup request when paused or pause requested. (#5127)
- Room ordering: Improve membership event filtering. (#5150)
🐛 Bugfixes
- MXRoomListDataFilterOptions: Fix predicate for orphaned rooms. (#5031)
🙌 Improvements
- RoomSummaries: Introduce
MXRoomListDataManager
and implementation. (#4384) - MXIdentityService: Add an areAllTermsAgreed property. (#4484)
🐛 Bugfixes
- MXMemoryStore: Add missing synthesize for
areAllIdentityServerTermsAgreed
. (#1264) - Fixed space preview toast is broken if I'm not a member when clicking on a link (#4966)
🐛 Bugfixes
- [MXSPaceService, MXSpaceNotificationCounter] Avoid calling SDK dispatch queue synchroniously (#4999)
🐛 Bugfixes
- fixed crash in
MXSpaceService.prepareData()
(#4979)
🙌 Improvements
- Tests: Improve tests suites execution time by fixing leaked MXSession instances that continued to run in background. (#4875)
- Added dynamism and compile time safety to room name and send reply event localizable strings. (#4899)
- Pods: Update JitsiMeetSDK and Realm. (#4939)
- Start a background task for every Realm transaction. (#4964)
🐛 Bugfixes
- Apply threading model for Spaces and cache space graph (#4898)
- MXRoomSummaryUpdater: Combine ignoreMemberProfileChanges and eventsFilterForMessages into a single property called allowedLastMessageEventTypes. (#4451)
MXSendReplyEventStringsLocalizable
is nowMXSendReplyEventStringLocalizerProtocol
andMXRoomNameStringsLocalizable
is nowMXRoomNameStringLocalizerProtocol
(#4899)
🧱 Build
- Bundler: Update CocoaPods and fastlane. (#4951)
🐛 Bugfixes
- MXSpaceService: Fix a crash due to recursion depth limit (#4919)
🙌 Improvements
🐛 Bugfixes
- MXSpaceService: fixed crash in MXSpaceService.prepareData (#4910)
- MXSession: Make
directRooms
property atomic and copying. (#4911) - MXSpaceNotificationCounter: fixed crash in MXSpaceNotificationCounter.isRoomMentionsOnly. (#4912)
- MXRoom: fixed crash in MXRoom.toSpace() (#4913)
- MXSession: Allow pausing on syncInProgress state. (#4915)
- fixed Spaces still visible after logging in with another account (#4916)
- MXSpaceService: fixed App may not start in 1.6.0 (#4919)
✨ Features
- Implemented Olm fallback key support. (#4406)
- Added room summary API call (#4498)
- Added support to get suggested rooms (#4500)
- Initial yet naive algortihm for building the graph of rooms (#4509)
- Added support for Explore rooms (#4571)
🙌 Improvements
- Add fallback keys to the dehydrated device info and sign it with the MSK. (#4255)
- Cross-signing: Sign the key backup with the MSK. (#4338)
🙌 Improvements
- MXRoomSummary: Introduce
markAllAsReadLocally
method. (#4822)
🐛 Bugfixes
- MXSession: Introduce
pauseable
property and pause the session gracefully when sync request cancelled. (#4834)
✨ Features
- MXRestClient: Add previewForURL method which fetches an MXURLPreview. (#888)
🙌 Improvements
- MXStore: Introduce loadRoomMessages async method to lazy load room messages. (#4382)
- MXStore: Introduce loadReceiptsForRoom async method to lazy load room receipts. (#4383)
- MXTools: Add fileSizeToString function that uses NSByteCountFormatter. (#4479)
- MXFileStore: Synchronize creation of room message, outgoing room messages and room receipts data. (#4788)
🐛 Bugfixes
- MXUser.m: Add a property
latestUpdateTS
to update the user's avatar and displayname only when event.originServerTs > latestUpdateTS. Contributed by Anna. (#1207) - MXSession: Revert state after processing background cache. (#4021)
- Prevent expired verification requests from showing when opening the app. (#4472)
- Don't show personal avatar in rooms when not explicitly set (#4766)
- MXMemoryStore: Fix unexpected room unread count zeroing. (#4796)
- MXCrossSigning.setupWithPassword failure block not called from the main thread. (#4804)
- MXStore:
getEventReceipts
method is now async. MXRoom:getEventReceipts
method is now async. (#4383)
✨ Features
- MxNotificationCenter: For new account notification settings and keywords support, added updatePushRuleActions and addContentRuleWithMatchingRuleIdAndPattern. Also fixed the url encoding on ruleId. (#4467)
🙌 Improvements
- MXSession: Introduce
MXSessionStateProcessingLocalCache
state. Merge local cached sync responses when resuming the session. (#4471) - MXRoom: Added extensible keys to sent file payloads. (#4720)
🙌 Improvements
- MXRoomSummaryUpdater: Add variants of updateSummaryDisplayname and updateSummaryAvatar methods that can exclude specified user IDs. (#4609)
🐛 Bugfixes
- Tests: Fix a crash in various tests from a missing
storeMaxUploadSize
method. (#1175) - MXAggregations: Fixes reactions not being updated from bundled relationships. (#3884)
- MXSession: Fix
fixRoomsSummariesLastMessage
method for last messages and improve it to use a hash not to run every time (#4440) - VoIP: Fix detection of other party when joined the room. (#4664)
- MXRoomState: Fix a crash on
aliases
getter. (#4678) - MXOlmDevice: Fix a crash on
sessionIdsForDevice
method. (#4679)
- SSO: Stable ids for MSC 2858. (#4362)
- MXRestClient: Removed /send_relation to manage reactions as it was never implemented. (#4507)
🧱 Build
- CHANGES.md: Use towncrier to manage the change log. More info in CONTRIBUTING. (#1196, #4393)
📄 Documentation
- Convert CHANGES and CONTRIBUTING to MarkDown. (#4393)
🐛 Bugfix
- MXCryptoStore: Keep current store version after resetting data to avoid dead state on an initial sync (#4594).
- Prevent session pause until reject/hangup event is sent (#4612).
- Only post identity server changed notification if the server actually changed.
- Fix audio routing issues for Bluetooth devices (#4622).
Others
- Separated CI jobs into individual actions
🙌 Improvements
- MXRoomSummary: Cache local unread event count (#4585).
🐛 Bugfix
- MXCryptoStore: Use UI background task to make sure that write operations complete (#4579).
🙌 Improvements
- MXTools: Default to 1080p when converting a video (#4478).
- MXEvent: add support for voice messages
- MXRoom: Add support for sending slow motion videos using AVAsset (#4483).
- MXSendReplyEventStringsLocalizable: Added senderSentAVoiceMessage property
🐛 Bugfix
- Fix QR self verification with QR code (#1147)
- VoIP: Check for virtual users on attended call transfers.
- MXBackgroundCryptoStore: Remove read-only Realm and try again if Olm account not found in crypto store (#4534).
- MXSDKOptions: Add videoConversionPresetName to customise video conversion quality.
- MXRoom: Added duration and sample parameters on the sendVoiceMessage method (#4090)
Others
- Fixed a nullability warning and some header warnings.
🙌 Improvements
- MXDehydrationService: Support full rehydration feature (#1117).
- MXSDKOptions: Add wellknownDomainUrl to customise the domain for wellknown (##4489).
- MXSession: Refresh homeserverWellknown on every start.
- MXRoom: Added support for posting
m.image
s with BlurHash (MSC 2448). - VoIP: Implement bridged version for call transfers.
- VoIP: Implement MXiOSAudioOutputRouter.
🐛 Bugfix *
- MXCall:
audioToSpeaker
property removed. UseaudioOutputRouter
instead. - MXCallStackCall:
audioToSpeaker
property removed. Audio routing should be handled high-level.
🙌 Improvements
- MXSDKOptions: Introduce an option to auto-accept room invites.
🐛 Bugfix
- MXSession.homeserverWellknown was no more computed since 0.19.0.
🙌 Improvements
- MXRoomLastMessage: Use MXKeyProvider methods to encrypt/decrypt last message dictionary.
- VoIP: Change hold direction to send-only.
- Encrypted Media: Remove redundant and undocumented mimetype fields from encrypted attachments (#4303).
- MXRecoveryService: Expose checkPrivateKey to validate a private key (#4430).
- VoIP: Use headphones and Bluetooth devices when available for calls.
🐛 Bugfix
- MXSession: Fix app that can fail to resume (#4417).
- MXRealmCryptoStore: Run migration once before opening read-only Realms (#4418).
- VoIP: Handle offers when peer connection is stable (#4421).
- MXEventTimeline: Fix regression on clear cache where the last message of an encrypted room is not encrypted.
- MXBackgroundSyncService: Make credentials public (#3695).
- MXCredentials: Implement equatable & hashable methods (#3695).
- MXRoomSummary:
lastMessageEvent
property removed for performance reasons (#4360). - MXRoomSummary: All properties about lastMessage are moved into
lastMessage
property. - MXSession: Does not compute anymore last events for every room summaries by default. Use -[MXSession eventWithEventId:inRoom:success:failure:] method to load the last event for a room summary.
- MXRoom: Added method for seding voice messages (#4090).
- MXMediaManager: Added
mimeType
param to download encrypted media methods (#4303). - MXEncryptedContentFile:
mimetype
parameter removed (#4303). - MXEncryptedAttachments:
mimetype
parameters removed from encrypt attachment methods (#4303).
🧱 Build
- build.sh: Include debug symbols when building XCFramework
✨ Features
- Spaces: Support Space room type (#4069).
🙌 Improvements
- MXSession: Cache initial sync response until it is fully handled (#4317).
- MXStore: New commit method accepting a completion block.
- MXCrypto: Decrypt events asynchronously and no more on the main thread )(#4306).
- MXSession: Add the decryptEvents method to decypt a bunch of events asynchronously.
- MXSession: Make the eventWithEventId method decrypt the event if needed.
- MXEventTimeline: Add NSCopying implementation so that another pagination can be done on the same set of data.
- MXCrypto: eventDeviceInfo: Do not synchronise anymore the operation with the decryption queue.
- MXRoomSummary: Improve reset resetLastMessage to avoid pagination loop and to limit number of decryptions.
- MXSession: Limit the number of decryptions when processing an initial sync (#4307).
- Adapt sync response models to new sync API (#4309).
- MXKeyBackup: Do not reset the backup if forceRefresh() is called too early.
- Pod: Update Realm to 10.7.6.
- Pod: Update Jitsi to 3.5.0.
- Pod: Update OLMKit to 3.2.4.
- MXRealmCryptoStore: Use Realm instances as read-only in background store (#4352).
- MXLog: centralised logging facility, use everywhere instead of NSLog (#4351).
🐛 Bugfix
- MXRoomSummary: Fix decryption of the last message when it is edited (#4322).
- MXCall: Check remote partyId for select_answer events (#4337).
- MXSession: Fix used initial sync cache.
- MXRoom: MXRoom.outgoingMessages does not decrypt messages anymore. Use MXSession.decryptEvents to get decrypted events.
- MXSession: [MXSession decryptEvent:inTimeline:] is deprecated, use [MXSession decryptEvents:inTimeline:onComplete:] instead.
- MXCrypto: [MXCrypto decryptEvent:inTimeline:] is deprecated, use [MXCrypto decryptEvents:inTimeline:onComplete:] instead.
- MXCrypto: [MXCrypto hasKeysToDecryptEvent:] is now asynchronous.
🙌 Improvements
- MXPushGatewayRestClient: Add timeout param to the HTTP method.
🐛 Bugfix
- MXRoomCreateContent: Fix room type JSON key.
🙌 Improvements
- MXCallKitAdapter: Update incoming calls if answered from application UI.
- MXFileStore: Logs all files when a data corruption is detected (to track element-hq/element-ios/issues/4921).
- MXCallManager: Fix call transfers flow for all types of transfers.
- VoIP: Implement asserted identity for calls: MSC3086 (matrix-org/matrix-spec-proposals/pull/3086).
🐛 Bugfix
- MXTools: Fix bad linkification of matrix alias and URL (#4258).
- MXRoomSummary: Fix roomType property deserialization issue.
- MXCall: Disable call transferee capability & fix call transfer feature check.
- Spaces and room type: Remove all MSC1772 JSON key prefixes and use stable ones.
🧱 Build
- Tests: Use UnitTests suffix for unit tests classes.
- Tests: Cut some existing tests to separate unit tests and integration tests.
- Tests: Create 4 test plans for the macOS target: AllTests, AllTestsWithSanitizers, UnitTests and UnitTestsWithSanitizers.
- GH Actions: Run unit tests on every PR and develop branch update.
- GH Actions: Run integration tests nightly on develop using last Synapse release.
🙌 Improvements
- MXHTTPOperation: Expose the HTTP response (#4206).
- MXRoomPowerLevels: Handle undefined values and add init with default spec values.
- MXRoomCreationParameters: Add roomType and powerLevelContentOverride properties. Add initial state events update method.
- MXResponse: Add convenient uncurry method to convert a Swift method into Objective-C.
- Add MXRoomInitialStateEventBuilder that enables to build initial state events.
🐛 Bugfix
- MXCrypto: Disable optimisation on room members list to make sure we share keys to all (#3807).
🐛 Bugfix
- Notifications: Fix sender display name that can miss (##4222).
🐛 Bugfix
- MXSession: Fix deadlock regression in resume() (#4202).
- MXRoomMembers: Fix wrong view of room members when paginating (#4204).
🙌 Improvements
- Create secret storage with a given private key (#4189).
- MXAsyncTaskQueue: New tool to run asynchronous tasks one at a time.
- MXRestClient: Add the dehydratedDevice() method to get the dehydrated device data (#4194).
🐛 Bugfix
- Notifications: Fix background sync out of memory (element-hq/element-ios#3957).
- Notifications: MXBackgroundService: Keep all cached sync responses until there are processed by MXSession (element-hq/element-ios#4074).
- Remove padding from base64 encoded
iv
value (#4172). - Check for null before changing a user's displayname or avatar URL based on an m.room.member event.
🙌 Improvements
- Support room type as described in MSC1840 (#4050).
- Pods: Update JitsiMeetSDK, OHHTTPStubs, Realm (#4120).
- MXCrypto: Do not load room members in e2e rooms after an initial sync.
- MXRoomSummary: Add enableTrustTracking() to compute and maintain trust value for the given room (#4115).
- VoIP: Virtual rooms implementation.
- MXCrypto: Split network request
/keys/query
into smaller requests (250 users max) (#4123).
🐛 Bugfix
- MXDeviceList: Fix memory leak.
- MXDeviceListOperation: Fix memory leak.
- MXRoomState/MXRoomMembers: Fix memory leak and copying.
- MXKeyBackup: Add sanity checks to avoid crashes (#4113).
- MXTools: Avoid releasing null pointer to fix crash on M1 simulator (#4140)
🧱 Build
- build.sh: Support passing CFBundleShortVersionString and CFBundleVersion when building an xcframework.
- build.sh: When building an xcframework, zip the binary ready for distribution.
Others
- GitHub Actions: Run pod lib lint
🐛 Bugfix
- VoIP: Fix too quick call answer failure (#4109).
- Crypto: Duplicate message index after using the share extension (element-hq/element-ios#4104)
Others
- Ignore event editors other than the original sender.
🐛 Bugfix
- MXCrossSigning: Fix setupWithPassword method crash when a grace period is enabled (Fix element-hq/element-ios#4099).
🐛 Bugfix
- Fix connection state & ice connection failures (#4039).
🙌 Improvements
- MXRoomState: Add creator user id property.
- MXRoomSummary: Add creator user id property.
- MXCrypto: Encrypt cached e2ee data using an external pickle key (element-hq/element-ios#3867).
- Crypto: Upgrade OLMKit(3.2.2).
🐛 Bugfix
- Fix calls from my own users (#4031).
🧱 Build
- build.sh: Add xcframework argument to build a universal MatrixSDK.xcframework
- MatrixSDKTests-macOS: Remove tests from macOS profile and archive builds to match iOS.
🙌 Improvements
- MXCredentials: Expose additional server login response data (#4024).
🐛 Bugfix
🙌 Improvements
- Pods: Update JitsiMeetSDK to 3.1.0.
- Send VoIP analytics events (#3855).
- Add hold support for CallKit calls (#3834).
- Fix video call with web (#3862).
- VoIP: Call transfers initiation (#3872).
- VoIP: DTMF support in calls (#3929).
🐛 Bugfix
- MXRoomSummary: directUserId may be missing (null) for a direct chat if it was joined on another device.
Others
- README: Fix a couple of typos and improve consistency of the README.
🙌 Improvements
- MXMemory: New utility class to track memory usage.
- MXRealmCryptoStore: Compact Realm DB only once, at the first usage.
- MXLoginSSOIdentityProvider: Add new
brand
field as described in MSC2858 (#3980). - MXSession: Make
handleBackgroundSyncCacheIfRequiredWithCompletion
method public (#3986). - MXLogger: Remove log files that are no more part of the rotation.
- MXLogger: Add an option to limit logs size (##3903).
- MXRestClient: Handle grace period in
authSessionForRequestWithMethod
.
🐛 Bugfix
- Background Sync: Use autoreleasepool to limit RAM usage (#3957).
- Background Sync: Do not compact Realm DB from background process.
- MX3PidAddManager: Use a non empty client_secret to discover /account/3pid/add flows (#3966).
- VoIP: Fix camera indicator when video call answered elsewhere (#3971).
🙌 Improvements
- MXRealmCryptoStore: New implementation of deleteStoreWithCredentials that does not need to open the realm DB.
- MXRealmCryptoStore: store chain index of shared outbound group sessions to improve re-share session keys
🐛 Bugfix
- MXBackgroundSyncService: Clear the bg sync crypto db if needed (#3956).
- MXCrypto: Add a workaround when the megolm key is not shared to all members (#3807).
🐛 Bugfix
- MXEvent: Fix a regression on edits and replies in e2ee rooms (#3944).
🐛 Bugfix
- Avoid calling background task expiration handlers in app extensions (#3935).
🙌 Improvements
- MXCrypto: Store megolm outbound session to improve send time of first message after app launch (##3904).
- MXUIKitApplicationStateService: Add this service to track UIKit application state.
🐛 Bugfix
- MXBackgroundSyncService: Fix
m.buddy
to-device event crashes (#3889). - MXBackgroundSyncService: Fix app deadlock created between the app process and the notification service extension process (#3906).
- MXUIKitBackgroundTask: Avoid thread switching when creating a background task to keep threading model (#3917).
- MXLoginSSOFlow: Use unstable identity providers field while the MSC2858 is not approved.
🐛 Bugfix
- MXUIKitBackgroundTask: Handle invalid identifier case, introduce a threshold for background time remaining, set expiration handler in initAndStart.
✨ Features
- Added MXKeyProvider to enable data encryption using keys given by client application (#3866)
🙌 Improvements
- MXTaggedEvents: Expose "m.tagged_events" according to MSC2437.
- Login flow: Add MXLoginSSOFlow to support multiple SSO Identity Providers (MSC2858) (#3846).
🐛 Bugfix
- MXRestClient: Fix the format of the request body when querying device keys for users (element-hq/element-ios#3539).
- MXRoomSummary: Fix crash when decoding lastMessageData (#3879).
✨ Features
- Added MXAes encryption helper class (#3833).
🙌 Improvements
- Pods: Update JitsiMeetSDK to 2.11.0 to be able to build using Xcode 12.2 (#3808).
- Pods: Update Realm to 10.1.4 to be able to
pod lib lint
using Xcode 12.2 (#3808).
🐛 Bugfix
- MXSession: Fix a race conditions that prevented MXSession from actually being paused.
- MXSession: Make sure the resume method call its completion callback.
- MXRoomSummary: Add a property to indicate room membership transition state.
🙌 Improvements
- MXCrypto: Introduce MXCryptoVersion and MXCryptoMigration to manage logical migration between MXCrypto module updates.
🐛 Bugfix
- MXOlmDevice: Make usage of libolm data process-safe (vector-im/element-ios/3817).
- MXCrypto: Use MXCryptoMigration to purge all one time keys because some may be bad (vector-im/element-ios/3818).
🐛 Bugfix
- Podspec: Fix arm64 simulator issue with JitsiMeetSDK.
- Realm: Stick on 10.1.2 because the CI cannot build.
🐛 Bugfix *
- Update Realm to 10.2.1 and CocoaPods to 1.10.0.
- CocoaPods 1.10.0 is mandatory.
🙌 Improvements
- MXAnalyticsDelegate: Make it fully agnostic on tracked data.
- MXRealmCryptoStore: Compact DB files before getting out of memory error (vector-im/element-ios/3792).
- Tools: Add MXProfiler to track some performance.
🐛 Bugfix
- MXSession: Fix log for next stream token.
- MXThrottler: Dispatch the block on the correct queue. This will prevent unexpected loops (vector-im/element-ios/3778).
- Update JitsiMeetSDK to 2.10.2 (vector-im/element-ios/3712).
- Xcode 12 is now mandatory for using the JingleCallStack sub pod.
🙌 Improvements
- Update GZIP to 1.3.0 (vector-im/element-ios/3570).
- Update Realm to 5.4.8 (vector-im/element-ios/3570).
- Update JitsiMeetSDK to 2.10.0 (vector-im/element-ios/3570).
- Introduce MXBackgroundSyncService and helper classes (#3579).
🐛 Bugfix *
- SwiftSupport subspec removed. Swift is default now.
🙌 Improvements
- MXCrossSigning: Detect when cross-signing keys have been reset and send MXCrossSigningDidChangeCrossSigningKeysNotification.
- MXSession: Introduce handleSyncResponse method to process sync responses from out of the session (#3579).
- MXJSONModels: Implement JSONDictionary methods for MXSyncResponse and inner classes (#3579).
🐛 Bugfix
- Tests: Fix testMXDeviceListDidUpdateUsersDevicesNotification.
- MXCrossSigning: Trust cross-signing because we locally trust the device that created it.
🐛 Bugfix
- Fix nonstring msgtyped room messages, by removing msgtype from the wire and prev contents.
🙌 Improvements
- MXCrypto: Add hasKeysToDecryptEvent method.
🐛 Bugfix
- MXCrypto: Reset OTKs when some IDs are already used (element-hq/element-ios#3721).
- MXCrypto: Send MXCrossSigningMyUserDidSignInOnNewDeviceNotification and MXDeviceListDidUpdateUsersDevicesNotification on the main thread.
- MXCrossSigning: Do not send MXCrossSigningMyUserDidSignInOnNewDeviceNotification again if the device has been verified from another thread.
Features: *
Improvements: *
Bugfix:
- MXBase64Tools: Make sure the SDK decode padded and unpadded base64 strings like other platforms (element-hq/element-ios/issues/3667).
- SSSS: Use unpadded base64 for secrets data (element-hq/element-ios/issues/3669).
- MXSession: Fix
refreshHomeserverWellknown
method not reading Well-Known from the homeserver domain (#3653).
API Change: *
Translations: *
Others: *
Build: *
Test: *
Features: *
Improvements:
- MXPushData: Implement JSONDictionary (element-hq/element-ios/issues/3577).
- MXFileStore: Make loadMetaData more robust.
Bugfix: *
API Change: *
Translations: *
Others: *
Build: *
Test: *
Features: *
Improvements: *
Bugfix:
- MXCredentials: Try to guess homeserver in credentials when not provided in wellknown (#3448).
API Change: *
Translations: *
Others: *
Build: *
Test: *
Features: *
Improvements:
- Introduce handleCallEvent on MXCallManager.
Bugfix:
- Some room members count are wrong after clearing the cache
API Change: *
Translations: *
Others: *
Build: *
Test: *
Features: *
Improvements:
- Introduce HTTPAdditionalHeaders in MXSDKOptions.
Bugfix: *
API Change: *
Translations: *
Others: *
Build: *
Test: *
Features:
- Introduce MXPushGatewayRestClient (part of element-hq/element-ios#3452).
Improvements: *
Bugfix: *
API Change:
- Drop SwiftMatrixSDK (element-hq/element-ios#3518).
Translations: *
Others: *
Build: *
Test: *
Features: *
Improvements: *
Bugfix: *
API Change: *
Translations: *
Others: *
Build: *
Test:
- Fix "fastlane ios test" and generate html report.
- Make tests crash instantly if no local synapse is running.
- Do not use anymore NSAssert in tests.
Features: *
Improvements: *
Bugfix: *
API Change: *
Translations: *
Others: *
Build: *
Test: *
================================================
Improvements:
- MXSession: Log next sync token.
Bug fix:
- MXRoom: Reply: Use formatted body only if the message content format is known.
- MXRoom: Reply: Avoid nested mx-reply tags.
================================================
Bug fix:
- MXCreateRoomReponse: Remove undocumented roomAlias property (element-hq/element-ios/issues/3300).
- MXPushRuleSenderNotificationPermissionConditionChecker & MXPushRuleRoomMemberCountConditionChecker: Remove redundant room check (element-hq/element-ios/issues/3354).
- MXSDKOptions: Introduce enableKeyBackupWhenStartingMXCrypto option (element-hq/element-ios/issues/3371).
================================================
Improvements:
- MXCrypto: Only create one olm session at a time per device (element-hq/element-ios/issues/2331).
- MXCrossSigning: Add the bootstrapWithAuthParams method.
- MXRecoveryService: Create this service to manage keys we want to store in SSSS.
- MXRecoveryService: Add deleteRecovery.
- MXRecoveryService: Add options to create and delete key backup automatically (element-hq/element-ios/issues/3361).
- MXSecretStorage: Add options to remove secrets and SSSS.
- MXWellKnown: Add JSONDictionary implementation to return original and extended data.
- MXCrossSigning: Gossip the master key (element-hq/element-ios/issues/3346).
- MXRestClient: Add authSessionForRequestWithMethod to get an auth session for any requests.
Bug fix:
- MXSecretShareManager: Fix crash in cancelRequestWithRequestId (element-hq/element-ios/issues/3272).
- MXIdentityService: Fix crash in handleHTTPClientError (element-hq/element-ios/issues/3273).
- MXSession: Add ignoreSessionState to backgroundSync method.
- MXDeviceList: Fix crash in refreshOutdatedDeviceLists (element-hq/element-ios/issues/3118).
- MXDeviceListOperationsPool: Fix current device verification status put in MXDeviceUnknown instead of MXDeviceVerified (element-hq/element-ios/issues/3343).
API break:
- MXCrossSigning: Removed MXCrossSigningStateCanCrossSignAsynchronously.
================================================
Improvements:
- MXSession: Update account data as soon as the endpoint returns.
- MXSecretStorage: Add this class to support SSSS ([MSC1946(]matrix-org/matrix-spec-proposals#1946).
- SAS verification: Support new key agreement.
- MatrixSDK/JingleCallStack: Update Jitsi Meet dependency to ~> 2.8.1 and upgrade the minimal iOS version to 11.0 because the Jitsi Meet framework requires it.
- MXCallAudioSessionConfigurator: Add
configureAudioSessionAfterCallEnds
method. - MXCallKitAdapter: Move incoming audio configuration in
performAnswerCallAction
as recommended. Handle audio session configuration after call ends.
Bug fix:
- MXJingleCallAudioSessionConfigurator: Handle RTCAudioSession manually, enable audio when needed. Fix outgoing audio issue after consecutive incoming calls.
================================================
Improvements:
- Minimal version for iOS is now 9.0.
- Pod: Update AFNetworking version (#793).
- Pod: Update Realm and OHTTPStubs.
================================================
Improvements:
- MXCrypto: Allow to verify a device again to request private keys again from it.
- Secrets: Validate received private keys for cross-signing and key backup before using them (element-hq/element-ios/issues/3201).
================================================
Improvements:
- Cross-signing: Make key gossip requests when the other device sent m.key.verification.done (element-hq/element-ios/issues/3163).
Bug fix:
- MXEventTimeline: Fix crash in paginate:.
- MXSession: Fix crash in runNextDirectRoomOperation.
Doc fix:
- Update the CONTRIBUTING.rst to point to correct file.
================================================
Improvements:
- MXHTTPClient: Log HTTP requests methods.
- MXCrypto: Make trustLevelSummaryForUserIds async (element-hq/element-ios/issues/3126).
- MXJingleCallAudioSessionConfigurator: Remove workaround since it is no longer needed (PR #815).
Bug fix:
- Fix race condition in MXSecretShareManager (element-hq/element-ios/issues/3123).
- Too much MXDeviceInfoTrustLevelDidChangeNotification and MXCrossSigningInfoTrustLevelDidChangeNotification (element-hq/element-ios/issues/3121).
- VoiP: Fix remote ice candidates being added before remote description is setup (element-hq/element-ios/issues/1784).
- MXDeviceListOperationsPool: Post MXDeviceListDidUpdateUsersDevicesNotification notification only for new changes never seen before (element-hq/element-ios/issues/3120).
- MXIdentityService: Fix registration by email and all IS services by fixing Open Id token.
API break:
- MXCrypto: trustLevelSummaryForUserIds: is now async.
================================================
Improvements:
- Cross-Signing: Add a new module, MXCrossSigning, to handle device cross-signing (element-hq/element-ios/issues/2890).
- Verification by DM: Support QR code (element-hq/element-ios/issues/2921).
- MXCrypto: Change the threading model to make [MXCrypto decryptEvent:] less blocking.
- MXCrypto: Restart broken Olm sessions (MSC1719) (element-hq/element-ios/issues/2129).
- MXCrypto: Expose devicesForUser.
- MXCrypto: the
setDeviceVerification
method now downloads all user's devices if the device is not yet known. - MXCrypto: Add the option to disable sending key share requests (
[MXCrypto setOutgoingKeyRequestsEnabled:]
). - MXRestClient: Use r0 APIs for crypto endpoints (PR #826).
- MXDeviceList: Post
MXDeviceListDidUpdateUsersDevicesNotification
notification when users devices list are updated. - MXSession: Add credentials, myUserId and myDeviceId shorcuts.
- MXSession: Add createRoomWithParameters with a MXRoomCreationParameters model class.
- MXRoom: Add a method to retrieve trusted members count in an encrypted room.
- MXRoomCreationParameters: Support the initial_state parameter and allow e2e on room creation (element-hq/element-ios/issues/2943).
- MXRoomSummary: Add the trust property to indicate trust in other users and devices in the room (element-hq/element-ios/issues/2906).
- Aggregations: Implement m.reference aggregations, aka thread (MSC1849).
- MXStore: Add a method to get related events for a specific event.
- MXPublicRoom: Add canonical alias property.
- MXLogger: Add a parameter to indicate the number of log files.
- MXThrottler: Add this tool class to throttle actions.
- Make enums conform to
Equatable
/Hashable
where applicable.
Bug fix:
- MXEventType: Fix Swift refinement.
- MXCrypto: Fix users keys download that can fail in some condition
- MXCryptoStore does not store device.algorithm (element-hq/element-ios#2896).
API break:
- MXCrypto: Rename MXDeviceVerificationManager to MXKeyVerificationManager.
- MXCrypto: the
downloadKeys
method now returns users cross-signing keys. - MXDeviceInfo: the
verified
property has been replaced bytrustLevel
. - MXSession & MXRestClient: the
createRoom
method with a long list of parameters has been replaced bycreateRoomWithParameters
.
===============================================
Improvements:
- Add macOS target with unit tests.
Bug fix:
- MXCallAudioSessionConfigurator: Fix compilation issue with macOS.
- MXRoomSummary: Fix potential crash when
_lastMessageOthers
is null.
API break:
- MXCallAudioSessionConfigurator: Now unavailable for macOS.
===============================================
Improvements:
- Well-known: Expose "m.integrations" according to MSC1957 (element-hq/element-ios#2815).
- MXSession: Expose and store homeserverWellknown.
- SwiftMatrixSDK: Add missing start(withSyncFilter:) refinement to MXSession.swift.
Bug fix:
- MXIdentityServerRestClient: Match registration endpoint to the IS r0.3.0 spec (element-hq/element-ios#2824).
===============================================
Improvements:
- MX3PidAddManager: Add User-Interactive Auth to /account/3pid/add (element-hq/element-ios#2744).
- MXSession: On resume, make the first /sync request trigger earlier (element-hq/element-ios#2793).
- MXCrypto: Do not fail to decrypt when there is nothing to decrypt (redacted events).
Bug fix:
- Room members who left are listed with the actual members (element-hq/element-ios#2737).
- MX3PidAddManager: Add User-Interactive Auth to /account/3pid/add (element-hq/element-ios#2744).
- MXHTTPOperation: Make urlResponseFromError return the url response in case of MXError.
- MXHTTPOperation: Fix a crash in
-mutateTo:
method when operation parameter is nil. - VoIP: Fix regression when using a TURN server (element-hq/element-ios#2796).
API break:
- MXBackgroundModeHandler: Update interface and now use a single method that return a MXBackgroundTask.
===============================================
Improvements:
- MXServiceTerms: A class to support MSC2140 (Terms of Service API) (element-hq/element-ios#2600).
- MXRestClient: Remove identity server URL fallback to homeserver one's when there is no identity server configured.
- MXRestClient: Add new APIs from MSC2290 (matrix-org/matrix-spec-proposals/pull/2290).
- MXHTTPClient: Improve M_LIMIT_EXCEEDED error handling: Do not wait to try again if the mentioned delay is too long.
- MXEventTimeline: The roomEventFilter property is now writable (element-hq/element-ios#2615).
- VoIP: Make call start if there is no STUN server.
- MXMatrixVersions: Add doesServerRequireIdentityServerParam and doesServerAcceptIdentityAccessToken properties.
- MXMatrixVersions: Support r0.6.0. Add doesServerSupportSeparateAddAndBind (element-hq/element-ios#2718).
- Create MXIdentityServerRestClient and MXIdentityService to manage identity server requests (element-hq/element-ios#2647).
- MXIdentityService: Support identity server v2 API. Handle identity server v2 API authentification and use the hashed v2 lookup API for 3PIDs (element-hq/element-ios#2603 and /element-hq/element-ios#2652).
- MXHTTPClient: Add access token renewal plus request retry mechanism.
- MXHTTPClient: Do not retry requests if the host is not valid.
- MXAutoDiscovery: Add initWithUrl contructor.
- MX3PidAddManager: New class to handle add 3pids to HS and to bind to IS.
- Privacy: Store Identity Server in Account Data (MSC2230)(element-hq/element-ios#2665).
- Privacy: Lowercase emails during IS lookup calls (element-hq/element-ios#2696).
- Privacy: MXRestClient: Use
id_access_token
in CS API when required (element-hq/element-ios#2704). - Privacy: Sending Third-Party Request Tokens via the Homeserver (MSC2078).
API break:
- MXRestClient: Remove identity server requests. Now MXIdentityService is used to perform identity server requests.
- MXRestClient: requestTokenForPhoneNumber returns an additional optional parameter (
submitUrl
).
Bug Fix:
- Send kMXSessionCryptoDidCorruptDataNotification from the main thread.
===============================================
Improvements:
- MXError: Expose httpResponse.
- Soft logout: Handle new CS API error code (element-hq/element-ios/issues/2584).
- MXRoomCreateContent: Add missing fields
room_version
andm.federate
(Note:creator
field becomes optional (because of MSC2175)). - Logs: Remove MXJSONModelSet warnings for MXRoomMemberEventContent and MXGroupProfile.
- Aggregations: Expose reaction history API.
Bug Fix:
- Crypto: Fix a race condition that prevented message from being sent (element-hq/element-ios/issues/2541).
- MXRoom: storeLocalReceipt: Add a sanity check to avoid crash.
===============================================
Improvements:
- MXHTTPClient: support multiple SSL pinning modes (none/public key/certificate)
- MXHTTPClient: Enable the certificate pinning mode by default as soon as some certificates are present in the application bundle.
- MXHTTPClient: Add a new notification name
kMXHTTPClientMatrixErrorNotification
posted on each Matrix error. - Join Room: Support via parameters to better handle federation (element-hq/element-ios/issues/2547).
- MXEvent: Create a MXEventUnsignedData model for
MXEvent.unsignedData
. - MXEvent: Add relatesTo property.
- Aggregations: Create MXSession.MXAggregations to manage Matrix aggregations API.
- Add the Matrix errors related to the password policy.
- SwiftMatrixSDK: Migrate to Swift 5.0.
- VoIP: Stop falling back to Google for STUN (element-hq/element-ios/issues/2532).
- Storage: Isolate our realm DBs to avoid migration due to change in another realm.
- MXRoom: sendFile: Use the original file name by default.
- Push: MXRestClient: Add a method to get all pushers.
- MXRoomSummary: Send an update when the event id of a local echo changes.
- MXRoomSummary: Manage edits (element-hq/element-ios/issues/2583).
Bug Fix:
- MXMediaLoader: Disable trusting the built-in anchors certificates when the certificate pinning is enabled.
- Crypto: Device Verification: Name for 🔒 is "Lock" (element-hq/element-ios/issues/2526).
API break:
- MXEvent: unsignedData is now of type MXEventUnsignedData.
- MXRestClient: Remove the joinRoom method with least parameters.
- MXSession, MXRestClient: Add viaServers parameters to all joinRoom methods.
===============================================
Improvements:
- Crypto: Handle partially-shared sessions better (element-hq/element-ios/issues/2320).
- Crypto: Support Interaction Device Verification (element-hq/element-ios/issues/2322).
- MXSession: add a global notification posted when the account data are updated from the homeserver.
- VoIP: Use WebRTC framework included in Jitsi Meet SDK (element-hq/element-ios/issues/1483).
Bug Fix:
- MXRoomSummaryUpdater: Fix
MXRoomSummary.hiddenFromUser
property not being saved when associated room become tombstoned (element-hq/element-ios/issues/2148). - MXFileStore not loaded with 0 rooms, thanks to @asydorov (PR #647).
===============================================
Bug Fix:
- MXRestClient: Fix file upload with filename containing whitespace (PR #645).
===============================================
Improvements:
- Maintenance: Update cocopoads and pods. Automatic update to Swift4.2.
- MXCredentials: Create a new data model for it, separated from the CS API response data model (new MXLoginResponse class).
- MXAutoDiscovery: New class to manage .well-known data (element-hq/element-ios/issues/2117).
- Login: Handle well-known data in the login response - MSC1730 (element-hq/element-ios/issues/2298).
- Login: Add kMXLoginFlowTypeCAS & kMXLoginFlowTypeSSO.
- MXRestClient: Expose acceptableContentTypes.
- MXHTTPOperation: Add urlResponseFromError:, a tool to retrieve the original NSHTTPURLResponse object.
Bug Fix:
- Crypto: Fix crash in MXKeyBackup (vector-im/riot-ios/issues/#2281).
- Escape room v3 event ids in permalinks (element-hq/element-ios/issues/2277).
===============================================
Improvements:
- MXRestClient: Update CS API call to support event ids hashes in room version 3 (element-hq/element-ios#2194).
- MXRoom: Add a sendAudioFile API to send file using msgType "m.audio", thanks to N-Pex (PR #616).
- MXCrypto: Add key backup passphrase support (element-hq/element-ios#2127).
- MXCrypto: Key backup: Ignore all whitespaces in recovery key (element-hq/element-ios#2194).
- MXJSONModel: Use instancetype as return type of
modelFromJSON
initializer. - MXKeyBackup: Add MXKeyBackupStateNotTrusted state.
- MXKeyBackup: Do not reset MXKeyBackup.keyBackupVersion in error states.
- MXKeyBackup: Implement the true deleteKeyBackupVersion Client-Server API.
- MXKeyBackup: Declare backup trust using new
PUT /room_keys/version/{version}
API (element-hq/element-ios/issues/2223). - Crypto: Cancel share request on restore/import (vector-im/riot-ios/issues/#2232).
- Crypto: Improve key import performance (vector-im/riot-ios/issues/#2248).
Bug Fix:
- Crypto: Device deduplication method sometimes crashes (vector-im/riot-ios/issues/#2167).
- MXSession: A new invite to a direct chat that I left is not displayed as direct.
- MXSession/Swift: fix expected return type from createRoom.
- MXRealmCryptoStore: fix outgoingRoomKeyRequestWithRequestBody that was sometimes not able to find existing request.
API break:
- MXKeyBackup: Rename isKeyBackupTrusted to trustForKeyBackupVersion.
===============================================
Improvements:
- MXCrypto: Use the last olm session that got a message (element-hq/element-ios/issues/2128).
- MXScanManager: Support the encrypted body (the request body is now encrypted by default using the server public key).
- MXMediaManager: Support the encrypted body.
Bug Fix:
- MXCryptoStore: Stop duplicating devices in the store (element-hq/element-ios/issues/2132).
- MXPeekingRoom: the room preview is broken (element-hq/element-ios/issues/2126).
===============================================
Improvements:
- MXCrypto: Add the MXKeyBackup module to manage e2e keys backup (element-hq/element-ios#2070).
- MXMediaManager/MXMediaLoader: Do not allow non-mxc content URLs.
- MXMediaManager: Add a constructor based on a homeserver URL, to handle directly the Matrix Content URI (mxc://...).
- MXSession: Add a MediaManager instance to handle the media stored on the Matrix Content repository.
- MXMediaManager: Support the media download from a Matrix Content Scanner (Antivirus Server).
- MXJSONModels: Add data models for Terms of service / privacy policy API (https://github.com/matrix-org/matrix-doc/blob/travis/msc/terms-api/proposals/1692-terms-api.md).
- Swift: Add explicit public initializer to MX3PID struct, thanks to @tladesignz (PR #594).
- Tests: Make MXRealmCryptoStore work the first time tests are launched on simulators for iOS 11 and higher.
- Add MXScanManager a media antivirus scanner (PR#600).
Bug Fix:
- MXRestClient: [avatarUrlForUser:success:failure]: the returned url is always nil, thanks to @asydorov (PR #580) and @giomfo.
- MXRoomSummary: fix null Direct Chat displayname / avatar issue caused by limited syncs.
- MXRoom: members methods don't respond after a failure.
- MXRealmCryptoStore: Make queries inside transactionWithBlock.
API break:
- MXMediaManager: [downloadMediaFromURL:andSaveAtFilePath:success:failure:] is removed, use [downloadMediaFromMatrixContentURI:withType:inFolder:success:failure] or [downloadThumbnailFromMatrixContentURI:withType:inFolder:toFitViewSize:withMethod:success:failure] instead.
- MXMediaManager: [downloadMediaFromURL:andSaveAtFilePath:] is removed, use [downloadMediaFromMatrixContentURI:withType:inFolder:] instead.
- MXMediaManager: [existingDownloaderWithOutputFilePath:] is removed, use [existingDownloaderWithIdentifier:] instead.
- MXMediaManager: [cachePathForMediaWithURL:andType:inFolder:] is removed, use [cachePathForMatrixContentURI:andType:inFolder:] instead.
- MXMediaLoader: the notification names "kMXMediaDownloadxxx" and "kMXMediaUploadxxx" are removed, use kMXMediaLoaderStateDidChangeNotification instead.
- MXMediaLoader: [downloadMediaFromURL:andSaveAtFilePath:success:failure] is removed, use [downloadMediaFromURL:withIdentifier:andSaveAtFilePath:success:failure] instead.
- MXRestClient: [urlOfContent:] and [urlOfContentThumbnail:toFitViewSize:withMethod:] are removed.
- The Matrix Content repository contants are moved to MXEnumConstants.h
- [urlOfIdenticon:] is moved from MXRestClient to MXMediaManager.
===============================================
Improvements:
- Upgrade OLMKit version (3.0.0).
- MXHTTPClient: Send Access-Token as header instead of query param (element-hq/element-ios/issues/2071).
- MXCrypto: Encrypt the messages for invited members according to the history visibility (#559)
- MXSession: When create a room as direct wait for room being tagged as direct chat before calling success block.
- CallKit is now disabled in China (PR #578).
- Add MXEncryptedContentFile and MXEncryptedContentKey classes.
- MXRestClient: Handle GET /_matrix/client/r0/profile/{userId} request.
Bug fix:
- MXEvent: Move
invite_room_state
to the correct place in the client-server API (element-hq/element-ios/issues/2010). - MXRoomSummaryUpdater: Fix minor issue in updateSummaryAvatar method.
- Left room is still displayed as "Empty room" in rooms list (element-hq/element-ios/issues/2082).
- Reply of reply with unexpected newlines renders badly (element-hq/element-ios/issues/2086).
API break:
- MXCrypto: importRoomKeys methods now return number of imported keys.
===============================================
Improvements:
- MXSession: Add eventWithEventId:inRoom: method.
- MXRoomState: Add pinnedEvents to list pinned events ids.
- MXServerNotices: Add this class to get notices from the user homeserver.
===============================================
Improvements:
- MXRoom: Expose room members access in Swift (PR #562).
- MXPeekingRoom: Create a MXPeekingRoomSummary class to represent their summary data.
- MXRoomSummary: If no avatar, try to compute it from heroes.
- MXRoomSummary: If no avatar for an invited room, try to compute it from available state events.
- MXRoomSummary: Internationalise the room name computation for rooms with no name.
- MXRoomMember: Add Swift refinement for membership properties.
Bug fix:
- Lazy-Loading: Fix regression on peeking (element-hq/element-ios/issues/2035).
- MXRestClient: Fix get public rooms list Swift refinement.
- MXTools: Allow '@' in room alias (element-hq/element-ios/issues/1977).
===============================================
Bug fix:
- MXJSONModel: Manage
m.server_notice
empty tag sent due to a bug server side (PR #556).
===============================================
Improvements:
- MXSession: Add the supportedMatrixVersions method getting versions of the specification supported by the homeserver.
- MXRestClient: Add testUserRegistration to check earlier if a username can be registered.
- MXSession: Add MXSessionStateSyncError state and MXSession.syncError to manage homeserver resource quota on /sync requests (element-hq/element-ios/issues/1937).
- MXError: Add kMXErrCodeStringResourceLimitExceeded to manage homeserver resource quota (element-hq/element-ios/issues/1937).
- MXError: Define constant strings for keys and values that can be found in a Matrix JSON dictionary error.
- Tests: MXHTTPClient_Private.h: Add method to set fake delay in HTTP requests.
Bug fix:
- People tab is empty in the share extension (element-hq/element-ios/issues/1988).
- MXError: MXError lost NSError.userInfo information.
===============================================
Improvements:
- Tests: Add DirectRoomTests to test direct rooms management.
Bug fix:
- Direct rooms can be lost on an initial /sync (element-hq/element-ios/issues/1983).
- Fix possible race conditions in direct rooms management.
- Avoid to create an empty filter on each [MXSession start:]
===============================================
Improvements:
- MXSession: Add the option to use a Matrix filter in /sync requests ([MXSession startWithSyncFilter:]).
- MXSession: Add API to manage Matrix filters.
- MXRestClient: Add Matrix filter API.
- MXRoom: Add send reply with text message (element-hq/element-ios#1911).
- MXRoom: Add an asynchronous methods for liveTimeline, state and members.
- MXRoom: Add methods to manage the room liveTimeline listeners synchronously.
- MXRoomState: Add a membersCount property to store members stats independently from MXRoomMember objects.
- MXRoomSummary: Add a membersCount property to cache MXRoomState one.
- MXRoomSummary: Add a membership property to cache MXRoomState one.
- MXRoomSummary: add isConferenceUserRoom.
- MXStore: Add Obj-C annotations.
- MXFileStore: Add a setting to set which data to preload ([MXFileStore setPreloadOptions:]).
- Manage the new summary API from the homeserver( MSC: https://docs.google.com/document/d/11i14UI1cUz-OJ0knD5BFu7fmT6Fo327zvMYqfSAR7xs/edit#).
- MXRoom: Add send reply with text message (element-hq/element-ios#1911).
- Support room versioning (element-hq/element-ios#1938).
Bug fix:
- MXRestClient: Fix filter parameter in messagesForRoom. It must be sent as an inline JSON string.
- Sends read receipts on login (element-hq/element-ios/issues/1918).
API break:
- MXSession: [MXSession startWithMessagesLimit] has been removed. Use the more generic [MXSession startWithSyncFilter:].
- MXRoom: liveTimeline and state accesses are now asynchronous.
- MXCall: callee access is now asynchronous.
- MXRoomState: Remove displayName property. Use MXRoomSummary.displayName instead.
- MXRoomState: Create a MXRoomMembers property. All members getter methods has been to the new class.
- MXStore: Make the stateOfRoom method asynchronous.
- MXRestClient: contextOfEvent: Add a filter parameter.
===============================================
Improvements:
- MXCrypto: Add reRequestRoomKeyForEvent to re-request encryption keys to decrypt an event (element-hq/element-ios/issues/1879).
- Matrix filters: Create or update models for them: MXFilter, MXRoomFilter & MXRoomEventFilter.
- MXRestClient: Factorise processing and completion blocks handling.
- Read Receipts: Notify the app for implicit read receipts.
- Replace all current
__weak typeof(self) weakSelf = self;...
dances by MXWeakify / MXStrongifyAndReturnIfNil. - Doc: Update instructions to install Synapse used in SDK integration tests
Bug fix:
- MXRoomSummary: Fix a memory leak
- MXRoom: A message (or a media) can be sent whereas the user cancelled it. This can make the app crash.
- MXCrypto: Fix code that went into a dead-end.
- MXMegolmDecryption: Fix unused overridden var.
- Analytics: Do not report rooms count on every sync.
API break:
- Analytics: Rename all kMXGoogleAnalyticsXxx constant values to kMXAnalyticsXxx.
===============================================
Improvements:
- MXSession: Add setAccountData.
- MXSession: Add account deactivation
- MKTools: Create MXWeakify & MXStrongifyAndReturnIfNil
===============================================
Improvements:
- MXTools: Regex optimisation: Cache regex of [MXTools stripNewlineCharacters:].
- MXSession: Make MXAccountData member public.
- Send Stickers: Manage local echo for sticker (element-hq/element-ios#1860).
- GDPR: Handle M_CONSENT_NOT_GIVEN error (element-hq/element-ios#1871).
Bug fixes:
- Groups: Avoid flair to make requests in loop in case the HS returns an empty response for
/publicised_groups
(element-hq/element-ios#1869).
===============================================
Bug fixes:
- Regression: Sending a photo from the photo library causes a crash.
===============================================
Improvements:
- Pod: Update realm version (#483)
- Render stickers in the timeline (element-hq/element-ios#1819).
Bug fixes:
- MatrixSDK/JingleCallStack: Upgrade the minimal iOS version to 9.0 because the WebRTC framework requires it (element-hq/element-ios#1821).
- App fails to logout on unknown token (element-hq/element-ios#1839).
- All rooms showing the same avatar (element-hq/element-ios#1673).
===============================================
Improvements:
- Make state event redaction handling gentler with homeserver (element-hq/element-ios#1823).
Bug fixes:
- Room summary is not updated after redaction of the room display name (element-hq/element-ios#1822).
===============================================
Improvements:
- SwiftMatrixSDK is now compatible with Swift 4, thanks to @johnflanagan-spok (PR #463).
- Crypto: Make sure we request keys for only valid matrix user ids.
- MXRoom: We should retry messages with same txn id when hitting 'resend' (element-hq/element-ios#1731).
- MXTools: Make isMatrixUserIdentifier support historical user ids (element-hq/element-ios#1743).
- MXRestClient: Add [MXRestClient eventWithEventId:] and [MXRestClient eventWithEventId:inRoom:].
- Improve server load on event redaction (element-hq/element-ios#1730).
- Make tests pass again.
Bug fixes:
- Push: Missing push notifications after answering a call (element-hq/element-ios#1757).
- Direct Chat: a room was marked as direct by mistake when I joined it.
- MXRoom: Canceled message can be sent if there is only one in the message sending queue.
- MXTools: Fix the regex part for the HS domain part in all isMatrixXxxxIdentifier methods.
- MXFileStore: commits can stay pending after [MXFileStore close].
- MXFileStore: Make sure data is flushed to files on [MXFileStore close].
- MXFileStore: The metadata (containing eventStremToken) can be not stored in files.
- MXOutgoingRoomKeyRequestManager: Fix crash reported by app store.
- MXCallKitAdapter: Clean better when releasing an instance.
API breaks:
- MXCrypto: Remove deviceWithDeviceId and devicesForUser methods because they return local values that may be out of sync. Use downloadKeys instead (element-hq/element-ios#1782).
- MXRestClient: Add a txnId parameter to the sendEventToRoom method to better follow the matrix spec.
===============================================
Improvements:
- Groups: Handle the user's groups and their data (element-hq/riot-meta#114).
- Groups: Add methods to accept group invite and leave it (element-hq/riot-meta#114).
- MXSession - Groups Flair: Handle the publicised groups for the matrix users (element-hq/riot-meta#118).
- MXRoomState - Groups Flair: Support the new state event type
m.room.related_groups
(element-hq/riot-meta#118). - Create SDK extensions: JingleCallStack and Google Analytics are now separated from the core sdk code (PR #432).
- MXFileStore: Run only one background task for [MXFileStore commit] (PR #436).
- MXTools - Groups: add
isMatrixGroupIdentifier
method. - Bumped SwiftMatrixSDK.podspec dependency to GZIP 1.2.1, thanks to @nrakochy.
- MXSDKOptions: Remove enableGoogleAnalytics. It is no more used (PR #448).
- Crypto: The crypto is now built by default in matrix-ios-sdk (PR #449).
Bug fixes:
- Room Summary Notification Count is not computed correctly until entering a room with at least one message (#409).
- Crypto: Fix crash when we try to generate a negative number of one time keys (PR #445).
- Medias not loading with an optional client certificate (#446), thanks to @r2d2leboss.
- Crypto: Fix crash when sharing keys on broken network (PR #451).
===============================================
Improvements:
- Crypto: Support the room key sharing (element-hq/riot-meta#113).
- Crypto: Store permanently incoming room key requests (element-hq/riot-meta#121).
- Crypto: use device_one_time_keys_count transmitted by /sync.
- MXCrypto: Add a proper onSyncCompleted method (PR #410).
- MXCrypto: Start it before syncing with the HS.
- MXCrypto: Add deviceWithDeviceId.
- MXCrypto: add ignoreKeyRequest & ignoreAllPendingKeyRequestsFromUser methods.
- Remove the support of the new_device event (PR #421).
- Remove AssetsLibrary framework use (deprecated since iOS 9).
- MXSession: kMXSessionDidSyncNotification now comes with MXSyncResponse object result returned by the homeserver.
Bug fixes:
- Fix many warnings regarding strict prototypes, thanks to @beatrupp.
API breaks:
- Remove CoreData implementation of MXStore (It was not used).
- MXCrypto: Make
decryptEvent
return decryption results (PR #426).
===============================================
Bug fixes:
- A 1:1 invite is not displayed as a direct chat after clearing the cache.
===============================================
Improvements:
- Notifications: implement @room notifications (element-hq/riot-meta#119).
- MXTools: Add a reusable generateTransactionId method.
- MXRoom: Prevent multiple occurrences of the room id in the direct chats dictionary of the account data.
Bug fixes:
- CallKit - When I reject or answer a call on one device, it should stop ringing on all other iOS devices (element-hq/element-ios#1618).
API breaks:
- Crypto: Remove MXFileCryptoStore (We stopped to maintain it one year ago).
===============================================
Improvements:
- Call: Add CallKit support, thanks to @morozkin.
- MXRoom: Preserve message sending order.
- MXRealmCryptoStore: Move the existing db file from the default folder to the shared container.
- MXSession: Add
isEventStreamInitialised
flag. - MXRestClient: Store certificates allowed by the end user in the initWithHomeServer method too.
- MXRestClient: Improve registration parameters handling (element-hq/element-ios#910).
- MXCall: Go into MXCallStateCreateAnswer state on [MXCall answer] even if there are unknown devices in e2e rooms.
- MXLogger: Make it compatible with MXSDKOptions.applicationGroupIdentifier to write app extensions logs to file.
- MXLogger: Add setSubLogName method to log extensions into different files
- MXLogger: Log up to 10 life cycles.
Bug fixes:
- Call: Fix freeze when making a 2nd call.
- MXEventTimeline: Fix crash when the user changes the language in the app.
- Store is reset by mistake on app launch when the user has left a room (element-hq/element-ios#1574).
- MXRoom: sendEventOfType: Copy the event content to send to keep it consistent in multi-thread conditions (like in e2e) (element-hq/element-ios#1581).
- Mark all messages as read does not work well (element-hq/element-ios#1425).
===============================================
Improvements:
- MXSession: Fix parallel /sync requests streams (PR #360).
- Add new async method for loading users with particular userIds, thanks to @morozkin (PR #357).
- MXFileStore: Add necessary async API for room state events and accountdata, (PR #361, PR #363).
- MXMemoryStore: improve getEventReceipts implementation (PR #364).
- MXRestClient: Add the openIdToken method (PR #365).
- MXEvent: Add MXEventTypeRoomBotOptions & MXEventTypeRoomPlumbing. (PR #370).
- Crypto: handleDeviceListsChanges: Do not switch to the processing thread if there is nothing to do.
- MXRoomSummary: Add the server timestamp (PR #376).
Bug fixes:
- [e2e issue] Decrypt error related to new device creation (#340).
- Fix inbound video calls don't have speakerphone turned on by default (element-hq/element-ios#933), thanks to @morozkin (PR #359).
- Override audio output handling by WebRTC, thanks to @morozkin (PR #358).
- Room settings: the displayed room access settings is wrong (element-hq/element-ios#1494)
- Fix retain cycle between room and eventTimeLine, thanks to @samuel-gallet (PR #352).
- Fix API for unbanning and kicking, thanks to @ThibaultFarnier (PR #367).
- When receiving an invite tagged as DM it's filed in rooms (element-hq/element-ios#1308).
- Altering DMness of rooms is broken (element-hq/element-ios#1370).
- Video attachment: App crashes when video compression fails (PR #369).
- Background task release race condition (PR #374).
- MXHTTPClient: Fix a regression that prevented the app from reconnecting when the network comes back (PR #375).
===============================================
Improvements:
- MXRoom: Added an option to send a file and keep it's filename, thanks to @aramsargsyan (#354).
Bug fixes:
- MXHTTPClient: retain cycles, thanks to @morozkin (#350).
- MXPushRuleEventMatchConditionChecker: inaccurate regex, thanks to @morozkin (#353).
- MXRoomState: returning old data for some properties, thanks to @morozkin (#355).
API breaks:
- Add a "stateKey" optional param to [MXRoom sendStateEventOfType:] and to [MXRestClient sendStateEventToRoom:].
===============================================
Improvements:
- MXRoomState: Improve algorithm to manage room members displaynames disambiguation.
- MXRoomSummary: Add isDirect and directUserId properties, thanks to @morozkin (#342).
- MXFileStore: New section with asynchronous API. asyncUsers and asyncRoomsSummaries methods are available, thanks to @morozkin (#342).
Bug fixes:
- Mentions do not work for names that start or end with a non-word character like '[', ']', '@'...).
- App crashed I don't know why, suspect memory issues / Crash in [MXRoomState copyWithZone:] (https://github.com/matrix-org/riot-ios-rageshakes#132).
API breaks:
- Replace [MXRoomState stateEventWithType:] by [MXRoomState stateEventsWithType:].
===============================================
Improvements:
-
Be more robust against JSON data sent by the homeserver.
-
MXRestClient: Add searchUsers method to search user from the homeserver user directory.
-
MXRestClient: Change API used to add email in order to check if the email (or msisdn) is already used (https://github.com/vector-im/riot-meta#85).
-
App Extension support: wrap access to UIApplication shared instance
-
MXSession: Pause could not be delayed if no background mode handler has been set in the MXSDKOptions.
-
MXRoomState: do copy of membersNamesCache content in memberName rather than in copyWithZone.
-
SwiftMatrixSDK
-
Add swift refinements to MXSession event listeners, thanks to @aapierce0 (PR #327).
-
Update the access control for the identifier property on some swift enums, thanks to @aapierce0 (PR #330).
-
Add Swift refinements to MXRoom class, thanks to @aapierce0 (PR #335).
-
Add Swift refinements to MXRoomPowerLevels, thanks to @aapierce0 (PR #336).
-
Add swift refinements to MXRoomState, thanks to @aapierce0 (PR #338).
Bug fixes:
- Getting notifications for unrelated messages (element-hq/riot-android#1407).
- Crypto: Fix crash when encountering a badly formatted olm message (https://github.commatrix-org/riot-ios-rageshakes#107).
- MXSession: Missing a call to failure callback on unknown token, thanks to @aapierce0 (PR #331).
- Fixed an issue that would prevent attachments from being downloaded via SSL connections when using a custom CA ceritficate that was included in the bundle, thanks to @javierquevedo (PR #332).
- Avatars do not display with account on a self-signed server (element-hq/element-ios#816).
- MXRestClient: Escape userId in CS API requests.
===============================================
Improvements:
- MXFileStore: Improve performance by ~5% (PR #318).
===============================================
Improvements:
- MXFileStore: Improve performance by ~10% (PR #316).
Bug fixes:
- VoIP: Fix outgoing call stays in "Call connecting..." whereas it is established (https://github.com/vector-im/riot-ios#1326).
===============================================
Improvements:
- The minimal iOS version is now 8.0, 10.10 for macOS.
- Add read markers synchronisation across matrix clients.
- Add MXRoomSummary, an object where room data (display name, last message, etc) is cached. It avoids to recompute it from the room state.
- Bug report: add MXBugReportRestClient to talk to the bug report API.
- VoIP: several improvements, thanks to @morozkin (PR #301, PR #304, PR #307).
- Remove direct dependency to Google Analytics, thanks to @aapierce0 (PR #256).
- Extract background mode handling outside of Matrix SDK, thanks to Samuel Gallet (PR #296).
- MXHTTPOperation: add isCancelled property, thanks to @SteadyCoder (PR #274).
- MXMediaManager: Consider a cache version based on the version defined by the application and the one defined at the SDK level.
- MXRestClient: add forgetPasswordForEmail for password reseting, thanks to @morozkin (PR #277).
- MXRestClient: add setPinnedCertificates to allow app to use custom certificate, thanks to Samuel Gallet (PR #302).
- MXRestClient: Fix publicRoomsOnServer for the search parameter.
- MXRestClient: Make publicRooms still use the old "GET" API if there is no params.
- MXRestClient: Add thirdpartyProtocols to get the third party protocols that can be reached using this HS.
- MXRoom: Expose the user identifier for whom this room is tagged as direct (if any).
- MXSession: Handle the missed notifications count at session level.
- MXCredentials: add homeServerName property.
- Crypto: Rework device list tracking logic in to order to fix UISI (matrix-org/matrix-js-sdk#425 & matrix-org/matrix-js-sdk#431).
Bug fixes:
- App crashes if there are more than one invited room.
- MXSession: Take into account encrypted messages in unread counter.
- [MXSession resetRoomsSummariesLastMessage] freezes the app (#292).
- README: update dead links in "Push Notifications" section.
API breaks:
- MXRestClient: Update publicRooms to support pagination and 3rd party networks
===============================================
Improvements:
- MXSDKOptions: Let the application define its own media cache version (see
mediaCacheAppVersion
). - MXMediaManager: Consider a cache version based on the version defined by the application and the one defined at the SDK level.
===============================================
Bug fix:
- Registration with email failed when the email address is validated on the mobile phone.
===============================================
Improvements:
- MXRestClient: Tell the server we support the msisdn flow login (with x_show_msisdn parameter).
- MXRoomState: Make isEncrypted implementation more robust.
- MXCrypto: add ensureEncryptionInRoom method.
Bug fixes:
- MXCrypto: Fix a crash due to a signedness issue in the count of one-time keys to upload.
- MXCall: In case of encrypted room, make sure that encryption is fully set up before answering (https://github.com/vector-im/riot-ios#1058)
===============================================
Improvements:
- Add a Swift API to most of SDK classes, thanks to @aapierce0 (PR #241).
- MXEvent: Add sentError property
- MXSession: add catchingUp flag in to order to indicate we are restarting the events stream ASAP, ie /sync with serverTimeout = 0
- MXRestClient: Support phone number validation.
- MXRestClient: Add API to remove 3rd party identifiers from user's information
- Crypto: Upgrade OLMKit(2.2.2).
- Crypto: Support of the devices list CS API. It should fix a lot of Unknown Inbound Session Ids.
- Crypto: Warn on unknown devices: Generate an error when the user sends a message to a room where there is unknown devices.
- Crypto: Support for blacklisting unverified devices, both per-room and globally.
- Crypto: Upload one-time keys on /sync rather than a timer.
- Crypto: Add [MXCrypto resetDeviceKeys] to clear devices keys. This should fix unexpected UISIs from our user.
- MXMyUser: do not force store update in case of user profile change. Let the store be updated once at the end of the sync.
Bug fixes:
- Corrupted room state: some joined rooms appear in Invites section (https://github.com/vector-im/riot-ios#1029).
- MXRestClient: submit3PIDValidationToken: The invalid token was not correctly handled.
- MXRestClient: Update HTTP retry policy (#245).
- MXRestClient: Self-signed homeserver: Fix regression on media hosted by server with CA certificate.
- Crypto: app may crash on clear cache because of the periodic uploadKeys (#234).
- Crypto: Invalidate device lists when encryption is enabled in a room (https://github.com/vector-im/riot-web#2672).
- Crypto: Sometimes some events are not decrypted when importing keys (#261).
- Crypto: After importing keys, the newly decrypted msg have a forbidden icon (https://github.com/vector-im/riot-ios#1028).
- Crypto: Tight loop of /keys/query requests (#264).
API breaks:
- MXPublicRoom: numJoinedMembers is now a signed integer.
- Rename [MXHTTPClient jitterTimeForRetry] into [MXHTTPClient timeForRetry:]
===============================================
Improvements:
- MXFileStore: Do not store the access token. There is no reason for that.
- Improve disk usage: Do not use NSURLCache. The SDK does not need this cache. This may save hundreds of MB.
- Add E2E keys export & import. This is managed by the new MXMegolmExportEncryption class.
Bug fixes:
- Fix a few examples in the README file, thanks to @aapierce0 (PR #230).
- Duplicated msg when going into room details (https://github.com/vector-im/riot-ios#970).
- App crashes a few seconds after a successful login (https://github.com/vector-im/riot-ios#965).
- Got stuck syncing forever (https://github.com/vector-im/riot-ios#1008).
- Local echoes for typed messages stay (far) longer in grey (https://github.com/vector-im/riot-ios#1007).
- MXRealmCryptoStore: Prevent storeSession & storeInboundGroupSession from storing duplicates (#227).
- MXRealmCryptoStore: Force migration of the db to remove duplicate olm and megolm sessions (#227).
===============================================
Improvements:
- MXRestClient: Made apiPathPrefix fully relative (#213).
- MXRestClient: Add contentPathPrefix property to customise path to content repository (#213).
- MXRestClient: Support the bulk lookup API (/bulk_lookup) of the identity server.
- MXEvent: Add isLocalEvent property.
- Crypto store migration: The migration from MXFileCryptoStore to MXRealmCryptoStore have been improved to avoid user from relogging.
Bug fixes:
- MXCrypto: App crash on "setObjectForKey: key cannot be nil"
API breaks:
- MXDecryptingErrorUnkwnownInboundSessionIdCode has been renamed to MXDecryptingErrorUnknownInboundSessionIdCode.
- MXDecryptingErrorUnkwnownInboundSessionIdReason has been renamed to MXDecryptingErrorUnknownInboundSessionIdReason.
- kMXRoomLocalEventIdPrefix has been renamed to kMXEventLocalEventIdPrefix.
===============================================
Improvements:
- Matrix iOS SDK in now compatible with macOS, thanks to @aapierce0 (PR #218).
- MXEvent.sentState: add MXEventSentStatePreparing state.
- Google Analytics: Add an option to send some speed stats to GA (It is currently focused on app startup).
Bug fixes:
- Resend now function doesn't work on canceled upload file (https://github.com/vector-im/riot-ios#890).
- Riot is picking up my name within words and highlighting them (https://github.com/vector-im/riot-ios#893).
- MXHTTPClient: Handle correctly the case where the homeserver url is a subdirectory (#213).
- Failure to decrypt megolm event despite receiving the keys (https://github.com/vector-im/riot-ios#913).
- Riot looks to me like I'm sending the same message twice (https://github.com/vector-im/riot-ios#894).
===============================================
Improvements:
- Crypto: all crypto processing is now done outside the main thread.
- Crypto: keys are now stored in a realm db.
- Crypto: variuos bug fixes and improvements including:
- Retry decryption after receiving keys
- Avoid a packetstorm of device queries on startup
- Detect store corruption and send kMXSessionCryptoDidCorruptDataNotification
- Move MXKMediaManager and MXKMediaLoader at SDK level.
- MXEvent: Add sentState property (was previously in the kit).
- MXEvent: There is now an encrypting state.
- MXRoom now manages outgoing messages (was done at the kit level).
API breaks:
- MXRoom:
sendMessageOfType
is deprecated. Replaced by sendMessageWithContent.
===============================================
Improvements:
- Crypto: Ignore reshares of known megolm sessions.
Bug fixes:
- MXRestClient: Fix Delete Device API.
===============================================
Improvements:
- MXRestClient: Add API to get information about user's devices.
Bug fixes:
- Cannot invite user with dash in their user id (element-hq/element-ios#812).
- Crypto: Mitigate replay attack #162.
===============================================
Bug fixes:
- fix Signal detected: 11 at [MXRoomState memberName:] level.
- [Register flow] Register with a mail address fails (https://github.com/vector-im/vector-ios#799).
===============================================
Improvements:
- Support end-to-end encryption. It is experimental and may not be reliable. You should not yet trust it to secure data. File transfers are not yet encrypted. Devices will not yet be able to decrypt history from before they joined the room. Once encryption is enabled for a room it cannot be turned off again (for now). Encrypted messages will not be visible on clients that do not yet implement encryption.
- MXSession: support
m.direct
type inaccount_data
(#149). Required to convert existing rooms to/from DMs (https://github.com/vector-im/vector-ios#715). - MXRoom: Handle inbound invites to decide if they are DMs or not (https://github.com/vector-im/vector-ios#713).
- MXSDKOptions: Create a "Build time options" section.
API improvements:
- MXRestClient: Add registerWithLoginType and loginWithLoginType which do the job with new CS auth api for dummy and password flows.
- MXRestClient: Support /logout API to invalidate an existing access token.
- MXRestClient: Register/login: Fill the initial_device_display_name field with the device name by default.
- MXRestClient: Support the
filter
parameter during a messages request (seeMXRoomEventFilter
object). Thecontains_url
filter is now used for events search. - MXHTTPOperation: Add the
mutateTo
method to be able to cancel any current HTTP request in a requests chain. - MXSession/MXRestClient: Support
invite
array,isDirect
flag andpreset
during the room creation. Required to tag explicitly the invite as DM or not DM (https://github.com/vector-im/vector-ios#714). - MXRoomState: Add the stateEventWithType getter method.
- MXSession: Add
directJoinedRoomWithUserId
to get the first joined direct chat listed in account data for this user. - MXRoom: Add
setIsDirect
method to convert existing rooms to/from DMs (https://github.com/vector-im/vector-ios#715). - MXRoom: Add
eventDeviceInfo
to get the device information related to an encrypted event. - MXRoom: Add API to create a temporary message event. This temporary event is automatically defined as
encrypted
when the room is encrypted and the encryption is enabled.
API break:
- MXRestClient: Remove
registerWithUser
andloginWithUser
methods which worked only with old CS auth API. - MXSession: Remove
privateOneToOneRoomWithUserId:
andprivateOneToOneUsers
(the developer must use thedirectRooms
property instead).
================================================
Improvements:
- Move MXRoom.acknowledgableEventTypes into MXSession (#141).
- MXTools: Update the regex used to detect room alias (Support '#' character in alias name).
Bug fixes:
- Invite a left user doesn't display his displayname (https://github.com/vector-im/vector-ios#646).
- The room preview does not always display the right member info (https://github.com/vector-im/vector-ios#643).
- App got stuck and permenantly spinning (https://github.com/vector-im/vector-ios#655).
================================================
Bug fixes:
- MXSession: In case of initialSync, mxsession.myUser.userId must be available before changing the state to MXSessionStateStoreDataReady (https://github.com/vector-im/vector-ios#623).
================================================
Bug fixes:
- MXFileStore: The stored receipts may not be totally loaded on cold start.
- MXNotificationCenter: The conditions of override and underride rules are defined in an array.
================================================
Improvements:
- Allow MXSession to run the events stream in background for special cases
- MXEvent: Add the m.room.encrypted type
- MXSession: Expose the list of user ids for whom a 1:1 room exists (element-hq/element-ios#529).
- MXStore: Save MXUsers in the store (element-hq/element-ios#406).
- MXTools: Expose regex used to identify email address, user ids, room ids & and room aliases. Cache their regex objects to improve performance.
- MXTools: Add [MXTools isMatrixEventIdentifier:].
- MXTools: Add methods to create permalinks to room or event (element-hq/element-ios#547).
Bug fixes:
- MXKRoomState.aliases: some addresses are missing (element-hq/element-ios#528).
- MXFileStore: Stop leaking background tasks, which kill the app after 180s of bg.
- MXCall: Add a timeout for outgoing calls (element-hq/element-ios#577).
- MXJingleCallStackCall: When screen is locked, rotating the screen landscape makes local video preview go upside down (element-hq/element-ios#519).
================================================
Improvements:
- Add conference call support.
- Call: Update the libjingle lib to its latest version. That implied a major refactoring of MXJingleCallStack.
- Repair MXFileStore in case of interrupted commit (element-hq/element-ios#376).
- Speed up MXFileStore loading.
- Allow MXFileStore to run when the app is backgrounded.
- Change the MXStore API to be able to run several paginations in parallel.
API improvements:
- Add MXEventsEnumerator to enumerate sets of events like those returned by the MXStore API.
- MXRoomState: Added - (NSArray*)membersWithMembership:(MXMembership)membership.
- MXSession & MXRestClient: Add createRoom with a parameters dictionary to manage all fields available in Matrix spec.
- MXCall: Add cameraPosition property to switch the camera.
- MXMyUser: Allow nil callback blocks in setter methods.
- SDK Tests: Add a test on [MXRestClient close].
- SDK Tests: Add a test on [MXFileStore diskUsage].
Bug fixes:
- Redacting membership events should immediately reset the displayname & avatar of room members (element-hq/element-ios#443).
- Profile changes shouldn't reorder the room list (element-hq/element-ios#494).
- When the last message is redacted, [MXKRecentCellData update] makes paginations loops (element-hq/element-ios#520).
- MXSession: Do not send kMXSessionIgnoredUsersDidChangeNotification when the session loads the data from the store (element-hq/element-ios#491).
- MXHTTPClient: Fix crash: "Task created in a session that has been invalidated" (element-hq/element-ios#490).
- Call: the remote and local video are not scaled to fill the video container (element-hq/element-ios#537).
API Breaks:
- Rename "kMXRoomSyncWithLimitedTimelineNotification" with "kMXRoomDidFlushMessagesNotification"
- MXRoom: Make placeCall: asynchronous.
- MXFileStore: Replace 'diskUsage' property by an async non blocking method: [self diskUsageWithBlock:].
- MXStore: Replace [MXStore resetPaginationOfRoom:], [MXStore paginateRoom:numMessages:] and [MXStore remainingMessagesForPaginationInRoom:] methods by [MXStore messagesEnumeratorForRoom:]
================================================
Improvements:
- MXCallManager: Better handle call invites when the app resumes.
- MXCall: Improve the sending of local ICE candidates to avoid HTTP 429(Too Many Requests) response
- MXCall: Added the audioToSpeaker property to choose between the main and the ear speaker.
- MXRoomState: Added the joinedMembers property.
- MXLogger: Added the isMainThread information in crash logs.
Bug fixes:
- MXJingleCallStackCall: Added sanity check on creation of RTCICEServer objects as crashes have been reported.
================================================
Improvements:
- MXCall: Added audioMuted and videoMuted properties.
- Call: the SDK is now able to send local ICE candidates.
- Integration of libjingle/PeerConnection call stack (see MXJingleCall).
Bug fixes:
- MXCallManager: Do not show the call screen when the call is initiated by the same user but from another device.
- MXCallManager: Hide the call screen when the user answers an incoming call from another device.
Breaks:
- MXCallStackCall: two new properties (audioMuted and videoMuted) and one new delegate method (onICECandidateWithSdpMid).
================================================
Improvements:
- MXRestClient: Add API to add/remove a room alias.
- MXRestClient: Add API to set the room canonical alias.
- Update AFNetworking: Move to 3.1.0 version.
- SDK Tests: Update and improve tests.
Bug fixes:
- MXRoom: Read receipts can now be posted on room history visibility or guest access change.
Breaks:
- MXRestClient: uploadContent signature has been changed.
===============================================
Improvements:
- MXPeekingRoom (New): This class allows to get data from a room the user has not joined yet.
- MXRoom: Add API to change room settings: history visibility, join rule, guest access, directory visibility.
- MXTools: Add isMatrixRoomAlias, isMatrixRoomIdentifier and isMatrixUserIdentifier methods.
Bug fixes:
- MXRestClient: can't join rooms with utf-8 alias (element-hq/element-ios#374)
- Push rules: strings comparisons are now case insensitive (element-hq/element-ios#410)
Breaks:
- kMXRoomVisibility* consts have been renamed to kMXRoomDirectoryVisibility*
- MXRoom: isPublic has been replaced by isJoinRulePublic
===============================================
Improvements:
- Push rules update: Listen to account_data to get push rules updates.
- SDK Tests improvements: Prevent the test suite from breaking because one test fails.
- MXRoomState: disambiguate the display name for the invited room member too.
Bug fixes:
- Ignored users: kMXSessionIgnoredUsersDidChangeNotification was sometimes not sent.
- Recents: All blank after upgrade.
- Fixed implementation of userAccountData in MXMemoryStore and MXNoStore.
- MXSession: Detect when the access token is no more valid.
===============================================
Improvements:
- Presence: Manage the currently_active parameter.
- MXRestClient: Add API to reset the account password.
- Ability to report abuse
- Ability to ignore users
===============================================
Improvements:
- MXSession/MXRestClient: Add [self join:withSignUrl:] to join a room where the user has been invited by a 3PID invitation.
- MXHTTPClient: Add an option to serialise input parameters as form data instead of JSON, which is still the default behavior.
- MXRestClient: Update requestEmailValidation (set params in body, replace camelCase params keys by their underscore name, add the nextLink param).
- MXRestClient: Add submitEmailValidationToken to validate an email.
- MXFileStore: Improve storage and loading of read receipts.
- MXTools: Add method to remove new line characters from NSString.
Bug fixes:
- Cannot paginate to the origin of the room.
- Store - Detect and remove corrupted room data.
- The application icon badge number is wrong.
===============================================
Improvements:
- MXJSONModels: Registration Support - Define MXAunthenticationSession class. This class is used to store the server response on supported flows during the login or the registration.
- MXRestClient: New email binding - validateEmail and bind3PID has been removed. add3PID and treePIDs has been added.
- MXRestClient: Registration Support - Add API to check user id availability.
- MXSession: Added roomWithAlias method.
- MXTools: Add method to validate email address.
Bug fixes:
- User profile: user settings may be modified during pagination in past timeline.
- Fixed crash in [MXFileStore saveReceipts]. There was a race condition.
- Cancel correctly pending operations.
===============================================
Improvements:
- MXRoom: Update unread events handling (ignore m.room.member events and redacted events).
- MXRoomPowerLevels: power level values are signed.
- MXStore: Retrieve the receipt for a user in a room.
Bug fixes:
- App crashes on redacted event handling.
- The account data changes are ignored (Favorites section is not refreshed correctly).
===============================================
Improvements:
- Moving to r0 API: Replace calls to v1 and v2_alpha apis by r0, which is configurable via MXRestClient.apiPathPrefix.
- MXEventContext: Add C-S API to handle event context.
- MXEventTimeline: Created MXEventTimeline to manage a list of continuous events. MXRoom has now a liveTimeline property that manages live events and state of the room. MXEventTimeline is able to manage live events and events that will come from the event context API.
- MXEventDirection* has been renamed to MXTimelineDirection*.
- MXEventTimeline: Support backward/forward pagination around a past event.
- MXRestClient: the messagesForRoom method has been updated to conform r0 C-S API. The "to" parameter has been replaced by the "direction" parameter.
- MXRoom: Replace the inaccurate 'unreadEvents' array with a boolean flag 'hasUnreadEvents'.
- MXRoom: Add 'notificationCount' and 'highlightCount' based on the notificationCount field in /sync response.
- SDK Tests: Update and fix tests.
Bug fixes:
- Support email login.
- Room ordering: a tagged room with no order value must have higher priority than the tagged rooms with order value.
- SYIOS-208: [MXSession startWithMessagesLimit]: if defined, the limit argument is now passed to /sync request.
- SYIOS-207: Removed MXEventDirectionSync which became useless.
===============================================
Improvements:
- MXRoom: Add an argument to limit the pagination to the messages from the store.
- MXRoom: Support email invitation.
Bug fixes:
- App crashes on resume if a pause is pending.
- Account creation: reCaptcha is missing in registration fallback.
===============================================
Improvements:
- Remove Mantle dependency (to improve performances).
- JSON validation: Log errors (break only in DEBUG build).
Bug fixes:
- SYIOS-203: iOS crashes on non numeric power levels.
- MXRestClient: set APNS pusher failed on invalid params.
===============================================
Improvements:
- MXSession: Switch on server sync v2 (Left room are handled but not stored for the moment).
- MXSession: Support room tags.
- MXSession: Improve the invitations management.
- MXRestClient: Support server change password API.
- MXRestClient: Support server search API.
- MXSDKOption: Add new option: enable/disable identicon use at SDK level.
- MXRoom: Add room comparator based on originServerTs value.
- MXRoom: Exclude the current user from the receipts list retrieved for an event.
- MXEvent: Add properties for receipt events to retrieve event ids or sender ids.
- MXEvent: Report server API changes (handle ‘unsigned’ dictionary).
- MXPublicRoom: Support worldReadable, guestCanJoin and avatarURL fields.
- MXHTTPClient: Accept path that already contains url parameters.
- MXJSONModels: Improve performance (Limit Mantle use).
- MXStore: Store the partial text message typed by the user.
- MXStore: Store messages which are being sent (unsent messages are then stored).
Bug fixes:
- MXRoom: Fix detection of the end of the back pagination. End of pagination is now detected when returned chunk is empty and both tokens (start/end) are equal.
- MXRoom: Generate a read receipt for the sender of an incoming message.
- MXRoom: Improve offline experience - Disable retry option on pagination requests when data are available from store. The caller is then able to handle messages from store without delay.
- MXSession: Load push rules from server before loading store data in order to highlight the bing events.
===============================================
Improvements:
- MXStore: Added a new optimised eventExistsWithEventId: method.
- MXRoomState: Room state optimisation.
- MXEvent: Events handling optimisation.
- MXSession: Add Room tag support.
- MXRoom: Add Room avatar support.
Bug fixes:
- SYIOS-176: Single word highlighting failed.
- SYIOS-140: Add support for canonical alias.
- SYIOS-184: We don't seem to have any way to invite users into a room.
- MXNotificationCenter: NSMutableArray was mutated while being enumerated.
- App crashes at launch after an event redaction.
===============================================
Bug fixes:
- MXRoomState: All room members have the same power level when a new state event is received.
- MXRoom: The backward room state is corrupted (former display name and avatar are missing).
===============================================
Improvements:
- MXMemoryStore: Improved [MXStore unreadEvents] implementation. It is 7-8 times quicker now.
- MXRoomState: Added cache to [MXRoomState memberName:] to optimise it.
- MXUser/MXRoomMember: Ignore non mxc avatar url.
===============================================
Improvements:
- Use autoreleasepool to reduce memory usage.
- MXHTTPClient: Handle unrecognized certificate during authentication challenge from a server.
- MXHTTPClient: Fixed memory leaks of MXHTTPOperation objects.
- MXJSONModel: Optimise memory usage during model creation.
- MXRestClient: Add read receipts management (sent with API v2, received with API v1).
- MXRestClient: Define login fallback (server auth v1).
- MXRoom: Clone room state only in case of change.
- MXNotificationCenter: Reduce computation time during events handling.
Bug fixes:
- MXRoom: Room invitation failed.
- MXSession: No history is displayed in new joined room.
- SYIOS-164: Duplicated events on bad networks
- SYIOS-165: Join an empty room on one device is not properly dispatched to the other devices.
- SYIOS-169: Improve MXEvent conversion.
- SYIOS-170: Public Room: room history is wrong when user joins for the second time.
===============================================
Improvements:
- Clean the store before the initial room syncing.
- MXHTTPClient: improve http client logs.
Bug fixes:
- MXRoom: App crashes on invite room during initial sync.
===============================================
Improvements:
- Fixed code that made Cocoapods 0.38.2 unhappy.
===============================================
Improvements:
- MXRestClient: Add API to create push rules.
- MXRestClient: Add API to update global notification settings.
===============================================
Improvements:
- MXSession: Optimise one-to-one rooms handling (keep update a list of these rooms).
- MXRoomState: Optimise power level computation during room members handling.
- MXEvent: Define "m.file" as new message type.
- MXRestClient: Notification Pushers - Support remote notifications for multiple account on the same device.
- MXRestClient: Add filename in url parameters in case of file upload (image/video).
Bug fixes:
- MXFileStore: SYIOS-121 - Support multi-account.
- MXFileStore: Fixed store that does not work on some devices. The reason was the store was not able to create the file hierarchy.
- MXSession: Post MXSessionStateInitialised state change at the end of initialisation.
- MXSession: Post state change event only in case of actual change.
- Bug Fix: App crashes on attachment notifications.
- Bug Fix: App crash - The session may be closed before the end of store opening.
- Bug Fix: Blank room - Handle correctly end of pagination error during back pagination (see SYN-162 - Bogus pagination token when the beginning of the room history is reached).
===============================================
Improvements:
- MXSession: Define a life cycle. The current value is stored in the
state
property. Its changes are notified via NSNotificationCenter (kMXSessionStateDidChangeNotification). - MXSession/MXRoom: return a MXHTTPOperation for all methods taht make HTTP requests to the Matrix Client-Server API so that the SDK client can cancel them.
- MXSession: Added createRoom method
- MXSession: Added notifications to indicate changes on room:
- kMXSessionNewRoomNotification
- kMXSessionInitialSyncedRoomNotification
- kMXSessionWillLeaveRoomNotification
- kMXSessionDidLeaveRoomNotification
- MXNotificationCenter: Take into account the
highlight
tweek parameters in push rules.
Bug fixes:
- Fixed pagination hole that happened when receiving live events between [MXRoom resetBackState] and [MXRoom paginateBackMessages].
- MXStore: When reopened, the MXSession did reset all pagination token of all cached room.
- MXFileStore: if pagination token was changed with no new messages, the new pagination token was not saved into the file cache.
Console source code has been moved into its own git repository: https://github.com/matrix-org/matrix-ios-console.
===============================================
Improvements:
- All requests (except typing notifications) are retried (SYIOS-32).
- Added definitions for VOIP event types.
- Updated AFNetworking version: 2.4.1 -> 2.5.2.
Bug fixes:
- SYIOS-105 - Public rooms sometimes appear as 2-member rooms for some reason.
Improvements:
- Settings - Invite user to use a webclient and hit Settings to configure global notification rules.
- InApp notifications - Support tweak action for InApp notification.
- Improved image rotation support over different Matrix clients.
Bug fixes:
- SYIOS-107 - In-App notifications does not work since ## Changes in push rules spec.
- SYIOS-108 - I can't re-enter existing chats when tapping through contact details.
- On iOS 8, the app does not prompt user to upload logs after app crash. Rage shake is not working too.
- Typing notification - Do not loop anymore to send typing notif in case of failure.
===============================================
Improvements:
- Improved push notifications documentation.
- MXSession: Slightly randomise reconnection times by up to 3s to prevent all Matrix clients from retrying requests to the homeserver at the same time.
- Improved logs
Bug fixes:
- SYIOS-90 - iOS can receive & display messages multiple times when on bad connections
Improvements:
- Fixed warnings with 64bits builds.
- Room history: Improve scrolling handling when keyboard appears.
- Contacts: Prompt user when local contacts tab is selected if constact sync is disabled.
Bug fixes:
- Fix crash when switching rooms while the event stream is resuming.
- SYIOS-69 - On Screen Keyboard can end up hiding the most recent messages in a room.
- SYIOS-98 - Crash when attempting to attach image on iPad
===============================================
Breaks:
- [MXSession initWithMatrixRestClient: andStore: ] and the onStoreDataReady argument in [MXSession start:] has been removed. The SDK client can now use the asynchronous [MXSession setStore:] method to define a store and getting notified when the SDK can read cached data from it. (SYIOS-62)
- MXStore implementations must now implement [MXStore openWithCredentials].
- All MXRestClient methods now return MXHTTPOperation objects.
Improvements:
- Created the MXSession.notificationCenter component: it indicates when an event must be notified to the user according to user's push rules settings.
- MXFileStore: Improved loading performance by 8x.
- Added an option (MXSession.loadPresenceBeforeCompletingSessionStart) to refresh presence data in background when starting a session.
- Created MXLogger to redirect NSLog to file and to log crashes or uncaught exception.
- MXRestClient: Added [MXRestClient registerFallback].
- Logs: Make all NSLog calls follows the same format.
Features:
- SYIOS-40 - Any HTTP request can fail due to rate-limiting on the server, and need to be retried.
- SYIOS-81 - Ability to send messages in the background.
Bug fixes:
- SYIOS-67 - We should synthesise identicons for users with no avatar.
- MXSession: Fixed crash when closing the MXSession before the end of initial Sync.
Improvements:
- Improve offline mode: remove loading wheel when network is unreachable and color in red the navigation bar when the app is offline.
- Settings: Add identity server url in Configuration section.
- Application starts quicker on cold start.
- Home: Improve text inputs completion.
- Settings: Rename “Hide redacted information” option to “Hide redactions”, and enable this option by default.
- Settings: Rename the tab as “Settings” rather than “More”.
- Recents: Adjust fonts size for Room name and last messages.
Features:
- Added registration. It is implemented by a webview that opens the registration fallback page.
- SYIOS-75 - Tapping on APNS needs to take you to the right room.
- Manage local notifications with MXSession.notificationCenter.
- Recents: Set blue the background cell for room with unread bing message(s).
- SYIOS-68 - Rageshake needs to include device info.
- SYIOS-87 - Rageshake needs to report logs as well as screenshot
- When the app crashes, the user is invited to send the crash log at the next app startup.
- Logs: Make all NSLog calls follows the same format.
Bug fixes:
- On iPhone 6+ (landscape mode), keep open the selected room when user changes application tabs.
- Settings: Restore correctly user's display name after cache clearing.
- SYIOS-76 - The 'Send' button hit area is too small and easy to miss.
- SYIOS-73 - Text area input font should match that used in bubbles.
- SYIOS-71 - Current room should be highlighted in landscape mode
- SYIOS-79 - Partial text input should be remembered per-room.
- SYIOS-83 - When uploading an image, the bubble order jumps around.
- SYIOS-80 - Errors when internet connection unavailable are way too intrusive.
- SYIOS-88 - Rageshake needs to be less sensitive by x2 or so.
- Room History: App freezes on members display for room with a high number of members (> 500).
- Settings: Store the minimum cache size to prevent application freeze when user scrolls settings table.
===============================================
Improvements:
- MXFileStore stores data on a separated thread to avoid blocking the UI thread.
- MXRestClient: Callback blocks in all MXRestClient methods are now optional.
- MXEvent: Cleaned up exposed properties and added a description for each of them.
Features:
- Added API for registering for push notifications.
- Added generic API methods to make any kind of registration or login flow.
- Added Identity server API: lookup3pid, requestEmailValidation, validateEmail and bind3PID.
- Management of event redaction: there is a new method in the SDK to redact an event and the SDK updates its data on redaction event.
Bug fixes:
- SYIOS-5 - Expose registration API
- SYIOS-44 - Credentials persist across logout
- SYIOS-54 - Matrix Console app slightly freezes when receiving a message
- SYIOS-59 - Infinite loop in case of back pagination on new created room
- MXRoom: Fixed [MXRoom sendTextMessage]
Improvements:
- When long pressing on a message, the app shows the JSON string of the Matrix event.
- On this screen, the user can redact the event - if he has enough power level.
- Use home server media repository facilities to use lower image size for thumbnails and avatars
- Settings screen: show build version with the app version.
- Settings screen: added an option to hide information related to redacted event.
- Settings screen: added an option to enable reading of local phonebook. The country is required to internationalise phone numbers.
Features:
- Push notifications.
- Added a contacts screen that displays Matrix users the user had interactions with and contacts from the device phonebook.
- Contacts from the device phonebook who have an email linked to a Matrix user id are automatically recognised.
Bug fixes:
- SYIOS-53 - multilines text input that expands as you type mutiplines would be nice
- SYIOS-45 - Need to check the thumbnail params requested by iOS
- SYIOS-55 - High resolution avatars create memory pressure
- SYIOS-57 - Back pagination does not work well for self chat
- SYIOS-56 - add cache size handling in settings
- SYIOS-60 - In a self chat, Console takes ages to paginate back even if messages are in cache
- SYIOS-61 - Chat room : cannot scroll to bottom when keyboard is opened whereas the growing textview contains multi-lines text.
- SYIOS-63 - calculate room names for 3+ memebers if no room name/alias
- SYIOS-44 - Credentials persist across logout
- SYIOS-64 - Chat room : unexpected blank lines are added into history when user types in growing textview
- SYIOS-65 - IOS8 : in case of search in recents, keyboard is not dismisssed when user selects a room.
- SYIOS-16 Add option in Console to join room thanks to its alias
===============================================
Improvements:
- [MXSession startWithMessagesLimit] takes a new callback parameter to indicate when data has been loaded from the MXStore.
Features:
- Added typing notification API.
- MXRESTClient provides helpers to resolve Matrix Content URI ("mxc://...") and their thumbnail.
Bug fixes:
- Fixed 1:1 room renaming
- SYIOS-37 - When restarting Matrix Console from the cache, users presences are lost
Improvements:
- UX improvements.
- The app starts quicker thanks to data available in cache.
- Added a count of unread messages in the recents view.
- SYIOS-38 - UX improvement for updating avatar & display name in settings
- SYIOS-41 - File uploads (and downloads) should be able to happen in parallel, with basic progress meters
- SYIOS-25 - Console: display app version in settings
- Code improvement: Media Manager refactoring
Features:
- Typing notifications.
- Show progress information for uploading and downloading media. There is a pie chart progress plus network stats.
- Added pitch to zoom gesture on images
- Added bing alert. Bing words can be defined in the settings screen.
- SYIOS-28 - There is no way to view a user's mxid (or other profile info) on iOS
Bug fixes:
- SYIOS-33 - Current dev shows lots of rooms with blank recents entries which crash on entry
- SYIOS-42 - Avatar & displayname missing in the "More" tab
- SYIOS-43 - Recents tab on an iPad mini always shows a room view
- SYIOS-51 - spinner appears when backgrounding recents page
- SYIOS-50 - When you post a multiline message, the bubble vertical spacing gets confused.
===============================================
Improvements:
- The SDK is now available on CocoaPods ($ pod search MatrixSDK)
- Updated [MXRestClient joinRoom] to support both room id and room alias.
- SDK tests: Improved tests suite duration.
- The SDK version is available with MatrixSDKVersion
Features:
- Added MXFileStore, a MXStore implementation to store Matrix events permanently on the file system.
- SYIOS-2 - MXRoom: add shortcut methods like inviteUser, postMessage…
- SYIOS-3 - Add API to set the power level of an user.
- SYIOS-7 - Add the ability to cancel [MXRoom paginateBackMessages].
Bug fixes:
- SYIOS-10 - mxSession: myUser lost his displayName after joining a public room.
- SYIOS-9 - SDK should ignore duplicated events sent by the home server.
- SYIOS-8 - Reliable SDK version
Improvements:
- UX improvements.
- Cold start is quicker thanks to the permanent cache managed by MXFileStore.
- Recents: improve last event description.
Features:
- Use new Matrix content repository to generate thumbnails and store contents.
- Room view: display and edit room topic.
- Room view: support /join command (join room by its alias).
- Room view: support /op and /deop commands (power level handling).
- Post user’s presence (online, unavailable or offline).
- Use MXMyUser object (defined by SDK) to manage user’s information.
Bug fixes:
- SYIOS-18 - displaying keyboard has nasty animation artefacts.
- SYIOS-17 - Fudge around flickering during echos.
- SYIOS-15 - Entering a room should show all cached history from global initialsync.
- SYIOS-21 - All login failures trigger 'Invalid username / password'
- SYIOS-22 - Invalid username / password dialog box disappears automatically about half a second after appearing
- SYIOS-23 - With multiple devices, a message sent from one device does not appear on another
- Recents getting stuck after settings changes.
===============================================
SDK:
- Added MXStore, an abstract interface to store events received from the Home
Server. It comes with two implementations: MXNoStore and MXMemoryStore:
- MXNoStore does not store events. The SDK will always make requests to the HS.
- MXMemoryStore stores them in memory. The SDK will make requests to the HS only if required.
- Added MXRoomPowerLevels, an helper class to get power levels values of a room.
- Improved [MXStore resume]. It takes now a callback to inform the app when the SDK data is synchronised with the HS.
Matrix Console:
- Use MXMemoryStore to reuse events already downloaded.
- Use new [MXStore resume] method to show an activity indicator while resuming the SDK.
- In the recents tab, highlight rooms with unread messages.
- Added search inputs in public rooms and in recents.
- Prevent user from doing actions (kick, ban, change topic, etc) when he does not have enough power level.