Skip to content

Releases: famedly/matrix-dart-sdk

v3.0.2

24 Oct 06:48
v3.0.2
e3440c6

Choose a tag to compare

[3.0.2] 24th October 2025

  • chore: bump vodozemac version to v0.4.0 (Karthikeyan S)
  • refactor: merge onGroupCallState and onGroupCallEvent into matrixRTCEventStream with proper types (Karthikeyan S)
  • test: matrixRTCEventStream emitted events in a group call (Karthikeyan S)

v3.0.1

15 Oct 11:53
v3.0.1
62b9ce9

Choose a tag to compare

[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

07 Oct 09:35
v3.0.0
57f6d5c

Choose a tag to compare

[3.0.0] 7th October 2025

Migration hints:

  • With extended profiles in Matrix 1.16 you now have to use Client.getProfileField() instead of Client.getAvatar() or Client.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

09 Sep 15:03
v2.0.1
8ca2129

Choose a tag to compare

[2.0.1] 9th Sept 2025

  • fix: scheduled event list init (td)

v2.0.0

09 Sep 14:05
v2.0.0
41c0b27

Choose a tag to compare

[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

07 Aug 08:25
v1.1.1
471afbd

Choose a tag to compare

[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

14 Jul 13:01
v1.1.0
8cd4050

Choose a tag to compare

[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

16 Jun 10:13
v1.0.1
d010cbd

Choose a tag to compare

[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

10 Jun 10:22
v1.0.0
16cb116

Choose a tag to compare

[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

05 Jun 06:33
v0.40.2
207425c

Choose a tag to compare

[0.40.2] 5th June 2025

  • fix: fallback on homeserver is userID null (The one with the braid)