This release includes changes that you may need to be aware of before upgrading, such as the removal of two deprecated Admin APIs or a retroactive fix to ensure that email notifications are only sent to addresses which are presently associated with an account. Please see the Upgrade Notes for details.
Synapse 1.42 includes support for Room Version 9, which fixes an oversight in the list of event fields which were protected from redaction in Room Version 8's restricted rooms. This makes it possible, in certain circumstances, for a restricted room to degrade into a state where participating servers will disagree about the room's membership.
Because changing a room version's redaction algorithm also changes the way that event IDs are calculated, properly fixing this issue required the creation of a new room version.
To ensure compatibility with existing servers, Synapse 1.42's MSC3244: Room version capabilities hints will continue to ask clients to prefer Room Version 8 when creating restricted rooms and Room Version 6 otherwise. A future release of Synapse will ask clients to prefer Room Version 9 for restricted rooms.
Very rarely, users find themselves in rooms created with unstable or experimental room versions. Then, when Synapse removes support for these versions, bad things happen. The server no longer understands how to interact with that room version, which means you can't interact with that room. And if you can't interact with that room, you can't leave.
In Synapse 1.42, rooms with unknown room versions are no longer returned down /sync. This prevents them from appearing in your client, though you may need to empty your client's cache and re-sync to see any effect.
In addition to Room Version 9 (MSC3375), this release includes:
An initial implementation of MSC3231: Token authenticated registration, which makes it possible for homeservers to disable user registration while still allowing new accounts to be made by people who know a pre-shared secret.
This MSC and its implementations were produced as part of a Google Summer of Code (GSoC) project by Callum Brown.
An updated implementation of MSC2946: Spaces Summary following recent changes to the proposal.
In addition to the usual array of improvements to performance, type hints, error messages, and documentation:
Custom Presence Router modules can now be built using Synapse's new, unified module interface which debuted in Synapse 1.37.
Code around federation event handling and authentication has been significantly refactored to improve reliability and maintainability, including extracting nearly 1,800 lines of code from the FederationHandler class into a separate FederationEventHandler class.
Backfilling history and fetching missing events now use the same code paths, reducing the potential for bugs.
Concurrently fetching the same large set of events (#10703) is now much more efficient, preventing the process hangs which were possible in prior, extreme cases.
These are just the highlights; please see the Upgrade Notes and Release Notes for a complete list of changes in this release.
Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including aaronraimist, dklimpel, govynnus, and HugoDelval.
We forgot to mention that Doug is also the creator of Watch the Matrix! https://github.com/pixlwave/Watch-The-Matrix This allows you to use your Apple Watch as a native client (rather than through another iDevice)
These fellows all recently started to work for Element, and (claim!) to enjoy it. Element are HIRING, so if YOU think think you'd like to apply, check out https://apply.workable.com/elementio/ for current listings and details of how to apply.
We finally did it! We released Conduit Beta: https://conduit.rs/release-0-2-0, we even made it to the Hacker News frontpage: https://news.ycombinator.com/front?day=2021-09-02
This is huge news for us and hopefully we will see a lot more Conduit instances pop up in the near future.
Thanks everyone!
Congratulations to Timo and the gang, you're making superb progress!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
You may be wondering: what's up with all of these abandoned MSCs?? The answer is that the matrix-org/matrix-doc repo changed its base branch to main to help preserve the git history since the spec website rewrite. In doing so, all PRs were automatically updated to the new base branch by github... except those that were coming from deleted users and repos. Those ones were simply closed!
But as they seemed to be have been effectively abandoned by their authors, it was more of a cleanup than an accident. However, if your MSC was affected by this change and you would like to continue it, please contact someone in the #matrix-spec-office:matrix.org and we'll help you out.
MSC2448 defines a way for clients to include a "blurhash", or a short, textual representation of a blurred version of an image, inside events which other clients can show while waiting for thumbnails to download from media servers. This replaces the potentially blank space while an image's thumbnail is loading with a (IMO) beautiful alternative!
Yes I wrote this MSC... but I swear it's what the script picked! We do not question the script!!
Synapse 1.41.1 is out and it contains patches for two security vulnerabilities which could inappropriately disclose private room metadata to unauthorized users on a participating homeserver. Please upgrade.
Room Version 9 is coming in Synapse 1.42 next week. This version fixes an oversight in which event fields are protected from redaction in room version 8, making it possible for restricted rooms to break if a join event is redacted. Because event IDs are based on the redaction algorithm, we can't fix this without creating a new room version.
In the interest of compatibility across the federation, Synapse 1.42 will still instruct clients to create restricted rooms using room version 8. Synapse 1.43, scheduled for release on 21 September, will begin instructing clients to use room version 9 instead.
Hey folks! I had some spare time today so I've invested it into the matrix-github bridge. The latest work is GitHub discussions support. It's still needs a bit more testing / minor feature implementation, but I leave you with a screenshot below of how it currently integrates spaces!
We had a race between 3 Translators this week. All 3 of them were trying really hard, so in my opinion every placement is a first place, buuuuuut Thulinma actually came first by bringing the Dutch translation from 5% to 100%. A few hours later Priit came in as a close second updating the Estonian translation to 100%. ISSOtm noticed that and tried to catch up which resulted in a 3rd place finish for the French translation. Now I understand the excitement people feel watching others compete in sports without having to do anything themselves!
red_sky (nheko.im) meanwhile fought a much more difficult enemy, Apple documentation and code signing! To be honest, I expected him to be beaten, but Nheko's DMGs are now actually properly signed and notarized. So if you are on macOS, you should now see less ugly warnings when installing Nheko. All nightlies building of the master branch are signed as well as our future releases.
In more community contributions, resolritter fixed the right click menu not working on replies. So you can copy a link from a reply now by right-clicking it without having to scroll up. Thulinma fixed window alerts not working when using conduit, because Conduit does not implement the /notifications endpoint Nheko uses and he helped me debug and fix device lists not showing up when using Conduit as well as sessions always getting rotated in "Send encrypted messages to verified devices only" mode.
In our work to stabilize E2EE we also now require a proper secrets daemon running on Linux (and other platforms, but there it is always provided by the OS). This is used to store the pickle key as well as the cross-signing secrets, so that an attacker can't read the from the config file. We already used such a daemon before, but we failed silently and we didn't use it for the pickle key until now. So if this prevents you from running Nheko, please open an issue so that we can work on a solution. Those APIs can be really fickle so additional testing and feedback would help us out a lot!
Also exciting is that Nheko now supports playing encrypted audio and video files without storing a temporary unencrypted copy on disk as well as animated images like WebP and GIF! It took us a while to figure out a proper solution, but now you can send animated stickers and you will finally be able to understand why other people were lauging at still images. (We also had to fix some bugs in our sticker editor, where we didn't add the mimetype to the sticker info for that.)
Some more embarrassing news, I didn't know I was a moderator in #conduit:fachschaften.org, so I happily pinged everyone in the room while discussing room mentions. To prevent that from happening in the future, Nheko now shows a red warning above the message input if you will be pinging the whole room to give you time to reconsider. If that is not enough to stop me from doing that, we might require confirmation before sending such messages in the future, but so far this seems to work. Pinging everyone by accident can really scare you and composing a message in Matrix shouldn't be scary!
I hope I didn't forget anything and please make sure you check out Conduit, since they are doing a great job in revealing bugs in Nheko!
This release fixes a bug which makes it impossible to send images in unencrypted rooms. It also implements a complete new designed new chat page which now uses a QR code based workflow to start a new chat.
feat: Dismiss keyboard on scroll in iOS
feat: Implement QR code scanner
feat: New design for new chat page
feat: Use the stripped body for notifications and room previews
feat: Send on enter configuration for mobile devices
fix: Prefix of notification text
fix: Display space as room if it contains unread events in timeline
Weβve added an early, incomplete prototype of Threads to Labs
Bug fixes
iOS
App startup has been improved by x3 by lazy loading room messages and read receipts
Element-iOS is now iOS12 minimum. Code have been cleaned up
URL preview is still in progress but it should be available in the next release, 1.5.3
SwiftUI: There is now a target to run the Xcode project without the MatrixSDK to speedup SwiftUI preview. This is the first piece for the coming new screen templates
Android
Working on upgrading Android Gradle Plugin to 7.0.2 and other dependencies.
Set up GitHub actions and reduce the number of tasks run by Buildkite
Spaces PRs are merged one by one to develop, the feature will be available in the coming releases
Working on crypto: dehydrated devices, Olm fallback keys
This version of the simplematrixbotlib package adds the ability to send messages formatted in markdown via the bot.api.send_markdown_message() method. Example usage is shown below:
#### Respond to all messages from users with a hello world message that involves markdown formatting
import simplematrixbotlib as botlib
creds = botlib.Creds("https://home.server", "user", "pass")
bot = botlib.Bot(creds)
@bot.on_message_event
async def hello_world_md(room, message):
match = botlib.MessageMatch(room, message, bot)
markdown_message = "# Hello World from [simplematrixbotlib](https://github.com/KrazyKirby99999/simple-matrix-bot-lib)!"
if match.is_not_from_this_bot():
await bot.api.send_markdown_message(
room_id=room.room_id,
message=markdown_message)
bot.run()
We're getting very close to a real App Store launch. The latest beta release this week is 0.98 This version might be The One! So please, if you haven't tried Circles in a while, give this one a shot. Also please share the link with any friends and family who you think might be interested. The current signup token has plenty of slots for everyone.
If you want to see some activity in your circles, invite me to follow your Community circle and I'll invite you to follow back. I'm @cvwright:kombucha.social.
If you've been using Circles with your own (non-Kombucha) server, you probably DO NOT WANT this version. Support for bring-your-own-server will return very soon after our App Store launch.
Broke and then re-enabled new account signup. Thanks to everyone who helped diagnose this one, and sorry if you were unable to sign up using a recent build.
Fixed a weeks-old bug where posting a message into a circle would then send you back to your list of all your social circles. Big thanks to Yosef for bringing this to my attention.
Fixed a bug in recent 0.9x builds where the Matrix rooms underlying circles and groups were being created with invalid encryption parameters. If you've been unable to post anything, this is the likely culprit. The fix is to update to the latest build, then delete your old circles/groups and create new ones.
We have a new icon. It's blue! I was worried that Apple might think the old icon looked too much like the Apple Photos icon.
New and improved interface for managing your account information. Added support for changing your password and for deactivating your account. I hope you never want this last one, but Apple requires it for apps that allow you to create accounts.
Removed support for Markdown formatting in posts and image captions. This is a sad one, but unfortunately the performance of the open source library that we were using for Markdown just wasn't up to the task. On the bright side, our timelines load much more quickly now, and the scrolling should be much smoother. Look for Markdown support to return with the release of iOS 15 later this year.
Another update to the Recent Activity list. Now it should refresh itself automatically if/when it initially comes up empty.
The CoMatrix project enables the usage of the Matrix protocol (more precisely Matrix Client-Server API) for constrained IoT devices via CoAP and CBOR in a constrained network (e.g. a 802.15.4/6LoWPAN network).
CoMatrix provides a gateway, which ports Matrix to CoAP/CBOR/(DTLS). This gateway communicates with constrained IoT devices on one side via CoAP+CBOR and translates to the Matrix protocol on the other side (i.e. HTTP+JSON). CoMatrix also provides a client library (for RIOT-OS) which is a starting point to implement CoMatrix clients (for constrained devices) which are able to interact with Matrix homeservers via the gateway.
Currently CoMatrix supports the following features:
I have made a small 120k pipeline-agent software (including all dependencies except NodeJS v8) which can run on multiple platforms (including OpenWRT) and takes pipeline work over the Matrix protocol. In the end it's going to be used to setup things like VPN connections between gateways.
We also have a commercial web portal almost published where one can create web apps and configure pipelines to process the results. And yes, the portal also uses Matrix as its persistent storage -- it was implemented using my Matrix CRUD Repository from last week :)
The agent software (pipeline-runner) is open source and has zero (0) runtime dependencies except NodeJS, and available from here: https://github.com/sendanor/pipeline-runner -- It's still in early development, though.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
"Discover music through peers - Please write a small description of your discoveries. No uploads of non-free music please. For discussions and chat please visit the room's sibling #musicdiscussion:matrix.org "
Today we are releasing Synapse 1.41.1, a security update based on last week's release of Synapse 1.41.0. This release patches two moderate severity issues which could reveal metadata about private rooms:
GHSA-3x4c-pq33-4w3q / CVE-2021-39164: Enumerating a private room's list of members and their display names.
If an unauthorized user both knows the Room ID of a private room and that room's history visibility is set to shared, then they may be able to enumerate the room's members, including their display names.
The unauthorized user must be on the same homeserver as a user who is a member of the target room.
GHSA-jj53-8fmw-f2w2 / CVE-2021-39163: Disclosing a private room's name, avatar, topic, and number of members.
If an unauthorized user knows the Room ID of a private room, then its name, avatar, topic, and number of members may be disclosed through Group / Community features.
The unauthorized user must be on the same homeserver as a user who is a member of the target room, and their homeserver must allow non-administrators to create groups (enable_group_creation in the Synapse configuration; off by default).
Note that in both cases:
The private room's Room ID must be known to the attacker.
Another user on the attacker's homeserver must be a legitimate member of the target room.
The information disclosed is already present in the database and thus legitimately known to the administrators of homeservers participating in the target room.
We'd like to credit 0xkasper for discovering and responsibly disclosing these issues.
This release also fixes a small regression in 1.41.0 (#10709) which broke compatibility with older Twisted versions when Synapse was a configured to send email.
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
MSC2582 (Removing mimetype from EncryptedFile object) was one of those MSCs that were relatively small, but had been languishing for ages. Partly because it required client implementations to update, but also partly because one needed to go in after a while and actually confirm that all known clients had updated. @uhoreg took up the mantle on his own to do so, and as a result this MSC has hit FCP and is soon to be merged. Thank you!
Alongside MSC2957 and MSC3265, this MSC is requesting a better way of communicating one's password to the homeserver without sending it in plaintext (over TLS, hopefully).
Remember that this is only done in exchange for an access token, which is then used for all subsequent requests. Still though, I can see the merit!
Synapse 1.41.0 is out! Check the release announcement to find out about all of the details, including progress on MSCs, great new Admin APIs, and the ability to handle the /createRoom endpoint on workers. As mentioned in last week's TWiM, Synapse 1.41 uses MSC3244: Room version capabilities to tell clients that they can and should use Room Version 8 when creating restricted rooms. The future is here!
We've also stopped publishing Debian packages for Ubuntu 20.10 (Groovy).
β οΈ We expect to publish a security release Synapse 1.41.1 on Tuesday, 31 August which fixes two moderate severity issues.
Lastly, the Synapse team would like to extend a warm welcome to Sean Quah, who joined Element's backend team this week. Welcome, Sean!
This release adds more functionality for spaces, enhances the html viewer, adds a brand new video player and brings some improvements for voice messages. Thanks to everyone involved!
Please note: It will take some days until it arrives in all appstores.
This week Tobias implemented blurhash in NeoChat for a smoother image loading experience. Tobias also continued working on E2EE and this past week his focus was on decrypting encrypted files.
Ement.el, a Matrix client for Emacs, gained some more improvements this week:
Multi-account support was merged, so you can now use multiple accounts at the same time. You can even be in the same room in two different accounts, at the same time, in side-by-side windows (which is useful for testing). (Note that existing users will need to log in again, because the format of the saved-session file changed.)
Rooms you have been invited to now show up in the rooms list, and you can join them by clicking a button in the room's buffer.
Encrypted rooms now display a warning in the header and suggest that users consider using Pantalaimon.
Membership events are now formatted more usefully, similar to Element's style.
Completion for room and user names and IDs is implemented using standard Emacs commands and bindings (i.e. C-M-i by default).
The last-read marker may be jumped to, even if it's at an earlier event that has not yet been retrieved.
Emotes (i.e. /me-style messages) can be sent by pressing e.
Timestamps in the room list are shaded according to how "hot" (i.e. recently updated) the room is (see screenshot).
Nheko now supports uploading to online key backup and warns you before enabling it, that we don't recommend using the asymmetric version. If you update to one of the current builds (and or the next version), you will also experience a bit longer load times on first startup. That is because we force-cleared the cache to be able to handle the new goodies like spaces and sticker/emote-packs. In the best case, everything is seamless.
We also had contributions by various people:
resolritter cleaned up that while tab moved you down most popup lists, it didn't move up when shift was pressed.
Harmathy extended the FAQ to answer commonly asked questions like "Does Nheko support E2EE" or "What commands are supported". Don't worry, we know most of you won't read that and will still answer that question when you undoubtedly come asking it again. We just can now be even more passive aggressive than just pointing at the right wiki page. Instead we will point at the FAQ now, which will point at the wiki!
thombles made the emoji completer behave more nicely. Instead of jumping to the bottom left corner before closing, it will now just close. It should also now behave correctly when selecting text.
alfasi updated the install instructions for Gentoo.
I'm not sure we have ever seen that many new faces contributing to Nheko in a week, I'm pretty happy to see that!
Busy week in Fractal land! It is the end for GSoC, but itβs not really over. While some merge requests from our interns are still ongoing, Julian merged a bunch of them. On Kaiβs side, the long awaited Room details are finally here. Alejandro, on the other hand, landed code to get display name and avatar of accounts at startup.
Circles is a project to build a secure, end-to-end encrypted social network on top of Matrix. The iOS app is currently in the final stages of beta testing in preparation for a 1.0 release.
Updates this week include:
Fixed a bug that prevented some new users from registering. If you tried to sign up last week but the email validation failed, please give it another try with the latest build.
Cleaned up the "Home" tab for a simpler, cleaner look.
Fixed a bug where the summary of recent activity was failing to load on app startup. Also added a manual "refresh" button as a fallback.
If you would like to try the latest Circles beta (v0.93), you can get it from Apple here
Room version 8 was marked as the preferred version for MSC3083 restricted rooms on matrix.org and in Synapse 1.41, released this week. This means Element clients can now show UI to create restricted rooms within a Space, and prompt users to upgrade rooms if necessary when making them restricted.
Improvements to the performance of the room summary API.
Lots of testing of Spaces in anticipation of it leaving beta.
VoIP
Fix cases where a call ringtone would continue even after the call was answered.
Add active speaker indicators when a user in a call is currently talking.
Working on showing call duration in call tiles.
Web
Weβve released 1.8.2 RC3 which includes fixes to windows font rendering, blur hashing and accessibility improvements, and other bugs.
Our internal threads prototype is in code review.
This week, weβve been doing more work on threads, fixed some more cross-signing bugs, iterating on more compact replies, and investigating our process for translations.
iOS
Continue to work on URL preview.
App Navigation improvement: Continue to work on room navigation.
Account notification settings are now available.
Voice message rendering and playback fixes have been made.
We added a banner to advertise that iOS 11 will be dropped soon.
Room creation: prevent room duplication on creation.
Media upload sizing: Continue to improve media size selection.
Android
We are still improving the experience with Spaces
Notifications setting will be updated in the next release, with the ability to get notified when keywords are included in any message (only on un-encrypted rooms for now)
Working on Olm fallback key support
Besides that we are fixing bugs across the application and the SDK. We have fixed the issue of crashing when opening a room on devices running API 21. The fix will be in the next release.
It's been so long since our last update that I couldn't possibly list all of the individual changes, but here's a rough overview of the work since then (three months ago):
There's been loads of bug fixes, many compatibility improvements and at least one large refactoring. We've been much faster about releasing changes to crates.io after ruma 0.1.0, now we're already at ruma 0.4.0 (!); the changes needed to upgrade are really not that significant though. Notable areas of improvement are
UIAA: No more stringly-typed auth type + map of properties. The AuthData enum that holds the authentication information clients send to servers now has one variant for every auth type defined in the spec.
Event relations: These used to be serialized wrongly for encrypted events and were only (de)serializable as part of a larger event (making using them in custom ways impossible). Both of these issues were fixed.
If you want more detailed updates about Ruma, please watch our repository's GitHub releases, since nobody in the project currently wants to write regular blog posts or TWIM updates (if you are interested in changing that, get in touch over at #ruma:matrix.org).
This week a new stable version of libQuotient, 0.6.8, has been released. While the main focus has been fixing bugs and sustaining the codebase, one significant highlight is that read receipts and fully read markers are distinguished now, which should improve interaction with other clients that has been treating them differently for quite some time now. This version is anticipated to become the base of the upcoming Quaternion 0.0.95.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
"Channel dedicated to games running in terminal environment (or one that looks like terminal) As long as the game could be easily ported to terminal, it belongs here :) Telegram: t.me/cligaming"
If you want to suggest a room for this section, tell me in #roomoftheweek
NOTE: We anticipate publishing a security release next Tuesday, the 31st of August.
Synapse 1.41.1 will contain fixes for two moderate severity issues.
Synapse 1.41 includes changes to forward proxies, template settings, and media workers which may require your attention. Please see the Upgrade Notes for details.
Also, this release removes support for Ubuntu 20.10 (Groovy Gorilla), which reached End of Life last month. Support for Ubuntu 18.04 LTS (Bionic Beaver) and Ubuntu 21.04 (Hirsute Hippo) will be withdrawn near the end of this year under our platform deprecation policy.
Synapse 1.41 includes experimental support for MSC3244: Room version capabilities, which indicates to clients that they should use Room Version 8 when creating restricted rooms. For example, Element's clients will use the MSC3244 metadata, which is on by default in Synapse 1.41, to determine whether to show end users the UI for creating restricted rooms.
Room Version 6 will remain the default for newly created rooms which do not explicitly request the restricted room capabilities at creation time. This strikes a balance between the broad compatibility of an older default room version, while still making newer features available upon request.
Synapse can now route outbound federation requests, remote media downloads, and public key fetches through a forward proxy.
Custom template configuration has now been centralized into a single custom_templates_directoryconfiguration setting.
Matrix clients which allow users to set a status_msg with their presence will find that Synapse no longer arbitrarily unsets the message when a user goes offline. Instead, each user's status_msg will persist until it is deliberately cleared by their client.
The extension module API now exposes a function, get_userinfo_by_id, which accepts an MXID and returns a UserInfo object. This should simplify writing extension modules like spam checkers.
These are just the highlights; please see the Upgrade Notes and Release Notes for a complete list of changes in this release.
Bridge team has been busy, on the EMS side we've released Signal/WA for early bird testing.
Landmark changes in bridge libraries: we've released 3.0.0-rc1 of matrix-appservice-bridge. Both the IRC bridge and the Gitter bridge have tested it with great results.
Tadzik has been making massive gains on the IRC bridge, formatting tweaks and bugs being nailed.
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
Otherwise, there has been a small amount of activity across the spectrum of MSCs this week. One MSC to call out is https://github.com/matrix-org/matrix-doc/pull/3283, which could do with some more input from the wider community.
This week, we tagged the v0.5.0 release candidate, which contains two major advancements on the encryption front: support for server-side key backups and support for cross-signing. The addition of these features makes Dendrite significantly more user-friendly, as it is now possible to log out or share keys across devices without losing your conversations.
We'll be aiming to finalise this release next week. Stay tuned in #dendrite:matrix.org for more details.
Sytest compliance currently sits at:
Client-server APIs: 65%, up from 61% last time
Server-server APIs: 92%, same as last time
Those sytest numbers!! Might be time to start playing with dendrite?
We are on track to release Synapse 1.41 next week. This version will use an unstable property proposed by MSC3244: Room version capabilities to advertise to clients that they may create restricted rooms using Room Version 8, despite the default room version remaining at 6 for the time being.
This strikes a balance between the broad compatibility of an older default room version, while still making newer features available when requested at room creation time. However, from next week you are more likely to encounter v8 rooms, so please do ensure your homeserver is running at least 1.40.
I'd also like to tip my hat to Element employee Olivier, who has put in the work to ensure that tagged Sygnal releases are automatically built and uploaded to Docker Hub via GitHub Actions. Thanks, Olivier!
Heisenbridge is a bouncer-style Matrix IRC bridge.
Automatic queries (DM rooms) from IRC users can now be disabled and a query opened manually if needed (messages appear in network rooms)
Plumbs can now be set to not do disambiguation or ZWSP injection
Small cleanups and fixes
Heisenbridge is now considered stable and v1.0.0 has been released! π» π₯³
Focus is shifting to v2.0.0 which will be a major refactor. The 1.x series will at least receive bug fixes if not features. Do note that if you are using the master branch or latest tag for Docker it may cause a breaking change in the future when the work starts being merged. Highly suggest moving to version tags regardless of the deployment method. If you are using matrix-docker-ansible-deploy it has been updated to v1.0.0 as of writing so pulling the latest master there is advised.
If the car wasn't enough, I bring more news! Our matrix.org bridge library, matrix-appservice-bridge has had a total shakeup. Version 3.0.0-rc1 is out and with it comes the migration from the matrix-js-sdk to the matrix-bot-sdk. This is a massive change underneath that should result in faster performance, better typings and hopefully lower memory footprints too.
I'd encourage everyone using this library to update and see how well it works for you! The IRC and Gitter bridges have already experimented with this change and have seen good results, so I look forward to hearing feedback :)
(See details about the referenced car below and in Matrix Live above)
This week Janet improved receiving files in NeoChat. Now downloading a file can be stopped, a file type icon is displayed and it looks better! Other than that Felipe Kinoshita made some small visual improvements to the day separator in the timeline and Tobias continued working on E2EE inside Quotient.
Tomorrow Tobias and I will be doing a small presentation/demo of NeoChat at frOSCon in German. It's online so you don't have any excuse to not watch it: https://programm.froscon.de/2021/events/2711.html
Nheko now shows you the verification status of all devices in a room as well as in the memberlist. This is important so you can tell, if an unverified device may get access to a message, if you send it. You can always disable sending messages to unverified devices for extra peace of mind.
manu's room directory (finally) got merged. This means you can now discover public rooms on your server and join them by clicking the room directory button, that Nheko had for 3 years but was disabled until now! Support for the room directories of other servers as well as filtering by network should come in the future.
There is now an "Allow them in" button on pending knocks in the timeline, joins via room membership in a different room now tell you, what user's server was used to sign off on the join and you can set a room to restricted or knock only. (You currently can't change the list of allowed servers though).
Dialogs should now have a close button again on Windows, the emoji search field now clears on closing the emoji picker and we added a workaround for stickers not showing on Element iOS, because iOS can't display stickers without a thumbnail, even if a thumbnail makes no sense for stickers. (We just copy the sticker url into the thumbnail url.)
Nheko can now download encryption keys from online key backup. Uploading to online key backup will come soon(tm).
If you are interested, I will talk about Nheko tomorrow (21.08. starting 16:10) at FrOSCon in the Matrix dev room. Make sure you check out the other talks too, if you speak German! https://programm.froscon.de/2021/events/2706.html
This week, our web, iOS and Android engineers are all enjoying some time off.
On backend, weβve completed pagination of the Spaces Summary. This week, weβve been looking at performance improvements to the Summary API.
We intend to mark room Version 8 as the preferred version for MSC3083 restricted rooms on matrix.org and in Synapse 1.41 (due for release next week) via MSC3244. Once this change is made, Element clients will show UI to create restricted rooms within a Space, and prompt users to upgrade rooms if necessary when making them restricted.
Our design team is exploring some tweaks on how to make Spaces a little bit clearer and easier to understand.
Web
We released 1.8.1 which fixed some regressions with calls - sorry for any failed calls!
Work on our threads prototype continues. Weβre hoping to have something to look at internally next week.
Sentry submission support has been added to Rageshakes. We expect to enable this on https://app.element.io next week.
Weβve been fixing some bugs around cross-signing, Windows font rendering, and image blur hashing.
Our new triage process has been published on the wiki.
iOS
Element Alpha work is complete. This is a new app for internal testing. A QR code is available on every PR like this one to install the build on a device. Only devices registered in the Element Apple Developer account can install this app.
Improved notification content: No more βMessageβ notification.
Fixed some timeline layout issues.
Media upload sizing: We added a prompt when sending video to select the resolution of the sent video. Media size prompt can be disabled in settings.
URL preview work has started.
App Navigation improvement: Working on room navigation to prepare the ground for threading.
On the performance side, we are working on room messages lazy loading to improve application speed.
Android
Fix authenticated jitsi not working in release (proguard issue)
Handle call ended reasons (busy, invite timeout).
Working on Olm fallback key support
Work on call ui and call tiles is finished, waiting to be reviewed
Start working on extracting API client from the SDK
Polyjuice Client v0.4.2 has been released. This release features more functions for creating messages, including file and media messages (thanks to multi prise), replies, reactions, and edits. Polyjuice Client can also now be considered a serious Matrix library as it has a new function to generate rainbow-coloured messages! π Multi prise has also added support for registering a new user, redacting messages, and searching the user directory.
Polyjuice Util v0.2.1 (an Elixir library for Matrix features that can be used on both the client-side and server-side) was also recently released. The main feature for this release is support for handling Matrix URIs, and supports mxc:, matrix.to, and matrix:-style URIs.
Version 2 of Simple-Matrix-Bot-Lib will release very soon. It is complete in all but the documentation. If you would like to try version 2 early, you can find it on a branch of the git repository here https://github.com/KrazyKirby99999/simple-matrix-bot-lib/tree/v2.
Some of the changes are shown below:
Version 1
Version 2
Summary
bot.add_message_listener(example_handler)
@bot.listener.on_message_event or @bot.listener.on_custom_event
In version 1, each the bot.add_message_listener method was used on message handler functions for them to react to messages. In version 2, this has been replaced by a decorator, @bot.listener.on_message_event. A similar decorator, @bot.listener.on_custom_event(event) can be used to react to other events. For information on supported events, refer to the matrix-nio docs.
In version 1, the only way to login to a homeserver was to use a combination of a username and password. In version 2 it is also possible to login using a SSO login token as well. As before, the homeserver argument is required, and the session_stored_file argument is optional.
match.args #For message "one two three", returns "two three"
match.args #For message "one two three", returns ["two", "three"]
In version 1, match.args returned a string. In version 2, match.args returns a list of strings.
These changes are only some of the most important changes between versions 1 and 2, and there are more changes in addition to these. I apologize for the delays in releasing version 2.
Mjolnir v0.1.19 is out now with a voice message protection built-in (ideal for public communities where voice messages can't be easily moderated) and updates to the shutdown room command to support modern Synapses. Check out !mjolnir protections after upgrading, and visit #mjolnir:matrix.org for help and support.
Since element now landed voice message support I build a small maubot plugin which prevents audio and voice messages as those cannot yet get restricted by power level.
It starts by warning you via replies, after a configured amount of warnings goes over to kicking and after a certain amount of kicks it will ban you in the room the event was sent in.
The counter is global so if a user in room A runs out of warnings and the same user sents a voice message in room B where the bot is present the bot will ban the user also in room B without further warnings.
New version of Middleman, the helpful relay bot in the middle. Version 0.2.0 in addition to various smaller changes and fixes, enables sending out messages from the command room to any room the bot is in, supports relaying notices (so you can command other bots using the Middleman bot π€) and adds support for flagging certain rooms as "mention only", in which case only mentions are relayed.
Howdy folks, it's been aaaaages since I've done mad little project but I had some LEGO and was bored on a Sunday. I present to you matrix-poweredup! This is a little bot that connects to any LEGO PoweredUp devices (using the node-poweredup library). You can then start controlling the motors via Matrix, and have the sensors report back into the Matrix room. It's currently limited to a RC buggy I picked up over the weekend but it's very extendible. It also includes a web application to control things via a gamepad, if that's your bag.
There will be a little demo at the end of Matrix Live, so watch this space
As a few of you noticed the pages are currently down due to some mess that happened (not going into detail on purpose here).
The pages however will soon come back. I am now using the time they are down to improve the code and some pages on it. So dont be worried it is not dead but it will come back as soon as I get those changes done π
Circles is an iOS app for end-to-end encrypted secure social networking and sharing, built on top of Matrix. Its goal is to provide a safe and convenient way for close friends and families to share things that they wouldn't post publicly -- e.g. for parents to safely share pictures of their kids. You can also use it to share updates with your friends, without a creepy advertising company data mining every word.
Circles features include:
Social "wall"-like functionality and timeline of friends' posts for each of your social circles, e.g. Friends, Family, Neighbors, Coworkers, etc.
Private groups
Encrypted photo galleries
Recent updates to the Circles beta include:
Support for use with any Matrix homeserver, including a new encrypted recovery and key backup mechanism that should be compatible with other Matrix clients like Element. (Please note: For use with standard Matrix accounts, be sure to select "Advanced options" at login and enter your passphrase for key backup / recovery.)
Emoji reactions
Markdown formatting for text posts and image captions
Better support for larger screens (iPad)
The latest beta build of Circles (v0.91) is available from Apple on TestFlight
As a hobby, I built a website called Digital Justice. It's a website that explains in layman's terms what certain digital topics are (like data sovereignty, software autonomy and abandonware continuity) and why those topics matter.
The website may be a bit too simple for privacy gurus who know their stuff, but it's meant as an accessible resource to help people understand why privacy matters. Feel free to use the website as a resource, share the RSS feed or use it as a FAQ to your colleague who doesn't understand why you're so adamant on using an open communication protocol.
If you'd like to see something corrected or would like to add something to the website, the source code's here and you can always contact me through the website.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
"Friendly Physics Related Discussion Talking Point: LIGO & Hawking's area theorem https://tinyurl.com/nzuaaepv Book Club 22nd August 15:00 BST | Bishop & Goldberg (manifolds) | Book Club Site: https://tinyurl.com/2sn9upx2 +stardust:matrix.org"
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://matrix.org/docs/spec/proposals.
Work on Spaces continues with MSC2946 (Space Summary API), specifically revolving around how to paginate the summary. This has called into question how pagination across Matrix works in general, which is a prime target for refactoring - perhaps an upcoming consistent pagination MSC? :)
Otherwise, as listed above, MSC3289 (room v8) has merged! It brings with it the ability to grant the ability to join a room based on one's membership in another room. While the was originally conceived for allowing users that are part of one Space to be allowed to join rooms, it has been built upon in other creative ways. Such as in MSC3325, where it could be used to make room upgrades more seamless!
And finally, a special thanks to Lukas Lihotzki for all of their spec PRs this week. They're been stellar!
Big news! Synapse 1.40 is out and it comes with support for Room Version 8! Version 8 includes "restricted rooms" which are only visible and joinable by members of a specific Space (or via direct invitation). This finally makes it useful to use Spaces as containers for private rooms, like you might with a company, guild, or open source community. Once invited to the parent Space, members can join and discover the otherwise private rooms within. No more /invite spam every time you bring someone on board!
Also: If you've received any push notifications in Element Android or Element iOS this week, they've come via our shiny new stateless release of Sygnal! If you haven't received expected push notifications on those platforms this week... please alert us immediately. π
Lastly, Element is overjoyed to welcome David Robertson to the Synapse team. Welcome aboard, David!
Exciting update this week on the MSC2716 front for backfilling historical messages into existing rooms! All of the bigpieces are now merged for full-fat federated historical messages in Synapse πͺ
MSC2716 was also consolidated and updated to propose the /batch_send implementation we're using in Synapse. There is also a plan for how this can be backwards compatible with existing room versions so no need for those pesky room upgrades. This will help us be able to jump in early and use this for Gitter as soon as the new event types become stable. Go jump in on MSC2716 to give feedback and read up on the details π
Ement.el, a Matrix client for Emacs, continues to improve. Some of the changes in the past week:
Additions
Messages may now be written in Org-mode syntax (a format similar to but more powerful than Markdown). Internally, it's automatically converted to HTML and sent as the message's formatted body. This supports nearly any HTML feature that Org-mode can export to, including rich text, bulleted and numbered lists, and even tables (this message is being written directly in Org syntax; see a table of new bindings at the end of this list).
An optional pop-out compose buffer makes writing and editing long messages easier (also being used for this message).
Read/fully-read marker lines are now displayed after the last read message, and these are synced with the server and other clients. These lines can also be placed with a command, making it easy to return to a certain event later, even on other clients.
Usernames at the beginning of messages may optionally be colored to match the addressee's username. This especially helps following conversations in busy rooms.
Ement.el is confirmed to work with Pantalaimon, the E2EE-aware reverse proxy, making encrypted rooms work transparently. Once Pantalaimon is installed and configured, connecting through it with Ement.el is trivial, and this step is documented in the readme.
Improvements
Per-user displayname and message colors have improved (and configurable) contrast ratio with the background color.
Reactions are sorted by the number of users who have sent each one.
Unread rooms are displayed more prominently in the room list.
New default bindings make it quick to jump to the mentions and notifications buffers.
Sync timeouts are handled more gracefully and Ement.el re-syncs automatically.
Various minor fixes and enhancements.
And here's the new-bindings table, written directly in Org syntax and sent automatically as HTML:
The tool for migrating communities to spaces in Element Web has been completed
Lots of accessibility support for Spaces in Element Web
Preparing Element Web to take Spaces out of Labs
Pagination of the spaces summary now works for local rooms, we're continuing work on fetching data over federation.
On iOS, weβre working on exploring rooms and browsing users in a space
Web
v1.8.0-rc1 is available on https://staging.element.io/
Work on threads continues - we are narrowing down on a first prototype based on treating chained replies as threads
Weβve spiked support for Sentry which will give us more insights into how the app is working in the wild
Support for hot module reloading for React components, following last weekβs work on CSS hot reloading
Improved the look and feel of image blur hashing by adding some animations
iOS
The release candidate 1.5.1 is available for testing on TestFlight. Voice messages are enabled by default
Towncrier is now enabled on all of our 3 repositories
Reaction count got a fix. Please rageshake if you see unexpected count
Notifications content has been fixed or improved
Element alpha is almost finished. This is a new app that we will use for internal testing. There will be a QR code on every PR like this one to install the build on a device. This device must be part of our ad-hoc device list
On the performance side, the incremental sync has been improved and merged on develop. Next is lazy loading room messages
Android
We made 2 releases this week: 1.1.16 to fix a regression that prevented sending messages in e2ee rooms and 1.2.0 with voice messages enabled by default
Voice messages have been improved before the release
We continued to update the call UI with call tiles in the timeline
You now get notified, if someone reuses a megolm session index, because that in theory could be used by an attacker to send seemingly verified messages. We also now render decryption errors more nicely and users can now explicitly request decryption keys (in addition to the automatic key requests in the background that already existed). We also fixed an issue, that could corrupt the database when using the flatpak and if you lost your network connection, Nheko should now reconnect faster instead of potentially waiting 17 minutes for a TCP timeout. The storage for cross-signing secrets should now be more reliable, you can close image popups with the "Escape" key, close the current room by double clicking it and a few more miscellaneous bugfixes.
You can track the remaining E2EE bits, before we declare our E2EE support as stable, in this comment now: https://github.com/Nheko-Reborn/nheko/issues/23#issuecomment-894689158
It has learned how to handle images / videos, and can now insert them directly into the rendered markdown. Creating new posts has been significantly simplified and now makes even less work for the author. For example, Hebbot now automatically generates a command to quickly download all images/videos at once.
Maybe other communities are interested in creating a "This Week in X" blog as wellπ?
I find "read it later" services like Pocket extremely useful, but fail hard at actually keeping my read it later list at a sane level. For me it's hard to maintain the list and actually read through things as choosing which one to process feels overwhelming due to the amount of items.
Randomization to the rescue! I made a Pocket plugin for Maubot which gives me a random article from my list and allows me to easily archive it. Now I don't need to decide which article to pick, the computer does that for me!
Source code and info: https://github.com/jaywink/maubot-pocket
Ps. Maubot is truly awesome as a bot system, well documented and easy to develop on π»
Bornhack is a 7 day outdoor tent camp where hackers, makers and people with an interest in technology or security come together to celebrate technology, socialise, learn and have fun.
This year, AsbjΓΈrn and I are hosting a couple of events related to Matrix:
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
This release of Synapse includes stable support for Room Version 8! Version 8 codifies a concept of "restricted rooms" which are private rooms joinable only by direct invitation or by being a member of other, designated Spaces / rooms.
This means you can create a Matrix Space for your company, team, or guild, and instead of inviting people to the Space and directly to a bunch of private rooms, you can simply configure your private rooms such that membership in the Space automatically confers access to the private rooms.
This is a major improvement to access control in Matrix, and we can't wait to use it ourselves.
Note that client support for managing restricted rooms is still forthcoming, and you'll want to ensure that your users are on homeservers which support v8 before upgrading existing rooms. To ensure compatibility across federation, the default for newly created rooms remains at v6 for the time being.
Synapse can now optionally recycle PostgreSQL connections after a specified number of transactions (#10440), which may mitigate slow memory leaks in the database. Thanks to GitHub user hifi.
We have a whole new documentation page explaining Room DAG Concepts like depth, stream ordering, extremities, outliers, and state groups.
The Admin API for listing accounts now returns a creation_ts property indicating when an account was created. Thanks to work by dklimpel.
Synapse should better detect character encodings in URL previews thanks to a contribution by srividyut.
MSC2033: The /account/whoami endpoint now includes the device_id associated with the access token used to make the request.
(Experimental) MSC3244: The /_matrix/client/r0/capabilities endpoint may include metadata about which room versions support which capabilities (like knocking on restricted joins).
(Experimental) MSC2285: Clients may mark messages as read on the server without updating their externally visible read receipts, implemented by SimonBrandner.
These are just the highlights; please see the Release Notes for a complete list of changes in this release.
Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including dklimpel, hifi, SimonBrandner, and srividyut.
I'm taking over hosting This Week In Matrix again to give Ben a well-deserved break. Your favourite TWIM host will of course be back next week, but in the mean time, let's see what Matrix goodness has happened this week!
It's demo week again this week! We've got three great demos to share with you this month:
Robert, the latest addition to the Matrix VoIP team, gives us a sneak peek at his experiments with implementing native full mesh video calls in Matrix
Gil, from the Element iOS team, gives us an update on the implementation of Spaces in the app
and finally Ryan, who's been exploring ways to use Matrix beyond chat, shows us his shiny new full stack integration test solution for Matrix client and servers
And I hear there might also have been a bonus demo that managed to sneak its way lower down this post π
The Ansible community has adopted Matrix as an official place to chat (alongside IRC). We'll be updating our documentation in the near future, but our rooms all have aliases already - add "ansible.im" to your directory search, or join #space:ansible.im if you're in the Spaces beta. See you there!
Super psyched to welcome the Ansible community to Matrix!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
Room version 8 is due to land soon - which will bring restricted rooms to the masses. This is most useful in the context of Spaces, which allows granting access to rooms in a space based on a user's membership of that space (or another space!).
Today in not-Synapse news, we're getting ready for a new release of Sygnal, our reference implementation of a Matrix push notification gateway, early next week. The most significant change is that Shay, one of our Outreachy interns, has determined that Sygnal can function completely statelessly, removing the need for a SQLite or PostgreSQL database. This clears the path for proper horizontal scaling and high availability deployments of Sygnal.
On the Synapse side of the world, MSC3289: Room version 8 entered Final Comment Period (FCP) and we expect it to be merged into the Matrix spec over the weekend. If that occurs, we'll be on track to include support for this room version in Synapse 1.40 next week. Tune in next week to find out how that went!
Hey everyone, I want to release the first major version of Conduit in a few weeks and I need your help!
Almost all features are on the master branch already, so please try to deploy your own Conduit now and try to find bugs. See https://gitlab.com/famedly/conduit
State res has been tested a lot, so it's okay to join any public rooms (room version 6 preferred).
The barebones DEPLOY.md is the easiest and most tested way to install Conduit. We also have docker images, but I think the documentation still needs to be improved (please contribute if you can!)
Please open a gitlab issue for any problem you run into.
mx-puppet-teams is a new Microsoft Teams (Chat) bridge built on the mx-puppet-bridge platform. The bridge does not require admin privileges on the MS Teams side, so can be used by any user with access to Teams. It's currently using the public Microsoft Graph API, which comes with some limitations, but feature support is being improved.
Focus is currently on Chats (one to one, group chats, etc) rather than the main Teams rooms.
Still a fair amount of work to do, but it would be great to get feedback and comments from anyone who is interested.
The list of Matrix clients is getting larger and larger! And it's not only chat clients anymore! So I thought I'd experiment a bit this week by splitting them in two categories: messengers and non-chat clients. Let us know how you like this format in #twim:matrix.org.
Heya, we are very grateful for all the awesome translators helping us translate FluffyChat! Unfortunately, we aren't the best at managing such a huge effort as translating such a large app into so many different languages. As a result, suggestions went un-reviewed on weblate for long, people weren't able to submit translations, etc. We are very sorry for that, but want to work on fixing that! As, well, we are only really programmers with little time, we thought of asking for help from the community (you all!)! That is why we are looking for a translation manager for FluffyChat. No programming experience at all is required, it'd mostly be about managing our weblate and answering translation-related questions. If you are interested, please plop into our room #fluffychat:matrix.org and say so! (And ping Sorunome if you don't get answers). Looking forward to a where translations are managed better, and thank you again for everyone who did bite through all this and contributed translations so far!
So if you're into translations and want to help, feel free to let them know!
This week I added a sticker/emoji pack editor to Nheko. This means you now don't need to create packs manually in /devtools anymore, but you can create and edit packs much more conveniently. There are still some rough edges, but we expect to sort those out in the near future. Make sure you check out the demo video I recorded!
Furthermore LorenDB has been busy porting more of the remaining dialogs to Qml, dialogs should now float properly on Wayland and have a proper close button on KDE. We also fixed a few more encryption bugs, which means we should be able to mark E2EE as stable in Nheko soon and we cleaned up old cruft in the codebase.
And if that's not enough for you, since it's demo week, Nico's also showing off Nheko's brand new sticker goodness!
Ement.el, a new Matrix client for Emacs, continues to gain new features: deleting messages, showing room avatars, adding to reactions by clicking them, and new "mentions" and "notifications" buffers that show messages from multiple rooms in a single window. You can even reply to messages from any room in the Notifications buffer, which makes it easy to follow multiple rooms at once, rather than having to switch between rooms. (Room: #ement.el:matrix.org)
NeoChat is a desktop chat client for Matrix. It uses Kirigami to provide a convergent user interface on desktops (KDE Plasma, GNOME, Windows, and other desktops) and phones (Plasma Mobile and Android).
This week, we merged a few fixes related to login, logout and account switching making NeoChat crash less during those operations. Currently, we are working on a nice ways to show location events and adding the possibility of sending those events
MSC3289 has entered FCP, adding support for Room Version 8, which includes support for MSC3083 (Restricting room membership based on membership in other rooms).
Weβve been working on a tool for migrating communities to spaces, which will be available in Element Web
Weβre adding pagination to the Spaces Summary API to improve support for spaces with large numbers of rooms when browsing Spaces room lists
On iOS, weβve been working on suggesting Spaces in room lists
VoIP
Mute status signalling now landed on develop! Thanks again to Simon.
Web
Voice messages! Theyβre out on develop.element.io and planning to go out for release soon. Let us know if you run into any issues, or have suggestions on how to make it better.
Made Improvements to our changelog automation, which should lead to much more joyous changelogs
We merged initial client-side support for Posthog analytics, adhering to the userβs existing analytics opt-in preferences
Support for CSS hot reload, which has incrediblised working on Elementβs styling for designers and engineers
Some iteration and bug fixing to image blur hashes and message bubbles
Full steam ahead on threading, we have a backend for it in js-sdk
iOS
Same thing for voice messages as web ^
We started discussions (and experimenting) about SwiftUI for new features. Minimal target version is 11 but some new features, like notifications for keywords, users and rooms completion, etc, will be available for devices running iOS 13 (maybe 14).
We adopted Towncrier to manage our change logs. Check the contributing guide above for the rules we defined and how we use towncrier across our 3 iOS repositories
Blank notifications (βMessageβ) are being fixed and improved. There will still be a fallback notification content but it should happen less often. In this case, we will display βNotificationβ
In parallel, we are continuing working on performance improvements. We still target an instant start for XL accounts (with thousands of rooms)
Android
Same thing for voice messages as web ^ + fixed a rare crash
We fixed a regression that blocked message sending in an encrypted room. A new release is in progress
Sailtrix is a Matrix client for SailfishOS supporting basic end-to-end encryption. This week I've released its third iteration. Here's a list of features:
Logging in with username and password
Reading the past messages in a room (currently limited to loading 30 at a time)
Messages with basic formatting can be read (bold, italic, etc)
Sending messages
Sending messages in reply
Editing messages
Deleting messages
Starting direct messages
Ignoring and unignoring users
Viewing and downloading of images
Viewing of audio and video
Downloading files
Sending files
Accepting invites
Public room directory
Creating Rooms
Basic end-to-end encryption support (Late Alpha State)
All sensitive information including messages are encrypted at rest with Sailfish Secrets
You can download Sailtrix at https://openrepos.net/content/hengyedev/sailtrix
Two weeks ago I told you about our interns presenting at GUADEC. A video recording is now available. They kept busy in the meantime, with Alejandro landing work on display names and avatars (!801 and !802), and Kai working on room sorting in the sidebar.
In my absence, the rest of team Hydrogen has been hard at work to bring you the ability to send replies, thanks to Daniel, and to open the member panel when clicking through from the member list, thanks to Midhun. If all goes well, this should get released tonight. Next up, Midhun will start working on SSO login support, a feature a few people have asked about in the past π
Keys.quit keybind to exit the application, unbound by default
Keys.earlier_page and Keys.later_page keybinds to navigate the pages/chats history, Ctrl+H/Left and Ctrl+L/Right by default
Mouse button 4/5 can now be used to navigate the history
General.wrap_history setting, affects the behavior of history navigation
Keys.Rooms.Direct section, allowing keybinds to jump to specific rooms
Keys.Rooms.oldest_unread/latest_unread to jump to the room with the oldest or newest unread message, by default Ctrl(+Shift)+U
Keys.Rooms.oldest_highlight/latest_highlight, same as above but only considers rooms where you've been mentioned/replied to/etc, by default Ctrl(+Shift)+H
Ignoring users:
Ignore option in the context menu for room members
Ignore option when rejecting invites
Editable ignored users list in account settings
Invites and messages from ignored users are silently discarded.
Their display name, avatar and presence are removed.
They will also always be placed at the bottom of the room member list.
Status messages history in the left pane account context menu, and auto-suggestion for the status field.
The number of saved entries can be controlled with Presence.saved_status.
"Add another account" entry in the top left settings menu
Copiable room ID field in the room settings pane
Back button in account settings and server browser when the window is too narrow to show the side panes
Escape key handling in the account settings, server browser and add chat pages
Support for rendering HTML <hr> lines (markdown ---) in messages
Keys.messages.clear_all default keybind is now Ctrl+Shift+L
Keys.Account.AtIndex keybinds will consistently move to the corresponding account settings, instead of skipping to the first room if the account is expanded in the left pane
Keys.messages.open_links_files(_externally): ignore matrix.to user and room mention links
Presence:
Allow using the invisible mode on servers not supporting presence, which will still prevent sending typing notifications and read marker updates
Restore any previously set status message when reconnecting after being offline, unless another one has been set from a different client
Render set status message striked out while invisible/offline to indicate that it isn't being broadcasted
Error popup:
Multiple unexpected errors will be combined into a single popup, instead of opening a new one for every error
Report button now links to Github issues
More details shown for matrix errors
Messages:
Require a space after the # for markdown titles
Render matrix.to URL in messages as shorter hyperlinks
Fix error popup appearing when invalid room events appear in syncs
Fix parsing of URL in messages containing some special characters
Left pane rooms last message display: fix > quote right after another quote not getting colored
Fix the forgetting rooms feature
Fix rendering status messages containing HTML-unsafe characters
Fix chat bottom bar for invited/left rooms glitching at certain sizes or not properly updating when the room's state changes
Prevent theme animationDuration property from affecting the speed of loading spinners, progress bars, server ping indicators and image rotation button cooldown
Hopefully fix account presence stuck flickering between two states
The backend.errors.MatrixError: (200, None) error occurring on Synapse 1.38+ servers should be fixed by the latest matrix-nio commit, which is included in the new Mirage appimage and flatpak. For manual installs, make sure to run pip3 install --user -Ur requirements.txt again before rebuilding. For packagers, the commit will be present in nio 0.18.5, which will be officially released before tomorrow.
A collaborative whiteboard based on the [matrix] protocol. github
A lot has happened this week. The biggest task was the switch to a proper build system (the project now is based on yarn and webpack). This gave the opportunity to do lots of refactoring and code cleanup. Additionally there is now a spec for the whiteboard events which got implemented this week. For the ones who are curious, here is the file: spec
There are also a couple of new features and fixes. Most notably:
The Text tool was added. Text in different colors and sizes can be added to the whiteboard.
The Image tool was added. Images are uploaded and than rendered on the canvas (not yet published but will be available in a couple of days)
The styling was improved. There are less gray areas which I did not like and the corners are less round.
And the repository got a lot of love with more details in the readme and better code/folder structure.
There is now also a matrix room for feedback, issues and ideas: #TheBoard:matrix.org
Feel free to try it at: https://toger5.github.io/TheBoard/ (preferable not with your main matrix account)
Circles is an iOS app for end-to-end encrypted secure social networking and sharing, built on top of Matrix. Its goal is to provide a safe and convenient way for close friends and families to share things that they wouldn't post publicly -- e.g. for parents to safely share pictures of their kids.
Recent updates to the Circles beta include:
Support for use with any Matrix homeserver
Emoji reactions
Markdown formatting for posts and photo captions
Better support for larger screens (iPad)
The latest beta build of Circles (v0.90) is available from Apple on TestFlight
They've also added:
NOTE 1 - If you're using an existing account, you'll need to tap the "Advanced Options" on the login screen so you can give it your password for SSSS / encrypted key backup / recovery / etc. Otherwise Circles will try to use a login password that it generates with MSC 3265 so it can do everything safely using just a single password.
NOTE 2 - Circles is NOT RECOMMENDED for use on an account that you're already using for Matrix chat, for the above reason and more. If you do this, prepare to see lots of extra, weird rooms in Element / Fluffy / Nheko / whatever chat client you're using. Also if you decide to try this anyway, please let me know how it goes. :-)
NOTE 3 - Circles is not available yet in France. Sorry. I gotta update my encryption compliance documentation with Apple.
If you want to know more about this project, feel free to join #circles:matrix.org!
Version 2.0.0 of Simple-Matrix-Bot-Lib will be available on pypi soon with incompatible changes, so make sure to specify the version of Simple-Matrix-Bot-Lib in your dependencies to simplematrixbotlib >= 1.6.0, < 2.0.0 until your code is compatible with the new syntax. Check TWIM next week to learn more about the new changes.
I moved all the mautrix bridges and libraries to a fancy new org: https://github.com/mautrix
GitLab and/or Docker haven't invented redirects yet, so docker registries are split: the old dock.mau.dev/tulir/mautrix-* paths will keep working for old versions, but new images will be at dock.mau.dev/mautrix/*.
This week continues the regular K8s updates, with my Helm Charts seeing updates for element-web to 1.7.34 as well as a fix for handling IPv6 in the well-known listener for Synapse.
And because Synapse started feeling a bit lonely being the only one with a Helm chart, s7evink offered:
Well, Hi there TWIMers :P
I've been working on a helm chart for Dendrite (polylith/monolith (untested)), since i was sick of creating a single deployment for each component.
For now it's working as expected, but since I'm pretty new to creating helm charts, please let me know if there's something wrong/bad practice.
NOTE: Polylith is not yet supported by the developers!
Shout out to Ananace, for the awesome helm chart for Synapse, which was my inspiration! :)
Rejoice! Now Dendrite aficionados have even more ways to enjoy our next-generation homeserver!
I've released mxadm, a small CLI tool for Matrix room admin that I've been working on for a few weeks; more details here: https://erambler.co.uk/blog/introducing-mxadm/
Part of the ServerStats Project is to use the data to build various charts. This project is currently still in progress to be written using RLang.
This week new is a World Map of IP based locations of Matrix Servers. Be ware that the coordinates are quite rough due to the quality of the free maxmind databases used. The map data gets updated every 12h.
Also the website for those statistics got fully overhauled to feel more modern.
Check it out at https://stats.serverstats.nordgedanken.dev or the Source at https://github.com/mx-serverstats/server_stats_web_statistics
envs.net (@cblte:envs.net and @creme:envs.net) has forked the TU-Dresden matrix/element help documentation - https://doc.matrix.tu-dresden.de/en/ (used hugo ssg).
Our fresh help page can be found at: https://matrix-help.envs.net/ and now uses a simpler ssg called mkdocs.
We decided to fork the existing documentation of the TU-Dresden to make it easier to use. In addition, the project envs.net already uses mkdocs for its existing documentation.
The link to the Git repository can be found directly on the page. We look forward to improving it in the future and would also appreciate your help.
Feel free to use this documentation for yourself and create your own fork.
Hi everyone! Did you ever feel lost in the Matrix world? The room directory is big, but it's still hard to find something you like. Or are you a room moderator, but there is not much activity in your room because it doesn't have enough users?
This is why I want to share rooms (or spaces) I find interesting.
At first when I read the headline I was scared - explodes? How can I protect myself from this explosion? After a moment of reading this huge news, however, I was relieved - Matrix has exploded in popularity, and Element have all new funding to keep driving the ecosystem forward. Let's go!
Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/unstable/proposals.
While a quiet week for MSC state changes (shown above), there's still plenty of work and collaboration happening!
Spaces work marches forward as MSC3083 has been merged - allowing for users to join a room in a space based on their membership in a space. We think this will really help with the management of Spaces that contain lots of rooms that are otherwise invite-only.
Otherwise MSC3291 (Muting in VoIP calls) has been receiving positive feedback this week!
Finally, MSC3289 (room v8) is ticking along as the implementation is tested in Synapse and Complement tests.
Of all the pull requests we landed, my hat is off to MadLittleMods and his Graphviz prowess in #10250, which moves us one step further down the path toward MSC2716: Incrementally importing history into existing rooms. Mmm. Graphs.
But back to Synapse! You should check out the release announcement, but the bulk of the work this cycle went into internal cleanups. Synapse should also be slightly more performant, reliable, and should log fewer spurious errors. Of note, ShadowJonathan did a lot of work with pyupgrade and com2ann to move the entire codebase to more modern Py3.6+ conventions and inline type annotations; thanks, ShadowJonathan!
Synapse 1.39 also continues our march toward unifying Synapse's interface for extension modules, and we've now exposed plugin hooks for the account_validity option, and experimentally implemented hooks for third party event rules.
Lastly, special thanks to kroeckx who has submitted 17 pull requests against our SyTest test suite in the past month, mainly arising from running SyTest against Conduit. Thank you!
Hello! This week, I created a matrix 1-click app on the DigitalOcean marketplace. It's basically a pre-baked droplet image that is pre-configured with synapse, element-web, caddy, postgres, plus some setup and moderation tools. My intent was to make self-hosting a Matrix system as easy as pointing some DNS records and running a single script. It makes a lot of sense for smaller, more casual Matrix homeservers, and can serve as a good starting point! It also includes some small utility scripts - ./reset-password, ./new-user, etc.
Secrets like the postgres password and registration password are generated on first boot, there's no sensitive data baked into the image. Of course, it would be nice to be able to verify this - the source code used to build the image is being open sourced. I'm just waiting for some internal processes to finish. It will show up at https://github.com/digitalocean/marketplace-matrix somewhat soon!
Heisenbridge is a bouncer-style Matrix IRC bridge.
Lazy joining of IRC users (see below)
Keep nick feature has been added
Bridge aliveness can be tracked from bridge bot presence
Ident replies can be customized by the admin for all users, default to mxid hash
Pillifying IRC nicks has been improved
The biggest impact feature this time around is configurable lazy joining IRC users which improves the experience of joining massive IRC channels by not flooding the homeserver with join events. This is now the default and can be changed globally by the bridge admin or overridden per room by users.
Many fixes here and there. Still a few issues left before 1.0 and a lot of testing.
Cinny is a web-based matrix client focusing primarily on simple, elegant and secure interface.
The story started when a friend of mine introduced me to matrix and even after his help it was too difficult for me to get around with Element. I guess it was because Element is too different from other popular chat apps. Then I tried to find a good alternative for web but no success.
That's when me and my friend thought about creating Cinny. For the few weeks we were doing it for fun but when we shared a screenshot of the prototype, the response from people was surprising and that's when things got interesting. We got to know that a lot of people out there are looking for a simple and modern client and so we started building it.
Many improvements have been made to Ement.el, a new Matrix client for Emacs. Ement.el can now send and display images, replies, and reactions, as well as edit sent messages. It also supports desktop notifications, configurable by the user to pop up for mentions or for all rooms with open buffers. (Room: #ement.el:matrix.org)
Something something expands until it reads... Matrix?
1:1 screen sharing is now merged and on develop! Please give it a try and report bugs - plan is for it to go out in the release after next (ie. two weeks from Monday). Huge thanks to Simon for working on this.
Simon also has PRs up for mute status signalling, done via MSC3291
Fixing the bug where the buttons in a call donβt work in full screen mode
Web
v1.7.34-rc.1 is out (maybe even .2 by the time you read this) - full release planned for Monday
Continuing to figure out a plan of attack for threading
Looking at message bubble feedback & fixing bugs
Also looking at fixing blurhash bugs
iOS
The coming release, 1.4.8, which is available on TestFlight, supports voice messages. The feature is under a labs setting. DM and room tabs now contain only rooms. Local contacts and the public rooms directory can be found elsewhere in the UI. Full changelog at https://github.com/vector-im/element-ios/releases/tag/v1.4.8.
We continue to make good progress on papercuts (https://github.com/vector-im/element-ios/milestone/58) and the overall app stabilisation.
Android
Release candidate 1.1.15 is getting prepared. It will include voice messages, under a lab flag.
Some bugs on the crypto part have been fixed, it should improve the performance on e2e rooms.
This summer's gone by so fast it feels like it's only been a week! Here's a summary of what's happened with Ruma the past few weeks:
We have had a productive summer with our two Google Summer of Code students, Adam Blanchet and Devin Ragotzy. Adam finished implementing the last of our Identity Service API endpoints, bringing us to 100% implementation of all the Matrix API endpoints! (And we promise there are no bugs because "Rust," right?)
Besides improving the Matrix ecosystem, Devin has been helping the Rust ecosystem at large by writing some Clippy lints to improve our codebase and upstreaming his additions.
Read more here: https://ruma.dev/news/gsoc-2021-intro/.
I made maubot-ldap-inviter, a maubot plugin that (surprisingly) invites users into Matrix rooms, according to their membership in LDAP groups.
We are switching from RocketChat to Matrix in the next round of a software engineering course where students work on software projects in small groups.
RocketChat has a LDAP sync, which we previously used to auto-add students and tutors to the chatrooms they need to be in (global announcement room, helpdesk, chat for their group etc.).
As there was no such feature for Matrix, I built the bot over the last few days.
It's still somewhat specific to our LDAP setup, but if anyone wants to use the bot and has questions, just open an issue in the repo!
At etke.cc we suffered long enough with 2 things - order form on website and invites on private matrix servers.
No more suffering! Because now the Mother Miounne exists and it does 2 things (for now): handles of web/html forms (sends it to matrix room) and handles invite tokens (integrates with matrix-registration)
We use it as backend of etke.cc service for some time, but still consider it as unstable, so try it yourself, hope it can help you π
Great news! Matrix Dev-Room and Matrix booth are approved! π
We are currently creating a schedule and we have open slots for talks and workshops!
If you like to present your topic or just help out please contact me (@oleg:fiksel.info) (or [email protected]) now! Language is preferably German, but English is also ok.
This is a personal project I started a couple of weeks ago. I was dreaming of a good open source solution for OneNote or GoodNotes far a long time. There are already great projects, likeXournal++ and Whitebophir. But, they do not include the extent of possibilities to flexible host, collaborate and structuring the notes I have wished for.
Recently, I was thinking about the exact requirements I wanted for such a whiteboard:
Real time synchronization (cloud storage)
Authentication/account infrastructure (to invite and collaborate on one whiteboard)
Adding/Removing ppl to a whiteboard
Reliable hosting (when having cloud storage, I don't want to trust a one-man project to continue hosting. And a lot of ppl wonβt self-host.)
Structuring whiteboards in categories
Viewing history and display which part has been drawn by which person
Annotating other whiteboards with new layers
Hosting for media like PDF's and images
Looking at this list, Matrix was such an obvious choice. I could comment every point but basically with: "A whiteboard should be a Matrix room" everything is said.
TheBoard (probably not the final name) is exactly that. The frontend is not done yet, but already in an okay looking and usable state.
Before trying it out: It takes really long to log in with an account with lots of rooms. So, I highly recommend to NOT use your main Matrix account.
Additionally, it is necessary to tag rooms as whiteboards. (really un-intuitive UX that will be improved) But for now the + button needs to be pressed and a (empty (not necessary but recommended) AND UNENCRYPTED) room needs to be selected.
UPDATE I just (on Friday) finished initial spaces support to categorize the whiteboard in notebooks (aka spaces). They can only be create within a matrix client that supports spaces. But they will be displayed properly in TheBoard. (see screenshot)
Any problems, ideas and feedback is highly welcome as a github issue or in the matrix channel #TheBoard:matrix.org.
Thanks to the awesome https://serverstats.nordgedanken.dev project by MTRNord my small server version history graph now contains more of the matrix fediverse: We went from ~3000 to over 5000 active visible homeservers on https://graph.settgast.org/
Two superb projects combining forces! I've long been a fan of Chris' graphs for tracking the growth of the server ecosystem.
Famedly in the news! https://e-health-com.de/details-news/messenger-am-uk-frankfurt-ermoeglicht-simultane-ueberfuehrung-von-chats-in-die-patientendokumentation/