An episode with the maintainers of Threematrix, the 100% Rust bridge between Matrix and Threema!
In addition to that, Open Tech Will Save Us will be back on Wednesday 27 at 16:00 UTC! The topic will be āwhat makes a platformā, or more specifically: āare Linux or the web platformsā. There are many fascinating topics to discuss, such as āis it possible to create an app for Linuxā (itās not as simple as it sounds), āwhy are some people against theming?ā, or āwhy do developers want to use platformsā.
And to answer that, who other than the Linux desktop most advanced projects GNOME and KDE, and people working on Matrix, the protocol that wants to become as unmissable as the web itself, and more specifically on a deeper integration of widgets with Matrix clients?
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.
Lots of MSCs moving through the pipeline in the last couple weeks! As always, be sure to take a look at those in Final Comment Period above - only a few days left to comment on them before they merge/close!
Otherwise the Spec Core Team is looking to try and get a handle on the current MSC backlog - this means taking a look at all of the open MSCs, triaging them and organising them into a loose priority queue. This is likely to take quite a while to do and may not ever be complete - but should give us and everyone else an idea of whatās expected to land in upcoming Matrix spec versions.
The idea this MSC proposes is to add a possible m.softkick field to room membership events of type āleaveā, which if present will inform clients that the user has only been kicked temporarily, and they are welcome to rejoin.
This helps with the IRC bridging use case laid out in the MSC.
I use Zeal ā an offline documentation browser using the same docsets as Dash for MacOS.
It allows me to browse MDN, ExpressJS docs, NodeJS docs and other languages and formats while not relying on the Internet when traveling.
They have ā208 awesome docsetsā, and I guess you know which one Iām missing ā or used to miss, until I packaged it myself.
If you use Dash or Zeal, give it a try. Let me know, if you find pages that are not working.
I hope that Matrix will be included in their list of user-contributed docsets.
Note, this is not an official release distribution of the Matrix Spec. Enjoy at your own risk of this breaking or not getting updated.
Construct server has been refurbished to support the Ubuntu 22.04+ platform. I am happy to
report that Construct performs faster and more reliably than ever before. Itās been
a long time since the last update due to COVID-related health problems, but development
has picked up again. Iād like to thank @manu_kamath:matrix.org and @uis246 for their
contributions, and of course Yan Minari for keeping things together over the past year.
Additional work implementing the latest MSCās will continue in the coming weeks so I
encourage everyone to show support in #construct:zemos.net and contribute if possible.
Several enhancements have taken place this release, so Iād just like to highlight one
here: The media database has been eliminated and has been integrated into the main
events database. Construct did always store media in rooms by splitting files
into blocks, but it offloaded the content block to separate storage leaving just a
hash of the content in the matrix event. Construct now stores blocks directly in event
content via hardware-accelerated base64 encoding. The result performs better because
thereās only one database query instead of two, and the room can be shared between
servers in a Construct Cluster.
Construct is a performant and robust Matrix Server and Natural Language Processor.
Please be mindful of any laws in your country which require registering your instance
for commercial use.
This week weāve released Synapse 1.63! This release includes a few features such as better rate limiting for invites, as well as experimental support for MSC3827 which allows filtering public room search results by room type. The latter will, once stabilised, allow for better discoverability of public spaces since it will allow clients to specifically look for them. Read all about this new release on the matrix.org blog: https://matrix.org/blog/2022/07/20/synapse-1-63-released
Weāve also spent some time clarifying documentation and prompts about the usage statistics Synapse automatically reports if configured with report_stats set to true. The new documentation page lists exactly what is reported and how this reporting works. This clarification work included removing the use of āanonymisedā when referring to this feature to make it clearer that, even though Synapse does not report identifiable information about users and rooms, it does report the homeserverās name (i.e. the value of the server_name configuration setting).
Since people seemed to like seeing updates on my Helm Charts; matrix-synapse got bumped to 1.63.0 and then 1.63.1, as well as receiving some expanded handling of workers - all worker instances now come with both startup- and liveness probes attached by default.
Say hello to a new bridge in Matrix universe (or rather fediverse): Threematrix. As you mightāve guessed from the name: Itās a bridge between the Threema messenger and Matrix. Threema is a very popular messenger in europe, especially in German speaking countries (itās a swiss company). Weāve just released our very first alpha version ā itās a very simple bot bridge for now, but we have quite a lot of improvements on our todo list. Currently, it only works with the (paid) Threema Gateway API product, but weāre trying to talk to Threema to come up with a more affordable hobbyist pricing model for bridge use. Feel free to follow our releases in the GitHub repo, follow our Mastodon account and join our Matrix room to stay up to date or ask any questions.
P.S.: Weāre two freelance developers and weāre being funded by the German Prototype Fund program. If youāre an OSS developer in Germany, check them out!
Hello all ā since our last TWIM announcement, Hookshot has been updated from 1.7.2 to 1.8.1. Aside from usability fixes and documentation improvements, there have been some notable changes to generic webhook support:
XML webhook payloads are now decoded instead of being treated as blobs of text. This means they render more nicely as room messages, and more importantly, it allows them to work with custom JavaScript transformations. (#410)
GET requests for generic webhooks are no longer supported by default. For details, refer to the documentation. (#397)
I got a fantastic release for you to day and it wonāt fit inside a normal sized update so without further ado, here are the highlights:
Notification counts šÆ (LorenDB, d42)
You can now see notification counts in more spaces, like your task bar or in
the community sidebar.
For better work-life balance you can hide the notification counts on a per
space basis.
For notification counts in the task bar your desktop environment needs to
support the Unity protocol.
Notifications are also preserved across restarts now.
Moderation š®āāļø
You can now change the permissions and aliases of a room.
Permissions are shown in the Memberlist
A new /redact command to redact an event or all messages by a user.
You can now provide a reason when inviting, knocking, kicking and banning
users.
Faster startup ā”
On at least some systems startup should now be instant even with thousands
of rooms.
Encryption improvements š”ļø
Support for the most recent changes to Matrix E2EE including fallback keys,
no longer relying on the sender_key.
Compatibility and stability improvements when dealing with different base64
encodings and when verifying users and devices.
Fetch the whole online key backup at the click of a button.
Integration with external apps šŗļø (LorenDB)
Nheko now has a D-Bus API, which you can enable in the settings menu.
This allows applications like KRunner or Rofi to list and switch between
rooms.
If you are reading this a bit early, the release builds might still be cooking, but they should be available in the next few hours. There about 40 more features and at least 30 bugfixes waiting for you, so checkout the release here: https://github.com/Nheko-Reborn/nheko/releases/tag/v0.10.0 . Iād like to thank as always everyone who contributed to this release, it has been a pleasure to work with you folks and I hope I will see a few of you in the next release as well.
As you might be able to tell, moderation features were a big topic this release. But they are clearly not done yet and I expect more of those to land in the future now that Nheko is fairly mature. There are also a few other cool features planned, so while this release is exciting, there will always be more! Same bad client, same bad⦠wait, this is not my outro!
Please give this release a whirl and tell us how you like it in #nheko:nheko.im!
Release 1.4.28 has been dropped, to give us time to fix the regression and performance issue added when key share history was worked on. The next RC 1.4.30 will be done next week as usual.
We have started to work on using the new Realm Kotlin SDK (we are using the legacy Java SDK at the moment): it should improve the stability of the app (and so the crash free session) and improve devX. Nearly all the possible blocking points have been handled. This will force us to use suspend methods, which will be useful for ElementX.
Latest tweaks on FTUE have been merged on develop. We will iterate on a few things, but we are close to releasing the feature! New wordings for FTUE are waiting for translations on Weblate. Thanks to all the contributors!
We have set up a nightly build using Firebase app distribution. We keep it internal for the moment, we will see in the future if we want to open it to the community.
New project! open-super-dapp-android is a fully open source, open standard, decentralized āsuper appā including a secure, encrypted Matrix compatible messenger based off of the Element Messenger, and an Ethereum crypto wallet and web3 browser based off of Alpha Wallet. Our mission is to foster, and provide access to, a decentralized and secure digital commons for all. Github repo: https://github.com/2gatherproject/open-super-dapp-android
OSD is a downstream project of Element, aiming to provide the functionalities of a āsuper appā like WeChat, just as an open, distributed and not-for-profit app instead of a proprietary, closed and for-profit one.
This software is pre-alpha, actively seeking contributors, donors and maintainers/leaders. Get in on the ground floor and help build something amazing!
Currently, Open Super dApp builds and runs with full functionality of the Element messenger and Alpha Wallet in the same Android app, with all existing tests passing. Efforts to further integrate their functionalities are just beginning.
Next steps include:
Demonstrate easy to use person to person Ethereum payment functionality between Matrix users.
Provide a powerful and easy to use messaging and payment javascript API for use by web3 applications accessed through the Open Super dApp. Produce sample web dApps using this API.
Centralize cryptographic secrets between the wallet and the messenger.
Build a parallel iOS version for iPhones using Element iOS and Alpha Wallet iOS.
This week has seen an merges of many minor, partially longer-pending PRs into the mainline code base: among them a fix for a longer pending CI problem with Apply builds, an update to latest ruma and many minor fixes and style improvements. Weāve also gotten the Crypto-bindings for the JS in web using WASM a lot further, the only thing remaining for a release are some last minute PRs and fixes in the release infrastructure. But the most changes to the code base this week have been coming from the appservice department, whoāve submitted, reviewed and merged a whopping seven PRs this week, fixing various problems and adding a bunch of appservice specific features.
Beyond purely code changes this week has seen a lot of project starts, too: For ones, with the help of the rust team, the iOS Team has started integrating the Sliding-Sync/Sync V3 into the upcoming Element-X-Series; the team has put up the first PR to add integration tests against an actual synapse server (some issues pending); a workshop set out the first ideas for the new upcoming timeline API; and a very interesting draft PR was brought in from community member docweirdo proposing a new API on top of the existing SDK to have futures wait for actual completion - no more sending a message and observing sync for the appropriate response yourself.
Synapse Maintenance Container ā Docker container with tools for synapse & postgres database maintenance
A lot of things added and changed, and Iām sure I missed something, so I will go with a release candidate this time
New in v0.4.1-RC1
enable PGPASSFILE support for better database password handling
add tools to detect and maybe fix synapse issue 12507 and 13026 (No state group for unknown or outlier event)
internal: added an extension for mautrix-go to serve synapse admin api requests
lots of internal changes
stui is a typical golang binary, itās also available as stand alone version from the release page
Tools for No state group for unknown or outlier event
[docker run -it --rm registry.gitlab.com/mb-saces/synatainer:0.4.1-RC1] stui 12507 --help
[docker run -it --rm registry.gitlab.com/mb-saces/synatainer:0.4.1-RC1] stui 13026 --help
The tools scan the database for the issues and tells you which rooms are affected. Adding the --fix option, it destroys your databasedeletes the bogus extremities. Use at your own risc. And make a backup.
The doc have still a lot of space for improvementsā¦
Start the container without command and let do its magic :)
What it does by default:
daily:
purge all rooms without local members
run the state autocompressor (500/100)
weekly:
delete old remote media (>90 days)
delete old message history from public joinable rooms (>180 days)
Because I donāt like having to change my display name to tell coworkers when Iām away, Iāve written a maubot plugin for an auto-responder bot.
It allows me to signal when Iām away, at which point anyone who sends a message in an existing DM will be sent an automated reply so they know that Iām away, when Iāll be back, and how to reach out to me in case of emergencies (it does this once per DM until I come back). When Iām back, I just need to tell the bot and it will automatically turn off the auto-responder and give me a summary of the DMs in which Iāve missed messages while I was away.
I just created a simple bot that generates a MSC url from the specified MSC id.
The source code for the project can be found at https://mau.dev/minecraftchest1/mscbot/. And example instance can be found at @maubottest1:synapse1.arsrobotics.org Demo and use the bot in #msc-bot:synapse1.arsrobotics.org
My release tracking bot received a bunch more work since the last update. It now supports tracking repos, groups, and user stars on GitHub, GitLab (both .com and self-hosted), as well as Gitea (though Gitea requires a token for reading stars). And also tracking āreleasesā - a.k.a. tags - on bare Git repos, at least as long as they donāt require SSH key authorization. Things are getting ever closer to a 1.0 release, with only really some missing bang commands and error reporting being the remaining pieces.
The Matrix Summit 2022 is a community event taking place Thu, 25th to Sun, 28th Aug
at c-base in Berlin. Todayās the last day to propose presentations and workshop. The exact deadline is 22:22 (Europe/Berlin).
Will you be in Berlin and have a Matrix project to talk about? Can you organise a workshop about how to use Matrix? How does your community or workplace use Matrix?
Submit your proposal now!
FrOSCon is a conference that takes place in Siegburg/Bonn, Germany on 21st and 22nd August. Most presentations will be German, but there are some in English as well. Itās all about free, open source software.
And, best of all, weāll have an entire DevRoom track for a day ā full of Matrix. Furthermore, you can come by the Matrix stand for that famous hallway track. ⨠I know Iāll be there. š
This week Matthew gives us a general update on everything Matrix and Element. What is going on with Sliding Sync, OpenID Connect or P2P Matrix? Letās find out!
Weāre also pleased to announce the next episode of Open Tech Will Save Us has been scheduled. We will be talking live and interacting with you on July 27, 16:00 UTC (18:00 CEST) on the subject of platforms with people from GNOME, KDE and Element.
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.
The Spec Core Team took a concentrated effort to work through our priority backlog of MSCs, resulting in the decent amount of MSCs hitting FCP this week!
Thankfully the community has nearly matched this number by adding quite a few more MSCs into the fray. But weāre still up by 1!
Perhaps one of the most exciting MSCs to move forwards is MSC2676: Message editing, which allows users to edit events (including messages) that theyāve previously sent. Part of the aggregations work, this functionality has been used extensively throughout the ecosystem. But only now is it making its way into the spec proper. Iām also personally excited about MSC2285: Private read receipts, which allows users to read a roomās contents without advertising it.
Of course the above MSCs are still in Final Comment Period; a 5 day period where anyone can raise their concerns about an MSC before it is accepted. So if you have any last-minute comments, be sure to get them in now!
Another MSC Iām personally excited about! This MSC provides an endpoint on the homeserver to request the rooms (or spaces) you have in common with another user. I would find this useful for incoming DMs from users I may or may not know. Note that the client may not already have this information if it is making use of lazy loading room members, so it needs a way to ask the server for this information.
Looks like the MSC is currently sitting in the Spec Core Teamās review backlog. Weāll get to it soon!
The Synapse team has been hard at work! This week we published Synapse 1.63.0rc1. Among the notable features are support for MSC3827: filtering /publicRooms by room type, allowing for better discovery of Spaces. You can read more about that here. In addition, the release contains a number of bugfixes, updates to the documentation, and internal changes focused on reducing memory usage and increasing performance, as well as supporting the long-standing goal of faster room joins. More on these next week in the official release announcement!
Good news, as you might have noticed, conduit.rs is back online and better than ever! Matrix.org is so kind and donates this Linux server to me. I already host a discord appservice and handle 23k messages per day and, most importantly, now Iām at the top of both #ping rooms ;)
On the development side, Iām currently working on a big refactor, see https://gitlab.com/famedly/conduit/-/merge_requests/365 and please give feedback if you have experience this is your chance to have a lasting impact.
You can now edit aliases in Nheko! This means you can publish your own aliases in the room directory as well as in the room. If an alias canāt be used by people (because it isnāt listed in the room directory), that alias is highlighted in red with an easy option to fix it (if you have permissions to do so). You can also easily switch the primary (canonical) alias of the room.
With this the feature set I wanted to have for the next release is complete. I wanted to focus on improving moderation and room management capabilities in Nheko and it does now have a very basic sets of capabilities to do so. I do already have plans to expand on them though!
So instead of working on new features, I will be focusing on bug fixes. For a start if someone has the username room, Nheko will now omit the reply fallback to prevent pinging the whole room. The verification window now also should always be big enough to show its contents and we now properly explain to users, why emojis might look different on different devices fixing an issue reported via Twitter⦠There is also a new icon for the room directory (it is now a building, very punny, huh?).
Tobias has done some internal refactoring, which will allow us to create more automated tests and prepare for the eventual Qt6 migration
Nvrwhere has improved NeoChatās Timeline layout: On a wide window, the bubbles will now be centered in the window, in order to better use the space while not stretching the timeline out too far
Heās also fixed several papercut issues around the UI, for example editing and replying using the keyboard shortcuts
The browser will now properly open when clicking on a link when using wayland
The first part of Snehitās GSoC project is almost ready to land: The room list is gaining a list of spaces, which can be used to filter for the rooms included in that space
Weāre also moving forward on the E2EE support, with NeoChat now allowing a user to send an encrypted message into a matrix room - provided libQuotient supports it š
Tobias is also working on improved Reaction & Emoji pickers, which will allow users to select different variants like skin tones and which will behave better on mobile devices
After some successful testing on current registration flows, we are running testing sessions on the new and improved registration flows over the next week.
We are also moving away from spreadsheets over to TestRail, a test case management tool which will help us track regressions and issues. Weāll be offering our community testers a change to try it out over the next few weeks.
Started experimenting with matrix-react-sdk for an improved crypto(graphy) experience
The share screen button in video rooms on desktop has been temporarily removed until the underlying issues can be resolved
We have removed most of unused code in the Element Web repositories and are working on setting up tools to avoid forgetting to remove unused code in the future
The new search experience and DM flow have received some bug fixes and polish in addition to more polish to CSS
Final commenting period expected to start next week
Weāve been tackling our process around reviewing PRs to reduce review time, taking a two pronged approach at focusing on reviewing new PRs quickly and resolving our oldest non-draft PRs every week
Did you know that some of our issues in GitHub are labelled with āHelp wantedā and āgood first issueā if theyāre especially suited for community contributions?
In the works (you can enable labs features in settings on develop.element.io or on Nightly):
Version 1.8.22 RC was released to TestFlight and comes with the following changes:
In-app notifications are now available.
A shiny new offline indicator thatās visible in more parts of the app.
A handful of fixes for issues when making calls.
Unfortunately this build was rejected following the latest requirements for account deletion in the App Store Review Guidelines. Weāre looking into ways we can resolve this problem.
We have started to use Sentry to provide more insights into technical issues encountered whilst using the app.
Work continues on implementing the new app layout.
1.4.28 is being prepared with the following changes:
Makes the build process compatible with F-Droid again!
Fixes for voice messages not playing and some characters showing in their escaped html form - such as quotes showing as "
Nightly builds are on the way, these builds will be under a separate Application ID allowing them to be installed alongside the production Element app. Expect more information to come soon.
Weāre investigating general performance regressions across the app, with some improvements already in the pipeline.
In the last two weeks or so, weāve made some UX improvements:
unified SSO and ordinary login cards
unified media and regular file-uploads, and improved drag-and-drop support
improved feedback while validating login and registration input
We also added one feature that friends of mine were requesting š: annotations can now be equipped with a āmotivationā (part of the w3c web annotation data model, mentioned in MSC3574), and filtered by motivation. This makes it easy to, for example, mark some discussions as āquestionsā about the text, which is pretty useful when managing a class.
And Iāve now finally managed to cut a long-overdue new 2.6.0 release of the Ruby SDK, which includes better support for concurrent multi-threaded usage as well as improvements on Ruby 3.0+. (The tests are currently green for Ruby 2.6 to 3.1)
The team is proud to announce the first release of @matrix-org/matrix-sdk-crypto-nodejs to npmjs.com (0.1.0-beta.1) for all the best npm user friendliness you can get. This marks the first release of the crypto ffi for nodejs from the rust team supreseeding the previously existing project. It is also the very first release for nodejs featuring the great new vodozemac core (replacement of libolm). Weāve marked this as a beta release while we work out any remaining minor hickups or problems, so if you see something, say something! However, the main point of contact to it for most people is probably TravisR |s Nodejs Bot SDK, which is already consuming that beta in its latest release.
After a year of working on different ways to support encryption, the bot-sdk has finally stabilized on the rust-sdk crypto crate for crypto bindings internally. Tutorials on how to get your bot/appservice set up and working with the new crypto code are here (note that for appservices youāll need to turn on EDUs and MSC3202 in Synapse). If you run into problems, please report bugs or pop by #matrix-bot-sdk:t2bot.io on Matrix for help.
Alongside support for encryption, v0.6.0 brings a whole lot of other functionality for appservices, Synapse Admin API users, and bots wanting to make use of real DMs. Check out the full changelog here.
axon.sh v0.17.0 has been released which adds support for managing per-user ratelimits, and includes a fix for a bug related to server discovery. Please try it out and report your experience in #axon:matrix.thisisjoes.site, Iād appreciate feedback!
A whole heaping of work has landed for my release tracker project, with it now supporting tracking releases for projects (loose projects, all users stars, or all projects under a namespace) on both GitHub and GitLab (for .com as well as self-hosted instances).
Documentation is currently still a bit lacking, but hoping to have more information both on setting it up as well as using it Soonā¢.
my conference talk at ACCU this year is now out on YouTube: Matrix is a Distributed Real-time Database. I explain what Matrix is, and show how to use curl to send and receive messages, and why itās āinterestingā to write a server, and, as the title hints, I introduce the idea that Matrix can be for a lot more than messaging.
Reminder: Matrix Summit Conference Berlin call for participation ends next week
As announced earlier, there will be a conference all about matrix. (See TWIM 2022-07-01)
We encourage everyone with matrix-related projects, products and ideas to come around and give a talk: From the past to the future, from the moment of the idea, the story of the creation or the vision of the future. Weād like to understand the principles as well as the technology. The conference is from people for people, so if youād like to talk about yourself, your community, your organization, please do. Showcase yourself and your relation to the Matrix world. Letās get to know each other!
We aim to compile a versatile program. We are open to contributions of any length, from 5 minutes (lightning talks) to presentations and talks to workshops and hacksessions up to 5 hours. Weāll come together to discover, celebrate and enjoy the world of matrix. Also, if you have any arty, cultural or playful contribution in mind, please offer it.
ā”ļø Proposals for the Matrix Summit in Berlin can be submitted until next Friday (2022-07-22 22:22, TZ=Europe/Berlin) via pretalx. š
Rick and I talk about the the brand new Chatterbox. Is it Riot Embedded rebranded? Did the world need yet another embedded chat solution? Can I host mine? Can I make it clever? Letās find out!
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.
While the name may not make much sense to the layperson, the idea of a ācanonicalā Direct Messaging room (DM) is one that would always be referenced whenever a DM between two people is requested. That is, instead of potentially having a few different DM rooms with someone, both you and the other person would always know which room to use when DMāing each other.
We donāt really have this today. DM rooms are just group rooms with only you and someone else in them. If you attempt to DM another user, your client will try to guess the best room to use for this through some clever heuristics. Whatās lacking is a defined way to always arrive at the same room for this action.
This MSC attempts to define one, and would allow other functionality to be built on top of it, such as definitively knowing which room to send user-to-user data into, and to read from.
This week the Synapse team released Synapse 1.62! It features a lot of changes, including a fairly big update of spam checker callbacks, performance improvements around syncing and device management, improved customisation of .well-known client files, and much more. Read all about it on the Matrix.org blog: https://matrix.org/blog/2022/07/06/synapse-1-62-released
Apart from this, weāve been working on refining and fine-tuning our processes as a team over the past few weeks, which, among other things, resulted in the creation of this documentation that gives contributors some insight on how we review pull requests on Synapse. Olivier has also landed his work on running Complement (our next-gen integration test suite) against instances of Synapse using workers, which is a massive improvement for our CI.
Hello again TWIM, updates to my Kubernetes charts have been rolling along as usual, though Iāve been a bit more silent about them. This week sees the addition of a synatainer chart though, for those who want it for maintaining their K8s Synapse. (And the Synapse chart was also updated to 1.62.0, and element-web to 1.11.0)
If you have any questions, comments, requests for assistance, etc with them then #matrix-on-kubernetes:fiksel.info is where you want to go.
The k8s-at-home dendrite helm chart now optionally configures ingress resources for dendrite in polylith mode. It has also had some bugs fixed and been updated to support the most recent version of dendrite.
Note: The PR (https://github.com/matrix-org/matrix.org/pull/1348) to publish Quadrix on the matrix.org client list has been submitted more than a month ago, but still awaiting approval. Anyone here can help?
You can now edit aliases in Nheko! This means you can publish your own aliases in the room directory as well as in the room. If an alias canāt be used by people (because it isnāt listed in the room directory), that alias is highlighted in red with an easy option to fix it (if you have permissions to do so). You can also easily switch the primary (canonical) alias of the room.
With this the feature set I wanted to have for the next release is complete. I wanted to focus on improving moderation and room management capabilities in Nheko and it does now have a very basic sets of capabilities to do so. I do already have plans to expand on them though!
So instead of working on new features, I will be focusing on bug fixes. For a start if someone has the username room, Nheko will now omit the reply fallback to prevent pinging the whole room. The verification window now also should always be big enough to show its contents and we now properly explain to users, why emojis might look different on different devices fixing an issue reported via Twitter⦠There is also a new icon for the room directory (it is now a building, very punny, huh?).
You have probably seen it, this week Element released Chatterbox, an embedded chat client you can use to build chat assistants, chatbots⦠or probably other use cases we didnāt even think of. Itās OSS and really just a lightweight Matrix client. Rick talks about it in greater length with me in todayās Matrix Live.
Fix for missing end tokens in sync responses from Synapse >= v1.61.0 (Thanks to Tom Price for !20).
A prettier animation while loading comments.
/ipns/latest.cactus.chat is updated to point to the latest release, so sites linking there should already be using the new version.
Also, while weāre here: weāre surprised and delighted to so many people using Cactus Comments!
We just crossed 300k guest users registered on cactus.chat (roughly equivalent to 300k unique anonymous users). š
An unfortunate side-effect is that weāre having to up our hosting game to keep up with you all - and itās getting a bit expensive on our student budgets.
We set up a donations page on Open Collective, in case any of you would want to help out. āØš«
After a long hunt, weāve eventually found a significant problem with napi-rs, the layer we use in between Rust and Node.js for the crypto-nodejs, in the way it manages the memory coming from async functions in rust. With that out of the way and the last remaining features implemented, we are on the final stretch into in putting out the first prerelease of crypto-nodejs-bindingsābrace for it to come near your next npmjs.com early next week š¤š¤.
<matrix-room-element/> is a web component (vanilla JS/HTML/CSS & distributed un-minified) that can be imported and inserted in any web page, to display the content of a (public, soon with authentication, and private room support) matrix room.
To explain what itās for: Using the UnifiedPush standard, ntfy enables self-hosted (Google-free) push notifications from Matrix (and other) servers. Especially useful for users of Google-free Android (such as from f-droid).
If you try it, please report any feedback or problems or improvements in #matrix-docker-ansible-deploy:devture.com . Any updates to the scripts or docs may appear first on my branch before being merged into the playbook.
The option for reports to be polled via the synapse admin API (rather than configuring proxy pass-through)
The option to disable the displaying new reports in moderation room (so that you can use the TrustedReporters protection without the abuse reports features)
A !mjolnir rules matching <entity> command to search watched lists.
Glob support to the kick command.
A background queue for kicking (to reduce the load of large glob kicks)
A slight improvement to the performance of the redact command
An improvement to documentation (including dedicated setup documentation)
A new mute action for the since command !mjolnir since 1day mute 100
Dept of Ping š
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.
I had the chance to have Ryan with me for a special edition of Open Tech Will Save Us on Thunderbird to celebrate their 102 release, which includes Matrix support for the first time in a stable release.
We covered many interesting topics, such as the importance of specifying the expected behaviour of clients and servers in a protocol to deliver the best experience to end users (wink, wink, reminds you of something?), why Thunderbird was more dormant and is now vibrant as ever, what they plan for the future. I had good fun and I hope attendees did too! Next episode is going to be at the end of July, but you can already join the
Open Tech Will Save Us room
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.
This MSC is a relatively simple it. Currently widgets are only allowed to specify their capabilities (what the widget is allowed to do, like reading the logged-in userās display name) when the widget is loaded. This MSC attempts to allow that model to be extended to let widgets ask for additional (or fewer) permissions over time.
I canāt help but be reminded of the shift in permissions on iOS and Android here in how they shifted from āask all permissions up frontā to āask for permission for each thing when itās used in the appā :)
This week the Synapse team released Synapse 1.61.1! This is a security release which addresses a high severity vulnerability in URL preview feature. Server administrators are encouraged to update as soon as possible! We have published a blog post explaining the vulnerability and detailing a few workarounds that can be implemented on homeservers which canāt be updated right away: https://matrix.org/blog/2022/06/28/security-release-synapse-1-61-1
Other than that we have published the first RC for Synapse 1.62.0 (which was followed today by a second bugfix RC). Synapse 1.62 will feature an improved spam checker API for modules, performance improvements around device lists, more customisation for .well-known client files and much more. Watch this space next week for the full rundown š
This week we released Dendrite 0.8.9 which contains a number of improvements around backfilling room history, amongst other things.
Features
Incoming device list updates over federation are now queued in JetStream for processing so that they will no longer block incoming federation transactions and should never end up dropped, which will hopefully help E2EE reliability
The /context endpoint now returns "start" and "end" parameters to allow pagination from a context call
The /messages endpoint will no longer return "end" when there are no more messages remaining
Deactivated user accounts will now leave all rooms automatically
New admin endpoint /_dendrite/admin/evacuateUser/{userID} has been added for forcing a local user to leave all joined rooms
Dendrite will now automatically attempt to raise the file descriptor limit at startup if it is too low
Fixes
A rare crash when retrieving remote device lists has been fixed
Fixes a bug where events were not redacted properly over federation
The /invite endpoints will now return an error instead of silently proceeding if the user ID is obviously malformed
As always, please feel free to join us in #dendrite:matrix.org for more Dendrite discussion.
Thunderbird 102 with Matrix support is now available for download at https://thunderbird.net/. The Matrix implementation reflects whatās been previously discussed in TWIM with some additional bug fixes. You can read more about whatās new in our blog post.
Ryan discussed the Thunderbird 102 release as well as the project in general in this weekās Open Tech Will Save Us, give it a listen for the latest inside scoop.
Have you ever noticed that some people are just plain @*%&!§%ā+? Well, to quickly deal with what they wrote, Nheko now has a /redact @userid:server.name command, so you can redact everything they wrote (as long as it is in the currently cached section of the timeline). Note that you will run into rate limits when using that and Nheko is not yet applying an appropriate backoff in that case.
Similarly, q234rty fixed a lot of cases where icons in Nheko were either blurry or the wrong size. We fixed a few crashes, the room list should now not sometimes store the wrong order of rooms, brausepulver made large avatars cropped locally (since servers donāt guarantee any size over 96x96 when cropped and synapse doesnāt properly save the full image size in that case) and added a menu entry to copy a roomlink. You can also now define new powerlevels for users instead of using the existing levels in the room and Jason fixed some compiler warnings when a private member struct doesnāt have an explicit constructor on some compilers. Nheko also now downloads the full online key backup when you explicitly toggle the switch.
A more noticeable topic might be, that Nheko now requires servers which support the v1.1 API or later and will not allow you to login or register otherwise. At the same time we also enabled support for the shiny and new knock_restricted rule and all remaining groups code was removed (you know, the feature from before spaces were cool).
I also updated Nheko on my work laptop now and since I was quite surprised by how fast it starts now (while my room count is over 900 !), I attached a video of that below for your pleasure.
This week is an exciting time in Element land! We have one feature coming out of beta and another going in: the new search experience is going live with the next release, while video rooms will become available for testing. You can already preview them in the release candidate!
Threads
After investigating ranged read receipts, we are looking at per thread read receipts again as a more practical approach.
Community testing
RC testing done:
Web - MD/HTML support in Space/Room topics
iOS - regression testing of messages, reactions and rooms
Sometimes fixing something that annoys you isnāt even that hard, and since it annoys you, you have some motivation to fix it. I call this Anger Driven Development (ADD). If you have some things that annoy you, I encourage to try fixing them for a bit. It might help out some other people too. If that makes you want to contribute to Nheko, donāt hesitate to join #nheko:nheko.im and ask me to help you out with whatever fix you are trying to contribute.
This time I just decided to clean out some issues, that came up in the Conduit development channel and that werenāt fixed yet. Turns out it was just a few lines to change and it hopefully makes the Matrix experience better for everyone in the long run. The changes were also quickly reviewed and are merged now. Do you have any such little fixes that no one hears about, but you are proud of them? Please post about them, Iād love to see them!
Are you enjoying Location Sharing but have tired thumbs from tapping every time you need to update your location? Then fret no more! Element 1.8.20 features our new Live Location Sharing feature, now available in Labs.
Live Location Sharing: Now in Labs, weāve added the ability to send your location in real time to the people and rooms of your choice!
Mark as Read: Quickly mark a single room as read by long-pressing it on the home screen.
Annoying bugs fixed: Itās much easier to tap the names and avatars of room members, voice messages now work better with VoiceOver enabled and it is significantly faster to create a new room.
Over the last few weeks, a significant push on rust-crypto-support for Nodejs has taken place, e.g. this PR. Major parts are available, the infrastructure to create releases ready, however, a pretty rare huge memory allocation that causes a crash in Nodejs on the CI has blocked progress of the team recently. Debugging this costs a lot of time and it is yet unclear, how much of a problem this really is (as the cause stays mysterious), however it has also been seen in the wild on Windows nowā a concerning development.
This week, the team released version 0.10.2. In this version, we added experimental support for native group call signaling MSC3401. We have been playing with it in our internal clients, and we have to say that we are pretty happy with the result! There are still some bugs, as sometimes a new call is creating instead of joining the existing one. But itās looking great!
We also took the opportunity to fix some bugs in call handling. Now the ringtone is properly properly when rejecting a call. Also, when opening the client, we donāt trigger a call event anymore if the call end event is in the sync response.
We also did some refactoring for the sync handler, reducing the usage of JSON objects and adding some try catch to handle issues when handling event room updates. We switched to custom CachedStreamController so even if the stream has already been listened to, you can still access the last sent value.
Finally, when sending messages when under unreliable connection, messages could be sent out of order. This is now fixed thanks to the implementation of a message sending queue.
This weekās release completed support for resolving, creating, and deleting room aliases. Get the code and contribute at https://git.thisisjoes.site/joe/axon.sh (supports GitHub and GitLab login) and join #axon:matrix.thisisjoes.site for discussion and updates!
Two is better than one! Ascurius joined the synadm team and helps maintain the github repo, code new features and support users on github and #synadm:peek-a-boo.at.
Thanks to all synadm users, feature requesters and contributors, issue submitters and #synadm:peek-a-boo.at members. Itās fun to maintain a project and see its community grow each day!
Some features from the latest releases weād like to highlight:
The local part of an MXID can now be used as the <user_id> argument in various synadm commands. Of course, there is still the possibility to use the full MXID if desired.
We have added a shadow-ban command so that admins now can more easily deal with abusive users: synadm room shadow-ban
The room state API is now supported, try synadm room state
And with the help of that API we created a command to easily generate a list of rooms and corresponding admins and mods: synadm room power-levels
The synadm room search command was adapted to make better use of current Synapse versions possibilities.
Documentation chapter around using synadm together with Synapse instances deployed with matrix-docker-ansible-deploy.
The magic around āretrieval of the own homeserver nameā got a massive overhaul. This affects several user and media subcommands.
With the first Matrix Summit Conference we try to showcase the matrix-eco-system in its whole width and depth.
We are looking for talks and workshops around matrix-related projects and products. We are interested in all aspects of those: From the past to the future, from the moment of the idea, the story of the creation or the vision of the future.
Weād like to understand the principles as well as the technology.
The conference is from people for people, so if youād like to talk about yourself, your community, your organization, please do.
Showcase yourself and your relation to the Matrix world.
We try to compile a versatile program. We are open to contributions of any length, from 5 minutes(lightning talks) to presentations and talks to workshops and hacksessions up to 5 hours.
Weāll come together to discover, celebrate and enjoy the world of matrix. Also, if you have any arty, cultural or playful contribution in mind, please offer it.
You can enter proposals until 2022-07-22 22:22 (Europe/Berlin), 3 weeks from now in our pretalx
Matrix-summit-berlin-2022 matrix summit space
The #matrix-summit-berlin-2022 space will contain all rooms and subspaces related to the event.
For the organization of the summit we have orga-room. Just come by if you like to know something or help with the summit.
There is a gitlab organisation which contains our codebase and issuetrackers.
Sponsors?
We try to make everything low cost. But we need some money for food, drinks, merch, travel, accommodation. Please contact Yan or write mail, when you can sponsor the event.
Note this is a community event that is not organised by the Matrix.org Foundation.
Meet other matrix users, chat about Matrix, the rest, and everything else, discuss your Matrix ideas, sign each other in persona, and maybe spice the evening with a good mate or beer.
Also when the bbq is lit you may wish you brougth your favorite item :)
Every first Wednesday of the month in the c-base at 8pm (ātil the next pandemic).
An oversimplified, easy to implement, embedded live chat widget that allows your websiteās visitors to send messages seamlessly to your Matrix account.
The widget is Built using Svelte, so everything goes in one nice bundle, its fast and awesome to embed. No need for external libraries or big framework.js files. Just import into your websiteās structure one JS and one CSS files.
The server uses Golang, the Binary is only 3.2MB in size. Make sure you configure the .env file.
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.
The big news from the spec this last week is the release of Matrix v1.3 š (read the blog post if you havenāt already)! Roughly three months since the release of Matrix v1.2, this release brings improvements such as knocking on rooms, room version 10, reduced metadata in encrypted messages and the first pieces of aggregations finally landing in the spec proper. And more! See the blog post for the full changelog.
Most of the Spec Core Team has been away this week, thus there has not been much moving forwards. But we do have two new MSCs from @duxovni and @Johennes, which you can view above.
This MSC allows for differentiating between different incoming streams of media coming from a single user by adding a sdp_stream_metadata dictionary to Voice over IP (VoIP)-related events. This is a relatively simply addition with useful functionality, such as allowing a single user to share both their camera feed and screen share at the same time!
1.4.24 released to beta testers which includes support for UnifiedPush and fixes for voice recordings and duplicated messages in the timeline
Weāre making it easier to opt in to Live Location Sharing by displaying the labs setting within the location sharing flow, no need to hunt down the setting anymore!
We have also fixed some outstanding crashes around opening large images in the timeline and signing out
added previews of room name and topic in tooltips for room icons
added handling for an eventId component of annotation URLs
Along with a number of other minor bugfixes and UX improvements. And, weāve added one neat new user-facing feature: inline previews of video and audio annotations. This one is a little hard to explain, but a video is worth ten thousand words:
A set of Rust library crates for working with the Matrix protocol. Rumaās approach to Matrix emphasizes correctness, security, stability and performance.
Released Ruma 0.6.4 with a bug fix for rich reply fallback generation
Added support for pretty much everything from Matrix 1.3, which was to a large extent just the removal of feature flags for previously-unstable functionality
Thanks to @zecakeh for both implementing most of these features and now stabilizing them in Ruma!
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.
This is a proposal that adds a mechanism for homeserver administrators to define a password policy for users. This policy can decide rules such as a minimum password length, whether a digit is required, etc. This policy can be enforced by the homeserver when a user registers an account or changes their account password and is communicated to the client so that it can also be enforced locally.
Astute readers will possibly note that authentication in Matrix will eventually be replaced by OAuth2 (MSC2964). This will move operations like password policy enforcement from the homeserver to a separate authentication service, essentially removing the need to reinvent-the-wheel in a homeserver.
Registration, login and managing passwords and connected third-party IDs is often a complex part of a Matrix homeserver. Moving these out to a separate authentication service will both unlock new features (log in with Matrix!) as well as reduce the resources required to implement a Matrix homeserver.
Hey there, I am Rohit. Iāll be participating in GSoC this summer, under the Matrix organization.
For my project, Iāll be working on the desktop client, Nheko. Specifically, I aim to work on its VoIP Library and also on implementing and updating some of the features to concur to specification changes to the Matrix protocol, which include
Improved VoIP Signalling
VoIP Call Transfers
Muting Calls
I plan on starting a blog and hopefully will do so soon. In the meanwhile, if you want to know more about the project you can visit here and join the #nheko:nheko.im to participate in discussions.
Looking forward to learning and interacting with the community.
Work continues on speeding up federated room joins, improving testing, and reducing database i/o. In addition, some lovely features have been added:
Add new media_retention options to the homeserver config for routinely cleaning up non-recently accessed media.
Experimental support for MSC3772: Push rule for mutually related events.
Update to the check_event_for_spam module callback: Deprecate the current callback signature, replace it with a new signature that is both less ambiguous (replacing booleans with explicit allow/block) and more powerful (ability to return explicit error codes).
Add storage and module API methods to get monthly active users (and their corresponding appservices) within an optionally specified time range.
Support the new error code ORG.MATRIX.MSC3823.USER_ACCOUNT_SUSPENDED from MSC3823.
Add a configurable background job to delete stale devices.
Improve URL previews for pages with empty elements.
Allow updating a userās password using the admin API without logging out their devices. Contributed by @jcgruenhage.
This is in addition to quite a number of bugfixes!
This week we released Dendrite 0.8.8, which contains the following improvements:
The performance of state resolution has been increased significantly for larger rooms
A number of changes have been made to rate limiting:
Logged in users will now be rate-limited on a per-session basis rather than by remote IP
Rate limiting no longer applies to admin or appservice users
It is now possible to configure additional users that are exempt from rate limiting using the exempt_user_ids option in the rate_limiting section of the Dendrite config
Setting state is now idempotent via the client API state endpoints
Room upgrades now properly propagate tombstone events to remote servers
Room upgrades will no longer send tombstone events if creating the upgraded room fails
A crash has been fixed when evaluating restricted room joins
As always, please feel free to join us in #dendrite:matrix.org for more discussion.
Hello friends. This week we bring you a security release for matrix-hookshot. Please ensure you have upgraded to at least 1.7.2, and have read the security advisory. Thanks!
The changes are as follows:
Add support for GitHub enterprise. You can now specify the URL via enterpriseUrl in the config file. (#364)
Add ability for bridge admins to remove GitHub connections using the admin room. (#367)
FluffyChat 1.5.0 has been released and will soon be in all stores. This release comes with a bunch of bugfixes and introduces the first iteration of a Material You based design. We also try to support Android 12 accent colors (while this does not seem to work yet). On other platforms, our own purple shape will stay the default.
I like the new Material You design while we needed to tweak it at some points. Also the dropdown menu misses some elevation but this is a known issue in the Flutter repo which will be fixed soon.
This is also the first build with Flutter 3 which should improve the performance a little bit. Unfortunately it brings some regressions. We are forced to ship a little bug with it: Sharing on iPads seems to be broken. Iām very unhappy with this situation but otherwise we would have ended up in different releases for different platforms. As there afaik are not that many iPad users out there, we decided to live with this compromise and ship a bugfix release asap.
Yeah⦠Flutter has a lot of pros but also a lot of cons. Every new release of this framework leads to the fear of new regressions. Shipping a new major release where basic stuff like āSharingā is just broken, is totally stupid⦠but thatās the decision of Google. :-P
We didnāt want to wait to ship the new design and also we needed a new release to come back to F-Droid where FluffyChat wasnāt available in the last weeks because of a ProGuard problem, which should be fixed now.
Threads is in Beta and progressing. Weāre working hard setting up the foundational work needed to improve read receipts and notifications cross-platform.
Keep sending feedback and rageshakes as weāre also continuing to improve the UI and fix any bugs that are raised.
Community testing
Weāre moving closer to getting the new search experience out of beta, thanks for all your help on testing so far.
Next up: Big regression testing session on Android, after the removal of communities/groups (Wednesday or Thursday TBC)
Weāre continuing our bug fixing spree and the latest release has fixed some of the more significant problems we had
Weāre working towards adopting a new notification filtering entitlement and we will soon be able to silence those pesky empty notifications
Our āEdit Home Screen Layoutā experiment is running well and we hope to be sharing the results of the diary study and prototypes soon.
The new first time user experience is continuing to make good progress and is quickly approaching finalisation
We are now allowing account deactivation for users that signed up through SSO
On ElementX we have merged the new crash reporting service and we are starting to see reports come in. Weāve also successfully integrated an initial version of the DesignKit and added room filtering
1.4.19 is available and fixes some small bugs, including a fix for the regression surrounding space switching performance.
Our prototype study is nearly at a close - weāve received a lot of great feedback on our suggested changes to the home screen and space switching interactions.
Weāve been working on integrating UnifiedPush for both Google Play and FDroid versions of our app.
The team is finalising the updates to the create account flow. It will be ready for testing soon.
This week we landed Element Call beta 2 (https://call.element.io) including a bunch of nice updates. First of all, everything is now end-to-end encrypted by default: not only the WebRTC streams but also the matrix signaling (It was consciously disabled in beta 1 for debugging purposes). Moreover, we have experimental support for spatial audio rendering. Give it a try ā you can find it in the settings section. Itās a lot of fun to play with and really supports immersion during a video call. This release also introduces a whole new experimental way of communicating: Walkie-talkie mode. In that mode, videos are disabled, and everyone is muted by default. To speak, press the āpush-to-talkā (PTT) button ā takes me back to my childhood š
This week, the team released version 0.9.12. In this version, we updated our Matrix API Lite package, in which we fixed the issue with the room hierarchy endpoint with some improper parsing and wrong type coming from the generation of the spec Open API documentation.
We also did some housekeeping and renamed some methods and getter to make them explicit. For example, the futureSender getter is now an asynchronous method called fetchEventSender() to make it clear that calling this function may trigger an API call.
Possibility to override the supported Matrix spec version but we donāt really recommend using it for production.
Hereās a fun Matrix-based project for you, sponsored by yours truly and my employer FUTO.
The āGolden Tigerā senior capstone project team at Portland State University just delivered the results of two quartersās design and implementation work on a secure/private, self-hostable, end-to-end encrypted cloud security camera using Raspberry Piās and Matrix. The idea of this prototype project was to provide similar functionality to commercial services like Ring or Nest, but without letting any nosy third party see inside (or around) your home.
The studentsā code is available on Github in two repos:
Hey all, itās been a holiday for much of the team this week, so from the plane of Maple trees I present to you the 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
In terms of Spec Core Team MSC focus for this week, weāve been working on getting Matrix 1.3 out the door and generally working towards a better process for handling releases alongside critical proposals for the protocol. The goal is to be able to ship these major features while reducing the risk of a release falling behind. Watch this space for more details as this should result in MSCs getting through the process a little bit quicker.
For Matrix 1.3, weāre targeting Thursday, June 16th, 2022 as our release date, though this comes with a small asterisk: weāre looking to land quite a lot of stuff so might have to adjust the date once more as needed. We do feel reasonably confident in the date though - watch for blog posts titled Matrix 1.3 in the coming weeks.
Random MSC of the week
The script has chosen MSC2846 - Decentralizing media through CIDs as your random MSC this week. The MSC raises an interesting question about how to make media more akin to events in Matrix. If youāre interested in this area, take a read of it and the related MSCs.
Hey there, Iām Aditya Rajput (aka BURG3R5), a sophomore at IIT Roorkee, India. This summer Iāll be working on implementing encrypted Search in Matrix rooms. More details about this project can be found here. Once a week, Iāll be blogging about my progress (plus some neat stuff I find during research) in this blog. Technical discussion and more frequent updates can be found in the public room #encrypted-search:matrix.org.
While writing my GSoC proposal, Iād already made some progress w.r.t. the actual code required for this project, and my preliminary implementation can be found here.
Looking forward to working in this ecosystem with you all!
Hello everyone, my name is nannanko. From today, I will officially participate in GSoC to contribute code to the Kazv Project. I hope I can get along well with you all.
Hey there!
Iām Binesh Munukurthi, a Computer Science student from India. Iāll be working on the 3rd Party Authorised Room Membership project for this yearās GSoC.
This project aims to develop an application that has the ability to delegate membership of a room based on a userās interaction with other third party services.
For more details on what Iāll be implementing, please refer to the link
Iāll be posting my weekly updates here
If you are interested in knowing more about the projectās progress, feel free to join the public room #matrix-cerberus:cadair.com.
I look forward to spending a wonderful summer with you all!
Thanks!
Hi! Iām Snehit Sah. I will be contributing to KDEās Matrix client, NeoChat, during GSoC. I will add Spaces support to the application. My progress can be followed at my blog.
Hoping for a fun stay!
This week was a short one, but work continues on fast room joins, testing Synapse with workers on Complement,
and increasing the efficiency of Synapse with regard to database i/o. In addition, we released v1.60.0 (https://github.com/matrix-org/synapse/releases), which includes
work to reduce the possibility of database corruption
a fix to a bug introduced in Synapse 1.60.0rc1 that would break some imports from synapse.module_api
This week we released Dendrite 0.8.7! This is a highly recommended update since it fixes some fairly large bugs:
Support added for room version 10
A number of state handling bugs have been fixed, which previously resulted in missing state events, unexpected state deletions, reverted memberships and unexpectedly rejected/soft-failed events in some specific cases
Fixed destination queue performance issues as a result of missing indexes, which speeds up outbound federation considerably
A bug which could cause the /register endpoint to return HTTP 500 has been fixed
As always, please feel free to join us in the #dendrite:matrix.org room for more discussion!
Quadrix is a single-codebase, multi-platform project, using the meanwhile deprecated ReactXP framework (Microsoftās answer to Flutter), which compiles to iOS, Android, and web/Electron. The Quadrix apps are available in the main app stores for mobiles and desktops (including Snapcraft and Flathub). Repo is at https://github.com/alariej/quadrix. Would be great to have a few people test the apps and leave feedback in the repo or in the (still empty) #quadrix:matrix.org room!
Important: Quadrix doesnāt support E2EE yet, but itās on the TODO.
Our prototypes for a new app layout are going well. Just a few people have early access in order to give us feedback to ensure weāre building a new layout that works for everyone. Watch this space!
Weāve been working on improving our onboarding flow so that users signing up for Matrix and Element find it much easier. This work is making great progress.
Live location sharing is also making great progress and is quickly approaching the beta phase
On the ElementX front weāve been busy adopting async/await, introducing state machines, a new design kit component and hooking up crash reporting and sentry.io
We are a bit late on the release candidate. We want to fix a performance regression when switching spaces. It will be available early next week.
We have merged the UnifiedPush PR from P1gP1g. We are doing some adjustments but users will be able to choose their push distributor soon.
The prototypes that are with a small group of early access tester are going down a storm - weāre getting lots of great feedback that will help to build a new app layout that works for all.
Our improvements to the first time user experience are nearly ready for testing and shipping! Weāre hoping to make our onboarding experience a lot simpler for folks that are creating an account.
The last two weeks have been focused mainly on nuts-and bolts improvements to user experience, rather than any big new pieces of functionality. Weāve:
Added upload previews for PDFs and audiovisual media, so you can confirm youāre uploading the right thing before creating a discussion.
Added a method to precompute PCM data for more accurate waveforms in audiovisual-media-based discussions.
Allowed for join rules and annotation visibility to be modified separately in settings
Added support for URLs linking directly to particular events
As always, if youāre interested in social annotation on matrix, come join us at #opentower:matrix.org!
Weāve had breakthroughs this week on implementing a native Matrix SFU (selective forwarding unit) which speaks MSC3401, thanks to Sean DuBois - all round WebRTC superstar, project lead for the Pion WebRTC implementation for Go, and author of WebRTC for the curious.
Sean generously contributed an initial proof of concept to show how youād build an MSC3401 SFU using Pion at https://github.com/matrix-org/sfu-to-sfu - which (I think?) is the first time that the first implementation of a major core MSC has been contributed from outside the core team. Huge thanks to Sean to setting the ball going on this - the current PoC demonstrates not just SFU capability but also the decentralised cascading architecture which makes MSC3401 unique. The initial PoC speaks a ātest jigā version of MSC3401 hooked up to a simple web client for experimentation, but Matthewās now experimenting with adding genuine Matrix support to it via mautrix-go, and hooking up Element Call to speak to it.
Adding SFU support to Element Call will mean that we can support more than ~7 simultaneous calls - and with MSC3401-style decentralised cascading, we should be able to support hundreds or even thousands. Thereās lots of work remaining here, but the ball is now rolling. For more info about SFUs and MSC3401, check out Matthewās CommCon 2021 talk (which was what prompted Seanās implementation work here!)
Separately, weāve been running Element Call on staging with E2EE enabled for the last few weeks, and should be releasing the first major Element Call update next week. And once SFUs land, then Element Call can exit beta - watch out Zoom!
libolm 3.2.12 has been released. The main update in this release is that the olm_sas_calculate_mac_fixed_base64 is now exposed in all the official bindings, so that MSC3783 can be implemented. Aside from that, there have been some minor fixes and improvements. See the changelog for more information.
While most of the work in the background continues (Sliding-Sync PoC, Wasm+NodeJS support, UniFFI macros), the first few parts surface through the cracks and show themselves in new PRs: basic wasm web-js and nodejs support has landed with more APIs, tests and documentation on the way; the Sliding Sync PoC has been upgraded to the latest JSON layout and now provides a first set of reactive API via FFI, too. Furthermore this week has seen a bunch of cleanups, simplifications and clarifications around the OlmMachine and crypto types, and weāre fixing a bug in the state store, where not all data has been properly encrypted in the past.
This week, the team released version 0.9.9. In this new version, we added a search function to allow searching for an event in database and on server through several requests to the /messages endpoint.
There was also some work on updating the image size when generating thumbnail, which allow saving a bit of calculation when sending events. If using a custom resizer make sure to update the resize response as here.
We also did some refactor with the event sender getter. The getter result is now a future to allow requesting the member event to the server if we cannot find it in memory, to help fix the issue when the user was not found in memory.
Finally, a quick helper function (client.waitForSync) was added. It allows you to wait for a room to appear in (left, join, invited) section of the sync response.
Only a small update this week. One new feature and some much needed Ansible improvements.
Pipes move messages from one room to an other. Useful if you are in important rooms but only want to monitor a single room.
The Ansible role can now manage more aspects of MCM. Mainly in the post setup phase. The major one being if you run into encryption errors for any reason you can run the playbook with the fix tag and it will generate you a new device ID and encryption store.
Pipes move all messages from one room to an other.
Adding a filter now uses the room the command was sent from by default if the roomid is not specified.
Ansible role now has tags for start, stop, configs, fix and all.
Ansible role backs up the configuration.toml file to prevent the possibility of data loss.
Element has signed the open letter of the Global Encryption Coalition, of which we are members of. We are working with them to push back against any intrusive measures that could compromise the privacy of users.
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.
Some new MSCs popping up this week around widgets, room types, fixing notifications with threads and room version 11! Though note that the last one currently serves as a means for the Spec Core Team to publicly track what should be included in room version 11, and is by no means is its content considered final.
The Spec Core Team are currently focused on room version 10 and getting Matrix v1.3 out the door soon. Thereās also been some discussion on MSC2676: Message editing this week, with the intention of finally landing that in the spec. Thanks to richvdh for driving the charge there.
Homeservers currently make use of Client Server Media APIs to pull media from other homeservers over federation. This has worked for a long time, but is a bit of a confusing blur of the lines between client<->server and server<->server traffic. It also makes it difficult to require different authentication rules for clients versus servers.
This MSC aims to help clean that up. Take a look if youāre interested!
This week we released Synapse 1.59, which features a bunch of niceties including new features, bug fixes and performance improvements. Read all about it, including increased flexibility for workers and improvements on push rules, on the matrix.org blog!
Aside from this, the team is still hard at work and focusing on making Synapse better, among other things by looking at improving performances on room join and decreasing memory usage.
Last week new version of Hookshot came out starring the following changes:
Docker images can now be built cross-platform. Thanks Paul for getting arm64 builds going!
Improved GitLab push hook formatting: markdown commit hashes, link āN commitsā to the list of commits, if there are more commits than can be shown only link instead, and show committer unless a single person committed and pushed
RSS feed support got a configuration widget: now need for using bot commands anymore! (though they are still supported)
Added widgets.openIdOverrides option to help developers test configuration widgets locally
Fixed regression where GitHubRepo and GitLabRepo connection config options were not being honoured
Better error handling: if the backend hits an error that causes your connection to KT chats to be dropped, the bridge should notify you about it (not that it should ever happen in the first place, but you never know!)
Better logging: the Node module can be configured to print the arguments of RPC commands received from / sent to the Python module. The example Node config includes a default set that should be helpful for general debugging.
Room metadata bridging: setting an Open Chat title & topic from Matrix should work now!
Setting the title of a Direct Chat should work too, but topics remain unbridged (since KT Direct Chats donāt have topics/descriptions)
Defensive error handling: Attempts to add a non-friend user to a DM will be refused by the bridge, since KT only allows Direct Chats between friends
KT does allow ā1:1 Open Chatsā between non-friends, but those arenāt bridged yet
Also, testing adds support for joining KakaoTalk rooms from Matrix, either by joining an existing portal or providing an Open Chat URL to the bot with a join command. ā¦However, Iāve been unable to test this, since KT is stingy about whom it allows to join Open Chats! So please give this a try if you can.
In other news, this bridge is now listed on Matrix.org! š„³ Thanks Thib !
Hello! Just a notice to say that the `matrix-appservice-discord project has kindly been adopted by the matrix.org foundation, which means that hopefully there will be a lot more time available to maintain it than when it was my personal project! We expect to have a new update for you (the first one in 1.5 years) very soon! If youāve got any questions about this, please feel free to ask in the usual spots like #discord:half-shot.uk.
Read default port and listen address from config url (@BtbN)
Improvements to pillifying IRC nicks, again
Fixes for AUTOQUERY not always working correctly
Allow anyone to use STATUS command to get their own status
Filter control characters only for plumbs so people can send garbage to IRC if they wish from Matrix
Support for converting IRC color codes to Matrix (@tjaderxyz)
Fixed compose docker Synapse configuration for registration
Improved Python 3.10 compatibliy (@BtbN)
Hidden room to hide joins using restricted rooms join rule (@BtbN)
Some cool stuff this time around! Aside from many bug fixes this release has two great new features: IRC message colors and hiding invites from channels.
IRC colors are enabled by default and are rendered how your Matrix client sees fit. They can be disabled per network if needed.
Hiding joins works with room v9 restricted join rules feature to allow IRC ghosts to join rooms without an invite from the bridge bot first. This clears some clutter and may even make joining a bit faster in the long run - we will see. This feature is disabled by default and needs to be enabled by the bridge administrator as it is considered a ālabsā feature for now.
The main work is currently happening behind the scenes, while we prepare for the upcoming tasks - like WASM and NodeJS support for the crypto-crate and work on UniFFI. We are also hardening our processes for improved security and risk management around our code base, dependencies and the potential to ship binaries.
šļø We are very happy about the influx of people, who joined our developer community questions since the release. Weād like to take this opportunity again to invite anyone else interested in hacking on matrix in rust to check out our help wanted tagged issues and join our matrix channel at #matrix-rust-sdk:matrix.org.
We are proud to announce that Ossrox is now listed as a hosting provider on matrix.org! š We offer Matrix Home Servers via https://ossrox.org - for the time being only in the German-speaking area. We are dedicated to hosting open-source software and also offer other services in the messaging, groupware and web meeting segments. If you got any questions, just reach out to us at #public:ossrox.org.
Hello Matrix friends. We have recently launched an online learning platform that has Element at its core. We added some great features such as annotations for both course material and web pages. Here is an overview video of what we are doing.
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.
The Spec Core Team has decided to not include MSC3440 (threading via m.thread relations) specifically in the upcoming Matrix v1.3 release. We previously stated that it would be in v1.3, but thereās a few unproven MSCs (namely MSC3773 (notifications for threads)) which make it feel improper to put threads into the spec at this stage. Weāre aiming for a future (very near) spec release to contain threads, assuming we can get enough of the feature landed. This is a very similar approach to what we did with Spaces: while the core feature existed as FCP-concluded for a while, we wanted to give some other MSCs a chance to land before writing it up formally.
As a follow-on from this, any implementations that are currently assuming āv1.3ā spec support translates to threading support should note the following:
Clients which are pre-emptively checking for v1.3 in /versions should stop doing that. Look for org.matrix.msc3440.stable as an āunstableā feature flag instead.
Servers which offer MSC3440ās behaviour should expose it on stable endpoints and expose org.matrix.msc3440.stable for clients to detect.
Optionally, clients and servers can drop support for the org.matrix.msc3440 (truly unstable) flag, given clients & servers should have already upgraded.
At the spec level, weāll still be writing up MSC3440ās dependencies (aggregations and friends), but will notably be missing MSC3440 specifically in v1.3. If folks can update their clients urgently, it would be massively appreciated!
A simple change to the auth rules to help prevent an edge case where one is able to invite a user, but not disinvite them as the latter requires a separate permission. The MSC attempts to solve this by always allowing the cancellation of invitations youāve sent.
A small MSC, but one with some open threads still. Perhaps a good opportunity to go in and clean it up!
In parallel, Olivierās been doing groundwork to reduce replication traffic for workerised Synapse deployments, Andrew (anoa) has been looking at media retention policies and work continues on faster room joins.
This week weāve actually made two releases ā Dendrite 0.8.4 and Dendrite 0.8.5 ā which are both primarily targeting performance and bug fixes.
Weāve also released our new living documentation, which is available at https://matrix-org.github.io/dendrite/, which features new installation instructions and documents that will be helpful to Dendrite server administrators. We will be writing more documentation and expanding this over time.
Changes include:
The built-in NATS Server has been updated to version 2.8.2
Monolith deployments will no longer panic at startup if given a config file that does not include the internal_api and external_api options
State resolution v2 now correctly identifies other events related to power events, which should fix some event auth issues
The latest events updater will no longer implicitly trust the new forward extremities when calculating the current room state, which may help to avoid some state resets
The one-time key count is now correctly returned in /sync even if the request otherwise timed out, which should reduce the chance that unnecessary one-time keys will be uploaded by clients
The create-account tool should now work properly when the database is configured using the global connection pool
Fixes a regression introduced in the previous version where appservices, push and phone-home statistics would not work over plain HTTP
Adds missing indexes to the sync API output events table, which should significantly improve /sync performance and reduce database CPU usage
Building Dendrite with the bimg thumbnailer should now work again (contributed by database64128)
As always, feel free to join us in #dendrite:matrix.org for more Dendrite-related discussion.
Ement.el, a Matrix client for GNU Emacs, received some more updates this week:
Additions
New Transient-based command menu for room buffers, bound to ?.
New command ement-list-members, which lists all members in a room.
Member completion now completes from all members in a room (rather than only those whose messages have been seen).
Power-level events are displayed.
Grouped membership events have tooltips showing each memberās individual event.
When usernames are colorized, message bodies may optionally be colorized in a less intense shade of the same color, so they are easily distinguished yet easy on the eyes (and, of course, the shading is customizable).
Changes
When displaying usernames in the margin, names that are wider than the margin are abbreviated, with the full name in the tooltip.
Fixes
Typing notifications (recently brokenāoops!).
Sending direct messages marks new direct rooms as direct rooms.
Event notifications for rooms not displayed in a buffer.
As always, feel free to join us in #ement.el:matrix.org.
The newest version of the app (1.8.14) was released on Monday! In this release weāve made a bunch of improvements and bug fixes, check it out here
š We also merged an initial version of mention pills and are working on ironing out edge cases. Exciting!
Thereās good progress on the new authentication flows and live location sharing, both of which weāre looking forward to sharing and testing with you soon.
On the ElementX front weāre nearly done with the DevX setup and are working towards using the latest Rust SDK
unit and UI test runs on the CI and Codecov.io coverage reports
swiftlint, danger-swift and sonarcloud.io checks for code quality
automatic generation of PR builds, published on diawi
scripts for importing and reusing localizable strings from Android
Weāve been working on smashing bugs, improving stability, and reducing crashes.
Our first time user flow is progressing - weāre starting to test the new authentication flow internally and will be asking for help testing this soon.
The Rust Matrix team is very excited to announce the next major release Matrix SDK 0.5 āstores and native cryptoā, now available for everyone by adding matrix-sdk = "0.5.0" to their dependencies in their Cargo.toml. This first major release in about 8 months brings significant changes many have been waiting for:
Better, safer, native-er crypto: matrix-sdk 0.5 ditches libolm in favor of Vodozemac, the completely fresh rust-native re-implementation of the crypto crate. It has also been audited, the report of which is scheduled to be released soon.
Store revamp: the entire cache storage infrastructure for crypto and state has been restructured to allow for full plug-ability, with even the two default supported backends, sled and indexeddb both being separate crates now. And as a matter of fact, a community-driven sql implementation has already been published as beta (with postgres and sqlite support) by charlotte š¦.
WebAssembly; both of these changes also allow us to finally make WASM a Tier 1 supported target for the SDK. Not only does it build and even use the browser native indexeddb for permanent storage, we also have CI tests ensuring nothing will break this support going forward.
Features, Features and Process: thereās plenty more features and bug fixes in this release, e.g. native thumbnail generation support, as well as changes on our processes going forward.
Buscarron is the new backoffice of the etke.cc and its main feature is to receive web forms (HTML/HTTP POST) and convert them into (encrypted) matrix messages.
So, whatās new?
Email confirmation after form submissions with Postmark
If you use Matrix with the Signal bridge (or any bridge) with relay mode
enabled, your guests have probably experienced the confusion where they donāt know who else (on Matrix) is in the chat as only Matrix can double-puppet.
When this bot is added to a Matrix room, it will announce:
Who the room members are when a new Signal user joins;
When a Matrix user joins or leaves, who that Matrix user was.
I built it just this afternoon using the excellent matrix-bot-sdk, but itās in Typescript and has plentyful unit tests!
The videos from the HYTRADBOI conference a few weeks back are now publicly available, in case anyone was curious but couldnāt make the conference. I gave a talk about building collaborative, open software on Matrix. The whole conference was great, so I recommend browsing the schedule for videos that may interest you. š
Loomio, an open source collaborative decision making tool, now supports integrating with Matrix rooms using their chatbot. They previously supported other (lesser) chat systems, but have recently added support for Matrix.
Dept of Ping š
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.
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.
āWowza, thatās a lot of new MSCs!ā I hear you say. This is actually a listing of the last 3 weeks, as it was pointed out to me that the last 3 editions of TWIM have not all features an MSC status update - which means some MSCs may not have necessary made it into the limelight.
As such, hereās those from this past week, as well as the ones that were missed!
Spec Updates
Itās that time of the year again - a new Spec release is on the horizon! Matrix v1.3 is expected to land sometime this month, and will include:
Any other MSCs which have so far been accepted, but not yet made it into the spec.
MSCs which land between now and v1.3 might get incorporated if easy enough, though chances are theyāll slip to v1.4 (expected next quarter).
On top of that, the other bit of news is that the proposal-in-review label has now been removed from the matrix-spec-proposals repo and thus all MSCs. This doesnāt mean your MSC is no longer in review! We simply found the label redundant along with the other labels in the process (it was attached to all MSCs which hadnāt been accepted/merged yet, which means very little) and thus we decided to remove it to reduce noise.
This MSC has actually been potentially(?) superseded by MSC3382. In short, both look to provide a solution to the problem of attaching (multiple!) images to messages, such that clients can display an album of images in a single event in the timeline.
Check it out if youāre interested in introducing such a feature!
Synapse v1.58.0 was released this week! Check out the v1.58 blog post for the full scoop, but the highlights are:
Our Docker images and Debian packages are now built from a dependency lockfile courtesy of Poetry. Props to David for leading the charge on this multi-week epic.
An experimental implementation of MSC3383 has been contributed by @Bubu and @jcgruenhage at Famedly, which will help with proxying federation traffic, amongst other uses.
An experimental implementation of MSC2815 has been merged, which allows room moderators to view redact event content for the purposes of moderation. This was contributed by @tulir at Beeper.
Device list updates are now asynchronous thanks to Erik, leading to much faster login times for accounts in big rooms.
plus many other bug fixes and improvements!
We also released a v1.58.1 patch shortly afterwards to address an issue with the Debian packages on some configurations. Server admins not using the Matrix.org Debian packages do not need to install this patch release.
Otherwise, ongoing work from the core team continues with Sean and Rich working on faster room join performance, Olivier pushing forwards on testing Synapse with workers in Complement, while Erik has been tackling general performance work.
Hey folks! Weāre announcing our 1.6.0 release for matrix-hookshot today. More features in this release: tadzik has gotten involved and given us support for RSS feeds in this release. You can check out how to get going with those in our hosted documentation.
This week brings another round of big improvements & new features!
Features & fixes include:
Fixes to Docker support & the documentation for setting it up
Changes to the login flow
The bridge can now be configured to enforce a login flow that more closely matches the official KakaoTalk desktop clientās, and to better warn you when a new login will kick out another one of your KT sessions. This will hopefully prevent the bridge from getting KT accounts banned!
Backfilling for KT->Matrix read receipts
Commands for adding/removing KakaoTalk friends
Commands to edit your KakaoTalk ID & mark it as shared or hidden
Matrix->KT DM creation, i.e. the ability to create a new DM with a KakaoTalk user from within Matrix
This might fail on the first attempt at creating a DM. If it does, try re-inviting the KakaoTalk puppet to the room.
Many stability & correctness improvements
With the combination of friends list curation & DM creation support, it should now be possible to connect with KT contacts entirely from Matrix! Simply add some friends, list them, and invite a listed friend to a 1:1 room!
This week we released Thunderbird Beta 101.0b1. It includes a bunch of bug fixes for the Matrix implementation and shows reactions as system messages, so you know when someone gives you a šļø.
Someone on Twitter complained that no chat client works like MSN anymore, where you could have separate windows for each chat. So for MSN compatibility we added that. (It is a bit experimental still, expect some stuff to not work or crash)
Bulbu also went through a lot of effort to add a second set of emoji shortcodes to Nheko. Those should be more familiar to people coming from other platforms or clients while the old shortcodes are available still as well. We also saw a lot of progress on the Finnish, Chinese, Indonesian and Russian translations, animated images should work properly in the image viewer again, buttons for opening the member list are now clearly marked with a people icon next to them. The memberlist is also now search- and sortable.
Anyway, have a look at how important multiple windows are:
FluffyChat 1.4.0 has been released with a lot of bug fixes, performance improvements and new designs. Take a look at the new designed sign up screen, which also now supports recommended homeservers from joinmatrix.org
Ement.el has received several updates since the last time it was mentioned in TWIM:
Additions
A new room list command, ement-taxy-room-list, shows rooms grouped āsmartlyā (and programmably). (It will be made the default soon; until then, call the command to use it.)
The new room list shows unread-notification/highlight counts, similar to Element.
Basic support for spaces:
Rooms (and spaces) can be added to and removed from spaces.
Rooms are listed under their spaces in ement-taxy-room-list.
Reactions can now be toggled off (i.e. redacted) by clicking them, like in Element.
Command ement-room-send-file allows uploading non-image files to rooms, and file messages are now displayed usefully, so the files can be downloaded or viewed.
Command ement-ignore-user ignores and unignores users.
Command ement-tag-room adds and removes favourite, low-priority, or custom tags on rooms.
Command ement-room-occur allows searching messages in a room buffer, similar to Emacsās occur command (i.e. it locally searches already-received messages).
Membership events are now coalesced by default, similar to Element (especially helpful in large public rooms, like bridged IRC rooms, where join/part spam can be overwhelming).
āIn reply toā links in replies, as well as other matrix.to links, can be activated in a room buffer to go to the linked message.
Mentions in outgoing messages are HTML-linkified (aka āpilledā), like Element.
Generated avatars for rooms that have none, similar to Element. (Only displayed in ement-taxy-room-list for now.)
Option ement-shr-use-fonts (disabled by default, which prevents HTML messages from being displayed in a different font).
Faces for favourite/low-priority rooms.
Redacted messages that are still known locally are now displayed with a strikethrough (after reconnecting, their content will be unknown).
When images are disabled, image messages are presented as clickable URLs, so they can still be viewed.
Some events, like membership events and images, are displayed alongside a vertical bar to help distinguish them from normal messages.
Even āhotterā-looking timestamps for rooms updated in the last hour.
Changes
Refactored notification system. Now easier to configure (see M-x customize-group RET ement-notify RET).
Fixes
Improved error handling when looking up homeserver hostnames and .well-known URIs.
Improved error handling when processing malformed events.
āElementalā display style (not used by many users, apparently).
In this months demos (also shown off at the top of the TWIM post), Eric showed off a proof of concept to anonymize your screenshots so you can easily include more context when submitting logs or bug reports without worrying where the bug occurred. The current concept will color block all of the text on the page to still maintain the structure of the app but completely hide the content itself.
This still has a ways to go before itās integrated in Element under the click of a button so if anyone wants to take over or give feedback, go comment on the issue, https://github.com/vector-im/element-web/issues/9615. If you want to use the anonymization now, you can manually run the JavaScript snippet from the issue in the browser devtools.
This mode could even be further extended further to include event_id labels in the corner of each message to easily correlate the logs to the screenshot.
We are testing out Sonarcloud, youāll see comments from the sonarcloud bot in new PRs about bugs, vulnerabilities and other inconsistencies that it has found
Our first time user experience is getting some attention in Web. Weāre working on simplifying a userās first session as we know it can be pretty daunting
Weāre thinking about new ways to give flexibility on the Home screen - watch this space!
The new Create Account flow is being implemented, currently weāre working on the captcha and T&Cs pages
Fix several crashes like when searching or when clicking bottom bar twice
Improve interaction with spaces which are in a space
ElementX-iOS
We are going to share more and more about ElementX-iOS, a complete rewrite of the Element-iOS app using matrix-rust-sdk. We made a prototype last quarter. The result was so promising that we want to go full steam on it
Work is moving forward with our proposals for a new app layout, weāre excited to share it with you
Our Create Account experience is still being updated, weāre currently working on ensuring that the Sign-in pieces work as expected
Fixed a number of crash bugs around calls, launching app and space list
Notifications have have been improved so that there is a noise for every notification which is received when they are enabled, in line with how web and iOS work
On the SDK side, we are working to improve / clarify / document the public API. Itās still in progress, but the generated API documentation is already visible here: https://matrix-org.github.io/matrix-android-sdk2/
Over the last two weeks, the theme in populus-viewer development has been permissions:
The settings menu for rooms has been redesigned
Itās now possible to assign and remove standard roles (admin and moderator) from populus viewer
Itās now possible to set power levels for standard events and actions from populus viewer
Itās now possible to ban and unban using the membership management modal
Redacting the messages of others is now exposed as an action for those with that permission.
Besides that, Iāve been having some fun on the css-overhaul branch reorganizing some design elements, and centralizing the color CSS in a few variables, opening the way for things like a dark mode and user-definable themes. Hereās a peek at the new milder and more welcoming default look:
The permissions work now has us at one thousand commits. Hereās to the next thousand! š As always, if you want to learn more, follow project progress, or talk about the future of social annotation on matrix, come join us at #opentower:matrix.org.
Iām working on a few features for Wrenchās anniversary on 13th June.
Hereās a bug fix for storing identities and a new button to check your membership status in a room.
Added: A āAm I a member?ā button tells your membership state in a room.
Fixed: Unchanged identities got deleted from localStorage when editing identities twice.
After a few release candidates and weeks later, we released Trixnity 2.0.0 today! It contains many breaking changes due to a large refactoring, which allows us to share a lot code between server and client implementations of the Matrix APIs.
This means, that Trixnity can be used to implement matrix servers in addition to application services and clients!
Trixnity finally has support for Kotlin/JS. You can implement a browser client or even better: multiplatform client. Support for Kotlin/Native will follow soon (e. g. for iOS clients). Right now, there is no trixnity-client-store implementation for JavaScript (e. g. IndexedDB), so you need to stick with InMemoryStore at the moment.
Besides notification support (push rules are evaluated), we introduced helpers to get the complete timeline as Kotlin-Flow (no more complicated loops to get the timeline). You can even subscribe to all timeline events, which is really helpful to implement bots with e2e encryption support. Speaking of e2e encryption: libolm is bundled into trixnity-olm jars, so you donāt need to build olm by your own anymore.
These are the most important features. For the complete changelog, have a look at the release candidates.
This week the team released version 0.9.0 which contains new features and some refactoring as many deprecated endpoints were removed so make sure to use the new ones when doing the migration.
Support for the Element recent emoji (io.element.recent_emoji) was added. A new method to get the last read marker was added.
Lastly, the timeline logic was enhanced, and itās now possible to load the timeline at a specific event. So you can load the room to the last event and then paginate through the new events. When reaching the last event, the timeline will automatically allow new events to be added in the timeline when received.
I have spent the day ignoring more important things and trying to have something to TWIM. I wrote (yet another) GitHub Action for sending build status to matrix rooms. This action looks at all the completed jobs in your workflow and posts a combined status for the workflow as a message and reactions for all the individual jobs, inspired by the maubot GitLab plugin.
Hello together. I made a generic bot, named Safed Sundarata, or Sundar in short, that should make it easy to get basic special functionality working. It has a lot of different functionality so you have an example code to work off of. The main motivation for this bot was to provide an !error <code> command for the developers in the ReactOS Matrix Rooms, which translates error codes to human readable text. Then of course i added other useful or fun commands to the bot. You want to read the Readme to find out more.
This is the first time i ever wrote a bot, so feedback and corrections to the Source Code are highly appreciated. It is written in Go using the mautrix-go framework (thanks tulir and everyone who worked on this making it easy!). Even easier is to run and build it with go, no insane build system with broken dependencies required, which was the reason why i made it from scratch.
A new JoinWaveShortCircuit protection, thanks to Jonathan with https://github.com/matrix-org/mjolnir/pull/280. This protection can be used to detect a mass-join scenario and set the room to invite-only.
Change of behaviour: Mjolnir will now apply server ACL and member bans to the most recently active rooms first (while syncing). The order was random before.
The causes of errors at startup (e.g. via misconfiguration) have been made more clear.
The image with the latest tag on dockerhub is now correctly in sync with the main branch.
I am releasing a brand new moderation bot, graim! This bot allows you to moderate communities that are bridged with Discord via matrix-appservice-discord. You can tie a Matrix account to a Discord account, and moderate both platforms seamlessly from either end! Graim supports one Discord server and as many Matrix rooms as you want, per instance. :)
You can run it yourself from the Github - https://github.com/luphoria/graim
You can join the matrix space, which is bridged to the Discord server
Iām streaming every week live coding Rust and Matrix at https://twitch.tv/andybalaam and https://andybalaam.uk.to (Owncast). Feel free to join me as I write a Rust Matrix bot. Iām currently on a side quest to add Redis support to the matrix-rust-sdk crypto store. You can watch past streams at diode.zone/a/andybalaam.
Dept of Ping š
Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.