Releases: famedly/matrix-dart-sdk
v3.0.2
v3.0.1
[3.0.1] 15th October 2025
- feat: Make display sending event configurable in Room.sendEvent() (Christian Kußowski)
- chore: tidy up call membership event (td)
- fix: Remove avatar crashes with invalid uri (Christian Kußowski)
v3.0.0
[3.0.0] 7th October 2025
Migration hints:
-
With extended profiles in Matrix 1.16 you now have to use
Client.getProfileField()instead ofClient.getAvatar()orClient.getDisplayname(). -
You no longer need to ship flutter_openssl_crypto. The necessary encryption algorithms now come from the Vodozemac package. This should make the platform integration much easier.
All changes:
- feat: Add deleteDeviceDisplayName() method to matrix API (Christian Kußowski)
- feat: Add onProgress for upload and download methods (Christian Kußowski)
- feat: Auto refresh last event after limited timeline (Christian Kußowski)
- feat: Implement get mentions from event content (Christian Kußowski)
- feat: Leave DM rooms and invite when ignoring a user (Christian Kußowski)
- feat: reactions for voip calls (td)
- feat: Set m.mention field when sending text event (Christian Kußowski)
- fix: (BREAKING CHANGE) remove only your device call membership if room is not msc3757 (td)
- fix: Set unread notification count only if not null in sync (Christian Kußowski)
- refactor: migrate to web and js_interop pkgs (Karthikeyan S)
- refactor: Return a better default for lastEventReceivedTime (Christian Kußowski)
- refactor: Support matrix spec 1.16 (Christian Kußowski)
- refactor: Upgrade to vodozemac cryptoutils (Christian Kußowski)
- chore: Remove unused callbacks (Christian Kußowski)
- chore: Remove unused dependency (Christian Kußowski)
- chore: Revert on upload progress (Christian Kußowski)
v2.0.1
[2.0.1] 9th Sept 2025
- fix: scheduled event list init (td)
v2.0.0
[2.0.0] 9th Sept 2025
There have been some breaking changes to the VoIP codebase. Specifically, you will have to pass your instance of the VoIP class to existing getCallMemberships* functions which are an extension on the Room class.
- feat: delayed and device owned state events support for group calls (td)
- feat: allow setting keyring size (td)
- feat: (BREAKING CHANGE) allow setting custom call timeout values, you will have to pass the voip class to a bunch of existing call related methods though (td)
- feat: also debounce join key rotation (td)
- fix: fix the issue that user avatar can not be loaded on windows (Eric Lin)
- fix: reuse a deviceId if available (td)
- refactor: (BREAKING CHANGE) you can now get the matrix eventId from CallMembership(s) (td)
- refactor: Allow room ids to not have a domain (Christian Kußowski)
- refactor: Clean up new dart version lints (Christian Kußowski)
- refactor: Make signableJson type safe with type safe class (Christian Kußowski)
- refactor: Remove dynamic in cross signing code (Christian Kußowski)
- refactor: Restrict canChangeStateEvent, canInvite and canSendEvent to joined users (Christian Kußowski)
- refactor: Restrict canKick canBan and canRedact to joined users (Christian Kußowski)
- refactor: Restrict canRequestHistory to joined or archived rooms (Christian Kußowski)
- refactor: Sync for unknown room in push helper and catch timeout exceptions (Christian Kußowski)
v1.1.1
[1.1.1] 7th Aug 2025
- fix: reuse a deviceId if available (td)
- refactor: Allow room ids to not have a domain (Christian Kußowski)
- refactor: Restrict canChangeStateEvent, canInvite and canSendEvent to joined users (Christian Kußowski)
- refactor: Restrict canKick canBan and canRedact to joined users (Christian Kußowski)
- refactor: Restrict canRequestHistory to joined or archived rooms (Christian Kußowski)
v1.1.0
[1.1.0] 14th July 2025
- fix: (BREAKING) Can not logout and login again with same Client object (Christian Kußowski)
- refactor: Clean up new dart version lints (Christian Kußowski)
Now if you logout and login again you will reuse the same database. In case you use
database encryption and want to use a new key, please consider recreating the database
like this:
await client.database.delete();
client.database = await MatrixSdkDatabase.init(/*...*/);v1.0.1
[1.0.1] 16th June 2025
- chore: Add hint to init vodozemac also in native implementations (Christian Kußowski)
- fix: exportDump and importDump and add unit tests (Christian Kußowski)
- fix: user.canKick should be true for knocking users as well (Christian Kußowski)
v1.0.0
[1.0.0] 10th June 2025
- feat: Migrate to vodozemac (Christian Kußowski)
- refactor: Make database non nullable (Christian Kußowski)
- refactor: (BREAKING) Make database required (Christian Kußowski)
- refactor: disable benchmarks by global boolean (#2104) (Krille-chan)
- refactor: Remove olm dependency (Christian Kußowski)
Breaking changes:
DatabaseBuilder deprecated
From now on the Client constructor expects an open database. Client.database is no longer nullable.
Before:
final client = Client(
'Client Name',
databaseBuilder: (_) async {
final database = MatrixSdkDatabase(
'<Database Name>',
database: await databaseFactoryFfi.openDatabase(':memory:'),
sqfliteFactory: databaseFactoryFfi,
);
await database.open();
return database;
},
);Now:
final client = Client(
'<Client Name>',
database: await MatrixSdkDatabase.init(
'<Database Name>',
database: await databaseFactoryFfi.openDatabase(':memory:'),
sqfliteFactory: databaseFactoryFfi,
),
);LibOlm deprecated in favor of Vodozemac
LibOlm is no longer used. From now on you should use Vodozemac.
For Flutter you can use flutter_vodozemac. This
just needs to be initialized once:
import 'package:flutter_vodozemac/flutter_vodozemac' as vod;
// ...
await vod.init();
final client = Client(/*...*/);This should work on Android, iOS, macOS, Linux and Windows.
For web you need to compile vodozemac to wasm. Please refer to the Vodozemac bindings documentation.
v0.40.2
[0.40.2] 5th June 2025
- fix: fallback on homeserver is userID null (The one with the braid)